Loading
メールアドレスがデフォルトのログイン方式となります 続きを読む
Insurance
InsQuoteService:createUpdateQuote

InsQuoteService:createUpdateQuote

このサービスを使用して、新規ビジネスの見積を作成したり、新しい情報で既存の見積を更新したり、支持見積を作成したりできます。更新の場合、更新する見積のquoteIdをリモートオプションに含める必要があります。

メモ
メモ

このサービスを実行する前に、ゲストユーザーチェックが実行されます。

このサービスはゲストユーザーが使用できます。OmniScript、インテグレーション手順、または UI タスクを実行しているゲストユーザーは続行できます。このサービスは実行されます。ただし、これらの場合、quoteIdとopportunityIdは暗号化されているため、ゲストユーザーにはこれらの ID は表示されません。

重要
重要

OmniStudio データマッパーを使用する代わりに、InsQuoteService:createUpdateQuote サービスを使用して見積と見積品目を更新します。

クラス: InsQuoteService

方法: createUpdateQuote

操作手順

  1. サービスは入力 JSON でinputKeyを検索します。inputKeyノードには、サービスが見積を作成または更新するために必要な情報が含まれます。このサービスで必要な情報は次のとおりです。

    • opportunityId

    • endDate (省略可能)

    • effectiveDate

    • productConfigurationDetailレコード

    • instanceKey

      同じ仕様の複数のインスタンスを識別するために必須

    • insuredItems ノード

      このノード内で、サービスは各仕様のproductCodeをキーとして、保険項目仕様と被保険者仕様のリストを必要とします。

    • Term__c

      見積の Term__c 項目を更新するために使用します。

  2. 入力 JSON の情報を使用して見積を作成します。

  3. 出力 JSON で見積 ID を返します。

  4. 次の品目を含む見積オブジェクトを作成します。

    1. productConfigurationDetail で定義されたルート商品を使用して、ルート見積品目を作成または更新します。

    2. 既存の見積を更新するときに、見積にまだ含まれていないproductConfigurationDetail内のレコードが追加され、見積にすでに含まれているレコードが更新されます。

    3. 見積品目名として被保険者項目仕様、被保険者仕様、補償範囲仕様を使用します: ParentItemId__c = rootItem.Id。

    4. 主被保険者品目の見積品目と子の被保険者見積品目には多対多のリレーションがあります。これらのリレーションは見積品目リレーションオブジェクトに保存されます。保険品目見積品目に複数の被保険者見積品目とのリレーションがある場合、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と共に保存されます。

    5. 主被保険者品目の見積品目には価格が含まれます。

  5. 新規見積の場合、[createOpportunity] が true で、opportunityIdが指定されていない場合、inputKey の [OpportunityDetails JSON] ノードを使用して商談レコードを作成します。

  6. 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 で機能させるためのフローは次のとおりです。

  1. 商品設定手順

  2. selectedValueAsObject が true に設定された InsProductJSONService:trimOffAttributeCategory サービスコール

  3. 属性と見積品目オブジェクトの追加項目の対応付けを含めることができる DataRaptor 変換

  4. InsQuoteService:createUpdateQuote サービスコール

リモートオプション

オプション

説明

createInsuredItemsRelationships

true または false

このオプションを [true] に設定すると、保険項目間の [instanceKey] > [parentInstanceKey] リレーションのリストを指定できます。

このオプションでは、親 > 子および親 > 子 > 孫の被保険者項目リレーションがサポートされます。

inputKey

必須。

このサービスが見積を作成または更新するために必要な情報を取得する JSON キー。

このキーの値を % で囲むことはできません。このキーは、変数ではなく JSON ノードを表します。

このキーはパスではなく JSON ノードを表すため、parent:childnode:childnode パス表記は使用しないでください。

正しいデータパスにアクセスするには、このキー/値のペアを OmniScript ステップに追加するときに、[Send/Response Transformation] セクションの [Send JSON Path] フィールドに入力します。

insertInstance

true または false

[true] に設定すると、サービスは追加の見積品目を既存の見積に挿入します。見積ヘッダー、ルート品目、または親見積品目は更新されません。

