You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2007/05/24 18:20:46 UTC
svn commit: r541347 -
/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
Author: jacopoc
Date: Thu May 24 09:20:42 2007
New Revision: 541347
URL: http://svn.apache.org/viewvc?view=rev&rev=541347
Log:
Refactored code and added new comments in the loadCartForUpdate(...) and saveUpdatedCartToOrder(...) methods to make everything more readable: no functional changes.
Modified:
ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java?view=diff&rev=541347&r1=541346&r2=541347
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java Thu May 24 09:20:42 2007
@@ -3147,12 +3147,47 @@
}
/*
- * Warning: this method will remove all the existing reservations of the order
+ * Warning: loadCartForUpdate(...) and saveUpdatedCartToOrder(...) must always
+ * be used together in this sequence.
+ * In fact loadCartForUpdate(...) will remove or cancel data associated to the order,
* before returning the ShoppingCart object; for this reason, the cart
- * must be stored back using the method saveUpdatedCartToOrder(...).
+ * must be stored back using the method saveUpdatedCartToOrder(...),
+ * because that method will recreate the data.
*/
private static ShoppingCart loadCartForUpdate(LocalDispatcher dispatcher, GenericDelegator delegator, GenericValue userLogin, String orderId) throws GeneralException {
- // find ship group associations
+ // load the order into a shopping cart
+ Map loadCartResp = null;
+ try {
+ loadCartResp = dispatcher.runSync("loadCartFromOrder", UtilMisc.toMap("orderId", orderId,
+ "skipInventoryChecks", Boolean.TRUE, // the items are already reserved, no need to check again
+ "skipProductChecks", Boolean.TRUE, // the products are already in the order, no need to check their validity now
+ "userLogin", userLogin));
+ } catch (GenericServiceException e) {
+ Debug.logError(e, module);
+ throw new GeneralException(e.getMessage());
+ }
+ if (ServiceUtil.isError(loadCartResp)) {
+ throw new GeneralException(ServiceUtil.getErrorMessage(loadCartResp));
+ }
+
+ ShoppingCart cart = (ShoppingCart) loadCartResp.get("shoppingCart");
+ if (cart == null) {
+ throw new GeneralException("Error loading shopping cart from order [" + orderId + "]");
+ } else {
+ cart.setOrderId(orderId);
+ }
+
+ // Now that the cart is loaded, all the data that will be re-created
+ // when the method saveUpdatedCartToOrder(...) will be called, are
+ // removed and cancelled:
+ // - inventory reservations are cancelled
+ // - promotional items are cancelled
+ // - order payments are released (cancelled)
+ // - offline non received payments are cancelled
+ // - promotional, shipping and tax adjustments are removed
+
+ // Inventory reservations
+ // find ship group associations
List shipGroupAssocs = null;
try {
shipGroupAssocs = delegator.findByAnd("OrderItemShipGroupAssoc", UtilMisc.toMap("orderId", orderId));
@@ -3160,7 +3195,6 @@
Debug.logError(e, module);
throw new GeneralException(e.getMessage());
}
-
// cancel existing inventory reservations
if (shipGroupAssocs != null) {
Iterator iri = shipGroupAssocs.iterator();
@@ -3186,105 +3220,6 @@
}
}
- // load the order into a shopping cart
- Map loadCartResp = null;
- try {
- loadCartResp = dispatcher.runSync("loadCartFromOrder", UtilMisc.toMap("orderId", orderId, "skipInventoryChecks", Boolean.TRUE, "skipProductChecks", Boolean.TRUE, "userLogin", userLogin));
- } catch (GenericServiceException e) {
- Debug.logError(e, module);
- throw new GeneralException(e.getMessage());
- }
- if (ServiceUtil.isError(loadCartResp)) {
- throw new GeneralException(ServiceUtil.getErrorMessage(loadCartResp));
- }
-
- ShoppingCart cart = (ShoppingCart) loadCartResp.get("shoppingCart");
- if (cart == null) {
- throw new GeneralException("Error loading shopping cart from order [" + orderId + "]");
- } else {
- cart.setOrderId(orderId);
- }
-
- return cart;
- }
-
- private static void saveUpdatedCartToOrder(LocalDispatcher dispatcher, GenericDelegator delegator, ShoppingCart cart, Locale locale, GenericValue userLogin, String orderId) throws GeneralException {
- // get/set the shipping estimates. if it's a SALES ORDER, then return an error if there are no ship estimates
- int shipGroups = cart.getShipGroupSize();
- for (int gi = 0; gi < shipGroups; gi++) {
- String shipmentMethodTypeId = cart.getShipmentMethodTypeId(gi);
- String carrierPartyId = cart.getCarrierPartyId(gi);
- Debug.log("Getting ship estimate for group #" + gi + " [" + shipmentMethodTypeId + " / " + carrierPartyId + "]", module);
- Map result = ShippingEvents.getShipGroupEstimate(dispatcher, delegator, cart, gi);
- if (("SALES_ORDER".equals(cart.getOrderType())) && (ServiceUtil.isError(result))) {
- Debug.logError(ServiceUtil.getErrorMessage(result), module);
- throw new GeneralException(ServiceUtil.getErrorMessage(result));
- }
-
- Double shippingTotal = (Double) result.get("shippingTotal");
- if (shippingTotal == null) {
- shippingTotal = new Double(0.00);
- }
- cart.setItemShipGroupEstimate(shippingTotal.doubleValue(), gi);
- }
-
- // calc the sales tax
- CheckOutHelper coh = new CheckOutHelper(dispatcher, delegator, cart);
- try {
- coh.calcAndAddTax();
- } catch (GeneralException e) {
- Debug.logError(e, module);
- throw new GeneralException(e.getMessage());
- }
-
- // validate the payment methods
- Map validateResp = coh.validatePaymentMethods();
- if (ServiceUtil.isError(validateResp)) {
- throw new GeneralException(ServiceUtil.getErrorMessage(validateResp));
- }
-
- // get the new orderItems, adjustments, shipping info and payments from the cart
- List toStore = new LinkedList();
- toStore.addAll(cart.makeOrderItems());
- toStore.addAll(cart.makeAllAdjustments());
- toStore.addAll(cart.makeAllShipGroupInfos());
- toStore.addAll(cart.makeAllOrderPaymentInfos());
-
- // set the orderId & other information on all new value objects
- List dropShipGroupIds = FastList.newInstance(); // this list will contain the ids of all the ship groups for drop shipments (no reservations)
- Iterator tsi = toStore.iterator();
- while (tsi.hasNext()) {
- GenericValue valueObj = (GenericValue) tsi.next();
- valueObj.set("orderId", orderId);
- if ("OrderItemShipGroup".equals(valueObj.getEntityName())) {
- // ship group
- if (valueObj.get("carrierRoleTypeId") == null) {
- valueObj.set("carrierRoleTypeId", "CARRIER");
- }
- if (!UtilValidate.isEmpty(valueObj.get("supplierPartyId"))) {
- dropShipGroupIds.add(valueObj.getString("shipGroupSeqId"));
- }
- } else if ("OrderAdjustment".equals(valueObj.getEntityName())) {
- // shipping / tax adjustment(s)
- if (valueObj.get("orderItemSeqId") == null || valueObj.getString("orderItemSeqId").length() == 0) {
- valueObj.set("orderItemSeqId", DataModelConstants.SEQ_ID_NA);
- }
- valueObj.set("orderAdjustmentId", delegator.getNextSeqId("OrderAdjustment"));
- valueObj.set("createdDate", UtilDateTime.nowTimestamp());
- valueObj.set("createdByUserLogin", userLogin.getString("userLoginId"));
- } else if ("OrderPaymentPreference".equals(valueObj.getEntityName())) {
- if (valueObj.get("orderPaymentPreferenceId") == null) {
- valueObj.set("orderPaymentPreferenceId", delegator.getNextSeqId("OrderPaymentPreference"));
- valueObj.set("createdDate", UtilDateTime.nowTimestamp());
- valueObj.set("createdByUserLogin", userLogin.getString("userLoginId"));
- }
- if (valueObj.get("statusId") == null) {
- valueObj.set("statusId", "PAYMENT_NOT_RECEIVED");
- }
- }
- }
- Debug.log("To Store Contains: " + toStore, module);
-
// cancel promo items -- if the promo still qualifies it will be added by the cart
List promoItems = null;
try {
@@ -3372,6 +3307,86 @@
Debug.logError(e, module);
throw new GeneralException(e.getMessage());
}
+
+ return cart;
+ }
+
+ private static void saveUpdatedCartToOrder(LocalDispatcher dispatcher, GenericDelegator delegator, ShoppingCart cart, Locale locale, GenericValue userLogin, String orderId) throws GeneralException {
+ // get/set the shipping estimates. if it's a SALES ORDER, then return an error if there are no ship estimates
+ int shipGroups = cart.getShipGroupSize();
+ for (int gi = 0; gi < shipGroups; gi++) {
+ String shipmentMethodTypeId = cart.getShipmentMethodTypeId(gi);
+ String carrierPartyId = cart.getCarrierPartyId(gi);
+ Debug.log("Getting ship estimate for group #" + gi + " [" + shipmentMethodTypeId + " / " + carrierPartyId + "]", module);
+ Map result = ShippingEvents.getShipGroupEstimate(dispatcher, delegator, cart, gi);
+ if (("SALES_ORDER".equals(cart.getOrderType())) && (ServiceUtil.isError(result))) {
+ Debug.logError(ServiceUtil.getErrorMessage(result), module);
+ throw new GeneralException(ServiceUtil.getErrorMessage(result));
+ }
+
+ Double shippingTotal = (Double) result.get("shippingTotal");
+ if (shippingTotal == null) {
+ shippingTotal = new Double(0.00);
+ }
+ cart.setItemShipGroupEstimate(shippingTotal.doubleValue(), gi);
+ }
+
+ // calc the sales tax
+ CheckOutHelper coh = new CheckOutHelper(dispatcher, delegator, cart);
+ try {
+ coh.calcAndAddTax();
+ } catch (GeneralException e) {
+ Debug.logError(e, module);
+ throw new GeneralException(e.getMessage());
+ }
+
+ // validate the payment methods
+ Map validateResp = coh.validatePaymentMethods();
+ if (ServiceUtil.isError(validateResp)) {
+ throw new GeneralException(ServiceUtil.getErrorMessage(validateResp));
+ }
+
+ // get the new orderItems, adjustments, shipping info and payments from the cart
+ List toStore = new LinkedList();
+ toStore.addAll(cart.makeOrderItems());
+ toStore.addAll(cart.makeAllAdjustments());
+ toStore.addAll(cart.makeAllShipGroupInfos());
+ toStore.addAll(cart.makeAllOrderPaymentInfos(dispatcher));
+
+ // set the orderId & other information on all new value objects
+ List dropShipGroupIds = FastList.newInstance(); // this list will contain the ids of all the ship groups for drop shipments (no reservations)
+ Iterator tsi = toStore.iterator();
+ while (tsi.hasNext()) {
+ GenericValue valueObj = (GenericValue) tsi.next();
+ valueObj.set("orderId", orderId);
+ if ("OrderItemShipGroup".equals(valueObj.getEntityName())) {
+ // ship group
+ if (valueObj.get("carrierRoleTypeId") == null) {
+ valueObj.set("carrierRoleTypeId", "CARRIER");
+ }
+ if (!UtilValidate.isEmpty(valueObj.get("supplierPartyId"))) {
+ dropShipGroupIds.add(valueObj.getString("shipGroupSeqId"));
+ }
+ } else if ("OrderAdjustment".equals(valueObj.getEntityName())) {
+ // shipping / tax adjustment(s)
+ if (valueObj.get("orderItemSeqId") == null || valueObj.getString("orderItemSeqId").length() == 0) {
+ valueObj.set("orderItemSeqId", DataModelConstants.SEQ_ID_NA);
+ }
+ valueObj.set("orderAdjustmentId", delegator.getNextSeqId("OrderAdjustment"));
+ valueObj.set("createdDate", UtilDateTime.nowTimestamp());
+ valueObj.set("createdByUserLogin", userLogin.getString("userLoginId"));
+ } else if ("OrderPaymentPreference".equals(valueObj.getEntityName())) {
+ if (valueObj.get("orderPaymentPreferenceId") == null) {
+ valueObj.set("orderPaymentPreferenceId", delegator.getNextSeqId("OrderPaymentPreference"));
+ valueObj.set("createdDate", UtilDateTime.nowTimestamp());
+ valueObj.set("createdByUserLogin", userLogin.getString("userLoginId"));
+ }
+ if (valueObj.get("statusId") == null) {
+ valueObj.set("statusId", "PAYMENT_NOT_RECEIVED");
+ }
+ }
+ }
+ Debug.log("To Store Contains: " + toStore, module);
// store the new items/adjustments
try {