Du är här:
InsQuoteService:createUpdateQuoteFromExternal
Skapar en offert eller uppdaterar en befintlig offert med ny information genom ett inkommande API-anrop från ett externt system.
Klass:InsQuoteService
Metod: createUpdateQuoteFromExternal
Så fungerar det
-
Tar emot JSON-objektet.
-
Använder
sourceSystemIdentifierför att avgöra om en befintlig offert ska skapas eller uppdateras. -
Använder
PricebookId, som är en prisbok som heter Standard. -
Om tjänsten hittar en Offert med den angivna
sourceSystemIdentifieruppdaterar den offertobjektet:-
Använder rotprodukterna som definieras i
quoteLinesför att lägga till, uppdatera eller ta bort rotcitatradartiklarna. Tjänsten användersourceSystemIdentifierför att identifiera roten.Lägger till poster i
quoteLinessom inte finns i Offerten. Uppdaterar de poster iquoteLinessom finns i Offerten. Tar bort poster iquoteLinessom finns i Offerten men inte i offertraderna. -
För varje rot använder tjänsten de täckningar, försäkrade objekt och parter som definieras i
childLinesför att lägga till, uppdatera eller ta bort rottäckningar, försäkrade objekt och parter. Tjänsten användersourceSystemIdentifierför att identifiera raden att uppdatera.Lägger till poster i
childLinessom inte finns i Offerten. Uppdaterar de poster ichildLinessom finns i Offerten. Tar bort poster ichildLinessom finns i Offerten men inte ichildLines. -
För varje rottäckning, försäkrade objekt och parter använder tjänsten täckningar, försäkrade objekt och parter i
childLinesför att lägga till, uppdatera eller ta bort respektive täckningar, försäkrade objekt och parter. Tjänsten användersourceSystemIdentifierför att identifiera raden att uppdatera.Lägger till poster i
childLinessom inte finns i Offerten. Uppdaterar de poster ichildLinessom finns i Offerten. Tar bort poster ichildLinessom finns i Offerten men inte ichildLines. -
Det primära försäkrade objektets
QuoteLineItemförQuoteLineItemoch underordnad försäkrad part har många:många relationer. Dessa relationer lagras i objektet Offertobjektrelation (QuoteItemRelationship__c). Om ett försäkrat objektQuoteLineItemhar relationer till fleraQuoteLineItemför försäkrade använder tjänsten fältetPrimaryChildLineItemId__cför att avgöra vilken av dessa relationer som är den primära.Till exempel är både Joan Smith och John Smith förare av Lexus 250; Joan Smith anges som den primära drivrutinen. Lexus 250
QuoteLineItemharPrimaryChildLineItemId__csom pekar mot Joan SmithsQuoteLineItem. -
Om två försäkrade objekt har samma underordnade försäkrade part, ska varje försäkrade objekt ha en anteckning i respektive
childLinesför den underordnade försäkrade parten. För båda posterna måste de ha sammasourceSystemIdentifier.Till exempel har både Lexus 250 och Honda Odyssey Bob Jones som förare. Lexus 250 har Bob Jones med
sourceSystemIdentifierBobJones i sinchildLines. Honda Odyssey har en Bob Jones medsourceSystemIdentifierBobJones ichildLines. -
ParentItemId__c och ParentItemId2__c för
childLinespekar till rotens Id. -
Underordnade täckningars
SubParentItemId__cpekar till det primära försäkrade objektet.
-
-
Om tjänsten inte hittar en offert med den angivna
sourceSystemIdentifierskapar den offertobjektet som innehåller radartiklar enligt följande:-
Använder rotprodukterna som definieras i
quoteLinesför att skapa rotcitatradartiklarna. -
För varje rot används de täckningar, försäkrade objekt och parter som definieras i
childLinesför att skapa rottäckningar, försäkrade objekt och parter. -
För varje rottäckning använder försäkrade objekt och parter de täckningar, försäkrade objekt och parter som definieras i deras
childLinesför att skapa sina täckningar, försäkrade objekt och parter. -
Det primära försäkrade objektets
QuoteLineItemförQuoteLineItemoch underordnad försäkrad part har många:många relationer. Dessa relationer lagras i objektet Offertobjektrelation (QuoteItemRelationship__c). Om ett försäkrat objektQuoteLineItemhar relationer till fleraQuoteLineItemför försäkrade använder tjänstenPrimaryChildLineItemId__cför att avgöra vilken av dessa relationer som är den primära.Till exempel är både Joan Smith och John Smith förare av Lexus 250; Joan Smith anges som den primära drivrutinen. Lexus 250
QuoteLineItemharPrimaryChildLineItemId__csom pekar mot Joan SmithsQuoteLineItem. -
Om två försäkrade objekt har samma underordnade försäkrade part måste varje försäkrat objekt ha en anteckning i respektive
childLinesför den underordnade försäkrade parten. För båda posterna måste de ha sammasourceSystemIdentifier.Till exempel har både Lexus 250 och Honda Odyssey Bob Jones som förare. Lexus 250 har Bob Jones med
sourceSystemIdentifiersom BobJones i sinachildLine. Honda Odyssey har Bob Jones medsourceSystemIdentifiersom BobJones i sinchildLines. -
ParentItemId__cochParentItemId2__cförchildLinespekar till rotens ID. -
Underordnade täckningars
SubParentItemId__cpekar till det primära försäkrade objektet.
-
-
Returnerar en
Quote.Idoch en lista över fel som uppstått i JSON för utdata.
Indata
Indata |
Beskrivning |
|---|---|
|
Innehåller all information för att skapa offerten. Mer information om nyckelvärdeparen finns i Beskrivning av JSON-noder. |
Beskrivning av JSON-nod |
|
|
En lista över poster. Tjänsten bearbetar endast en offert åt gången. |
offertnoder |
|
|
Obligatoriskt. ID för säljprojektet. |
|
Obligatoriskt. Unik postidentifierare från ett system utanför Salesforce för att identifiera vilken offert som ska uppdateras. |
|
API-namnet på offertposttypen. |
|
Nyckelvärdeparet för andra |
|
Listan över rotprodukter. |
quoteLines-noder |
|
|
Obligatoriskt. Unik postidentifierare från ett system utanför Salesforce för att identifiera vilka rot-QuoteLineItems som ska läggas till, uppdateras eller tas bort i Salesforce. |
|
Instansnyckel |
|
Obligatoriskt. Rotproduktkod. |
|
Obligatoriskt. Posttyp för produkt eller specifikation. |
|
De valda produktattributen. |
|
Nyckelvärdeparet för andra |
|
Rotprodukttäckningar, försäkrade objekt och försäkrade parter. |
childLines-noder |
|
|
Obligatoriskt. Unik postidentifierare från ett system utanför Salesforce för att identifiera vilka rottäckningar, försäkrade objekt och försäkrade parter som ska läggas till, uppdateras eller tas bort i Salesforce. |
|
Identifierar flera instanser av samma specifikation. Instansnyckel |
|
Obligatoriskt. Produktkoden för rottäckningar, försäkrade objekt och försäkrade parter. |
|
Obligatoriskt. Posttyp för produkt eller specifikation. |
|
De valda produktattributen. |
|
Nyckelvärdeparet för andra |
|
Underordnade täckningar, försäkrade objekt och försäkrade parter. |
childLines-noder |
|
|
Obligatoriskt. Unik postidentifierare från ett system utanför Salesforce för att identifiera vilka underordnade täckningar, försäkrade objekt och försäkrade parter som ska läggas till, uppdateras eller tas bort i Salesforce. Om två försäkrade objekt har samma underordnade försäkrade part måste varje försäkrat objekt ha en anteckning i respektive |
|
Identifierar flera instanser av samma specifikation. Instansnyckel |
|
Obligatoriskt. Produktkoden för underordnade täckningar, försäkrade objekt och försäkrade parters produkt. |
|
Obligatoriskt. Posttyp för produkt eller specifikation. |
|
De valda produktattributen. |
|
Nyckelvärdeparet för andra |
Indata-JSON
Här är formatet för indata-JSON:
{
"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"
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}Här är ett exempel på indata-JSON:
{
"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
}
}
]
}
}JSON för utdata
Returnerar Quote.Id för den skapade eller uppdaterade offerten i JSON för utdata och listan över fel som uppstått.
Här är formatet för JSON för utdata:
{
"errors":[
"error1",
"error2",
"error3"
],
"quoteId":"Quote.Id"
}Här är ett exempel på JSON för 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"
}