Usos de cálculo

La infraestructura de cálculo de HCL Commerce es una infraestructura genérica para cálculos. Cuando se implementa un cálculo utilizando esta infraestructura, primero debe definir el tipo de cálculo que se debe llevar a cabo. Los tipos de cálculo que puede realizar se denominan calculation usages. A los usos de cálculo se les asigna un código de uso de cálculo.

HCL Commerce proporciona los siguientes usos de cálculo predefinidos:
Uso de cálculo Código de uso de cálculo
Descuento -1
Envío -2
Impuesto sobre la venta -3
Impuestos sobre el envío -4
Coupon -5
Recargo -6
Ajuste de envío -7

HCL Commerce realiza todos los cálculos para un uso de cálculo a la vez. El orden de los usos de cálculo se almacena en la columna SEQUENCE de la tabla de base de datos STENCALUSG. Las entradas de esta tabla se llenan inicialmente con información del archivo de rutina de carga independiente del idioma: wcs.bootstrap.xml.

Los usos de cálculo definidos en wcs.bootstrap.xml se procesan en el siguiente orden predeterminado:
  1. Coupon
  2. Descuento
  3. Envío
  4. Impuesto sobre la venta
  5. Impuestos sobre el envío
  6. Recargo
  7. Ajuste de envío
Nota: El recargo siempre debe ser el proceso final. El uso del cálculo de ajuste de envío siempre debe procesarse después del uso del cálculo de envío.

Tablas de base de datos para el uso de cálculo

La información sobre los usos de cálculo se almacena en las tablas de base de datos siguientes:
CALUSAGE
Esta tabla contiene un identificador exclusivo para cada uso de cálculo y una descripción del uso de cálculo. Los valores de esta tabla se definen en el archivo de rutina de carga dependiente del idioma.
STENCALUSG
Esta tabla define el comportamiento de alto nivel de un uso de cálculo para una tienda o un grupo de tiendas. Si no se ha definido la implementación para una tienda, se utilizará la implementación para el grupo de tiendas. Si se definen implementaciones diferentes para la tienda y el grupo de tiendas, se utiliza la implementación para la tienda. Esta tabla de base de datos se llena inicialmente con los datos del archivo de rutina de carga independiente del idioma.

Las secciones siguientes describen los atributos clave de uso de cálculo que se almacenan en algunas de las tablas de base de datos.

Diagrama de modelo de datos de uso de cálculo

El diagrama de modelo de datos siguiente ilustra las relaciones entre las tablas de base de datos que se utilizan para definir los usos de cálculo.

Métodos de cálculo para usos de cálculo

Existen cuatro subclases de métodos de cálculo asociadas con los usos de cálculo:
InitializeCalculationUsage
A estos métodos de cálculo los llama el mandato OrderPrepare para cada uso de cálculo que especifique en la columna USAGEFLAGS de la tabla de base de datos STENCALUSG, antes de llamar al método de cálculo ApplyCalculationUsage.
ApplyCalculationUsage
A estos métodos de cálculo los llama el mandato OrderPrepare para cada uso de cálculo que especifica en la columna USAGEFLAGS de la tabla de base de datos STENCALUSG. A estos métodos también se les puede llamar desde los beans de datos u otros mandatos de tarea para calcular importes de artículos que no están necesariamente en un pedido. Por ejemplo, el mandato de tarea GetReturnTaxes llama al método ApplyCalculationUsage para el uso de cálculo de impuestos sobre la venta.
SummarizeCalculationUsage
A estos métodos de cálculo los llama el mandato OrderPrepare para cada uso de cálculo que especifique en la columna USAGEFLAGS de la tabla de base de datos STENCALUSG, antes de llamar a los métodos de cálculo ApplyCalculationUsage. Los métodos de cálculo SummarizeCalculationUsage resumen los importes calculados. Por ejemplo, el método SummarizeCalculationUsage para el uso de cálculo de impuestos sobre la venta llena de datos la tabla de base de datos SUBORDTAX y las columnas SUBORDERS.TOTALTAX. La tabla de base de datos SUBORDTAX contiene información de impuestos para los artículos de pedido de un subpedido.
FinalizeCalculationUsage
A estos métodos de cálculo los llama el mandato de tarea ProcessOrder para cada uso de cálculo que especifica en la columna USAGEFLAGS de la tabla de base de datos STENCALUSG. Por ejemplo, el método FinalizeCalculationUsage para el uso de cálculo de cupón marca los cupones que se aplican a un pedido para evitar que dichos cupones se vuelvan a aplicar a un pedido diferente.

En la siguiente sección se describen estas subclases de método de cálculo y las implementaciones predeterminadas que se proporcionan con HCL Commerce.

