Loading
Verzekering
InsQuoteService:createUpdateQuote

InsQuoteService:createUpdateQuote

Gebruik deze service om een offerte te maken voor nieuwe klanten, een bestaande offerte bij te werken met nieuwe informatie of een bevestigingsofferte te maken. Voor updates moet de quoteId van de bij te werken offerte worden opgenomen in de externe opties.

Opmerking
Opmerking

Voordat deze service wordt uitgevoerd, voert het systeem een gastgebruikerscontrole uit.

Deze service kan worden gebruikt door gastgebruikers. Een gastgebruiker die een OmniScript-, integratieprocedure- of UI-taak uitvoert, kan doorgaan; deze service wordt uitgevoerd. De quoteId en opportunityId zijn echter versleuteld in deze gevallen, waardoor gastgebruikers deze ID's niet kunnen zien.

Belangrijk
Belangrijk

Gebruik de service InsQuoteService:createUpdateQuote om de offerte en offerteregelitems bij te werken, in plaats van de Omnistudio Data Mapper te gebruiken.

Klasse: InsQuoteService

Methode: createUpdateQuote

De manier waarop het werkt...

  1. De service zoekt in de invoer-JSON naar de inputKey. Het knooppunt inputKey bevat de informatie die de service nodig heeft om een offerte te maken of bij te werken. De informatie die deze service vereist, omvat:

    • opportunityId

    • endDate (optioneel)

    • effectiveDate

    • Records productConfigurationDetail

    • instanceKey

      Vereist voor het identificeren van meerdere exemplaren van dezelfde specificatie

    • insuredItems knooppunt

      Binnen dit knooppunt verwacht de service een lijst van specificaties van verzekerde items en specificaties van verzekerde partijen, waarbij de productCode van elke specificatie als sleutel wordt gebruikt.

    • Term__c

      Gebruik dit om het veld Term__c van de offerte bij te werken.

  2. Gebruikt de informatie uit de invoer-JSON om de offerte te maken.

  3. Retourneert een offerte-ID in de uitvoer-JSON.

  4. Maakt een offerteobject dat deze regelitems bevat:

    1. Gebruikt de rootproducten die in productConfigurationDetail zijn gedefinieerd om de rootofferteregelitems te maken of bij te werken.

    2. Bij het bijwerken van een bestaande offerte worden records in de productConfigurationDetail die nog niet in de offerte voorkomen, toegevoegd en worden die welke al in de offerte voorkomen, bijgewerkt.

    3. Gebruikt specificaties van verzekerde items, specificaties van verzekerde partij en dekkingsspecificaties als offerteregelitems: ParentItemId__c = rootItem.Id.

    4. Het offerteregelitem van het primaire verzekerde item en de onderliggende offerteregels van de verzekerde partij hebben een veel:veel-relatie. Deze relaties worden opgeslagen in het object Offerte-itemrelatie. Als een offerteregel van een verzekerd item relaties heeft met meerdere offerteregels van een verzekerde partij, wordt het veld PrimaryChildLineitemId__c gebruikt om te bepalen welke van die relaties de primaire is.

      Zo zijn zowel Joan Smith als John Smith drivers van Lexus 250; Joan Smith is ingesteld als primaire driver. Het offerteregelitem Lexus 250 heeft PrimaryChildLineItemId__c die verwijzen naar het offerteregelitem van Joan Smith. De ParentItemId2__c van alle offerteregelitems verwijzen naar het SubParentItemId__c van rootItem.Id. onderliggende dekkingen naar het primaire verzekerde item. De ItemName__c velden Offerteregelitem van verzekerd item en Offerteregelitem van verzekerde partij worden opgeslagen bij dit item.instanceKey

    5. Het offerteregelitem van het primaire verzekerde item omvat de prijs.

  5. Voor nieuwe offertes maakt u, als createOpportunity true is en er geen opportunityId is opgegeven, een opportunityrecord met behulp van het OpportunityDetails JSON-knooppunt vanuit de inputKey.

  6. Als calculateCommission true is, roept InsCommissionService.processQuoteCommission aan, dat de invoer voorbereidt voor de InsCommissionService.calculate. Nadat de berekeningsservice de invoer heeft verwerkt, wordt de berekende commissiewaarde opgeslagen in Quote.CommissionAmount__c.

Alle gebruikers die InsQuoteService:createUpdateQuote aanroepen, moeten de machtiging Lezen hebben voor alle velden in de veldset Offertedetail als de veldset wordt toegevoegd aan het object Offerteregelitem.

Als de veldset Offertedetail niet wordt toegevoegd aan het object Offerteregelitem, zijn alle velden, inclusief aangepaste velden, leesbaar voor gebruikers.

Toeslagen

