Normas de cálculo

La infraestructura de cálculo de HCL Commerce separa el objeto que indica el cálculo que se va a realizar para un artículo de pedido (código de cálculo) del objeto o los objetos que se encargan de ejecutar el cálculo, denominado norma de cálculo.

Si se separa la norma de cálculo del código de cálculo se obtiene más flexibilidad y una personalización más fácil que si el código de cálculo realiza los cálculos directamente. Mediante la separación de las normas de cálculo de los códigos de cálculo, puede tener muchas normas de cálculo para un código de cálculo. Estas múltiples normas de cálculo pueden combinarse, tener un orden de prioridad y restringirse a grupos de miembros específicos. Las normas de cálculo para los cálculos de envío y de impuestos también se pueden restringir por jurisdicciones.

Por ejemplo, si tiene una tienda que envía productos a diversas jurisdicciones en las que deben recaudar impuestos sobre la venta y hay varios impuestos sobre la venta en cada jurisdicción, deberá realizar los pasos siguiente:

  1. Cree un código de cálculo de impuestos sobre la venta y asócielo con las entradas de catálogo para los productos en los que se deben cargar impuestos.
  2. Para cada jurisdicción en la que deba recaudar impuestos sobre la venta, cree una norma de cálculo para calcular los impuestos sobre la venta para la jurisdicción. Cada norma de cálculo debe asociarse con los siguientes atributos:
    • Una categoría de impuestos
    • Una jurisdicción fiscal
    • El código de cálculo de impuestos sobre la venta

El código de cálculo de impuestos sobre la venta calcula los importes para las categorías de impuestos de all, con varias normas de cálculo, una por cada categoría. Una norma de cálculo calcula un importe para una categoría de impuestos determinada.

Si desea que la tienda envíe productos a una jurisdicción nueva en la que debe recaudar impuestos sobre la venta, no tiene que crear un nuevo código de cálculo y asociarlo al artículo de pedido. Puede crear normas de cálculo nuevas y asociarlas con las categorías de impuestos asociadas, la jurisdicción de impuestos nueva y el código de cálculo existente.

Las propiedades de las normas de cálculo se definen en la tabla de base de datos CALRULE. La sección siguiente describe esta tabla y otras tablas de base de datos que afectan el uso de las normas de cálculo.

Tablas de base de datos para normas de cálculo

La información sobre las reglas de cálculo se proporciona en las siguientes tablas de base de datos de HCL Commerce:

CALRULE
Define las normas de cálculo.
CALRULEMGP
Asocia una norma de cálculo con un grupo de miembros. La asociación de un grupo de miembros con una norma de cálculo le permite restringir el uso de una norma de cálculo a determinados grupos de miembros.
SHPJCRULE
Puede utilizarla el método de cálculo ShippingCalculationRuleQualify para elegir una norma de cálculo basándose en la modalidad de envío y el centro de despacho de pedidos cuando la dirección de envío coincide con una de las jurisdicciones de envío de un grupo de jurisdicciones de envío determinado.
STENCALUSG
Especifica la subclase del método de cálculo CalculationRuleCombine que determina cómo combinar varias normas de cálculo para un artículo de pedido.
TAXJCRULE
Puede utilizarla un método de cálculo TaxCalculationRuleQualify para elegir una norma de cálculo cuando el envío de un centro de despacho de pedidos a una dirección de envío coincide con una de las jurisdicciones de envío de un grupo determinado de jurisdicciones fiscales.

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

Diagramas de modelos de datos de norma de cálculo

Los siguientes diagramas de modelos de datos ilustran las relaciones entre las tablas de base de datos utilizadas para definir normas de cálculo genéricas, normas de cálculo de descuento, normas de cálculo de envío y normas de cálculo de impuestos.

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

Tres subclases de métodos de cálculo están asociadas a normas de cálculos:

  • CalculationRuleCombine
  • CalculationRuleQualify
  • CalculationRuleCalculate

Esta sección describe estas subclases y las implementaciones predeterminadas que HCL Commerce proporciona.

Método de cálculo CalculationRuleCombine

CalculationRuleCombine determina qué normas de cálculo se utilizan para calcular importes monetarios para la lista de artículos de pedido pasados al método de cálculo CalculationRuleCombine por el método de cálculo CalculationCodeCalculate.

El método CalculationRuleCombine devuelve una lista que incluye los artículos siguientes:

  • Una norma de cálculo
  • Una lista de artículos de pedido a los que se aplica la norma de cálculo
  • Una lista de importes monetarios correspondientes a cada artículo de pedido

Para los cálculos de impuestos, los importes monetarios correspondientes a cada artículo de pedido pueden separarse en el importe para cada categoría de impuestos aplicable.

Los mandatos utilizados como métodos de cálculo CalculationRuleCombine deben implementar la interfaz CalculationRuleCombineCmd.

El mandato CalculationRuleCombineCmdImpl, que se proporciona con HCL Commerce, implementa la interfaz CalculationRuleCombineCmd.

CalculationRuleCombineCmdImpl

Es la implementación predeterminada del mandato CalculationRuleCombine.

A este mandato lo llama el método de cálculo CalculationCodeCalculate para identificar las normas de cálculo asociadas con los artículos de pedido. Si se proporciona una lista de artículos de pedido, un código de cálculo y una lista opcional de categorías de impuestos, este mandato realiza las tareas siguientes:

  1. Mediante el uso de cálculo que se está procesando, el código de cálculo y las categorías de impuestos opcionales, el mandato CalculationRuleCombineCmdImpl crea una lista de normas de cálculo que se pueden aplicarse a los artículos de pedido. Las normas de cálculo se seleccionan basándose en el código de cálculo y las categorías de impuestos opcionales.
  2. A continuación, el mandato clasifica las normas de cálculo en orden ascendente por los atributos de secuencia de cálculo de sus categorías de impuestos (TAXCGRY.CALCULATIONSEQ). Las normas de cálculo con la misma categoría de impuestos se clasifican en orden ascendente por el atributo de secuencia. Las normas de cálculo sin categorías de impuestos se clasifican en orden ascendente por el atributo de secuencia.
  3. Si el atributo de distintivo de calificación de la norma de cálculo está establecido en 1, se llama al método de cálculo CalculationRuleQualify para cada norma de cálculo a fin de determinar a qué artículos de pedido se aplica la norma de cálculo. El método de cálculo CalculationRuleQualify devuelve una lista de artículos de pedido a los que se aplica la norma de cálculo.
  4. Para cada norma de cálculo y cada lista de artículos de pedido devueltas por el método de cálculo CalculationRuleQualify (o todos los artículos si no se ha llamado a ese método), el mandato llama al método de cálculo CalculationRuleCalculate. CalculationRuleCalculate devuelve un importe monetario para cada artículo.
  5. Cuando se han procesado todas las normas de cálculo, se combinan los importes monetarios de diferentes normas de cálculo para cada artículo de pedido del modo indicado a continuación:
    1. Se suman los importes monetarios para las normas de cálculo con un atributo de combinación inAdditionTo.
    2. Para cada norma de cálculo que tiene un atributo de combinación inCombinationWith, se añade la suma de los importes monetarios calculados para la norma de cálculo al total del paso 5a.
    3. Todos los importes monetarios para las normas de cálculo con un atributo de combinación inCombinationWith se suman al total del paso 5a.
    4. Se comparan todos los resultados obtenidos en el paso 5b (hay un resultado para cada norma notInCombinationWith) y el resultado obtenido en el paso 5c. El menor de estos resultados se considera el importe monetario válido.
  6. Las normas de cálculo que se utilizan para calcular el importe monetario válido, los importes monetarios producidos por cada una de estas normas de cálculo y los artículos de pedido asociados se devuelven al método de llamada.

Método de cálculo CalculationRuleQualify

El método de cálculo CalculationRuleQualify comprueba si una norma de cálculo se aplica a una lista de artículos de pedido y devuelve una lista de elementos. Cada elemento es un grupo de artículos de pedido que la norma de cálculo debe procesar juntos.

Sólo se llama a los métodos de cálculo CalculationRuleQualify si el atributo de distintivo de calificación de la norma de cálculo está establecido en 1.

Cualquier mandato que se utilice como método CalculationRuleQualify debe implementar la interfaz CalculationRuleQualifyCmd.

