Aufträge importieren (import orders - CSV-Schnittstelle)

Ab TaskCenter Version 4.94.0.0 können Aufträge im CSV-Format eingelesen und angelegt werden. Die CSV-Spalten-Zuordnung kann individuell zugeordnet/gesteuert werden.


Manueller Import

TaskCenter - Fenster "Angebote/Aufträge" - Zusatzfunktionen - Import - Import Auftrag aus Datei


Automatischer Import

LC.WpfInterfaces - UnifiedOrderImport


Dateiaufbau / Import Vorlagen

Es können verschiedene CSV-Import-Vorlagen erstellt werden, welche den genauen Dateiaufbau der CSV-Datei beschreiben.

Die Vorlagen werden in der Tabelle IO_DATEI_VORLAGEN zur Verfügung gestellt. Jeder Vorlage werden beliebig viele Felder zugeordnet, welche in der Tabelle IO_DATEI_FELDER verwaltet werden.

Es können beliebig viele Vorlagen zu beliebig vielen Feldern erstellt werden. 

Die Verwaltung der Vorlagen ist zurzeit ausschließlich über manuelle SQL-Statements vorzunehmen!


Tabelle IO_DATEI_VORLAGEN

Eine neue Vorlage einfügen:

SQL
insert into IO_DATEI_VORLAGEN (INX,KONFIG_NAME,KONFIG_TYP,DATEIFORMAT,CSV_TRENNZEICHEN) select max(io_datei_vorlagen)+1,'Name der Vorlage',110,'CSV',';' from indizes;
update indizes set IO_DATEI_VORLAGEN=select max(INX) from IO_DATEI_VORLAGEN;]] ></ac:plain-text-body></ac:structured-macro><p><br /></p><h3>Tabelle IO_DATEI_FELDER</h3><h4>Aufbau</h4><table><colgroup><col /><col /><col /></colgroup><tbody><tr><th>Spalte</th><th>M&ouml;gliche Werte</th><th>Beschreibung</th></tr><tr><td>INX</td><td>0,1,2,3...</td><td>Eindeutiger Datensatzindex aus INDIZES.IO_DATEI_FELDER</td></tr><tr><td>VORLAGE_INX</td><td>0,1,2,3,...</td><td>Eindeutiger Datensatz-Index der Datei-Vorlage aus IO_DATEI_VORLAGEN.INX</td></tr><tr><td>ZIEL_FELD</td><td><ac:link ac:anchor="targetfields"><ac:plain-text-link-body><![CDATA[Siehe TargetFields]] ></ac:plain-text-link-body></ac:link></td><td>Name des Ziel-Properties, welches bearbeitet oder behandelt wird. Je nach KONFIG_TYP sind unterschiedliche Properties verf&uuml;gbar.</td></tr><tr><td colspan="1">QUELL_FELD</td><td colspan="1"><br /></td><td colspan="1">Quell-Spaltenname in der CSV-Datei oder ev. auch einer XML-Datei</td></tr><tr><td colspan="1">WERT</td><td colspan="1"><br /></td><td colspan="1">Fixer Wert, der zugewiesen wird. <span style="color: rgb(23,43,77);">Hier k&ouml;nnen auch<span>&nbsp;</span></span><ac:link ac:anchor="StringFunctions" /><span style="color: rgb(23,43,77);"><span>&nbsp;</span>verwendet werden, um bsp. Werte aus der Datenbank zu selektieren.</span></td></tr><tr><td colspan="1">FELDFORMAT</td><td colspan="1"><br /></td><td colspan="1">Daten-Format, in dem die Quell-Spalte formatiert ist (f&uuml;r Nummern und Datumsfelder). Bsp. yyyy-MM-dd oder #0.000</td></tr><tr><td colspan="1">DATENTYP</td><td colspan="1"><br /></td><td colspan="1">Hier kann der Datentyp des Felds genau festgelegt werden. Datentypen sind: String, Bool, Byte, Integer, Number, PlainNumber, Quantity, Currency, Percent, Date, Time, DateTime</td></tr></tbody></table><p><br /></p><h4>Felder hinzuf&uuml;gen</h4><p>Ein neues Feld zu einer Vorlage einf&uuml;gen (in dem Beispiel ist der VORLAGE_INX = 1 ... das ist der eindeutige Datensatz-Index der zuvor angelegten Vorlage):</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="ab3ead82-ddd6-42ed-8e2b-6e6d533ade9f"><ac:parameter ac:name="language">sql</ac:parameter><ac:plain-text-body><![CDATA[insert into IO_DATEI_FELDER (INX,VORLAGE_INX,QUELL_FELD, ZIEL_FELD) select max(io_datei_felder)+1,-1,'Index','EdiReference' from indizes;
update indizes set IO_DATEI_FELDER=(select max(inx) from IO_DATEI_FELDER);
insert into IO_DATEI_FELDER (INX,VORLAGE_INX,QUELL_FELD, ZIEL_FELD) select max(io_datei_felder)+1,-1,'Material','ItemNumber' from indizes;
update indizes set IO_DATEI_FELDER=(select max(inx) from IO_DATEI_FELDER);
insert into IO_DATEI_FELDER (INX,VORLAGE_INX,QUELL_FELD, ZIEL_FELD) select max(io_datei_felder)+1,-1,'Menge','Quantity' from indizes;
update indizes set IO_DATEI_FELDER=(select max(inx) from IO_DATEI_FELDER);
insert into IO_DATEI_FELDER (INX,VORLAGE_INX,QUELL_FELD, ZIEL_FELD) select max(io_datei_felder)+1,-1,'Seriennummer','SerialNumber' from indizes;
update indizes set IO_DATEI_FELDER=(select max(inx) from IO_DATEI_FELDER);
insert into IO_DATEI_FELDER (INX,VORLAGE_INX,QUELL_FELD, ZIEL_FELD) select max(io_datei_felder)+1,-1,'Quelllager','StockLocationName' from INDIZES;
update indizes set IO_DATEI_FELDER=(select max(inx) from IO_DATEI_FELDER);
insert into IO_DATEI_FELDER (INX,VORLAGE_INX,QUELL_FELD, ZIEL_FELD, FELDFORMAT) select max(io_datei_felder)+1,-1,'Datum/Zeitpunkt','ConfirmedDeliveryDate','yyyyMMddHHmmss' from INDIZES;
update indizes set IO_DATEI_FELDER=(select max(inx) from IO_DATEI_FELDER);
insert into IO_DATEI_FELDER (INX,VORLAGE_INX,QUELL_FELD, ZIEL_FELD) select max(io_datei_felder)+1,-1,'Abrechnungseinheit-ID','EdiReference2' from INDIZES;
update indizes set IO_DATEI_FELDER=(select max(inx) from IO_DATEI_FELDER);
insert into IO_DATEI_FELDER (INX,VORLAGE_INX,WERT, ZIEL_FELD) select max(io_datei_felder)+1,-1,'@GetContentFilename()','PurchaseOrderNumber' from INDIZES;
update indizes set IO_DATEI_FELDER=(select max(inx) from IO_DATEI_FELDER);
insert into IO_DATEI_FELDER (INX,VORLAGE_INX,WERT, ZIEL_FELD) select max(io_datei_felder)+1,-1,'ADHOCTEST','Category' from INDIZES;
update indizes set IO_DATEI_FELDER=(select max(inx) from IO_DATEI_FELDER);]] ></ac:plain-text-body></ac:structured-macro><p><br /></p><h4><ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="87f6ec7e-1f3b-443d-a051-f6fb25464572"><ac:parameter ac:name="">targetfields</ac:parameter></ac:structured-macro>TargetFields (Properties f&uuml;r die Ziel-Zuordnung)</h4><table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>Property</th><th>Datentyp</th><th>M&ouml;gliche Werte</th><th>Beschreibung</th></tr><tr><td>InsertMode</td><td>Enum</td><td>Insert, Change, Cancel, Reject</td><td>Gibt an, ob die Position neu ist oder ge&auml;ndert/storniert/entfernt werden soll. Standard = Insert.</td></tr><tr><td>APType</td><td>Int</td><td>600</td><td>Anlageprogrammteil CSV (=600)</td></tr><tr><td>Aposinx</td><td>Long</td><td><br /></td><td>Bei einer Datensatz-&Auml;nderung muss hier der eindeutige Positions-Index der Auftragsposition enthalten sein. Zus&auml;tzlich muss der <strong>InsertMode</strong> auf Change stehen.</td></tr><tr><td>ItemNumber</td><td>String</td><td><br /></td><td>Artikelnummer der Position</td></tr><tr><td>CustomerItemNumber</td><td>String</td><td><br /></td><td>Kunden-Artikelnummer. Wenn keine ItemNumber angegeben wurde, wird der Artikel &uuml;ber die Kundennummer gesucht.</td></tr><tr><td colspan="1">ItemDescription1</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Artikel-Bezeichnung 1. Wenn nicht angegeben, wird die aus dem Artikelstamm genommen.</td></tr><tr><td colspan="1">ItemDescription2</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Artikel-Bezeichnung 2. Wenn nicht angegeben, wird die aus dem Artikelstamm genommen.</td></tr><tr><td colspan="1">ItemDescription3</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Artikel-Bezeichnung 3. Wenn nicht angegeben, wird die aus dem Artikelstamm genommen.</td></tr><tr><td colspan="1">Longtext</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Artikel-Langtext. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.</td></tr><tr><td colspan="1">User1</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Benutzer 1. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.</td></tr><tr><td colspan="1">User2</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Benutzer 2. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.</td></tr><tr><td colspan="1">User3</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Benutzer 3. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.</td></tr><tr><td colspan="1">Grafic1</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Grafik 1. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.</td></tr><tr><td colspan="1">Grafic2</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Grafik 2. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.</td></tr><tr><td colspan="1">Grafic3</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Grafik 3. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.</td></tr><tr><td colspan="1">HintText</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Positions-Hinweistext</td></tr><tr><td colspan="1">Code</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Positions-Code. Wird standardm&auml;&szlig;ig aus dem Artikelstamm &uuml;bernommen. Wenn &quot;T&quot;, wird eine Textzeile eingef&uuml;gt.</td></tr><tr><td colspan="1">PosNumber</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Positionsnummer. Wenn nicht angegeben, wird diese automatisch vergeben.</td></tr><tr><td colspan="1">EdiReference</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Positions-Schnittstellen-Referenz (Spalte SS_REFERENZ)</td></tr><tr><td colspan="1">EdiReference2</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Positions-Schnittstellen-Referenz 2 (Spalte SS_REFERENZ2)</td></tr><tr><td colspan="1">EdiReferenceDate</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Positions-Schnittstellen-Referenzdatum (Spalte SS_REFERENZ_DATUM)</td></tr><tr><td colspan="1">EdiReferenceStatus</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Positions-Schnittstellen-Status (Spalte SS_STATUS)</td></tr><tr><td colspan="1">NetPrice</td><td colspan="1">Decimal</td><td colspan="1"><br /></td><td colspan="1">Einzel-Nettopreis</td></tr><tr><td colspan="1">GrossPrice</td><td colspan="1">Decimal</td><td colspan="1"><br /></td><td colspan="1">Einzel-Bruttopreis</td></tr><tr><td colspan="1">Quantity</td><td colspan="1">Decimal</td><td colspan="1"><br /></td><td colspan="1">Menge</td></tr><tr><td colspan="1">StockNumber</td><td colspan="1">Long</td><td colspan="1"><br /></td><td colspan="1">Lagernummer</td></tr><tr><td colspan="1">StockLocationNumber</td><td colspan="1">Long</td><td colspan="1"><br /></td><td colspan="1">Lagerortnummer</td></tr><tr><td colspan="1">StockLocationName</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1"><span style="color: rgb(23,43,77);">Lagerortname. Wenn angegeben, und es sind eindeutige Lagerortnamen system&uuml;bergreifend vorhanden, dann kann die Angabe der Felder &quot;StockNumber&quot; und &quot;StockLocationNumber&quot; entfallen.</span></td></tr><tr><td colspan="1">DesiredDeliveryDate</td><td colspan="1">DateTime</td><td colspan="1"><br /></td><td colspan="1">Gew&uuml;nschtes Lieferdatum</td></tr><tr><td colspan="1">ConfirmedDeliveryDate</td><td colspan="1">DateTime</td><td colspan="1"><br /></td><td colspan="1">Best&auml;tigtes Lieferdatum</td></tr><tr><td colspan="1">OrderResponseRequired</td><td colspan="1">Bool</td><td colspan="1"><br /></td><td colspan="1">True, wenn eine Auftragsantwort gew&uuml;nscht ist.</td></tr><tr><td colspan="1">SerialNumber</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Seriennummer. Wenn angegeben, wird diese Seriennummer in die Position &uuml;bertragen.</td></tr><tr><td colspan="1">LotNumber</td><td colspan="1">String</td><td colspan="1"><br /></td><td colspan="1">Chargennummer. Wenn angegeben, wird diese Chargennummer in die Position &uuml;bertragen.</td></tr></tbody></table><p class="auto-cursor-target"><br /></p><h4 class="auto-cursor-target"><ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="e1672aef-3290-4ff8-a76f-cd5c5469b164"><ac:parameter ac:name="">StringFunctions</ac:parameter></ac:structured-macro>StringFunctions</h4><p>Zus&auml;tzlich zu den<span>&nbsp;</span><a href="https://help.pollex-lc.com/x/NIBU" rel="nofollow">Standard-StringFunctions</a><span>&nbsp;</span>sind folgende Funktionen m&ouml;glich:</p><table><thead><tr><th style="text-align: left;"><p>StringFunction</p></th><th style="text-align: left;"><p>Beschreibung</p></th></tr></thead><colgroup><col /><col /></colgroup><tbody><tr><td style="text-align: left;">GetSourceValue(&quot;SPALTE&quot;)</td><td style="text-align: left;">Liefert einen Wert aus der aktuell in Verarbeitung befindlichen Quell-Zeile.</td></tr><tr><td style="text-align: left;">GetTargetValue(&quot;TargetProperty&quot;)</td><td style="text-align: left;">Liefert einen Wert aus dem bef&uuml;llten Ziel-DTO. Es k&ouml;nnen hier alle TargetField-Properties angegeben werden.</td></tr><tr><td colspan="1">GetContentFilename()</td><td colspan="1">Liefert den Dateinamen (inkl. Dateierweiterung ohne Pfad) der importierten Datei.</td></tr></tbody></table><p class="auto-cursor-target"><br /></p>


