HCL Commerce Enterprise

Almacenamiento de datos de regla de precio y flujo de procesos

Si va a personalizar reglas de precios, debería saber qué tablas de base de datos almacenan datos acerca de dichas reglas. Además, debería comprender qué sucede "entre bastidores" cuando el almacén muestra un precio generado por una regla de precios. Este conocimiento le ayudará a comprender qué debe crear o cambiar para dar soporte a condiciones y acciones personalizadas en las reglas de precios.

Consejo: En el contexto de la personalización, las condiciones y acciones también se denominan elementos de reglas de precios.

Dónde se almacenan los datos sobre las reglas de precios

Los usuarios de negocio crean una regla de precio utilizando el Creador de reglas de precios en la herramienta Filtro de catálogo y fijación de precios del Management Center. La siguiente ilustración muestra qué tablas de base de datos se actualizan cuando un usuario de negocio guarda una regla de precios en el Creador de reglas de precios:
Tablas de creación de reglas de precios

Vistazo entre bastidores a una regla de precio en uso en el escaparate

Cuando un cliente visualiza una página de la tienda que muestra precios, HCL Commerce utiliza la regla de precio para definir el precio al que tiene derecho el cliente. En una regla de precio típica, HCL Commerce evalúa condiciones y realiza acciones en la regla de precio:
  • En las reglas de precios se utilizan elementos de condición para asignar una condición a una vía. Por ejemplo, un elemento Condición de catálogo puede requerir que la entrada de catálogo para la que se fija el precio deba estar en la categoría Neumáticos. Si la condición se cumple, la vía que contiene el elemento de la condición se utiliza para establecer el precio. Otros ejemplos de condiciones son el elemento Condición de cliente y el elemento Condición de comparación. Para obtener información detallada sobre las condiciones, consulte Condiciones en las reglas de precios.
  • En las reglas de precios se utilizan elementos de acción para proporcionar instrucciones que WebSphere Commerce sigue para establecer precios. A modo de ejemplo, cabe citar la acción Obtener precio de la lista de precios y la acción Calcular precio. Para obtener información detallada sobre las acciones, consulte Acciones en las reglas de precios.
Considere la regla de precio de ejemplo siguiente, que contiene condiciones y acciones:
  • La vía superior establece precios para neumáticos obteniendo un precio de la lista de precios de neumáticos e incrementando el precio en un 10%.
  • La vía inferior establece los precios para las demás entradas de catálogo obteniendo un precio de la lista de precios de oferta.

Ejemplo de regla de precio

Si el cliente abre una página de la tienda que muestra un neumático, las condiciones y los elementos de la vía superior funcionan de este modo:

  • 1 El elemento Condición de catálogo comprueba si la entrada de catálogo es un neumático. En caso afirmativo, se utiliza la vía superior para establecer el precio del neumático.
  • 2 La acción Obtener precio de la lista de precios recupera el precio del neumático de la lista de precios de neumáticos y pasa el precio a la siguiente acción del flujo.
  • 3 La siguiente acción es Calcular precio. Esta acción incrementa el precio en un 10%. Dado que se trata de la última acción de la vía superior, el precio marcado se muestra en la página de la tienda para el neumático.

Debe tener en cuenta que, si el cliente abre una página de tienda que muestra una entrada de catálogo que no es un neumático, se utiliza la vía inferior para establecer el precio.

En la siguiente ilustración se muestra qué ocurre entre bastidores cuando se utiliza en el escaparate una regla de precio con condiciones y acciones como la del ejemplo anterior (sólo se utiliza la vía superior en esta explicación):


Cómo se procesa una regla de precio

Para cada paso de la ilustración, las notas siguientes explican cómo el motor de reglas del precios procesa la regla de precios para mostrar un precio para una entrada de catálogo:

  • 1 Cuando un cliente que compra en la tienda ve una página de la tienda que muestra precios para una entrada de catálogo:
    • Para mostrar el precio de oferta (el precio autorizado que el cliente puede pagar), WebSphere Commerce utiliza com.ibm.commerce.catalog.beans.CatalogEntryDataBean. Este bean de datos llama a la implementación de la clase com.ibm.commerce.price.commands.GetContractUnitPriceCmd, que invoca el motor de reglas de precios de este modo:
      1. Pasa los contratos elegibles.
      2. Obtiene la regla de precio para el precio de oferta que se asigna a cada contrato elegible.
      3. Determina los precios finales que se deben mostrar después de evaluar las reglas de precios aplicables.
    • Para mostrar el precio de catálogo (el precio que sólo es para mostrar), WebSphere Commerce llama al servicio Get DisplayPrice, que invoca el motor de reglas de precios de este modo:
      1. Pasa el nombre de la regla de precio de la lista directamente.
      2. Determina el precio final que se debe mostrar después de evaluar la regla de precios de catálogo.
  • 2 Si la regla de precios contiene un elemento de condición, los servicios de precios llaman al mandato de tarea de condición definido en la definición de plantilla de elemento de regla de precios asociada. Los servicios de fijación de precios pasan al mandato de tarea todos los parámetros especificados en la plantilla de elemento de regla de precio asociada. Normalmente, los usuarios de empresa definen estos parámetros en la interfaz de usuario, y los parámetros se almacenan en la tabla PRELEMENTATTR como pares de nombre-valor; no obstante, los parámetros también pueden provenir de la especificación de la plantilla de elemento de regla de precio. Estos parámetros de elemento, además de los parámetros de contexto de negocio, como storeId y currency, se pasan al mandado de tarea. El mandato de tarea utiliza esta información para determinar si se cumple la condición. Si no se cumple, el mandato de tarea devuelve el valor false y HCL Commerce ignora esta vía y pasa a la siguiente vía de la regla de precio (la siguiente vía no se muestra).
  • 3 Para realizar la primera acción en la regla de precio, los servicios de fijación de precios llaman al mandato de tarea de acción definido en la definición de plantilla de elemento de regla del precios asociada. Los servicios de fijación de precios pasan al mandato de tarea todos los parámetros especificados en la definición de plantilla de elemento de regla de precios asociada. Normalmente, los usuarios de empresa definen estos parámetros en la interfaz de usuario, y los parámetros se almacenan en la tabla PRELEMENTATTR como pares de nombre-valor; no obstante, los parámetros también pueden provenir de la especificación de la definición de plantilla de elemento de regla de precio. Estos parámetros de elemento, además de los parámetros de contexto de negocio, como storeId y currency, se pasan al mandado de tarea. El mandato de tarea utiliza esta información para realizar la acción en la regla de precio.
  • 4 Para realizar acciones adicionales en la regla de precio, los servicios de fijación de precios siguen el mismo proceso que se ha descrito en el punto 3. Para pasar la salida del precio de la acción anterior a la siguiente acción del flujo, el motor de reglas de precios establece el precio de salida como variable denominada prOutputObject. Esta variable es uno de los parámetros del método processElement.
  • 5
    • Para el precio de oferta, HCL Commerce devuelve el precio que la regla de precio asignada al contrato genera para el servicio Get EntitledPrice. Dado que este servicio se invoca desde CatalogEntryDataBean, el bean de datos obtiene el precio devuelto y pasa el precio a la página JSP para su visualización.
    • Para el precio de catálogo, HCL Commerce devuelve el precio generado por la regla de precios de catálogo al servicio DisplayPrice. Dado que este servicio se invoca directamente desde la página JSP, el servicio analiza el precio desde el objeto de datos lógico devuelto y muestra el precio directamente en la página.