Los mandatos siguientes implementan la interfaz CalculationRuleQualifyCmd y se proporcionan con HCL Commerce:

  • DiscountCalculationRuleQualifyCmdImpl
  • ShippingCalculationRuleQualifyCmdImpl
  • TaxCalculationRuleQualifyCmdImpl

DiscountCalculationRuleQualifyCmdImpl

Es la versión del mandato CalculationRuleQualify para descuentos. Implementa la interfaz DiscountCalculationRuleQualifyCmd que amplía la interfaz CalculationRuleQualifyCmd.

Este mandato devuelve artículos de pedido de un cliente de uno de los grupos de miembros que están asociados con la norma de cálculo y reconocidos por la tienda. Si el cliente no está en ninguno de estos grupos de miembros, este mandato devuelve un nulo.

Las normas de cálculo se asocian con los grupos de miembros de la tabla de base de datos CALRULEMGP y a los grupos de miembros los reconocen las tiendas de la tabla de base de datos STOREMBRGP.

ShippingCalculationRuleQualifyCmdImpl

Es la versión del mandato CalculationRuleQualify para envíos. Implementa la interfaz ShippingCalculationRuleQualifyCmd que amplía la interfaz CalculationRuleQualifyCmd.

Este mandato compara las jurisdicciones de envío, las modalidades de envío y los centros de despacho de pedidos de los artículos de pedido con aquellos que están asociados con una norma de cálculo. El mandato ShippingCalculationRuleQualifyCmdImpl sólo devuelve artículos de pedido que compartan jurisdicciones de envío, modalidades de envío y centros de despacho de pedidos con la norma de cálculo.

Cuando la dirección de envío del artículo de pedido está en más de un grupo de jurisdicciones de envío, para el mismo centro de despacho de pedido y la misma modalidad de envío, se califica la norma de cálculo con el valor de prioridad más alto definido en la base de datos SHPJCRULE. Si varias normas de cálculo comparten el valor de prioridad más alto, se aplican todas las normas de cálculo que comparten los valores de prioridad más altos.

Las normas de cálculo se asocian con las jurisdicciones de envío, las modalidades de envío y los centros de despacho de pedidos en la tabla de base de datos SHPJCRULE.

TaxCalculationRuleQualifyCmdImpl

Es la versión del mandato CalculationRuleQualify para impuestos. Implementa la interfaz TaxCalculationRuleQualifyCmd que amplía la interfaz CalculationRuleQualifyCmd.

Este mandato compara las jurisdicciones fiscales y los centros de despacho de pedidos de los artículos de pedido con una norma de cálculo. El mandato TaxCalculationRuleQualifyCmdImpl sólo devuelve artículos de pedido que compartan jurisdicciones fiscales y centros de despacho de pedidos con una norma de cálculo.

Cuando la dirección de envío del artículo de pedido está en más de un grupo de jurisdicciones fiscales para el mismo centro de despacho de pedidos, se aplica la norma de cálculo con el valor de prioridad más alto definido en la tabla de base de datos TAXJCRULE. Si varias normas de cálculo comparten el valor de prioridad más alto, se aplican todas las normas de cálculo que comparten los valores de prioridad más altos.

Las normas de cálculo se asocian con las jurisdicciones fiscales y los centros de despacho de pedidos en la tabla de base de datos TAXJCRULE.

Método de cálculo CalculationRuleCalculate

A este mandato lo llama el método de cálculo CalculationRuleCombine para calcular el resultado de una norma de cálculo determinada. Para una norma de cálculo y una lista de artículos de pedido, este mandato devuelve un importe monetario para cada artículo de pedido. La moneda del importe monetario calculado es la moneda del pedido.

Los métodos de cálculo CalculationRuleCalculate deben implementar la interfaz CalculationRuleCalculateCmd.

El mandato CalculationRuleCalculateCmdImpl, que se proporciona con HCL Commerce, implementa la interfaz CalculationRuleCalculateCmd.

CalculationRuleCalculateCmdImpl

Es la implementación predeterminada del mandato CalculationRuleCalculate.

