Loading
보험
InsQuoteService:createUpdateQuote

InsQuoteService:createUpdateQuote

이 서비스를 사용하여 새 비즈니스에 대한 견적서를 만들거나 기존 견적서를 새 정보로 업데이트하거나 추천 견적서를 만듭니다. 업데이트의 경우 원격 옵션에 업데이트할 견적서의 quoteId가 포함되어야 합니다.

노트
노트

이 서비스가 실행되기 전에 시스템에서 게스트 사용자 확인을 실행합니다.

이 서비스는 게스트 사용자가 사용할 수 있습니다. OmniScript, 통합 절차 또는 UI 과업을 실행하는 게스트 사용자는 계속 진행할 수 있으며, 이 서비스는 실행됩니다. 그러나 이러한 경우에는 quoteId 및 opportunityId가 암호화되므로 게스트 사용자가 해당 ID를 볼 수 없습니다.

중요
중요

Omnistudio 데이터 매퍼를 사용하는 대신 InsQuoteService:createUpdateQuote 서비스를 사용하여 견적서 및 견적서 행 항목을 업데이트합니다.

클래스: InsQuoteService

방법: createUpdateQuote

작동 방법

  1. 서비스는 inputKey의 입력 JSON을 검색합니다. inputKey 노드에는 견적서를 만들거나 업데이트하는 데 필요한 정보가 포함되어 있습니다. 이 서비스에 필요한 정보에는 다음이 포함됩니다.

    • opportunityId

    • endDate (옵션)

    • effectiveDate

    • productConfigurationDetail 기록

    • instanceKey

      동일한 사양의 여러 인스턴스를 식별하기 위해 필요

    • insuredItems 노드

      이 노드 내에서 서비스는 각 사양의 productCode를 키로 사용하여 보험 항목 사양 및 보험 당사자 사양의 목록을 예상합니다.

    • Term__c

      견적서의 Term__c 필드를 업데이트하려면 사용합니다.

  2. 입력 JSON의 정보를 사용하여 견적서를 만듭니다.

  3. 출력 JSON에서 견적 ID를 반환합니다.

  4. 다음 행 항목을 포함하는 견적서 개체를 만듭니다.

    1. productConfigurationDetail에 정의된 루트 제품을 사용하여 루트 견적서 행 항목을 만들거나 업데이트합니다.

    2. 기존 견적을 업데이트할 때 아직 견적서에 없는 productConfigurationDetail의 레코드가 추가되고, 이미 견적서에 있는 레코드는 업데이트됩니다.

    3. 보험 항목 사양, 보험 당사자 사양, 보장 사양을 견적서 행 항목으로 사용합니다. ParentItemId__c = rootItem.Id를 참조하세요.

    4. 기본 보장 항목의 견적 행 항목 및 하위 보장 당사자 견적 행은 다수 관계입니다. 이러한 관계는 견적서 항목 관계 개체에 저장됩니다. 보험 항목 견적 라인에 여러 보험 당사자 견적 라인과 관계가 있는 경우 PrimaryChildLineitemId__c 필드를 사용하여 해당 관계 중 누가 기본 관계인지 결정합니다.

      예를 들어, Joan Smith와 John Smith는 모두 Lexus 250의 운전자이며, Joan Smith는 기본 운전자로 설정됩니다. Lexus 250 견적서 행 항목에는 Joan Smith 의 견적서 행 항목을 가리키는 PrimaryChildLineItemId__c가 있습니다. 모든 견적서 행 항목의 ParentItemId2__c는 rootItem.Id. 자녀 보장 범위의 SubParentItemId__c가 기본 보험 항목을 가리킵니다. 보험 항목 견적서 행 항목 및 보험 당사자 견적서 행 항목 ItemName__c 필드는 이 항목의 instanceKey에 저장됩니다.

    5. 기본 보험 항목의 견적 행 항목에 가격이 포함됩니다.

  5. 새 견적서의 경우 createOpportunity가 true이고 opportunityId가 제공되지 않은 경우 inputKey의 OpportunityDetails JSON 노드를 사용하여 Opportunity 레코드를 만듭니다.

  6. calculateCommission가 true인 경우 InsCommissionService.processQuoteCommission를 호출하여 InsCommissionService.calculate 서비스에 대한 입력을 준비합니다. 계산 서비스가 입력을 처리한 후 계산된 커미션 값을 Quote.CommissionAmount__c로 저장합니다.

