Loading
Forsikring
InsQuoteService:createUpdateQuote

InsQuoteService:createUpdateQuote

Brug denne tjeneste til at oprette et tilbud til nye forretninger, opdatere et eksisterende tilbud med nye oplysninger eller oprette et anbefalings tilbud. For opdateringer skal quoteId for det tilbud, der skal opdateres, medtages i fjernindstillingerne.

Bemærk
Bemærk

Før denne tjeneste køres, kører systemet en gæstebrugertjek.

Denne tjeneste kan bruges af gæstebrugere. En gæstebruger, der kører en OmniScript-, integrationsprocedure- eller brugergrænsefladeopgave, vil kunne fortsætte. Denne tjeneste vil køre. Men i disse tilfælde er quoteId og opportunityId krypteret, så gæstebrugere ikke kan se disse id'er.

Vigtigt
Vigtigt

Brug InsQuoteService:createUpdateQuote-tjenesten til at opdatere tilbuds- og tilbudslinjevarer i stedet for at bruge Omnistudio Data Mapper.

Kategori: InsQuoteService

Metode: createUpdateQuote

Sådan fungerer det

  1. Tjenesten søger i input-JSON for inputKey. inputKey indeholder de oplysninger, som tjenesten har brug for for at oprette eller opdatere et tilbud. De oplysninger, denne tjeneste kræver, inkluderer:

    • opportunityId

    • endDate (valgfrit)

    • effectiveDate

    • productConfigurationDetail registreringer

    • instanceKey

      Krævet for at identificere flere forekomster af den samme specifikation

    • insuredItems node

      I denne node forventer tjenesten en liste over specifikationer for forsikrede elementer og specifikationer for forsikrede parter ved brug af hver specifikations productCode som en nøgle.

    • Term__c

      Bruges til at opdatere feltet Term__c i Tilbud.

  2. Bruger oplysningerne fra input-JSON til at oprette tilbuddet.

  3. Returnerer et tilbuds-id i output-JSON.

  4. Opretter et tilbudsobjekt, der inkluderer disse linjevarer:

    1. Bruger de rodprodukter, der er defineret i productConfigurationDetail til at oprette eller opdatere rodtilbudslinjevarer.

    2. Ved opdatering af et eksisterende tilbud tilføjes registreringer i productConfigurationDetail, der endnu ikke er i tilbuddet, og dem, der allerede er i tilbuddet, opdateres.

    3. Bruger specifikationer for forsikrede elementer, specifikationer for forsikrede parter og dækningsspecifikationer som tilbudslinjevarer: ParentItemId__c = rootItem.Id.

    4. Det primære forsikrede elements tilbudslinjevarer og underordnede forsikrede parts tilbudslinjer har en mange:mange-relation. Disse relationer gemmes i objektet Tilbudselementrelation. Hvis en tilbudslinje for en forsikret vare har relationer til flere tilbudslinjer for en forsikret part, bruges PrimaryChildLineitemId__c til at bestemme, hvilken af disse relationer der er den primære.

      F.eks. er både Joan Smith og John Smith drivere af Lexus 250. Joan Smith er angivet som den primære driver. Lexus 250 tilbudslinjevarer har PrimaryChildLineItemId__c, der peger på Joan Smiths tilbudslinjevarer. Alle tilbudslinjeelementers ParentItemId2__c peger på rootItem.Id. Børneforsikringens SubParentItemId__c peger på den primære forsikrede vare. Felterne ItemName__c for den forsikrede vares tilbudslinjevarer og den forsikrede parts tilbudslinjevarer gemmes med denne vares instanceKey.

    5. Det primære forsikrede elements tilbudslinjevare inkluderer prisen.

  5. Hvis createOpportunity er true, og der ikke angives nogen opportunityId for nye tilbud, oprettes der en salgsmulighedsregistrering ved brug af OpportunityDetails JSON-noden fra inputKey.

  6. Hvis calculateCommission er true, kaldes InsCommissionService.processQuoteCommission, som forbereder inputtet for InsCommissionService.calculate. Når beregningstjenesten har behandlet input, gemmer den den beregnede kommissionsværdi i Quote.CommissionAmount__c.

Alle brugere, der kalder InsQuoteService:createUpdateQuote, skal have tilladelsen Læs for alle felter i feltsættet Tilbudsdetaljer, hvis feltsættet føjes til objektet Tilbudslinjevare.

Hvis feltsættet Tilbudsdetaljer ikke føjes til objektet Tilbudslinjevare, er alle felter, herunder tilpassede felter, læsbare for brugere.

Supplerende gebyrer

