Loading
Страхование
InsQuoteService:createUpdateQuoteFromExternal

InsQuoteService:createUpdateQuoteFromExternal

Создает смету или обновляет существующую смету новыми сведениями посредством входящего вызова API из внешней системы.

Класс:InsQuoteService

Метод: createUpdateQuoteFromExternal

Принцип работы

  1. Получает объект JSON.

  2. Использует sourceSystemIdentifier для определения создания или обновления существующей сметы.

  3. Использует PricebookId, являющийся прайс-листом под именем Standard.

  4. Если служба находит смету с указанным sourceSystemIdentifier, она обновляет объект сметы:

    1. Использует корневые продукты, определенные в quoteLines, для добавления, обновления или удаления элементов корневой строки сметы. Служба использует sourceSystemIdentifier для определения корня.

      Добавление записей в quoteLines, отсутствующих в смете. Обновление записей в quoteLines, существующих в смете. Удаляет записи в quoteLines, которые находятся в смете, но не находятся в строках сметы.

    2. Служба использует покрытия, застрахованные элементы и стороны, определенные в childLines, для добавления, обновления или удаления корневых покрытий, застрахованных элементов и сторон. Служба использует sourceSystemIdentifier для определения строки для обновления.

      Добавление записей в childLines, отсутствующих в смете. Обновление записей в childLines, существующих в смете. Удаление записей в childLines, содержащихся в смете, но не childLines.

    3. Для каждого корневого покрытия, застрахованных элементов и сторон служба использует покрытия, застрахованные элементы и стороны в childLines добавления, обновления или удаления соответствующих покрытий, застрахованных элементов и сторон. Служба использует sourceSystemIdentifier для определения строки для обновления.

      Добавление записей в childLines, отсутствующих в смете. Обновление записей в childLines, существующих в смете. Удаление записей в childLines, содержащихся в смете, но не childLines.

    4. Записи QuoteLineItem и QuoteLineItem дочерней застрахованной стороны основного застрахованного элемента имеют взаимосвязь «многие:многие». Эти взаимосвязи сохраняются в объекте «Взаимосвязь элементов сметы (QuoteItemRelationship__c)». Если QuoteLineItem застрахованного элемента имеет взаимосвязи с записями QuoteLineItem нескольких застрахованных сторон, служба использует поле PrimaryChildLineItemId__c для определения, какая из этих взаимосвязей является основной.

      Например, Джоан Смит и Джон Смит являются водителями Lexus 250; Джоан Смит установлена в качестве основного водителя. Lexus 250 QuoteLineItem PrimaryChildLineItemId__c указывает на .QuoteLineItem

    5. Если два застрахованных элемента имеют одну дочернюю застрахованную сторону, каждый застрахованный элемент должен иметь запись в соответствующем childLines для дочерней застрахованной стороны. Для обеих записей они должны иметь одинаковые sourceSystemIdentifier.

      Например, и в Lexus 250, и в Honda Odyssey водителем является Боб Джонс. В childLines Lexus 250 есть Боб Джонс с sourceSystemIdentifier BobJones. В childLines "Хонда Одиссей" есть Боб Джонс с sourceSystemIdentifier Бобом Джонсом.

    6. ParentItemId__c и ParentItemId2__c childLines указывают на корневой код.

    7. SubParentItemId__c дочерних покрытий указывает на основной застрахованный элемент.

  5. Если служба не находит смету с указанным sourceSystemIdentifier, она создает объект сметы, содержащий элементы строки, как указано ниже:

    1. Использует корневые продукты, определенные в quoteLines, для создания элементов корневой строки сметы.

    2. Использует покрытия, застрахованные элементы и стороны, определенные в childLines для создания корневых покрытий, застрахованных элементов и сторон.

    3. Для каждого корневого покрытия застрахованные элементы и стороны используют покрытия, застрахованные элементы и стороны, определенные в их childLines для создания покрытий, застрахованных элементов и сторон.

    4. Записи QuoteLineItem и QuoteLineItem дочерней застрахованной стороны основного застрахованного элемента имеют взаимосвязь «многие:многие». Эти взаимосвязи сохраняются в объекте «Взаимосвязь элементов сметы (QuoteItemRelationship__c)». Если QuoteLineItem застрахованного элемента имеет взаимосвязи с записями QuoteLineItem нескольких застрахованных сторон, служба использует поле PrimaryChildLineItemId__c для определения, какая из этих взаимосвязей является основной.

      Например, Джоан Смит и Джон Смит являются водителями Lexus 250; Джоан Смит установлена в качестве основного водителя. Lexus 250 QuoteLineItem PrimaryChildLineItemId__c указывает на .QuoteLineItem

    5. Если два застрахованных элемента имеют одинаковую дочернюю застрахованную сторону, каждый застрахованный элемент должен иметь запись в соответствующем childLines для дочерней застрахованной стороны. Для обеих записей они должны иметь одинаковые sourceSystemIdentifier.

      Например, и в Lexus 250, и в Honda Odyssey водителем является Боб Джонс. У Лексуса 250 есть Боб Джонс с sourceSystemIdentifier как Боб Джонс в childLine. В childLines "Хонда Одиссей" есть Боб Джонс с sourceSystemIdentifier как БобДжонс.

    6. ParentItemId__c и ParentItemId2__c childLines указывают на корневой код.

    7. SubParentItemId__c дочерних покрытий указывает на основной застрахованный элемент.

  6. Возвращает Quote.Id и список ошибок, обнаруженных в выводе JSON.

