User Tools

Site Tools


ertmerdatareader

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
ertmerdatareader [2023/06/07 15:07] – kalaschnikowertmerdatareader [2023/06/07 15:09] (current) – [Server] kalaschnikow
Line 1: Line 1:
 +====== Ertmer Data Reader ======
 +
 +[[W_G]] project with the following goals:
 +
 +A Groovy application should read data from file system and convert it to a CSV-files. 
 +
 +
 +  * The CSV data should be copied to:
 +    * Stammdaten / Ressourcen
 +      * Ressource = Bagger nummer => Table ''efc_roures''
 +      * Kurztext / Langtext => see tab "Verknüpfungen" => Table ''efc_rouresdetails''
 +
 +===== Subtopics =====
 +  * [[ErtmerAccessDB]] 
 +    * -> Beschreibung der aktuell genutzten Access-DB (die durch efc ERP abgelöst werden soll)
 +
 +
 +  * Aktuelle efc ERP Installation
 +    * Datenbank
 +      * es wird die Maria DB "efc_kem" verwendet
 +      * efc_bupbas enthält nur 2 Demo-Datensätze
 +        * customer=1000 -> stext="BEGRA Granulate GmbH & Co. KG"
 +        * vendor=1000 -> stext=""
 +      * complete database dump: 
 +        * on my computer: 
 +          * ''"C:\_projects\ertmer\efc_install\my_efc_kem_full_2.zip"''
 +            * deletes tables
 +            * deletes data in tables
 +            * creates tables
 +            * inserts data
 +        * remotely: 
 +          * ''"C:\Users\admin-sys\Desktop\db_dumps\my_efc_kem_full.zip"''
 +
 +===== TODO =====
 +  * Add the column "Baggernummer" to the CSV (Baggernummer is normally the file name without extension)
 +  * Write data from all files to one file
 +  * Test with all files
 +  * Replace all 'null' data with something
 +    * ask Klaus?
 +
 +===== Fragen an Hr.Ertmer =====
 +  * Kunden / Lieferantendaten (die, aus der Access DB)
 +    * Was tun bei den Spalten A02 ("Firmenbezeichn A02") und A03 ("Vorname, Name A03"), da sie manchmal nicht konsistenten Daten enthalten? Z.B.:
 +      * A02 (Firmenbezeichnung!) = "Transporte u. Erdbewegungen" / A03 (Vorname, Name!) = "Baierl GmbH"
 +      * A02 (Firmenbezeichnung!) = "Betonwerk Neu-Ulm" / A03 (Vorname, Name!) = "GmbH & Co KG"
 +      * A02 (Firmenbezeichnung!) = "Kiesbaggerei GmbH" / A03 (Vorname, Name!) = "Boll"
 +
 +===== Data structure =====
 +
 +  * It is enough to import only one file ".wtx" or ".txb"
 +    * this means ''495.wtx'' should contain the same information as ''495.txb''
 +
 +  * Filename is the "Baggernummer"
 +    * ''495.wtx'' means "Baggernummer" = 495 
 +    * ''495.txb'' means "Baggernummer" = 495
 +
 +  * If all three column are there:
 +    * The first column => "Menge"
 +    * The second column => "Artikelbezeichnung"
 +    * The third column => "Zeichnungsnummer"
 +
 +
 +  * "Zeichnungsnummer" should be the key for the data
 +    * but(!) at the moment it is NOT
 +    * defacto: the key is "Artikelbezeichnung" + "Zeichnungsnummer"
 +      * Hr.Ertmer: the program should mark such differences
 +        * this means:
 +          * if for the same "Zeichnungnummer" exist different "Artikelbezeichnung" => the program should mark it in some way
 +          * such difference should be checked also for different "Baggernummern"
 +            * this means: 
 +              * the program should import the data and after that (?) it should check the uniquiness of the "Zeichnungsnummer"s
 +
 +===== Previously existed solution =====
 +
 +This solution is not yet completed. It uses Python, so the task is at first to "convert" the existing code to Groovy.
 +
 +Test data and code are under ''F:\EffectiveCompany\Ertmer_Daten\'':
 +  * ''F:\EffectiveCompany\Ertmer_Daten\TexassDaten'':
 +    * test data (input)
 +  * ''F:\EffectiveCompany\Ertmer_Daten\File Formatter'':
 +    * ''F:\EffectiveCompany\Ertmer_Daten\File Formatter\KEM_FormatFileForEFC_WTX.py'' -> the code of existing solution
 +    * result (output):
 +      * ''F:\EffectiveCompany\Ertmer_Daten\File Formatter\efc_formatted_res.csv''
 +      * ''F:\EffectiveCompany\Ertmer_Daten\File Formatter\efc_formatted_bom.csv''
 +
 +
 +  * **-** Use DBConv for data copying
 +    * The (old) productive data: C:\_projects\ertmer
 +    * DBConv 
 +      * Installation is under: F:\Build\DBConv
 +      * Documentation: "G:\Geteilte Ablagen\WuG_Cloud\Build\Doku\DBConv.pdf"
 +
 +===== My projects =====
 +
 +The Eclipse project 
 +  * lies under: ''C:\Build\efc_workspace\efc_db_import_kem''
 +  * is in Git repository
 +
 +My IntelliJ project:
 +  * ''C:\Users\vk\IdeaProjects\ertmerDataExtractor''
 +
 +
 +Following classes should be used to start export:
 +  * ArticlesCsvCreator
 +    * exports articles csv
 +  * ResCsvCreator
 +    * exports "texts-only"
 +
 +===== DBConv =====
 +[[DBConv]]
 +
 +
 +  * DBConv project on Github: https://github.com/EffectiveCompany/dbconv
 +  * Ready-to-use version: 
 +    * Copy all files from ''F:\Build\DBConv'' to local disk
 +      * My installation is under: ''C:\_projects\ertmer\DBConv\''
 +
 +  * Testdata and test project from Torsten: 
 +    * ''C:\_projects\ertmer\csv\''
 +
 +==== Artikeln ====
 +
 +Tabellen zum Testen: 
 +  * ''efc_roures'' -> resourcen -> Baggernummer?
 +  * ''efc_roures_text'' -> resource + text
 +
 +<code>
 +CREATE TABLE `efc_roures_vktest` (
 +  `COMPANY` varchar(2) NOT NULL DEFAULT '',
 +  `RESOURCE` varchar(25) NOT NULL DEFAULT '',
 +  `PLANT` varchar(2) DEFAULT NULL,
 +  `STEXT` varchar(40) DEFAULT NULL,
 +  `LTEXT` mediumtext DEFAULT NULL,
 +  `RESUSAGE` varchar(5) DEFAULT NULL,
 +  `RESSTATUS` varchar(1) DEFAULT NULL,
 +  `RESCONFTYPE` int(11) NOT NULL,
 +  `RESTYPE` int(11) NOT NULL,
 +  `COSCEN` varchar(8) DEFAULT NULL,
 +  `CAPSCHTYPE` int(11) NOT NULL,
 +  `STAND` varchar(10) DEFAULT NULL,
 +  `RESGRP` varchar(3) DEFAULT NULL,
 +  `OPRACTSETUP` varchar(4) DEFAULT NULL,
 +  `OPRACTPPC` varchar(4) DEFAULT NULL,
 +  `OPRACTADD` varchar(4) DEFAULT NULL,
 +  `RESTIMETYPE` int(11) NOT NULL,
 +  `RESTIMERATIO` double DEFAULT NULL,
 +  `SCHWAITTIME` double DEFAULT NULL,
 +  `TUNIT` varchar(3) DEFAULT NULL,
 +  `SCHLEADDAYS` int(11) DEFAULT NULL,
 +  `CALENDAR` varchar(25) DEFAULT NULL,
 +  `ISDISABLED` int(11) DEFAULT NULL,
 +  `CAPHORIZON` int(11) DEFAULT NULL,
 +  `RESQTY` int(11) DEFAULT NULL,
 +  `RESDEPT` varchar(3) DEFAULT NULL,
 +  `CAPGRP` varchar(4) DEFAULT NULL,
 +  `BASERESOURCE` varchar(25) DEFAULT NULL,
 +  `PRNCODE` varchar(10) DEFAULT NULL,
 +  `SSTCODE` varchar(10) DEFAULT NULL,
 +  `SORTKEY` varchar(25) DEFAULT NULL,
 +  `QLTVALKEY` varchar(10) DEFAULT NULL,
 +  `VENDOR` varchar(12) DEFAULT NULL,
 +  `CUSTOMER` varchar(12) DEFAULT NULL,
 +  `MODELNUM` varchar(25) DEFAULT NULL,
 +  `SRLNUM` varchar(25) DEFAULT NULL,
 +  `ASSETNUM` varchar(15) DEFAULT NULL,
 +  `RESPURDATE` date DEFAULT NULL,
 +  `RESSALDATE` date DEFAULT NULL,
 +  `RESSHUTDOWNDATE` date DEFAULT NULL,
 +  `PRODUCER` varchar(15) DEFAULT NULL,
 +  `RESPRDDATE` date DEFAULT NULL,
 +  `REFMATNUM` varchar(25) DEFAULT NULL,
 +  `WRH` varchar(5) DEFAULT NULL,
 +  `WRHAREA` varchar(3) DEFAULT NULL,
 +  `STKPLC` varchar(15) DEFAULT NULL,
 +  `ROURESCODE` mediumtext DEFAULT NULL,
 +  `ISHISTORY` int(11) DEFAULT NULL,
 +  `SYSPROGCODE` varchar(40) DEFAULT NULL,
 +  `INVCDNCODE` varchar(25) DEFAULT NULL,
 +  `INVCDNEXTPROGTYPE` int(11) NOT NULL,
 +  `HOSTNAME` varchar(40) DEFAULT NULL,
 +  `RESMENU` varchar(25) DEFAULT NULL,
 +  `QLTSKILL` varchar(10) DEFAULT NULL,
 +  `XDATE1` date DEFAULT NULL,
 +  `XDATE2` date DEFAULT NULL,
 +  `XDATE3` date DEFAULT NULL,
 +  `XDATE4` date DEFAULT NULL,
 +  `XDATE5` date DEFAULT NULL,
 +  `XSTEXT1` varchar(40) DEFAULT NULL,
 +  `XSTEXT2` varchar(40) DEFAULT NULL,
 +  `XSTEXT3` varchar(40) DEFAULT NULL,
 +  `XSTR1` varchar(10) DEFAULT NULL,
 +  `XSTR2` varchar(10) DEFAULT NULL,
 +  `XSTR3` varchar(10) DEFAULT NULL,
 +  `XSTR4` varchar(10) DEFAULT NULL,
 +  `XSTR5` varchar(10) DEFAULT NULL,
 +  `XQTY1` double DEFAULT NULL,
 +  `XQTY2` double DEFAULT NULL,
 +  `XQTY3` double DEFAULT NULL,
 +  `XQTY4` double DEFAULT NULL,
 +  `XQTY5` double DEFAULT NULL,
 +  `XINT1` int(11) DEFAULT NULL,
 +  `XINT2` int(11) DEFAULT NULL,
 +  `XINT3` int(11) DEFAULT NULL,
 +  `XINT4` int(11) DEFAULT NULL,
 +  `XINT5` int(11) DEFAULT NULL,
 +  `XLTEXT1` mediumtext DEFAULT NULL,
 +  `XLTEXT2` mediumtext DEFAULT NULL,
 +  `CREATEDBY` varchar(15) DEFAULT NULL,
 +  `CREATEDAT` datetime NOT NULL,
 +  `EDITEDBY` varchar(15) DEFAULT NULL,
 +  `EDITEDAT` datetime NOT NULL,
 +  `ISDELETED` int(11) NOT NULL DEFAULT 0,
 +  `VALIDFROM` datetime NOT NULL,
 +  `VALIDUNTIL` datetime NOT NULL,
 +  PRIMARY KEY (`COMPANY`,`RESOURCE`,`VALIDFROM`,`VALIDUNTIL`)
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
 +</code>
 +
 +<code>
 +CREATE TABLE `efc_rouresdet_vktest` (
 +  `COMPANY` varchar(2) NOT NULL DEFAULT '',
 +  `RESOURCE` varchar(25) NOT NULL DEFAULT '',
 +  `ITEM` int(11) NOT NULL DEFAULT 0,
 +  `RESDETTYPE` int(11) NOT NULL,
 +  `REFRESOURCE` varchar(25) DEFAULT NULL,
 +  `STEXT` varchar(40) DEFAULT NULL,
 +  `LTEXT` mediumtext DEFAULT NULL,
 +  `RESUSAGE` varchar(5) DEFAULT NULL,
 +  `WRH` varchar(5) DEFAULT NULL,
 +  `WRHAREA` varchar(3) DEFAULT NULL,
 +  `STKPLC` varchar(15) DEFAULT NULL,
 +  `EXTRESOURCE` varchar(25) DEFAULT NULL,
 +  `PRNPRINTERNAME` varchar(80) DEFAULT NULL,
 +  `PRNPRINTERSRC` varchar(40) DEFAULT NULL,
 +  `ISDEFAULT` int(11) DEFAULT NULL,
 +  `SSTCODE` varchar(10) DEFAULT NULL,
 +  `CREATEDBY` varchar(15) DEFAULT NULL,
 +  `CREATEDAT` datetime NOT NULL,
 +  `EDITEDBY` varchar(15) DEFAULT NULL,
 +  `EDITEDAT` datetime NOT NULL,
 +  `ISDELETED` int(11) NOT NULL DEFAULT 0,
 +  `VALIDFROM` datetime NOT NULL,
 +  `VALIDUNTIL` datetime NOT NULL,
 +  PRIMARY KEY (`COMPANY`,`RESOURCE`,`ITEM`,`VALIDFROM`,`VALIDUNTIL`),
 +  KEY `EFC_ROURESDET_1_INDEX` (`COMPANY`,`RESOURCE`)
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
 +</code>
 +
 +==== Kundenstamm / Lieferantenstamm ====
 +
 +  * Daten sind in der Accessdatenbank (auf dem USB-Stick)
 +  * Die Tabellen sind lesbar mit Hilfe von dem UCanAccess Treiber: 
 +    * Connection Strings: 
 +      * <code>jdbc:ucanaccess://C://_projects//ertmer//accessDB//ertmer.mdb</code>
 +      * <code>jdbc:ucanaccess://C://_projects//ertmer//accessDB//ertmer.mdb;sysSchema=true</code>
 +        * parameter ''sysSchema'' soll angeblich helfen auf Systemtabellen zuzugreifen. Ich hab aber keinen Unterschied festgestellt.
 +  
 +  * UCanAccess kann leider die Tabellen nicht in der GUI auflisten, deshalb muss man das per SQL Befehl machen:<code>SELECT * FROM information_schema.tables where table_schema='PUBLIC'</code>
 +
 +  * Die Daten der folgenden Tabellen sollen ins efc ERP übertragen werden:
 +    * ''K'' -> Kunden? => siehe [[ErtmerAccessDB]]
 +      * Rows: 320
 +    * ''L'' -> Lieferanten?  => siehe [[ErtmerAccessDB]]
 +      * Rows: 484
 +
 +  * Folgende Tabellen sollen NICHT übertragen werden (=> Telefonat mit Hr.Ertmer am 25.04.2023 )
 +    * ''FLACH''
 +      * Rows: 43 
 +    * ''P'' -> Personen?
 +      * Rows: 61
 +    * ''RUND''
 +      * Rows: 9
 +    * ''WAIMEASYSTABLE''
 +      * Rows: 0
 +    * ''WEIHNACHTSABFRAGE''
 +      * Rows: 88
 +  
 +  * Aufbau der Tabellen und Mapping-Details siehe [[ErtmerAccessDb]]
 +
 +  * Die Einzelheiten zu den efc ERP Tabellen sind in dem Handbuch beschrieben:
 +    * ''F:/Build/EFC_Handbuch.pdf''
 +      * siehe Abschnitt "36.79 BUPBAS - Kunden- / Lieferantenstamm"
 +      * von der Spalte "BUPTYPE - Kunde/Interessent?, option" 
 +        * kommt man (über den Link "BUPTYPE" in der PDF-Datei) zu dem Abschnitt "37.203 BUPTYPE - Kunde/Interessent?"
 +        * auch interessanter Abschnitt: "40.223 OpRestype - Resourcenart (Masch., Pers., sonstige)"
 +
 +
 +===== Fragen an Hr. Ertmer =====
 +
 +  * Wie funktioniert die Anbindung an die DB?
 +    * Nahezu alle Mengenfelder stehen auf '0'
 +      * Soll das so sein?
 +      * Ist es richtig?
 +    * Wenn ich im TexAss versuche die Menge zu ändern, ändert sich Inhalt aller Mengenfelder
 +      * Wie mach ich das richtig?
 +
 +===== Zugangsdaten =====
 +
 +==== Server ====
 +
 +  * SV-ME-SQL-1 (momentan funktioniert es noch, später soll der Rechner nur aus lokalem Netz erreichbar sein)
 +    * Zugang über PCVisit: https://mobile.pcvisit.de/home/ 
 +      * kg@wuehler-gebauer.de / Wugwug1999
 +      * Daten für KEM-SQL Rechner
 +        * "Microsoft-RDP"-Verbindung (hab ich getestet):
 +          * ME\admin-sys
 +          * Mercedes#1904
 +
 +===== Kontaktdaten =====
 +
 +==== Ertmer ====
 +
 +Hier die Kontaktdaten für Herrn Falk Ertmer:
 +
 +[[mailto:info@ertmer-ee.de|info@ertmer-ee.de]]\\ 
 +07251 51 66
 +
 +
 +==== IT Service von Ertmer ====
 +
 +Dieter Bleiwa: [[mailto:comtec@bleiwa.de|comtec@bleiwa.de]]
 +
 +06322 600330
 +
 +0171 711 5963
 +
 +s.auch E-Mail von Klaus Gebauer "Fwd: Remote-Zugang auf Server Firma Ertmer" (vom 06.06.2023)
 +
 +
 +
 +
 +==== TexAss Office XP Hersteller ====
 +
 +https://www.waimea.de/index.php?page=imprint
 +
 +Thomas Schmidt: [[mailto:ts@waimea.de|ts@waimea.de]]
 +===== Misc =====
 +
 +  * Our input data are normally produced by Ertmer with the help of [[https://www.waimea.de/index.php?page=proddesc/texass|TexAss Office XP]]