Sådan fungerer denne tjeneste med merpriser (skatter og gebyrer):

  • Hvis feltet taxesAndFees er angivet på en JSON-registrering, bevares der en tilsvarende QuotePricingAdjustment__c for hvert element på taxesAndFees.

  • Hvis taxAmount-feltet er angivet på en JSON-registrering, indstilles TaxAmount__c-feltet til værdien af taxAmount-feltet på den oprettede QuoteLineItem.

  • Hvis feeAmount-feltet er angivet på en JSON-registrering, indstilles FeeAmount__c-feltet til værdien af feeAmount-feltet på den oprettede QuoteLineItem.

Tilføjelse af yderligere felter til tilbudslinjevarer

Hvis du har brug for yderligere felter skrevet til tilbudslinjevaren af denne tjeneste, skal du først kalde InsProductJSONService:trimOffAttributeCategory-tjenesten.

Forløbet til at få dette til at fungere i en OmniScript- eller integrationsprocedure er:

  1. Produktkonfigurationstrin

  2. InsProductJSONService:trimOffAttributeCategory-servicekald med selectedValueAsObject indstillet til true

  3. DataRaptor-transformation, der kan inkludere tilknytning mellem attributter og dine yderligere felter i objektet Tilbudslinjevare

  4. InsQuoteService:createUpdateQuote-serviceopkald

Fjernindstillinger

Indstilling

Beskrivelse

createInsuredItemsRelationships

true eller false

Hvis denne indstilling er indstillet til true, kan du angive en liste over instanceKey > parentInstanceKey relationer mellem forsikrede elementer.

Denne indstilling understøtter overordnede > underordnede og overordnede > underordnede > underunderordnede forsikrede elementrelationer.

inputKey

Påkrævet.

En JSON-nøgle, som denne tjeneste henter de nødvendige oplysninger fra for at oprette eller opdatere et tilbud.

Brug ikke % til at omgive værdien af denne nøgle. Denne nøgle repræsenterer en JSON-node, ikke en variabel.

Da denne nøgle repræsenterer en JSON-node og ikke en sti, skal du ikke bruge parent:childnode:childnode-stinotation.

For at komme til den rigtige datasti skal du indtaste den i feltet Send JSON-sti i afsnittet Send/svar-transformation, når du føjer dette nøgle-/værdipar til et OmniScript-trin.

insertInstance

true eller false

Når den er indstillet til true, indsætter tjenesten yderligere tilbudslinjevarer til et eksisterende tilbud. Det opdaterer ikke tilbudssidehovedet, rodlinjevaren eller nogen overordnet tilbudslinjevare.

Brug denne indstilling til at oprette et stort tilbud med flere forekomster gennem flere serverkald, hvor det nye sæt tilbudslinjevarer for forekomsterne indsættes i det eksisterende tilbud i hvert kald.

quoteId

Valgfrit.

Id'et for et eksisterende tilbud, som denne tjeneste opdaterer, baseret på nye eller opdaterede oplysninger. Bruges, når tjenesten har brug for at opdatere et eksisterende tilbud.

isMultiRoot

Valgfrit.

Et boolesk flag til at angive, om tilbuddet er et tilbud med flere rod.

Standarden er false.

minimizeQliQuerySize

true eller false

Når den er indstillet til true, forespørger tjenesten kun på de påvirkede tilbudslinjevarer. Specifikt de tilbudslinjevarer, der refererer til produktet i inputprodukt-JSON-noden eller i de forsikrede elementers JSON-node.

populateCalcResults

true eller false

Når den er indstillet til false, udfylder tjenesten ikke både rootItem.CalculatedPriceJSON_c og Quote.CalculatedPriceJSON_c.

pricebook

Påkrævet.

Navnet på den prisliste, der er knyttet til produktspecifikationen.

Salesforce kræver, at de produkter, der bruges i tilbudslinjevarer, har en prislisteoplysning.

recalculateTaxesAndFees

true eller false

Når den er indstillet til true, genberegner tjenesten moms og gebyrer.

Når den er indstillet til false, genberegner tjenesten ikke moms og gebyrer.

Bemærk
Bemærk

Hvis du indstiller denne indstilling til falsk, skal du også føje en kurve til skabelonen ins-coverage-quote-runtime-container brugergrænseflade.

I ins-coverage-quote-runtime-container.js, på linje 115 indtast : optionsMap.recalculateTaxesAndFees = false

createOpportunity

true eller false

Hvis den er indstillet til true, og der ikke angives nogen opportunityId, opretter tjenesten en ny salgsmulighedsregistrering ved brug af OpportunityDetails JSON-noden fra inputKey. Denne node knyttes til felter på salgsmulighedens sObject.

