Filtrado de modalidades de envío

En algunas ocasiones, es posible que una modalidad de envío no sea aplicable a todos los productos. Si elige no asociar una modalidad de envío con un producto, e no se aplica ningún cargo de envío a dicho producto. Puede filtrar las modalidades de envío aplicables personalizándolas según las instrucciones siguientes.

Procedimiento

Este procedimiento describe cómo personalizar el flujo de compra del escaparate. No describe cómo personalizar la creación de pedidos en HCL Commerce Accelerator.
  1. Consulte el bean de datos com.ibm.commerce.fulfillment.beans.OrderShippingModeListDataBean. Este bean de datos lista las modalidades de envío disponibles para un pedido. La tabla siguiente muestra los parámetros de entrada.
    Nombre: Descripción:
    order El OrderDataBean
    calculateShippingCharge Si este parámetro se establece en true, este bean de datos filtra las modalidades de envío que no son aplicables y calcula el cargo de envío de cada modalidad de envío. Si este parámetro se establece en false, este bean de datos devuelve la intersección de las modalidades de envío que están permitidas para cada artículo de pedido.
    CalculateShippingAdjustment Este parámetro solo entra en vigor si el parámetro calculateShippingCharge se establece en true. Si este parámetro se establece en true, este bean de datos añade el ajuste de envío del resultado de la promoción de envío mientras calcula el cargo de envío.
    resolveFulfillmentCenter Este parámetro solo entra en vigor si el parámetro calculateShippingCharge se establece en true. Cuando este parámetro se establece en true, este bean de datos resuelve los centros de despacho de pedidos de los artículos del pedido antes de calcular el cargo de envío. Este comportamiento se produce porque algunas configuraciones de cargo de envío están relacionadas con el centro de despacho de pedidos. En general este distintivo se puede establecer en true puesto que la configuración de envío casi siempre está relacionada con el centro de despacho de pedidos.
    checkAppliedItems

    De forma predeterminada, este parámetro se establece en true. En releases anteriores, STENCALUSG.USAGEFLAGS debía establecerse en 3 para filtrar modalidades de envío.

  2. Para cualquier modalidad de envío que devuelve OrderShippingModeListDataBean, se puede calcular un coste de envío.
  3. Cambie la función o el flujo de tienda para permitir una única dirección de envío y un único método de envío:
    • Cambie la función de tienda con la herramienta de Gestión de tiendas del Management Center:
      1. Open the Store Management tool.
      2. En el filtro de la vista de explorador, pulse Tiendas.
      3. En la lista de tiendas disponibles, pulse el botón derecho del ratón en la tienda que incluye los métodos de envío que desea cambiar. Pulse Abrir.
      4. Pulse la pestaña Pasar por caja.
      5. Borre el recuadro de selección Varios envíos.
      6. Pulse Guardar.

    OrderShippingModeListDataBean solo puede soportar el envío con una dirección y un método de envío para un pedido.

  4. Aplique OrderShippingModeListDataBean en el archivo JSP.
    Por ejemplo, cambie el archivo AdvancedOrderForm.jsp. Personalice el archivo JSP para seleccionar la modalidad de envío tal como se muestra en el siguiente fragmento de código:
    
    <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>
    
    Para la tienda Aurora, cambie el archivo SingleShipmentShippingMethodDetails.jsp. Personalice el archivo JSP para seleccionar la modalidad de envío tal como se muestra en el siguiente fragmento de código:
    <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>