Métodos de cálculo InitializeCalculationUsage

Los métodos de cálculo InitializeCalculationUsage realizan cualquier proceso que sea necesario antes de que se calculen los importes monetarios para los artículos de pedido. Por ejemplo, pueden eliminar de los artículos del pedido los valores calculados anteriormente.

Los mandatos que se vayan a utilizar como subclase del método de cálculo InitializeCalculationUsage deben implementar la interfaz InitializeCalculationUsageCmd.

Los siguientes métodos de cálculo InitializeCalculationUsage se proporcionan con HCL Commerce:

  • InitializeAdjustmentCmdImpl
  • InitializeCouponUsageCmdImpl
  • InitializeSalesTaxCmdImpl
  • InitializeShippingCmdImpl
  • InitializeShippingTaxCmdImpl

InitializeAdjustmentCmdImpl

Este mandato implementa la interfaz InitializeAdjustmentCmd que amplía la interfaz InitializeCalculationUsageCmd.

Este es el método común de inicialización de uso de cálculo para los usos de cálculo de ajuste de envío, de recargo y de descuento.

InitializeCouponUsageCmdImpl

Este mandato implementa la interfaz InitializeCouponUsageCmd que amplía la interfaz InitializeCalculationUsageCmd.

Este mandato se utiliza para los cupones.

InitializeSalesTaxCmdImpl

Este mandato implementa la interfaz SalesTaxCmd que amplía la interfaz InitializeCalculationUsageCmd.

Este mandato inicializa valores para los cálculos de impuestos sobre la venta.

InitializeShippingCmdImpl

Este mandato implementa la interfaz InitializeShippingCmd que amplía la interfaz InitializeCalculationUsageCmd.

Este mandato inicializa valores para los cálculos de cargos de envío.

InitializeShippingTaxCmdImpl

Este mandato implementa la interfaz InitializeShippingTaxCmd que amplía la interfaz InitializeCalculationUsageCmd.

Este mandato inicializa valores para los cálculos de impuestos sobre el envío.

Métodos de cálculo ApplyCalculationUsage

Los métodos de cálculo ApplyCalculationUsage se utilizan para el proceso de pedidos y la visualización de productos. Durante el proceso del pedido, el mandato OrderPrepare llama a un método de cálculo ApplyCalculationUsage para calcular los importes monetarios de una lista de artículos de pedido. Se aplica un importe monetario a cada artículo de pedido de forma que el importe monetario esté disponible para cálculos posteriores.

Para la visualización, los beans de datos llaman a los métodos de cálculo ApplyCalculationUsage para calcular los importes monetarios. Por ejemplo, los impuestos de un producto pueden visualizarse como parte de la página de visualización del producto. El bean de datos que llama al método de cálculo ApplyCalculationUsage debe llevar a cabo cualquier inicialización que normalmente realizaría el método de cálculo InitializeCalculationUsage para el uso de cálculo que se procesa para el bean de datos. El bean de datos no tiene acceso a los métodos de cálculo InitializeCalculationUsage, SummarizeCalculationUsage o FinalizeCalculationUsage.

Adicionalmente, el mandato de tarea GetReturnTaxes también llama al método ApplyCalculationUsage para el uso de cálculo de impuestos sobre la venta, sin llamar a los métodos Initialize, Summarize o Finalize.

Los mandatos que se vayan a utilizar como subclase del método de cálculo ApplyCalculationUsage deben implementar la interfaz ApplyCalculationUsageCmd.

Los siguientes métodos de cálculo ApplyCalculationUsage se proporcionan con HCL Commerce:
  • ApplyCalculationUsageCmdImpl
  • ApplyCalculationUsageTIKCmdImpl
  • ApplyCouponUsageCmdImpl
  • ApplyShippingCmdImpl

ApplyCalculationUsageCmdImpl

Es la implementación predeterminada del mandato ApplyCalculationUsage. Realiza las llamadas siguientes:
  1. Llama al método de cálculo CalculationCodeCombine para obtener una lista de códigos de cálculo. Para cada código de cálculo de la lista, CalculationCodeCombine también proporciona una lista de los artículos de pedido que se deben incluir en el cálculo.
  2. Para cada código de cálculo de la lista, ApplyCalculationUsageCmdImpl realiza las llamadas siguientes:
    1. Llama al método de cálculo CalculationCodeCalculate, pasándole la lista asociada de artículos de pedido. El método de cálculo CalculationCodeCalculate devuelve una lista de importes monetarios calculados para cada artículo de pedido. Los importes monetarios pueden clasificarse por categoría de impuestos.
    2. Llama al método de cálculo CalculationCodeApply, pasándole el código de cálculo, una lista de artículos de pedido y el importe monetario asociado con cada artículo de pedido.

