Filtrado de modalidades de envío a nivel de artículo de pedido
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 utilizar OrderItemShippingModeListDataBean para filtrar las modalidades de envío aplicables de un artículo de pedido o una matriz de artículos de pedido. Al utilizar el bean de datos, puede proporcionar cargos de envío estimados y ajustes de envío opcionales para cada modalidad de envío.
Por qué y cuándo se efectúa esta tarea
Las instrucciones siguientes describen cómo personalizar el flujo de compra del escaparate. No describen cómo personalizar la creación de pedidos en HCL Commerce Accelerator.
Procedimiento
-
Consulte el bean de datos com.ibm.commerce.fulfillment.beans.OrderShippingModeListDataBean. La tabla siguiente muestra los parámetros de entrada para este bean de datos.
Nombre: Descripción: orderItemId Utilice este parámetro para establecer 1 artículo de pedido en el bean de datos.
orderItemIds Utilice este parámetro para establecer una lista de artículos de pedido en el bean de datos.
allowableShippingModeIds Si este parámetro se establece en true, el bean de datos filtra una lista de las modalidades de envío aplicables. Si este parámetro se establece en false, el bean de datos devuelve la intersección de las modalidades de envío que están permitidas para cada artículo de pedido. Si el parámetro allowableShippingModeIds no se ha establecido, OrderItemShippingModeListDataBean recupera las modalidades que admiten los contratos.
calculateShippingCharge Si este parámetro se establece en true, el bean de datos filtra las modalidades de envío que no son aplicables y calcula el cargo para cada modalidad de envío. Si este parámetro se establece en false, el 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 entra en vigor cuando el parámetro calculateShippingCharge se establece en true. Si este parámetro se establece en true, el bean de datos añade el ajuste de envío del resultado de promoción de envío mientras se calcula el cargo de envío. resolveFulfillmentCenter Este parámetro entra en vigor cuando el parámetro calculateShippingCharge se establece en true. Cuando este parámetro se establece en true, el 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. Normalmente, puede establecer el valor de este distintivo en true puesto que la configuración de envío casi siempre se relaciona 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.
-
Cambie la función o el flujo de tienda para soportar varios métodos de envío:
- Cambie la función de tienda con la herramienta de Gestión de tiendas del Management Center:
- Open the Store Management tool.
- En el filtro de la vista de explorador, pulse Tiendas.
- 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.
- Pulse la pestaña Pasar por caja.
- Seleccione el recuadro de selección Varios envíos.
- Pulse Guardar.
- Cambie la función de tienda con la herramienta de Gestión de tiendas del Management Center:
-
Personalice el archivo JSP para utilizar OrderItemShippingModeListDataBean para seleccionar la modalidad de envío.
<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>
Para la tienda Aurora, cambie el archivo ShippingMethodDetails.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="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>