Loading
Seguro
InsProductService:repriceProduct

InsProductService:repriceProduct

Utilice este servicio para asignar un precio a un producto utilizando el procedimiento de valoración adjunto a ese producto. Este servicio se denomina habitualmente cuando un usuario selecciona un producto y personaliza su cobertura.

Clase: InsProductService

Método: repriceProduct

El servicio toma un objeto de producto en su JSON de entrada y devuelve el producto con precios totales y suma asegurada total. También devuelve el JSON de resultado completo desde el procedimiento de valoración.

Este servicio funciona para una o más partes aseguradas (personas cubiertas por el producto de póliza) y uno o más elementos asegurados (múltiples automóviles en una póliza de automóvil, por ejemplo).

Este servicio no ejecuta reglas de cobertura opcionales Elegibilidad, Obligatorio y Predeterminado al modificar un presupuesto.

Funcionamiento

  1. El servicio busca el JSON de entrada para la clave de producto seleccionada, luego recupera su valor. Este objeto contiene un objeto de producto.

  2. Utilizando los datos del producto para buscar en Salesforce, el servicio busca el producto y recupera el procedimiento de valoración.

  3. El servicio califica el producto con la estructura JSON del producto.

  4. El servicio devuelve los objetos de producto con el precio total y la suma asegurada total. El JSON de salida incluye el JSON de resultado analizado desde el procedimiento de valoración como el valor de CalculatedPriceData. El servicio también establece el precio y el totalSumInsured si las fórmulas están establecidas en el producto.

Opciones remotas

Opción

Descripción

aggByKey

PRODUCT.instanceKey

Cuando se establece el aggByKey, su valor se incluye en el aggregationResult del procedimiento de cálculo, si el aggregationResult no está vacío. (El aggregationResult se rellena habitualmente cuando un procedimiento de cálculo tiene pasos de agregación configurados).

Por ejemplo, un presupuesto o póliza de seguro de auto tiene múltiples conductores adjuntos a cada auto asegurado. El auto asegurado tiene un instanceKey separado para cada instancia de auto+conductor. El aggByKey toma todas las instanceKeys para los vehículos y crea una serie de primas de cobertura por instanceKey, y las pasa al procedimiento de cálculo de modo que las primas se puedan calcular correctamente.

alwaysCreateInstance

Establezca esta opción en true para productos con múltiples especificaciones secundarias en un nivel concreto de la jerarquía, sin especificaciones de nieto y solo un procedimiento de valoración en el nivel raíz.

Omita esta opción para productos que no cumplen todos estos criterios.

Para dar formato a userInputs para este tipo de producto, consulte Un procedimiento de valoración por producto para repriceProduct.

effectiveDate

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

o bien

%OmniScriptDataElement%

Toma como valor predeterminado la fecha de hoy.

evalOptionalCoverageRelationship

true o false

Si esta opción = true, el servicio llama updateOptionalCovIsSelectedField primero, luego llama a repriceProduct.

getDataDRBundleName

El nombre del Asignador de datos de OmniStudio que este servicio utiliza para recuperar información de políticas (activos).

Si está utilizando Salesforce FSC, debe especificar esta opción o getDataCustomClassName.

getDataCustomClassName

El nombre de la clase personalizada que utiliza este servicio para recuperar información de pólizas (activos).

Si está utilizando Salesforce FSC, debe especificar esta opción o getDataDRBundleName.

includeInputKeys

Una cadena de pares clave/valor separados por comas que el servicio pasa dentro y fuera del procedimiento de cálculo.

Estos pares clave/valor se incluyen en el objeto de producto de salida dentro del objeto CalculatedPriceData. Están ahí para ayudarle a analizar los resultados del cálculo.

Solo las teclas de entrada utilizadas por el procedimiento de cálculo tienen un valor en los resultados.

includeRawCalculationResult

true o false

Toma como valor predeterminado false.

Incluye los resultados completos del procedimiento de cálculo en la clave de RawPriceData.

validateCoverageSelection

true o false

Establezca en true si piensa utilizar reglas de validación de cobertura opcionales. Cuando esta opción está establecida como true, el servicio llama a InsuranceSelectValidationService antes de llamar al reprecio.

