Servus beisammen,
genau diesen Anwendungsfall hatte ich damals bei unserem Service "Virtuelle Maschine". Dabei sollten vCores, RAM, Festplattengröße, OS, usw. in einem Formular auswählbar, bzw. einzugeben sein.
Leider gab es damals keinen nativen Weg das mit dynamischen Werten bzw. Preisen zu lösen. Dazu habe ich im Ideenportal eine Idee eingereicht:
https://ideas.matrix42.com/ideas/SB-I-16
Inzwischen hat sich ein bisserl was getan. Man kann ggf. mit Bundles einiges machen. Im Release Webinar zur 9.1.1 wurde dazu das Service Element Handling erklärt (etwa ab Minute 31)
Code: Select all
https://campus.matrix42.com/learn/course/35/play/1430/release-webinar-version-911-de
Vielleicht ist da schon was dabei, was helfen kann. Für meine Anforderung hat es leider nichts gebracht. Daher musste ich einen relativ komplizierten Weg gehen.
Ich nutze ein Formular an einem Service und führe im Formular die Preisberechnung anhand der Formularfelder durch. Im Assistent des Warenkorbes ermittle ich, ob ein entsprechender Service im Warenkorb ist. Falls ja, hole ich mir dynamisch den Preis aus dem verknüpften Formular. Diesen Preis schummle ich dann mittels JavaScript an den WebService, der für die Anzeige des Warenkorb-Preises benutzt wird. So wird also mein dynamischer Preis aus dem Formular, statt des statisch hinterlegten Preises aus dem Service an den WebService übergeben. Dies alles ist nur für die Darstellung im Warenkorb nötig.
Nach dem Absenden der Bestellung, update ich per hartem Datenbanktrigger auf der SVCServiceBookingClassBase dann letztlich den Preis für die Buchung. So wird in der Approval und auch in der Booking der richtige Preis hinterlegt. Der Weg funktioniert zwar für uns hier, ist aber schon sehr, sehr customized. Ich bin auch kein Freund von harten DB-Triggern, zumal diese bei jedem Update manuell wieder aktiviert werden müssen. Außerdem kann es sein, dass die Implementierung in einem der nächsten Releases nicht mehr funktioniert.
Daher besser für die Idee voten
https://ideas.matrix42.com/ideas/SB-I-16 oder die Bundles nutzen.
Bei Interesse zu meiner Umsetzung darf natürlich gefragt werden. Das würde jedoch den Rahmen hier sprengen.
LG
Frank