Skip to main content
Skip table of contents

Kalkulationsparameter übertragen

Technische Dokumentation

Komponentenübersicht

Prozesse

  • C12SYNKalkulation

Beim Einspielen des Moduls werden die Prozesse automatisch veröffentlicht, dennoch ist eine Prüfung des Veröffentlichungsstatus empfehlenswert. Entsprechende Hinweise werden auch beim Import des Moduls ausgegeben.

Skriptbibliothek

  • SC12SYNUtils

  • SC12SYNTests

Globale Variablen

  • C12SYN_ClientID

  • C12SYN_URL_requestToken

  • C12SYN_ClientCredentials

  • C12SYN_URL

Administrationsmöglichkeiten

Administrationsmöglichkeiten durch folgende globale Variablen:

Die Werte für diese Variablen sind bei Syneco zu erfragen/beantragen.

Globale Variable

Beschreibung

C12SYN_URL_requestToken

URL zur Abfrage des Tokens

C12SYN_ClientID

ClientID zur Abfrage des Tokens

C12SYN_ClientCredentials

Passwort zur Abfrage des Tokens

C12SYN_URL

URL zum Zugriff auf Synection

Übersteuerungsmöglichkeiten

Grundsätzlich können die mit dem Modul bereitgestellten Komponenten wie BPM-Prozesse, -teilprozesse, Suchen und Skriptbibliotheksmethoden übersteuert werden, um diese an individuelle Anforderungen und Bedürfnisse anzupassen.
Nach dem Einspielen eines Moduls sollte geprüft werden, ob bereits Skriptmethoden im Projekt übersteuert wurden und ob die Methodenänderung aus dem Standard im Projekt übernommen werden soll.

Methoden, die den Prozessablauf beeinflussen können:

Skriptklasse

Methodenname

Funktionalität

SC12SYNUtils

addCustomFieldsCustomer

 Diese Methode kann genutzt werden, um weitere Felder zu den bestehenden Standardfeldern des Customers hinzuzufügen.

SC12SYNUtils

addCustomFieldsDeliveryPoint

 Diese Methode kann genutzt werden, um weitere Felder zu den bestehenden Standardfeldern des DeliveryPoints hinzuzufügen.

SC12SYNUtils

addCustomFieldsIntervall

Diese Methode kann genutzt werden, um weitere Felder zu den bestehenden Standardfeldern des Intervall hinzuzufügen.

SC12SYNUtils

addCustomFieldsOver

Diese Methode kann genutzt werden, um weitere Felder zu den bestehenden Standardfeldern des Over hinzuzufügen.

SC12SYNUtils

checkStartCalculation

Legt fest, ob das Angebot über Synection kalkuliert werden soll

SC12SYNUtils

checkStartChangeStatus

Legt fest, ob die Statusänderung zum Angebot an Synection übergeben werden soll.

Ablauf

Einstiegsmethoden

Skriptklasse

Methodenname

Funktionalität

SC12SYNUtils

getJSONCustomerData

Erzeugt eine (geschachtelte) Map mit einem Geschäftspartner und dazugehörigen Lieferstellen

SC12SYNUtils

getJSONOfferData

 Erzeugt eine (geschachtelte) Map mit einem Angebot

SC12SYNUtils

getToken

Token zur Authentifizierung anfragen

SC12SYNUtils

httpTransfer

Daten zu Synection durch Webservice übertragen

SC12SYNUtils

storeCalculationResponse

Ergebnis in EVI eintragen

Kurzfassung

  •  Der Prozess C12SynCalculation startet bei der Neuanlage eines Events mit dem Namen "QUOTE_CALCULATION".

    • Aus dem Event wird das zu übertragende Angebot ermittelt.

    • Mit Hilfe der Methoden SC12SYNUtils.getJSONCustomerData() und SC12SYNUtils.getJSONOfferData() wird eine Struktur aus den Angebotsdaten erzeugt, die über einen Webservice an Synection übertragen wird.

    • Zum Übertragen ist ein Token notwendig, dass über die Methode SC12SYNUtils.getToken() ermittelt wird.

    • Die Methode authentifiziert sich bei einem Server der Syneco und liefert das von dort erhaltene Token zurück.

    • Mit Hilfe dieses Tokens können die Daten zu Synection übertragen werden. Dazu wird die Methode SC12SYNUtils.httpTransfer() verwendet.

Kalkulationsparameter übertragen

Start

Der Benutzer klickt im Angebot auf den Button "Angebot kalkulieren". Dadurch wird ein Event (C12EVENT) mit dem Namen QUOTE_CALCULATION und einem Verweis auf das Angebot erzeugt. Dies ist Teil des Moduls C12EVI_BASIS und für alle Kalkulationen gleich.

Im Modul C12SYNECTION reagiert der Prozess C12SYNKalkulation auf das Anlegen des Events und überträgt die Werte des Angebots über einen Webserviceaufruf an Synection.

Erweiterte Prüfung

Im ersten Schritt erfolgt eine erweiterte Prüfung der Startbedingungen. Dies erfolgt im Skripttask "erweiterte Prüfung der Startbedingung", da in der Startbedingung nicht alle Methoden von BPM zur Verfügung stehen.

