Werte aus Map addieren WENN Wert in Map vorhanden ist
Samenhaus-Admin
hat ein Thema begonnen
8 Monate her
Hallo zusammen,
ich will die Bestände für verschiedene Lager die PlentyGetVariations in VariationStocksPhysical zurückliefert addieren, aber halt nur, wenn das Lager eben auch in der Map ist.
Das Wert-Feld enthält Fehler. (Root Causes: ParseException: Syntax error in template "StocksPhysical" in line 4, column 3: You can't use ${...} (an interpolation) here as you are already in FreeMarker-expression-mode. Thus, instead of ${myExpression}, just write myExpression. (${...} is only used where otherwise static text is expected, i.e., outside FreeMarker tags and interpolations, or inside string literals.))
zurück. Ja, okay, dann entferne ich die ${...} innerhalb der if/else-Anweisungen. Dann gibts aber ein
Das Wert-Feld enthält Fehler. (Root Causes: ParseException: Syntax error in template "StocksPhysical" in line 1, column 270: Encountered "<", but was expecting one of: "." ".." <DOT_DOT_LESS> "..*" "?" "??" "!" "[" "(" ")" <TERMINATING_EXCLAM>)
Hä? Ist bestimmt nur irgendwo ein Syntaxfehler, aber ich komm nicht weiter. Könnt ihr helfen?
Grüße Daniel
Beste Antwort
d
digital@slv.de-Gustav Friedeheim
gesagt
8 Monate her
Falls du noch auf der Suche nach dem Syntax-Fehler bist: In den elseif-Blöcken öffnest du zu Beginn eine Klammer, die nicht geschlossen wird.
<#assign sum = 0>
<#list VariationStocksPhysical?keys as key>
<#if isNumber(VariationStocksPhysical[key])>
<#assign sum = sum + VariationStocksPhysical[key]>
</#if>
</#list>
${sum!}
Variable mit 0 initalisieren, alle keys als Liste iterieren und wenn der Wert eine Zahl ist zur 0 addieren. Am Ende die Sume ausgeben.
Falls du noch auf der Suche nach dem Syntax-Fehler bist: In den elseif-Blöcken öffnest du zu Beginn eine Klammer, die nicht geschlossen wird.
Gruß
Gustav
1 Person gefällt dies
Samenhaus-Admin
gesagt
8 Monate her
Argh Gustav, das passiert wenn man so spät noch auf Code schaut O.o
Danke, das wars!
Samenhaus-Admin
gesagt
8 Monate her
Ergänzung dazu:
VariationStocksPhysical.at("20") funktioniert nur direkt auf API-Calls, nicht wenn ich auf einen String aus einem Datastore operiere, dort benötigt es parsemap. Das hatte mir ein bisschen Kopfzerbrechen beim blind kopieren gemacht ;-)
Samenhaus-Admin
gesagt
6 Monate her
Ich nochmal: der Code den Rocco oben gepostet hat, hat nicht funktioniert (mit einer Map aus einem String/Datastore).
Aber so funktioniert es:
<#assign sum = 0>
<#list parseMap(VariationStocksPhysical) as key, value>
<#if isNumber(value)>
<#assign sum = sum + value?number>
</#if>
</#list>
${sum!}
Und wenn man nur bestimmte Lager aufsummieren möchte, kann man deren IDs kommagetrennt in eine Variable LagerIDs schreiben, und mit diesem Code nur die passenden addieren:
<#assign sum = 0>
<#list parseMap(VariationStocksPhysical) as key, value>
<#if meta.LagerIDs?split(",")?seq_contains(key)>
<#if isNumber(value)>
<#assign sum = sum + value?number>
</#if>
</#if>
</#list>
${sum!}
Samenhaus-Admin
Hallo zusammen,
ich will die Bestände für verschiedene Lager die PlentyGetVariations in VariationStocksPhysical zurückliefert addieren, aber halt nur, wenn das Lager eben auch in der Map ist.
Konkret geht es um die IDs, die Addition soll
sein. Ich dachte mir das so:
Dann bekomme ich aber ein
zurück. Ja, okay, dann entferne ich die ${...} innerhalb der if/else-Anweisungen. Dann gibts aber ein
Hä? Ist bestimmt nur irgendwo ein Syntaxfehler, aber ich komm nicht weiter. Könnt ihr helfen?
Grüße Daniel
Falls du noch auf der Suche nach dem Syntax-Fehler bist: In den elseif-Blöcken öffnest du zu Beginn eine Klammer, die nicht geschlossen wird.
Gruß
Gustav
- Älteste zuerst
- Beliebt
- Neueste zuerst
Sorted by Älteste zuerstSynesty Support
Hallo Daniel,
du könntest es auch so versuchen:
Variable mit 0 initalisieren, alle keys als Liste iterieren und wenn der Wert eine Zahl ist zur 0 addieren. Am Ende die Sume ausgeben.
Siehe https://www.viralpatel.net/iterate-hashmap-in-freemarker-ftl/
Beste Grüße,
Rocco
1 Person gefällt dies
digital@slv.de-Gustav Friedeheim
Falls du noch auf der Suche nach dem Syntax-Fehler bist: In den elseif-Blöcken öffnest du zu Beginn eine Klammer, die nicht geschlossen wird.
Gruß
Gustav
1 Person gefällt dies
Samenhaus-Admin
Argh Gustav, das passiert wenn man so spät noch auf Code schaut O.o
Danke, das wars!
Samenhaus-Admin
Ergänzung dazu:
VariationStocksPhysical.at("20") funktioniert nur direkt auf API-Calls, nicht wenn ich auf einen String aus einem Datastore operiere, dort benötigt es parsemap. Das hatte mir ein bisschen Kopfzerbrechen beim blind kopieren gemacht ;-)
Samenhaus-Admin
Ich nochmal: der Code den Rocco oben gepostet hat, hat nicht funktioniert (mit einer Map aus einem String/Datastore).
Aber so funktioniert es:
Und wenn man nur bestimmte Lager aufsummieren möchte, kann man deren IDs kommagetrennt in eine Variable LagerIDs schreiben, und mit diesem Code nur die passenden addieren:
Grüße Daniel
1 Person gefällt dies
-
Komplette Datenzeile löschen
-
Datum für nächsten Run speichern
-
Plenty SOAP 115
-
30 Minuten Demo per TeamViewer
-
CSV mit URLDownload herhunterladen
-
Ebay CSV Warenbestand abgleichen mit Synesty und API Connector Tools
-
Gestriges Datum erzeugen
-
Steuerrelevante Abrechnungen
-
workflow "Auslaufware"
-
Export zu Google Drive - Link geändert, Uploadziel bleibt trotzdem gleich?
Alle 1545 Themen ansehen