Zugriff auf Auftragspositionen in TextHTMLWriterMultiOutput per PlentySearchOrders

Hallo zusammen

Ich stehe gerade mächtig auf dem Schlauch. Ich möchte einen eigenen Lieferschein erstellen und dann wieder über «PlentyAddOrderDocument» ins Plenty zurückspielen.
So weit so gut, als Proof of Concept funktioniert alles wunderbar, die Tücken liegen aber im Detail. :slight_smile:

Grundaufbau meines Flows:

  1. PlentySearchOrder / Aufträge mit einem bestimmten Status inkl. Auftragspositionen
  2. TextHTMLWriterMultiOutput (Loop über orders@PlentySearchOrders) und schreiben der HTML-Daten für das PDF
  3. Html2PdfConverter
  4. FTPUpload
  5. File2Spredsheet
  6. Mapper (Vorbereiten aller Daten inkl. externen FileUrl’s für die generierten PDF-Daten)
  7. PlentyAddOrderDocument

Und nun zu meiner eigentlichen Frage:
Ich habe ein Problem beim Schritt 2 (TextHTMLWriterMultiOutput), ich möchte nur für den «OrderHeadOrderTypeID! == 1» jeweils eine Datei erzeugen und auf die Artikelpositionen dann wie bei einem Master/Child Datastore per children() zugreifen.

Gibt es diese Möglichkeit direkt über einen Step «PlentySearchOrder»?

Grund ist, dass ich die Daten nicht noch einmal zusätzlich in einen Master-/Child-Datastore hineinschreiben möchte.

Hallo @pbuechler,

der Output PlentySearchOrders Steps (generell alle Output Spreadsheets, die nicht aus dem Datastore kommen) verfügen leider nicht über die children() Funktion. Wenn du die Dateien direkt (ohne Datastore) erzeugen willst, dann wird es deutlich komplizierter.

Vielleicht hilft dir folgender Ansatz weiter. Die grobe Idee dahinter ist: Es wird zeilenweise geprüft ob sich die OrderID ändert und bei Änderung den Inhalt (content Variable) in eine Datei geschrieben. Falls sich die OrderID nicht ändert, wird der Inhalt erweitert.

<#assign currentOrderID = orders@PlentySearchOrders_52.firstRow("OrderHeadOrderID")>
<#assign content = "" >
<#list orders@PlentySearchOrders_52.getRows() as row>
  
<#if (currentOrderID != row.get("OrderHeadOrderID")! )>
    <#-- Datei erstellen wenn sich die Order ID ändert -->
    ${output(content, (currentOrderID+".html"), "UTF-8")}
    <#assign currentOrderID = row.get("OrderHeadOrderID") />
    <#assign content = "" >
</#if>

<#assign content>${content}
  <#if row.get("OrderHeadOrderTypeID") == 1> 
      Bestelldaten OrderID: ${row.get("OrderHeadOrderID")!}: <br />
 <#else>
      Positionsdaten ${row.get("OrderItemsVariantID")!}:<br />
  </#if>
</#assign>
</#list>
<#-- letzte Order als Datei ausgeben -->
${output(content, (currentOrderID+".html"), "UTF-8")}

Viele Grüße
Torsten

1 Like

Hallo Torsten, danke für den Ansatz! Ich verfolge diesen einmal.

1 Like