Loading
Forsikring
InsQuoteService:createUpdateQuote

InsQuoteService:createUpdateQuote

Bruk denne tjenesten til å opprette et tilbud for nye virksomheter, oppdatere et eksisterende tilbud med ny informasjon eller opprette et anbefalingstilbud. For oppdateringer må quoteId av tilbudet som skal oppdateres, inkluderes i alternativene for eksterne enheter.

Merk
Merk

Før denne tjenesten kjører utfører systemet en gjestebrukersjekk.

Denne tjenesten kan brukes av gjestebrukere. En gjestebruker som kjører en OmniScript-, Integrasjonsprosedyre- eller grensesnittoppgave, kan fortsette. Denne tjenesten kjøres. quoteId og opportunityId er imidlertid kryptert i disse tilfellene, så gjestebrukere kan ikke se disse ID-ene.

Viktig
Viktig

Bruk tjenesten InsQuoteService:createUpdateQuote til å oppdatere tilbuds- og tilbudslinjeelementene i stedet for å bruke Omnistudio-datatilordneren.

Klasse: InsQuoteService

Metode: createUpdateQuote

Slik virker det

  1. Tjenesten søker i inndata-JSON-koden for inputKey. inputKey-noden inneholder informasjonen som tjenesten trenger for å opprette eller oppdatere et tilbud. Informasjonen denne tjenesten trenger, inkluderer følgende:

    • opportunityId

    • endDate (valgfritt)

    • effectiveDate

    • productConfigurationDetail poster

    • instanceKey

      Kreves for å identifisere flere forekomster av samme spesifikasjon

    • insuredItems node

      I denne noden forventer tjenesten en liste over spesifikasjoner for forsikrede artikler og spesifikasjoner for forsikrede parter, ved å bruke hver spesifikasjons productCode som nøkkel.

    • Term__c

      Brukes til å oppdatere Term__c-feltet i Tilbud-feltet.

  2. Bruker informasjonen fra inndata-JSON-filen til å opprette tilbudet.

  3. Returnerer en tilbuds-ID i JSON-koden for utdata.

  4. Oppretter et Tilbud-objekt som inkluderer disse linjene:

    1. Bruker rotproduktene som er definert i productConfigurationDetail, til å opprette eller oppdatere rottilbudslinjeelementene.

    2. Når du oppdaterer et eksisterende tilbud, legges det til poster i productConfigurationDetail som ennå ikke er i tilbudet, og de som allerede er i tilbudet, oppdateres.

    3. Bruker spesifikasjoner for forsikrede artikler, spesifikasjoner for forsikrede parter og dekningsspesifikasjoner som tilbudslinjeelementer: ParentItemId__c = rootItem.Id.

    4. Det primære forsikringselementets tilbudslinje og tilbudslinjer for underordnede forsikrede parter har en many:many-relasjon. Disse relasjonene lagres i objektet Tilbudselementrelasjon. Hvis en tilbudslinje for et forsikret element har relasjoner til flere tilbudslinjer for forsikrede, brukes PrimaryChildLineitemId__c-feltet til å bestemme hvilken av disse relasjonene som er den primære.

      Både Joan Smith og John Smith er for eksempel drivere av Lexus 250. Joan Smith er angitt som Primær-driver. Lexus 250 tilbudslinje har PrimaryChildLineItemId__c som peker til Joan Smiths tilbudslinje. Alle tilbudslinjeelementers ParentItemId2__c peker til rootItem.Id. Underordnet deknings SubParentItemId__c peker til den primære forsikringsartikkelen. Feltene for tilbudslinje for forsikret artikkel og ItemName__c for tilbudslinje for forsikret part lagres med denne artikkelens instanceKey.

    5. Det primære forsikringselementets tilbudslinje inkluderer prisen.

  5. Hvis createOpportunity er true og ingen opportunityId oppgis for nye tilbud, opprettes det en Salgsmulighet-post med JSON-noden OpportunityDetails fra inputKey.

  6. Hvis calculateCommission er true, kalles InsCommissionService.processQuoteCommission, som klargjør inndata for InsCommissionService.calculate. Når beregningstjenesten har behandlet inndataene, lagrer den beregnede kommisjonsverdien i Quote.CommissionAmount__c.

Alle brukere som kaller opp InsQuoteService:createUpdateQuote, må ha Lese-tillatelse for alle felt i Tilbudsdetalj-feltet hvis feltsettet er lagt til i Tilbudslinje-objektet.

Hvis feltet Tilbudsdetalj ikke legges til i Tilbudslinjeelement-objektet, er alle felt, inkludert tilpassede felt, lesbare for brukere.

Tilleggskostnader

Slik fungerer denne tjenesten med tillegg (avgifter og gebyrer):

  • Hvis taxesAndFees-feltet er angitt i en JSON-post, beholdes en tilhørende QuotePricingAdjustment__c-post for hvert element i taxesAndFees-listen.

  • Hvis taxAmount-feltet angis i en JSON-post, angis TaxAmount__c-feltet til verdien i taxAmount-feltet i den opprettede QuoteLineItem.

  • Hvis feeAmount-feltet angis i en JSON-post, angis FeeAmount__c-feltet til verdien i feeAmount-feltet i den opprettede QuoteLineItem.

Legge til flere felt i tilbudslinjeelementer

Hvis du trenger flere felt som skrives til tilbudslinjeelementet av denne tjenesten, må du kalle opp tjenesten InsProductJSONService:trimOffAttributeCategory først.

Flyten for å få dette til å fungere i en OmniScript- eller integrasjonsprosedyre er:

  1. Produktkonfigurasjonstrinn

  2. InsProductJSONService:trimOffAttributeCategory-tjenestekall med selectedValueAsObject satt til true

  3. DataRaptor-transformasjon som kan inkludere tilordning mellom attributter og dine ekstra felt i Tilbudslinjeelement-objektet

  4. InsQuoteService:createUpdateQuote-tjenestekall

Eksterne alternativer

Alternativ

Beskrivelse

createInsuredItemsRelationships

true eller false

Hvis dette alternativet er satt til true, kan du angi en liste over instanceKey > parentInstanceKey-relasjoner mellom forsikrede artikler.

Dette alternativet støtter overordnet > underordnet og overordnet > underordnet > barnebarnforsikrede elementrelasjoner.

inputKey

Obligatorisk.

En JSON-nøkkel som denne tjenesten trekker ut nødvendig informasjon fra for å opprette eller oppdatere et tilbud.

Ikke bruk % til å omslutte verdien i denne nøkkelen. Denne nøkkelen representerer en JSON-node, ikke en variabel.

Fordi denne nøkkelen representerer en JSON-node og ikke en bane, bør du ikke bruke banenotasjon for parent:childnode:childnode.

For å komme til den riktige databasen skriver du den inn i feltet Send JSON Path i delen Send/Response Transformation når du legger til dette nøkkel/verdi-paret i et OmniScript-trinn.

insertInstance

true eller false

Når det angis til true, setter tjenesten inn flere tilbudslinjeelementer i et eksisterende tilbud. Det oppdaterer ikke tilbudstoppteksten, rotlinjeelementet eller et overordnet tilbudslinjeelement.

Bruk dette alternativet til å opprette et stort tilbud for flere forekomster via flere serverkall, der det nye settet av tilbudslinjeelementer for forekomstene settes inn i det eksisterende tilbudet i hvert kall.

quoteId

Valgfritt.

Id'et for et eksisterende tilbud, som denne tjeneste opdaterer, baseret på nye eller opdaterede oplysninger. Brukes når tjenesten må oppdatere et eksisterende tilbud.

isMultiRoot

Valgfritt.

Et boolsk flagg for å angi om tilbudet er et tilbud med flere røtter.

Standard er false.

minimizeQliQuerySize

true eller false

Når det angis til true, spør tjenesten bare de berørte tilbudslinjeelementene. Spesifikt de tilbudslinjeelementene som refererer til produktet i JSON-noden for inndataprodukter eller i JSON-noden for forsikrede artikler.

populateCalcResults

true eller false

Når det angis til false, fyller ikke tjenesten ut både rootItem.CalculatedPriceJSON_c-feltet og Quote.CalculatedPriceJSON_c-feltet.

pricebook

Obligatorisk.

Navnet på prislisten som er knyttet til produktspesifikasjonen.

Salesforce krever at produktene som brukes i tilbudslinjeelementer, har en prislisteoppføring.

recalculateTaxesAndFees

true eller false

Når det angis til true, beregner tjenesten avgifter og avgifter på nytt.

Når det angis til false, beregner ikke tjenesten avgifter og avgifter på nytt.

Merk
Merk

Hvis du angir dette alternativet til false, må du også legge til en linje i ins-coverage-quote-runtime-container-grensesnittmalen.

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

createOpportunity

true eller false

Når det angis til true, oppretter tjenesten en ny Salgsmulighet-post ved å bruke JSON-noden OpportunityDetails fra inputKey hvis det ikke oppgis noen opportunityId. Denne noden tilordnes til felt i salgsmulighetens sObject.

