Ti trovi qui:
InsQuoteService:createUpdateQuote
Utilizzare questo servizio per creare un preventivo per una nuova attività, aggiornare un preventivo esistente con nuove informazioni o creare un preventivo di conferma. Per gli aggiornamenti, il quoteId del preventivo da aggiornare deve essere incluso nelle opzioni remote.
Prima dell'esecuzione di questo servizio, il sistema esegue un controllo utente guest.
Questo servizio può essere utilizzato dagli utenti guest. Un utente guest che esegue un'operazione OmniScript, Procedura di integrazione o interfaccia utente potrà continuare; questo servizio verrà eseguito. Tuttavia, i quoteId e i opportunityId sono crittografati in questi casi, quindi gli utenti guest non possono visualizzare questi ID.
Utilizzare il servizio InsQuoteService:createUpdateQuote per aggiornare le voci preventivo e preventivo, anziché utilizzare Omnistudio Data Mapper.
Funzionamento
-
Il servizio cerca il
inputKeynel JSON di input. Il nodoinputKeycontiene le informazioni necessarie al servizio per creare o aggiornare un preventivo. Le informazioni richieste da questo servizio includono:-
opportunityId -
endDate(facoltativo) -
effectiveDate -
Record
productConfigurationDetail -
instanceKeyObbligatorio per identificare più istanze della stessa specifica
-
insuredItemsnodoAll'interno di questo nodo, il servizio prevede un elenco di specifiche dell'elemento assicurato e delle specifiche della parte assicurata, utilizzando il
productCodedi ogni specifica come chiave. Term__cUtilizzare per aggiornare il campo Term__c del preventivo.
-
-
Utilizza le informazioni del JSON di input per creare il preventivo.
-
Restituisce un ID preventivo nel JSON di output.
-
Crea un oggetto Preventivo che include le seguenti voci:
-
Utilizza i prodotti radice definiti in
productConfigurationDetailper creare o aggiornare le voci preventivo radice. -
Quando si aggiorna un preventivo esistente, vengono aggiunti i record nel
productConfigurationDetailche non sono ancora presenti nel preventivo e quelli già presenti nel preventivo vengono aggiornati. -
Utilizza le specifiche dell'articolo assicurato, le specifiche dell'assicurato e le specifiche della copertura come voci preventivo:
ParentItemId__c = rootItem.Id. -
La voce preventivo della voce principale assicurata e le voci preventivo della parte controllata hanno una relazione molti:molti. Queste relazioni sono memorizzate nell'oggetto Relazione voce preventivo. Se una voce preventivo voce assicurata ha relazioni con più voci preventivo assicurato, il campo
PrimaryChildLineitemId__cviene utilizzato per determinare quale di queste relazioni è la principale.Ad esempio, sia Joan Smith che John Smith guidano la Lexus 250; Joan Smith è impostata come conducente principale. La voce preventivo Lexus 250 ha
PrimaryChildLineItemId__cche puntano alla voce preventivo di Joan Smith. Tutti iParentItemId2__cdelle voci preventivo puntano alSubParentItemId__cdelle coperturerootItem.Id.Child che punta alla voce principale assicurata. I campi Voce preventivo voce assicurato eItemName__cvoce preventivo assicurato sono memorizzati con ilinstanceKeydi questa voce. -
La voce preventivo della voce principale assicurata include il prezzo.
-
-
Per i nuovi preventivi, se
createOpportunityètruee non viene fornito alcunopportunityId, crea un record Opportunità utilizzando il nodo JSONOpportunityDetailsdalinputKey. -
Se
calculateCommissionètrue, chiamaInsCommissionService.processQuoteCommission, che prepara l'input per il servizio diInsCommissionService.calculate. Dopo che il servizio di calcolo ha elaborato l'input, memorizza il valore della commissione calcolata inQuote.CommissionAmount__c.
Tutti gli utenti che chiamano InsQuoteService:createUpdateQuote devono disporre dell'autorizzazione Lettura per tutti i campi dell'insieme di campi Dettagli preventivo se l'insieme di campi viene aggiunto all'oggetto Voce preventivo.
Se l'insieme di campi Dettagli preventivo non viene aggiunto all'oggetto Voce preventivo, tutti i campi, inclusi quelli personalizzati, sono leggibili per gli utenti.
Supplementi
Ecco come funziona questo servizio con supplementi (tasse e spese):
-
Se il campo
taxesAndFeesè specificato in un record JSON, viene mantenuto un recordQuotePricingAdjustment__ccorrispondente per ogni elemento dell'elencotaxesAndFees. -
Se il campo
taxAmountè specificato in un record JSON, il campoTaxAmount__cviene impostato sul valore del campotaxAmountnelQuoteLineItemcreato. -
Se il campo
feeAmountè specificato in un record JSON, il campoFeeAmount__cviene impostato sul valore del campofeeAmountnelQuoteLineItemcreato.
Aggiunta di campi aggiuntivi alle voci preventivo
Se sono necessari campi aggiuntivi scritti nella Voce preventivo da questo servizio, è necessario chiamare prima il servizio InsProductJSONService:trimOffAttributeCategory.
Il flusso per fare in modo che funzioni in un OmniScript o in una procedura di integrazione è:
-
Fasi di configurazione del prodotto
-
InsProductJSONService:chiamata di servizio trimOffAttributeCategory con selectedValueAsObject impostato su true
-
Trasformazione DataRaptor che può includere la mappatura tra attributi e campi aggiuntivi nell'oggetto Voce preventivo
-
InsQuoteService:chiamata di servizio createUpdateQuote
Opzioni remote
Opzione |
Descrizione |
|---|---|
|
Se questa opzione è impostata su Questa opzione supporta le relazioni voce controllante > controllato e controllante > controllato > assicurato nipote. |
|
Obbligatorio. Chiave JSON da cui il servizio estrae le informazioni necessarie per creare o aggiornare un preventivo. Non utilizzare % per racchiudere il valore di questa chiave. Questa chiave rappresenta un nodo JSON, non una variabile. Poiché questa chiave rappresenta un nodo JSON e non un percorso, non utilizzare la notazione del percorso parent:childnode:childnode. Per individuare il percorso dati corretto, immetterlo nel campo Invia percorso JSON nella sezione Trasformazione Invia/Risposta quando si aggiunge questa coppia chiave/valore a una fase OmniScript. |
|
Se impostato su Utilizzare questa opzione per creare preventivi multiistanza di grandi dimensioni tramite più chiamate al server, in cui il nuovo insieme di voci preventivo delle istanze viene inserito nel preventivo esistente in ogni chiamata. |
|
Facoltativo. ID di un preventivo esistente aggiornato dal servizio in base a informazioni nuove o aggiornate. Utilizzato quando il servizio deve aggiornare un preventivo esistente. |
|
Facoltativo. Flag booleano per indicare se la citazione è una citazione multiradice. Il valore predefinito è |
|
Se impostato su |
|
Se impostato su |
|
Obbligatorio. Nome del listino prezzi associato alla specifica del prodotto. Salesforce richiede che i prodotti utilizzati nelle voci preventivo abbiano una voce listino prezzi. |
|
Se impostato su Se impostato su Nota
Se si imposta questa opzione su false, è necessario aggiungere anche una riga al modello di interfaccia utente In |
|
Se impostato su |
|
Se impostato su |
|
Quando è impostato su Se impostato su Nota
Se si imposta questa opzione su true, è necessario immettere anche almeno uno dei valori del produttore o del codice di produzione: |
|
Facoltativo. ID produttore di trasformazione, ovvero il produttore utilizzato per recuperare i |
|
Facoltativo. ID codice di produzione. |
|
Facoltativo. Il nome del codice di produzione passato al servizio InsCommissionService.calculate. Se non si immettono |
runEligibilityRequiredDefaultSelectedRules
|
Facoltativo. Il valore predefinito è Determina se vengono eseguite le regole Idoneità e Selezionato predefinito. |
runRelationshipRules
|
Facoltativo. Il valore predefinito è Determina se vengono eseguite le regole di relazione. |
runSelectedValivationRules
|
Facoltativo. Il valore predefinito è Determina se vengono eseguite le regole Seleziona convalida. |
Input JSON
Questo servizio cerca il valore del inputKey. Accedere alla scheda API nella specifica del prodotto per trovare il JSON di input necessario per questo servizio.
Per questo esempio, inputKey = quotePolicyJSON.
"quotepolicyJson": {
"productConfigurationDetail": {
"records": [{
"rootProductId": "01t1I000002fuBoQAI",
"rootProductCode": "AUTOROOT",
"timestamp": 1534288040769,
"hasInstanceKeys": true,
"childProductsCount": 4,
"instanceKeyChildren": 2,
"pathFromChild": "[0]",
"pathFromRoot": "[0]",
"attributeCategories": {
"records": [{
"productAttributes": {
"records": [{
"parentProductId": "01t1I000002fuBoQAI",
"parentProductCode": "AUTOROOT",
"pathFromChild": "attributeCategories.records[0].productAttributes.records[0]",
"pathFromRoot": "attributeCategories.records[0].productAttributes.records[0]",
"userValues": "test",
"values": [{
"disabled": false,
"readonly": false
}]
"totalSize": 1
},
"id": "a1V1I0000007xJSUAY",
"Name": "Alan Health Attributes",
"Code__c": "AHA",
"displaySequence": 5
}
],
"totalSize": 1
},
"childProducts": {
"records": [{
"rootProductId": "a2f1I000000BI6JQAW",
"rootProductCode": "stolenProperty",
"customizeSectionsOpen": null,
"numberAttributes": 1,
"numberCategories": 1,
"originalIndex": 0,
"parentProductName": "Auto Root",
"pathFromRoot": "[0].childProducts.records[0]",
"attributeCategories": {
"records": [{
"productAttributes": {
"records": [{
"parentProductId": "a2f1I000000BI6JQAW",
"parentProductCode": "stolenProperty",
"originalAttributeIndex": 0,
"originalCategoryIndex": 0,
"originalProductIndex": 0,
"pathFromChild": "attributeCategories.records[0].productAttributes.records[0]",
"pathFromRoot": "childProducts.records[0].attributeCategories.records[0].productAttributes.records[0]",
"userValues": false,
"values": [...]
...
}]
"totalSize": 1
},
"id": "a1V1I0000007xJSUAY",
"Name": "Alan Health Attributes",
"Code__c": "AHA",
"displaySequence": 5
}],
"totalSize": 1
},
"childProducts": {
...
}
"Price": 80,
"productId": "01t1I000002fuBoQAI",
"Term__c": "Semi-Annual",
"PricingFormula__c": "SUM(AutoPremium__autoPremium + rentalTotal + medicalTotal + roadsideTotal + dedWaiverTotal + uninsuredMotoristPDTotal + uninsuredMotoristBITotal)",
"IsConfigurable__c": true,
"RecordTypeName__c": "Product",
"IsRecommended__c": false,
"ProductCode": "AUTOROOT",
"Name": "Auto Root",
"Id": "01t1I000002fuBoQAI",
"RawPriceData": [{
"aggregationResults": {},
"calculationResults": [{
"ID": "0",
"comprehensiveTotal": 500,
"rentalTotal": 40,
"medicalTotal": 10,
"roadsideTotal": 10,
"dedWaiverTotal": 10,
"uninsuredMotoristPDTotal": 0,
"uninsuredMotoristBITotal": 100,
"AUTO.instanceKey": "2015 Lexus LX250",
"DRIVER.FN": "Joan",
"DRIVER.LN": "Smith"
},
"ID": "1",
"comprehensiveTotal": 500,
"rentalTotal": 40,
"medicalTotal": 10,
"roadsideTotal": 10,
"dedWaiverTotal": 10,
"uninsuredMotoristPDTotal": 0,
"uninsuredMotoristBITotal": 100,
"AUTO.instanceKey": "2015 Lexus LX250",
"DRIVER.FN": "John",
"DRIVER.LN": "Smith"
},
...
]
},
{
"aggregationResults": {},
"calculationResults": [{
"ID": "4",
"comprehensiveTotal": 500,
"rentalTotal": 40,
"medicalTotal": 10,
"roadsideTotal": 10,
"dedWaiverTotal": 10,
"uninsuredMotoristPDTotal": 0,
"uninsuredMotoristBITotal": 100,
"AUTO.instanceKey": "2006 Honda Odyssey",
"DRIVER.FN": "Joan",
"DRIVER.LN": "Smith"
},
{
"ID": "5",
"comprehensiveTotal": 500,
"rentalTotal": 40,
"medicalTotal": 10,
"roadsideTotal": 10,
"dedWaiverTotal": 10,
"uninsuredMotoristPDTotal": 0,
"uninsuredMotoristBITotal": 100,
"AUTO.instanceKey": "2006 Honda Odyssey",
"DRIVER.FN": "John",
"DRIVER.LN": "Smith"
},
...
]
}
],
"CalculatedPriceData": {
"2006 Honda Odyssey": {
"ID": "4",
"comprehensiveTotal": 500,
"rentalTotal": 40,
"medicalTotal": 10,
"roadsideTotal": 10,
"dedWaiverTotal": 10,
"uninsuredMotoristPDTotal": 0,
"uninsuredMotoristBITotal": 100,
"AUTO.instanceKey": "2006 Honda Odyssey",
"DRIVER.FN": "Joan",
"DRIVER.LN": "Smith"
},
"2015 Lexus LX250": {
"ID": "0",
"comprehensiveTotal": 500,
"rentalTotal": 40,
"medicalTotal": 10,
"roadsideTotal": 10,
"dedWaiverTotal": 10,
"uninsuredMotoristPDTotal": 0,
"uninsuredMotoristBITotal": 100,
"AUTO.instanceKey": "2015 Lexus LX250",
"DRIVER.FN": "Joan",
"DRIVER.LN": "Smith"
}
},
"displaySequence": -1
}
]
},
"insuredItems": {
"DRIVER": [{
"isPrimary": false,
"instanceKey": "Joan Smith",
"LN": "Smith",
"AGE": 20,
"FN": "Joan",
"GENDER": "Female",
"FirstName": "Joan",
"LastName": "Smith",
"partyId": "a0q1I000001emNeQAI"
},
{
"isPrimary": false,
"instanceKey": "John Smith",
"LN": "Smith",
"AGE": 30,
"FN": "John",
"GENDER": "Male",
"FirstName": "John",
"LastName": "Smith",
"partyId": "a0q1I000001emNfQAI"
},
],
"AUTO": [{
"autoLicNum": "Lexus",
"autoModel": "LX250",
"autoYear": 2015,
"instanceKey": "2015 Lexus LX250",
"BodyClass": "Sedan/Saloon",
"VehicleType": "PASSENGER CAR",
"isPrimary": true
},
{
"autoLicNum": "Honda",
"autoModel": "Odyssey",
"autoYear": 2006,
"instanceKey": "2006 Honda Odyssey",
"BodyClass": "Minivan",
"VehicleType": "MULTIPURPOSE PASSENGER VEHICLE (MPV)",
"isPrimary": true
}
]
},
"accountId": "0011I00000QknfjQAB",
"opportunityId": "0061I00000AV8gBQAT"
}Il JSON all'interno del inputKey include diverse coppie chiave/valore necessarie al servizio per creare o aggiornare un preventivo.
Chiave |
Valore |
|---|---|
|
ID opportunità generato. |
|
ID account generato. |
|
Facoltativo. Data di scadenza della polizza. |
|
Data di entrata in vigore della policy. |
|
Una matrice di record che segue il modello di struttura JSON del prodotto. Verrà creata o modificata una voce preventivo radice per ogni record prodotto nella matrice. Per informazioni sulla struttura e i contenuti di un prodotto, vedere il modello di struttura JSON del prodotto. |
|
Facoltativo. La chiave |
|
Coppie chiave/valore delle voci assicurate utilizzate dal servizio per creare le voci preventivo per le voci assicurate. |
Sia che il preventivo includa una singola istanza di una voce assicurata o più voci assicurate, formattare il nodo insuredItems con una matrice di record.
"insuredItems": {
"DRIVER": [{
"isPrimary": false,
"instanceKey": null,
"additionalFields": {},
"productCode": "DRIVER",
"productId": "01t1I000002fuByQAI",
"FN": null,
"GENDER": null,
"LN": null,
"partyId": null
}],
"AUTO": [{
"isPrimary": true,
"instanceKey": null,
"additionalFields": {},
"productCode": "AUTO",
"productId": "01t1I000002fuBtQAI",
"autoBrakes": false,
"est_annual_mileage": "10001-20000",
"autoLicNum": null,
"autoModel": null,
"autoStyle": null,
"autoVIN": null,
"autoYear": ""
}]
}Per una singola istanza di un articolo assicurato che si trova direttamente sotto il prodotto radice nella gerarchia dei prodotti, è possibile utilizzare il formato in questo esempio. I record insuredItems includono le voci assicurate e i valori selezionati dall'utente per ciascuna voce. Questo JSON di input è supportato ma proviene da un rilascio precedente e non è consigliabile.
"insuredItems": {
"smallBusiness": {
"protectionClass": 3,
"yearBuilding": 2000,
"yearWiring": 2000,
"yearRoof": 2003,
"yearPlumbing": 2000,
"yearBusiness": 2002,
"businessParkingLot": "no",
"legalForm": "sole",
"busLocation": "standalone",
"busHours": 8,
"busEmployees": 24,
"bldgSprinker": "Y",
"bldgFrame": "frame",
"bldgAlarm": "none",
"ageWiring": 18,
"ageRoof": 15,
"agePlumbing": 18,
"ageBusiness": 16,
"ageBuilding": 18,
"SIC": "5451",
"SICCategory": "Food Stores"Per i nuovi preventivi, se createOpportunity è true e non viene fornito alcun opportunityId, il servizio crea un nuovo record Opportunità utilizzando il nodo JSON OpportunityDetails dal inputKey. Utilizzare il formato di input OpportunityDetails:FieldName. Di seguito è riportato un esempio di nodo OpportunityDetails.
"OpportunityDetails": {
"AccountId": "0015f00000DSFgqAAH",
"Name": "Auto Quote: Rachel Adams (2022-01-03)",
"StageName": "Qualification",
"CloseDate": "2022-01-03"
},Alternativa preTransformBundle
In alternativa, è possibile definire una trasformazione DataRaptor che mappa i dati passati nel JSON di input nel modulo necessario al servizio. Il JSON di output di questo DataRaptor è il JSON di userInputs definito nella scheda API della visualizzazione prodotto. Impostare l'opzione preTransformBundle sul nome del DataRaptor per fare in modo che il servizio utilizzi il DataRaptor.
JSON di output
Il servizio restituisce l'ID preventivo del preventivo appena creato. Restituisce anche i dettagli del preventivo se l'input returnQuote è true e l'ID opportunità se createOpportunity è true e non viene fornito alcun opportunityId.
{
"quoteDetail": {
"stmpbhins04__PrimaryRootItemId__c": "0QLR00000000e3NOAQ",
"stmpbhins04__TotalPremiumforTerm__c": 2000,
"stmpbhins04__MonthlyPremium__c": 166.66666666666666,
"stmpbhins04__StandardPremium__c": 2000,
"Id": "0Q0R00000000WplKAE",
"stmpbhins04__EndDate__c": "2022-05-04",
"stmpbhins04__EffectiveDate__c": "2021-05-05",
"stmpbhins04__Term__c": "Annual",
"Name": "Auto Root",
"OpportunityId": "006R0000002xk8QIAQ",
"Pricebook2Id": "01sR0000001GULqIAO"
},
"quoteId": "0Q0R00000000WplKAE",
"opportunityId": "006R0000002xk8QIAQ",
"error": "OK"
}