Indexación de precios de contrato en la HCL Commerce Search

Puede indexar los precios en la HCL Commerce Search. Por ejemplo, puede crear el índice de precios de HCL Commerce Search emitiendo la llamada RESTful para Calcular precio y, a continuación, indexar los precios de contrato.

Precios en la HCL Commerce Search

Los precios devueltos por la HCL Commerce Search se indexan o se calculan:
  • Los precios de oferta, o precios de contrato predeterminado, se indexan directamente desde el contrato predeterminado de la tienda propietaria.
  • Los precios de catálogo se indexan directamente desde las tablas de base de datos LISTPRICE u OFFER, en función del origen de precio.
  • Los precios de contrato se calculan basándose en el contrato seleccionado. A continuación, se indexan en HCL Commerce Search en el índice de entrada de catálogo o el índice de extensión de precio, en función del número de contratos que contenga el sitio o el origen de los datos de precio.

Los precios indexados se llenan rápidamente, pero no se evalúan dinámicamente. Para asegurarse de que el escaparate muestra precios precisos, puede cambiar la modalidad de precio para que se adapte a sus necesidades de negocio.

Al trabajar con precios y monedas en HCL Commerce Search, se utiliza de forma predeterminada una columna de índice independiente para manejar varias monedas.

Indexación de precios

Puede indexar datos de precios en las ubicaciones siguientes, basándose en el número de contratos que el sitio contiene o el origen de los datos de precios:
  • En el índice de entrada de catálogo, cuando el sitio contiene menos de 1000 contratos y los datos de precios está contenidos en HCL Commerce. Puede calcular e indexar precios utilizando la llamada RESTful de creación de índice. Para obtener más información, consulte Creación del índice de HCL Commerce Search.

    La llamada RESTful para Calcular precio actualiza la información en el índice de precios a petición basándose en el modelo de fijación de precios que la tienda utiliza. Para obtener más información, consulte Crear precio de contrato como incluido en el índice CatalogEntry.

    El mandato de trabajo ContractPriceCalculate se utiliza para calcular precios en una planificación de todas las entradas de catálogo que pertenecen a un catálogo maestro específico. El precio de entrada de catálogo se calcula para todos los contratos que pertenecen a la tienda. Para obtener más información, consulte Creación y planificación del trabajo ContractPriceCalculate.

  • En el índice de extensión de precios, cuando el sitio contiene más de 1000 contratos o si utiliza un origen externo para llenar los precios. Los precios se indexan utilizando la carga de índice, ya que puede llenar una gran cantidad de datos en un índice de extensión independiente más rápido que lo que el índice de entrada de catálogo pueda indexar los datos de precios. Para obtener más información, consulte Carga de índice.
  • Al indexar precios de contrato, asegúrese de que el valor de wc.search.priceMode.compatiblePriceIndex está establecido en 1.0 en la tabla STORECONF:
    
    insert into storeconf(storeent_id,name,value) values('storeent_id', 'wc.search.priceMode.compatiblePriceIndex', '1.0');
    

Cálculo de precios

Los precios se pueden calcular completamente o para una entrada de catálogo, un contrato o una moneda especificados. Cuando se utilizan nuevos cálculos de precios, todos los datos de precios anteriores se eliminan del índice antes de que se vuelvan a calcular los precios de contrato B2B.

Para ayudarle a decidir cuándo y dónde se deben calcular los precios, tenga en cuenta las opciones siguientes:
Servidor o entorno dedicado
Asigne un servidor o una instancia dedicados para calcular los precios.
Llamada a servicio de indexación para calcular y crear índice después de que el canal de precios esté disponible en la base de datos de HCL Commerce en un nodo real.
En esta configuración, el cálculo de precios no tiene ningún impacto de rendimiento en el nodo de HCL Commerce.
Entorno real en un repetidor
Puede calcular y crear el índice de precios en un repetidor. A continuación, los precios y otros datos dentro del índice de entrada de catálogo y grupo de catálogo se replican en los subordinados de búsqueda.
En esta configuración, el cálculo de precios no impacta el rendimiento del nodo real.
Entorno de autoría en maestro
Calcule los precios en un nodo de HCL Commerce en un maestro/autoría.
Cree el precio junto con otros datos de índice en un nodo de transición en autoría/maestro y, a continuación, llame a la API RESTful indexprop para replicar el índice en un repetidor. Para más información sobre esta llamada, consulte Propagar el índice de búsqueda.
En esta configuración, no se necesitan cambios de topología adicionales. Esta característica sigue siendo compatible con versiones del paquete de características anteriores de HCL Commerce.

