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 y se almacenan en el índice de precios designado de HCL Commerce Search. Estos datos se copian posteriormente en el índice de productos para utilizarlos con la API del servicio Query para filtrarlos, ordenarlos y mostrarlos.
    Note: Esta operación de copia solo tiene lugar cuando el nuevo precio del contrato calculado es diferente del precio calculado anteriormente. El motivo es evitar cualquier actualización innecesaria del índice de productos.

Los precios indexados se llenan rápidamente, pero no se evalúan dinámicamente. Para asegurarse de que el escaparate muestra precios precisos, ajuste la frecuencia de la operación de cálculo de precios para que se adapte a las necesidades de su 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 calcular e indexar precios utilizando la llamada RESTful de creación de índice. Para obtener más información, consulte Crear el índice de Elasticsearch.
  • La llamada RESTful para calcular el precio actualiza la información del índice de precios siempre que sea necesario en función del modelo de precios que utilice su tienda. 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 al 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.
  • 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. El cálculo se realiza como un trabajo en segundo plano en el servidor de transacciones. Esta tarea puede tardar bastante tiempo en finalizarse dependiendo del número de contratos implicados y el tamaño de cada lista de precios. Inicialmente, solo se devuelve el estado del envío del trabajo de cálculo de precios, no el estado de toda la tarea de cálculo de precios.

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.
    Tip: 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 para ser eliminados del índice de precios. Esto es para evitar que se copien los datos de los precios de los contratos vencidos en el índice de productos.
  • 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.

Transaction server y los procesos de NiFi

Transaction server

  • Cuando Transaction server recibe un mandato de importación/compilación de datos, inicia hebras de trabajador para preprocesar todos los datos de precios de los contratos. El mandato que inicia estos procesos es:
    POST: https://CommerceServerName​​​:ts-app-port/wcs/resources/admin/index/dataImport/build?connectorId=price&indexSubType=Price&storeId=12
    HCL Commerce Version 9.1.2.0 or later
    POST: https://CommerceServerName​​​:ts-app-port/wcs/resources/admin/index/dataImport/build?connectorId=auth.price&indexSubType=Price&storeId=12
    Este mandato utiliza dos parámetros adicionales.
    numWorkers
    Controla el número de hebras de trabajador que se utilizarán para el preproceso del cálculo de precios de los contratos.
    flushSize
    Controla el tamaño de cada cuerpo de solicitud al enviar a NiFi.
  • Una vez realizado el preproceso, el resultado se almacena en las tablas de base de datos TI_OFFER y TI_OFFERPRICE. En este momento, todas las hebras de trabajador finalizan y el flujo principal transmite el resultado a NiFi, utilizando el parámetro flushSize para determinar el tamaño de cada carga útil de la solicitud. El valor predeterminado de flushSize es 1000.
  1. Cada solicitud de precio calculado (con un tamaño predeterminado de 1000) se envía al conector Auth.price de NiFi.
  2. Dentro de este conector de precios, el archivo de flujo se transforma en una solicitud masiva que se enviará al índice de Elasticsearch Auth.price.
  3. En este momento, aunque la lista de entradas de catálogo todavía está presente en el flujo de datos, CopyLink utiliza esta lista de ID para determinar si se va a copiar realmente en el índice de productos o no. solo se copian los números actualizados, en lugar de copiarlo todo.
    • El proceso espera a que se complete la copia antes de continuar.
    • El flujo de datos con el ID de ejecución actual finaliza en la etapa de terminal y se elimina a través del servicio de terminal, que produce una entrada en el índice de registro en Elasticsearch.
  4. El servidor de transacciones recibe el mandato dataimport/build e inicia hebras de trabajador para preprocesar todos los datos de precios de los contratos.
Además, debe utilizar el siguiente mandato para consultar el estado de este cálculo de precios desde Transaction server en lugar del punto final de Ingest de la búsqueda. Por ejemplo:
https://TSHost:TSPort/wcs/resources/admin/index/dataImport/status?jobStatusId=100

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 la empresa cambia el precio del contrato y quiere previsualizar dichos cambios en la vista previa de la tienda del espacio de trabajo. Sin el recálculo, estos cambios no se pueden previsualizar. Debe ejecutar el recálculo del precio del contrato para capturar los precios modificados en el índice de precios, que luego se copian en el índice de productos. Esta operación permite que los productos afectados recojan los cambios de precios relacionados con el nuevo contrato.