Loading
Insurance
InsProductService:repriceProduct

InsProductService:repriceProduct

Utilisez ce service pour calculer le prix d'un produit en utilisant la procédure de tarification jointe à ce produit. Ce service est généralement appelé lorsqu'un utilisateur sélectionne un produit et personnalise sa couverture.

Classe: InsProductService

Méthode : repriceProduct

Le service prend un objet produit dans son JSON d'entrée et renvoie le produit avec la tarification totale et la somme totale assurée. Il renvoie également le JSON de résultat complet de la procédure de tarification.

Ce service fonctionne pour une ou plusieurs parties assurées (personnes couvertes par le produit de police) et un ou plusieurs éléments assurés (voitures multiples sur une police automobile, par exemple).

Ce service n'exécute pas les règles de couverture facultative Éligibilité, Obligatoire et Par défaut lors de la modification d'un devis.

Fonctionnement

  1. Le service recherche la clé de produit sélectionnée dans le JSON d'entrée, puis récupère sa valeur. Cet objet contient un objet produit.

  2. En utilisant les données du produit pour rechercher dans Salesforce, le service recherche le produit et récupère la procédure de tarification.

  3. Le service évalue le produit avec la structure JSON du produit.

  4. Le service renvoie les objets produit avec le prix total et la somme totale assurée. Le JSON de sortie inclut le JSON de résultat analysé de la procédure de tarification en tant que valeur de CalculatedPriceData. Le service définit également le prix et la totalSumInsured si les formules sont définies sur le produit.

Options distantes

Option

Description

aggByKey

PRODUCT.instanceKey

Lorsque aggByKey est défini, sa valeur est incluse dans le aggregationResult de la procédure de calcul, si aggregationResult n'est pas vide. (le aggregationResult est généralement rempli lorsqu'une procédure de calcul a configuré des étapes d'agrégation).

Par exemple, un devis ou une police d'assurance automobile a plusieurs conducteurs joints à chaque automobile assurée. L'auto assurée a un instanceKey séparé pour chaque instance auto+driver. Le aggByKey prend toutes les instanceKeys des véhicules et crée une série de primes de couverture par instanceKey, puis les transmet à la procédure de calcul afin de calculer correctement les primes.

alwaysCreateInstance

Définissez cette option sur true pour les produits avec plusieurs spécifications enfants à un niveau donné de la hiérarchie, aucune spécification petit-enfant et une seule procédure de tarification au niveau racine.

Oubliez cette option pour les produits qui ne remplissent pas tous ces critères.

Pour mettre en forme les userInputs de ce type de produit, consultez Une procédure de tarification par produit pour repriceProduct.

effectiveDate

“YYYY-MM-DD HH:MM:SS”

ou

%OmniScriptDataElement%

Valeur par défaut de la date du jour.

evalOptionalCoverageRelationship

true ou false

Si cette option = true, le service appelle d'updateOptionalCovIsSelectedField abord, puis appelle repriceProduct.

getDataDRBundleName

Le nom du mappeur de données Omnistudio que ce service utilise pour récupérer les informations de la stratégie (actif).

Si vous utilisez Salesforce FSC, vous devez spécifier cette option ou getDataCustomClassName.

getDataCustomClassName

Le nom de la classe personnalisée que ce service utilise pour récupérer les informations de la politique (actif).

Si vous utilisez Salesforce FSC, vous devez spécifier cette option ou getDataDRBundleName.

includeInputKeys

Une chaîne de paires clé/valeur séparées par une virgule que le service transmet dans et hors de la procédure de calcul.

Ces paires clé/valeur sont incluses dans l'objet produit de sortie de l'objet CalculatedPriceData. Ils sont là pour vous aider à analyser les résultats de calcul.

Seules les clés d'entrée utilisées par la procédure de calcul ont une valeur dans les résultats.

includeRawCalculationResult

true ou false

Par défaut false.

Inclut les résultats complets de la procédure de calcul dans la clé de RawPriceData.

validateCoverageSelection

true ou false

