Escalas de cálculo y rangos de cálculo

Muchos cálculos de HCL Commerce implican buscar un valor en una tabla. Por ejemplo, una tienda basa los cargos de envío en el número de artículos que se envían en un pedido.

La tabla de cargos de envío es similar a ésta:

Número de artículos del pedido Cargos de envío (moneda local)
< 5 3,00
5 - 10 10,00
11 - 15 22,00
> 15 50,00

Para calcular los cargos de envío, un empleado cuenta el número de artículos del pedido y utiliza el número total de artículos para buscar los cargos de envío en la tabla.

HCL Commerce proporciona una función similar como parte de la infraestructura de cálculo, en forma de calculation scales. Las escalas de cálculo pueden considerarse como tablas de dos columnas, donde los valores de la primera columna se comparan con un valor conocido para buscar una fila de la tabla. A continuación, el valor de la segunda columna se aplica a un cálculo asociado con el valor conocido original.

El proceso de búsqueda del valor en la tabla se denomina scale look-up. La escala de cálculo consta de una lista de calculation ranges y look-up results asociados. El valor conocido que se compara con los rangos de cálculo se denomina look-up number. Por ejemplo, cuando se calculan los cargos de envío utilizando el Ejemplo de tabla utilizada para determinar los cargos de envío para un pedido que contiene ocho artículos, el número de búsqueda es 8, el rango de cálculo con el que el número de búsqueda coincide es 5 - 10 y el resultado de búsqueda es 10.00.

Una escala de cálculo puede utilizarse para calcular importes monetarios, uno para cada artículo de pedido de una lista. La implementación predeterminada de CalculationRuleCalculate utiliza escalas de cálculo. Los importes que se calculan los determinan los rangos de cálculo y los valores de rango de la escala de cálculo, así como los métodos de cálculo que utilizan. Las escalas de cálculo están asociadas con un método de cálculo MonetaryCalculationScaleLookup o QuantityCalculationScaleLookup. Los rangos de cálculo están asociados a un método de cálculo CalculationRange.

Propiedades de escala de cálculo

Las escalas de cálculo tienen propiedades asociadas que afectan al momento en que se aplica una escala de cálculo y a los importes monetarios calculados utilizando una escala de cálculo. Una escala de cálculo puede tener las propiedades siguientes:

Moneda
Una escala de cálculo puede asociarse con una moneda específica. La asociación de una escala de cálculo con una moneda implica que todos los rangos de cálculo de la escala estén en dicha moneda. Una escala de cálculo que está asociada a una moneda se aplica a los artículos de pedido si la escala satisface una de las condiciones siguientes:
  • La escala de cálculo y los artículos de pedido tienen la misma moneda.
  • Las monedas de los artículos pueden convertirse a la moneda de la escala de cálculo y no existen escalas de cálculo con la misma moneda que el artículo. Si se pueden aplicar varias escalas de cálculo para el mismo uso de cálculo con monedas diferentes, los resultados de las escalas se convierten a la moneda del artículo de pedido. Se aplica la escala que produce el importe monetario más bajo en la moneda del artículo de pedido.

Una escala de cálculo sólo se puede asociar con una moneda, una unidad de medida o con ninguna de las dos. Una escala de cálculo no se puede asociar con una moneda y una unidad de medida a la vez.

Unidad de medida
Una escala de cálculo puede asociarse con una unidad de medida específica. La asociación de una escala de cálculo con una unidad de medida implica que todos los rangos de cálculo de la escala estén en dicha unidad de medida.

Un artículo de pedido puede tener una unidad de medida asociada con la cantidad o el peso. Varios métodos de cálculo CalculationScaleLookup utilizan la cantidad o el peso del artículo para determinar los valores de búsqueda. Los valores de búsqueda se comparan con los valores de inicio de rango de cálculo para determinar a qué métodos de cálculo CalculationRange se debe llamar.

Para los métodos de cálculo CalculationScaleLookup que utilizan el valor de cantidad de un artículo, la unidad de medida de la cantidad debe poderse convertir a la unidad de medida para la escala de cálculo. Para los métodos de cálculo CalculationScaleLookup que utilizan el valor de peso de un artículo, la unidad de medida del peso debe poderse convertir a la unidad de medida para la escala de cálculo. Las unidades de medida de cantidad y peso para los artículos de pedido se especifican en la tabla de base de datos CATENTSHIP, a la que hace referencia la columna CATENTRY_ID del artículo de pedido.

Una unidad de medida es convertible a otra unidad de medida si son iguales o si en la tabla de base de datos QTYCONVERT se han definido conversiones que permitan una conversión de una a otra.

Una escala de cálculo sólo se puede asociar con una moneda, una unidad de medida o con ninguna de las dos. Una escala de cálculo no se puede asociar con una moneda y una unidad de medida a la vez.

Uso de cálculo
Un uso de cálculo define el tipo de cálculo al que se aplica la escala de cálculo. Consulte Usos de cálculo.

WebSphere Commerce necesita que cada escala de cálculo tenga un rango de cálculo.

Además de estas propiedades, las escalas de cálculo se clasifican por el método de cálculo CalculationScaleLookup que está asociado con la escala de cálculo:

Escala de cálculo monetario
Una escala de cálculo monetario es una escala de cálculo que está asociada con MonetaryCalculationScaleLookup.
Escala de cálculo de cantidad
Una escala de cálculo de cantidad es una escala de cálculo que está asociada con QuantityCalculationScaleLookup.

Propiedades de rango de cálculo

Los rangos de cálculo tienen propiedades que afectan el modo en que se utilizan los valores de las normas de cálculo. Un rango de cálculo puede tener la propiedad siguiente:

Acumulativo
Si los rangos de cálculo para una escala de cálculo son acumulativos, el importe monetario total resultante se calcula utilizando los resultados de búsqueda para todos los rangos de cálculo que coinciden con el número de búsqueda o son inferiores a dicho número. El importe monetario resultante depende del método de cálculo CalculationRange utilizado por el rango de cálculo.

Asimismo, el número de búsqueda utilizado para calcular el importe monetario para cada rango de cálculo cambia para cada rango de cálculo. Este número de búsqueda modificado se denomina parte aplicable del número de búsqueda.

Por ejemplo, examine la siguiente escala de cálculo basada en el peso:

Tabla 1. Escala de cálculo basada en el peso
Peso de envío Cargo
mayor o igual a 0 kg cargo fijo de 2,00
mayor o igual a 5 kgs 0,25 por kg
mayor o igual a 10 kgs 0,10 por kg
mayor o igual a 100 kgs 0,01 por kg

Los cargos de envío totales para un paquete de 20 kg, suponiendo rangos de cálculo acumulativos, se determinarán utilizando varios rangos de cálculo. El número de búsqueda es 20, pero la parte aplicable del número de búsqueda cambiará mientras se calculan los cargos de envío totales. La parte aplicable del número de búsqueda se calcula utilizando la fórmula siguiente:


min(lookupNumber, rangeEnd) - rangeStart

La tabla siguiente muestra las partes aplicables del número de búsqueda que se han utilizado:

Tabla 2. Partes aplicables de números de búsqueda
Número de búsqueda Valor inicial de rango Valor final de rango Parte aplicable del número de búsqueda
20 0 5 5
20 5 10 5
20 10 100 10

Las partes aplicables del número de búsqueda se utilizan para determinar los cargos de envío totales del modo siguiente:

  1. El número de búsqueda (20) coincide con el primer rango. El resultado monetario es el resultado de búsqueda que se aplica a la parte aplicable del número de búsqueda (5). Los cargos de envío totales son 2,00.
  2. El número de búsqueda (20) coincide con el segundo rango. El resultado monetario (0,25) es el resultado de búsqueda que se aplica a la parte aplicable del número de búsqueda (5). Los cargos de envío resultantes son 1,25. Dado que el rango de cálculo es acumulativo, este importe se suma a los cargos de envío existentes. Ahora los cargos de envío totales son 3,25.
  3. El número de búsqueda (20) coincide con el tercer rango. El resultado monetario (0,10) es el resultado de búsqueda que se aplica a la parte aplicable del número de búsqueda (10). Los cargos de envío resultantes son 1,00. Dado que el rango de cálculo es acumulativo, este importe se suma a los cargos de envío existentes. Ahora los cargos de envío totales son 4,25.
  4. El número de búsqueda (20) no coincide con el cuarto rango. El cálculo se ha completado. Los cargos de envío totales son 4,25.

Si los rangos de cálculo no son acumulativos, la parte aplicable del número de búsqueda y el número de búsqueda son iguales. Los cargos de envío se determinarán del modo siguiente:

  1. El número de búsqueda (20) coincide con el primer rango. El resultado monetario es el resultado de búsqueda que se aplica a la parte aplicable del número de búsqueda (20). Los cargos de envío totales son 2,00.
  2. El número de búsqueda (20) coincide con el segundo rango. El resultado monetario (0,25) es el resultado de búsqueda que se aplica a la parte aplicable del número de búsqueda (20). Los cargos de envío resultantes son 5,00. Dado que el rango de cálculo no es acumulativo, este importe sustituye los cargos de envío existentes. Ahora los cargos de envío totales son 5,00.
  3. El número de búsqueda (20) coincide con el tercer rango. El resultado monetario (0,10) es el resultado de búsqueda que se aplica a la parte aplicable del número de búsqueda (20). Los cargos de envío resultantes son 2,00. Dado que el rango de cálculo no es acumulativo, este importe sustituye los cargos de envío existentes. Ahora los cargos de envío totales son 2,00.
  4. El número de búsqueda (20) no coincide con el cuarto rango. El cálculo se ha completado. Los cargos de envío totales son 2,00.

Tablas de base de datos para escalas de cálculo y rangos de cálculo

La información acerca de una escala de cálculo y los rangos de cálculo que forman la escala se separa en tablas diferentes. Las siguientes tablas de base de datos de HCL Commerce definen escalas de cálculo y rangos de cálculo:

CALSCALE
Define las escalas de cálculo.
CALSCALEDS
Contiene descripciones de una escala de cálculo en idioma nacional. Esto permite que una escala de cálculo tenga descripciones en varios idiomas.
CRULESCALE
Relaciona una escala de cálculo con una norma de cálculo. Una norma de cálculo puede tener varias escalas de cálculo y una escala de cálculo puede ser utilizada por varias normas de cálculo.
CALRANGE
Define los rangos de cálculo que forman una escala de cálculo.
CALRLOOKUP
Contiene los resultados de la búsqueda para los rangos de cálculo. Las monedas de los resultados de búsqueda, que son atributos opcionales, también se especifican en esta tabla de base de datos.

