Elternzeilen rausfiltern, wenn keine Kindzeilen vorhanden

Hallo zusammen,

ich habe ein Spreadsheet mit Elternzeilen und Kindzeilen (Bestellung mit Bestellpositionen). Wie kann ich jetzt Bestellungen, also Elternzeilen rausfiltern, die keine Bestellpositionen, also Kindzeilen haben.
Wir müssen bestimmte Bestellpositionen herausfiltern, daher kann es vorkommen, dass es Bestellungen ohne Positionen gibt. Diese sollen dann auch nicht weiterverarbeitet werden.

Viele Grüße,
Patrick

Hallo @abc_design,

aus welcher Quelle bekommst du das Spreadsheet? Denn abhängig davon, gibt es unterschiedliche Lösungen.

Viele Grüße
Lukas

Hi @synesty-Lukas,

das Spreadsheet kommt direkt aus dem ShopwareSearchOrders Step bzw. aus einem nachgelagerten Filter der daraus bestimmte Bestellpositionen rausfiltert und somit „leere“ Bestellheader hinterlässt.

Hallo @abc_design,

ich habe nochmal drüber nachgedacht und es ist doch nicht ganz so einfach. :smiley:

Was du machen kannst: Du nimmst nach dem filtern einen Hilfsmapper und gruppierst dort nach der OrderNumber bzw. nach dem Wert, der pro Auftrag gleich ist. Dann erstellst du einen Hilfsmapper und nimmst dort die Aggregatfunktion „Zeilen zählen“. Dann weißt, dass jede Zeile die dort den Wert 1 hat, keine Bestellpositionen hat.

Anschließend nimmst du einen SpreadsheetAppend führst beide Spreadsheets zusammen, also deinen Hilfsmapper und das Ergebnis aus dem Filter. Anschließend nimmst du wieder einen Mapper und gruppierst dort wieder nach der OrderNumber.

Danach nimmst du einen weiteren Filter und filterst alle Zeilen deren Hilfsspalte gleich 1 ist.

Viele Grüße
Lukas

Hi @synesty-Lukas,

vielen Dank für deine Antwort.

Nach etwas herumprobieren haben wir jetzt eine andere Lösung gewählt. Und zwar haben wir sowieso noch einen TextHTMLWriter Step, der mit einem Freemarker-Skript die Bestellungpositionen auf Verfügbarkeit überprüft und nur verfügbare Bestellungen ausgibt. Dort haben wir jetzt einfach eine Abfrage eingebaut, die überprüft, ob die Anzahl der Bestellpositionen zu einem Bestellheader größer 0 ist.
Vielleicht nicht die eleganteste Lösung aber es funktioniert :slight_smile:

Viele Grüße,
Patrick