Défini sur true si vous envisagez d'utiliser des règles de validation de couverture facultatives. Lorsque cette option est définie sur true, le service appelle InsuranceSelectValidationService avant d'appeler reprice.

calculateTaxesAndFees

Facultatif

true ou false

Défini sur true pour calculer les taxes et les frais sur le produit cible.

Si vous utilisez Salesforce FSC et que vous définissez cette option sur true, vous devez également spécifier l'option getDataDRBundleName ou getDataCustomClassName.

jurisdictionIds

Liste restreinte d'ID

Utilisé conjointement avec l'option calculateTaxesAndFees.

Calcule uniquement les taxes et les frais associés aux juridictions fournies.

taxAndFeeEffectiveDate

La date effective que ce service utilise pour calculer les taxes et les frais. Cette option est séparée de l'option effectiveDate utilisée pour calculer le prix du produit.

Si une valeur est fournie, le service utilise cette valeur.

Si aucune valeur n'est fournie et que le JSON du produit n'est pas une stratégie, le service est défini par défaut sur la date du jour.

Si la valeur n'est pas fournie et que le JSON du produit est une stratégie, le service utilise la date d'entrée en vigueur de la version d'origine de la stratégie.

withTaxFeeRounding

Facultatif

Si vrai, les montants de taxe et de frais calculés sont arrondis à deux décimales en utilisant la méthode de l'arrondi à moitié pair. La withTaxFeeRounding est effective uniquement lorsque l'option de calculateTaxesAndFees est également vraie. Si false, l'arrondi est désactivé.

La valeur par défaut est false.

JSON d'entrée

InsProductService: repriceProduct recherche un objet produit dans la clé selectedProduct de son JSON d'entrée. Cet objet contient les entrées requises par la procédure de tarification telles que mappées dans les attributs du produit, y compris ses spécifications de couverture associées, ses spécifications d'articles assurés, ses spécifications de partie assurée et ses spécifications de fait de tarification. Cet objet peut être créé par d'autres services tels que getRatedProducts. Il comprend le produit racine, les produits enfants et les produits petits-enfants. Le service analyse la structure du produit et transmet les données dans l'ensemble d'expressions ou la procédure de calcul. Si les attributs mappés pour l'évaluation ne sont pas inclus dans l'objet, le service utilise les paramètres par défaut définis par l'administrateur produit.

Ce service recherche également une clé de userInputs dans le JSON d'entrée. Il peut ainsi trouver tous les facteurs d'évaluation qui ne sont pas inclus dans le nœud selectedProduct. Utilisez le format de userInputs approprié en fonction de la définition du produit et de la configuration du prix. Le service accepte un seul type de format de userInputs à la fois.

JSON de sortie

Le service renvoie la même structure JSON que celle du nœud selectedProduct avec des informations de tarification mises à jour. Pour plus d'informations sur le contenu et la structure de cet objet, consultez Modèle de structure JSON Produit.

Remarque
Remarque

Si des services de taxe et de frais sont utilisés, la sortie JSON est conservée dans l'enregistrement JSON, de la même façon que getRatedProducts écrit dans le JSON.

Pour chaque produit, le JSON de sortie du calcul de la procédure de tarification est ajouté au produit avec la clé de CaculatedPriceData. Si la formule de tarification est définie sur le produit, la valeur de price est définie sur sa valeur calculée. Si la formule totale assurée est définie sur le produit, la valeur de TotalInsured est définie sur sa valeur calculée.

La structure sous CalculatedPriceData inclut la prise en charge de l'instance. Les métriques de prix sont regroupées sous le niveau de l'instance.

Le JSON de sortie inclut un nœud priceDiff au niveau racine qui totalise les prix au niveau de l'instance. Il inclut également le champ totalPremiumForTermDiff au niveau racine. Cette valeur correspond à la différence entre la prime totale d'origine pour durée et la somme entre la prime totale pour durée de la nouvelle version de police et la prime mise à jour pour durée de l'ancienne version de police.