TargetFields (Properties für die Ziel-Zuordnung)

Property

Datentyp

Mögliche Werte

Beschreibung

InsertMode

Enum

Insert, Change, Cancel, Reject

Gibt an, ob die Position neu ist oder geändert/storniert/entfernt werden soll. Standard = Insert.

APType

Int

600

Anlageprogrammteil CSV (=600)

Aposinx

Long


Bei einer Datensatz-Änderung muss hier der eindeutige Positions-Index enthalten sein. Zusätzlich muss InsertMode = Change gesetzt sein.

ItemNumber

String


Artikelnummer der Position

CustomerItemNumber

String


Kunden-Artikelnummer. Wenn keine ItemNumber angegeben wurde, wird der Artikel über die Kundennummer gesucht.

ItemDescription1

String


Artikel-Bezeichnung 1. Wenn nicht angegeben, wird die aus dem Artikelstamm genommen.

ItemDescription2

String


Artikel-Bezeichnung 2. Wenn nicht angegeben, wird die aus dem Artikelstamm genommen.

ItemDescription3

String


Artikel-Bezeichnung 3. Wenn nicht angegeben, wird die aus dem Artikelstamm genommen.

Longtext

String


Artikel-Langtext. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.

User1

String


Benutzer 1. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.

User2

String