Mediante la utilización de una norma de cálculo y una lista de artículos de pedido, este mandato realiza las tareas siguientes:

  1. Borra el importe monetario asociado con los artículos de pedido que se están procesando con la norma de cálculo.
  2. Determina la lista de escalas de cálculo asociadas con la norma de cálculo utilizando la tabla de base de datos CRULESCALE.
  3. Procesa las escalas de cálculo que no están asociadas con ninguna moneda, realizando los pasos siguientes:
    1. Obtiene para cada artículo de pedido un resultado monetario en la moneda del pedido, utilizando la escala de cálculo. Para obtener más detalles sobre este paso, consulte el apartado Cómo se utilizan las escalas de cálculo y los rangos de cálculo.
    2. Suma el resultado del importe monetario al resultado total, para cada artículo.
  4. Forma una lista de las monedas con las que están asociadas las escalas de cálculo restantes.
  5. Realiza uno de los pasos siguientes:
    • Si la lista de monedas de escala de cálculo contiene la moneda de pedido:
      1. Se inicia con un resultado pretendido de cero para cada artículo de pedido.
      2. Para cada escala de cálculo con la misma moneda que el pedido, realiza los pasos siguientes:
        1. Obtiene un importe monetario para cada artículo de pedido. Para obtener más detalles sobre este paso, consulte el apartado Cómo se utilizan las escalas de cálculo y los rangos de cálculo.Escalas de cálculo y rangos de cálculo
        2. Suma el importe monetario de cada artículo al resultado pretendido de cada artículo.
      Se ignoran las escalas de cálculo asociadas con monedas distintas de la moneda del pedido.
    • Si la lista de monedas de escala de cálculo no contiene la moneda del pedido:
      1. Para cada moneda de la lista:
        1. Se inicia con un resultado pretendido de cero para cada artículo de pedido.
        2. Para cada escala de cálculo con la moneda que se está procesando, realiza lo siguiente:
          1. Obtiene un importe monetario para cada artículo. Para obtener más detalles sobre este paso, consulte el apartado Cómo se utilizan las escalas de cálculo y los rangos de cálculo.Escalas de cálculo y rangos de cálculo
          2. Suma el importe monetario de cada artículo a su resultado pretendido.
        Si la conversión de una moneda en la lista de monedas de escala de cálculo en la moneda de pedido no está definida en HCL Commerce, a continuación, las escalas de cálculo asociadas con dicha moneda se ignoran.
      2. Compara la suma de los resultados pretendidos para cada moneda. Se consideran válidos los resultados pretendidos de la moneda que produce la suma más baja. Se eliminan los resultados pretendidos de las demás monedas.
  6. Para cada artículo de pedido, suma el importe calculado en el paso 3 y el resultado pretendido del paso 5.
  7. Devuelve los resultados al método de llamada.

En Cómo se utilizan las escalas de cálculo y los rangos de cálculo se proporciona información sobre cómo obtener importes monetarios a partir de las escalas de cálculo y de los métodos de cálculo que se aplican a las escalas de cálculo.

Cómo se utilizan las normas de cálculo

La implementación predeterminada del método de cálculo CalculationCodeCalculate utiliza normas de cálculo para calcular los importes monetarios para cada artículo en el que se aplica. La implementación predeterminada de CalculationCodeCalculate llama al método de cálculo CalculationRuleCombine y pasa a dicho método la lista de artículos de pedido aplicables. La implementación predeterminada de CalculationRuleCombine realiza los pasos siguientes:

  1. Determina la lista de normas de cálculo que están en vigor para el código de cálculo comprobando el atributo CALRULE.FLAGS y llamando a un método de cálculo CalculationRuleQualify si se ha establecido el distintivo.
  2. Para cada norma de cálculo en vigor, realiza el cálculo definido por la norma para cada artículo de pedido al que se aplica la norma. Si el cálculo a realizar se basa en la búsqueda de un valor en una escala, se utilizan las escalas de cálculo para obtener el importe monetario. Las escalas de cálculo se describen en Cómo se utilizan las escalas de cálculo y los rangos de cálculo.
  3. Cuando se han calculado todas las normas para todos los artículos, combina los resultados del cálculo para cada artículo. El atributo de combinación de la norma de cálculo controla el modo en que se combinan los resultados.
  4. El método de cálculo CalculationRuleCombine devuelve una lista de las normas de cálculo que se han aplicado, los artículos de pedido a los que se han aplicado y el importe monetario resultante para cada artículo de pedido. Esta lista se devuelve al método de cálculo CalculationCodeCalculate que efectúa la llamada.