Loading
Seguro
InsQuoteService:createUpdateQuoteFromExternal

InsQuoteService:createUpdateQuoteFromExternal

Crea un presupuesto o actualiza un presupuesto existente con nueva información a través de una llamada de API entrante desde un sistema externo.

Clase:InsQuoteService

Método: createUpdateQuoteFromExternal

Funcionamiento

  1. Recibe el objeto JSON.

  2. Utiliza el sourceSystemIdentifier para determinar si crear o actualizar un presupuesto existente.

  3. Utiliza el PricebookId, que es una lista de precios denominada Estándar.

  4. Si el servicio encuentra un presupuesto con el sourceSystemIdentifier concreto, actualiza el objeto de presupuesto:

    1. Utiliza los productos raíz definidos en quoteLines para agregar, actualizar o eliminar las partidas de presupuesto raíz. El servicio utiliza el sourceSystemIdentifier para identificar la raíz.

      Agrega los registros en quoteLines que no están en el presupuesto. Actualiza los registros en quoteLines existentes en el presupuesto. Elimina los registros en quoteLines que están en el presupuesto pero no en las partidas de presupuesto.

    2. Para cada raíz, el servicio utiliza las coberturas, los elementos asegurados y las partes definidas con el childLines de agregar, actualizar o eliminar las coberturas raíz, los elementos asegurados y las partes. El servicio utiliza el sourceSystemIdentifier para identificar la partida que actualizar.

      Agrega los registros en childLines que no están en el presupuesto. Actualiza los registros en childLines existentes en el presupuesto. Elimina los registros en childLines que están en el presupuesto pero no en childLines.

    3. Para cada cobertura raíz, elementos asegurados y partes, el servicio utiliza las coberturas, elementos asegurados y partes en el childLines para agregar, actualizar o eliminar las coberturas, elementos asegurados y partes correspondientes. El servicio utiliza sourceSystemIdentifier para identificar la partida que se va a actualizar.

      Agrega los registros en childLines que no están en el presupuesto. Actualiza los registros en childLines existentes en el presupuesto. Elimina los registros en childLines que están en el presupuesto pero no en childLines.

    4. Los registros de QuoteLineItem y QuoteLineItem de parte asegurada secundaria del elemento asegurado principal tienen una relación muchos:muchos. Estas relaciones se almacenan en el objeto Relación de partida de presupuesto (QuoteItemRelationship__c). Si un QuoteLineItem de artículo asegurado tiene relaciones con múltiples registros de QuoteLineItem de parte asegurada, el servicio utiliza el campo PrimaryChildLineItemId__c para determinar cuál de esas relaciones es la principal.

      Por ejemplo, tanto Joan Smith como John Smith son controladores de Lexus 250; Joan Smith se establece como el controlador principal. El Lexus 250 QuoteLineItem tiene PrimaryChildLineItemId__c que apuntan a la QuoteLineItem de Joan Smith.

    5. Si dos elementos asegurados tienen la misma parte asegurada secundaria, cada elemento asegurado debe tener un asiento en el childLines respectivo para la parte asegurada secundaria. Para ambas entradas, deben tener el mismo sourceSystemIdentifier.

      Por ejemplo, tanto Lexus 250 como Honda Odyssey tienen a Bob Jones como piloto. Lexus 250 tiene Bob Jones con sourceSystemIdentifier como BobJones en su childLines. Honda Odyssey tiene un Bob Jones con sourceSystemIdentifier como BobJones en su childLines.

    6. ParentItemId__c y ParentItemId2__c de childLines apuntan al Id. de la raíz.

    7. La SubParentItemId__c de coberturas secundarias apunta al elemento asegurado principal.

  5. Si el servicio no encuentra un presupuesto con el sourceSystemIdentifier concreto, crea el objeto de presupuesto que incluye partidas como se explica aquí:

    1. Utiliza los productos raíz definidos en quoteLines para crear las partidas de presupuesto raíz.

    2. Para cada raíz, utiliza las coberturas, los elementos asegurados y las partes definidas con el childLines de crear las coberturas raíz, los elementos asegurados y las partes.

    3. Para cada cobertura raíz, los elementos asegurados y las partes utilizan las coberturas, los elementos asegurados y las partes definidas en sus childLines para crear sus coberturas, elementos asegurados y partes.

    4. Los registros de QuoteLineItem y QuoteLineItem de parte asegurada secundaria del elemento asegurado principal tienen una relación muchos:muchos. Estas relaciones se almacenan en el objeto Relación de partida de presupuesto (QuoteItemRelationship__c). Si un QuoteLineItem de artículo asegurado tiene relaciones con múltiples registros de QuoteLineItem de parte asegurada, el servicio utiliza el campo PrimaryChildLineItemId__c para determinar cuál de esas relaciones es la principal.

      Por ejemplo, tanto Joan Smith como John Smith son controladores de Lexus 250; Joan Smith se establece como el controlador principal. El Lexus 250 QuoteLineItem tiene PrimaryChildLineItemId__c que apuntan a la QuoteLineItem de Joan Smith.

    5. Si dos elementos asegurados tienen la misma parte asegurada secundaria, cada elemento asegurado debe tener entrada en el childLines respectivo para la parte asegurada secundaria. Para ambas entradas, deben tener el mismo sourceSystemIdentifier.

      Por ejemplo, tanto Lexus 250 como Honda Odyssey tienen a Bob Jones como piloto. Lexus 250 tiene Bob Jones con sourceSystemIdentifier como BobJones en su childLines. Honda Odyssey tiene Bob Jones con sourceSystemIdentifier como BobJones en su childLines.

    6. ParentItemId__c y ParentItemId2__c de childLines apuntan al Id. de la raíz.

    7. Los SubParentItemId__c de coberturas secundarias apuntan al elemento asegurado principal.

  6. Devuelve un Quote.Id y la lista de errores encontrados en el JSON de salida.

