Du er her:
InsQuoteService:createUpdateQuoteFromExternal
Oppretter et tilbud eller oppdaterer et eksisterende tilbud med ny informasjon via et innkommende API-kall fra et eksternt system.
Klasse:InsQuoteService
Metode: createUpdateQuoteFromExternal
Slik fungerer det
-
Mottar JSON-objektet.
-
Bruker
sourceSystemIdentifiertil å bestemme om et eksisterende tilbud skal opprettes eller oppdateres. -
Bruker
PricebookId, som er en Prisliste med navnet Standard. -
Hvis tjenesten finner et tilbud med den gitte
sourceSystemIdentifier, oppdateres tilbudsobjektet:-
Bruker rotproduktene som er definert i
quoteLines, til å legge til, oppdatere eller slette rottilbudslinjeelementene. Tjenesten brukersourceSystemIdentifiertil å identifisere roten.Legger til postene i
quoteLinessom ikke er i Tilbud. Oppdaterer postene iquoteLinessom finnes i Tilbud. Sletter postene iquoteLinessom er i Tilbud, men ikke i quoteLines. -
For hver rot bruker tjenesten dekningene, forsikrede elementer og parter som er definert i
childLines, til å legge til, oppdatere eller slette rotdekningene, forsikrede elementer og parter. Tjenesten brukersourceSystemIdentifiertil å identifisere linjen som skal oppdateres.Legger til postene i
childLinessom ikke er i Tilbud. Oppdaterer postene ichildLinessom finnes i Tilbud. Sletter postene ichildLinessom er i Tilbud, men ikke ichildLines. -
For hver rotdekning, forsikrede artikler og parter bruker tjenesten dekningene, forsikrede artikler og parter i
childLinestil å legge til, oppdatere eller slette de respektive dekningene, forsikrede artikler og parter. Tjenesten brukersourceSystemIdentifiertil å identifisere linjen som skal oppdateres.Legger til postene i
childLinessom ikke er i Tilbud. Oppdaterer postene ichildLinessom finnes i Tilbud. Sletter postene ichildLinessom er i Tilbud, men ikke ichildLines. -
Den primære forsikringsartikkelens
QuoteLineItemog underordnede forsikringspartensQuoteLineItemhar en mange: mange-relasjon. Disse relasjonene lagres i objektet Tilbudselementrelasjon (QuoteItemRelationship__c). Hvis enQuoteLineItemfor forsikringselementer har relasjoner til flereQuoteLineItemfor forsikringsdeltakere, bruker tjenestenPrimaryChildLineItemId__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ærdriver. Lexus 250
QuoteLineItemharPrimaryChildLineItemId__csom peker til Joan SmithsQuoteLineItem. -
Dersom to forsikringselementer har samme underordnede, må hvert forsikringselement ha en oppføring i de respektive
childLinesfor den underordnede. For begge oppføringene må de ha sammesourceSystemIdentifier.Både Lexus 250 og Honda Odyssey har for eksempel Bob Jones som fører. Lexus 250 har Bob Jones med
sourceSystemIdentifiersom BobJones i sinchildLines. Honda Odyssey har en Bob Jones medsourceSystemIdentifiersom BobJones i sinchildLines. -
ParentItemId__c og ParentItemId2__c for
childLinespeker til rotens Id. -
Barnesikringens
SubParentItemId__cpeker til den primære forsikringsartikkelen.
-
-
Hvis tjenesten ikke finner et tilbud med den gitte
sourceSystemIdentifier, oppretter den tilbudsobjektet som inkluderer linjer, som forklart her:-
Bruker rotproduktene som er definert i
quoteLines, til å opprette rottilbudslinjeelementene. -
For hver rot bruker du dekningene, forsikrede elementer og parter som er definert i
childLines, til å opprette rotdekningene, forsikrede elementer og parter. -
For hver rotdekning, forsikrede artikler og parter bruker de dekninger, forsikrede artikler og parter som er definert i deres
childLines, til å opprette sine dekninger, forsikrede artikler og parter. -
Den primære forsikringsartikkelens
QuoteLineItemog underordnede forsikringspartensQuoteLineItemhar en mange: mange-relasjon. Disse relasjonene lagres i objektet Tilbudselementrelasjon (QuoteItemRelationship__c). Hvis en forsikret artikkel-QuoteLineItemhar relasjoner til flere forsikrede partsQuoteLineItem-poster, bruker tjenestenPrimaryChildLineItemId__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ærdriver. Lexus 250
QuoteLineItemharPrimaryChildLineItemId__csom peker til Joan SmithsQuoteLineItem. -
Dersom to forsikringselementer har samme underordnede, må hver forsikringselement være oppført i den respektive
childLinesfor den underordnede. For begge oppføringene må de ha sammesourceSystemIdentifier.Både Lexus 250 og Honda Odyssey har for eksempel Bob Jones som fører. Lexus 250 har Bob Jones med
sourceSystemIdentifiersom BobJones ichildLines. Honda Odyssey har Bob Jones medsourceSystemIdentifiersom BobJones i sinchildLines. -
ParentItemId__cogParentItemId2__cavchildLinespeker til rotens ID. -
Barnesikringens
SubParentItemId__cpeker til den primære forsikringsartikkelen.
-
-
Returnerer en
Quote.Idog listen over feil som oppstår i JSON-koden.
Inndata
Inndata |
Beskrivelse |
|---|---|
|
Inneholder all informasjon om opprettelse av tilbudet. Hvis du vil ha mer informasjon om nøkkel-verdi-parene, kan du se JSON-nodebeskrivelse. |
Beskrivelse av JSON-noder |
|
|
En liste over poster. Tjenesten behandler bare ett tilbud på et gitt tidspunkt. |
tilbudsnoder |
|
|
Obligatorisk. Id'et for salgsmuligheden. |
|
Obligatorisk. Unik postidentifikator fra et system utenfor Salesforce for å identifisere hvilket tilbud som skal oppdateres. |
|
API-navnet på tilbudsposttypen. |
|
Nøkkel-verdi-paret for andre |
|
Listen over rotprodukter. |
quoteLines-noder |
|
|
Obligatorisk. Unik postidentifikator fra et system utenfor Salesforce for å identifisere hvilke rot QuoteLineItems som skal legges til, oppdateres eller slettes i Salesforce. |
|
Forekomstnøkkel i |
|
Obligatorisk. Rotproduktkode. |
|
Obligatorisk. Produkt- eller spesifikasjonsposttype. |
|
De valgte produktattributtene. |
|
Nøkkel-verdi-paret for andre |
|
Rotproduktdekninger, forsikrede artikler og forsikrede parter. |
childLines-noder |
|
|
Obligatorisk. Unik postidentifikator fra et system utenfor Salesforce for å identifisere hvilke rotdekninger, forsikrede artikler og forsikrede parter som skal legges til, oppdateres eller slettes i Salesforce. |
|
Identifiserer flere forekomster av samme spesifikasjon. Forekomstnøkkel i |
|
Obligatorisk. Produktkoden for rotdekninger, forsikrede artikler og forsikrede parter. |
|
Obligatorisk. Produkt- eller spesifikasjonsposttype. |
|
De valgte produktattributtene. |
|
Nøkkel-verdi-paret for andre |
|
Underordnede dekninger, forsikrede artikler og forsikrede parter. |
childLines-noder |
|
|
Obligatorisk. Unik postidentifikator fra et system utenfor Salesforce for å identifisere hvilke underordnede dekninger, forsikrede artikler og forsikrede parter som skal legges til, oppdateres eller slettes i Salesforce. Dersom to forsikringselementer har samme underordnede, må hver forsikringselement være oppført i den respektive |
|
Identifiserer flere forekomster av samme spesifikasjon. Forekomstnøkkel i |
|
Obligatorisk. Produktkoden for underordnede dekninger, forsikrede artikler og produkter fra forsikrede parter. |
|
Obligatorisk. Produkt- eller spesifikasjonsposttype. |
|
De valgte produktattributtene. |
|
Nøkkel-verdi-paret for andre |
Inndata-JSON
Her er formatet på JSON-koden for inndata:
{
"quote":{
"records":[
{
"opportunityId":"Opportunity.Id",
"sourceSystemIdentifier":"Id",
"sourceSystem":"Name of system quote was created",
"Name":"Quote Name",
"type":"Quote.RecordType.DeveloperName",
"effectiveDate":"Quote.EffectiveDate__c",
"endDate":"Quote.EndDate__c",
"price":Quote.StandardPremium__c,
"term":"Quote.Term__c",
"status":"Quote.Status",
"additionalFields":{
"Quote.fieldAPIName":"value"
},
"quoteLines":{
"records":[
{
"sourceSystemIdentifier":"Id",
"lineRecordType":"Product2",
"instanceKey":"name",
"productCode":"Product2.ProductCode",
"productName":"Product2.Name",
"attributeCategories":{
"records":[
{
"productAttributes":{
"records":[
{
"code":"attribute code",
"userValues":"selected value"
}
]
}
}
]
},
"additionalFields":{
"QuoteLineItem.fieldAPIName":"value"
},
"childLines":{
"records":[
{
"sourceSystemIdentifier":"Id",
"lineRecordType":"Product2.RecordType.DeveloperName",
"productCode":"Product2.ProductCode",
"productName":"Product2.Name",
"instanceKey":"instance name",
"price":QuoteLineItem.UnitPrice,
"taxAmount":QuoteLineItem.TaxAmount__c,
"feeAmount":QuoteLineItem.FeeAmount__c,
"additionalFields":{
"QuoteLineItem.fieldAPIName":"value"
},
"attributeCategories":{
"records":[
{
"productAttributes":{
"records":[
{
"code":"attribute code",
"userValues":"selected value"
}
]
}
}
]
},
"childLines":{
"records":[
{
"sourceSystemIdentifier":"Id",7e54f959544f",
"lineRecordType":"InsuredPartySpec",
"productCode":"Product2.ProductCode",
"productName":"Product2.Name",
"instanceKey":"instance name",
"price":QuoteLineItem.UnitPrice,
"taxAmount":QuoteLineItem.TaxAmount__c,
"feeAmount":QuoteLineItem.FeeAmount__c,
"isPrimaryChild":true,
"additionalFields":{
"QuoteLineItem.fieldAPIName":"value"
},
"attributeCategories":{
"records":[
{
"productAttributes":{
"records":[
{
"code":"attribute code",
"userValues":"selected value"
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}Her er et eksempel på JSON-koden for inndata:
{
"quote": {
"records": [
{
"opportunityId": "0065w0000286hhNAAQ",
"sourceSystemIdentifier": "af3c0072-9018-43df-83d3-3a5f254d5b1e",
"sourceSystem": "Salesforce",
"Name": "Auto Root (External)",
"type": "LargeGroupQuote",
"effectiveDate": "06/01/2021",
"endDate": "12/01/2021",
"price": 10000,
"term": "Semi-Annual",
"status": "Submitted",
"quoteLines": {
"records": [
{
"sourceSystemIdentifier": "49553393-120a-4777-b65a-8167c386a0fb",
"instanceKey": "Auto Root",
"productCode": "AUTOROOT",
"productName": "Auto Root",
"attributeCategories": {
"records": [
{
"productAttributes": {
"records": [
{
"code": "atLimitUM",
"userValues": 200
}
]
}
}
]
},
"additionalFields": {
"instest12__AdjustmentComments__c": "test comment"
},
"childLines": {
"records": [
{
"sourceSystemIdentifier": "5a8d1b04-c34c-6a48-42c8-ab08be9868e1",
"lineRecordType": "InsuredItemSpec",
"Name": "Auto",
"productName": "Auto",
"productCode": "AUTO",
"instanceKey": "2010 Honda Odyssey",
"price": 111,
"taxAmount": 5,
"feeAmount": 21,
"additionalFields": {
"instest12__AdjustmentComments__c": "test comment"
},
"attributeCategories": {
"records": [
{
"productAttributes": {
"records": [
{
"code": "autoYear",
"userValues": 2010
},
{
"code": "carValue",
"userValues": 55000
},
{
"code": "est_annual_mileage",
"userValues": 2000
},
{
"code": "autoMake",
"userValues": "Honda"
},
{
"code": "autoModel",
"userValues": "Odyssey"
}
]
}
}
]
},
"childLines": {
"records": [
{
"sourceSystemIdentifier": "6400140b-3e97-32c4-bdfd-7e54f959544f",
"lineRecordType": "InsuredPartySpec",
"Name": "Driver",
"productName": "Driver",
"productCode": "DRIVER",
"instanceKey": "Bob Jones",
"price": 112,
"taxAmount": 6,
"feeAmount": 22,
"isPrimaryChild": true,
"additionalFields": {
"instest12__AdjustmentComments__c": "test comment"
},
"attributeCategories": {
"records": [
{
"productAttributes": {
"records": [
{
"code": "AGE",
"userValues": 24
},
{
"code": "FN",
"userValues": "Bob"
},
{
"code": "LN",
"userValues": "Jones"
},
{
"code": "GENDER",
"userValues": "Male"
}
]
}
}
]
}
},
{
"sourceSystemIdentifier": "38c4fe27-7b85-77ce-c9e2-1f7f22889982",
"lineRecordType": "InsuredPartySpec",
"Name": "Driver",
"productName": "Driver",
"productCode": "DRIVER",
"instanceKey": "Joan Smith",
"price": 113,
"taxAmount": 7,
"feeAmount": 23,
"attributeCategories": {
"records": [
{
"productAttributes": {
"records": [
{
"code": "AGE",
"userValues": 25
},
{
"code": "FN",
"userValues": "Joan"
},
{
"code": "LN",
"userValues": "Smith"
},
{
"code": "GENDER",
"userValues": "Female"
}
]
}
}
]
}
},
{
"sourceSystemIdentifier": "33b74fa2-fba5-44b4-317f-021dae689a9f",
"lineRecordType": "CoverageSpec",
"Name": "Collision Deductible Waiver",
"productName": "Collision Deductible Waiver",
"productCode": "COL_WAIVER",
"instanceKey": "2010 Honda Odyssey_COL_WAIVER",
"price": 114,
"taxAmount": 8,
"feeAmount": 24
},
{
"sourceSystemIdentifier": "c4d5ac35-99b1-047d-cebe-05b74861463e",
"lineRecordType": "CoverageSpec",
"Name": "Uninsured/Underinsured Motorist BI",
"productName": "Uninsured/Underinsured Motorist BI",
"productCode": "UNINSURED_COVERAGE",
"instanceKey": "2010 Honda Odyssey_UNINSURED_COVERAGE",
"price": 115,
"taxAmount": 9,
"feeAmount": 25,
"attributeCategories": {
"records": [
{
"productAttributes": {
"records": [
{
"code": "AbaThrpyOutptInst_covered_inn",
"userValues": 1.3
},
{
"code": "UNINSURED",
"userValues": "No coverage"
}
]
}
}
]
}
}
]
}
},
{
"sourceSystemIdentifier": "60699eaf-956a-4381-8ef2-5a704c85517f",
"lineRecordType": "InsuredItemSpec",
"Name": "Auto",
"productName": "Auto",
"productCode": "AUTO",
"instanceKey": "2011 Toyota Camry",
"price": 116,
"taxAmount": 10,
"feeAmount": 26,
"attributeCategories": {
"records": [
{
"productAttributes": {
"records": [
{
"code": "autoYear",
"userValues": 2011
},
{
"code": "carValue",
"userValues": 55500
},
{
"code": "est_annual_mileage",
"userValues": 2200
},
{
"code": "autoMake",
"userValues": "Toyota"
},
{
"code": "autoModel",
"userValues": "Camry"
}
]
}
}
]
},
"childLines": {
"records": [
{
"sourceSystemIdentifier": "6400140b-3e97-32c4-bdfd-7e54f959544f",
"lineRecordType": "InsuredPartySpec",
"Name": "Driver",
"productName": "Driver",
"productCode": "DRIVER",
"instanceKey": "Bob Jones",
"price": 112,
"taxAmount": 6,
"feeAmount": 22,
"isPrimaryChild": true,
"attributeCategories": {
"records": [
{
"productAttributes": {
"records": [
{
"code": "AGE",
"userValues": 24
},
{
"code": "FN",
"userValues": "Bob"
},
{
"code": "LN",
"userValues": "Jones"
},
{
"code": "GENDER",
"userValues": "Male"
}
]
}
}
]
}
},
{
"sourceSystemIdentifier": "8c450354-2053-444c-9c9e-36a66e6f5582",
"lineRecordType": "CoverageSpec",
"Name": "Collision Deductible Waiver",
"productName": "Collision Deductible Waiver",
"productCode": "COL_WAIVER",
"instanceKey": "2011 Toyota Camry_COL_WAIVER",
"price": 117,
"taxAmount": 11,
"feeAmount": 27
},
{
"sourceSystemIdentifier": "7aaeee37-05ce-4926-accb-dff2ee85587f",
"lineRecordType": "CoverageSpec",
"Name": "Roadside",
"productName": "Roadside",
"productCode": "ROADSIDE_COVERAGE",
"instanceKey": "2011 Toyota Camry_ROADSIDE_COVERAGE",
"price": 118,
"taxAmount": 12,
"feeAmount": 28,
"attributeCategories": {
"records": [
{
"productAttributes": {
"records": [
{
"code": "ROADSIDE",
"userValues": 1
}
]
}
}
]
}
}
]
}
}
]
}
}
]
},
"additionalFields": {
"instest12__MonthlyPremium__c": 222
}
}
]
}
}Utdata-JSON
Returnerer Quote.Id av opprettet eller oppdatert tilbud i utdata JSON og listen over feil som oppstår.
Her er formatet på JSON-koden for utdata:
{
"errors":[
"error1",
"error2",
"error3"
],
"quoteId":"Quote.Id"
}Her er et eksempel på JSON-koden for utdata:
{
"errors":[
"Failed to create/update QuoteLineItem Honda Odyssey.Required fields are missing: [PricebookEntryId, Product2Id]; ",
"Failed to create/update QuoteLineItem Toyota Camry.Required fields are missing: [PricebookEntryId, Product2Id]; ",
"Failed to create/update QuoteLineItem Patty Desc.Required fields are missing: [PricebookEntryId, Product2Id]; "
],
"quoteId":"0Q05w0000027aH5CAI"
}