上下文
在ATG Commerce中 - 要进入结账,需要调用执行moveToPurchaseInfo
管道链的CartModifierFormHandler
的{{1}}方法并检查订单/商业项目并验证它们。然后,如果是,将显示结帐登录页面
用户尚未登录。否则,用户将被定向到发货页面。
要求: 即使在发货后,用户也应该可以删除/更新购物车中的各种商品。
问题:
如果我想在此阶段删除/ updateQuanity,我是否只需要拨打“moveToPurchaseInfo
”或者如果我必须在购物车中进行任何修改后再次拨打“RemoveItemFromOrder
”?是否有其他替代方案可满足上述要求?
答案 0 :(得分: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进行更正
答案 1 :(得分:0)
ATG Commerce Checkout中有一个更新订单管道链。 因此,每当订单发生变化时,在结账时或结账前,都会调用更新订单链。
现在,如果你看到你的行动: 从订单更新订单/删除项目 - 两者都是更新操作。因此,每次执行此类更新时,调用Update Order Pipeline Chain应该足够了。但是,请确保在调用更新订单链之前重新定价订单(repriceOrderChain)。如果继续深入研究addItemToOrder方法,您将知道如何调用两个管道链来更新订单。
因此,您不需要使用 moveToPurchaseInfo ,因为您第一次移动到Checkout时已经在Checkout特定参数上检查了您的订单。现在,您所做的唯一更改是更新数量/删除项目。
PS:如果发现任何不同,请回复。
此致 Gaurav E