Filtrage des modes d'expédition au niveau de l'article de commande
Parfois, un mode d'expédition peut ne pas être applicable à tous les produits. Si vous choisissez de ne pas associer un mode d'expédition à un produit, aucun frais d'expédition n'est appliquée à ce produit. Vous pouvez utiliser OrderItemShippingModeListDataBean pour filtrer les modes d'expédition applicables d'un article de commande ou d'une matrice d'articles de commande. En utilisant le bean de données, vous pouvez fournir des frais d'expédition estimés et des ajustements d'expédition facultatifs pour chaque mode d'expédition.
Pourquoi et quand exécuter cette tâche
Les instructions suivantes décrivent comment personnaliser le flux d'achats de la vitrine. Ils ne décrivent pas comment personnaliser la création de commande dans HCL Commerce Accelarator.
Procédure
-
Reportez-vous au bean de données com.ibm.commerce.fulfillment.beans.OrderShippingModeListDataBean. Le tableau suivant affiche les paramètres d'entrée pour ce bean de données.
Nom Description orderItemId Utilisez ce paramètre pour définir 1 article de commande sur le bean de données.
orderItemIds Utilisez ce paramètre pour définir une liste d'articles de commande sur le bean de données.
allowableShippingModeIds Si ce paramètre est défini sur true, le bean de données filtre une liste des modes d'expédition applicables. Si ce paramètre est défini sur false, le bean de données renvoie l'intersection des modes d'expédition autorisés pour chaque article de commande. Si le paramètre allowableShippingModeIds n'est pas défini, le paramètre OrderItemShippingModeListDataBean récupère les modes d'expédition pris en charge par les contrats.
calculateShippingCharge Si ce paramètre est défini sur true, le bean de données filtre les modes d'expédition qui ne sont pas applicables et estime les frais pour chaque mode d'expédition. Si ce paramètre est défini sur false, le bean de données renvoie l'intersection des modes d'expédition autorisés pour chaque article de commande. CalculateShippingAdjustment Ce paramètre prend effet lorsque le paramètre calculateShippingCharge est défini sur true. Si ce paramètre est défini sur true, le bean de données ajoute l'ajustement d'expédition du résultat de promotion d'expédition pendant qu'il ne calcule les frais d'expédition. resolveFulfillmentCenter Ce paramètre prend effet lorsque le paramètre calculateShippingCharge est défini sur true. Lorsque ce paramètre est défini sur true, le bean de données résout les centres de distribution des articles dans la commande avant de calculer les frais d'expédition. Ce comportement se produit parce que certaines configurations de frais d'expédition sont liées au centre de distribution. En règle générale, vous pouvez définir la valeur de cet indicateur sur true puisque la configuration d'expédition se rapporte presque toujours au centre de distribution. checkAppliedItems Par défaut, ce paramètre est défini sur true. Dans les versions précédentes, STENCALUSG.USAGEFLAGS doit être défini sur 3 pour filtrer les modes d'expédition.
-
Modifiez le flux ou la fonction du magasin pour prendre en charge plusieurs modes d'expédition :
- Modifiez la fonction de magasin avec l'outil Gestion du magasin dans Management Center :
- Open the Store Management tool.
- Dans le filtre de la vue de l'explorateur, cliquez sur Magasins.
- Dans la liste des magasins disponibles, cliquez avec le bouton droit sur le magasin qui inclut les méthodes d'expédition que vous souhaitez modifier. Cliquez sur Ouvrir.
- Cliquez sur l'onglet Payer les achats.
- Activez la case à cocher Livraisons multiples.
- Cliquez sur Sauvegarder.
- Modifiez la fonction de magasin avec l'outil Gestion du magasin dans Management Center :
-
Personnalisez le fichier JSP pour utiliser OrderItemShippingModeListDataBean pour sélectionner le mode d'expédition.
<c:remove var="orderItemShippingModeList"/> <wcbase:useBean id="orderItemShippingModeList" classname="com.ibm.commerce.fulfillment.beans.OrderItemShippingModeListDataBean"> <c:set target="${orderItemShippingModeList}" property="orderItemId" value="${orderItem}"/> <c:set target="${orderItemShippingModeList}" property="resolveFulfillmentCenter" value="true"/> <c:set target="${orderItemShippingModeList}" property="calculateShippingCharge" value="true"/> <c:set target="${orderItemShippingModeList}" property="calculateShippingAdjustment" value="true"/> </wcbase:useBean> </pre> <table> <tr> <th><pre>Shipping Mode ID:</pre></th> <th><pre>Shipping Mode Description:</pre></th> <th><pre>Shipping Charge:</th> </tr> <c:forEach items="${orderItemShippingModeList.shippingModes}" var="shippingMode" varStatus="status"> <tr> <td><c:out value="${shippingMode.shippingModeId}"/></td> <td><c:out value="${shippingMode.description.description}"/></td> <td><c:out value="${orderItemShippingModeList.shippingCharges[status.index]}"/></td> </tr> </c:forEach> </table>Pour le magasin Aurora, modifiez le fichier. ShippingMethodDetails.jsp Personnalisez le fichier JSP pour sélectionner le mode d'expédition comme indiqué dans l'extrait de code suivant :<select class="drop_down_shipping" name="MS_ShippingMode_<c:out value='${orderItemId}'/>" id="MS_ShippingMode_<c:out value='${orderItemId}'/>" onchange="JavaScript:setCurrentId(this.id); CheckoutHelperJS.updateShipModeForThisItem(this,'<c:out value="${orderItemId}"/>'); TealeafWCJS.rebind(this.id);"> <c:remove var="orderItemShippingModeList"/> <wcbase:useBean id="orderItemShippingModeList" classname="com.ibm.commerce.fulfillment.beans.OrderItemShippingModeListDataBean"> <c:set target="${orderItemShippingModeList}" property="orderItemId" value="${orderItemId}"/> <c:set target="${orderItemShippingModeList}" property="resolveFulfillmentCenter" value="true"/> <c:set target="${orderItemShippingModeList}" property="calculateShippingCharge" value="true"/> <c:set target="${orderItemShippingModeList}" property="calculateShippingAdjustment" value="true"/> </wcbase:useBean> <c:forEach var="shippingMode" items="${orderItemShippingModeList.shippingModes}"> <c:if test="${shippingMode.code != 'PickupInStore'}"> <%-- Show all the shipping options available except for pickUp in Store --%> <%-- This block is to select the shipMode Id in the drop down box. If this shipMode is selected then set selected = true --%> <option shipModeCode="${shippingMode.code}" <c:if test="${(shippingMode.shippingModeId eq selectedShipModeId)}"> <c:set var="selectedShippingMode" value="${shippingMode.code}"/>selected="selected"</c:if> value="<c:out value='${shippingMode.shippingModeId}'/>"> <c:choose> <c:when test="${!empty shippingMode.description.description}"> <c:out value="${shippingMode.description.description}"/> </c:when> <c:otherwise> <c:out value="${shippingMode.code}"/> </c:otherwise> </c:choose> </option> </c:if> </c:forEach> </select>