Diagrama de modelo de datos de escala de cálculo y rango de cálculo

El siguiente diagrama de modelo de datos ilustra las relaciones entre las tablas de base de datos para definir escalas de cálculo y rangos de cálculo.

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

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

  • MonetaryCalculationScaleLookup
  • QuantityCalculationScaleLookup
  • CalculationRange

QuantityCalculationScaleLookup se aplica a escalas de cálculo de cantidad, mientras que MonetaryCalculationScaleLookup se aplica a escalas de cálculo monetario.

Métodos de cálculo CalculationScaleLookup

Los métodos de cálculo MonetaryCalculationScaleLookup y QuantityCalculationScaleLookup determinan varios valores necesarios para realizar una búsqueda de rango y calcular cualquier importe monetario utilizando el resultado de búsqueda. Los métodos de cálculo utilizan un conjunto de artículos de pedido, una norma de cálculo y una escala de cálculo que les pasa el método de cálculo CalculationRuleCalculate para determinar los elementos siguientes:

Valor monetario base
Un importe que el método de cálculo CalculationRange puede utilizar para calcular un importe monetario.
Número de búsqueda
El valor comparado con los rangos de la escala de cálculo para buscar un resultado de búsqueda.
Valores matemáticos
Los valores matemáticos son valores utilizados para distribuir el importe monetario total calculado utilizando una escala de cálculo en cada uno de los artículos de pedido del conjunto que se pasa al método de cálculo CalculationScaleLookup. El método de cálculo CalculationScaleLookup devuelve un valor matemático para cada artículo del conjunto.

El importe monetario total se distribuye de acuerdo con el porcentaje del total de los valores matemáticos que representa el valor matemático de un artículo de pedido. Si el valor matemático de un artículo de pedido representa el 23% del valor matemático total de los artículos que se están procesando, el importe monetario del artículo es el 23% del importe monetario total determinado para la escala de cálculo.

Por ejemplo, suponga que se están determinando los importes monetarios para tres artículos de pedido (ArtículoA, ArtículoB y ArtículoC) y el importe monetario total determinado para la escala de cálculo es de 156 euros. La tabla siguiente muestra cómo distribuyen los valores matemáticos el importe monetario total en los artículos de pedido:

Tabla 3. Ejemplo de despacho de pedidos de importe monetario total utilizando valores matemáticos
Artículo de pedido Valor matemático Porcentaje de valores matemáticos totales Cálculo Importe monetario de artículo de pedido
ArtículoA 9 18% $156*0,18 $28,08
ArtículoB 25 50% $156*0,50 $78,00
ArtículoC 16 32% $156*0,32 $49,92
Multiplicador de resultado
El multiplicador de resultado especifica el valor por el que debe multiplicarse el valor monetario resultante para calcular un importe monetario del conjunto de artículos de pedido.
Nota: Implementaciones diferentes de los métodos de cálculo MonetaryCalculationScaleLookup o QuantityCalculationScaleLookup darán resultados diferentes para estos elementos cuando se utilicen los mismos conjuntos de artículos de pedido.

Los métodos de cálculo MonetaryCalculationScaleLookup y QuantityCalculationScaleLookup devuelven el valor monetario base, el número de búsqueda, el conjunto de valores matemáticos y el conjunto de multiplicadores de resultado al método de cálculo CalculationRuleCalculate. A continuación, CalculationRuleCalculate busca el resultado de búsqueda de rango de cálculo correspondiente al valor de búsqueda y pasa la parte aplicable del resultado de búsqueda a CalculationRange. La parte aplicable del resultado de búsqueda depende de que el rango de cálculo sea acumulativo. CalculationRange devuelve un importe monetario. A continuación, el importe monetario devuelto se distribuye entre el conjunto de artículos de pedido de acuerdo con los valores matemáticos calculados para cada artículo de pedido.

Para obtener más información, consulte el Método de cálculo CalculationRange.

En la sección siguiente se describe los métodos de cálculo CalculationScaleLookup y CalculationRange y las implementaciones predeterminadas proporcionadas con HCL Commerce. En la documentación de API de la información en línea se puede encontrar información adicional sobre las interfaces y los mandatos que implementan las subclases de los métodos de cálculo.

Métodos de cálculo MonetaryCalculationScaleLookup

Para los métodos de cálculo MonetaryCalculationScaleLookup, el número de búsqueda y los valores monetarios base que se determinan por el método son ambos importes monetarios. Los importes para determinar el número de búsqueda y los valores monetarios base son diferentes en función de la implementación del método de búsqueda para la escala de cálculo monetario. A continuación se indican algunos valores que se utilizan normalmente en la infraestructura de cálculo:

Precio neto
El valor del precio neto es el precio unitario del artículo de pedido (ORDERITEMS.PRICE) multiplicado por la cantidad (ORDERITEMS.QUANTITY) más la suma de todos los ajustes asociados con el artículo.
Precio sin descuento
El valor del precio sin descuento es el precio unitario del artículo de pedido (ORDERITEMS.PRICE) multiplicado por la cantidad (ORDERITEMS.QUANTITY).
Precio neto sujeto a impuestos
El valor del precio neto sujeto a impuestos que se utiliza para una categoría de impuestos determinada es el precio sin descuento más la suma de todos los ajustes de artículo de pedido sujetos a impuestos para la categoría. El valor del precio neto sujeto a impuestos puede ser diferente para cada categoría de impuestos dado que artículos y ajustes diferentes pueden estar sujetos a categorías distintas.
Precio unitario sujeto a impuestos
El valor del precio unitario sujeto a impuestos que se utiliza para una categoría de impuestos determinada es el precio neto sujeto a impuestos del artículo de pedido dividido por la cantidad (ORDERITEMS.QUANTITY). El ajuste sujeto a impuestos por unidad es el total de todos los ajustes de artículo de pedido sujetos a impuestos para la categoría de impuestos y divididos por la cantidad (ORDERITEMS.QUANTITY).
Precio unitario
El valor del precio unitario es el precio por unidad de un artículo de pedido (ORDERITEMS.PRICE) más el ajuste por unidad del artículo de pedido. El ajuste por unidad es el total de todos los ajustes de artículo de pedido dividido por la cantidad (ORDERITEMS.QUANTITY).

Los métodos de cálculo MonetaryCalculationScaleLookup deben ampliar la interfaz CalculationScaleLookupCmd. Para obtener más información, consulte la interfaz CalculationScaleLookupCmd.

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

NetPriceCalculationScaleLookupCmdImpl

Este mandato es adecuado para calcular descuentos o escalas de envío basándose en un precio con descuento.

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los precios netos de los artículos de pedido
Número de búsqueda
Suma de los precios netos de los artículos de pedido
Valores matemáticos
Precio neto de cada artículo de pedido
Multiplicador de resultado
Uno

El número de búsqueda se convierte a la moneda de la escala de cálculo. Si no es posible ninguna conversión, este método de cálculo devuelve nulo.

Para que el número de búsqueda se convierta a la moneda de la escala de cálculo, la conversión de la moneda de escala de cálculo a la moneda del pedido debe definirse en HCL Commerce.

NetShippingCalculationScaleLookupCmdImpl

Este mandato es adecuado para calcular escalas de impuestos en los cargos de envío.

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de todos los cargos de envío de los artículos de pedido (ORDERITEMS.SHIPCHARGE)
Número de búsqueda
Suma de todos los cargos de envío de los artículos de pedido (ORDERITEMS.SHIPCHARGE)
Valores matemáticos
Cargos de envío para cada artículo de pedido
Multiplicador de resultado
Uno

El número de búsqueda se convierte a la moneda de la escala de cálculo. Si no es posible ninguna conversión, este método de cálculo devuelve nulo.

Para que el número de búsqueda se convierta a la moneda de la escala de cálculo, la conversión de la moneda de escala de cálculo a la moneda del pedido debe definirse en HCL Commerce.

NonDiscountedPriceCalculationScaleLookupCmdImpl

Este mandato es adecuado para las escalas de cargos de envío y algunas clases de descuentos. Por ejemplo, si un descuento en porcentaje se basa en el precio sin descuento de un artículo, dos descuentos sucesivos del 10% proporcionarán al cliente un descuento total del 20%. Si el descuento se basa en el precio neto de un artículo, dos descuentos sucesivos del 10% proporcionarán al cliente un descuento total del 19%, porque el segundo descuento se basa en el precio del artículo menos el primer descuento (o 90% del precio original sin descuento).

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los precios sin descuento de los artículos de pedido
Número de búsqueda
Suma de los precios sin descuento de los artículos de pedido
Valores matemáticos
Precio sin descuento de cada artículo de pedido
Multiplicador de resultado
Uno

El número de búsqueda se convierte a la moneda de la escala de cálculo. Si no es posible ninguna conversión, este método de cálculo devuelve nulo.

Para que el número de búsqueda se convierta a la moneda de la escala de cálculo, la conversión de la moneda de escala de cálculo a la moneda del pedido debe definirse en HCL Commerce.

TaxableNetPriceCalculationScaleLookupCmdImpl

Este mandato es adecuado para escalas de impuestos sobre la venta.

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los precios netos sujetos a impuestos de los artículos de pedido
Número de búsqueda
Suma de los precios netos sujetos a impuestos de los artículos de pedido
Valores matemáticos
Precio neto sujeto a impuestos de cada artículo de pedido
Multiplicador de resultado
Uno

El número de búsqueda se convierte a la moneda de la escala de cálculo. Si no es posible ninguna conversión, este método de cálculo devuelve nulo.

Para que el número de búsqueda se convierta a la moneda de la escala de cálculo, la conversión de la moneda de escala de cálculo a la moneda del pedido debe definirse en HCL Commerce.

TaxableNetPriceTaxOnTaxCalculationScaleLookupCmdImpl

Este mandato es adecuado para escalas de impuestos sobre la venta.

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los precios netos sujetos a impuestos de los artículos de pedido más los importes de los impuestos ya aplicados a los artículos de pedido.
Número de búsqueda
Suma de los precios netos sujetos a impuestos de los artículos de pedido.
Valores matemáticos
Precio neto sujeto a impuestos de cada artículo de pedido.
Multiplicador de resultado
Uno

