1

上下文: 在 ATG Commerce 中 - 要进入结帐,需要调用执行管道链moveToPurchaseInfo的方法并检查订单/商务项目并验证它们。然后,如果用户尚未登录,将显示结帐登录页面。否则用户将被引导到运输页面。CartModifierFormHandlermoveToPurchaseInfo

要求: 即使在进入发货页面后,用户也应该能够删除/更新购物车中的商品数量。

问题: 如果我想在这个阶段删除/updateQuanity,我只需要调用' RemoveItemFromOrder'还是在购物车中进行任何修改后我必须moveToPurchaseInfo再次调用“”?满足上述要求的任何其他选择?

4

2 回答 2

0

解决 CartModifierFormhandler 你可以做这样的事情

String[] skuIds = { "sku10011"};
    CartModifierFormHandler cmfh = (CartModifierFormHandler) ServletUtil            .getCurrentRequest().resolveName("/atg/commerce/order/purchase/CartModifierFormHandler");
    cmfh.setCatalogRefIds(skuIds);
    cmfh.setProductId("prod10010");
    cmfh.setQuantity(12);
    cmfh.handleAddItemToOrder(ServletUtil.getCurrentRequest(),
            ServletUtil.getCurrentResponse());
    order = cmfh.getOrder();
DynamoHttpServletRequest request = ServletUtil.getCurrentRequest();

        request.setParameter("sku2", "13");

        // Set the new quantity for the commerce item being updated.
        cmfh.setCheckForChangedQuantity(true);
        DynamoHttpServletResponse response = request.getResponse();
        cmfh.handleSetOrder(request, response);

        List<CommerceItem> commerceItem = order.getCommerceItems();
        double quantity = commerceItem.get(0).getQuantity();

        assertEquals(13, quantity, 0);

@Vihung 进行更正

于 2014-12-16T18:10:56.017 回答
0

ATG Commerce Checkout 中有一个更新订单管道链。因此,无论何时,无论是在结账期间还是结账之前,订单发生变化,都会调用更新订单链。

现在,如果您看到您的操作:更新订单/从订单中删除项目 - 两者都是更新操作。因此,每次进行此类更新时,调用 Update Order Pipeline Chain 就足够了。但是,请确保在调用更新订单链之前对订单重新定价 (repriceOrderChain)。如果你继续挖掘 addItemToOrder 方法,你就会知道如何调用两条管道链来更新订单。

因此,您不需要使用moveToPurchaseInfo,因为当您第一次移至 Checkout 时,您的订单已经在 Checkout 特定参数上进行了检查。现在您要做的唯一更改是更新数量/删除项目。

PS:如果您发现任何不同之处,请回复。

问候, Gaurav E

于 2015-02-11T07:35:50.003 回答