returnQuote

true eller false

Når den er indstillet til true, inkluderer tjenestens output tilbudsdetaljer i quoteDetail JSON-noden.

calculateCommission

true eller false

Når den er indstillet til true, beregner tjenesten kommissioner for rodelementerne og gemmer det samlede beløb til Quote.CommissionAmount.

Når den er indstillet til false (standarden), beregner tjenesten ikke kommissioner.

Bemærk
Bemærk

Hvis du indstiller denne indstilling til true, skal du også angive mindst en af producent- eller produktionskodeværdierne: primaryProducerId, productionCodeId eller productionCodeName.

primaryProducerId

Valgfrit.

Forarbejdningsproducent-id, dvs. den producent, der blev brugt til at hente commissionScheduleId og beregne kommissionsbeløbet.

productionCodeId

Valgfrit.

Produktionskode-id.

productionCodeName

Valgfrit.

Produktionskodenavnet, der blev overført til InsCommissionService.calculate-tjenesten.

Hvis du ikke indtaster productionCodeId, bruger tjenesten productionCodeName til at slå productionCodeId op. Hvis du angiver begge værdier, men de ikke matcher, har productionCodeId forrang.

runEligibilityRequiredDefaultSelectedRules

Valgfrit.

Standardværdierne er true.

Bestemmer, om reglerne Berettigelse og Standardvalgte køres.

runRelationshipRules

Valgfrit.

Standardværdierne er true.

Bestemmer, om relationsregler skal køres.

runSelectedValivationRules

Valgfrit.

Standardværdierne er true.

Bestemmer, om Vælg valideringsregler skal køres.

Input JSON

Denne tjeneste søger efter værdien af inputKey. Gå til fanen API på produktspecifikationen for at finde den input-JSON, du har brug for til denne tjeneste.

I dette eksempel 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"
          }

JSON i inputKey indeholder flere nøgle-/værdipar, som tjenesten har brug for for at oprette eller opdatere et tilbud.

Nøgle

Værdi

opportunityId

Det genererede salgsmuligheds-id.

accountId

Det genererede konto-id.

endDate

Valgfrit.

Den dato, hvor politikken udløber.

effectiveDate

Den dato, hvor politikken træder i kraft.

productConfigurationDetail

En opstilling af registreringer, der følger produktets JSON-strukturmodel.

Der oprettes eller redigeres en rod tilbudslinjevare for hver produktregistrering i matrikset.

Hvis du vil vide mere om strukturen og indholdet af et produkt, kan du se Produkts JSON-strukturmodel.

additionalFields

Valgfrit.

additionalFields gælder kun for nøgle-/værdipar for rodanførselstegn, ikke tilbudslinjevarer. For tilbudslinjevarer skal du tilføje additionalFields ved brug af productConfigurationDetail JSON.

insuredItems

Nøgle-/værdiparret for de forsikrede elementer, som tjenesten bruger til at oprette tilbudslinjevarer for forsikrede elementer.

Uanset om dit tilbud omfatter en enkelt forekomst af en forsikret vare eller flere forsikrede varer, skal du formatere insuredItems med en opstilling af registreringer.

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

For en enkelt forekomst af et forsikret element, der er direkte under rodproduktet i produkthierarkiet, kan du bruge formatet i dette eksempel. insuredItems her inkluderer de forsikrede varer og de værdier, brugeren valgte for hver af dem. Vi understøtter dette input-JSON, men det er fra en tidligere version, og vi anbefaler det ikke.

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

For nye tilbud, hvis createOpportunity er true, og der ikke angives nogen opportunityId, opretter tjenesten en ny salgsmulighedsregistrering ved brug af OpportunityDetails JSON-noden fra inputKey. Brug inputformatet OpportunityDetails:FieldName. Her er et eksempel på en OpportunityDetails.

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

preTransformBundle Alternative

Alternativt kan du definere en DataRaptor-transformation, der knytter de data, der overføres til input-JSON, til den form, som tjenesten har brug for. Denne DataRaptors output JSON er den userInputs JSON, der er defineret på produktvisningens API-fane. Indstil indstillingen preTransformBundle til navnet på DataRaptor for at få tjenesten til at bruge DataRaptor.

Output JSON

Tjenesten returnerer tilbuds-id'et for det netop oprettede tilbud. Det returnerer også tilbudsdetaljer, hvis returnQuote-inputtet er true, og salgsmuligheds-id'et, hvis createOpportunity er true, og der ikke angives nogen opportunityId.

{
  "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"
}
 
Indlæser
Salesforce Help | Article