Deze service werkt als volgt met toeslagen (belastingen en kosten):

  • Als het veld taxesAndFees is opgegeven voor een JSON-record, blijft er een overeenkomende QuotePricingAdjustment__c bestaan voor elk item in de taxesAndFees.

  • Als het veld taxAmount is opgegeven voor een JSON-record, wordt het veld TaxAmount__c ingesteld op de waarde van het veld taxAmount voor de gemaakte QuoteLineItem.

  • Als het veld feeAmount is opgegeven voor een JSON-record, wordt het veld FeeAmount__c ingesteld op de waarde van het veld feeAmount voor de gemaakte QuoteLineItem.

Extra velden toevoegen aan offerteregelitems

Als u extra velden nodig hebt die door deze service naar het offerteregelitem worden geschreven, moet u eerst de service InsProductJSONService:trimOffAttributeCategory aanroepen.

De stroom om dit te laten werken in een OmniScript- of integratieprocedure is:

  1. Productconfiguratiestappen

  2. InsProductJSONService:trimOffAttributeCategory-serviceaanroep met selectedValueAsObject ingesteld op true (waar)

  3. DataRaptor-transformatie die toewijzing tussen kenmerken en uw extra velden in het object Offerteregelitem kan omvatten

  4. InsQuoteService:createUpdateQuote serviceaanroep

Externe opties

Optie

Beschrijving

createInsuredItemsRelationships

true of false

Als deze optie is ingesteld op true, kunt u een lijst van instanceKey > parentInstanceKey tussen verzekerde items opgeven.

Deze optie ondersteunt relaties tussen bovenliggend > onderliggend en bovenliggend > onderliggend > kleinkind verzekerd item.

inputKey

Verplicht.

Een JSON-sleutel waaruit deze service de benodigde informatie ophaalt om een offerte te maken of bij te werken.

Gebruik % niet om de waarde van deze sleutel te omringen. Deze sleutel vertegenwoordigt een JSON-knooppunt, geen variabele.

Omdat deze sleutel een JSON-knooppunt vertegenwoordigt en geen pad, gebruikt u geen notatie voor het pad parent:childnode:childnode.

Als u het juiste gegevenspad wilt bereiken, geeft u het op in het veld JSON-pad verzenden in de sectie Transformatie verzenden/reactie wanneer u dit sleutel-/waardepaar toevoegt aan een OmniScript-stap.

insertInstance

true of false

Indien ingesteld op true, voegt de service extra offerteregelitems in een bestaande offerte in. De offertekoptekst, het rootregelitem of een bovenliggend offerteregelitem wordt niet bijgewerkt.

Gebruik deze optie om grote offertes voor meerdere exemplaren te maken via meerdere serveraanroepen, waarbij de nieuwe set offerteregelitems van de exemplaren in elke aanroep worden ingevoegd in de bestaande offerte.

quoteId

Optioneel.

De ID van een bestaande offerte die deze service bijwerkt, op basis van nieuwe of bijgewerkte informatie. Gebruikt wanneer de service een bestaande offerte moet bijwerken.

isMultiRoot

Optioneel.

Een booleaanse vlag om aan te geven of de offerte een offerte met meerdere wortels is.

Standaard is false.

minimizeQliQuerySize

true of false

Indien ingesteld op true, voert de service alleen een query uit op de betroffen offerteregelitems. Met name die offerteregelitems die verwijzen naar het product in het JSON-knooppunt van het invoerproduct of in het JSON-knooppunt van de verzekerde items.

populateCalcResults

true of false

Indien ingesteld op false, vult de service niet zowel het veld rootItem.CalculatedPriceJSON_c als het veld Quote.CalculatedPriceJSON_c in.

pricebook

Verplicht.

De naam van de prijslijst die is gekoppeld aan de productspecificatie.

Salesforce vereist dat de producten die in offerteregelitems worden gebruikt, een prijslijstgegeven hebben.

recalculateTaxesAndFees

true of false

Indien ingesteld op true, berekent de service belastingen en kosten opnieuw.

Indien ingesteld op false, berekent de service geen belastingen en kosten opnieuw.

Opmerking
Opmerking

Als u deze optie instelt op false (onwaar), moet u ook een regel toevoegen aan de ins-coverage-quote-runtime-container UI-sjabloon.

Geef ins-coverage-quote-runtime-container.js op regel 115 : optionsMap.recalculateTaxesAndFees = false op

createOpportunity

true of false

Indien ingesteld op true, maakt de service, als er geen opportunityId is opgegeven, een nieuwe opportunityrecord met behulp van het OpportunityDetails JSON-knooppunt uit de inputKey. Dit knooppunt wordt toegewezen aan velden in de opportunity sObject.

returnQuote

true of false

Indien ingesteld op true, bevat de uitvoer van de service offertedetails in het quoteDetail JSON-knooppunt.