ApplyCalculationUsageTIKCmdImpl

Este mandato implementa la interfaz ApplyCalculationUsageTIKCmd, que amplía la interfaz ApplyCalculationUsageCmd.

La interfaz ApplyCalculationUsageTIKCmd y el mandato ApplyCalculationUsageTIKCmdImpl se proporcionan como ejemplo para invocar un conjunto de interfaces que se suministran en el Kit de interfaces de integración de impuestos. Si HCL Commerce se ha configurado para utilizar esta interfaz, el mandato OrderPrepare invocará a ApplyCalculationUsageTIKCmd, que a su vez invoca el mandato de tarea TaxIntegrationOrderCmd que se proporciona en el Kit de interfaces de integración de impuestos.

ApplyCouponUsageCmdImpl

Este mandato implementa la interfaz ApplyCouponUsageCmd que amplía la interfaz ApplyCalculationUsageCmd.

Este mandato añade el descuento de una promoción de cupón a los ajustes de las tablas de base de datos ORDERS y ORDERITEMS. El mandato se invoca cuando un cliente solicita rescatar cupones antes de preparar un pedido.

Los cupones que se deben aplicar a un pedido están ubicados en la tabla de base de datos ORCPMAP. Este mandato busca los cupones a aplicar a un pedido en la tabla de base de datos ORCPMAP y, a continuación, elimina los cupones de la tabla de base de datos ORCPMAP y de la tabla de base de datos CPITMAP. CheckValidityTaskCmd comprueba la caducidad de los cupones. Si no han caducado, CheckApplicabilityTaskCmd comprueba si pueden aplicarse. En caso afirmativo, CalculateDiscountAmountCmd incorpora el importe de descuento al pedido actual.

ApplyShippingCmdImpl

Este mandato es la implementación predeterminada de la interfaz ApplyShippingCmd, que amplía la interfaz ApplyCalculationUsageCmd. Este mandato controla los ajustes, las promociones, el envío, los ajustes basados en el contrato, y los ajustes basados en CSR. Las promociones se basan en los cargos base. Los contratos se basan en los cargos base más la promoción, por lo debe designarlos como acumulativos o no acumulativos.

La estrategia de prioridades predeterminada es la siguiente:
  1. Ajustes de envío basados en contrato
  2. Promociones
  3. Ajustes de servicio técnico

Un ajuste no acumulativo se aplica directamente al cargo base; un descuento acumulativo se aplica al resultado de un ajuste anterior. Por ejemplo: Un pedido tiene un cargo de envío base de 10 euros, un ajuste de contrato del 10% y un ajuste promocional del 10%. La aplicación es acumulativa. Los ajustes de contrato se aplican primero generando un coste de 9 euros (con un descuento de 1 euro) y luego se aplica la promoción del 10% al importe descontado de 9 euros (que generará un descuento de 0,90 euros). Por tanto, el cargo total será de 8,10 euros.

En un escenario no acumulativo, el primer ajuste generaría un coste de 9 euros (con un descuento de 1 euro), como en el primer caso, pero cuando se aplicara la promoción del 10%, se aplicaría al importe original de 10 euros. Por lo tanto, este ajuste generaría un descuento de 1 euro. Así, el cargo total del envío sería de 8 euros para ese pedido.

Por omisión, la aplicación de los ajustes debería ser la siguiente:
  1. Contratos - no acumulativo
  2. Promociones - no acumulativo
  3. Servicio técnico - acumulativo

Es una versión del mandato ApplyCalculationUsageCmdImpl para envíos.

Métodos de cálculo SummarizeCalculationUsage

Esta subclase de método de cálculo resume los resultados de los cálculos para visualizarlos.

Los mandatos que vayan a utilizarse como una subclase de SummarizeCalculationUsage deben implementar la interfaz SummarizeCalculationUsageCmd.

Los siguientes métodos de cálculo SummarizeCalculationUsage se proporcionan con HCL Commerce:
  • SummarizeAdjustmentCmdImpl
  • SummarizeCouponUsageCmdImpl
  • SummarizeSalesTaxCmdImpl
  • SummarizeShippingCmdImpl
  • SummarizeShippingTaxCmdImpl

SummarizeAdjustmentCmdImpl

Este mandato implementa la interfaz SummarizeAdjustmentCmd que amplía la interfaz SummarizeCalculationUsageCmd.

Este mandato se utiliza para resumir los cálculos de descuento. También es el método de resumen común para los usos de cálculo para descuentos, recargos y ajustes de envío.

