📄 shoppinglistservices.java
字号:
GenericValue userLogin = (GenericValue) context.get("userLogin"); Locale locale = (Locale) context.get("locale"); boolean beganTransaction = false; try { beganTransaction = TransactionUtil.begin(); GenericValue orderHeader = null; orderHeader = delegator.findByPrimaryKey("OrderHeader", UtilMisc.toMap("orderId", orderId)); if (orderHeader == null) { return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderUnableToLocateOrder", UtilMisc.toMap("orderId",orderId), locale)); } String productStoreId = orderHeader.getString("productStoreId"); if (UtilValidate.isEmpty(shoppingListId)) { // create a new shopping list if (partyId == null) { partyId = userLogin.getString("partyId"); } Map serviceCtx = UtilMisc.toMap("userLogin", userLogin, "partyId", partyId, "productStoreId", productStoreId, "listName", "List Created From Order #" + orderId); if (UtilValidate.isNotEmpty(shoppingListTypeId)) { serviceCtx.put("shoppingListTypeId", shoppingListTypeId); } Map newListResult = null; try { newListResult = dispatcher.runSync("createShoppingList", serviceCtx); } catch (GenericServiceException e) { Debug.logError(e, "Problems creating new ShoppingList", module); return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderUnableToCreateNewShoppingList",locale)); } // check for errors if (ServiceUtil.isError(newListResult)) { return ServiceUtil.returnError(ServiceUtil.getErrorMessage(newListResult)); } // get the new list id if (newListResult != null) { shoppingListId = (String) newListResult.get("shoppingListId"); } } GenericValue shoppingList = null; shoppingList = delegator.findByPrimaryKey("ShoppingList", UtilMisc.toMap("shoppingListId", shoppingListId)); if (shoppingList == null) { return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderNoShoppingListAvailable",locale)); } shoppingListTypeId = shoppingList.getString("shoppingListTypeId"); OrderReadHelper orh = new OrderReadHelper(orderHeader); if (orh == null) { return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderUnableToLoadOrderReadHelper", UtilMisc.toMap("orderId",orderId), locale)); } List orderItems = orh.getOrderItems(); Iterator i = orderItems.iterator(); while (i.hasNext()) { GenericValue orderItem = (GenericValue) i.next(); if (orderItem.get("productId") != null) { Map ctx = UtilMisc.toMap("userLogin", userLogin, "shoppingListId", shoppingListId, "productId", orderItem.get("productId"), "quantity", orderItem.get("quantity")); Map serviceResult = null; try { serviceResult = dispatcher.runSync("createShoppingListItem", ctx); } catch (GenericServiceException e) { Debug.logError(e, module); } if (serviceResult == null || ServiceUtil.isError(serviceResult)) { return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderUnableToAddItemToShoppingList",UtilMisc.toMap("shoppingListId",shoppingListId), locale)); } } } if ("SLT_AUTO_REODR".equals(shoppingListTypeId)) { GenericValue paymentPref = EntityUtil.getFirst(orh.getPaymentPreferences()); GenericValue shipGroup = EntityUtil.getFirst(orh.getOrderItemShipGroups()); Map slCtx = new HashMap(); slCtx.put("shipmentMethodTypeId", shipGroup.get("shipmentMethodTypeId")); slCtx.put("carrierRoleTypeId", shipGroup.get("carrierRoleTypeId")); slCtx.put("carrierPartyId", shipGroup.get("carrierPartyId")); slCtx.put("contactMechId", shipGroup.get("contactMechId")); slCtx.put("paymentMethodId", paymentPref.get("paymentMethodId")); slCtx.put("currencyUom", orh.getCurrency()); slCtx.put("startDateTime", startDate); slCtx.put("endDateTime", endDate); slCtx.put("frequency", frequency); slCtx.put("intervalNumber", interval); slCtx.put("isActive", "Y"); slCtx.put("shoppingListId", shoppingListId); slCtx.put("userLogin", userLogin); Map slUpResp = null; try { slUpResp = dispatcher.runSync("updateShoppingList", slCtx); } catch (GenericServiceException e) { Debug.logError(e, module); } if (slUpResp == null || ServiceUtil.isError(slUpResp)) { return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderUnableToUpdateShoppingListInformation",UtilMisc.toMap("shoppingListId",shoppingListId), locale)); } } Map result = ServiceUtil.returnSuccess(); result.put("shoppingListId", shoppingListId); return result; } catch (GenericEntityException e) { try { // only rollback the transaction if we started one... TransactionUtil.rollback(beganTransaction, "Error making shopping list from order", e); } catch (GenericEntityException e2) { Debug.logError(e2, "[GenericDelegator] Could not rollback transaction: " + e2.toString(), module); } String errMsg = "Error while creating new shopping list based on order" + e.toString(); Debug.logError(e, errMsg, module); return ServiceUtil.returnError(errMsg); } finally { try { // only commit the transaction if we started one... this will throw an exception if it fails TransactionUtil.commit(beganTransaction); } catch (GenericEntityException e) { Debug.logError(e, "Could not commit transaction for creating new shopping list based on order", module); } } } public static ShoppingCart makeShoppingListCart(LocalDispatcher dispatcher, GenericValue shoppingList, Locale locale) { GenericDelegator delegator = dispatcher.getDelegator(); ShoppingCart listCart = null; if (shoppingList != null && shoppingList.get("productStoreId") != null) { String productStoreId = shoppingList.getString("productStoreId"); String currencyUom = shoppingList.getString("currencyUom"); if (currencyUom == null) { GenericValue productStore = ProductStoreWorker.getProductStore(productStoreId, delegator); if (productStore == null) { return null; } currencyUom = productStore.getString("defaultCurrencyUomId"); } if (locale == null) { locale = Locale.getDefault(); } List items = null; try { items = shoppingList.getRelated("ShoppingListItem", UtilMisc.toList("shoppingListItemSeqId")); } catch (GenericEntityException e) { Debug.logError(e, module); } if (UtilValidate.isNotEmpty(items)) { listCart = new ShoppingCart(delegator, productStoreId, locale, currencyUom); listCart.setOrderPartyId(shoppingList.getString("partyId")); Iterator i = items.iterator(); while (i.hasNext()) { GenericValue shoppingListItem = (GenericValue) i.next(); String productId = shoppingListItem.getString("productId"); Double quantity = shoppingListItem.getDouble("quantity"); Timestamp reservStart = shoppingListItem.getTimestamp("reservStart"); double reservLength = 0.00; if (shoppingListItem.get("reservLength") != null) reservLength = shoppingListItem.getDouble("reservLength").doubleValue(); double reservPersons = 0.00; if (shoppingListItem.get("reservPersons") != null) reservPersons = shoppingListItem.getDouble("reservPersons").doubleValue(); if (UtilValidate.isNotEmpty(productId) && quantity != null) { // list items are noted in the shopping cart String listId = shoppingListItem.getString("shoppingListId"); String itemId = shoppingListItem.getString("shoppingListItemSeqId"); Map attributes = UtilMisc.toMap("shoppingListId", listId, "shoppingListItemSeqId", itemId); try { listCart.addOrIncreaseItem(productId, quantity.doubleValue(), reservStart, reservLength, reservPersons, null, attributes, null, dispatcher); } catch (CartItemModifyException e) { Debug.logError(e, "Unable to add product to List Cart - " + productId, module); } catch (ItemNotFoundException e) { Debug.logError(e, "Product not found - " + productId, module); } } } if (listCart.size() > 0) { if (shoppingList.get("paymentMethodId") != null) { listCart.addPayment(shoppingList.getString("paymentMethodId")); } if (shoppingList.get("contactMechId") != null) { listCart.setShippingContactMechId(0, shoppingList.getString("contactMechId")); } if (shoppingList.get("shipmentMethodTypeId") != null) { listCart.setShipmentMethodTypeId(0, shoppingList.getString("shipmentMethodTypeId")); } if (shoppingList.get("carrierPartyId") != null) { listCart.setCarrierPartyId(0, shoppingList.getString("carrierPartyId")); } } } } return listCart; } public static ShoppingCart makeShoppingListCart(LocalDispatcher dispatcher, String shoppingListId, Locale locale) { GenericDelegator delegator = dispatcher.getDelegator(); GenericValue shoppingList = null; try { shoppingList = delegator.findByPrimaryKey("ShoppingList", UtilMisc.toMap("shoppingListId", shoppingListId)); } catch (GenericEntityException e) { Debug.logError(e, module); } return makeShoppingListCart(dispatcher, shoppingList, locale); } /** * * Given an orderId, this service will look through all its OrderItems and for each shoppingListItemId * and shoppingListItemSeqId, update the quantity purchased in the ShoppingListItem entity. Used for * tracking how many of shopping list items are purchased. This service is mounted as a seca on storeOrder. * * @param ctx - The DispatchContext that this service is operating in * @param context - Map containing the input parameters * @return Map with the result of the service, the output parameters */ public static Map updateShoppingListQuantitiesFromOrder(DispatchContext ctx, Map context) { Map result = new HashMap(); GenericDelegator delegator = ctx.getDelegator(); String orderId = (String) context.get("orderId"); try { List orderItems = delegator.findByAnd("OrderItem", UtilMisc.toMap("orderId", orderId)); Iterator iter = orderItems.iterator(); while (iter.hasNext()) { GenericValue orderItem = (GenericValue) iter.next(); String shoppingListId = (String) orderItem.getString("shoppingListId"); String shoppingListItemSeqId = (String) orderItem.getString("shoppingListItemSeqId"); if ((shoppingListId != null) && (shoppingListId.length() > 0)) { GenericValue shoppingListItem=delegator.findByPrimaryKey("ShoppingListItem", UtilMisc.toMap("shoppingListId", shoppingListId, "shoppingListItemSeqId", shoppingListItemSeqId)); if (shoppingListItem != null) { Double quantityPurchased = shoppingListItem.getDouble("quantityPurchased"); Double orderQuantity = orderItem.getDouble("quantity"); if (quantityPurchased != null) { shoppingListItem.set("quantityPurchased", new Double(orderQuantity.doubleValue() + quantityPurchased.doubleValue())); }else{ shoppingListItem.set("quantityPurchased", orderQuantity); } shoppingListItem.store(); } } } } catch (Exception e) { Debug.log("updateShoppingListQuantitiesFromOrder error:"+e.getMessage()); } return result; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -