Vlocity – Cálculo avanzado de precios

En este artículo se analiza el cálculo avanzado de precios en Vlocity CPQ. Se detallarán configuraciones y mecanismos que proporciona la herramienta de Vlocity para ir un paso más en el cálculo de precios.

Adicional al cálculo avanzado se comentará de manera muy sintetizada las opciones básicas que ya proporciona Vlocity para calcular precios ya que son la base que se utilizará para poder llegar a realizar cálculos más complejos.

Vlocity CPQ - Introducción al cálculo de precios

El cálculo de precios en CPQ se basa en la configuración principalmente de dos apartados:

  1. Configuración de la Price List asociada a los productos a calcular.

  2. Creación de los procedimientos y matrices de cálculo asociadas para poder devolver los precios asociados a un producto.

Configuración de Price List

Se pueden crear registros en la Price List a partir de una lista de precios o un producto y usar estos registros de la Price List para asignar un precio a cualquier producto o paquete de productos, o para combinar la pricing variable con el elemento de precio apropiado para formar el precio del producto. Los pasos a seguir para configurar esta Price List:

  1. Dar de alta el nuevo registro en la Price List (Price List Entries). En este punto se detalla el precio asociado.

  2. Configurar la Pricing Variable asociada a dicho registro. También será necesario indicar el Pricing Element que almacenará el valor final del precio.

  3. Establecer la vigencia de dicho precio.

Para tener todo el detalle de esta configuración os podéis dirigir al siguiente artículo de Vlocity

Procedimientos y matrices de cálculo

En el caso de que se requiera de combinación de varios input de información para poder llegar a obtener el precio, Vlocity proporciona las matrices y los procedimientos de cálculo para este fin.

Tendríamos dos pasos para poder obtener el precio:

  1. Dar de alta la matriz de cálculo con la información requerida. Tiene dos apartados principales:

    1. Inputs de la matriz: Son las columnas que se deben informar y en base a los cuales podemos identificar de forma unívoca un registro de dicha matriz.

    2. Outputs de la matriz: Son las columnas que se devolverán en base a los inputs enviados y que en definitiva se tratan de los resultados a devolver. Pueden ser uno o varios.

  2. Definir el procedimiento de cálculo: Vlocity permite establecer operaciones sobre los inputs de la matriz mediante los cuales se puedan devolver resultados que necesitan de alguna operativa adicional y no se puedan calcular directamente. Un ejemplo podría ser un output que fuera la suma y multiplicación de N valores.

Cálculo avanzado de precios

Partiendo de la base anteriormente comentada Vlocity permite ir un paso más allá en el cálculo de precios para poder obtener un resultado que requiera de una complejidad alta en su cálculo o en los cuales se tenga alguna limitación técnica usando los recursos ya comentados. Para ello tendremos a continuación detallados los pasos a realizar.

Configuraciones a realizar

Hay varias configuraciones a realizar dependiendo de la casuística sobre la cual debamos actuar en cuanto a nuestro cálculo. Tendríamos los siguientes escenarios:

  • Gestionar llamadas al CPQ: Vlocity proporciona una implementación denominada CpqAppHandlerHookImplementation que nos permite gestionar las llamadas API realizadas sobre el CPQ de Vlocity. Esta funcionalidad es importante porque permite:

    • Procesamiento condicional.

    • Precargar la información para utilizarla en el futuro.

    • Procesar campos personalizados.

    • Implemente una funcionalidad personalizada.

A continuación se muestra un esquema de cómo se realiza esta orquestación de llamadas.

Os indicamos el enlace donde podréis encontrar los pasos a seguir para configurar esta implementación.

  • Customizar cálculos Pricing Variables: Gracias a las matrices y procedimientos de cálculo podemos realizar cálculos de cierta complejidad y operaciones sobre datos que nos devuelvan un precio final pero en ocasiones no es posible técnicamente llevar a cabo ciertos cálculos debido a su complejidad o a que depende de llamadas a otros procedimientos de cálculo, etc...

Es para estos casos en los que Vlocity proporciona la implementación PricingVariableMapHookImplementation

Esta configuración permite:

  • Crear nuevos cálculos sobre las Pricing Variables definidas y que eran dependientes de cálculos previos en los procedimientos de cálculo.

  • Modificar cálculos ya devueltos por dichos procedimiento de cálculo.

  • Aplicar formateos a los precios (número de decimales, redondeos).

  • Añadir texto que se mostrará como Tooltip una vez posicionemos el ratón sobre el precio dentro del carrito. Esto sirve por ejemplo para mostrar cual ha sido la fórmula usada para calcular un precio.

  • Realizar operaciones aritméticas mas complejas y que estarían limitadas en la configuración de un procedimiento de cálculo.

  • Realizar cálculos o asignar precios calculados a nivel de producto hijo a un producto padre.

A continuación se indican los pasos que se siguen en el lanzamiento de esta implementación:

  1. PricingVariableMapHookImplementation.invokeMethod('calculate.PreInvoke', input, output): Se ejecutará el código implementado en este método antes de llamar a los procedimientos de cálculos definidos. Ejemplo: realizar algún tipo de preparación sobre los inputs los que se vayan a realizar la llamada a matriz.

  2. DefaultPricingVariableCalcImplementation.invokeMethod('calculate', input, output): Se llama a los procedimientos de cálculos definidos en el Pricing Plan Serice establecido.

  3. PricingVariableMapHookImplementation.invokeMethod('calculate.PostInvoke', input, output): en este método se devuelven todas las Pricing Variables junto con el resultado obtenido tras llamara a las matrices y procedimientos de cálculo.

El paso que en la mayoría de las veces se deberá implementar sería el indicado en el punto 3 ya que llegados a este punto tendremos todos los resultados calculados hasta el momento para cada una de las Pricing Variables.

Para llevar cabo la configuración de dicha implementación y tener una clase que sirva de punto de partida para establecer en nuestro entorno se puede seguir el siguiente artículo.

Conclusiones

Vlocity proporciona funcionalidades Out-the-box que nos permiten poder realizar los cálculos que necesitemos para poder obtener el precio de un determinado producto.

Adicional a esto y para cuando se requiera ir un paso más debido a limitaciones de las funcionalidades ya existentes o para dar cabida a cálculos más complejos, Vlocity también nos proporciona implementaciones que dan solución a estos temas.

Es necesario también recalcar la importancia de no sobrecargar el proceso de cálculo con customizaciones pesadas debido a que podemos impactar en errores de timeout por superar los límites de tiempo o por ejemplo errores de límites de querys.

Como en cualquier solución Salesforce hay que hacer un buen balance para aprovechar todo lo que se tiene de forma estándar y usar en casos excepcionales dichas customizaciones que nos harán llegar a tener la solución requerida.