Beantwortet

Artikel updaten via Übertragungsmodul - passendes Smarty Template Bsp.


Benutzerebene 4
Abzeichen +2

Hallo in die Runde,

ich möchte gerne über das Übertragungsmodul bestehende Artikel updaten.

Dazu habe ich mir einen entsprechenden Account eingerichtet und konfiguriert.
Hätte jemand aus der Community für mich ein passendes Bsp. für ein Template um Artikel einzulesen?

Ich finde dazu im Helpdesk nichts passendes.

Ich habe es u.a. hiermit versucht:

Template:
<?xml version="1.0" encoding="UTF-8"?>

<response>

  <xml>

    <artikel_list>

{foreach from =$object key=keyrow item=position}

      <artikel>

        <nummer>{$position->artikelnummer}</nummer>

        <berechneterek>{$position->durchek}</berechneterek>

      </artikel>

{/foreach}

    </artikel_list>

  </xml>

</response>


Testdaten:
artikelnummer;durchek

TEST_12345;9.99

 

Vorschau:

<?xml version="1.0" encoding="UTF-8"?>
<response>
<xml>
<artikel_list>
<artikel>
<nummer>TEST_12345</nummer>
<berechneterek>9.99</berechneterek>
</artikel>
</artikel_list>
</xml>
</response>

Damit komme ich jedoch nicht zum Ziel.


Viele Grüße
René

icon

Beste Antwort von Daniel Schmidtchen 8 May 2022, 08:18

Original anzeigen

8 Antworten

Benutzerebene 7
Abzeichen +5

Moin René, 

nummer + name_de sind meines Wissens Pflichtfelder, zumindest für Neuanlage. Bei Update reicht eventuell die Nummer.
Generell müsste das der Aufbau sein, ist aus der Vorlage/Template im Übertragungen-Modul:

nummer;name_de;name_en;anabregs_text;
{foreach from=$artikelliste key=keyrow item=artikel}{* Artikel *}\
{$artikel->nummer};\
{$artikel->name_de};\
{$artikel->name_en};\
{$artikel->anabregs_text};\

{/foreach}

Benutzerebene 4
Abzeichen +2

Hallo Daniel,

das funktioniert so leider nicht. Sämtliche Tests haben das gewünschte Feld nicht geupdatet.

@Dennis Bernhardt 
Hast du noch ein paar weitere Infos?

VG
René

Hallo René,

über die Infos, die @Daniel Schmidtchen bereitgestellt hat - vielen Dank dafür! - hinaus habe ich selbst keine. ABER ich leite es gerne zusätzlich an meine Kolleg*innen weiter, die in diesem Belang technisch versierter sind als ich :) 

LG,

Benutzerebene 5
Abzeichen +2

Hey René,

 

das Update der Artikel funktioniert genau so wie die Artikelanlage nur mit dem Unterschied, dass die Artikelnummer in Xentral schon bekannt ist. Ich habe dir eine Vorlage angehängt, mit der du das Update versuchen kannst durchzuführen.

Allerdings ist das Modul Übertragungen generell nicht für die Arbeit mit Stammdaten zu empfehlen. Ich würde vorschlagen, dass du die Artikel mit einem Import über die Import / Export Zentrale oder API updatest. 

 

 

Viele Grüße

Büsra

 

Benutzerebene 4
Abzeichen +2

Hallo @Büsra Özkan 

Vielen Dank für den Ansatz. Ich teste diesen mal durch.

Kann man über die Import/Export Zentrale denn automatisiert Artikel updaten? Daher hatte ich das Übertragenmodul gewählt. Den Schritt dahinter möchte ich nicht manuell anstoßen müssen.

VG
René

Benutzerebene 7
Abzeichen +5

 

Kann man über die Import/Export Zentrale denn automatisiert Artikel updaten? Daher hatte ich das Übertragenmodul gewählt. Den Schritt dahinter möchte ich nicht manuell anstoßen müssen.

VG
René

nope, das ist für den manuellen Import ausgelegt. 

Benutzerebene 2
Abzeichen +1

Ich habe gerade das Thema, dass ich im Webshop (Eigenentwicklung) einen neuen Artikel anlege. (bis auf die Artikelnummer). Mit einer Bestellorder (XML) möchte ich diesen neuen Artikel an Xentral übergeben und anlegen. Der Artikel hat alle Informationen, bis auf die Artikelnummer! Diese sollte über den Nummernkreis gezogen werden. (Nächste fortlaufende Nummer)

