HCL Commerce Enterprise

Exemple : Comment les widgets peuvent afficher les produits et les prix selon un contrat B2B

Dans un magasin B2B, vous voudrez peut-être que votre widget Commerce Composer affiche les produits et les prix selon les termes du contrat sous lequel l'acheteur fait ses courses. Si tel est le cas, examinez un exemple de la façon dont la structure Commerce Composer utilise les services REST pour s'assurer que le widget Liste d'entrée de catalogue affiche les produits et les prix auxquels un acheteur a droit. Vous pouvez utiliser une approche similaire lorsque vous codez votre propre widget.

Exemple : Widget Liste des entrées de catalogue

Lorsque vous publiez le magasin type Aurora en tant que magasin B2B, Widget Liste des entrées de catalogue utilise l'ID de contrat de la session en cours pour déterminer quels produits et prix afficher. Cet exemple illustre comment le widget fonctionne sur la vitrine :
Un acheteur fait ses courses dans le cadre du contrat X. Ce contrat donne droit au client aux produits et prix suivants :
  • Tous les produits du catalogue, à l'exception des vis fabriquées par Veerman Tools.
  • 5 % de réduction sur le prix contractuel par défaut.
Lorsque l'acheteur parcourt le catalogue et affiche les listes de produits dans le widget Liste d'entrées de catalogue sur les pages de résultats de catégorie et de recherche :
  • Les listes de produits excluent les vis fabriquées par Veerman Tools.
  • Les prix reflètent la réduction de 5 %.

Si l'acheteur passe au contrat Y, le widget Liste d'entrées de catalogue affiche les produits et les prix selon le contrat Y.

Pour afficher les produits et les prix selon les termes du contrat décrits dans l'exemple précédent, le widget Liste d'entrées catalogue transmet l'ID de contrat de la session en cours aux services REST. Les services REST utilisent ensuite HCL Commerce Search (Solr) pour retourner les produits et les prix appropriés.

L'illustration suivante identifie les fichiers JSP et la ressource REST qui sont impliqués dans ce processus pour le widget Liste d'entrées de catalogue :


Fichiers de widget Liste d'entrées de catalogue pour la prise en charge des prix et des produits contractuels
  • 1 Le fichier JSP du fournisseur de données (CatalogEntryList_Data.jspf) pour le widget Liste d'entrées de catalogue inclut le fichier SearchSetup.jspf. Voici le fragment de code pertinent du fichier 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 Le fichier SearchSetup.jspf :
    • Inclut le fichier EnvironmentSetup.jspf. Ce fichier déclare les variables d'environnement globale, y compris l'ID de contrat. Le dossier EnvironmentSetup.jspf renvoie une série d'ID de contrat pour les contrats auxquels l'acheteur actuel a droit. Voici le fragment de code pertinent du fichier EnvironmentSetup.jspf :
      <c:set var="env_activeContractIds" value="${fn:split(CommandContext.currentTradingAgreementIdsAsString, ';')}" scope="request"/>
    • Appelle la ressource REST du produit et transmet l'ID du contrat. L'appel de service dans le fichier SearchSetup.jspf ressemble à ceci :
      <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 La ressource REST de produit utilise l'ID de contrat pour renvoyer les produits et les prix au widget Liste d'entrées de catalogue selon les termes du contrat.

Si vous voulez que votre widget ait cette fonctionnalité, vous pouvez utiliser une approche similaire pour transmettre l'ID de contrat au service. Comme alternative à l'inclusion du fichier SearchSetup.jspf, vous pouvez appeler le service directement à partir de votre fichier JSP de fournisseur de données.