breadcrumbDescription
InsQuoteService:createUpdateQuote
Brug denne tjeneste til at oprette et tilbud til nye forretninger, opdatere et eksisterende tilbud med nye oplysninger eller oprette et anbefalings tilbud. For opdateringer skal quoteId for det tilbud, der skal opdateres, medtages i fjernindstillingerne.
Før denne tjeneste køres, kører systemet en gæstebrugertjek.
Denne tjeneste kan bruges af gæstebrugere. En gæstebruger, der kører en OmniScript-, integrationsprocedure- eller brugergrænsefladeopgave, vil kunne fortsætte. Denne tjeneste vil køre. Men i disse tilfælde er quoteId og opportunityId krypteret, så gæstebrugere ikke kan se disse id'er.
Brug InsQuoteService:createUpdateQuote-tjenesten til at opdatere tilbuds- og tilbudslinjevarer i stedet for at bruge Omnistudio Data Mapper.
Sådan fungerer det
-
Tjenesten søger i input-JSON for
inputKey.inputKeyindeholder de oplysninger, som tjenesten har brug for for at oprette eller opdatere et tilbud. De oplysninger, denne tjeneste kræver, inkluderer:-
opportunityId -
endDate(valgfrit) -
effectiveDate -
productConfigurationDetailregistreringer -
instanceKeyKrævet for at identificere flere forekomster af den samme specifikation
-
insuredItemsnodeI denne node forventer tjenesten en liste over specifikationer for forsikrede elementer og specifikationer for forsikrede parter ved brug af hver specifikations
productCodesom en nøgle. Term__cBruges til at opdatere feltet Term__c i Tilbud.
-
-
Bruger oplysningerne fra input-JSON til at oprette tilbuddet.
-
Returnerer et tilbuds-id i output-JSON.
-
Opretter et tilbudsobjekt, der inkluderer disse linjevarer:
-
Bruger de rodprodukter, der er defineret i
productConfigurationDetailtil at oprette eller opdatere rodtilbudslinjevarer. -
Ved opdatering af et eksisterende tilbud tilføjes registreringer i
productConfigurationDetail, der endnu ikke er i tilbuddet, og dem, der allerede er i tilbuddet, opdateres. -
Bruger specifikationer for forsikrede elementer, specifikationer for forsikrede parter og dækningsspecifikationer som tilbudslinjevarer:
ParentItemId__c = rootItem.Id. -
Det primære forsikrede elements tilbudslinjevarer og underordnede forsikrede parts tilbudslinjer har en mange:mange-relation. Disse relationer gemmes i objektet Tilbudselementrelation. Hvis en tilbudslinje for en forsikret vare har relationer til flere tilbudslinjer for en forsikret part, bruges
PrimaryChildLineitemId__ctil at bestemme, hvilken af disse relationer der er den primære.F.eks. er både Joan Smith og John Smith drivere af Lexus 250. Joan Smith er angivet som den primære driver. Lexus 250 tilbudslinjevarer har
PrimaryChildLineItemId__c, der peger på Joan Smiths tilbudslinjevarer. Alle tilbudslinjeelementersParentItemId2__cpeger pårootItem.Id.BørneforsikringensSubParentItemId__cpeger på den primære forsikrede vare. FelterneItemName__cfor den forsikrede vares tilbudslinjevarer og den forsikrede parts tilbudslinjevarer gemmes med denne varesinstanceKey. -
Det primære forsikrede elements tilbudslinjevare inkluderer prisen.
-
-
Hvis
createOpportunityertrue, og der ikke angives nogenopportunityIdfor nye tilbud, oprettes der en salgsmulighedsregistrering ved brug afOpportunityDetailsJSON-noden frainputKey. -
Hvis
calculateCommissionertrue, kaldesInsCommissionService.processQuoteCommission, som forbereder inputtet forInsCommissionService.calculate. Når beregningstjenesten har behandlet input, gemmer den den beregnede kommissionsværdi iQuote.CommissionAmount__c.
Alle brugere, der kalder InsQuoteService:createUpdateQuote, skal have tilladelsen Læs for alle felter i feltsættet Tilbudsdetaljer, hvis feltsættet føjes til objektet Tilbudslinjevare.
Hvis feltsættet Tilbudsdetaljer ikke føjes til objektet Tilbudslinjevare, er alle felter, herunder tilpassede felter, læsbare for brugere.
Supplerende gebyrer
Sådan fungerer denne tjeneste med merpriser (skatter og gebyrer):
-
Hvis feltet
taxesAndFeeser angivet på en JSON-registrering, bevares der en tilsvarendeQuotePricingAdjustment__cfor hvert element påtaxesAndFees. -
Hvis
taxAmount-feltet er angivet på en JSON-registrering, indstillesTaxAmount__c-feltet til værdien aftaxAmount-feltet på den oprettedeQuoteLineItem. -
Hvis
feeAmount-feltet er angivet på en JSON-registrering, indstillesFeeAmount__c-feltet til værdien affeeAmount-feltet på den oprettedeQuoteLineItem.
Tilføjelse af yderligere felter til tilbudslinjevarer
Hvis du har brug for yderligere felter skrevet til tilbudslinjevaren af denne tjeneste, skal du først kalde InsProductJSONService:trimOffAttributeCategory-tjenesten.
Forløbet til at få dette til at fungere i en OmniScript- eller integrationsprocedure er:
-
Produktkonfigurationstrin
-
InsProductJSONService:trimOffAttributeCategory-servicekald med selectedValueAsObject indstillet til true
-
DataRaptor-transformation, der kan inkludere tilknytning mellem attributter og dine yderligere felter i objektet Tilbudslinjevare
-
InsQuoteService:createUpdateQuote-serviceopkald
Fjernindstillinger
Indstilling |
Beskrivelse |
|---|---|
|
Hvis denne indstilling er indstillet til Denne indstilling understøtter overordnede > underordnede og overordnede > underordnede > underunderordnede forsikrede elementrelationer. |
|
Påkrævet. En JSON-nøgle, som denne tjeneste henter de nødvendige oplysninger fra for at oprette eller opdatere et tilbud. Brug ikke % til at omgive værdien af denne nøgle. Denne nøgle repræsenterer en JSON-node, ikke en variabel. Da denne nøgle repræsenterer en JSON-node og ikke en sti, skal du ikke bruge parent:childnode:childnode-stinotation. For at komme til den rigtige datasti skal du indtaste den i feltet Send JSON-sti i afsnittet Send/svar-transformation, når du føjer dette nøgle-/værdipar til et OmniScript-trin. |
|
Når den er indstillet til Brug denne indstilling til at oprette et stort tilbud med flere forekomster gennem flere serverkald, hvor det nye sæt tilbudslinjevarer for forekomsterne indsættes i det eksisterende tilbud i hvert kald. |
|
Valgfrit. Id'et for et eksisterende tilbud, som denne tjeneste opdaterer, baseret på nye eller opdaterede oplysninger. Bruges, når tjenesten har brug for at opdatere et eksisterende tilbud. |
|
Valgfrit. Et boolesk flag til at angive, om tilbuddet er et tilbud med flere rod. Standarden er |
|
Når den er indstillet til |
|
Når den er indstillet til |
|
Påkrævet. Navnet på den prisliste, der er knyttet til produktspecifikationen. Salesforce kræver, at de produkter, der bruges i tilbudslinjevarer, har en prislisteoplysning. |
|
Når den er indstillet til Når den er indstillet til Bemærk
Hvis du indstiller denne indstilling til falsk, skal du også føje en kurve til skabelonen I |
|
Hvis den er indstillet til |
|
Når den er indstillet til |
|
Når den er indstillet til Når den er indstillet til Bemærk
Hvis du indstiller denne indstilling til true, skal du også angive mindst en af producent- eller produktionskodeværdierne: |
|
Valgfrit. Forarbejdningsproducent-id, dvs. den producent, der blev brugt til at hente |
|
Valgfrit. Produktionskode-id. |
|
Valgfrit. Produktionskodenavnet, der blev overført til InsCommissionService.calculate-tjenesten. Hvis du ikke indtaster |
runEligibilityRequiredDefaultSelectedRules
|
Valgfrit. Standardværdierne er Bestemmer, om reglerne Berettigelse og Standardvalgte køres. |
runRelationshipRules
|
Valgfrit. Standardværdierne er Bestemmer, om relationsregler skal køres. |
runSelectedValivationRules
|
Valgfrit. Standardværdierne er Bestemmer, om Vælg valideringsregler skal køres. |
Input JSON
Denne tjeneste søger efter værdien af inputKey. Gå til fanen API på produktspecifikationen for at finde den input-JSON, du har brug for til denne tjeneste.
I dette eksempel 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"
}JSON i inputKey indeholder flere nøgle-/værdipar, som tjenesten har brug for for at oprette eller opdatere et tilbud.
Nøgle |
Værdi |
|---|---|
|
Det genererede salgsmuligheds-id. |
|
Det genererede konto-id. |
|
Valgfrit. Den dato, hvor politikken udløber. |
|
Den dato, hvor politikken træder i kraft. |
|
En opstilling af registreringer, der følger produktets JSON-strukturmodel. Der oprettes eller redigeres en rod tilbudslinjevare for hver produktregistrering i matrikset. Hvis du vil vide mere om strukturen og indholdet af et produkt, kan du se Produkts JSON-strukturmodel. |
|
Valgfrit.
|
|
Nøgle-/værdiparret for de forsikrede elementer, som tjenesten bruger til at oprette tilbudslinjevarer for forsikrede elementer. |
Uanset om dit tilbud omfatter en enkelt forekomst af en forsikret vare eller flere forsikrede varer, skal du formatere insuredItems med en opstilling af registreringer.
"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": ""
}]
}For en enkelt forekomst af et forsikret element, der er direkte under rodproduktet i produkthierarkiet, kan du bruge formatet i dette eksempel. insuredItems her inkluderer de forsikrede varer og de værdier, brugeren valgte for hver af dem. Vi understøtter dette input-JSON, men det er fra en tidligere version, og vi anbefaler det ikke.
"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"For nye tilbud, hvis createOpportunity er true, og der ikke angives nogen opportunityId, opretter tjenesten en ny salgsmulighedsregistrering ved brug af OpportunityDetails JSON-noden fra inputKey. Brug inputformatet OpportunityDetails:FieldName. Her er et eksempel på en OpportunityDetails.
"OpportunityDetails": {
"AccountId": "0015f00000DSFgqAAH",
"Name": "Auto Quote: Rachel Adams (2022-01-03)",
"StageName": "Qualification",
"CloseDate": "2022-01-03"
},preTransformBundle Alternative
Alternativt kan du definere en DataRaptor-transformation, der knytter de data, der overføres til input-JSON, til den form, som tjenesten har brug for. Denne DataRaptors output JSON er den userInputs JSON, der er defineret på produktvisningens API-fane. Indstil indstillingen preTransformBundle til navnet på DataRaptor for at få tjenesten til at bruge DataRaptor.
Output JSON
Tjenesten returnerer tilbuds-id'et for det netop oprettede tilbud. Det returnerer også tilbudsdetaljer, hvis returnQuote-inputtet er true, og salgsmuligheds-id'et, hvis createOpportunity er true, og der ikke angives nogen 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"
}