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

Le filtrage des modes d'expédition applicables est basé sur les frais d'expédition estimés. Lorsqu'un mode d'expédition spécifique entraîne des frais d'expédition nuls pour un article de commande, ce mode d'expédition est ignoré. Les frais d'expédition estimés pour le mode d'expédition de chaque article de commande supposent que les frais d'expédition peuvent être déterminés par eux-mêmes. Les frais estimés supposent également que le mode d'expédition de chaque article de commande n'est pas affecté par les autres articles de commande dans la même commande. Par exemple, s'il y a une configuration de frais d'expédition au niveau de la commande, telle que 10,00 $ pour une commande, les frais d'expédition pour chaque article de commande dans ShippingMethod sont de 10,00 $. Les frais d'expédition pour l'ensemble de la commande dans la page Récapitulatif de la commande sont de 10,00 $. Le bean de données considère chaque article de commande comme une commande autonome et estime les frais d'expédition pour les articles de commande.

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

  1. 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.

  2. 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 :
      1. Open the Store Management tool.
      2. Dans le filtre de la vue de l'explorateur, cliquez sur Magasins.
      3. 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.
      4. Cliquez sur l'onglet Payer les achats.
      5. Activez la case à cocher Livraisons multiples.
      6. Cliquez sur Sauvegarder.
  3. 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>