Lógica de recálculos de precios completos

  • El recálculo de precios utiliza los contratos de tienda actuales y futuros que comparten el catálogo maestro.
  • solo se respetan las monedas soportadas para todas las tiendas activas identificadas en el catálogo maestro, mientras que otras se ignoran y no se indexan. Esta restricción se debe a que los precios se vuelven a calcular en nombre del administrador de sitio y, por lo tanto, no se puede calcular ningún precio a nivel de segmento de cliente.
  • De forma predeterminada, los cálculos de precios se basan en alguna unidad de medida (kilos, cajas, lotes) que tenga una cantidad numérica base de 1 o en una unidad de C62. C62 se utiliza para indicar elementos que no se cuentan según una unidad de medida distinta. Por ejemplo, las camisas no se miden normalmente en kilos, sino por cantidad. Su unidad de medida se puede establecer como C62. Una limitación de este enfoque es que se omite cualquier precio a nivel de paso, es decir, precio basado en cantidad.
    Consejo: Puede solucionar temporalmente esta limitación definiendo de forma explícita C62 como un valor 1 y luego definiendo una unidad basada en C62 que puede multiplicarse. Por ejemplo, la siguiente consulta SQL crea una nueva unidad, CS, basada en C62, que puede multiplicarse para habilitar el precio a nivel de paso o basado en cantidad.
    INSERT INTO QTYCONVERT VALUE('CS',1,'C62',1,'M','N',0);

Lógica de los recálculos

  • Los ID de contrato no se validan cuando se pasan como un parámetro independiente, para que los contratos futuros muestren los precios correctos cuando se previsualiza una fecha futura en la vista previa de la tienda.
  • Todos los contratos caducados y suspendidos son seguros de eliminar de la tabla temporal TI_CNTRPRICE para la entrada de catálogo especificada o el contrato que se especifica en los parámetros del programa de utilidad. Es decir, la lista de depuración solo está limitada a la entrada de catálogo o al contrato especificados. Por ejemplo, si especifica un contrato caducado, se depuran todas las entradas de catálogo cubiertas por ese contrato. Sin embargo, si especifica una entrada de catálogo, todos los contratos caducados se depuran solo para la entrada de catálogo especificada.
  • Si un contrato está suspendido e inactivo, el precio de contrato se elimina. Si un usuario de empresa reanuda el contrato y se activa de nuevo, el precio no se muestra en el escaparate hasta que el precio se calcula de nuevo para el contrato reanudado.
  • Cuando se pasa un producto, un contrato o una moneda no válidos, la lógica ignora y, por lo tanto, no indexa los valores no válidos.
  • Si un contrato pasado está caducado o suspendido, se suprime y depura del resultado del cálculo. De lo contrario, si se pasa un contrato que estará activo en una fecha futura, se indexa. Es decir, aunque no esté actualmente activo en el momento del recálculo de precios.
  • Los parámetros storeId y currency no se pueden especificar con ningún otro parámetro.

Lógica de personalización

Los precios de contrato activos y futuros se incorporan en el índice de entrada de catálogo utilizando definiciones de campo que empiezan por price_, seguido por una combinación de contrato y moneda. Por ejemplo, price_USD_10001 o price_CNY_10002. En cambio, para releases sin precios de contrato indexados, el índice de entradas de catálogo utiliza definiciones de campo que empiezan por price_, seguidas solo por su moneda.

La llamada RESTful para calcular precio resuelve todos los contratos desplegados para las tiendas que comparten el catálogo maestro especificado. A continuación, inicializa el mandato de API de precios para calcular los precios para todas las entradas de catálogo que pertenecen al catálogo maestro especificado. Cuando los datos de precio se incluyen en el índice de CatalogEntry maestro, el resultado del precio calculado se guarda en la tabla temporal TI_CNTRPRICE_#INDEX_SCOPE#. Cuando los datos de precios se encuentran en un subnúcleo ampliado, los resultados de precios calculados se guardan en la tabla TI_EXT_CNTRPRICE_#INDEX_SCOPE#. Todos los resultados calculados para una entrada de catálogo se componen en una única columna:

TI_CNTRPRICE_#INDEX_SCOPE