견적서 행 항목 개체에 필드 집합이 추가된 경우 InsQuoteService:createUpdateQuote를 호출하는 모든 사용자에게 견적서 세부 사항 필드 집합의 모든 필드에 대한 읽기 권한이 있어야 합니다.

견적서 세부 사항 필드 집합이 견적서 행 항목 개체에 추가되지 않은 경우 사용자 정의 필드를 포함한 모든 필드를 읽을 수 있습니다.

추가 요금

다음은 이 서비스가 추가 요금(세금 및 수수료)과 함께 작동하는 방식입니다.

  • JSON 레코드에 taxesAndFees 필드가 지정된 경우 taxesAndFees 목록의 각 항목에 해당하는 QuotePricingAdjustment__c 레코드가 유지됩니다.

  • JSON 레코드에 taxAmount 필드가 지정된 경우 TaxAmount__c 필드는 생성된 QuoteLineItem의 taxAmount 필드 값으로 설정됩니다.

  • JSON 레코드에 feeAmount 필드가 지정된 경우 FeeAmount__c 필드는 생성된 QuoteLineItem의 feeAmount 필드 값으로 설정됩니다.

견적서 행 항목에 추가 필드 추가

이 서비스에서 견적서 행 항목에 추가 필드를 작성해야 하는 경우 먼저 InsProductJSONService:trimOffAttributeCategory 서비스를 호출해야 합니다.

OmniScript 또는 통합 절차에서 이 작업을 수행하는 플로는 다음과 같습니다.

  1. 제품 구성 단계

  2. selectedValueAsObject가 true로 설정된 InsProductJSONService:trimOffAttributeCategory 서비스 호출

  3. 견적서 행 항목 개체의 특성 및 추가 필드 간 매핑을 포함할 수 있는 DataRaptor 변환

  4. InsQuoteService:createUpdateQuote 서비스 호출

원격 옵션

옵션

설명

createInsuredItemsRelationships

true 또는 false

이 옵션이 true로 설정된 경우 보험 항목 간의 instanceKey > parentInstanceKey 관계 목록을 지정할 수 있습니다.

이 옵션은 상위 > 하위 및 상위 > 하위 > 손자 보험 항목 관계를 지원합니다.

inputKey

(필수)

견적서를 만들거나 업데이트하기 위해 이 서비스에서 필요한 정보를 가져오는 JSON 키입니다.

%를 사용하여 이 키 값을 묶지 마십시오. 이 키는 변수가 아닌 JSON 노드를 나타냅니다.

이 키는 경로가 아닌 JSON 노드를 나타내므로 parent:childnode:childnode 경로 표기를 사용하지 마십시오.

올바른 데이터 경로를 가져오려면 OmniScript 단계에 이 키/값 쌍을 추가할 때 전송/응답 변환 섹션의 전송 JSON 경로 필드에 입력합니다.

insertInstance

true 또는 false

true로 설정하면 서비스가 기존 견적서에 추가 견적서 행 항목을 삽입합니다. 견적서 머리글, 루트 행 항목 또는 상위 견적서 행 항목은 업데이트하지 않습니다.

이 옵션을 사용하여 인스턴스의 새 견적서 행 항목 집합이 각 호출의 기존 견적서에 삽입되는 여러 서버 호출을 통해 대규모 다중 인스턴스 견적서를 만듭니다.

quoteId

(선택 사항)

신규 또는 업데이트된 정보를 기반으로 이 서비스가 업데이트하는 기존 견적서의 ID입니다. 서비스에서 기존 견적서를 업데이트해야 하는 경우 사용됩니다.

isMultiRoot

(선택 사항)

견적서가 다중 루트 견적서인지 나타내는 부울 플래그입니다.

기본값은 false입니다.

minimizeQliQuerySize

true 또는 false

true로 설정하면 서비스가 영향을 받는 견적서 행 항목만 쿼리합니다. 특히 입력 제품 JSON 노드 또는 보장 항목 JSON 노드에서 제품을 참조하는 견적서 행 항목입니다.