returnQuote

true eller false

Når det angis til true, inkluderer tjenestens utdata tilbudsdetaljer i JSON-noden quoteDetail.

calculateCommission

true eller false

Når det angis til true, beregner tjenesten provisjoner for rotelementene og lagrer det totale beløpet til Quote.CommissionAmount.

Når det angis til false (standard), beregner ikke tjenesten provisjoner.

Merk
Merk

Hvis du angir dette alternativet til sann, må du også skrive inn minst én av produsent- eller produksjonskodeverdiene: primaryProducerId, productionCodeId eller productionCodeName.

primaryProducerId

Valgfritt.

Foredler-IDen, det vil si produsenten som ble brukt til å hente commissionScheduleId og beregne provisjonsbeløpet.

productionCodeId

Valgfritt.

Produktionskode-id'et.

productionCodeName

Valgfritt.

Produksjonskodenavnet som er overført til InsCommissionService.calculate-tjenesten.

Hvis du ikke skriver inn productionCodeId, bruker tjenesten productionCodeName til å slå opp på productionCodeId. Hvis du skriver inn begge verdiene, men de ikke samsvarer, prioriteres productionCodeId.

runEligibilityRequiredDefaultSelectedRules

Valgfritt.

Standardverdier er true.

Bestemmer om berettigelsesregler og Standardvalgte-regler skal kjøres.

runRelationshipRules

Valgfritt.

Standardverdier er true.

Bestemmer om relasjonsregler skal kjøres.

runSelectedValivationRules

Valgfritt.

Standardverdier er true.

Bestemmer om Velg valideringsregler skal kjøres.

Inndata-JSON

Denne tjenesten ser etter verdien av inputKey. Gå til API-fanen i produktspesifikasjonen for å finne inndata-JSON-koden du trenger for denne tjenesten.

I dette eksemplet er 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-koden i inputKey inneholder flere nøkkel/verdi-par som tjenesten trenger for å opprette eller oppdatere et tilbud.

Nøkkel

Verdi

opportunityId

Den genererte salgsmulighets-ID-en.

accountId

Den genererte konto-ID-en.

endDate

Valgfritt.

Datoen da policyen utløper.

effectiveDate

Datoen da policyen trer i kraft.

productConfigurationDetail

En matrise med poster som følger produktets JSON-strukturmodell.

Det opprettes eller endres et rottilbudslinjeelement for hver produktpost i matrisen.

Hvis du vil vite mer om strukturen og innholdet i et produkt, kan du se JSON-modellen for produktets struktur.

additionalFields

Valgfritt.

additionalFields gjelder bare for nøkkel/verdi-par for rotanførselstegn, ikke tilbudslinjeelementer. For tilbudslinjeelementer legger du til additionalFields med productConfigurationDetail JSON.

insuredItems

Nøkkel/verdi-parene for de forsikrede artiklene som tjenesten bruker til å opprette tilbudslinjeelementene for forsikrede artikler.

Enten tilbudet inkluderer en enkelt forekomst av et forsikret element eller flere forsikrede elementer, formaterer du insuredItems med en matrise med poster.

"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 av et forsikret element som er direkte under rotproduktet i produkthierarkiet, kan du bruke formatet i dette eksempelet. insuredItems her inkluderer de forsikrede elementene og verdiene brukeren valgte for hver av dem. Vi støtter denne inndata-JSON-koden, men den er fra en tidligere utgivelse, og vi anbefaler den 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"

Hvis createOpportunity er true og ingen opportunityId oppgis for nye tilbud, oppretter tjenesten en ny Salgsmulighet-post ved bruk av JSON-noden OpportunityDetails fra inputKey. Bruk inndataformatet OpportunityDetails:FieldName. Her er et eksempel på en OpportunityDetails-node.

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

preTransformBundle-alternativ

Du kan også definere en DataRaptor-transformasjon som tilordner dataene som sendes til inndata-JSON-filen, til skjemaet tjenesten trenger. DataRaptors utdata-JSON er userInputs JSON som er definert i produktvisningens API-fane. Angi preTransformBundle-alternativet til navnet på DataRaptor for å la tjenesten bruke DataRaptor.

Utdata-JSON

Tjenesten returnerer tilbuds-ID-en til det nylig opprettede tilbudet. Det returnerer også tilbudsdetaljer hvis returnQuote er true, og salgsmulighets-ID-en hvis createOpportunity er true og ingen opportunityId oppgis.

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