Es gibt doch im Übertragungsmodul extra die Einstellung:

  • Artikel anlegen:
    Fehlende Artikel anlegen  ja/nein

und

  • Artikel empfangen
    Artikel empfangen (neue Artikel)  ja/nein

Das funzt aber nicht, da die Auftrags-XML mit dem Fehler “Artikel nicht gefunden” verworfen wird.

… 

Hintergrund ist, das der Kunde bei der Artikelanlage im Webshop keine Info über die nächste, freie Nummer aus dem Nummernkreis zur Verfügung hat..Nun muss der Kunde erst bei uns die nächste Artikelnummer anfragen.. Umständlich!…

Den Artikel manuell über den Importer zu importieren ist noch umständlicher.. also keine Option..

Jemand eine Idee für diese eigentlich simple Funktion?

BG
Mike

Benutzerebene 2
Abzeichen +1

Der Thread ist schon etwas älter, aber mir hat in dem Zusammenhang etwas gefehlt. Das möchte ich hier mit euch teilen, da es euch ggf. auch viel Zeit spart.

 

Ich habe heute Morgen mit dem Übertragen-Modul gekämpft. Ich wollte ganz konkret den Wert “pseudolager” an jedem Artikel manuell pflegen, da wir nicht nur verfügbare Produkte, sondern auch produzierbare Produkte im Shop anzeigen möchten. Die Verknüpfung über die Stückliste kann Xentral leider nicht. Diese Lösung geht natürlich für jedes Attribut am Artikel.

 

Wie ist also meine Idee:

  1. Einen Bericht schreiben, der ermittelt, was alles produziert werden kann und prüfen, ob der Wert “pseudolager” schon auf dem richtigen Wert steht. Alle Abweichungen in einem Bericht anzeigen. Der Bericht hat drei wesentliche Spalten
    1. ID des Artikels
    2. Name_de des Artikels
    3. Menge für “pseudolager”
  2. Den Bericht per Link zur Verfügung stellen und per FTP auf meinem Server zur Verfügung stellen - das ganze alle 180 Minuten. Das mache ich wie alles, was ich rund um Xentral automatisiere und Xentral nicht ordentlich selbst kann per make.com - m.E. eine optimale Kombi mit Xentral.
  3. Mittels Übertragen-Modul
    1. den Bericht von meinem FTP-Server abholen
    2. Mittels Eingangskonverter aus der CSV eine XML bauen
    3. Die Artikel updaten.

Screenshot meiner Konfiguration im Übertragen-Modul. Eigentlich ist es ganz easy, aber am Anfang habe ich di Zusammenhänge nicht ganz verstanden. Übrigens: Ich habe auf der Seite “Events” auch “ArtikelEdit” aktiviert, aber nicht geprüft, ob das wichtig ist.

 

So, jetzt komme ich zu dem Teil, der mich am meisten Zeit gekostet hat. Es ist das XML. Leider steht nirgendwo, welche Felder Pflichtfelder sind. Die Liste oben von Büsra hilft schon sehr, um alle Feldnamen zu kennen (gehört m.E. auch in die zentrale Doku). Nun habe ich mein Minimalset erarbeitet:

Wann immer ich der Meinung war, dass es ohne “name_de” oder “anlegen” gehen müsste, wurde ich eines Besseren belehrt. 

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <xml>
        <artikel_list>
            <artikel>
                <nummer>100001</nummer>
                <name_de>Schraube M10x20</name_de>
                <pseudolager>15</pseudolager>
                <anlegen>1</anlegen>
            </artikel>
        </artikel_list>
    </xml>
</response>

 

So habe ich daraus folgenden Eingangskonverter gebaut:

 

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <xml>
        <artikel_list>
{foreach from=$object key=keyrow item=position}
            <artikel>
                                <nummer>{$position->Abnummer|escape:"html"}</nummer>
                <name_de>{$position->Name_de|escape:"html"}</name_de>
                <pseudolager>{$position->Gesamtmenge|escape:"html"}</pseudolager>
                <anlegen>1</anlegen>
            </artikel>
{/foreach}
        </artikel_list>
    </xml>
</response>

 

Die fett gedruckten Namen sind 1:1 die Spaltennamen im Bericht.

Ich hoffe es hilft dem ein oder anderen. 

 

Schönes Wochenende!

 

Antworten