populateCalcResults

true 또는 false

false로 설정하면 서비스에서 rootItem.CalculatedPriceJSON_c 필드와 Quote.CalculatedPriceJSON_c 필드를 모두 채우지 않습니다.

pricebook

(필수)

제품 사양과 연결된 가격 목록의 이름입니다.

Salesforce는 견적서 행 항목에 사용된 제품에 가격 목록 항목이 있어야 합니다.

recalculateTaxesAndFees

true 또는 false

true로 설정하면 세금 및 수수료가 다시 계산됩니다.

false로 설정하면 서비스에서 세금 및 수수료를 재계산하지 않습니다.

노트
노트

이 옵션을 false로 설정하는 경우 ins-coverage-quote-runtime-container UI 템플릿에도 줄을 추가해야 합니다.

ins-coverage-quote-runtime-container.js에서 115선에서 : optionsMap.recalculateTaxesAndFees = false을 입력합니다.

createOpportunity

true 또는 false

opportunityId가 제공되지 않은 경우 true로 설정하면 서비스에서 inputKey의 OpportunityDetails JSON 노드를 사용하여 새 Opportunity 레코드를 만듭니다. 이 노드는 기회 sObject의 필드에 매핑됩니다.

returnQuote

true 또는 false

true로 설정하면 서비스 출력에 quoteDetail JSON 노드의 견적서 세부 사항이 포함됩니다.

calculateCommission

true 또는 false

true로 설정하면 서비스에서 루트 항목에 대한 커미션을 계산하고 총액을 Quote.CommissionAmount에 저장합니다.

false(기본값)로 설정하면 서비스에서 커미션을 계산하지 않습니다.

노트
노트

이 옵션을 true로 설정하는 경우 제조업체 또는 프로덕션 코드 값(primaryProducerId, productionCodeId 또는 productionCodeName) 중 하나 이상을 입력해야 합니다.

primaryProducerId

(선택 사항)

가공 생산자 ID 즉, commissionScheduleId를 검색하고 수수료 금액을 계산하는 데 사용된 생산자입니다.

productionCodeId

(선택 사항)

프로덕션 코드 ID입니다.

productionCodeName

(선택 사항)

InsCommissionService.calculate 서비스에 전달된 프로덕션 코드 이름입니다.

productionCodeId를 입력하지 않으면 서비스에서 productionCodeName을 사용하여 productionCodeId를 검색합니다. 두 값을 모두 입력하지만 일치하지 않는 경우 productionCodeId가 우선합니다.

runEligibilityRequiredDefaultSelectedRules

(선택 사항)

기본값은 true입니다.

적격성 및 기본 선택 항목 규칙이 실행되는지 여부를 결정합니다.

runRelationshipRules

(선택 사항)

기본값은 true입니다.

관계 규칙이 실행되는지 여부를 결정합니다.

runSelectedValivationRules

(선택 사항)

기본값은 true입니다.

확인 규칙 선택이 실행되는지 여부를 결정합니다.

입력 JSON

이 서비스는 inputKey의 가치를 찾습니다. 제품 사양의 API 탭으로 이동하여 이 서비스에 필요한 입력 JSON을 찾습니다.

이 예에서는 inputKey = quotePolicyJSON입니다.

