Beantwortet

CSV - Import im Übertragungen Modul - String Limiter

  • 2 March 2023
  • 1 Antwort
  • 62 Ansichten

Benutzerebene 1
Abzeichen

Hallo Zusammen,

 

Wir sind gerade dabei einen Lagerzahlen Import über das Übertragungen Modul mithilfe von Smarty aus einer .csv Datei vorzunehmen - leider bisher ohne Erfolg. Tracking Informationen lassen sich ohne Probleme importieren, allerdings sieht hier die Datenbasis (bezüglich der Positionierung des String Limiters) anders aus.

Tracking Informationen (keine String Limiter in der Überschrift):
 

 

Bestandsinformationen (String Limiter in jeder Zelle, außer bei Zellen die nur Zahlen enthalten)

 

 

Beide Dateien befinden sich (meines Wissens) im ISO-8859-1 Format. Gibt es hier einen “Trick” im Smarty Code, als String Limiter zu definieren? Ich könnte mir vorstellen, dass es dann funktioniert mit dem Import. Bin auch für andere Ratschläge offen.

 


 

Hier der Code mit dem wir arbeiten, vielleicht ist es für jemanden hilfreich, der über eine .csv Datei (mit Xentral fremder Spaltenüberschrift mit “DUMMY” Chargen Eintragungen falls keine Charge vorhanden ist,) Lagerzahlen importieren möchte:

<?xml version=“1.0” encoding=“UTF-8" standalone=“yes”?>
<response xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”>
<xml>
<artikel_list>{assign var=“counter” value = 0}
{foreach from=$csv key=keyrow item=item}
{assign var=“VarNummer” value=$item->Artikelnummer}<artikel><nummer>{$item->Artikelnummer}</nummer>
<lagerzahl>{$item->VerfuegbarerLagerbestand}</lagerzahl>
{“SELECT nummer, mindesthaltbarkeitsdatum, chargenverwaltung FROM artikel WHERE nummer = ‘$VarNummer’ and lagerartikel = 1 and geloescht<>1 “|assignsql assign=“artikel”}{if $artikel[0]->nummer == $VarNummer && ($artikel[0]->chargenverwaltung == 2 or 1) && $artikel[0]->mindesthaltbarkeitsdatum == 1 && $item->Charge != “” && $item->MHD != “”}
<mhd>{$item->MHD}</mhd>
<charge>{$item->Charge}</charge>{elseif $artikel[0]->nummer == $VarNummer && ($artikel[0]->chargenverwaltung == 2 or 1) && $artikel[0]->mindesthaltbarkeitsdatum == 1 && $item->Charge == “” && $item->MHD != “”}
<mhd>{$item->MHD}</mhd>
<charge>DUMMY</charge>{elseif $artikel[0]->nummer == $VarNummer && ($artikel[0]->chargenverwaltung == 2 or 1) && $artikel[0]->mindesthaltbarkeitsdatum == 1 && $item->Charge == “” && $item->MHD == “”}
<mhd>31.12.9999</mhd>
<charge>DUMMY</charge>{elseif $artikel[0]->nummer == $VarNummer && ($artikel[0]->chargenverwaltung == 2 or 1) && $artikel[0]->mindesthaltbarkeitsdatum == 1 && $item->Charge != “” && $item->MHD == “”}
<mhd>31.12.9999</mhd>
<charge>{$item->Charge}</charge>{elseif $artikel[0]->nummer == $VarNummer && ($artikel[0]->chargenverwaltung == 0) && $artikel[0]->mindesthaltbarkeitsdatum == 0 && $item->Charge != “” && $item->MHD != “”}
<mhd>{$item->MHD}</mhd>
<charge>{$item->Charge}</charge>{elseif $artikel[0]->nummer == $VarNummer && $artikel[0]->chargenverwaltung == 0 && $artikel[0]->mindesthaltbarkeitsdatum == 0 && $item->Charge == “” && $item->MHD != “”}
<mhd>{$item->MHD}</mhd>
<charge>DUMMY</charge>{elseif $artikel[0]->nummer == $VarNummer && $artikel[0]->chargenverwaltung == 0 && $artikel[0]->mindesthaltbarkeitsdatum == 0 && $item->Charge != “” && $item->MHD == “”}
<mhd>31.12.9999</mhd>
<charge>{$item->Charge}</charge>{/if}
</artikel>
{/foreach}
</artikel_list>
</xml>
</response>


Vielen Dank im Voraus,

Beste Grüße,

Daniel

icon

Beste Antwort von Jörn H von digitalXL 13 June 2023, 16:40

Original anzeigen

1 Antwort

Benutzerebene 6
Abzeichen +2

Hallo @Daniel Then,#

ich glaube, Du suchst an der falschen Stelle. Der String-Delimiter ist nciht das Problem, sonder der Spaltenname (“Versand-Status” bedeutet in Smarty-Sprache “Versand minus Status”).

Daher ist der Trick ein anderer: Du verwendest die $csv-Variable - aber nur, um dann durch eine foreach-Schleife zu wandern. Stattdessen kannst Du die Spalten direkt mit numerischem Index ansprechen:

  • $csv: ein Array aus Objekten mit dem Headerspalten als Keys

  • $csvwithoutheader: ein Array aus Objekten ohne Headerspalten; Aufruf der Spalten in der Notation col0, col1, usw.

Damit solltest Du weiterkommen - und hier gehts zum Helpdeskeintrag: https://help.xentral.com/hc/de/articles/360016773539-Smarty-im-%C3%9Cbertragen-Modul#UUID-7173bf6b-953d-0500-1285-3235d3cfce20_id_360016773539_id_h_01FDS6NNWB84MT87BZBMNPVE13

Grüße
Jörn

 

PS: Das ISO-8859-1 Format ist kein Problem, solange keine Sonderzeichen oder Umlaute enthalten sind. Wenn doch - dann geht leider nur eine Umwandlung vor dem Einspielen, per Editor, iconv oder externem Script.

Antworten