Nombre: Tipo Descripción:
CATENTRY_ID BIGINT NOT NULL El ID de la entrada de catálogo. Esta columna contiene toda la entrada de catálogo para el catálogo maestro especificado.
PRICE CLOB Varios pares de valores para diferentes contratos y valores de moneda que están separados por un espacio en blanco.
NameValuePairTransformer es el transformador predeterminado que transforma la amplia columna de valores múltiples en el campo de precio dinámico. Puede generar diferentes nombres de columna de precios dinámicos en Solr personalizando o creando un nuevo transformador. Si personaliza el transformador, debe alterar temporalmente el método applyFieldNamingPattern en las clases siguientes para obtener los nombres de columna de precios actualizados:
  • SolrRESTSearchCatalogEntryViewPriceQueryPostprocessor
  • SolrRESTSearchByPriceExpressionProvider
  • SolrSearchResultFieldQueryPreprocessor
  • SolrSearchFacetQueryPreprocessor

En los sitios ampliados, la tienda con elementos de catálogo define el precio en el catálogo maestro para que los sitios ampliados compartan los precios de la tienda con elementos de catálogo. O bien, el sitio ampliado puede alterar temporalmente los precios para que contenga los precios específicos del sitio ampliado. Distintos sitios ampliados pueden crear elementos específicos con precio específico. Cuando se calculan los precios, se calculan primero los elementos específicos de tienda . Los elementos compartidos se calculan cada uno por tienda según el contrato y la moneda específicos. La API de precio obtiene el precio correcto, basado en el contrato, la regla de precio, el modelo de precios o los términos y condiciones de contrato específicos. Diferentes sitios ampliados pueden definir diferentes precios utilizando un contrato diferente. Cuando un comprador inicia la sesión en una tienda de sitio ampliado diferente, se resuelven contratos diferentes. A continuación, el comprador ve los precios relevantes en la tienda, incluso para el mismo producto del catálogo maestro.

Se configuran varias columnas de precios en el índice de entradas de catálogo. Cuando un comprador inicia la sesión en el escaparate, se recupera el contrato de comprador elegible. Si hay varios contratos elegibles, el comprador puede seleccionar un contrato para establecerlos para la sesión. A continuación, se visualiza en el escaparate la columna de precio correspondiente que está relacionada con el contrato en la sesión. Para personalizar este comportamiento, la URL ContractPriceCalculate utiliza ContractPriceCalculateCmd como el mandato de entrada general. La lógica puede alterarse registrando una nueva implementación de mandato en la tabla de registro de mandatos. Si desea introducir lógica de cálculo diferente, altere los métodos calculateStoreSpecificItemPrice y calculateSharedItemPrice en el mandato ContractPriceCalculateCmd.

Se utiliza el perfil de acceso IBM_Admin_CalculatePriceIndex para arrancar la entrada común de la API de precio com.ibm.commerce.price.commands.CompositeGetContractUnitPriceCmdImpl:

<cmdreg storeent_id="0" interfacename="com.ibm.commerce.price.commands.GetContractUnitPriceCmd+IBM_Admin_CalculatePriceIndex" 
classname="com.ibm.commerce.price.commands.CompositeGetContractUnitPriceCmdImpl" target="Local"/>
Si la tienda utiliza el modelo de precios de regla de precio, puede utilizar la implementación de mandato siguiente por motivos de rendimiento:

<cmdreg storeent_id="0" interfacename="com.ibm.commerce.price.commands.GetContractUnitPriceCmd+IBM_Admin_CalculatePriceIndex" 
classname="com.ibm.commerce.price.commands.PriceRuleGetContractUnitPriceCmdImpl" target="Local"/>

Si la tienda utiliza el modelo de precios externo, puede registrar su propio mandato de precio para obtener el resultado de precios deseado.

Vista previa del espacio de trabajo

Cuando usa la vista previa del espacio de trabajo:
  • Los precios B2B que se muestran en la vista previa de la tienda son solo del contenido aprobado.
  • Los precios futuros pueden verse previamente si el futuro contrato correspondiente está indexado. La fecha futura se respeta en el contexto de vista previa y muestra el contrato correcto para su visualización.
  • Los precios no se pueden asociar con contenido nuevo no aprobado, por ejemplo obtener una vista previa de un producto nuevo no aprobado que no pertenece a ningún contrato.
  • Cuando un usuario de empresa cambia el precio de oferta estándar en CMC, desea obtener una vista previa de dichos cambios en la vista previa de la tienda del espacio de trabajo. Si el índice de precios de contrato está habilitado, sin recálculo, no se puede obtener una vista previa de dichos cambios. Debe ejecutar manualmente el servicio de indexación o planificando el servicio de indexación, o calcular un trabajo de precio para capturar los precios cambiados. Esta operación permite que los productos afectados puedan captar los nuevos cambios de precios.