Paketnummer pro Versandeinheit

Hallo,

ich schalt mich mal ein. Das ist garnicht mal so einfach zu lösen. Im Grunde muss man in jeder Zeile wissen, wie groß die Summe der Stückzahlen aus allen vorherigen Zeilen ist.
Falls ich nicht eine groben Denkfehler haben, lässt sich das nur lösen, indem man über das Spreadsheet in Freemarker iteriert.

Ich hatte initial an eine Lösung im Mapper gedacht, die wollte aber einfach nicht wie gewünscht funktionieren. Deshalb hier die Alternative über einen HTMLTextWriter.

Hier das Skript:

<#assign current_index_offset = 0>
<#list spreadsheet@SpreadsheetCSVReader_3.getRows() as row>
<#list 0…row.get(„Stückzahl“)!?number-1 as index>
${row.get(„Position“)},${row.get(„Stückzahl“)},${row.get(„Tracking-Nummern“)!?split(’;’)[index+current_index_offset]}
</#list>
<#assign current_index_offset = current_index_offset + row.get(„Stückzahl“)!?number> <#-- Verschiebe den index um $$Stückzahl$$ Spalten →
</#list>

Aus dem Spreadsheet

erstellt das Skript die komma-seperierte Liste

grafik

Bitte beachte, dass du die Variablen, also spreadsheet@SpreadsheetCSVReader_3 sowie die Spaltenname (Position,Stückzahl und Tracking-Nummern) anpassen musst.

Hier nochmal eine detailierte Erklärung des Skripts:

<#assign current_index_offset = 0>
Die Variable current_index_offset speichert die Summe aus der Stückzahl aller bisherigen Spalten. Anfangs steht sie auf 0.
<#list spreadsheet@SpreadsheetCSVReader_3.getRows() as row>Äußere Schleife über die Zeilen im Inputspreadsheet
<#list 0…row.get(„Stückzahl“)!?number-1 as index>Innere Schleife
Die Schleife wird so häufig durchschritten, wie die Stückzahl vorgibt. Die Variable index wird von 0 hochgezählt.
${row.get(„Position“)},${row.get(„Stückzahl“)},${row.get(„Tracking-Nummern“)!?split(’;’)[index+current_index_offset]}
Hier wird die Ausgabe geschrieben. Aus der Liste der Tracking-Nummern wird nur ein Element genommen. Der Index des Element berechnet sich aus der inneren Schleifenvariable index und current_index_offset
</#list> Ende der inneren Schleife
<#assign current_index_offset = current_index_offset + row.get(„Stückzahl“)!?number>
Nun wird noch die Variable um die Stückzahl bzw. bearbeiteten Tracking-Nummern erhöht.
</#list>Ende der äußeren Schleife

Wünsche einen schönen Abend,
Gustav

1 „Gefällt mir“