您在此处:
InsQuoteService:createUpdateQuoteFromExternal
通过外部系统的入站 API 调用,创建报价或使用新信息更新现有报价。
类:InsQuoteService
方法:createUpdateQuoteFromExternal
工作原理
-
接收 JSON 对象。
-
使用原始
sourceSystemIdentifier报价单确定是否创建或更新现有报价。 -
使用
PricebookId,即名为 ⁇ Standard 的价格手册。 -
如果服务找到具有给定报价的报价
sourceSystemIdentifier,它会更新报价对象:-
使用 ⁇
quoteLines中定义的根产品添加、更新或删除根报价行项目。该服务使用标准sourceSystemIdentifier识别根。添加未在报价中的
quoteLines记录。更新报价中存在的quoteLines记录。删除在报价单中但未在报价行中的quoteLines记录。 -
对于每个根,服务使用在“根
childLines”中定义的覆盖范围、保险项目和当事人来添加、更新或删除根覆盖范围、保险项目和当事人。 该服务使用sourceSystemIdentifier标准识别要更新的行。添加未在报价中的
childLines记录。更新报价中存在的childLines记录。删除在报价单中但未在报价单childLines中的childLines记录。 -
对于每个根承保范围、受保项目和当事人,服务使用承保范围、受保项目和
childLines当事人来添加、更新或删除各自的承保范围、受保项目和当事人。 ⁇ 服务使用sourceSystemIdentifier来标识要更新的行。添加未在报价中的
childLines记录。更新报价中存在的childLines记录。删除在报价单中但未在报价单childLines中的childLines记录。 -
主被保项目的投保
QuoteLineItem人和儿童被保方投保QuoteLineItem人记录有很多很多的关系。这些关系存储在报价项目关系 (QuoteItemRelationship__c) 对象中。如果受保项目 ⁇QuoteLineItem⁇ 与多个受保方 ⁇QuoteLineItem记录存在关系,则 ⁇ 服务会使用该PrimaryChildLineItemId__c⁇ 字段来确定其中哪个关系是主要关系。例如,Joan Smith 和 John Smith 都是 Lexus 250 的驾驶员;Joan Smith 被设置为主要驾驶员。凌志250
QuoteLineItem已经PrimaryChildLineItemId__c指向了Joan Smith的凌志QuoteLineItem -
如果两个被保险项目具有相同的儿童被保险方,每个被保险项目必须在各自的保险
childLines项目中包含儿童被保险方的条目。对于两个条目,它们必须具有相同的标号sourceSystemIdentifier。例如,雷克萨斯 250 和本田奥德赛都有 Bob Jones 作为驾驶员。 雷克萨斯 250 在它
childLines的车型中包含 Bob Jones 和sourceSystemIdentifierBobJones。 本田奥德赛有一辆鲍勃·琼斯(Bob Jones),sourceSystemIdentifier其外观为 BobJoneschildLines。 -
ParentItemId__c ⁇ and ⁇ ParentItemId2__c ⁇ of
childLines指向根的 ID。 -
子承保范围的“ ⁇
SubParentItemId__c”指向主要承保项目。
-
-
如果服务未找到包含给定项目的报价单
sourceSystemIdentifier,则会创建包含行项目的报价单对象,如下所述:-
使用 ⁇
quoteLines中定义的根产品创建根报价行项目。 -
对于每个根,使用 ⁇
childLines中定义的承保范围、承保项目和当事人来创建根承保范围、承保项目和当事人。 -
对于每个根承保范围、受保项目和当事人,使用其承保范围、受保项目和当事人中定义的承保
childLines范围、受保项目和当事人来创建其承保范围、受保项目和当事人。 -
主被保项目的投保
QuoteLineItem人和儿童被保方投保QuoteLineItem人记录有很多很多的关系。这些关系存储在报价项目关系 (QuoteItemRelationship__c) 对象中。如果受保项目 ⁇QuoteLineItem⁇ 与多个受保方 ⁇QuoteLineItem记录有关系,则 ⁇ 服务会使用PrimaryChildLineItemId__c⁇ 字段来确定其中哪个关系是主要关系。例如,Joan Smith 和 John Smith 都是 Lexus 250 的驾驶员;Joan Smith 被设置为主要驾驶员。凌志250
QuoteLineItem已经PrimaryChildLineItemId__c指向了Joan Smith的凌志QuoteLineItem -
如果两个被保险项目具有相同的儿童被保险方,每个被保险项目必须在相应的保险
childLines项目中包含儿童被保险方的条目。对于两个条目,它们必须具有相同的标号sourceSystemIdentifier。例如,雷克萨斯 250 和本田奥德赛都有 Bob Jones 作为驾驶员。 雷克萨斯 250 拥有 Bob Jones 和
sourceSystemIdentifierBobJones 在它childLine的时代。 本田奥德赛有鲍勃·琼斯与sourceSystemIdentifier⁇ 作为鲍勃·琼斯在其 ⁇childLines。 -
ParentItemId__c和ParentItemId2__c⁇ ofchildLines指向根的 ID。 -
子承保范围的“
SubParentItemId__c承保范围”指向主要承保项目。
-
-
返回输出 JSON 中遇到的错误列表
Quote.Id。
输入
输入 |
描述 |
|---|---|
|
包含创建报价的所有信息。有关键值对的更多信息,请查看 ⁇ JSON 节点描述。 |
JSON 节点描述 |
|
|
记录列表。该服务在指定时间仅处理一个报价。 |
报价节点 |
|
|
必需。 业务机会的 ID。 |
|
必需。 来自 Salesforce 外部系统的唯一记录标识符,用于识别要更新的报价。 |
|
报价记录类型的 ⁇ API 名称。 |
|
您要填充的其他 ⁇ |
|
根产品的列表。 |
quoteLines nodes |
|
|
必需。 来自 Salesforce 外部系统的唯一记录标识符,用于标识在 Salesforce 中添加、更新或删除哪个 root ⁇ QuoteLineItems ⁇ 。 |
|
根产品的 ⁇ |
|
必需。 根产品代码。 |
|
必需。 产品或规格记录类型。 |
|
选定的产品属性。 |
|
您要填充的其他 ⁇ |
|
根产品范围、保险项目和保险方。 |
childLines nodes |
|
|
必需。 来自 Salesforce 外部系统的唯一记录标识符,用于标识在 Salesforce 中添加、更新或删除哪些根承保范围、被保险人项目和被保险人。 |
|
标识相同规格的多个实例。 保险项目和保险方 |
|
必需。 根承保范围、被保险人项目和被保险人的产品代码。 |
|
必需。 产品或规格记录类型。 |
|
选定的产品属性。 |
|
您要填充的其他 ⁇ |
|
子范围、保险项目和保险方。 |
childLines nodes |
|
|
必需。 来自 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"
}