"quotepolicyJson": {
  "productConfigurationDetail": {
    "records": [{
          "rootProductId": "01t1I000002fuBoQAI",
          "rootProductCode": "AUTOROOT",
          "timestamp": 1534288040769,
          "hasInstanceKeys": true,
          "childProductsCount": 4,
          "instanceKeyChildren": 2,
          "pathFromChild": "[0]",
          "pathFromRoot": "[0]",
          "attributeCategories": {
            "records": [{
                "productAttributes": {
                  "records": [{
                      "parentProductId": "01t1I000002fuBoQAI",
                      "parentProductCode": "AUTOROOT",
                      "pathFromChild": "attributeCategories.records[0].productAttributes.records[0]",
                      "pathFromRoot": "attributeCategories.records[0].productAttributes.records[0]",
                      "userValues": "test",
                      "values": [{
                        "disabled": false,
                        "readonly": false
                      }]
                      "totalSize": 1
                    },
                    "id": "a1V1I0000007xJSUAY",
                    "Name": "Alan Health Attributes",
                    "Code__c": "AHA",
                    "displaySequence": 5
                  }
                ],
                "totalSize": 1
              },
              "childProducts": {
                "records": [{
                    "rootProductId": "a2f1I000000BI6JQAW",
                    "rootProductCode": "stolenProperty",
                    "customizeSectionsOpen": null,
                    "numberAttributes": 1,
                    "numberCategories": 1,
                    "originalIndex": 0,
                    "parentProductName": "Auto Root",
                    "pathFromRoot": "[0].childProducts.records[0]",
                    "attributeCategories": {
                      "records": [{
                        "productAttributes": {
                          "records": [{
                            "parentProductId": "a2f1I000000BI6JQAW",
                            "parentProductCode": "stolenProperty",
                            "originalAttributeIndex": 0,
                            "originalCategoryIndex": 0,
                            "originalProductIndex": 0,
                            "pathFromChild": "attributeCategories.records[0].productAttributes.records[0]",
                            "pathFromRoot": "childProducts.records[0].attributeCategories.records[0].productAttributes.records[0]",
                            "userValues": false,
                            "values": [...]
                              ...
                          }]
                          "totalSize": 1
                        },
                        "id": "a1V1I0000007xJSUAY",
                        "Name": "Alan Health Attributes",
                        "Code__c": "AHA",
                        "displaySequence": 5
                      }],
                      "totalSize": 1
                    },
                    "childProducts": {
                      ...
                    }
                    "Price": 80,
                    "productId": "01t1I000002fuBoQAI",
                    "Term__c": "Semi-Annual",
                    "PricingFormula__c": "SUM(AutoPremium__autoPremium + rentalTotal + medicalTotal + roadsideTotal + dedWaiverTotal + uninsuredMotoristPDTotal + uninsuredMotoristBITotal)",
                    "IsConfigurable__c": true,
                    "RecordTypeName__c": "Product",
                    "IsRecommended__c": false,
                    "ProductCode": "AUTOROOT",
                    "Name": "Auto Root",
                    "Id": "01t1I000002fuBoQAI",
                    "RawPriceData": [{
                        "aggregationResults": {},
                        "calculationResults": [{
                            "ID": "0",
                            "comprehensiveTotal": 500,
                            "rentalTotal": 40,
                            "medicalTotal": 10,
                            "roadsideTotal": 10,
                            "dedWaiverTotal": 10,
                            "uninsuredMotoristPDTotal": 0,
                            "uninsuredMotoristBITotal": 100,
                            "AUTO.instanceKey": "2015 Lexus LX250",
                            "DRIVER.FN": "Joan",
                            "DRIVER.LN": "Smith"
                          },
                          "ID": "1",
                          "comprehensiveTotal": 500,
                          "rentalTotal": 40,
                          "medicalTotal": 10,
                          "roadsideTotal": 10,
                          "dedWaiverTotal": 10,
                          "uninsuredMotoristPDTotal": 0,
                          "uninsuredMotoristBITotal": 100,
                          "AUTO.instanceKey": "2015 Lexus LX250",
                          "DRIVER.FN": "John",
                          "DRIVER.LN": "Smith"
                        },
                        ...
                      ]
                    },
                    {
                      "aggregationResults": {},
                      "calculationResults": [{
                          "ID": "4",
                          "comprehensiveTotal": 500,
                          "rentalTotal": 40,
                          "medicalTotal": 10,
                          "roadsideTotal": 10,
                          "dedWaiverTotal": 10,
                          "uninsuredMotoristPDTotal": 0,
                          "uninsuredMotoristBITotal": 100,
                          "AUTO.instanceKey": "2006 Honda Odyssey",
                          "DRIVER.FN": "Joan",
                          "DRIVER.LN": "Smith"
                        },
                        {
                          "ID": "5",
                          "comprehensiveTotal": 500,
                          "rentalTotal": 40,
                          "medicalTotal": 10,
                          "roadsideTotal": 10,
                          "dedWaiverTotal": 10,
                          "uninsuredMotoristPDTotal": 0,
                          "uninsuredMotoristBITotal": 100,
                          "AUTO.instanceKey": "2006 Honda Odyssey",
                          "DRIVER.FN": "John",
                          "DRIVER.LN": "Smith"
                        },
                        ...
                      ]
                    }
                  ],
                  "CalculatedPriceData": {
                    "2006 Honda Odyssey": {
                      "ID": "4",
                      "comprehensiveTotal": 500,
                      "rentalTotal": 40,
                      "medicalTotal": 10,
                      "roadsideTotal": 10,
                      "dedWaiverTotal": 10,
                      "uninsuredMotoristPDTotal": 0,
                      "uninsuredMotoristBITotal": 100,
                      "AUTO.instanceKey": "2006 Honda Odyssey",
                      "DRIVER.FN": "Joan",
                      "DRIVER.LN": "Smith"
                    },
                    "2015 Lexus LX250": {
                      "ID": "0",
                      "comprehensiveTotal": 500,
                      "rentalTotal": 40,
                      "medicalTotal": 10,
                      "roadsideTotal": 10,
                      "dedWaiverTotal": 10,
                      "uninsuredMotoristPDTotal": 0,
                      "uninsuredMotoristBITotal": 100,
                      "AUTO.instanceKey": "2015 Lexus LX250",
                      "DRIVER.FN": "Joan",
                      "DRIVER.LN": "Smith"
                    }
                  },
                  "displaySequence": -1
                }
              ]
            },
            "insuredItems": {
              "DRIVER": [{
                  "isPrimary": false,
                  "instanceKey": "Joan Smith",
                  "LN": "Smith",
                  "AGE": 20,
                  "FN": "Joan",
                  "GENDER": "Female",
                  "FirstName": "Joan",
                  "LastName": "Smith",
                  "partyId": "a0q1I000001emNeQAI"
                },
                {
                  "isPrimary": false,
                  "instanceKey": "John Smith",
                  "LN": "Smith",
                  "AGE": 30,
                  "FN": "John",
                  "GENDER": "Male",
                  "FirstName": "John",
                  "LastName": "Smith",
                  "partyId": "a0q1I000001emNfQAI"
                },
              ],
              "AUTO": [{
                  "autoLicNum": "Lexus",
                  "autoModel": "LX250",
                  "autoYear": 2015,
                  "instanceKey": "2015 Lexus LX250",
                  "BodyClass": "Sedan/Saloon",
                  "VehicleType": "PASSENGER CAR",
                  "isPrimary": true
                },
                {
                  "autoLicNum": "Honda",
                  "autoModel": "Odyssey",
                  "autoYear": 2006,
                  "instanceKey": "2006 Honda Odyssey",
                  "BodyClass": "Minivan",
                  "VehicleType": "MULTIPURPOSE PASSENGER VEHICLE (MPV)",
                  "isPrimary": true
                }
              ]
            },
            "accountId": "0011I00000QknfjQAB",
            "opportunityId": "0061I00000AV8gBQAT"
          }

inputKey 내의 JSON에는 견적서를 만들거나 업데이트하는 데 필요한 여러 키/값 쌍이 포함되어 있습니다.

키

값

opportunityId

생성된 기회 ID입니다.

accountId

생성된 계정 ID입니다.

endDate

(선택 사항)

정책이 만료되는 날짜입니다.

effectiveDate

정책이 적용되는 날짜입니다.

productConfigurationDetail

제품 JSON 구조 모델을 따르는 레코드의 배열입니다.

배열의 각 제품 레코드에 대해 루트 견적서 행 항목이 생성되거나 수정됩니다.

제품의 구조 및 내용에 대해 알아보려면 제품 JSON 구조 모델을 참조하십시오.

additionalFields

(선택 사항)

additionalFields 키는 견적서 행 항목이 아닌 루트 따옴표의 키/값 쌍에만 적용됩니다. 견적서 행 항목의 경우 productConfigurationDetail JSON을 사용하여 additionalFields를 추가합니다.

insuredItems

서비스에서 보험 항목에 대한 견적서 행 항목을 만드는 데 사용하는 보험 항목의 키/값 쌍입니다.

견적서에 보험 항목의 단일 인스턴스 또는 여러 보험 항목이 포함되어 있는지 여부와 상관없이 insuredItems 노드를 레코드의 배열로 포맷합니다.

"insuredItems": {
  "DRIVER": [{
    "isPrimary": false,
    "instanceKey": null,
    "additionalFields": {},
    "productCode": "DRIVER",
    "productId": "01t1I000002fuByQAI",
    "FN": null,
    "GENDER": null,
    "LN": null,
    "partyId": null
  }],
  "AUTO": [{
    "isPrimary": true,
    "instanceKey": null,
    "additionalFields": {},
    "productCode": "AUTO",
    "productId": "01t1I000002fuBtQAI",
    "autoBrakes": false,
    "est_annual_mileage": "10001-20000",
    "autoLicNum": null,
    "autoModel": null,
    "autoStyle": null,
    "autoVIN": null,
    "autoYear": ""
  }]
}

제품 계층에서 루트 제품 바로 아래에 있는 보험 항목의 단일 인스턴스의 경우 이 예에서 형식을 사용할 수 있습니다. 여기서 insuredItems 기록에는 보험 항목 및 사용자가 각 항목에 대해 선택한 값이 포함됩니다. 이 입력 JSON은 지원되지만 이전 릴리스에서 제공되며 권장하지 않습니다.

"insuredItems": {
  "smallBusiness": {
    "protectionClass": 3,
    "yearBuilding": 2000,
    "yearWiring": 2000,
    "yearRoof": 2003,
    "yearPlumbing": 2000,
    "yearBusiness": 2002,
    "businessParkingLot": "no",
    "legalForm": "sole",
    "busLocation": "standalone",
    "busHours": 8,
    "busEmployees": 24,
    "bldgSprinker": "Y",
    "bldgFrame": "frame",
    "bldgAlarm": "none",
    "ageWiring": 18,
    "ageRoof": 15,
    "agePlumbing": 18,
    "ageBusiness": 16,
    "ageBuilding": 18,
    "SIC": "5451",
    "SICCategory": "Food Stores"

새 견적서의 경우 createOpportunity가 true이고 opportunityId가 제공되지 않은 경우 서비스에서 inputKey의 OpportunityDetails JSON 노드를 사용하여 새 Opportunity 레코드를 만듭니다. 입력 형식 OpportunityDetails:FieldName을 사용합니다. 다음은 OpportunityDetails 노드의 예입니다.

"OpportunityDetails": {
      "AccountId": "0015f00000DSFgqAAH",
      "Name": "Auto Quote: Rachel Adams (2022-01-03)",
      "StageName": "Qualification",
      "CloseDate": "2022-01-03"
    },
노트
노트

preTransformBundle Alternative

또는 입력 JSON에 전달된 데이터를 서비스에 필요한 형식으로 매핑하는 DataRaptor 변환을 정의할 수 있습니다. 이 DataRaptor의 출력 JSON은 제품 보기의 API 탭에 정의된 userInputs JSON입니다. 서비스에서 DataRaptor를 사용하도록 preTransformBundle 옵션을 DataRaptor의 이름으로 설정합니다.

출력 JSON

서비스가 새로 만든 견적서의 견적 ID를 반환합니다. 또한 returnQuote 입력이 true인 경우 견적서 세부 사항을 반환하고 createOpportunity가 true이고 opportunityId가 제공되지 않은 경우 기회 ID를 반환합니다.

{
  "quoteDetail": {
    "stmpbhins04__PrimaryRootItemId__c": "0QLR00000000e3NOAQ",
    "stmpbhins04__TotalPremiumforTerm__c": 2000,
    "stmpbhins04__MonthlyPremium__c": 166.66666666666666,
    "stmpbhins04__StandardPremium__c": 2000,
    "Id": "0Q0R00000000WplKAE",
    "stmpbhins04__EndDate__c": "2022-05-04",
    "stmpbhins04__EffectiveDate__c": "2021-05-05",
    "stmpbhins04__Term__c": "Annual",
    "Name": "Auto Root",
    "OpportunityId": "006R0000002xk8QIAQ",
    "Pricebook2Id": "01sR0000001GULqIAO"
  },
  "quoteId": "0Q0R00000000WplKAE",
  "opportunityId": "006R0000002xk8QIAQ",
  "error": "OK"
}
 
로드 중
Salesforce Help | Article