Loading
Insurance
InsQuoteService:createUpdateQuoteFromExternal

InsQuoteService:createUpdateQuoteFromExternal

Crée un devis ou met à jour un devis existant avec de nouvelles informations via un appel d'API entrant depuis un système externe.

Classe :InsQuoteService

Méthode : createUpdateQuoteFromExternal

Fonctionnement

  1. Reçoit l'objet JSON.

  2. Utilise le sourceSystemIdentifier pour déterminer si un devis existant doit être créé ou mis à jour.

  3. Utilise le PricebookId, qui est un catalogue de prix nommé Standard.

  4. Si le service trouve un Devis avec le sourceSystemIdentifier donné, il met à jour l'objet Devis :

    1. Utilise les produits racine définis dans quoteLines pour ajouter, mettre à jour ou supprimer les éléments de ligne de devis racine. Le service utilise le sourceSystemIdentifier pour identifier la racine.

      Ajoute les enregistrements dans les quoteLines qui ne figurent pas dans le Devis. Met à jour les enregistrements dans les quoteLines existants dans le Devis. Supprime les enregistrements en quoteLines qui sont dans le Devis, mais pas dans les quoteLines.

    2. Pour chaque racine, le service utilise les couvertures, les éléments assurés et les parties définies dans childLines pour ajouter, mettre à jour ou supprimer les couvertures racine, les éléments assurés et les parties. Le service utilise le sourceSystemIdentifier pour identifier la ligne à mettre à jour.

      Ajoute les enregistrements dans les childLines qui ne figurent pas dans le Devis. Met à jour les enregistrements dans les childLines existants dans le Devis. Supprime les enregistrements dans childLines qui figurent dans le Devis, mais pas dans childLines.

    3. Pour chaque couverture racine, élément assuré et partie, le service utilise les couvertures, éléments assurés et parties dans le childLines pour ajouter, mettre à jour ou supprimer les couvertures, éléments assurés et parties respectives. Le service utilise sourceSystemIdentifier pour identifier la ligne à mettre à jour.

      Ajoute les enregistrements dans les childLines qui ne figurent pas dans le Devis. Met à jour les enregistrements dans les childLines existants dans le Devis. Supprime les enregistrements dans childLines qui figurent dans le Devis, mais pas dans childLines.

    4. Les enregistrements de QuoteLineItem de l'élément assuré principal et de QuoteLineItem de partie assurée enfant ont une relation plusieurs-à-plusieurs. Ces relations sont stockées dans l'objet Relation d'élément de devis (QuoteItemRelationship__c). Si un QuoteLineItem d'article assuré a des relations avec plusieurs enregistrements de QuoteLineItem de partie assurée, le service utilise le champ PrimaryChildLineItemId__c pour déterminer laquelle de ces relations est la principale.

      Par exemple, Joan Smith et John Smith sont conducteurs de Lexus 250 ; Joan Smith est définie comme le conducteur principal. La QuoteLineItem Lexus 250 a des PrimaryChildLineItemId__c pointant vers la QuoteLineItem de Joan Smith.

    5. Si deux articles assurés ont la même partie assurée enfant, chaque article assuré doit inclure une entrée dans le childLines correspondant à l'enfant assuré. Pour les deux entrées, ils doivent avoir le même sourceSystemIdentifier.

      Par exemple, les Lexus 250 et Honda Odyssey ont Bob Jones comme pilote. La Lexus 250 a Bob Jones avec sourceSystemIdentifier comme BobJones dans son childLines. Honda Odyssey a un Bob Jones avec sourceSystemIdentifier comme BobJones dans son childLines.

    6. ParentItemId__c et ParentItemId2__c de childLines pointent vers l'ID de la racine.

    7. La SubParentItemId__c des couvertures enfants pointe vers l'élément principal assuré.

  5. Si le service ne trouve pas de devis avec le sourceSystemIdentifier donné, il crée l'objet devis qui inclut des éléments de ligne comme expliqué ici :

    1. Utilise les produits racine définis dans quoteLines pour créer les éléments de ligne de devis racine.

    2. Pour chaque racine, utilise les couvertures, les éléments assurés et les parties définies dans childLines pour créer les couvertures racine, les éléments assurés et les parties.

    3. Pour chaque couverture racine, éléments assurés et parties, utilise les couvertures, éléments assurés et parties définies dans leur childLines pour créer leurs couvertures, éléments assurés et parties.

    4. Les enregistrements de QuoteLineItem de l'élément assuré principal et de QuoteLineItem de partie assurée enfant ont une relation plusieurs-à-plusieurs. Ces relations sont stockées dans l'objet Relation d'élément de devis (QuoteItemRelationship__c). Si un QuoteLineItem d'article assuré a des relations avec plusieurs enregistrements de QuoteLineItem de partie assurée, le service utilise le champ PrimaryChildLineItemId__c pour déterminer laquelle de ces relations est la principale.

      Par exemple, Joan Smith et John Smith sont conducteurs de Lexus 250 ; Joan Smith est définie comme le conducteur principal. La QuoteLineItem Lexus 250 a des PrimaryChildLineItemId__c pointant vers la QuoteLineItem de Joan Smith.

    5. Si deux articles assurés ont la même partie assurée enfant, chaque article assuré doit être inscrit dans le childLines correspondant à la partie assurée enfant. Pour les deux entrées, ils doivent avoir le même sourceSystemIdentifier.

      Par exemple, les Lexus 250 et Honda Odyssey ont Bob Jones comme pilote. La Lexus 250 a Bob Jones avec sourceSystemIdentifier comme BobJones dans ses childLines. Honda Odyssey a Bob Jones avec sourceSystemIdentifier comme BobJones dans son childLines.

    6. ParentItemId__c et ParentItemId2__c de childLines pointent vers l'ID de la racine.

    7. Les SubParentItemId__c des couvertures enfants pointent vers l'élément principal assuré.

  6. Renvoie un Quote.Id et la liste des erreurs rencontrées dans le JSON de sortie.

