위치:
InsQuoteService:createUpdateQuoteFromExternal
외부 시스템에서 인바운드 API 호출을 통해 견적서를 만들거나 기존 견적서를 새 정보로 업데이트합니다.
클래스:InsQuoteService
방법: createUpdateQuoteFromExternal
작동 방법
-
JSON 개체를 수신합니다.
-
sourceSystemIdentifier을 사용하여 기존 견적서를 만들 것인지 업데이트할 것인지 결정합니다. -
표준이라는 가격 목록인
PricebookId을 사용합니다. -
서비스가 지정된
sourceSystemIdentifier가 있는 견적서를 찾으면 다음과 같이 견적서 개체를 업데이트합니다.-
quoteLines에 정의된 루트 제품을 사용하여 루트 견적서 행 항목을 추가, 업데이트 또는 삭제합니다. 서비스는sourceSystemIdentifier을 사용하여 루트를 식별합니다.견적서에 없는
quoteLines의 레코드를 추가합니다. 견적서에 있는quoteLines의 레코드를 업데이트합니다. quoteLines가 아닌 Quote에 있는quoteLines의 레코드를 삭제합니다. -
각 루트에 대해 서비스는 보장 범위, 보험 항목 및
childLines에 정의된 당사자를 사용하여 루트 보장 범위, 보험 항목 및 당사자를 추가, 업데이트 또는 삭제합니다. 서비스는 업데이트할 회선을 식별하기 위해sourceSystemIdentifier을 사용합니다.견적서에 없는
childLines의 레코드를 추가합니다. 견적서에 있는childLines의 레코드를 업데이트합니다. 견적서에 있지만childLines에 없는childLines의 레코드를 삭제합니다. -
각 근본 보장, 보험 항목 및 당사자에 대해 서비스는 보장, 보험 항목 및
childLines당사자를 사용하여 각 보장, 보험 항목 및 당사자를 추가, 업데이트 또는 삭제합니다. 서비스는 업데이트할 회선을 식별하기 위해sourceSystemIdentifier를 사용합니다.견적서에 없는
childLines의 레코드를 추가합니다. 견적서에 있는childLines의 레코드를 업데이트합니다. 견적서에 있지만childLines에 없는childLines의 레코드를 삭제합니다. -
기본 보험 항목의
QuoteLineItem및 자녀 보험 당사자QuoteLineItem기록은 다대다 관계가 있습니다. 이러한 관계는 Quote Item Relationship(QuoteItemRelationship__c) 개체에 저장됩니다. 보험 항목QuoteLineItem에 여러 보험 당사자QuoteLineItem레코드와의 관계가 있는 경우 서비스는PrimaryChildLineItemId__c필드를 사용하여 해당 관계 중 누가 기본 관계인지 결정합니다.예를 들어, Joan Smith와 John Smith는 모두 Lexus 250의 운전자이며, Joan Smith는 기본 운전자로 설정됩니다. Lexus 250
QuoteLineItem에는 Joan Smith의QuoteLineItem를 가리키는PrimaryChildLineItemId__c가 있습니다. -
두 보험 항목에 동일한 자녀 보험 당사자가 있는 경우 각 보험 항목에는 자녀 보험 당사자에 대한 각각의
childLines에 항목이 있어야 합니다. 두 항목 모두 동일한sourceSystemIdentifier이어야 합니다.예를 들어, Lexus 250과 Honda Odyssey 모두 Bob Jones가 운전자입니다. Lexus 250에는 Bob Jones와
sourceSystemIdentifier가childLines에서 BobJones 역할을 합니다. Honda Odyssey는childLines에서 BobJones의sourceSystemIdentifier와 함께 Bob Jones를 가지고 있습니다. -
childLines의 ParentItemId__c 및 ParentItemId2__c는 루트의 Id를 가리킵니다. -
자녀 보장 보험의
SubParentItemId__c는 기본 보험 항목을 가리킵니다.
-
-
서비스에서 지정된
sourceSystemIdentifier의 견적서를 찾을 수 없는 경우 다음과 같이 행 항목을 포함하는 견적서 개체를 만듭니다.-
quoteLines에 정의된 루트 제품을 사용하여 루트 견적서 행 항목을 만듭니다. -
각 루트에 대해 보장 범위, 보험 항목 및
childLines에 정의된 당사자를 사용하여 루트 보장 범위, 보험 항목 및 당사자를 만듭니다. -
각 근본 보장 범위, 보험 항목 및 당사자에 대해 보장 범위, 보험 항목 및
childLines에 정의된 당사자를 사용하여 보장 범위, 보험 항목 및 당사자를 만듭니다. -
기본 보험 항목의
QuoteLineItem및 자녀 보험 당사자QuoteLineItem기록은 다대다 관계가 있습니다. 이러한 관계는 Quote Item Relationship(QuoteItemRelationship__c) 개체에 저장됩니다. 보험 항목QuoteLineItem에 여러 보험 당사자QuoteLineItem레코드와의 관계가 있는 경우 서비스에서PrimaryChildLineItemId__c필드를 사용하여 해당 관계 중 누가 기본 관계인지 확인합니다.예를 들어, Joan Smith와 John Smith는 모두 Lexus 250의 운전자이며, Joan Smith는 기본 운전자로 설정됩니다. Lexus 250
QuoteLineItem에는 Joan Smith의QuoteLineItem를 가리키는PrimaryChildLineItemId__c가 있습니다. -
두 보험 항목이 동일한 자녀 보험 당사자가 있는 경우 각 보험 항목은 자녀 보험 당사자의 각각의
childLines에 등록해야 합니다. 두 항목 모두 동일한sourceSystemIdentifier이어야 합니다.예를 들어, Lexus 250과 Honda Odyssey 모두 Bob Jones가 운전자입니다. Lexus 250에는 Bob Jones가 있고
sourceSystemIdentifier는 BobJones가childLine입니다. Honda Odyssey는 Bob Jones와sourceSystemIdentifier의childLines로 BobJones를 가지고 있습니다. -
childLines의ParentItemId__c및ParentItemId2__c은 루트의 Id를 가리킵니다. -
자녀 보장 범위의
SubParentItemId__c는 기본 보험 항목을 가리킵니다.
-
-
출력 JSON에서 발생한 오류 목록과
Quote.Id을 반환합니다.
입력
입력 |
설명 |
|---|---|
|
견적서 생성을 위한 모든 정보를 포함합니다. 키-값 쌍에 대한 자세한 내용은 JSON 노드 설명을 참조하십시오. |
JSON 노드 설명 |
|
|
레코드 목록입니다. 서비스는 지정된 시간에 하나의 견적서만 처리합니다. |
견적서 노드 |
|
|
(필수) 기회의 ID입니다. |
|
(필수) 업데이트할 견적서를 식별하는 Salesforce 외부 시스템의 고유 레코드 식별자입니다. |
|
견적서 레코드 유형의 API 이름입니다. |
|
채울 다른 |
|
루트 제품의 목록입니다. |
quoteLines 노드 |
|
|
(필수) Salesforce 외부 시스템의 고유 레코드 식별자를 사용하여 Salesforce에서 추가, 업데이트 또는 삭제할 QuoteLineItems를 식별합니다. |
|
루트 제품의 |
|
(필수) 루트 제품 코드입니다. |
|
(필수) 제품 또는 사양 레코드 유형입니다. |
|
선택된 제품 특성입니다. |
|
채울 다른 |
|
루트 제품 보장, 보험료, 보험 당사자 |
childLines 노드 |
|
|
(필수) Salesforce 외부 시스템의 고유 레코드 식별자를 사용하여 Salesforce에서 추가, 업데이트 또는 삭제할 루트 보장, 보험료, 보험 당사자를 식별합니다. |
|
동일한 사양의 여러 인스턴스를 식별합니다. 보험 항목 및 보험 당사자의 |
|
(필수) 루트 보장, 보험 항목, 보험 당사자의 제품 코드입니다. |
|
(필수) 제품 또는 사양 레코드 유형입니다. |
|
선택된 제품 특성입니다. |
|
채울 다른 |
|
하위 보장, 보험료, 보험 당사자 |
childLines 노드 |
|
|
(필수) Salesforce 외부 시스템의 고유 레코드 식별자를 사용하여 Salesforce에서 추가, 업데이트 또는 삭제할 하위 보장, 보험료, 보험 당사자를 식별합니다. 두 보험 항목이 동일한 자녀 보험 당사자가 있는 경우 각 보험 항목은 자녀 보험 당사자의 각각의 |
|
동일한 사양의 여러 인스턴스를 식별합니다. 보험 항목 및 보험 당사자의 |
|
(필수) 하위 보장, 보험 항목, 보험 당사자 제품의 제품 코드입니다. |
|
(필수) 제품 또는 사양 레코드 유형입니다. |
|
선택된 제품 특성입니다. |
|
채울 다른 |
입력 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
출력 JSON에서 생성되거나 업데이트된 견적서의 Quote.Id 및 발생한 오류 목록을 반환합니다.
다음은 출력 JSON 형식입니다.
{
"errors":[
"error1",
"error2",
"error3"
],
"quoteId":"Quote.Id"
}{
"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"
}