Vous êtes ici :
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
- Ce service utilise
selectedProductJSON,userInputet lecensusId - 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). - Le service appelle le service
InsuranceRatingPtc.rateCensusCore pour calculer le prix de tous les produits. Le serviceInsuranceRatingPtc.rateCensusest un service asynchrone qui ne renvoie pas immédiatement le prix. À la place, il renvoie unasyncRequestId.
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 à |
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 La sélection de couvertures avec |
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"
}
}