Entrées

Entrée

Description

quote

Contient toutes les informations pour la création du devis. Pour plus d'informations sur les paires clé-valeur, consultez Description des nœuds JSON.

Description des nœuds JSON

quote

Une liste d'enregistrements. Le service traite un seul devis à la fois.

nœuds de devis

opportunityId

Obligatoire.

L'ID de l'opportunité.

sourceSystemIdentifier

Obligatoire.

Identificateur d'enregistrement unique d'un système extérieur à Salesforce pour identifier le devis à mettre à jour.

type

Le nom d'API du type d'enregistrement de devis.

additionalFields

La paire clé-valeur des autres champs de QuoteLineItem que vous souhaitez remplir.

quoteLines

La liste des produits racine.

Nœuds quoteLines

sourceSystemIdentifier

Obligatoire.

Identificateur d'enregistrement unique d'un système extérieur à Salesforce pour identifier les QuoteLineItems racine à ajouter, mettre à jour ou supprimer dans Salesforce.

instanceKey

Clé d'instance en ItemName__c de produits racine.

productCode

Obligatoire.

Code produit racine.

lineRecordType

Obligatoire.

Type d'enregistrement Produit ou Spécification.

attributeCategories

Les attributs de produit sélectionnés.

additionalFields

La paire clé-valeur des autres champs de QuoteLineItem que vous souhaitez remplir.

childLines

Couvertures de produits racine, articles assurés et parties assurées.

nœuds childLines

sourceSystemIdentifier

Obligatoire.

Identificateur d'enregistrement unique provenant d'un système extérieur à Salesforce pour identifier les couvertures racine, les éléments assurés et les parties assurées à ajouter, mettre à jour ou supprimer dans Salesforce.

instanceKey

Identifie plusieurs instances de la même spécification.

Clé d'instance en ItemName__c d'éléments assurés et de parties assurées.

productCode

Obligatoire.

Le code produit des couvertures racine, des articles assurés et des parties assurées.

lineRecordType

Obligatoire.

Type d'enregistrement Produit ou Spécification.

attributeCategories

Les attributs de produit sélectionnés.

additionalFields

La paire clé-valeur des autres champs de QuoteLineItem que vous souhaitez remplir.

childLines

Couvertures enfants, articles assurés et parties assurées.

nœuds childLines

sourceSystemIdentifier

Obligatoire.

Identificateur d'enregistrement unique provenant d'un système extérieur à Salesforce pour identifier les couvertures enfants, les éléments assurés et les parties assurées à ajouter, mettre à jour ou supprimer dans Salesforce.

Si deux articles assurés ont la même partie assurée enfant, chaque article assuré doit être inscrit dans le childLines correspondant à la partie assurée enfant. Pour les deux entrées, ils doivent avoir le même sourceSystemIdentifier. See InsQuoteService:createUpdateQuote.

instanceKey

Identifie plusieurs instances de la même spécification.

Clé d'instance en ItemName__c d'éléments assurés et de parties assurées.

productCode

Obligatoire.

Le code produit des couvertures enfants, des articles assurés et du produit des parties assurées.

lineRecordType

Obligatoire.

Type d'enregistrement Produit ou Spécification.

attributeCategories

Les attributs de produit sélectionnés.

additionalFields

La paire clé-valeur des autres champs de QuoteLineItem que vous souhaitez remplir.

JSON d'entrée

Voici le format du JSON d'entrée :

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

Voici un exemple de JSON d'entrée :

{
  "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 sortie

Renvoie la Quote.Id du devis créé ou mis à jour dans le JSON de sortie et la liste des erreurs rencontrées.

Voici le format du JSON de sortie :

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

Voici un exemple de JSON de sortie :

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