Zur Prüfung wird die Methode SC12SYNUtils.checkStartCalculation() aufgerufen. Im Standard enthält diese Methode keine Prüfung und liefert immer true. Sie ist für eine erweiterte Prüfung in C2 gedacht.

Übertragen der Daten zu Synection

Die Übertragung der Daten zu Synection geschieht in 4 Schritten im Skripttask "Aufruf Synection Webservice"

1. Prüfen und sammeln der Daten

Hierzu werden die beiden Methoden SC12SYNUtils.getJSONCustomerData() und SC12SYNUtils.getJSONOfferData() aufgerufen. Diese Methoden ermitteln mit Hilfe von weiteren Methoden und Suchen die Daten aus den einzelnen Entitäten und liefern eine Map zurück, mit der ein JSON Objekt erstellt werden kann, dass dann an den Web-Service von Synection weitergegeben wird. Weiterhin machen diese Methoden eine Pflichtfeldprüfung aufgrund der Daten in den Entitäten Pflichtfeld-Bedingung(C12MANDCOND) und Schnittstellen-Pflichtfeld (C12MANDFIELD).

Werden dabei nicht gefüllte Pflichtfelder entdeckt, dann wird in der Logmap, die den Methoden als Parameter mitgegeben wird, ein Fehler eingetragen. Das führt dazu, dass die weiteren Schritte nicht ausgeführt werden und ein Eventresult mit dem Status "ERROR" erzeugt wird.

2. Token von Synection besorgen

Sind alle Pflichtfelder vorhanden, dann sind die zurückgelieferten Maps mit den entsprechenden Daten gefüllt und können zu Synection übertragen werden. Dazu ist ein Token notwendig, dass über eine andere URL beschafft wird, als die des eigentlichen Webservices. Dies geschieht durch den Aufruf SC12SYNUtils.getToken(), der in einer Map die Informationen zurückliefert.

Treten hier Fehler auf, dann stehen diese in der Logmap, die der Methode als Parameter mitgegeben wird. Die weiteren Schritte werden dann übersprungen und es wird ein Eventresult mit dem Status "ERROR" und dem Inhalt der Logmap erzeugt.

3. Webservice aufrufen

Durch den Aufruf der Methode SC12SYNUtils.httpTransfer() werden die in Schritt 1 ermittelten Maps dann per Webservice an Synection übertragen. Dazu werden sie in einer Map zusammengefasst, so dass aus dieser Map der entsprechende JSON-String erzeugt werden kann. Zur Authentifizierung wird das in Schritt 2 ermittelte Token verwendet. Die URL zum Webservice wird aus der globalen Variablen C12SYN_URL gelesen.

Auch hier wird bei einem Fehler der nächste Schritt übersprungen und es wird ein Eventresult mit dem Status "ERROR" und den Meldungen aus der Logmap erzeugt.

4. Ergebnis eintragen

Durch Aufruf der Methode SC12SYNUtils.storeCalculationResponse() wird das vom Webservice gelieferte Ergebnis im Angebot eingetragen. Die Methode ermittelt die Komponente "resultUrl" aus der Ergebnisstruktur und trägt sie im Feld Vorgangs-ID "C12InstanceID.Quote" ein. Außerdem wird der Status des Angebotes, der Preiskalkulation und der Varianten auf "IN KALKULATION" gesetzt.

Treten hier Fehler auf, dann wird ein Eventresult mit dem Status "ERROR" und den Meldungen aus der Logmap erzeugt. Bei erfolgreichem Abschließen des letzten Schrittes hat das Eventresult den Status "OK" und enthält die Meldungen aus den vorangegangenen Schritten, die in der Logmap gesammelt werden.

Pflichtfeldprüfung

Die Pflichtfeldprüfung erfolgt entitätsweise. Das bedeutet, dass es für jede Entität eine Pflichtfeld-Bedingung mit dem Namen SYNCETION_<Entität> gibt, die auf die zu prüfenden Pflichtfeld-Bedingungen verweist. Zusätzlich gibt es für die Entitäten PriceCalc und C12INSTACC spezielle Pflichtfeld-Bedingungen, die im Falle RLM/SLP und STROM/GAS geprüft werden. Folgende Tabelle enthält die Bedingungen und Felder, die im Standard geprüft werden:

Pflichtfeld-Bedingung

Schnittstellen-Pflichtfeld

SYNECTION_QUOTE

C12BindingPerio.Quote


C12DeliveryUnt.Quote


C12Medium.Quote


C12Portfolio.Quote


Quoteno.Quote


QuoteStatusKey.Quote


Reference.Quote

SYNECTION_CUSTOMER

C12SyncId.Customer


Name1.Customer

SYNECTION_C12INSTACC

MeasuringMethod.C12INSTACC


Medium.C12INSTACC

SYNECTION_GAS_RLM_C12INSTACC

MeasuringMethod.C12INSTACC


Medium.C12INSTACC


SyncId.C12INSTACC

SYNECTION_GAS_SLP_C12INSTACC

