Neulich bekamen wir eine interessante Fragestellung:


Wir haben einen Flow gebaut, welcher Artikeldaten holt und 10 Cent dazu rechnet und wieder ausgibt. 

Jetzt hätten wir es aber gerne, dass dieser Flow an einem Tag 10 Cent zu rechnet und am nächsten Tag 10 Cent abzieht. Kan man dieses realisieren? 


Im Kern geht ja darum, an jedem Tag im Monat irgend etwas anderes zu machen. 


Folgende Lösung haben wir vorgeschlagen: 


Auf die schnelle fallen uns da Mappingsets und eine Hilfsspalte ein.
Folgende Dokumentation ist in diesem Zusammenhang hilfreich: 


http://docs.synesty.com/display/SSUD/Spreadsheets#Spreadsheets-Mappingset

http://docs.synesty.com/display/SSUD/Spreadsheets#Spreadsheets-ErgebnisseausvorherigenSpalteneinfügen

 

Die Idee ist, dass man für alle 31 Tage des Monats die zuzurechnenden bzw. abzuziehenden Werte in einem Mappingset hinterlegt. 


Den aktuellen Tag des Monats schreibt man dann mit folgendem Ausdruck im Wertfeld in eine Hilfsspalte:

 

${.now?string('dd')}


Ergebnis:

Der Wert 10 im Screenshot ist der aktuelle Tag, da wir den Screenshot am 10.03.2016 erstellt haben.

 


Im Mappingset trägst man dann für jeden Tag die Werte ein. 

 

01=10
02=-10
03=10 

 

usw. 


Vorteil: Man kann das sogar pro Tag noch variieren. 


Man kann statt Cent-Beträgen auch EUR-Werte mappen. Evtl. vereinfacht das die Berechnung. also 0.1 EUR statt 10 Cent. Da Preise meistens in EUR hinterlegt sind, spart man sich so die Umrechnung und kann im SpreadsheetMapper einfacher rechnen. 


Beispiel Hilfsspalte:



Ergebnis:

Sobald das Mappingset hinterlegt wurde, sollte der entsprechende Wert des Tages durch den übersetzten Wert im Mappingset ersetzt werden. Mit anderen Worten es sollte jetzt statt dem Tag der entsprechende Aufpreis drin stehen. 


Mit dieser Hilfsspalte kann man dann weiterarbeiten. 

Und z.B. den neuen Preis berechnen. D.h. den Wert der Hilfsspalte addiert man einfach auf eine existierende Preisspalte dazu. 




Wichtig: Die Hilfsspalte muss links von der Preisspalte sein, damit der Ausdruck ${result[hilfspalte]} klappt. Weiterhin sollte immer ein Punkt als Dezimaltrenner benutzt werden, sonst klappen die Berechnungen nicht (siehe hier). D.h. eventuell  braucht man noch eine weitere Hilfsspalte. 

Aber die Idee ist die gleiche.  



Diese Lösung ist nur eine der vielseitigen Anwendungsbeispiel für Mappingsets. Im Prinzip kann man Mappingsets immer dann nutzen, wenn man für eine "Hand voll" Wert jeweils einen anderen Wert brauchen. 
Oft werden Mappingsets nur für simple Übersetzungen z.B. von IDs, Kategorien oder Attributen von Deutsch zu Englisch verwendet, aber gerade bei Berechnungen sind sie oft ein sehr praktisches und mächtiges Werkzeug.