詳細情報:
InsQuoteService:createUpdateQuote
このサービスを使用して、新規ビジネスの見積を作成したり、新しい情報で既存の見積を更新したり、支持見積を作成したりできます。更新の場合、更新する見積のquoteIdをリモートオプションに含める必要があります。
操作手順
-
サービスは入力 JSON で
inputKeyを検索します。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] ノードを使用して商談レコードを作成します。 -
calculateCommissionがtrueの場合、 はInsCommissionService.calculateサービスの入力を準備するInsCommissionService.processQuoteCommissionをコールします。Calculat サービスは入力を処理した後、計算された手数料値をQuote.CommissionAmount__cに保存します。
InsQuoteService:createUpdateQuote をコールするすべてのユーザーは、[見積の詳細] 項目セットが見積品目オブジェクトに追加されている場合、その項目セットのすべての項目に対する「参照」権限を持っている必要があります。
[見積の詳細] 項目セットが見積品目オブジェクトに追加されていない場合、カスタム項目を含むすべての項目をユーザーが参照できます。
追加料金
このサービスの追加料金 (税金と手数料) の仕組みを次に示します。
-
JSON レコードで
taxesAndFeesフィールドが指定されている場合、対応するQuotePricingAdjustment__cレコードがtaxesAndFeesリストの各項目に対して保持されます。 -
JSON レコードで
taxAmount項目が指定されている場合、TaxAmount__c項目は作成されたQuoteLineItemのtaxAmount項目の値に設定されます。 -
JSON レコードで
feeAmount項目が指定されている場合、FeeAmount__c項目は作成されたQuoteLineItemのfeeAmount項目の値に設定されます。
見積品目名への追加項目の追加
このサービスによって見積品目に書き込まれる追加の項目が必要な場合は、最初に InsProductJSONService:trimOffAttributeCategory サービスをコールする必要があります。
これを OmniScript または Integration Procedure で機能させるためのフローは次のとおりです。
-
商品設定手順
-
selectedValueAsObject が true に設定された InsProductJSONService:trimOffAttributeCategory サービスコール
-
属性と見積品目オブジェクトの追加項目の対応付けを含めることができる DataRaptor 変換
-
InsQuoteService:createUpdateQuote サービスコール
リモートオプション
オプション |
説明 |
|---|---|
|
このオプションを [ このオプションでは、親 > 子および親 > 子 > 孫の被保険者項目リレーションがサポートされます。 |
|
必須。 このサービスが見積を作成または更新するために必要な情報を取得する JSON キー。 このキーの値を % で囲むことはできません。このキーは、変数ではなく JSON ノードを表します。 このキーはパスではなく JSON ノードを表すため、parent:childnode:childnode パス表記は使用しないでください。 正しいデータパスにアクセスするには、このキー/値のペアを OmniScript ステップに追加するときに、[Send/Response Transformation] セクションの [Send JSON Path] フィールドに入力します。 |
|
[ このオプションを使用して、複数のサーバーコールを介して大規模なマルチインスタンス見積を作成します。この場合、インスタンスの新しい見積品目セットが各コールの既存の見積に挿入されます。 |
|
省略可能。 新規または更新された情報に基づいてこのサービスで更新される既存の見積の ID。サービスで既存の見積を更新する必要がある場合に使用されます。 |
|
省略可能。 見積がマルチルート見積であるかどうかを示す Boolean フラグ。 デフォルトは |
|
[ |
|
|
|
必須。 商品仕様に関連付けられた価格表の名前。 Salesforce では、見積品目で使用する商品に価格表エントリが必要です。 |
|
[ [ メモ
このオプションを false に設定する場合は、
|
|
|
|
|
|
[ メモ
このオプションを true に設定する場合は、少なくとも 1 つのプロデューサーコード値または本番コード値 ( |
|
省略可能。 処理プロデューサー ID。つまり、 |
|
省略可能。 本番コード ID。 |
|
省略可能。 InsCommissionService.calculate サービスに渡される本番コード名。
|
runEligibilityRequiredDefaultSelectedRules
|
省略可能。 デフォルト値は 対象資格ルールとデフォルトの選択済みルールを実行するかどうかを決定します。 |
runRelationshipRules
|
省略可能。 デフォルト値は リレーションルールを実行するかどうかを決定します。 |
runSelectedValivationRules
|
省略可能。 デフォルト値は [入力規則を選択] ルールを実行するかどうかを決定します。 |
Input 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 構造モデル」を参照してください。 |
|
省略可能。
|
|
サービスが保険品目の見積品目を作成するために使用する保険品目のキー/値ペア。 |
見積に 1 つの保険項目のインスタンスが含まれるか、複数の保険項目が含まれるかに関係なく、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": ""
}]
}商品階層のルート商品の直下にある保険品目の 1 つのインスタンスの場合、次の例の形式を使用できます。ここでの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] ノードを使用して新しい商談レコードが作成されます。input format 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"
}