Dans cet exemple, la formule de tarification est définie sur le produit, mais pas la formule du total assuré. Le service ajoute la CalculatedPriceData aux résultats de la procédure de tarification. Le service calcule le prix en fonction de la formule. La formule totale assurée n'est pas définie dans le produit et n'est pas affichée dans les données (TotalInsured non plus).

"totalSize": null,
"records": [{
    "displaySequence": -1,
    "rootProductId": "01t1I000002fuBoQAI",
    "rootProductCode": "AUTOROOT",
    "timestamp": 1533948385704,
    "hasInstanceKeys": true,
    "childProductsCount": 8,
    "instanceKeyChildren": 2,
    "pathFromChild": "[0]",
    "pathFromRoot": "[0]",
    "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": [{
        "calculationResults": [{
          "DRIVER.LN": null,
          "DRIVER.FN": null,
          "AUTO.instanceKey": "2015 Lexus LX250",
          "uninsuredMotoristBITotal": 100,
          "uninsuredMotoristPDTotal": 0,
          "dedWaiverTotal": 10,
          "roadsideTotal": 10,
          "medicalTotal": 10,
          "rentalTotal": 40,
          "comprehensiveTotal": 500,
          "ID": "0"
        }],
        "aggregationResults": {}
      },
      {
        "calculationResults": [{
          "DRIVER.LN": null,
          "DRIVER.FN": null,
          "AUTO.instanceKey": "2006 Honda Odyssey",
          "uninsuredMotoristBITotal": 100,
          "uninsuredMotoristPDTotal": 0,
          "dedWaiverTotal": 10,
          "roadsideTotal": 10,
          "medicalTotal": 10,
          "rentalTotal": 40,
          "comprehensiveTotal": 500,
          "ID": "1"
        }],
        "aggregationResults": {}
      }
    ],
    "CalculatedPriceData": {
      "2015 Lexus LX250": {
        "DRIVER.LN": null,
        "DRIVER.FN": null,
        "AUTO.instanceKey": "2015 Lexus LX250",
        "uninsuredMotoristBITotal": 100,
        "uninsuredMotoristPDTotal": 0,
        "dedWaiverTotal": 10,
        "roadsideTotal": 10,
        "medicalTotal": 10,
        "rentalTotal": 40,
        "comprehensiveTotal": 500,
        "ID": "0"
      },
      "2006 Honda Odyssey": {
        "DRIVER.LN": null,
        "DRIVER.FN": null,
        "AUTO.instanceKey": "2006 Honda Odyssey",
        "uninsuredMotoristBITotal": 100,
        "uninsuredMotoristPDTotal": 0,
        "dedWaiverTotal": 10,
        "roadsideTotal": 10,
        "medicalTotal": 10,
        "rentalTotal": 40,
        "comprehensiveTotal": 500,
        "ID": "1"
      }
    },
    "priceDiff": 0,
    "totalPremiumForTermDiff": 0,
    "attributeCategories": {
      "totalSize": 1,
      "records": [{
        "displaySequence": 5,
        "id": "a1V1I0000007xJSUAY",
        "Name": "Alan Health Attributes",
        "Code__c": "AHA",
        "productAttributes": {
          "totalSize": 1,
          "records": [{
            "code": "ALANDEDUCTIBLE",
            "dataType": "text",
            "inputType": "text",
            "required": false,
            "readonly": false,
            "disabled": false,
            "filterable": true,
            "attributeId": "a1W1I000000Bu1jUAC",
            "label": "Deductible",
            "displaySequence": 2,
            "hasRules": false,
            "hidden": false,
            "values": [{
              "readonly": false,
              "disabled": false
            }],
            "userValues": "test",
            "parentProductId": "01t1I000002fuBoQAI",
            "parentProductCode": "AUTOROOT",
            "pathFromChild": "attributeCategories.records[0].productAttributes.records[0]",
            "pathFromRoot": "attributeCategories.records[0].productAttributes.records[0]"
          }]
        }
      }]
    },
    "childProducts": {
      ...
    }
 
Chargement
Salesforce Help | Article