El número de búsqueda se convierte a la moneda de la escala de cálculo. Si no es posible ninguna conversión, este método de cálculo devuelve nulo.

Para que el número de búsqueda se convierta a la moneda de la escala de cálculo, la conversión de la moneda de escala de cálculo a la moneda del pedido debe definirse en HCL Commerce.

TaxableNetPricePlusNetShippingCalculationScaleLookupCmdImpl

Este mandato es adecuado para escalas de impuestos sobre la venta y sobre el envío combinadas.

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los precios netos sujetos a impuestos más la suma de todos los cargos de envío de los artículos de pedido (ORDERITEMS.SHIPCHARGE)
Número de búsqueda
Suma de los precios netos sujetos a impuestos más la suma de todos los cargos de envío de los artículos de pedido (ORDERITEMS.SHIPCHARGE)
Valores matemáticos
Precio neto sujeto a impuestos para cada artículo de pedido más los cargos de envío de cada artículo de pedido dividido por la cantidad de artículos de pedido (ORDERITEMS.QUANTITY)
Multiplicador de resultado
Uno

El número de búsqueda se convierte a la moneda de la escala de cálculo. Si no es posible ninguna conversión, este método de cálculo devuelve nulo.

Para que el número de búsqueda se convierta a la moneda de la escala de cálculo, la conversión de la moneda de escala de cálculo a la moneda del pedido debe definirse en HCL Commerce.

TaxableUnitPriceCalculationScaleLookupCmdImpl

Este mandato es adecuado para las escalas de impuestos sobre la venta por artículo, especialmente cuando se especifican unos impuestos máximos por artículo. Sólo debe utilizar este mandato cuando los artículos de pedido están agrupados por oferta. La agrupación se determina mediante el atributo de método de agrupación del código de cálculo.

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los precios netos sujetos a impuestos dividida por la suma de las cantidades de artículos de pedido
Número de búsqueda
Suma de los precios netos sujetos a impuestos dividida por la suma de las cantidades de artículos de pedido
Valores matemáticos
Precio unitario sujeto a impuestos para cada artículo de pedido
Multiplicador de resultado
Suma de las cantidades de artículos de pedido

El número de búsqueda se convierte a la moneda de la escala de cálculo. Si no es posible ninguna conversión, este método de cálculo devuelve nulo.

Para que el número de búsqueda se convierta a la moneda de la escala de cálculo, la conversión de la moneda de escala de cálculo a la moneda del pedido debe definirse en HCL Commerce.

TaxableUnitPricePlusUnitShippingCalculationScaleLookupCmdImpl

Este mandato es adecuado para escalas de impuestos sobre la venta y sobre el envío combinadas por artículo, especialmente cuando se especifican unos impuestos máximos por artículo. Sólo debe utilizar este mandato cuando los artículos de pedido están agrupados por oferta. La agrupación se determina mediante el atributo de método de agrupación del código de cálculo.

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los precios netos sujetos a impuestos más la suma de todos los cargos de envío de los artículos de pedido, dividida por la suma de las cantidades de artículos de pedido
Número de búsqueda
Suma de los precios netos sujetos a impuestos para los artículos de pedido dividida por la suma de la cantidades de artículos de pedido
Valores matemáticos
Precios netos sujetos a impuestos más los cargos, divididos por la cantidad de artículos de pedido, (ORDERITEMS.QUANTITY), para cada artículo de pedido
Multiplicador de resultado
Suma de las cantidades de artículos de pedido

El número de búsqueda se convierte a la moneda de la escala de cálculo. Si no es posible ninguna conversión, este método de cálculo devuelve nulo.

Para que el número de búsqueda se convierta a la moneda de la escala de cálculo, la conversión de la moneda de escala de cálculo a la moneda del pedido debe definirse en HCL Commerce.

UnitPriceCalculationScaleLookupCmdImpl

Este mandato es apropiado para las escalas de descuentos o de envío que especifican un cargo fijo o máximo por artículo basado en el precio unitario de cada artículo. Utilice este mandato cuando los artículos están agrupados por oferta. La agrupación se determina mediante el atributo de método de agrupación del código de cálculo.

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los precios netos dividida por la suma de las cantidades de artículos de pedido
Número de búsqueda
Suma de los precios netos dividida por la suma de las cantidades de artículos de pedido
Valores matemáticos
Precio neto dividido por la cantidad de artículos de pedido (ORDERITEMS.QUANTITY), para cada artículo de pedido
Multiplicador de resultado
Suma de las cantidades de artículos de pedido

El número de búsqueda se convierte a la moneda de la escala de cálculo. Si no es posible ninguna conversión, este método de cálculo devuelve nulo.

Para que el número de búsqueda se convierta a la moneda de la escala de cálculo, la conversión de la moneda de escala de cálculo a la moneda del pedido debe definirse en HCL Commerce.

UnitShippingCalculationScaleLookupCmdImpl

