Loading
Insurance
InsProductAsyncRatingService:repriceProduct

InsProductAsyncRatingService:repriceProduct

Recalculez de façon asynchrone le prix d'un produit en fonction du JSON et de la userInput selectedProduct.

Classe: InsProductAsyncRatingService

Méthode : repriceProduct

Ce service est conçu pour les cas d'utilisation de Classement des produits volumineux Avantage de groupe.

Fonctionnement

  1. Ce service utilise selectedProduct JSON, userInput et le censusId
  2. Ensuite, le service examine le produit pour déterminer s'il est configuré pour la tarification basée sur le recensement ou la tarification basée sur le résumé (basée sur le champ PricingStrategyType__c).
  3. Le service appelle le service InsuranceRatingPtc.rateCensus Core pour calculer le prix de tous les produits. Le service InsuranceRatingPtc.rateCensus est un service asynchrone qui ne renvoie pas immédiatement le prix. À la place, il renvoie un asyncRequestId.

Entrées

Entrée Description
groupClassIds

Facultatif.

Une liste d'ID de classe de groupe.

productCategories

Facultatif.

Une liste de catégories de produits. La séquence doit être identique à productIds

selectedProduct

Obligatoire.

Le produit à recalculer.

userInputs

Obligatoire.

L'ensemble de données d'entrée que la procédure de tarification utilise pour obtenir le prix du produit.

Pour une Map <String, Object>, le même jeu de données d'entrée est utilisé pour tous les produits.

Pour une List<Map<String, Object>>, la taille de la List doit être identique à la taille de la productIds. Si certains produits n'ont pas de userInput, ajoutez un {} à la Liste.

La sélection de couvertures avec CoverageProductCode.isSelected n'est pas prise en charge, mais elle est prise en compte lors du calcul de la tarification.

Options distantes

Option Description
censusId

Obligatoire.

L'ID du recensement du groupe.

effectiveDate

La date effective utilisée pour la tarification.

Utilise le format "AAAA-MM-JJ HH:MM:SS".

La valeur par défaut est la date du jour.

evalOptionalCoverageRelationship Détermine si les couvertures facultatives disponibles pour un participant sont évaluées en fonction de sa relation avec le membre principal du recensement. Si cette option est définie sur true, le service commence par appeler updateOptionalCovIsSelectedField, puis appelle repriceProduct.
ruleAttributeSetValues Détermine si les règles Définir la valeur doivent être exécutées. Si cette option est définie sur true, le service exécute les règles Définir la valeur de l'attribut avant d'appeler le moteur de tarification.
validateCoverageSelection Détermine si des règles de validation de couverture sont exécutées sur les couvertures sélectionnées. Lorsque cette option est définie sur true, le service appelle InsuranceSelectValidationService avant d'appeler repriceProduct.

JSON d'entrée

Voici l'exemple de JSON d'entrée :

{
 "userInputs": {"DentalCoverage.copay": 100},
 "groupClassIds": ["0rEDI0000000IEe2AM", "0rEDI0000000IEe4Hr"],
 "productCategories": ["Dental"],
 "selectedProduct": {
   "records": [
    {
      "displaySequence": -1,
      "CalculatedPriceData": {
        "2015 Lexus LX250": {
          " DRIVER.FN": null,
          "AUTO.instanceKey": "2015 Lexus LX250",
          "totalPrice": 1650,
          "comprehensiveTotal": 500,
          "collisionTotal": 500,
          "liabilityTotal": 650,
          "totalTotal": 400,
          "perAccidentTotal": 150,
          "perPersonTotal": 100,
          "ID": "1"
        }
      },
      "Id": "01tB0000001qc4JIAQ",
      "Name": "Auto Root",
      "ProductCode": "AUTOROOT",
      "IsRecommended__c": false,
      "RecordTypeName__c": "Product",
      "IsConfigurable__c": false,
      "PricingFormula__c": "SUM(liabilityTotal + comprehensiveTotal + collisionTotal + stateTotal)",
      "Term__c": "Annual",
      "TotalInsuredFormula__c": "SUM(AUTO.carValue)",
      "productId": "01tB0000001qc4JIAQ",
      "currencyCode": "USD",
      "currencySymbol": "$",
      "Price": 1000,
      "totalSumInsured": 0,
      "taxesAndFees": [
        {
          "calculatedAmount": 100,
          "currencySymbol": "$",
          "currencyCode": "USD",
          "Type__c": "Fee",
          "RatingType__c": "Amount",
          "ProcedureSource__c": null,
          "ProcedureName__c": null,
          "ProcedureFormula__c": null,
          "Percent__c": null,
          "JurisdictionId__c": null,
          "IsRefundable__c": false,
          "Condition__c": null,
          "Amount__c": 100,
          "Name": "acaf9c93-67b1-5a94-c98f-e7a1387361f1",
          "Id": "a4OB0000000ErbeMAC"
        },
        {
          "calculatedAmount": 50,
          "currencySymbol": "$",
          "currencyCode": "USD",
          "Type__c": "Tax",
          "RatingType__c": "Percent",
          "ProcedureSource__c": null,
          "ProcedureName__c": null,
          "ProcedureFormula__c": null,
          "Percent__c": 5,
          "JurisdictionId__c": null,
          "IsRefundable__c": true,
          "Condition__c": null,
          "Amount__c": null,
          "Name": "c4b50dd7-7b28-27c0-8b9f-87cd68e6a478",
          "Id": "a4OB0000000ErbfMAC"
        }
      ],
      "taxAmount": 160,
      "feeAmount": 145,
      "totalTaxFeeAmount": 305,
      "childProducts": {
        "totalSize": 2,
        "records": [
          {
            "displaySequence": 1,
            "Id": "01tB0000001qc5lIAA",
            "Name": "Collision Deductible Waiver",
            "Description": "We waive your Collision deductible when you're in an accident caused by a driver who has no insurance.",
            "ProductCode": "COL_WAIVER",
            "IsRecommended__c": false,
            "RecordTypeName__c": "CoverageSpec",
            "IsConfigurable__c": true,
            "productId": "01tB0000001qc5lIAA",
            "pciId": "a4bB0000000CzkzIAC",
            "isOptional": false,
            "isSelected": true,
            "attributeCategories": {
              "totalSize": 1,
              "records": [
                {
                  "displaySequence": 1981,
                  "Code__c": "AUTO_COVERAGE",
                  "Name": "Auto Coverage",
                  "productAttributes": {
                    "totalSize": 1,
                    "records": [
                      {
                        "code": "DED_WAIVER",
                        "dataType": "text",
                        "inputType": "dropdown",
                        "multiselect": false,
                        "required": false,
                        "readonly": false,
                        "disabled": false,
                        "filterable": true,
                        "label": "Collision Deductible Waiver",
                        "displaySequence": 3,
                        "hasRules": false,
                        "hidden": false,
                        "values": [
                          {
                            "id": "0",
                            "label": "No coverage",
                            "readonly": false,
                            "disabled": false,
                            "value": "No coverage"
                          },
                          {
                            "id": "1",
                            "label": "$1,000 deductible",
                            "readonly": false,
                            "disabled": false,
                            "value": "1000"
                          }
                        ],
                        "userValues": "No coverage"
                      }
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }
  ]
 }
}

Options JSON

Voici les exemples de JSON d'options :


{     
  "censusId": "0rfRO00000009WTYAY",
  "effectiveDate": "2023-06-22 00:00:00"
}

JSON de sortie

Voici l'exemple de JSON de sortie :

{
  "asyncRequestId": {
    "01tRO000000k6RyYAI": "8zk9f00000Q5jUEHNS"
  }
}
 
Chargement
Salesforce Help | Article