Loading
Försäkring
InsQuoteService:createUpdateQuoteFromExternal

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

  1. Tar emot JSON-objektet.

  2. Använder sourceSystemIdentifier för att avgöra om en befintlig offert ska skapas eller uppdateras.

  3. Använder PricebookId, som är en prisbok som heter Standard.

  4. Om tjänsten hittar en Offert med den angivna sourceSystemIdentifier uppdaterar den offertobjektet:

    1. Använder rotprodukterna som definieras i quoteLines för att lägga till, uppdatera eller ta bort rotcitatradartiklarna. Tjänsten använder sourceSystemIdentifier för att identifiera roten.

      Lägger till poster i quoteLines som inte finns i Offerten. Uppdaterar de poster i quoteLines som finns i Offerten. Tar bort poster i quoteLines som finns i Offerten men inte i offertraderna.

    2. För varje rot använder tjänsten de täckningar, försäkrade objekt och parter som definieras i childLines för att lägga till, uppdatera eller ta bort rottäckningar, försäkrade objekt och parter. Tjänsten använder sourceSystemIdentifier för att identifiera raden att uppdatera.

      Lägger till poster i childLines som inte finns i Offerten. Uppdaterar de poster i childLines som finns i Offerten. Tar bort poster i childLines som finns i Offerten men inte i childLines.

    3. För varje rottäckning, försäkrade objekt och parter använder tjänsten täckningar, försäkrade objekt och parter i childLines för att lägga till, uppdatera eller ta bort respektive täckningar, försäkrade objekt och parter. Tjänsten använder sourceSystemIdentifier för att identifiera raden att uppdatera.

      Lägger till poster i childLines som inte finns i Offerten. Uppdaterar de poster i childLines som finns i Offerten. Tar bort poster i childLines som finns i Offerten men inte i childLines.

    4. Det primära försäkrade objektets QuoteLineItem för QuoteLineItem och underordnad försäkrad part har många:många relationer. Dessa relationer lagras i objektet Offertobjektrelation (QuoteItemRelationship__c). Om ett försäkrat objekt QuoteLineItem har relationer till flera QuoteLineItem för försäkrade använder tjänsten fältet PrimaryChildLineItemId__c fö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 QuoteLineItem har PrimaryChildLineItemId__c som pekar mot Joan Smiths QuoteLineItem.

    5. Om två försäkrade objekt har samma underordnade försäkrade part, ska varje försäkrade objekt ha en anteckning i respektive childLines för den underordnade försäkrade parten. För båda posterna måste de ha samma sourceSystemIdentifier.

      Till exempel har både Lexus 250 och Honda Odyssey Bob Jones som förare. Lexus 250 har Bob Jones med sourceSystemIdentifier BobJones i sin childLines. Honda Odyssey har en Bob Jones med sourceSystemIdentifier BobJones i childLines.

    6. ParentItemId__c och ParentItemId2__c för childLines pekar till rotens Id.

    7. Underordnade täckningars SubParentItemId__c pekar till det primära försäkrade objektet.

  5. Om tjänsten inte hittar en offert med den angivna sourceSystemIdentifier skapar den offertobjektet som innehåller radartiklar enligt följande:

    1. Använder rotprodukterna som definieras i quoteLines för att skapa rotcitatradartiklarna.

    2. För varje rot används de täckningar, försäkrade objekt och parter som definieras i childLines för att skapa rottäckningar, försäkrade objekt och parter.

    3. 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 childLines för att skapa sina täckningar, försäkrade objekt och parter.

    4. Det primära försäkrade objektets QuoteLineItem för QuoteLineItem och underordnad försäkrad part har många:många relationer. Dessa relationer lagras i objektet Offertobjektrelation (QuoteItemRelationship__c). Om ett försäkrat objekt QuoteLineItem har relationer till flera QuoteLineItem för försäkrade använder tjänsten PrimaryChildLineItemId__c fö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 QuoteLineItem har PrimaryChildLineItemId__c som pekar mot Joan Smiths QuoteLineItem.

    5. 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 childLines för den underordnade försäkrade parten. För båda posterna måste de ha samma sourceSystemIdentifier.

      Till exempel har både Lexus 250 och Honda Odyssey Bob Jones som förare. Lexus 250 har Bob Jones med sourceSystemIdentifier som BobJones i sina childLine. Honda Odyssey har Bob Jones med sourceSystemIdentifier som BobJones i sin childLines.

    6. ParentItemId__c och ParentItemId2__c för childLines pekar till rotens ID.

    7. Underordnade täckningars SubParentItemId__c pekar till det primära försäkrade objektet.

  6. Returnerar en Quote.Id och en lista över fel som uppstått i JSON för utdata.

Indata

Indata

Beskrivning

quote

Innehåller all information för att skapa offerten. Mer information om nyckelvärdeparen finns i Beskrivning av JSON-noder.

Beskrivning av JSON-nod

quote

En lista över poster. Tjänsten bearbetar endast en offert åt gången.

offertnoder

opportunityId

Obligatoriskt.

ID för säljprojektet.

sourceSystemIdentifier

Obligatoriskt.

Unik postidentifierare från ett system utanför Salesforce för att identifiera vilken offert som ska uppdateras.

type

API-namnet på offertposttypen.

additionalFields

Nyckelvärdeparet för andra QuoteLineItem som du vill fylla i.

quoteLines

Listan över rotprodukter.

quoteLines-noder

sourceSystemIdentifier

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.

instanceKey

Instansnyckel ItemName__c rotprodukter.

productCode

Obligatoriskt.

Rotproduktkod.

lineRecordType

Obligatoriskt.

Posttyp för produkt eller specifikation.

attributeCategories

De valda produktattributen.

additionalFields

Nyckelvärdeparet för andra QuoteLineItem som du vill fylla i.

childLines

Rotprodukttäckningar, försäkrade objekt och försäkrade parter.

childLines-noder

sourceSystemIdentifier

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.

instanceKey

Identifierar flera instanser av samma specifikation.

Instansnyckel ItemName__c försäkrade objekt och försäkrade parter.

productCode

Obligatoriskt.

Produktkoden för rottäckningar, försäkrade objekt och försäkrade parter.

lineRecordType

Obligatoriskt.

Posttyp för produkt eller specifikation.

attributeCategories

De valda produktattributen.

additionalFields

Nyckelvärdeparet för andra QuoteLineItem som du vill fylla i.

childLines

Underordnade täckningar, försäkrade objekt och försäkrade parter.

childLines-noder

sourceSystemIdentifier

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 childLines för den underordnade försäkrade parten. För båda posterna måste de ha samma sourceSystemIdentifier. Se InsQuoteService:createUpdateQuote.

instanceKey

Identifierar flera instanser av samma specifikation.

Instansnyckel ItemName__c försäkrade objekt och försäkrade parter.

productCode

Obligatoriskt.

Produktkoden för underordnade täckningar, försäkrade objekt och försäkrade parters produkt.

lineRecordType

Obligatoriskt.

Posttyp för produkt eller specifikation.

attributeCategories

De valda produktattributen.

additionalFields

Nyckelvärdeparet för andra QuoteLineItem som du vill fylla i.

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"
}
 
Laddar
Salesforce Help | Article