Este mandato es apropiado para las escalas de impuestos sobre el envío por artículo, especialmente cuando es posible especificar unos impuestos máximos por artículo.

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los cargos de envío de los artículos de pedido dividida por la suma de las cantidades de artículos de pedido
Número de búsqueda
Suma de los cargos de envío de los artículos de pedido dividida por la suma de las cantidades de artículos de pedido
Valores matemáticos
Cargos de envío divididos por la cantidad de artículos de pedido (ORDERITEMS.QUANTITY), para cada artículo de pedido
Multiplicador de resultado
Suma de las cantidades de artículos de pedido

El número de búsqueda se convierte a la moneda de la escala de cálculo. Si no es posible ninguna conversión, este método de cálculo devuelve nulo.

Para que el número de búsqueda se convierta a la moneda de la escala de cálculo, la conversión de la moneda de escala de cálculo a la moneda del pedido debe definirse en HCL Commerce.

Métodos de cálculo QuantityCalculationScaleLookup

Para los métodos de cálculo QuantityCalculationScaleLookup, el número de búsqueda es un valor puede tener o no tener una unidad de medida asociada. A continuación se indican algunos valores comunes que se utilizan en la infraestructura de cálculo:

Cantidad real
La cantidad real de un artículo de pedido es la cantidad de artículos de pedido (ORDERITEMS.QUANTITY) multiplicada por la cantidad nominal del artículo (CATENTSHIP.NOMINALQUANTITY).
Precio neto
El valor del precio neto es el precio unitario del artículo de pedido (ORDERITEMS.PRICE) multiplicado por la cantidad del artículo de pedido (ORDERITEMS.QUANTITY) más la suma de todos los ajustes asociados con el artículo de pedido.

Los métodos de cálculo QuantityCalculationScaleLookup se proporcionan con HCL Commerce

  • QuantityCalculationScaleLookupCmdImpl
  • QuantitySpreadByNetPriceCalculationScaleLookupCmdImpl
  • WeightCalculationScaleLookupCmdImpl
  • WeightSpreadByNetPriceCalculationScaleLookupCmdImpl

QuantityCalculationScaleLookupCmdImpl

Este mandato es adecuado para las escalas de cargos de envío.

Si la escala de cálculo tiene una unidad de medida asociada, los valores calculados son los siguientes:

Valor monetario base
Suma de los precios netos de los artículos de pedido
Número de búsqueda
Suma de las cantidades reales de los artículos de pedido, convertida a la unidad de medida de la escala de cálculo

Si no es posible ninguna conversión, la norma de cálculo que realiza la llamada no utiliza la escala de cálculo.

Valores matemáticos
Cantidad real de cada artículo de pedido
Multiplicador de resultado
Uno

Si la escala de cálculo no está asociada con una unidad de medida, los valores calculados son los siguientes:

Valor monetario base
Suma de los precios netos de los artículos de pedido
Número de búsqueda
Suma de las cantidades de artículos de pedido (ORDERITEMS.QUANTITY)
Valores matemáticos
Cantidad de artículos de pedido (ORDERITEMS.QUANTITY) de cada artículo de pedido
Multiplicador de resultado
Uno

QuantitySpreadByNetPriceCalculationScaleLookupCmdImpl

Este mandato es adecuado para las escalas de descuentos y de cargos de envío.

Si la escala de cálculo tiene una unidad de medida asociada, los valores calculados son los siguientes:

Valor monetario base
Suma de los precios netos de los artículos de pedido
Número de búsqueda
Suma de las cantidades reales de los artículos de pedido, convertida a la unidad de medida de la escala de cálculo.

Si no es posible ninguna conversión, la norma de cálculo que realiza la llamada no utiliza la escala de cálculo.

Valores matemáticos
Precio neto de cada artículo de pedido
Multiplicador de resultado
Uno

Si la escala de cálculo no está asociada con una unidad de medida, los valores calculados son los siguientes:

Valor monetario base
Suma de los precios netos de los artículos de pedido
Número de búsqueda
Suma de las cantidades de artículos de pedido (ORDERITEMS.QUANTITY)
Valores matemáticos
Precio neto de cada artículo de pedido
Multiplicador de resultado
Uno

WeightCalculationScaleLookupCmdImpl

Este mandato es adecuado para las escalas de descuentos y de cargos de envío.

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los precios netos de los artículos de pedido
Número de búsqueda
Suma de los pesos del envío (CATENTSHIP.WEIGHT) multiplicada por la cantidad (ORDERITEMS.QUANTITY) de los artículos de pedido. El total se convierte a la unidad de medida de la escala de cálculo.
Valores matemáticos
Peso del envío (CATENTSHIP.WEIGHT) multiplicado por la cantidad (ORDERITEMS.QUANTITY) de cada artículo de pedido
Multiplicador de resultado
Uno

WeightSpreadByNetPriceCalculationScaleLookupCmdImpl

Los valores calculados por este mandato son los siguientes:

Valor monetario base
Suma de los precios netos de los artículos de pedido
Número de búsqueda
Suma del peso del envío (CATENTSHIP.WEIGHT) multiplicado por la cantidad (ORDERITEMS.QUANTITY) de los artículos de pedido
Valores matemáticos
Precio neto de cada artículo
Multiplicador de resultado
Uno

Método de cálculo CalculationRange