SummarizeCouponUsageCmdImpl

Este mandato implementa la interfaz SummarizeCouponUsageCmd que amplía la interfaz SummarizeCalculationUsageCmd.

Este mandato se utiliza para resumir los cálculos de cupones.

SummarizeSalesTaxCmdImpl

Este mandato implementa la interfaz SummarizeSalesTaxCmd que amplía la interfaz SummarizeCalculationUsageCmd.

Este mandato se utiliza para resumir los cálculos de los impuestos sobre la venta.

SummarizeShippingCmdImpl

Este mandato implementa la interfaz SummarizeShippingCmd que amplía la interfaz SummarizeCalculationUsageCmd.

Este mandato se utiliza para resumir los cálculos de cargos de envío.

SummarizeShippingTaxCmdImpl

Este mandato implementa la interfaz SummarizeShippingTaxCmd que amplía la interfaz SummarizeCalculationUsageCmd.

Este mandato se utiliza para resumir los cálculos de los impuestos sobre el envío.

Métodos de cálculo FinalizeCalculationUsage

Esta subclase de uso de cálculo se utiliza para realizar cualquier proceso necesario después de que el mandato de tarea ProcessOrder haya procesado el pedido.

Cualquier mandato que se utilice como subclase de FinalizeCalculationUsage debe implementar la interfaz FinalizeCalculationUsageCmd.

FinalizeCouponUsageCmdImpl es el único método de cálculo FinalizeCalculationUsage que se proporciona con HCL Commerce.

FinalizeCouponUsageCmdImpl

Este mandato implementa la interfaz FinalizeCouponUsageCmd que amplía la interfaz FinalizeCalculationUsageCmd.

El mandato FinalizeCouponUsageCmdImpl marca los cupones que se utilizan en el pedido actual, para evitar que dichos cupones se utilicen en otros pedidos.

Cómo funcionan los usos de cálculo

Los usos de cálculo los invoca el mandato OrderPrepare. Este mandato crea una lista de artículos de pedido para los que se calcularán los importes monetarios. Los usos de cálculo aplicables para la tienda o el grupo de tiendas a los que pertenece el pedido se procesan de acuerdo con la secuencia que define para ellas en la tabla de base de datos STENCALUSG.

El mandato OrderPrepare procesa los usos de cálculo de acuerdo con la secuencia siguiente:
  1. Todos los usos de cálculo se inicializan utilizando los métodos de cálculo InitializeCalculationUsage a los que se hace referencia en la columna CALMETHOD_ID_INI de la tabla de base de datos STENCALUSG.
  2. Todos los usos de cálculo se aplican utilizando los métodos de cálculo ApplyCalculationUsage a los que se hace referencia en la columna CALMETHOD_ID_APP de la tabla de base de datos STENCALUSG. Para obtener más información sobre cómo se aplican los métodos de cálculo, consulte Cómo se aplican los usos de cálculo.
  3. Todos los usos de cálculo se resumen utilizando los métodos de cálculo SummarizeCalculationUsage a los que se hace referencia en la columna CALMETHOD_ID_SUM de la tabla de base de datos STENCALUSG.

Cuando el mandato de controlador OrderPrepare se ha completado, se llama al mandato de controlador OrderProcess. El mandato de controlador OrderProcess finaliza todos los usos de cálculo llamando a los métodos de cálculo FinalizeCalculationUsage a los que se hace referencia en la columna CALMETHOD_ID_FIN de la entrada de tabla de base de datos STENCALUSG para cada uso de cálculo.

Cómo se aplican los usos de cálculo

Cuando se aplica un uso de cálculo, se producen los pasos siguientes:
  1. El método de cálculo ApplyCalculationUsage llama a un método de cálculo CalculationCodeCombine. El método de cálculo CalculationCodeCombine devuelve una lista. Cada artículo de la lista consta de un código de cálculo y de los artículos del pedido a los que se aplica el código de cálculo.
  2. El método de cálculo ApplyCalculationUsage llama a un método de cálculo CalculationCodeCalculate para cada artículo de la lista devuelto por CalculationCodeCombine. CalculationCodeCalculate devuelve una lista. Cada artículo de la lista consta de un artículo de pedido y del importe monetario asociado con el artículo de pedido para el uso de cálculo. Para los métodos de cálculo de impuestos, pueden existir varios importes monetarios para los diferentes impuestos que se apliquen al artículo de pedido. En este caso, también se devuelven las categorías de impuestos como parte de la lista.
  3. El método de cálculo ApplyCalculationUsage llama a un método de cálculo CalculationCodeApply para cada grupo de artículos de pedido.