詳細情報:
InsQuoteService:createUpdateQuoteFromExternal
外部システムからの受信 API コールを使用して、見積を作成するか、既存の見積を新しい情報で更新します。
クラス:InsQuoteService
方法: createUpdateQuoteFromExternal
しくみ
-
JSON オブジェクトを受け取ります。
-
を使用して、既存の見積を作成するか更新するかを
sourceSystemIdentifier決定します。 -
PricebookIdを使用します。これは、Standard という名前の価格表です。 -
サービスは、指定された
sourceSystemIdentifierを持つ Quote を見つけると、quote オブジェクトを更新します。-
で定義されたルート商品を使用して
quoteLines、ルート見積品目を追加、更新、または削除します。サービスは、ルートの識別にsourceSystemIdentifierを使用します。見積に含まれていない
quoteLines内のレコードを追加します。見積に存在するquoteLinesのレコードを更新します。quoteLinesのレコードのうち、QuoteLines ではなく、QuoteLines に含まれているレコードを削除します。 -
ルートごとに、サービスは で定義された補償範囲、被保険者項目、関係者を使用し
childLinesて、ルートの補償範囲、被保険者項目、関係者を追加、更新、または削除します。 サービスは、更新する回線の識別に をsourceSystemIdentifier使用します。見積に含まれていない
childLines内のレコードを追加します。見積に存在するchildLinesのレコードを更新します。childLines内の Quote には含まれるが in には存在しないレコードを削除しますchildLines。 -
ルート カバー率、被保険者項目、関係者ごとに、サービスは
childLinesの補償範囲、被保険者項目、関係者を使用して、それぞれの補償範囲、被保険者項目、関係者を追加、更新、または削除します。 サービスは、更新する回線を識別するためにsourceSystemIdentifierを使用します。見積に含まれていない
childLines内のレコードを追加します。見積に存在するchildLinesのレコードを更新します。childLines内の Quote には含まれるが in には存在しないレコードを削除しますchildLines。 -
主被保険者項目
QuoteLineItemと子QuoteLineItem被保険者レコードには多対多のリレーションがあります。これらのリレーションは、見積品目リレーション (QuoteItemRelationship__c) オブジェクトに保存されます。被保険者項目 に複数の被保険者QuoteLineItemレコードとのQuoteLineItemリレーションがある場合、 サービスはPrimaryChildLineItemId__c項目を使用して、それらのリレーションのうちどれが主リレーションであるかを判断します。たとえば、Joan Smith と John Smith はどちらもLexus 250のドライバーであり、Joan Smith はプライマリドライバーとして設定されます。LEXUS 250はJoan Smithの
QuoteLineItemを参照しQuoteLineItemていますPrimaryChildLineItemId__c。 -
2 つの被保険者に同じ子被保険者がある場合、各被保険者の項目には子の被保険者に対応するエントリがそれぞれの
childLinesにある必要があります。両方のエントリで同じである必要がありますsourceSystemIdentifier。たとえば、LEXUS 250 と Honda オデッセイのどちらも、Bob Jones をドライバーとして使用します。 LEXUS 250 には、BobJones を
sourceSystemIdentifierBobJones とchildLinesして組み込んでいます。 Honda オデッセイには、BobJonessourceSystemIdentifierというchildLines名前の Bob Jones があります。 -
childLinesの ParentItemId__c および ParentItemId2__c はルートの ID を参照します。 -
子補償は、主保険品目を
SubParentItemId__c指します。
-
-
指定された見積が見つからない場合
sourceSystemIdentifier、次のように品目を含む見積オブジェクトが作成されます。-
で定義されたルート商品を使用し
quoteLinesて、ルート見積品目を作成します。 -
ルートごとに、 は で定義された補償範囲、被保険者項目、関係者を
childLines使用して、ルート 補償範囲、被保険者項目、関係者を作成します。 -
各 root coverage の被保険者項目と当事者は、その
childLinesで定義された補償範囲、被保険者項目、当事者を使用して、補償範囲、被保険者項目、当事者を作成します。 -
主被保険者項目
QuoteLineItemと子QuoteLineItem被保険者レコードには多対多のリレーションがあります。これらのリレーションは、見積品目リレーション (QuoteItemRelationship__c) オブジェクトに保存されます。被保険者項目 に複数の被保険者QuoteLineItemレコードとのリレーションQuoteLineItemがある場合、 サービスはPrimaryChildLineItemId__c項目を使用して、それらのリレーションのうちどれが主リレーションであるかを判断します。たとえば、Joan Smith と John Smith はどちらもLexus 250のドライバーであり、Joan Smith はプライマリドライバーとして設定されます。LEXUS 250はJoan Smithの
QuoteLineItemを参照しQuoteLineItemていますPrimaryChildLineItemId__c。 -
2 つの保険項目に同じ子被保険者が含まれる場合、各保険項目には子の被保険者に対応する
childLinesエントリが必要です。両方のエントリで同じである必要がありますsourceSystemIdentifier。たとえば、LEXUS 250 と Honda オデッセイのどちらも、Bob Jones をドライバーとして使用します。 LEXUS 250にはBobJones
sourceSystemIdentifierがBobJonesとして所属childLineしている。 Honda ODY には Bob Jones が含まれ、BobJonessourceSystemIdentifierという名前が付けられていますchildLines。 -
ParentItemId__cおよびParentItemId2__cchildLinesはルートの ID を参照します。 -
子補償は、主保険項目を
SubParentItemId__c指します。
-
-
a
Quote.Idと、出力 JSON で発生したエラーのリストを返します。
入力:
入力 |
説明 |
|---|---|
|
見積を作成するためのすべての情報が含まれます。キーと値のペアについての詳細は、「JSON ノード」の説明を参照してください。 |
JSON ノードの説明 |
|
|
レコードのリスト。このサービスでは、一度に 1 つの見積のみが処理されます。 |
見積ノード |
|
|
必須。 商談の ID。 |
|
必須。 更新する見積を識別するための、Salesforce 外のシステムの一意のレコード識別子。 |
|
見積レコードタイプの API 参照名。 |
|
入力する他の |
|
ルート商品のリスト。 |
quoteLines ノード |
|
|
必須。 Salesforce で追加、更新、削除するルート QuoteLineItems を識別するための、Salesforce 外のシステムの一意のレコード識別子。 |
|
|
|
必須。 ルート商品コード。 |
|
必須。 商品または仕様のレコードタイプ。 |
|
選択した商品属性。 |
|
入力する他の |
|
ルート商品補償範囲、保険品目、被保険者。 |
childLines ノード |
|
|
必須。 Salesforce で追加、更新、削除するルート補償、 被保険者、および被保険者を識別するための、Salesforce 外のシステムの一意のレコード識別子。 |
|
同じ仕様の複数のインスタンスを識別します。
|
|
必須。 root coverages、 Insured Items、および被保険者の商品コード。 |
|
必須。 商品または仕様のレコードタイプ。 |
|
選択した商品属性。 |
|
入力する他の |
|
子補償、被保険者項目、被保険者。 |
childLines ノード |
|
|
必須。 Salesforce で追加、更新、削除する子補償、 被保険者、および被保険者を識別するための、Salesforce 外のシステムの一意のレコード識別子。 2 つの保険項目に同じ子被保険者が含まれる場合、各保険項目には子の被保険者に対応する |
|
同じ仕様の複数のインスタンスを識別します。
|
|
必須。 child coverages、 Insured Items、および被保険者 商品の商品コード。 |
|
必須。 商品または仕様のレコードタイプ。 |
|
選択した商品属性。 |
|
入力する他の |
Input 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"
}