Automatisierungen und Trigger
Einführung
Dass Opportunity-, Angebots- und Buchungsprozesse in MediaVelox so reibungslos ineinandergreifen, liegt nicht zuletzt an einigen Automatisierungen und Triggern, die im Paket enthalten sind.
Neben den “statischen” Objekten wie die Publikation mit ihren Ausgaben, Formaten und Platzierungen kommt dem eher “dynamischen” Objekt Verfügbarkeit/Platzierungsmöglichkeit f42_dispo__AdPosCatalog__c hier eine zentrale Rolle zu.
f42_dispo__AdPosCatalog__c ist sog. Master in einer Master-Detail-Relation zu den Objekten
Buchung - f42_dispo__DispoBook__c (Detail)
Sperreintrag - f42_dispo__DispoBlockedItems__c (Detail)
gleichzeitig Detail zu f42_dispo__DispoBook__c
Im Salesforce Schema-Builder wird dies anschaulich:
Die Verfügbarkeit einer Platzierungsmöglichkeit
Zentrales Feld an der Platzierungsmöglichkeit ist das Formelfeld Verfügbarkeit f42_dispo__countAvailable__c
API-Feldname | Formel | Inhalt der Formel |
---|---|---|
f42_dispo__countAvailable__c | if( f42_dispo__Publication__r.f42_dispo__isDigital__c = TRUE, | Physikalisches Limit einer Verfügbarkeit
jeweils unterscheiden nach Anzahl (Count) für zeitpunktbasierte und Volumen (Sum) für zeitraumbasierte Buchungen
|
|
|
|
Die gebuchten/reservierten/gesperrten Buchungen werden über Rollup Summaries am Objekt Verfügbarkeit erfasst
bei digitalen Publikationen wird die Verfügbarkeit über das reservierte/gebuchte/gesperrte Volumen innerhalb eines Dispobuch-/Sperreintrags erfasst
bei gewöhnlichen Print-Publikationen allein über die Anzahl an Dispobuch-/Sperreinträgen
Wie werden Buchungen erzeugt?
Reservierungen in MVX werden im Angebotsprozess über die Produkteigenschaft zur Verfügbarkeitsprüfung vorgenommen.
Der Wert einer Produkteigenschaft, in diesem Falle die Buchungsinformation, wird am Objekt Angebotsposition (SF42_GenLineItem__c) als JSON String in das Feld Spezifikation Export (SF42_QuoLI_Specification_Export__c) geschrieben.
→ hierin enthalten die ID der zugehörigen Verfügbarkeit, Anzahl Reservierungen, zugehörige SperreinträgeBeim Synchronisieren der Angebotspositionen in die Opportunity (Erzeugen von Opportunity Produkten) wird der JSON String 1:1 auf das Opportunity Line Item ins Feld sf42_quotefx__SF42_QuoLI_Specification_Export__c geschrieben
Beim Synchronisieren der Anbebotspositionen in die Opportunity werden mittels eines Triggers neben den Opportunity Produkten im Bereich AdSales auch Dispobucheinträge erzeugt.
Buchungsrelevante Trigger
OpportunityLineItem.trigger
Der zentrale Trigger für MVX
Reagiert auf OpportunityLineItem-Erstellen aus appero quote heraus und erzeugt für MediaVelox neue Dispobucheinträge anhand der JSON-Spezifikation sf42_quotefx__SF42_QuoLI_Specification_Export__c
Sofern es bereits Dispobucheinträge an der Opportunity gibt, werden diese nicht geupdated, sondern gelöscht und neu geschrieben.
Erzeugt neue Sperreinträge, wenn die Buchung eine solche Regel auslöst.
Dispobook.trigger
Zeitliche Gültigkeit von Dispobucheinträgen
Wenn eine Buchung/Dispobucheintrag (f42_dispo__DispoBook__c) nicht mehr gültig ist, wird der Datensatz über eine Checkbox auf “archiviert” gesetzt. Archivierte Buchungen werden nicht mehr auf die Verfügbarkeit angerechnet.
Auch hier steht ein Formelfeld im Zentrum
API-Feldname | Formel | Inhalt der Formel |
---|---|---|
f42_dispo__Calculated_Archive__c | if( | Eine Buchung wird auf archiviert gesetzt, wenn
|
Archivierte Buchungen werden nicht mehr auf die Verfügbarkeit angerechnet. Da Rollup-Summaries aber nicht auf Formelfelder angewandt werden können, wird der Wert des Feldes f42_dispo__Calculated_Archive__c mittels Trigger in eine einfache Checkbox geschrieben:
Dieser Dispobook.trigger wird ausgelöst durch OpportunityLineItem.trigger
Schreibt den Wert des Feldes f42_dispo__Calculated_Archive__c in das Checkbox-Feld
f42_dispo__archive__cAktualisiert zugehörige Sperreinträge,
Aktualisiert den zu einer Buchung gehörenden Belegversand (zu stornierten Buchungen wird kein Belegex. erstellt), betr. f42_dispo__MVX_ProofOfDeliveryRule__c, Record Type Based on Dispo Books
Dispobucheinträge werden, wenn sich ihr Status oder Inhalt ändert, nicht geupdated, sondern gelöscht und neu geschrieben.
Nur bei der Archivierung wird ein Dispobucheintrag nicht neu geschrieben, sondern über die Kennzeichnung “archiviert” geupdated.
quote.trigger
Sobald ein Angebot abgelehnt wird, wird die zugehörige Buchung auf archiviert gesetzt (archive__c). Der zugehörige Trigger ist der quote.trigger.
quotelineitems.trigger
Für den Fall, dass ein Angebot mit Reservierungen erneut bearbeitet wird und einzelne Positionen darin gelöscht werden, mußt der entsprechende Dispobucheintrag archiviert werden.
Der quotelineitems.trigger prüft, ob eine Angebotsposition gelöscht wird und setzt vor dem Löschen den entsprechenden Dispobucheintrag auf archiviert (archive__c).
DispoBlockedItems.trigger
Auch Sperreinträge f42_dispo__DispoBlockedItems__c werden über ein Formelfeld auf archiviert gesetzt:
API-Feldname | Formel | Inhalt der Formel |
---|---|---|
f42_dispo__Calculated_Archive__c am Sperreintrag | f42_dispo__DispoBookEntry__r.f42_dispo__Calculated_Archive__c
| Das Feld f42_dispo__Calculated_Archive__c am Sperreintrag übernimmt per Formel den Wert aus dem auslösenden Dispobucheintrag. |
Der DispoBlockedItems.trigger schreibt den Wert des Formelfelds in das Checkboxfeld f42_dispo__archive__c am Sperreintrag
Opportunity.trigger
Auch wenn sich der Opportunity-Status ändert, hat das Einfluss auf die Buchungen. Hier greift der Opportunity.trigger
schreibt neue Dispobücher und löscht bisherige, wenn die Opportunity gewonnen ist und der Buchungsstatus auf bestätigt wechselt
dieselben Vorgänge auch für die zugehörigen Sperreinträge
Trigger für den Versand von Belegexemplaren
Issues.trigger
betr. Belegversandregeln (f42_dispo__MVX_ProofOfDeliveryRule__c) vom Record Type Based On Issues.
Belegexemplare, die aus ausgabenbasierten Regeln entstehen, werden manuell über eine Action an der Ausgabe erzeugt. Genaugenommen setzt die Schaltfläche nur einen Status an der Ausgabe - mittels Checkbox f42_dispo__ProofOfDeliveriesCreated__c.
Erst die gesetzte Checkbox löst den Issues.trigger aus, der wiederum die einzelnen Belegexemplare erzeugt (f42_dispo__MVX_ProofOfDelivery__c)
ProofofDeliveryRules.trigger
Validierung der Zustelladresse, wenn Angaben zur Lieferanschrift etc. unvollständig.
Proofsofdelivery.trigger
wenn Ausgaben-basierte Belegexemplare erstellt wurden, wird der zugehörige Status auf der Ausgabe geupdated.