calculateCommission

true of false

Indien ingesteld op true, berekent de service commissies voor de rootitems en wordt het totaalbedrag opgeslagen in Quote.CommissionAmount.

Indien ingesteld op false (standaard), berekent de service geen commissies.

Opmerking
Opmerking

Als u deze optie instelt op true (waar), moet u ook minstens één van de waarden van de producent- of productiecode invoeren: primaryProducerId , productionCodeId of productionCodeName.

primaryProducerId

Optioneel.

De ID van de verwerkende producent, dat wil zeggen de producent die is gebruikt om de commissionScheduleId op te halen en het commissiebedrag te berekenen.

productionCodeId

Optioneel.

De ID van de productiecode.

productionCodeName

Optioneel.

De naam van de productiecode doorgegeven aan de service InsCommissionService.calculate.

Als u geen productionCodeId invoert, gebruikt de service productionCodeName om de productionCodeId op te zoeken. Als u beide waarden invoert, maar ze niet overeenkomen, heeft productionCodeId prioriteit.

runEligibilityRequiredDefaultSelectedRules

Optioneel.

De standaardwaarden zijn true.

Bepaalt of regels voor In aanmerking komen en Standaard geselecteerd worden uitgevoerd.

runRelationshipRules

Optioneel.

De standaardwaarden zijn true.

Bepaalt of relatieregels worden uitgevoerd.

runSelectedValivationRules

Optioneel.

De standaardwaarden zijn true.

Bepaalt of Validatieregels selecteren worden uitgevoerd.

Invoer-JSON

Deze service zoekt naar de waarde van de inputKey. Ga naar het tabblad API in de productspecificatie om de invoer-JSON te vinden die u nodig hebt voor deze service.

In dit voorbeeld is 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"
          }

De JSON binnen de inputKey omvat diverse sleutel-/waardeparen die de service nodig heeft om een offerte te maken of bij te werken.

Sleutel

Waarde

opportunityId

De gegenereerde opportunity-ID.

accountId

De gegenereerde account-ID.

endDate

Optioneel.

De datum waarop de polis komt te vervallen.

effectiveDate

De datum waarop de polis van kracht wordt.

productConfigurationDetail

Een array van records die het product-JSON-structuurmodel volgen.

Er wordt een rootofferteregelitem gemaakt of gewijzigd voor elke productrecord in de array.

Zie voor meer informatie over de structuur en inhoud van een product het Product-JSON-structuurmodel.

additionalFields

Optioneel.

De additionalFields is alleen van toepassing op sleutel-/waardeparen voor rootoffertes, niet op offerteregelitems. Voeg voor offerteregelitems additionalFields toe met behulp van de productConfigurationDetail JSON.

insuredItems

De sleutel-/waardeparen van de verzekerde items die de service gebruikt om de offerteregelitems voor verzekerde items te maken.

Of uw offerte nu één exemplaar van een verzekerd item of meerdere verzekerde items bevat, maak het insuredItems op met een array van records.

"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": ""
  }]
}

Voor één exemplaar van een verzekerd item dat zich direct onder het rootproduct in de producthiërarchie bevindt, kunt u de indeling in dit voorbeeld gebruiken. De insuredItems hier omvatten de verzekerde items en de waarden die de gebruiker voor elk item heeft geselecteerd. We ondersteunen deze invoer-JSON, maar het is van een eerdere release en we raden het niet aan.

"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"

Voor nieuwe offertes, als createOpportunity true is en er geen opportunityId is opgegeven, maakt de service een nieuwe opportunityrecord met behulp van het OpportunityDetails JSON-knooppunt vanuit de inputKey. Gebruik de invoerindeling OpportunityDetails:FieldName. Hier is een voorbeeld van een OpportunityDetails.

"OpportunityDetails": {
      "AccountId": "0015f00000DSFgqAAH",
      "Name": "Auto Quote: Rachel Adams (2022-01-03)",
      "StageName": "Qualification",
      "CloseDate": "2022-01-03"
    },
Opmerking
Opmerking

alternatief voor preTransformBundle

U kunt ook een DataRaptor-transformatie definiëren die de gegevens toewijst die zijn doorgegeven aan de invoer-JSON in de vorm die de service nodig heeft. De uitvoer-JSON van deze DataRaptor is de userInputs JSON die is gedefinieerd op het API-tabblad van de productweergave. Stel de optie preTransformBundle in op de naam van de DataRaptor om de service de DataRaptor te laten gebruiken.

Uitvoer-JSON

De service retourneert de offerte-ID van de zojuist gemaakte offerte. Het retourneert ook offertedetails als de returnQuote true is en de opportunity-ID als createOpportunity true is en er geen opportunityId is opgegeven.

{
  "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"
}
 
Wordt geladen
Salesforce Help | Article