Loading
Assicurazioni
InsQuoteService:createUpdateQuoteFromExternal

InsQuoteService:createUpdateQuoteFromExternal

Crea un preventivo o aggiorna un preventivo esistente con nuove informazioni tramite una chiamata API in entrata da un sistema esterno.

Classe:InsQuoteService

Metodo: createUpdateQuoteFromExternal

Funzionamento

  1. Riceve l'oggetto JSON.

  2. Utilizza il sourceSystemIdentifier per determinare se creare o aggiornare un preventivo esistente.

  3. Utilizza il PricebookId, ovvero un listino prezzi denominato Standard.

  4. Se il servizio trova un preventivo con il sourceSystemIdentifier specificato, aggiorna l'oggetto preventivo:

    1. Utilizza i prodotti radice definiti in quoteLines per aggiungere, aggiornare o eliminare le voci del preventivo radice. Il servizio utilizza il sourceSystemIdentifier per identificare la radice.

      Aggiunge i record in quoteLines che non sono nel preventivo. Aggiorna i record in quoteLines esistenti nel preventivo. Elimina i record nei quoteLines presenti nel preventivo ma non nelle quoteLines.

    2. Per ogni radice, il servizio utilizza le coperture, le voci assicurate e le parti definite al childLines di aggiungere, aggiornare o eliminare le coperture radice, le voci assicurate e le parti. Il servizio utilizza il sourceSystemIdentifier per identificare la riga da aggiornare.

      Aggiunge i record in childLines che non sono nel preventivo. Aggiorna i record in childLines esistenti nel preventivo. Elimina i record nei childLines presenti nel Preventivo ma non in childLines.

    3. Per ogni copertura radice, voce assicurata e parte, il servizio utilizza le coperture, voce assicurata e parte nel childLines per aggiungere, aggiornare o eliminare le rispettive coperture, voce assicurata e parte. Il servizio utilizza sourceSystemIdentifier per identificare la riga da aggiornare.

      Aggiunge i record in childLines che non sono nel preventivo. Aggiorna i record in childLines esistenti nel preventivo. Elimina i record nei childLines presenti nel Preventivo ma non in childLines.

    4. I record QuoteLineItem dell'elemento assicurato principale e QuoteLineItem dell'assicurato controllato hanno una relazione molti:molti. Queste relazioni sono memorizzate nell'oggetto Relazione voce preventivo (QuoteItemRelationship__c). Se un QuoteLineItem voce assicurato ha relazioni con più record QuoteLineItem parte assicurata, il servizio utilizza il campo PrimaryChildLineItemId__c per determinare quale di queste relazioni è la principale.

      Ad esempio, sia Joan Smith che John Smith guidano la Lexus 250; Joan Smith è impostata come guida principale. La Lexus 250 QuoteLineItem ha PrimaryChildLineItemId__c che puntano alla QuoteLineItem di Joan Smith.

    5. Se due voci assicurate hanno lo stesso assicurato figlio, ogni voce assicurata deve avere una voce nel rispettivo childLines per l'assicurato figlio. Per entrambe le voci, devono avere lo stesso sourceSystemIdentifier.

      Ad esempio, sia la Lexus 250 che la Honda Odyssey hanno Bob Jones come pilota. La Lexus 250 ha Bob Jones con sourceSystemIdentifier come BobJones nel suo childLines. Honda Odyssey ha un Bob Jones con sourceSystemIdentifier come BobJones nel suo childLines.

    6. ParentItemId__c e ParentItemId2__c di childLines puntano all'ID della radice.

    7. Il SubParentItemId__c delle coperture figli punta alla voce principale assicurata.

  5. Se il servizio non trova un preventivo con il sourceSystemIdentifier specificato, crea l'oggetto preventivo che include le voci come spiegato di seguito:

    1. Utilizza i prodotti radice definiti in quoteLines per creare le voci preventivo radice.

    2. Per ogni radice, utilizza le coperture, le voci assicurate e le parti definite al childLines di creare le coperture radice, le voci assicurate e le parti.

    3. Per ogni copertura radice, voci e parti assicurate, utilizza le coperture, le voci assicurate e le parti definite nei rispettivi childLines per creare le coperture, le voci assicurate e le parti.

    4. I record QuoteLineItem dell'elemento assicurato principale e QuoteLineItem dell'assicurato controllato hanno una relazione molti:molti. Queste relazioni sono memorizzate nell'oggetto Relazione voce preventivo (QuoteItemRelationship__c). Se un QuoteLineItem voce assicurata ha relazioni con più record QuoteLineItem parte assicurata, il servizio utilizza il campo PrimaryChildLineItemId__c per determinare quale di queste relazioni è la principale.

      Ad esempio, sia Joan Smith che John Smith guidano la Lexus 250; Joan Smith è impostata come guida principale. La Lexus 250 QuoteLineItem ha PrimaryChildLineItemId__c che puntano alla QuoteLineItem di Joan Smith.

    5. Se due voci assicurate hanno lo stesso assicurato figlio, ogni voce assicurata deve essere iscritta nel rispettivo childLines per l'assicurato figlio. Per entrambe le voci, devono avere lo stesso sourceSystemIdentifier.

      Ad esempio, sia la Lexus 250 che la Honda Odyssey hanno Bob Jones come pilota. La Lexus 250 ha Bob Jones con sourceSystemIdentifier come BobJones nelle sue childLine. Honda Odyssey ha Bob Jones con sourceSystemIdentifier come BobJones nel suo childLines.

    6. ParentItemId__c e ParentItemId2__c di childLines puntano all'ID della radice.

    7. I SubParentItemId__c delle coperture figli puntano alla voce principale assicurata.

  6. Restituisce un Quote.Id e l'elenco degli errori riscontrati nel JSON di output.