El método de cálculo CalculationRange calcula un importe monetario para un rango de cálculo determinado. El método de cálculo CalculationRuleCalculate llama al método de cálculo CalculationRange y le pasa los parámetros siguientes:

Moneda
Es la moneda de pedido. El importe monetario devuelto estará en esta moneda.
Resultado de búsqueda de rango de cálculo
Es el valor obtenido de la tabla de base de datos CALRLOOKUP utilizando el número de búsqueda.
Parte aplicable del número de búsqueda
Este número se basa en el número de búsqueda determinado por el método de cálculo CalculationScaleLookup. La parte aplicable del número de búsqueda se puede determinar del modo siguiente:
Rangos de cálculo no acumulativos:
La parte aplicable del número de búsqueda es igual al número de búsqueda.
Rangos de cálculo acumulativos:
La parte aplicable del número de búsqueda se determina mediante la fórmula siguiente:

min(lookupNumber, rangeEnd) - rangeStart
Donde:
númeroBúsqueda
El número de búsqueda determinado por el método de cálculo CalculationScaleLookup.
finalRango
El atributo de inicio de rango (CALRANGE.RANGESTART) del siguiente rango de cálculo de la lista de rangos de cálculo que se deben procesar. Si no hay más rangos de cálculo a procesar, finalRango es infinito.
inicioRango
El atributo de inicio de rango (CALRANGE.RANGESTART) del rango de cálculo que se está procesando actualmente.
Valor monetario base aplicable
Este número se basa en el valor monetario base determinado por el método de cálculo CalculationScaleLookup. El valor monetario base aplicable se determina del modo siguiente:
Rangos de cálculo no acumulativos:
El valor monetario base aplicable es igual al valor monetario base.
Rangos de cálculo acumulativos:
El valor monetario base aplicable se determina mediante la fórmula siguiente:

min(baseMonetaryValue, rangeEnd*unitValue) - rangeStart*unitValue
Donde:
valorMonetarioBásico
El valor monetario base determinado por el método de cálculo CalculationScaleLookup.
finalRango

El atributo de inicio de rango (CALRANGE.RANGESTART) del siguiente rango de cálculo de la lista de rangos de cálculo que se deben procesar. Si no hay más rangos de cálculo a procesar, finalRango es infinito.

inicioRango

El atributo de inicio de rango (CALRANGE.RANGESTART) del rango de cálculo que se está procesando actualmente.

valorUnitario

El valor monetario base dividido por el número de búsqueda. El valor monetario base y el número de búsqueda los determina el método de cálculo CalculationScaleLookup.

PercentageCalculationRangeCmdImpl

Este mandato espera que el resultado de búsqueda de rango de cálculo no sea un importe monetario. Si el resultado de búsqueda de rango de cálculo tiene una moneda, se ignora la moneda. Este método de cálculo CalculationRange calcula un importe monetario dividiendo el resultado de búsqueda de rango de cálculo por 100 y multiplicando el resultado por el valor monetario base aplicable.

PerUnitAmountCalculationRangeCmdImpl

Este mandato espera que el resultado de búsqueda de rango de cálculo sea un importe monetario. Si el importe monetario no está en la moneda especificada, este mandato convierte el resultado de búsqueda a la moneda especificada (si se ha definido la conversión de moneda). De lo contrario, este método de rango de cálculo calcula un importe monetario multiplicando el resultado de búsqueda de rango por la parte aplicable del número de búsqueda.

FixedAmountCalculationRangeCmdImpl

Este mandato espera que el resultado de búsqueda de rango de cálculo sea un importe monetario. Si el importe monetario no está en la moneda especificada, este mandato convierte el resultado de búsqueda a la moneda especificada (si se ha definido la conversión de moneda). El resultado de búsqueda de rango se devuelve como el importe monetario y este mandato no realiza ningún otro cálculo.

Cómo se utilizan las escalas de cálculo y los rangos de cálculo