Benutzer 2. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.

User3

String


Benutzer 3. Wenn nicht angegeben, wird dieser aus dem Artikelstamm genommen.

Grafic1

String


Grafik 1. Wenn nicht angegeben, wird diese aus dem Artikelstamm genommen.

Grafic2

String


Grafik 2. Wenn nicht angegeben, wird diese aus dem Artikelstamm genommen.

Grafic3

String


Grafik 3. Wenn nicht angegeben, wird diese aus dem Artikelstamm genommen.

HintText

String


Positions-Hinweistext

Code

String


Positions-Code. Wird standardmäßig aus dem Artikelstamm übernommen. Wenn "T", wird eine Textzeile eingefügt.

PosNumber

String


Positionsnummer. Wenn nicht angegeben, wird diese automatisch vergeben.

EdiReference

String


Positions-Schnittstellen-Referenz (Spalte SS_REFERENZ)

EdiReference2

String


Positions-Schnittstellen-Referenz 2 (Spalte SS_REFERENZ2)

EdiReferenceDate

String


Positions-Schnittstellen-Referenzdatum (Spalte SS_REFERENZ_DATUM)

EdiReferenceStatus

String


Positions-Schnittstellen-Status (Spalte SS_STATUS)

NetPrice

Decimal


Einzel-Nettopreis

GrossPrice

Decimal


Einzel-Bruttopreis

Quantity

Decimal


Menge

StockNumber

Long


Lagernummer

StockLocationNumber

Long


Lagerortnummer

StockLocationName

String


Lagerortname. Wenn eindeutig, kann auf StockNumber und StockLocationNumber verzichtet werden.

DesiredDeliveryDate

DateTime


Gewünschtes Lieferdatum

ConfirmedDeliveryDate

DateTime


Bestätigtes Lieferdatum

OrderResponseRequired

Bool


True, wenn eine Auftragsantwort gewünscht ist.

SerialNumber

String


Seriennummer. Wenn angegeben, wird diese in die Position übertragen.

LotNumber

String


Chargennummer. Wenn angegeben, wird diese in die Position übertragen.