Du er her:
InsQuoteService:createUpdateQuote
Bruk denne tjenesten til å opprette et tilbud for nye virksomheter, oppdatere et eksisterende tilbud med ny informasjon eller opprette et anbefalingstilbud. For oppdateringer må quoteId av tilbudet som skal oppdateres, inkluderes i alternativene for eksterne enheter.
Før denne tjenesten kjører utfører systemet en gjestebrukersjekk.
Denne tjenesten kan brukes av gjestebrukere. En gjestebruker som kjører en OmniScript-, Integrasjonsprosedyre- eller grensesnittoppgave, kan fortsette. Denne tjenesten kjøres. quoteId og opportunityId er imidlertid kryptert i disse tilfellene, så gjestebrukere kan ikke se disse ID-ene.
Bruk tjenesten InsQuoteService:createUpdateQuote til å oppdatere tilbuds- og tilbudslinjeelementene i stedet for å bruke Omnistudio-datatilordneren.
Slik virker det
-
Tjenesten søker i inndata-JSON-koden for
inputKey.inputKey-noden inneholder informasjonen som tjenesten trenger for å opprette eller oppdatere et tilbud. Informasjonen denne tjenesten trenger, inkluderer følgende:-
opportunityId -
endDate(valgfritt) -
effectiveDate -
productConfigurationDetailposter -
instanceKeyKreves for å identifisere flere forekomster av samme spesifikasjon
-
insuredItemsnodeI denne noden forventer tjenesten en liste over spesifikasjoner for forsikrede artikler og spesifikasjoner for forsikrede parter, ved å bruke hver spesifikasjons
productCodesom nøkkel. Term__cBrukes til å oppdatere Term__c-feltet i Tilbud-feltet.
-
-
Bruker informasjonen fra inndata-JSON-filen til å opprette tilbudet.
-
Returnerer en tilbuds-ID i JSON-koden for utdata.
-
Oppretter et Tilbud-objekt som inkluderer disse linjene:
-
Bruker rotproduktene som er definert i
productConfigurationDetail, til å opprette eller oppdatere rottilbudslinjeelementene. -
Når du oppdaterer et eksisterende tilbud, legges det til poster i
productConfigurationDetailsom ennå ikke er i tilbudet, og de som allerede er i tilbudet, oppdateres. -
Bruker spesifikasjoner for forsikrede artikler, spesifikasjoner for forsikrede parter og dekningsspesifikasjoner som tilbudslinjeelementer:
ParentItemId__c = rootItem.Id. -
Det primære forsikringselementets tilbudslinje og tilbudslinjer for underordnede forsikrede parter har en many:many-relasjon. Disse relasjonene lagres i objektet Tilbudselementrelasjon. Hvis en tilbudslinje for et forsikret element har relasjoner til flere tilbudslinjer for forsikrede, brukes
PrimaryChildLineitemId__c-feltet til å bestemme hvilken av disse relasjonene som er den primære.Både Joan Smith og John Smith er for eksempel drivere av Lexus 250. Joan Smith er angitt som Primær-driver. Lexus 250 tilbudslinje har
PrimaryChildLineItemId__csom peker til Joan Smiths tilbudslinje. Alle tilbudslinjeelementersParentItemId2__cpeker tilrootItem.Id.Underordnet dekningsSubParentItemId__cpeker til den primære forsikringsartikkelen. Feltene for tilbudslinje for forsikret artikkel ogItemName__cfor tilbudslinje for forsikret part lagres med denne artikkelensinstanceKey. -
Det primære forsikringselementets tilbudslinje inkluderer prisen.
-
-
Hvis
createOpportunityertrueog ingenopportunityIdoppgis for nye tilbud, opprettes det en Salgsmulighet-post med JSON-nodenOpportunityDetailsfrainputKey. -
Hvis
calculateCommissionertrue, kallesInsCommissionService.processQuoteCommission, som klargjør inndata forInsCommissionService.calculate. Når beregningstjenesten har behandlet inndataene, lagrer den beregnede kommisjonsverdien iQuote.CommissionAmount__c.
Alle brukere som kaller opp InsQuoteService:createUpdateQuote, må ha Lese-tillatelse for alle felt i Tilbudsdetalj-feltet hvis feltsettet er lagt til i Tilbudslinje-objektet.
Hvis feltet Tilbudsdetalj ikke legges til i Tilbudslinjeelement-objektet, er alle felt, inkludert tilpassede felt, lesbare for brukere.
Tilleggskostnader
Slik fungerer denne tjenesten med tillegg (avgifter og gebyrer):
-
Hvis
taxesAndFees-feltet er angitt i en JSON-post, beholdes en tilhørendeQuotePricingAdjustment__c-post for hvert element itaxesAndFees-listen. -
Hvis
taxAmount-feltet angis i en JSON-post, angisTaxAmount__c-feltet til verdien itaxAmount-feltet i den opprettedeQuoteLineItem. -
Hvis
feeAmount-feltet angis i en JSON-post, angisFeeAmount__c-feltet til verdien ifeeAmount-feltet i den opprettedeQuoteLineItem.
Legge til flere felt i tilbudslinjeelementer
Hvis du trenger flere felt som skrives til tilbudslinjeelementet av denne tjenesten, må du kalle opp tjenesten InsProductJSONService:trimOffAttributeCategory først.
Flyten for å få dette til å fungere i en OmniScript- eller integrasjonsprosedyre er:
-
Produktkonfigurasjonstrinn
-
InsProductJSONService:trimOffAttributeCategory-tjenestekall med selectedValueAsObject satt til true
-
DataRaptor-transformasjon som kan inkludere tilordning mellom attributter og dine ekstra felt i Tilbudslinjeelement-objektet
-
InsQuoteService:createUpdateQuote-tjenestekall
Eksterne alternativer
Alternativ |
Beskrivelse |
|---|---|
|
Hvis dette alternativet er satt til Dette alternativet støtter overordnet > underordnet og overordnet > underordnet > barnebarnforsikrede elementrelasjoner. |
|
Obligatorisk. En JSON-nøkkel som denne tjenesten trekker ut nødvendig informasjon fra for å opprette eller oppdatere et tilbud. Ikke bruk % til å omslutte verdien i denne nøkkelen. Denne nøkkelen representerer en JSON-node, ikke en variabel. Fordi denne nøkkelen representerer en JSON-node og ikke en bane, bør du ikke bruke banenotasjon for parent:childnode:childnode. For å komme til den riktige databasen skriver du den inn i feltet Send JSON Path i delen Send/Response Transformation når du legger til dette nøkkel/verdi-paret i et OmniScript-trinn. |
|
Når det angis til Bruk dette alternativet til å opprette et stort tilbud for flere forekomster via flere serverkall, der det nye settet av tilbudslinjeelementer for forekomstene settes inn i det eksisterende tilbudet i hvert kall. |
|
Valgfritt. Id'et for et eksisterende tilbud, som denne tjeneste opdaterer, baseret på nye eller opdaterede oplysninger. Brukes når tjenesten må oppdatere et eksisterende tilbud. |
|
Valgfritt. Et boolsk flagg for å angi om tilbudet er et tilbud med flere røtter. Standard er |
|
Når det angis til |
|
Når det angis til |
|
Obligatorisk. Navnet på prislisten som er knyttet til produktspesifikasjonen. Salesforce krever at produktene som brukes i tilbudslinjeelementer, har en prislisteoppføring. |
|
Når det angis til Når det angis til Merk
Hvis du angir dette alternativet til false, må du også legge til en linje i I |
|
Når det angis til |
|
Når det angis til |
|
Når det angis til Når det angis til Merk
Hvis du angir dette alternativet til sann, må du også skrive inn minst én av produsent- eller produksjonskodeverdiene: |
|
Valgfritt. Foredler-IDen, det vil si produsenten som ble brukt til å hente |
|
Valgfritt. Produktionskode-id'et. |
|
Valgfritt. Produksjonskodenavnet som er overført til InsCommissionService.calculate-tjenesten. Hvis du ikke skriver inn |
runEligibilityRequiredDefaultSelectedRules
|
Valgfritt. Standardverdier er Bestemmer om berettigelsesregler og Standardvalgte-regler skal kjøres. |
runRelationshipRules
|
Valgfritt. Standardverdier er Bestemmer om relasjonsregler skal kjøres. |
runSelectedValivationRules
|
Valgfritt. Standardverdier er Bestemmer om Velg valideringsregler skal kjøres. |
Inndata-JSON
Denne tjenesten ser etter verdien av inputKey. Gå til API-fanen i produktspesifikasjonen for å finne inndata-JSON-koden du trenger for denne tjenesten.
I dette eksemplet er 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-koden i inputKey inneholder flere nøkkel/verdi-par som tjenesten trenger for å opprette eller oppdatere et tilbud.
Nøkkel |
Verdi |
|---|---|
|
Den genererte salgsmulighets-ID-en. |
|
Den genererte konto-ID-en. |
|
Valgfritt. Datoen da policyen utløper. |
|
Datoen da policyen trer i kraft. |
|
En matrise med poster som følger produktets JSON-strukturmodell. Det opprettes eller endres et rottilbudslinjeelement for hver produktpost i matrisen. Hvis du vil vite mer om strukturen og innholdet i et produkt, kan du se JSON-modellen for produktets struktur. |
|
Valgfritt.
|
|
Nøkkel/verdi-parene for de forsikrede artiklene som tjenesten bruker til å opprette tilbudslinjeelementene for forsikrede artikler. |
Enten tilbudet inkluderer en enkelt forekomst av et forsikret element eller flere forsikrede elementer, formaterer du insuredItems med en matrise med poster.
"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 av et forsikret element som er direkte under rotproduktet i produkthierarkiet, kan du bruke formatet i dette eksempelet. insuredItems her inkluderer de forsikrede elementene og verdiene brukeren valgte for hver av dem. Vi støtter denne inndata-JSON-koden, men den er fra en tidligere utgivelse, og vi anbefaler den 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"Hvis createOpportunity er true og ingen opportunityId oppgis for nye tilbud, oppretter tjenesten en ny Salgsmulighet-post ved bruk av JSON-noden OpportunityDetails fra inputKey. Bruk inndataformatet OpportunityDetails:FieldName. Her er et eksempel på en OpportunityDetails-node.
"OpportunityDetails": {
"AccountId": "0015f00000DSFgqAAH",
"Name": "Auto Quote: Rachel Adams (2022-01-03)",
"StageName": "Qualification",
"CloseDate": "2022-01-03"
},preTransformBundle-alternativ
Du kan også definere en DataRaptor-transformasjon som tilordner dataene som sendes til inndata-JSON-filen, til skjemaet tjenesten trenger. DataRaptors utdata-JSON er userInputs JSON som er definert i produktvisningens API-fane. Angi preTransformBundle-alternativet til navnet på DataRaptor for å la tjenesten bruke DataRaptor.
Utdata-JSON
Tjenesten returnerer tilbuds-ID-en til det nylig opprettede tilbudet. Det returnerer også tilbudsdetaljer hvis returnQuote er true, og salgsmulighets-ID-en hvis createOpportunity er true og ingen opportunityId oppgis.
{
"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"
}