Entradas

Ingreso

Descripción

quote

Contiene toda la información para la creación del presupuesto. Para obtener más información sobre los pares clave-valor, consulte Descripción de nodos JSON.

Descripción de nodos JSON

quote

Una lista de registros. El servicio procesa solo un presupuesto en un momento dado.

nodos de presupuesto

opportunityId

Obligatorio.

El Id. de la oportunidad.

sourceSystemIdentifier

Obligatorio.

Identificador de registro exclusivo de un sistema externo a Salesforce para identificar qué presupuesto actualizar.

type

El nombre de API del tipo de registro de presupuesto.

additionalFields

El par clave-valor de otros campos de QuoteLineItem que desea rellenar.

quoteLines

La lista de productos raíz.

quoteLines nodes

sourceSystemIdentifier

Obligatorio.

Identificador de registro exclusivo de un sistema externo a Salesforce para identificar qué raíz de QuoteLineItems agregar, actualizar o eliminar en Salesforce.

instanceKey

Clave de instancia en ItemName__c de productos raíz.

productCode

Obligatorio.

Código de producto raíz.

lineRecordType

Obligatorio.

Tipo de registro de producto o especificación.

attributeCategories

Los atributos de producto seleccionados.

additionalFields

El par clave-valor de otros campos de QuoteLineItem que desea rellenar.

childLines

Coberturas de productos raíz, artículos asegurados y partes aseguradas.

childLines nodes

sourceSystemIdentifier

Obligatorio.

Identificador de registro exclusivo de un sistema externo a Salesforce para identificar qué coberturas raíz, elementos asegurados y partes aseguradas agregar, actualizar o eliminar en Salesforce.

instanceKey

Identifica múltiples instancias de la misma especificación.

Clave de instancia en ItemName__c de elementos asegurados y partes aseguradas.

productCode

Obligatorio.

El código de producto de coberturas raíz, artículos asegurados y partes aseguradas.

lineRecordType

Obligatorio.

Tipo de registro de producto o especificación.

attributeCategories

Los atributos de producto seleccionados.

additionalFields

El par clave-valor de otros campos de QuoteLineItem que desea rellenar.

childLines

Coberturas secundarias, artículos asegurados y partes aseguradas.

childLines nodes

sourceSystemIdentifier

Obligatorio.

Identificador de registro exclusivo de un sistema externo a Salesforce para identificar qué coberturas secundarias, artículos asegurados y partes aseguradas agregar, actualizar o eliminar en Salesforce.

Si dos elementos asegurados tienen la misma parte asegurada secundaria, cada elemento asegurado debe tener entrada en el childLines respectivo para la parte asegurada secundaria. Para ambas entradas, deben tener el mismo sourceSystemIdentifier. See InsQuoteService:createUpdateQuote.

instanceKey

Identifica múltiples instancias de la misma especificación.

Clave de instancia en ItemName__c de elementos asegurados y partes aseguradas.

productCode

Obligatorio.

El código de producto de coberturas secundarias, artículos asegurados y productos de partes aseguradas.

lineRecordType

Obligatorio.

Tipo de registro de producto o especificación.

attributeCategories

Los atributos de producto seleccionados.

additionalFields

El par clave-valor de otros campos de QuoteLineItem que desea rellenar.

JSON de entrada

Este es el formato del JSON de entrada:

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

Este es un ejemplo del JSON de entrada:

{
  "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 de salida

Devuelve el Quote.Id del presupuesto creado o actualizado en el JSON de salida y la lista de errores encontrados.

Este es el formato del JSON de salida:

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

Este es un ejemplo del JSON de salida:

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