Input

Input

Descrizione

quote

Contiene tutte le informazioni per la creazione del preventivo. Per ulteriori informazioni sulle coppie chiave-valore, vedere la descrizione dei nodi JSON.

Descrizione dei nodi JSON

quote

Un elenco di record. Il servizio elabora un solo preventivo alla volta.

nodi preventivo

opportunityId

Obbligatorio.

ID dell'opportunità.

sourceSystemIdentifier

Obbligatorio.

Identificatore univoco del record di un sistema esterno a Salesforce per identificare il preventivo da aggiornare.

type

Nome API del tipo di record preventivo.

additionalFields

Coppia chiave-valore degli altri campi QuoteLineItem che si desidera compilare.

quoteLines

L'elenco dei prodotti radice.

Nodi quoteLines

sourceSystemIdentifier

Obbligatorio.

Identificatore univoco del record di un sistema esterno a Salesforce per identificare quale QuoteLineItems radice aggiungere, aggiornare o eliminare in Salesforce.

instanceKey

Chiave istanza in ItemName__c di prodotti radice.

productCode

Obbligatorio.

Codice prodotto radice.

lineRecordType

Obbligatorio.

Tipo di record prodotto o specifica.

attributeCategories

Attributi del prodotto selezionati.

additionalFields

Coppia chiave-valore degli altri campi QuoteLineItem che si desidera compilare.

childLines

Root delle coperture dei prodotti, degli articoli assicurati e degli assicurati.

Nodi childLines

sourceSystemIdentifier

Obbligatorio.

Identificatore univoco del record di un sistema esterno a Salesforce per identificare le coperture principali, le voci assicurate e gli assicurati da aggiungere, aggiornare o eliminare in Salesforce.

instanceKey

Identifica più istanze della stessa specifica.

Chiave istanza in ItemName__c di voci assicurate e di parti assicurate.

productCode

Obbligatorio.

Codice prodotto delle coperture radice, degli articoli assicurati e degli assicurati.

lineRecordType

Obbligatorio.

Tipo di record prodotto o specifica.

attributeCategories

Attributi del prodotto selezionati.

additionalFields

Coppia chiave-valore degli altri campi QuoteLineItem che si desidera compilare.

childLines

Coperture minori, articoli assicurati e assicurati.

Nodi childLines

sourceSystemIdentifier

Obbligatorio.

Identificatore univoco del record di un sistema esterno a Salesforce per identificare le coperture controllate, gli elementi assicurati e gli assicurati da aggiungere, aggiornare o eliminare in Salesforce.

Se due voci assicurate hanno lo stesso assicurato figlio, ogni voce assicurata deve essere iscritta nel rispettivo childLines per l'assicurato figlio. Per entrambe le voci, devono avere lo stesso sourceSystemIdentifier. Vedere InsQuoteService:createUpdateQuote.

instanceKey

Identifica più istanze della stessa specifica.

Chiave istanza in ItemName__c di voci assicurate e di parti assicurate.

productCode

Obbligatorio.

Il codice prodotto delle coperture figlio, degli articoli assicurati e del prodotto assicurati.

lineRecordType

Obbligatorio.

Tipo di record prodotto o specifica.

attributeCategories

Attributi del prodotto selezionati.

additionalFields

Coppia chiave-valore degli altri campi QuoteLineItem che si desidera compilare.

Input JSON

Di seguito è riportato il formato del JSON di input:

{
   "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"
                                                      }
                                                   ]
                                                }
                                             }
                                          ]
                                       }
                                    }
                                 ]
                              }
                           }
                        ]
                     }
                  }
               ]
            }
         }
      ]
   }
}

Di seguito è riportato un esempio di JSON di input:

{
  "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 di output

Restituisce il Quote.Id del preventivo creato o aggiornato nel JSON di output e l'elenco degli errori riscontrati.

Di seguito è riportato il formato del JSON di output:

{
   "errors":[
      "error1",
      "error2",
      "error3"
   ],
   "quoteId":"Quote.Id"
}

Di seguito è riportato un esempio di JSON di output:

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