calculateTaxesAndFees

Opcional

true o false

Establezca en true para calcular impuestos y comisiones en el producto de destino.

Si utiliza Salesforce FSC y establece esta opción como true, también debe especificar la opción getDataDRBundleName o getDataCustomClassName.

jurisdictionIds

Lista restringida de identificadores

Se utiliza junto con la opción calculateTaxesAndFees.

Calcula únicamente los impuestos y las tasas asociados con las jurisdicciones proporcionadas.

taxAndFeeEffectiveDate

La fecha efectiva que utiliza este servicio para calcular impuestos y comisiones. Esta opción es independiente de la opción de effectiveDate utilizada para asignar un precio al producto.

Si se proporciona un valor, el servicio utiliza ese valor.

Si no se proporciona un valor y el JSON del producto no es una política, el servicio toma como valor predeterminado la fecha actual.

Si no se proporciona el valor y el JSON del producto es una política, el servicio utiliza la fecha efectiva de la versión de política original.

withTaxFeeRounding

Opcional

Si es verdadero, los importes de impuestos y comisiones calculados se redondean a dos decimales utilizando el método de redondeo medio par. La withTaxFeeRounding es efectiva solo cuando la opción calculateTaxesAndFees también es verdadera. Si es falso, el redondeo está desactivado.

El valor predeterminado es false.

JSON de entrada

InsProductService: repriceProduct busca un objeto de producto en la clave de selectedProduct en su JSON de entrada. Este objeto contiene las entradas necesarias para el procedimiento de valoración asignadas en los atributos del producto, incluyendo sus especificaciones de cobertura asociadas, especificaciones de elementos asegurados, especificaciones de partes aseguradas y especificaciones de hechos de valoración. Este objeto puede ser creado por otros servicios como getRatedProducts. Incluye el producto raíz, los productos secundarios y los productos nietos. El servicio analiza la estructura del producto y pasa datos al conjunto de expresiones o procedimiento de cálculo. Si los atributos asignados para la valoración no están incluidos en el objeto, el servicio utiliza valores predeterminados establecidos por el administrador del producto.

Este servicio también busca una clave de userInputs en el JSON de entrada, de modo que puede encontrar cualquier factor de valoración que no esté incluido en el nodo selectedProduct. Utilice el formato de userInputs apropiado dependiendo de la definición del producto y la configuración de la valoración. El servicio solo acepta un tipo de formato de userInputs a la vez.

JSON de salida

El servicio devuelve la misma estructura JSON que en el nodo selectedProduct con información de precios actualizada. Consulte Modelo de estructura JSON de producto para obtener detalles acerca del contenido y la estructura de este objeto.

Nota
Nota

Si se utilizan servicios de impuestos y comisiones, la salida de JSON se mantiene en el registro JSON, de forma similar a como escribe getRatedProducts en el JSON.

Para cada producto, el JSON de salida del cálculo del procedimiento de valoración se agrega al producto con la clave de CaculatedPriceData. Si la fórmula de precios está establecida en el producto, el valor de price se establece en su valor calculado. Si la fórmula asegurada total se establece en el producto, el valor de TotalInsured se establece en su valor calculado.

La estructura bajo CalculatedPriceData incluye compatibilidad de instancia. Las mediciones de precios se agrupan bajo nivel de instancia.

El JSON de salida incluye un nodo de priceDiff a nivel raíz que resume los precios a nivel de instancia. También incluye el campo totalPremiumForTermDiff en el nivel raíz. Este valor es la diferencia entre la prima total original a plazo y la suma entre la prima total a plazo de la nueva versión de póliza y la prima actualizada a plazo de la versión de póliza antigua.

En este ejemplo, la fórmula de precios se establece en el producto, pero la fórmula asegurada total no. El servicio agrega el CalculatedPriceData a los resultados del procedimiento de valoración. El servicio calcula el precio basándose en la fórmula. La fórmula asegurada total no está establecida en el producto y no aparece en los datos (tampoco TotalInsured).

"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": {
      ...
    }
 
Cargando
Salesforce Help | Article