Вводные данные

Ввод

Описание

quote

Содержит всю информацию для создания сметы. Дополнительные сведения о парах ключ-значение см. в описании узлов JSON.

Описание узлов JSON

quote

Список записей. Служба обрабатывает только одну смету одновременно.

узлы сметы

opportunityId

Обязательно.

Код возможности.

sourceSystemIdentifier

Обязательно.

Уникальный идентификатор записи из системы за пределами Salesforce для определения сметы для обновления.

type

API-имя типа записи сметы.

additionalFields

Пара ключ-значение других полей QuoteLineItem, которые нужно заполнить.

quoteLines

Список корневых продуктов.

Узлы quoteLines

sourceSystemIdentifier

Обязательно.

Уникальный идентификатор записи из системы за пределами Salesforce для определения корневого QuoteLineItems для добавления, обновления или удаления в Salesforce.

instanceKey

Ключ экземпляра в ItemName__c корневых продуктов.

productCode

Обязательно.

Корневой код продукта.

lineRecordType

Обязательно.

Тип записи продукта или характеристики.

attributeCategories

Выбранные атрибуты продукта.

additionalFields

Пара ключ-значение других полей QuoteLineItem, которые нужно заполнить.

childLines

Покрытия корневых продуктов, застрахованные элементы и застрахованные стороны.

childLines

sourceSystemIdentifier

Обязательно.

Уникальный идентификатор записи из системы за пределами Salesforce для определения корневых покрытий, застрахованных элементов и застрахованных сторон для добавления, обновления или удаления в Salesforce.

instanceKey

Определяет несколько экземпляров одной спецификации.

Ключ экземпляра в ItemName__c застрахованных элементов и застрахованных сторон.

productCode

Обязательно.

Код продукта корневых покрытий, застрахованных элементов и застрахованных сторон.

lineRecordType

Обязательно.

Тип записи продукта или характеристики.

attributeCategories

Выбранные атрибуты продукта.

additionalFields

Пара ключ-значение других полей QuoteLineItem, которые нужно заполнить.

childLines

Дочерние покрытия, застрахованные элементы и застрахованные стороны.

childLines

sourceSystemIdentifier

Обязательно.

Уникальный идентификатор записи из системы за пределами Salesforce для определения дочерних покрытий, застрахованных элементов и застрахованных сторон для добавления, обновления или удаления в Salesforce.

Если два застрахованных элемента имеют одинаковую дочернюю застрахованную сторону, каждый застрахованный элемент должен иметь запись в соответствующем childLines для дочерней застрахованной стороны. Для обеих записей они должны иметь одинаковые sourceSystemIdentifier. See InsQuoteService:createUpdateQuote.

instanceKey

Определяет несколько экземпляров одной спецификации.

Ключ экземпляра в ItemName__c застрахованных элементов и застрахованных сторон.

productCode

Обязательно.

Код продукта дочерних покрытий, застрахованных элементов и продукта застрахованных сторон.

lineRecordType

Обязательно.

Тип записи продукта или характеристики.

attributeCategories

Выбранные атрибуты продукта.

additionalFields

Пара ключ-значение других полей QuoteLineItem, которые нужно заполнить.

JSON ввода

Ниже указан формат ввода 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"
                                                      }
                                                   ]
                                                }
                                             }
                                          ]
                                       }
                                    }
                                 ]
                              }
                           }
                        ]
                     }
                  }
               ]
            }
         }
      ]
   }
}

Ниже указан пример ввода 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

Возвращает Quote.Id созданной или обновленной сметы в выводном JSON и список возникших ошибок.

Ниже указан формат вывода JSON:

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

Ниже указан пример вывода JSON:

{
   "errors":[
      "Failed to create/update QuoteLineItem Honda Odyssey.Required fields are missing: [PricebookEntryId, Product2Id]; ",
      "Failed to create/update QuoteLineItem Toyota Camry.Required fields are missing: [PricebookEntryId, Product2Id]; ",
      "Failed to create/update QuoteLineItem Patty Desc.Required fields are missing: [PricebookEntryId, Product2Id]; "
   ],
   "quoteId":"0Q05w0000027aH5CAI"
}
 
Загрузка
Salesforce Help | Article