U bent hier:
InsQuoteService:createUpdateQuoteFromExternal
Maakt een offerte of werkt een bestaande offerte bij met nieuwe informatie via een inkomende API-aanroep vanuit een extern systeem.
Klasse:InsQuoteService
Methode: createUpdateQuoteFromExternal
Hoe het werkt
-
Ontvangt het JSON-object.
-
Gebruikt de
sourceSystemIdentifierom te bepalen of een bestaande offerte moet worden gemaakt of bijgewerkt. -
Gebruikt de
PricebookId, een prijslijst met de naam Standaard. -
Als de service een offerte vindt met de opgegeven
sourceSystemIdentifier, werkt deze het offerteobject bij:-
Gebruikt de rootproducten die in
quoteLineszijn gedefinieerd om de rootofferteregelitems toe te voegen, bij te werken of te verwijderen. De service gebruikt desourceSystemIdentifiervoor het identificeren van de root.Voegt de records toe in
quoteLinesdie niet voorkomen in de offerte. Werkt de records inquoteLinesbij die bestaan in de offerte. Verwijdert de records inquoteLinesdie wel voorkomen in de offerte, maar niet in de offerteregels. -
Voor elke root gebruikt de service de dekkingen, verzekerde items en partijen die zijn gedefinieerd in
childLinesom de rootdekkingen, verzekerde items en partijen toe te voegen, bij te werken of te verwijderen. De service gebruikt desourceSystemIdentifiervoor het identificeren van de bij te werken regel.Voegt de records toe in
childLinesdie niet voorkomen in de offerte. Werkt de records inchildLinesbij die bestaan in de offerte. Verwijdert de records inchildLinesdie wel voorkomen in de offerte, maar niet inchildLines. -
Voor elke rootdekking, verzekerde items en partijen gebruikt de service de dekkingen, verzekerde items en partijen in de
childLinesom de respectieve dekkingen, verzekerde items en partijen toe te voegen, bij te werken of te verwijderen. De service gebruiktsourceSystemIdentifiervoor het identificeren van de bij te werken regel.Voegt de records toe in
childLinesdie niet voorkomen in de offerte. Werkt de records inchildLinesbij die bestaan in de offerte. Verwijdert de records inchildLinesdie wel voorkomen in de offerte, maar niet inchildLines. -
De
QuoteLineItemen onderliggendeQuoteLineItemvan het primaire verzekerde item hebben een veel:veel-relatie. Deze relaties worden opgeslagen in het object Offerte-itemrelatie (QuoteItemRelationship__c). Als eenQuoteLineItemvan een verzekerd item relaties heeft met meerdereQuoteLineItemvan een verzekerde, gebruikt de service het veldPrimaryChildLineItemId__com te bepalen welke van die relaties de primaire is.Zo zijn zowel Joan Smith als John Smith drivers van Lexus 250; Joan Smith is ingesteld als primaire driver. De Lexus 250
QuoteLineItemheeftPrimaryChildLineItemId__cdie verwijzen naar Joan Smith'sQuoteLineItem. -
Als twee verzekerde voorwerpen dezelfde onderliggende verzekerde hebben, moet elk verzekerd voorwerp een vermelding in de respectieve
childLinesvoor de onderliggende verzekerde hebben. Voor beide items geldt dat ze dezelfdesourceSystemIdentifiermoeten hebben.Zo hebben zowel de Lexus 250 als Honda Odyssey Bob Jones als coureur. Lexus 250 heeft Bob Jones met
sourceSystemIdentifierals BobJones in zijnchildLines. Honda Odyssey heeft een Bob Jones metsourceSystemIdentifierals BobJones in dechildLines. -
ParentItemId__c en ParentItemId2__c van
childLinesverwijzen naar de root-ID. -
De
SubParentItemId__cvan onderliggende dekkingen wijst naar het primaire verzekerde item.
-
-
Als de service geen offerte vindt met de opgegeven
sourceSystemIdentifier, wordt het offerteobject gemaakt dat regelitems bevat, zoals hier wordt uitgelegd:-
Gebruikt de rootproducten die in
quoteLineszijn gedefinieerd om de rootofferteregelitems te maken. -
Gebruikt voor elke root de dekkingen, verzekerde items en partijen die in
childLineszijn gedefinieerd om de rootdekkingen, verzekerde items en partijen te maken. -
Voor elke rootdekking gebruikt verzekerde items en partijen de dekkingen, verzekerde items en partijen die in hun
childLineszijn gedefinieerd om hun dekkingen, verzekerde items en partijen te maken. -
De
QuoteLineItemen onderliggendeQuoteLineItemvan het primaire verzekerde item hebben een veel:veel-relatie. Deze relaties worden opgeslagen in het object Offerte-itemrelatie (QuoteItemRelationship__c). Als eenQuoteLineItemvan een verzekerd item relaties heeft met meerdereQuoteLineItemvan een verzekerde, gebruikt de service het veldPrimaryChildLineItemId__com te bepalen welke van die relaties de primaire is.Zo zijn zowel Joan Smith als John Smith drivers van Lexus 250; Joan Smith is ingesteld als primaire driver. De Lexus 250
QuoteLineItemheeftPrimaryChildLineItemId__cdie verwijzen naar Joan Smith'sQuoteLineItem. -
Als twee verzekerde voorwerpen dezelfde onderliggende verzekerde hebben, moet elk verzekerd voorwerp worden vermeld in de respectieve
childLinesvoor de onderliggende verzekerde. Voor beide items geldt dat ze dezelfdesourceSystemIdentifiermoeten hebben.Zo hebben zowel de Lexus 250 als Honda Odyssey Bob Jones als coureur. Lexus 250 heeft Bob Jones met
sourceSystemIdentifierals BobJones in dechildLine. Honda Odyssey heeft Bob Jones metsourceSystemIdentifierals BobJones in zijnchildLines. -
ParentItemId__cenParentItemId2__cchildLinesverwijzen naar de root-ID. -
De
SubParentItemId__cvan onderliggende dekkingen verwijzen naar het primaire verzekerde item.
-
-
Retourneert een
Quote.Iden de lijst van fouten die zijn opgetreden in de uitvoer-JSON.
Invoer
Invoer |
Beschrijving |
|---|---|
|
Bevat alle informatie voor het maken van de offerte. Zie de beschrijving van JSON-knooppunten voor meer informatie over de sleutel-waardeparen. |
Beschrijving van JSON-knooppunten |
|
|
Een lijst van records. De service verwerkt slechts één offerte tegelijk. |
offerteknooppunten |
|
|
Verplicht. De ID van de opportunity. |
|
Verplicht. Unieke record-ID van een systeem buiten Salesforce om aan te geven welke offerte moet worden bijgewerkt. |
|
De API-naam van het offerterecordtype. |
|
Het sleutel-waardepaar van andere |
|
De lijst van rootproducten. |
quoteLines-knooppunten |
|
|
Verplicht. Unieke record-ID van een systeem buiten Salesforce om aan te geven welke root QuoteLineItems moeten worden toegevoegd, bijgewerkt of verwijderd in Salesforce. |
|
Instantiesleutel in |
|
Verplicht. Rootproductcode. |
|
Verplicht. Recordtype voor product of specificatie. |
|
De geselecteerde productkenmerken. |
|
Het sleutel-waardepaar van andere |
|
Rootproductdekkingen, verzekerde items en verzekerden. |
onderliggende lijnen-knooppunten |
|
|
Verplicht. Unieke record-ID van een systeem buiten Salesforce om te bepalen welke rootdekkingen, verzekerde items en verzekerden moeten worden toegevoegd, bijgewerkt of verwijderd in Salesforce. |
|
Identificeert meerdere exemplaren van dezelfde specificatie. Instantiesleutel in |
|
Verplicht. De productcode van rootdekkingen, verzekerde items en verzekerden. |
|
Verplicht. Recordtype voor product of specificatie. |
|
De geselecteerde productkenmerken. |
|
Het sleutel-waardepaar van andere |
|
Onderliggende dekkingen, verzekerde items en verzekerden. |
onderliggende lijnen-knooppunten |
|
|
Verplicht. Unieke record-ID van een systeem buiten Salesforce om te bepalen welke onderliggende dekkingen, verzekerde items en verzekerden moeten worden toegevoegd, bijgewerkt of verwijderd in Salesforce. Als twee verzekerde voorwerpen dezelfde onderliggende verzekerde hebben, moet elk verzekerd voorwerp worden vermeld in de respectieve |
|
Identificeert meerdere exemplaren van dezelfde specificatie. Instantiesleutel in |
|
Verplicht. De productcode van onderliggende dekkingen, verzekerde items en product van verzekerden. |
|
Verplicht. Recordtype voor product of specificatie. |
|
De geselecteerde productkenmerken. |
|
Het sleutel-waardepaar van andere |
Invoer-JSON
Hier is de indeling van de invoer-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"
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}Hier is een voorbeeld van de invoer-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
}
}
]
}
}Uitvoer-JSON
Retourneert de Quote.Id van de gemaakte of bijgewerkte offerte in de uitvoer-JSON en de lijst van aangetroffen fouten.
Hier is de indeling van de uitvoer-JSON:
{
"errors":[
"error1",
"error2",
"error3"
],
"quoteId":"Quote.Id"
}Hier is een voorbeeld van de uitvoer-JSON:
{
"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"
}