HCL Commerce Enterprise

Ejemplo: Cómo los widgets pueden mostrar productos y precios según un contrato de B2B

En una tienda de B2B, es posible que desee que el widget de Commerce Composer muestre productos y precios según los términos del contrato bajo los que el comprador está comprando. Si es así, revise un ejemplo de cómo la infraestructura de Commerce Composer utiliza servicios REST para asegurarse de que la lista de entradas de catálogo widget muestre los productos y precios a los que un comprador tiene derecho. Puede utilizar un método similar al codificar su propio widget.

Ejemplo: Widget de Lista de entradas de catálogo

Cuando publica la tienda de inicio Aurora como una tienda B2B, Widget de Lista de entradas de catálogo utiliza el ID de contrato de la sesión actual para determinar qué productos y precios se deben visualizar. Este ejemplo muestra cómo funciona el widget en el escaparate:
Un comprador está comprando según el contrato X. Este contrato autoriza al comprador a los productos y precios siguientes:
  • Todos los productos del catálogo excepto para los tornillos fabricados por las herramientas de Veerman.
  • 5 % de descuento en el precio de contrato predeterminado.
Cuando el comprador examina el catálogo y las vistas lista de productos en la lista de entradas de catálogo widget en las páginas de categoría y resultados de la búsqueda:
  • Las listas de productos excluyen los tornillos fabricados por las herramientas de Veerman.
  • Los precios reflejan el 5 % de descuento.

Si el comprador cambia al contrato Y, la lista de entradas de catálogo widget muestra productos y precios según el contrato Y.

Para mostrar productos y precios según los términos del contrato descritos en el ejemplo anterior, la lista de entradas de catálogo widget pasa el ID de contrato de la sesión actual a los servicios de REST. A continuación, los servicios de REST utilizan HCL Commerce Search (Solr) para devolver los productos y precios adecuados.

La siguiente ilustración identifica los archivos JSP y el recurso de REST que están implicados en este proceso para la lista de entradas de catálogo widget:


Archivos de widget de lista de entradas de catálogo para soportar precios de contrato y productos
  • 1 El archivo JSP del proveedor de datos (CatalogEntryList_Data.jspf) para la lista de entradas de catálogo widget incluye el archivo SearchSetup.jspf. A continuación, se muestra el fragmento de código relevante del archivo CatalogEntryList_Data.jspf:
    <c:choose>
    	<c:when test="${!empty WCParam.searchTerm || !empty WCParam.manufacturer || !empty WCParam.facet || !empty WCParam.metaData || WCParam.advancedSearch == 1}">
    		<%@include file = "/Widgets/Common/SearchSetup.jspf" %>
    	</c:when>
    	<c:otherwise>
    		<%@include file = "/Widgets/Common/CategoryNavigationSetup.jspf" %>
    	</c:otherwise>
    </c:choose>
  • 2 El archivo SearchSetup.jspf:
    • Incluye el archivo EnvironmentSetup.jspf. Este archivo declara las variables de entorno globales, incluido el ID de contrato. El archivo EnvironmentSetup.jspf devuelve una matriz de los ID de contrato para los contratos a los que tiene derecho el comprador actual. A continuación, se muestra el fragmento de código relevante del archivo EnvironmentSetup.jspf:
      <c:set var="env_activeContractIds" value="${fn:split(CommandContext.currentTradingAgreementIdsAsString, ';')}" scope="request"/>
    • Llama al recurso de REST del producto y pasa el ID de contrato. La llamada de servicio en el archivo SearchSetup.jspf es parecida a la siguiente:
      <wcf:rest var="catalogNavigationView1" url="${searchHostNamePath}${searchContextPath}/store/${WCParam.storeId}/productview/${restType}">
      ...
        <c:forEach var="contractId" items="${env_activeContractIds  }">
          <wcf:param name="contractId" value="${contractId}"/>
        </c:forEach>
      </wcf:rest>
  • 3 El recurso de REST de producto utiliza el ID de contrato para devolver productos y precios a la lista de entradas de catálogo widget de acuerdo con los términos del contrato.

Si desea que el widget tenga esta prestación, puede utilizar un método similar para pasar el ID de contrato al servicio. Como alternativa a incluir el archivo SearchSetup.jspf, puede llamar al servicio directamente desde el archivo JSP del proveedor de datos.