Filtrage des modes d'expédition
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 filtrer les modes d'expédition applicables en personnalisant selon les instructions suivantes.
Procedure
Cette procédure décrit comment personnaliser le flux d'achats en vitrine. Il ne décrit pas comment personnaliser la création de commande dans le HCL Commerce Accelerator.
-
Reportez-vous au bean de données com.ibm.commerce.fulfillment.beans.OrderShippingModeListDataBean. Le tableau suivant affiche les paramètres d'entrée. Le tableau suivant montre les paramètres d'entrée.
Nom Description order L'OrderDataBean calculateShippingCharge Si ce paramètre est défini sur true, ce bean de données filtre les modes d'expédition qui ne sont pas applicables et estime les frais d'expédition de chaque mode d'expédition. Si ce paramètre est défini sur false, ce bean de données renvoie l'intersection des modes d'expédition autorisés pour chaque article de commande. calculateShippingAdjustment Ce paramètre n'entre en vigueur que si le paramètre calculateShippingCharge est défini sur true. Si ce paramètre est défini sur true, ce 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 n'entre en vigueur que si le paramètre calculateShippingCharge est défini sur true. Lorsque ce paramètre est défini sur true, ce 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, cet indicateur peut être défini 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.
- Pour tout mode d'expédition renvoyé par le OrderShippingModeListDataBean, des frais d'expédition peuvent être calculés.
-
Modifiez le flux ou la fonction du magasin pour permettre une seule adresse d'expédition et une seule méthode 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 Open.
- Cliquez sur l'onglet Payer les achats.
- Désactivez la case à cocher Livraisons multiples.
- Cliquez sur Sauvegarder.
Le OrderShippingModeListDataBean ne peut prendre en charge l'expédition qu'avec une seule adresse et un mode d'expédition pour une commande.
- Modifiez la fonction de magasin avec l'outil Gestion du magasin dans Management Center :
-
Appliquez le OrderShippingModeListDataBean dans le fichier JSP.
Par exemple, modifiez le fichier AdvancedOrderForm.jsp. Personnalisez le fichier JSP pour sélectionner le mode d'expédition comme indiqué dans l'extrait de code suivant :
<wcbase:useBean id="orderShippingModeList" classname="com.ibm.commerce.fulfillment.beans.OrderShippingModeListDataBean"> <c:set target="${orderShippingModeList}" property="order" value="${orderBean}"/> <c:set target="${orderShippingModeList}" property="calculateShippingCharge" value="true"/> <c:set target="${orderShippingModeList}" property="resolveFulfillmentCenter" value="true"/> <c:set target="${orderShippingModeList}" property="calculateShippingAdjustment" value="true"/> </wcbase:useBean> //the orderShippingModeList contains all the filtered shipping modes <table> <tr> <th>ShipMode ID</th> <th>Shipping Mode</th> <th>Shipping Charge</th> </tr> <c:forEach items="${orderShippingModeList.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="${orderShippingModeList.shippingCharges[status.index]}"/></td> </tr> </c:forEach> </table>Pour le magasin Aurora, modifiez le fichierSingleShipmentShippingMethodDetails.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="singleShipmentShippingMode" id="singleShipmentShippingMode" onchange="JavaScript:setCurrentId(this.id); CheckoutHelperJS.updateShipModeForAllItems(this)"> <wcbase:useBean id="orderShippingModeList" classname="com.ibm.commerce.fulfillment.beans.OrderShippingModeListDataBean"> <c:set target="${orderShippingModeList}" property="order" value="${orderBean}"/> <c:set target="${orderShippingModeList}" property="calculateShippingCharge" value="true"/> <c:set target="${orderShippingModeList}" property="resolveFulfillmentCenter" value="true"/> <c:set target="${orderShippingModeList}" property="calculateShippingAdjustment" value="true"/> </wcbase:useBean> <c:forEach var="shippingMode" items="${orderShippingModeList.shippingModes}"> <c:if test="${shippingMode.code != 'PickupInStore' && (!b2bStore || (b2bStore && shipModeMap[shippingMode.shippingModeId] == param.recordSetTotal))}"> <%-- 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 blockShipModeId)}"> <c:set var="selectedShippingMode" value="${shippingMode.shippingModeId}"/>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>