Sie befinden sich hier:
InsQuoteService:createUpdateQuoteFromExternal
Erstellt ein Angebot oder aktualisiert ein vorhandenes Angebot mit neuen Informationen über einen eingehenden API-Aufruf aus einem externen System.
Klasse:InsQuoteService
Methode: createUpdateQuoteFromExternal
Funktionsweise
-
Erhält das JSON-Objekt.
-
Anhand der
sourceSystemIdentifierkönnen Sie bestimmen, ob ein vorhandenes Angebot erstellt oder aktualisiert werden soll. -
Verwendet die
PricebookId, bei der es sich um ein Preisbuch mit dem Namen "Standard" handelt. -
Wenn der Service ein Angebot mit dem angegebenen
sourceSystemIdentifierfindet, wird das Angebotsobjekt aktualisiert:-
Verwendet die in
quoteLinesdefinierten Stammprodukte zum Hinzufügen, Aktualisieren oder Löschen der Stamm-Angebotsbelegposten. Der Service verwendet diesourceSystemIdentifierzum Identifizieren des Stamms.Fügt die Datensätze in
quoteLineshinzu, die sich nicht im Angebot befinden. Aktualisiert die im Angebot vorhandenen Datensätze inquoteLines. Löscht die Datensätze inquoteLines, die sich im Angebot, nicht jedoch in den QuoteLines befinden. -
Für jeden Stamm verwendet der Service die
childLinesdefinierten Abdeckungen, versicherten Artikel und Beteiligten, um die Stammabdeckungen, versicherten Artikel und Beteiligten hinzuzufügen, zu aktualisieren oder zu löschen. Der Service verwendet diesourceSystemIdentifierzum Identifizieren der zu aktualisierenden Zeile.Fügt die Datensätze in
childLineshinzu, die sich nicht im Angebot befinden. Aktualisiert die im Angebot vorhandenen Datensätze inchildLines. Löscht die Datensätze inchildLines, die sich im Angebot befinden, aber nicht inchildLinessind. -
Für jede Stammabdeckung, jeden versicherten Posten und jede beteiligte Person verwendet der Service die Abdeckungen, jeden versicherten Posten und jede beteiligte Person im
childLines, um die entsprechenden Abdeckungen, jeden versicherten Posten und jede beteiligte Person hinzuzufügen, zu aktualisieren oder zu löschen. Der Service verwendetsourceSystemIdentifierzum Identifizieren der zu aktualisierenden Zeile.Fügt die Datensätze in
childLineshinzu, die sich nicht im Angebot befinden. Aktualisiert die im Angebot vorhandenen Datensätze inchildLines. Löscht die Datensätze inchildLines, die sich im Angebot befinden, aber nicht inchildLinessind. -
Die
QuoteLineItemderQuoteLineItemdes primären Versicherten und der untergeordneten Versicherten stehen in einer n:n-Beziehung. Diese Beziehungen werden im Objekt "Angebotselementbeziehung (QuoteItemRelationship__c)" gespeichert. Wenn einQuoteLineItemfür Versicherte über Beziehungen zu mehrerenQuoteLineItemder Versicherten verfügt, verwendet der Service das Feld "PrimaryChildLineItemId__c", um zu bestimmen, welche dieser Beziehungen die primäre ist.Joan Smith und John Smith sind beispielsweise Treiber von Lexus 250. Joan Smith ist als primärer Treiber festgelegt. Die
PrimaryChildLineItemId__cdes Lexus 250QuoteLineItemverweisen auf Joan SmithsQuoteLineItem. -
Wenn zwei Versicherte denselben untergeordneten Versicherten haben, muss jeder Versicherte über einen Eintrag im jeweiligen
childLinesfür den untergeordneten Versicherten verfügen. Für beide Einträge müssen sie dieselbesourceSystemIdentifieraufweisen.Beispielsweise haben sowohl der Lexus 250 als auch Honda Odyssey Bob Jones als Fahrer. Im Lexus 250 ist Bob Jones mit
sourceSystemIdentifierals BobJoneschildLines. Honda Odyssey hat einen Bob Jones mitsourceSystemIdentifierals BobJones imchildLines. -
ParentItemId__c und ParentItemId2__c von
childLinesverweisen auf die ID des Stamms. -
Die
SubParentItemId__cder Kindersicherungen verweist auf den primären versicherten Posten.
-
-
Wenn der Service kein Angebot mit dem angegebenen
sourceSystemIdentifierfindet, erstellt er das Angebotsobjekt, das Belegposten enthält, wie hier erläutert:-
Verwendet die in
quoteLinesdefinierten Stammprodukte zum Erstellen der Stamm-Angebotsbelegposten. -
Verwendet für jeden Stamm die im
childLinesdefinierten Abdeckungen, versicherten Posten und Beteiligten, um die Stammabdeckungen, versicherten Posten und Beteiligten zu erstellen. -
Für jede Stammabdeckung verwenden Versicherte und Beteiligte die in ihrer
childLinesdefinierten Abdeckungen, Versicherten und Beteiligten, um ihre Abdeckungen, Versicherten und Beteiligten zu erstellen. -
Die
QuoteLineItemderQuoteLineItemdes primären Versicherten und der untergeordneten Versicherten stehen in einer n:n-Beziehung. Diese Beziehungen werden im Objekt "Angebotselementbeziehung (QuoteItemRelationship__c)" gespeichert. Wenn einQuoteLineItemfür Versicherte über Beziehungen zu mehrerenQuoteLineItemder Versicherten verfügt, verwendet der Service das FeldPrimaryChildLineItemId__c, um zu bestimmen, welche dieser Beziehungen die primäre ist.Joan Smith und John Smith sind beispielsweise Treiber von Lexus 250. Joan Smith ist als primärer Treiber festgelegt. Die
PrimaryChildLineItemId__cdes Lexus 250QuoteLineItemverweisen auf Joan SmithsQuoteLineItem. -
Wenn zwei Versicherte denselben untergeordneten Versicherten haben, muss jeder Versicherte im jeweiligen
childLinesdes untergeordneten Versicherten eingetragen sein. Für beide Einträge müssen sie dieselbesourceSystemIdentifieraufweisen.Beispielsweise haben sowohl der Lexus 250 als auch Honda Odyssey Bob Jones als Fahrer. Das Lexus 250 hat Bob Jones mit
sourceSystemIdentifierals BobJones in seinenchildLine. Honda Odyssey hat Bob Jones mitsourceSystemIdentifierals BobJones imchildLines. -
ParentItemId__cundParentItemId2__cderchildLinesverweisen auf die ID des Stammes. -
Die
SubParentItemId__cder Kindersicherungen verweisen auf den primären versicherten Posten.
-
-
Gibt eine
Quote.Idund die Liste der in der Ausgabe-JSON aufgetretenen Fehler zurück.
Eingaben
Eingabe |
Beschreibung |
|---|---|
|
Enthält alle Informationen für die Erstellung des Angebots. Weitere Informationen zu den Schlüssel-Wert-Paaren finden Sie in der Beschreibung der JSON-Knoten. |
JSON-Knotenbeschreibung |
|
|
Eine Liste der Datensätze. Der Service verarbeitet jeweils nur ein Angebot. |
Angebotsknoten |
|
|
Pflichtangabe. Die ID der Opportunity. |
|
Pflichtangabe. Eindeutige Datensatzkennung aus einem System außerhalb von Salesforce, um zu ermitteln, welches Angebot aktualisiert werden soll. |
|
Der API-Name des Angebotsdatensatztyps. |
|
Das Schlüssel-Wert-Paar anderer |
|
Die Liste der Stammprodukte. |
quoteLines-Knoten |
|
|
Pflichtangabe. Eindeutige Datensatzkennung aus einem System außerhalb von Salesforce, um zu ermitteln, welche Stamm-QuoteLineItems in Salesforce hinzugefügt, aktualisiert oder gelöscht werden sollen. |
|
Instanzschlüssel in |
|
Pflichtangabe. Stammproduktcode. |
|
Pflichtangabe. Produkt- oder Spezifikationsdatensatztyp. |
|
Die ausgewählten Produktattribute. |
|
Das Schlüssel-Wert-Paar anderer |
|
Stammproduktabdeckungen, versicherte Artikel und Versicherte. |
childLines-Knoten |
|
|
Pflichtangabe. Eindeutige Datensatzkennung aus einem System außerhalb von Salesforce, um zu ermitteln, welche Stammabdeckungen, versicherten Artikel und versicherten Parteien in Salesforce hinzugefügt, aktualisiert oder gelöscht werden sollen. |
|
Identifiziert mehrere Instanzen derselben Spezifikation. Instanzschlüssel in |
|
Pflichtangabe. Der Produktcode von Stammabdeckungen, versicherten Artikeln und versicherten Parteien. |
|
Pflichtangabe. Produkt- oder Spezifikationsdatensatztyp. |
|
Die ausgewählten Produktattribute. |
|
Das Schlüssel-Wert-Paar anderer |
|
Untergeordnete Abdeckungen, Versicherte und Versicherte. |
childLines-Knoten |
|
|
Pflichtangabe. Eindeutige Datensatzkennung aus einem System außerhalb von Salesforce, um zu ermitteln, welche untergeordneten Abdeckungen, versicherten Artikel und versicherten Parteien in Salesforce hinzugefügt, aktualisiert oder gelöscht werden sollen. Wenn zwei Versicherte denselben untergeordneten Versicherten haben, muss jeder Versicherte im jeweiligen |
|
Identifiziert mehrere Instanzen derselben Spezifikation. Instanzschlüssel in |
|
Pflichtangabe. Der Produktcode der untergeordneten Abdeckungen, der versicherten Artikel und des Produkts der versicherten Personen. |
|
Pflichtangabe. Produkt- oder Spezifikationsdatensatztyp. |
|
Die ausgewählten Produktattribute. |
|
Das Schlüssel-Wert-Paar anderer |
Input JSON
Folgendes Format der Eingabe-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 ein Beispiel für die Eingabe-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
}
}
]
}
}Ausgabe-JSON
Gibt die Quote.Id des erstellten oder aktualisierten Angebots in der Ausgabe-JSON und die Liste der aufgetretenen Fehler zurück.
Das Format der Ausgabe-JSON lautet wie folgt:
{
"errors":[
"error1",
"error2",
"error3"
],
"quoteId":"Quote.Id"
}Hier ein Beispiel für die Ausgabe-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"
}