MeasuringMethod.C12INSTACC


Medium.C12INSTACC


SyncId.C12INSTACC


LoadProfile.C12INSTACC

SYNECTION_STROM_RLM_C12INSTACC

MeasuringMethod.C12INSTACC


Medium.C12INSTACC


SyncId.C12INSTACC

SYNECTION_STROM_SLP_C12INSTACC

MeasuringMethod.C12INSTACC


Medium.C12INSTACC


SyncId.C12INSTACC


LoadProfile.C12INSTACC

SYNECTION_C12VARIANT

VARIANT_STATUS.C12VARIANT


C12CalcStart.C12VARIANT


C12CalcEnd.C12VARIANT

SYNECTION_GAS_RLM_PRICECALC

C12Marktgebiet.PriceCalc

SYNECTION_GAS_SLP_PRICECALC

C12Marktgebiet.PriceCalc


C12MengeLZ.PriceCalc


C12MeteringCode.PriceCalc

SYNECTION_STROM_RLM_PRICECALC

C12RegArea.PriceCalc

SYNECTION_STROM_SLP_PRICECALC

C12RegArea.PriceCalc


C12MengeLZ.PriceCalc


C12MeteringCode.PriceCalc

Felder, die übertragen werden

Die geforderten Felder, die zu übertragen sind werden durch die Struktur des Webservices von Synection bestimmt. Diese werden in zwei Teile untergliedert:

Customer

Daten zum Geschäftspartner und den Lieferstellen. Dieser Teil wird durch Aufruf von SC12SYNUtils.getJSONCustomerData() ermittelt. Die eigentlichen Daten zum Geschäftspartner selbst werden durch die Methode SC12SYNUtils.getJSONCustomer() und die zu den Lieferstellen durch SC12SYNUtils.getJSONDeliveryPoint() ermittelt.

Offer

Daten zum Angebot und den Varianten. Dieser Teil wird durch Aufruf von SC12SYNUtils.getJSONOfferData() ermittelt. Die Daten zum Angebot selbst werden durch die Methode SC12SYNUtils.getJSONOffer() und die zu den Lieferstellen durch SC12SYNUtils.getJSONInterval() ermittelt.

Bei diesen Methoden wird die Namensgebung verwendet, die sich auch in der Struktur für den Webservice findet (Customer, DeliveryPoint, Offer, Interval). Dabei werden die Daten wie folgt gefüllt:

Ziel Synection

Quelle EVI

Customer.externalId

C12SyncId.Customer

Customer.name

Name1.Customer+" "+Name2.Customer

Customer.customerNumber

C12SyncId.Customer

Customer.DeliveryPoint.externalId

SyncId.C12INSTACC

Customer.DeliveryPoint.commodity

Medium.C12INSTACC

Customer.DeliveryPoint.profileType

MeasuringMethod.C12INSTACC

Customer.DeliveryPoint.maLoId

C12MeteringCode.PriceCalc

Customer.DeliveryPoint.meterNumber

-

Customer.DeliveryPoint.edmId

C12MeteringCode.PriceCalc

Customer.DeliveryPoint.postalCode

ZIP.Location oder wenn nicht gefüllt ZIP.C12INSTACC

Customer.DeliveryPoint.state

State.Location oder wenn nicht gefüllt State.C12INSTACC

Customer.DeliveryPoint.marketArea

C12Marktgebiet.PriceCalc (nur bei Gas)

Customer.DeliveryPoint.controlZone

ShortName.C12REGULAREA zu C12RegArea.PriceCalc (nur bei Strom)

Customer.DeliveryPoint.slpProfileCode

LoadProfile.C12INSTACC (nur bei SLP)

Customer.DeliveryPoint.quantity

C12MengeLZ.PriceCalc

Customer.DeliveryPoint.createdDate

FromDate.TimeSlicingIs

Customer.DeliveryPoint.prosumer

-

Offer.externalId

Quoteno.Quote

Offer.externalCustomerId

C12SyncId.Customer

Offer.commodity

C12Medium.Quote

Offer.offerName

Reference.Quote

Offer.offerDate

C12DeliveryUnt.Quote

Offer.pricingType

Pricing.C12PORTFOLIO

Offer.portfolioName

Shortcut.C12PORTFOLIO

Offer.expirationDate

C12BindingPerio.Quote

Offer.status

-

Offer.Interval.externalId

Pk.C12VARIANT

Offer.Interval.deliveryPeriod.startDate

C12CalcStart.C12VARIANT

Offer.Interval.deliveryPeriod.endDate

C12CalcEnd.C12VARIANT

Anzeigen des Ergebnisses der Übertragung

Nachdem die Übertragung stattgefunden hat - egal ob mit Fehler oder Erfolg - wird ein Eventresult (C12EVENTRES) mit einem entsprechenden Status erzeugt. Auf das Erzeugen dieses Datensatzes reagiert der Prozess C12SYNUserNotification. Er wertet dazu das Feld Subject.C12EVENTRES aus und erzeugt eine entsprechende Meldung, die dem Benutzer angezeigt wird.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.