위치:
InsQuoteService:createUpdateQuote
이 서비스를 사용하여 새 비즈니스에 대한 견적서를 만들거나 기존 견적서를 새 정보로 업데이트하거나 추천 견적서를 만듭니다. 업데이트의 경우 원격 옵션에 업데이트할 견적서의 quoteId가 포함되어야 합니다.
작동 방법
-
서비스는
inputKey의 입력 JSON을 검색합니다.inputKey노드에는 견적서를 만들거나 업데이트하는 데 필요한 정보가 포함되어 있습니다. 이 서비스에 필요한 정보에는 다음이 포함됩니다.-
opportunityId -
endDate(옵션) -
effectiveDate -
productConfigurationDetail기록 -
instanceKey동일한 사양의 여러 인스턴스를 식별하기 위해 필요
-
insuredItems노드이 노드 내에서 서비스는 각 사양의
productCode를 키로 사용하여 보험 항목 사양 및 보험 당사자 사양의 목록을 예상합니다. Term__c견적서의 Term__c 필드를 업데이트하려면 사용합니다.
-
-
입력 JSON의 정보를 사용하여 견적서를 만듭니다.
-
출력 JSON에서 견적 ID를 반환합니다.
-
다음 행 항목을 포함하는 견적서 개체를 만듭니다.
-
productConfigurationDetail에 정의된 루트 제품을 사용하여 루트 견적서 행 항목을 만들거나 업데이트합니다. -
기존 견적을 업데이트할 때 아직 견적서에 없는
productConfigurationDetail의 레코드가 추가되고, 이미 견적서에 있는 레코드는 업데이트됩니다. -
보험 항목 사양, 보험 당사자 사양, 보장 사양을 견적서 행 항목으로 사용합니다.
ParentItemId__c = rootItem.Id를 참조하세요. -
기본 보장 항목의 견적 행 항목 및 하위 보장 당사자 견적 행은 다수 관계입니다. 이러한 관계는 견적서 항목 관계 개체에 저장됩니다. 보험 항목 견적 라인에 여러 보험 당사자 견적 라인과 관계가 있는 경우
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에 저장됩니다. -
기본 보험 항목의 견적 행 항목에 가격이 포함됩니다.
-
-
새 견적서의 경우
createOpportunity가true이고opportunityId가 제공되지 않은 경우inputKey의OpportunityDetailsJSON 노드를 사용하여 Opportunity 레코드를 만듭니다. -
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 또는 통합 절차에서 이 작업을 수행하는 플로는 다음과 같습니다.
-
제품 구성 단계
-
selectedValueAsObject가 true로 설정된 InsProductJSONService:trimOffAttributeCategory 서비스 호출
-
견적서 행 항목 개체의 특성 및 추가 필드 간 매핑을 포함할 수 있는 DataRaptor 변환
-
InsQuoteService:createUpdateQuote 서비스 호출
원격 옵션
옵션 |
설명 |
|---|---|
|
이 옵션이 이 옵션은 상위 > 하위 및 상위 > 하위 > 손자 보험 항목 관계를 지원합니다. |
|
(필수) 견적서를 만들거나 업데이트하기 위해 이 서비스에서 필요한 정보를 가져오는 JSON 키입니다. %를 사용하여 이 키 값을 묶지 마십시오. 이 키는 변수가 아닌 JSON 노드를 나타냅니다. 이 키는 경로가 아닌 JSON 노드를 나타내므로 parent:childnode:childnode 경로 표기를 사용하지 마십시오. 올바른 데이터 경로를 가져오려면 OmniScript 단계에 이 키/값 쌍을 추가할 때 전송/응답 변환 섹션의 전송 JSON 경로 필드에 입력합니다. |
|
이 옵션을 사용하여 인스턴스의 새 견적서 행 항목 집합이 각 호출의 기존 견적서에 삽입되는 여러 서버 호출을 통해 대규모 다중 인스턴스 견적서를 만듭니다. |
|
(선택 사항) 신규 또는 업데이트된 정보를 기반으로 이 서비스가 업데이트하는 기존 견적서의 ID입니다. 서비스에서 기존 견적서를 업데이트해야 하는 경우 사용됩니다. |
|
(선택 사항) 견적서가 다중 루트 견적서인지 나타내는 부울 플래그입니다. 기본값은 |
|
|
|
|
|
(필수) 제품 사양과 연결된 가격 목록의 이름입니다. Salesforce는 견적서 행 항목에 사용된 제품에 가격 목록 항목이 있어야 합니다. |
|
노트
이 옵션을 false로 설정하는 경우
|
|
|
|
|
|
노트
이 옵션을 true로 설정하는 경우 제조업체 또는 프로덕션 코드 값( |
|
(선택 사항) 가공 생산자 ID 즉, |
|
(선택 사항) 프로덕션 코드 ID입니다. |
|
(선택 사항) InsCommissionService.calculate 서비스에 전달된 프로덕션 코드 이름입니다.
|
runEligibilityRequiredDefaultSelectedRules
|
(선택 사항) 기본값은 적격성 및 기본 선택 항목 규칙이 실행되는지 여부를 결정합니다. |
runRelationshipRules
|
(선택 사항) 기본값은 관계 규칙이 실행되는지 여부를 결정합니다. |
runSelectedValivationRules
|
(선택 사항) 기본값은 확인 규칙 선택이 실행되는지 여부를 결정합니다. |
입력 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에는 견적서를 만들거나 업데이트하는 데 필요한 여러 키/값 쌍이 포함되어 있습니다.
키 |
값 |
|---|---|
|
생성된 기회 ID입니다. |
|
생성된 계정 ID입니다. |
|
(선택 사항) 정책이 만료되는 날짜입니다. |
|
정책이 적용되는 날짜입니다. |
|
제품 JSON 구조 모델을 따르는 레코드의 배열입니다. 배열의 각 제품 레코드에 대해 루트 견적서 행 항목이 생성되거나 수정됩니다. 제품의 구조 및 내용에 대해 알아보려면 제품 JSON 구조 모델을 참조하십시오. |
|
(선택 사항)
|
|
서비스에서 보험 항목에 대한 견적서 행 항목을 만드는 데 사용하는 보험 항목의 키/값 쌍입니다. |
견적서에 보험 항목의 단일 인스턴스 또는 여러 보험 항목이 포함되어 있는지 여부와 상관없이 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"
}