このオプションを使用して、複数のサーバーコールを介して大規模なマルチインスタンス見積を作成します。この場合、インスタンスの新しい見積品目セットが各コールの既存の見積に挿入されます。

quoteId

省略可能。

新規または更新された情報に基づいてこのサービスで更新される既存の見積の ID。サービスで既存の見積を更新する必要がある場合に使用されます。

isMultiRoot

省略可能。

見積がマルチルート見積であるかどうかを示す Boolean フラグ。

デフォルトは false です。

minimizeQliQuerySize

true または false

[true] に設定すると、影響を受ける見積品目のみが照会されます。具体的には、入力商品 JSON ノードまたは被保険者品目 JSON ノードで商品を参照する見積品目です。

populateCalcResults

true または false

false に設定した場合、サービスは [rootItem.CalculatedPriceJSON_c] 項目と [Quote.CalculatedPriceJSON_c] 項目の両方に入力しません。

pricebook

必須。

商品仕様に関連付けられた価格表の名前。

Salesforce では、見積品目で使用する商品に価格表エントリが必要です。

recalculateTaxesAndFees

true または false

[true] に設定すると、サービスは税金と手数料を再計算します。

[false] に設定すると、サービスは税金と手数料を再計算しません。

メモ
メモ

このオプションを false に設定する場合は、ins-coverage-quote-runtime-container UI テンプレートに行も追加する必要があります。

ins-coverage-quote-runtime-container.js、115 行目に enter : optionsMap.recalculateTaxesAndFees = false

createOpportunity

true または false

true に設定した場合、opportunityIdが指定されていないと、inputKeyの OpportunityDetails JSON ノードを使用して新しい商談レコードが作成されます。このノードは、商談sObjectの項目に対応付けられます。

returnQuote

true または false

true に設定すると、サービスの出力に見積の詳細が quoteDetail JSON ノードに含まれます。

calculateCommission

true または false

true に設定すると、ルート項目の手数料が計算され、合計金額が Quote.CommissionAmount に保存されます。

[false] (デフォルト) に設定すると、サービスは手数料を計算しません。

メモ
メモ

このオプションを true に設定する場合は、少なくとも 1 つのプロデューサーコード値または本番コード値 (primaryProducerId 、 productionCodeId 、または productionCodeName) を入力する必要があります。

primaryProducerId

省略可能。

処理プロデューサー ID。つまり、commissionScheduleIdの取得と手数料の計算に使用されるプロデューサーです。

productionCodeId

省略可能。

本番コード ID。

productionCodeName

省略可能。

InsCommissionService.calculate サービスに渡される本番コード名。

productionCodeIdを入力しない場合、サービスは productionCodeName を使用して を検索します productionCodeId。両方の値を入力しても一致しない場合は、 productionCodeId が優先されます。

runEligibilityRequiredDefaultSelectedRules

省略可能。

デフォルト値は true です。

対象資格ルールとデフォルトの選択済みルールを実行するかどうかを決定します。

runRelationshipRules

省略可能。

デフォルト値は true です。

リレーションルールを実行するかどうかを決定します。

runSelectedValivationRules

省略可能。

デフォルト値は true です。

[入力規則を選択] ルールを実行するかどうかを決定します。

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 には、見積を作成または更新するためにサービスに必要ないくつかのキー/値ペアが含まれます。

キー

値

opportunityId

生成された商談 ID。

accountId

生成された取引先 ID。

endDate

省略可能。

保険契約の有効期限が切れる日付。

effectiveDate

ポリシーが有効になる日付。

productConfigurationDetail

商品 JSON 構造モデルに従うレコードの配列。

ルート見積品目は、配列内の商品レコードごとに作成または変更されます。

商品の構造とコンテンツについての詳細は、「商品 JSON 構造モデル」を参照してください。

additionalFields

省略可能。

additionalFieldsキーは、ルート見積のキー/値ペアにのみ適用され、見積品目には適用されません。見積品目の場合、productConfigurationDetail JSON を使用して additionalFields を追加します。

insuredItems

サービスが保険品目の見積品目を作成するために使用する保険品目のキー/値ペア。

見積に 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"
}
 
読み込み中
Salesforce Help | Article