Los métodos de cálculo CalculationRuleCalculate utilizan las escalas de cálculo y los rangos de cálculo para determinar un importe monetario para cada artículo de pedido de una lista. La implementación predeterminada de CalculationRuleCalculate realiza los pasos siguientes para obtener importes monetarios utilizando escalas de cálculo y normas de cálculo:

  1. Establece los importes monetarios calculados para cada artículo de pedido en cero.
  2. Establece el importe monetario total para la escala de cálculo en cero.
  3. Pasa al método de cálculo CalculationScaleLookup una lista de artículos de pedido. El método de cálculo CalculationScaleLookup devuelve los valores siguientes:
    • Un número de búsqueda
    • Un valor monetario base
    • Un multiplicador de resultado
    • Un conjunto de valores matemáticos, uno para cada artículo de pedido
    Estos valores dependen del método CalculationScaleLookup al que se llame.
  4. Busca rangos de cálculo que coincidan con el número de búsqueda. El método de cálculo CalculationRuleCalculate determina qué escalas de cálculo se utilizan para establecer los rangos de cálculo.

    Un rango de cálculo coincide con un número de búsqueda que es mayor o igual que el valor inicial del rango (CALRANGE.RANGESTART). Si no se define el valor inicial de un rango de cálculo, el rango de cálculo coincide siempre con el número de búsqueda.

    Los rangos de cálculo se buscan utilizando el número de búsqueda para localizar los rangos en la tabla de base de datos CALRANGE. Los ID de los rangos de cálculo se utilizan posteriormente para buscar los resultados de búsqueda.

  5. Clasifica los rangos de cálculo en una secuencia ascendente, por el valor inicial de los rangos.
  6. Procesa cada rango de cálculo realizando los pasos siguientes:
    1. Obtiene los resultados de búsqueda del rango de cálculo si el número de búsqueda es mayor que o igual al valor inicial del rango de cálculo que se está procesando y se cumple una de las condiciones siguientes:
      • Se trata del último rango de cálculo que se está procesando.
      • El número de búsqueda es menor que el valor inicial del siguiente rango de cálculo a procesar.
      • El rango de cálculo es acumulativo.
      Sólo se permiten varios resultados de búsqueda de rango de cálculo cuando los resultados de búsqueda de rango de cálculo están asociados con monedas. No se puede determinar cuál será el comportamiento cuando se encuentran varios resultados de búsqueda de rango de cálculo y dichos resultados no están asociados con monedas. Se recomienda no utilizar configuraciones de este tipo.

      Los resultados de búsqueda de rango de cálculo se obtienen utilizando el ID de rango de cálculo para localizar los resultados de búsqueda en la tabla de base de datos CALRLOOKUP.

      Los resultados de búsqueda de rango de cálculo deben estar todos asociados con una moneda o ninguno debe estar asociado con una moneda. No se puede determinar cuál será el comportamiento cuando algunos resultados de búsqueda de rango de cálculo están asociados con una moneda y otros no lo están. Se recomienda no utilizar configuraciones de este tipo.

    2. Obtiene un importe monetario para los resultados de búsqueda de rango de cálculo realizando una de las acciones siguientes:
    3. Multiplica el importe monetario obtenido por el multiplicador de resultado y realiza una de las acciones siguientes con el valor resultante:
      Rangos de cálculo no acumulativos:
      Sustituye el importe monetario total actual para la escala de cálculo por el valor resultante.
      Rangos de cálculo acumulativos:
      Suma el valor resultante al importe monetario total para la escala de cálculo.
  7. Distribuye el importe monetario total para la escala de cálculo entre los artículos de pedido en proporción al valor matemático asignado a cada artículo.

Proceso de resultados de búsqueda asociados con monedas

Cuando un rango de cálculo tiene varios resultados de búsqueda en varias monedas, existen dos situaciones posibles:

  1. La lista de monedas en el resultado contiene la moneda del pedido.
  2. La lista de monedas en el resultado no contiene la moneda de pedido.

Las monedas de resultado de búsqueda contienen la moneda de pedido

Tiene que haber un solo resultado de búsqueda de rango de cálculo con una moneda que coincida con la moneda de pedido. Si existen varios resultados de búsqueda de rango de cálculo que comparten la moneda del pedido, se genera una excepción.

Se procesa el resultado de búsqueda de rango de cálculo llamando a un método de cálculo CalculationRange para obtener un importe monetario. Para obtener más información, consulte Llamada a un método de cálculo CalculationRange.

Las monedas de resultado de búsqueda no contienen la moneda de pedido

Si ninguna de las monedas de los resultados de búsqueda coincide con la moneda de pedido, los importes monetarios para los resultados de búsqueda se obtienen realizando lo siguiente:

  1. Convierta los resultados de búsqueda a la moneda de pedido. Si en WebSphere Commerce no se ha definido ninguna conversión de la moneda de resultado de búsqueda a la moneda de pedido, el resultado de búsqueda se elimina de la lista de resultados de búsqueda que se deben procesar.
  2. Para cada uno de los resultados de búsqueda convertidos, se llama a un método de cálculo CalculationRange para obtener un importe monetario para cada uno de los resultados de búsqueda convertidos. Para obtener más información, consulte Llamada a un método de cálculo CalculationRange.Llamada a un método de cálculo CalculationRange
  3. Compare los importes monetarios de cada uno de los resultados de búsqueda. El valor más bajo se considera el valor monetario válido.

Proceso de resultados de búsqueda no asociados con monedas

Si los resultados de búsqueda de rango de cálculo no están asociados con una moneda, sólo se tiene que encontrar un resultado de búsqueda. Si se encuentran varios resultados de búsqueda que no están asociados con monedas, se genera una excepción.

Se procesa el resultado de búsqueda de rango de cálculo llamando a un método de cálculo CalculationRange para obtener un importe monetario. Para obtener más información, consulte Llamada a un método de cálculo CalculationRange.Llamada a un método de cálculo CalculationRange

Llamada a un método de cálculo CalculationRange

Para obtener un importe monetario de un método de cálculo CalculationRange, llame a un método de cálculo CalculationRange, pasándole los parámetros siguientes:

  • Una moneda de pedido
  • Un resultado de búsqueda de rango de cálculo
  • La parte aplicable del número de búsqueda
  • El valor monetario base aplicable

El valor del importe monetario depende del método de cálculo CalculationRange llamado. Para obtener más información sobre los métodos de cálculo CalculationRange diferentes que se proporcionan con HCL Commerce y las definiciones de los parámetros necesarios para los métodos de cálculo CalculationRange, consulte el Método de cálculo CalculationRange.