|
Author: jaz
Date: Mon Feb 14 19:00:09 2011 New Revision: 1070606 URL: http://svn.apache.org/viewvc?rev=1070606&view=rev Log: sometimes just updating order items is not enough, we need the ability to delete the old items before adding in the items currently in the cart; in cases where cancelling an item is not acceptable, this minor fix makes this functionality available if desired (not enabled by default); to enable pass the deleteItems boolean parameter as TRUE Modified: ofbiz/trunk/applications/order/servicedef/services.xml ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java Modified: ofbiz/trunk/applications/order/servicedef/services.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/services.xml?rev=1070606&r1=1070605&r2=1070606&view=diff ============================================================================== --- ofbiz/trunk/applications/order/servicedef/services.xml (original) +++ ofbiz/trunk/applications/order/servicedef/services.xml Mon Feb 14 19:00:09 2011 @@ -342,6 +342,7 @@ under the License. <attribute name="orderId" type="String" mode="INOUT" optional="false"/> <attribute name="shoppingCart" type="org.ofbiz.order.shoppingcart.ShoppingCart" mode="IN" optional="false"/> <attribute name="calcTax" type="Boolean" mode="IN" optional="true" default-value="true"/> + <attribute name="deleteItems" type="Boolean" mode="IN" optional="true" default-value="false"/> <!-- <attribute name="locale" type="" mode="IN" optional="false"/> --> <attribute name="changeMap" type="Map" mode="IN" optional="false"/> </service> 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?rev=1070606&r1=1070605&r2=1070606&view=diff ============================================================================== --- ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java (original) +++ ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java Mon Feb 14 19:00:09 2011 @@ -3494,7 +3494,7 @@ public class OrderServices { "itemCommentMap", UtilMisc.<String, Object>toMap("changeComments", changeComments)); // save all the updated information try { - saveUpdatedCartToOrder(dispatcher, delegator, cart, locale, userLogin, orderId, changeMap, calcTax); + saveUpdatedCartToOrder(dispatcher, delegator, cart, locale, userLogin, orderId, changeMap, calcTax, false); } catch (GeneralException e) { return ServiceUtil.returnError(e.getMessage()); } @@ -3702,7 +3702,7 @@ public class OrderServices { // save all the updated information try { - saveUpdatedCartToOrder(dispatcher, delegator, cart, locale, userLogin, orderId, UtilMisc.<String, Object>toMap("itemReasonMap", itemReasonMap, "itemCommentMap", itemCommentMap), calcTax); + saveUpdatedCartToOrder(dispatcher, delegator, cart, locale, userLogin, orderId, UtilMisc.<String, Object>toMap("itemReasonMap", itemReasonMap, "itemCommentMap", itemCommentMap), calcTax, false); } catch (GeneralException e) { return ServiceUtil.returnError(e.getMessage()); } @@ -3923,6 +3923,7 @@ public class OrderServices { ShoppingCart cart = (ShoppingCart) context.get("shoppingCart"); Map<String, Object> changeMap = UtilGenerics.checkMap(context.get("changeMap")); Locale locale = (Locale) context.get("locale"); + Boolean deleteItems = (Boolean) context.get("deleteItems"); Boolean calcTax = (Boolean) context.get("calcTax"); if (calcTax == null) { calcTax = Boolean.TRUE; @@ -3930,7 +3931,7 @@ public class OrderServices { Map<String, Object> result = null; try { - saveUpdatedCartToOrder(dispatcher, delegator, cart, locale, userLogin, orderId, changeMap, calcTax); + saveUpdatedCartToOrder(dispatcher, delegator, cart, locale, userLogin, orderId, changeMap, calcTax, deleteItems); result = ServiceUtil.returnSuccess(); //result.put("shoppingCart", cart); } catch (GeneralException e) { @@ -3942,7 +3943,7 @@ public class OrderServices { return result; } - private static void saveUpdatedCartToOrder(LocalDispatcher dispatcher, Delegator delegator, ShoppingCart cart, Locale locale, GenericValue userLogin, String orderId, Map<String, Object> changeMap, boolean calcTax) throws GeneralException { + private static void saveUpdatedCartToOrder(LocalDispatcher dispatcher, Delegator delegator, ShoppingCart cart, Locale locale, GenericValue userLogin, String orderId, Map<String, Object> changeMap, boolean calcTax, boolean deleteItems) 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++) { @@ -4052,6 +4053,15 @@ public class OrderServices { toRemove.addAll(existingPromoCodes); toRemove.addAll(existingPromoUses); + if (deleteItems) { + // flag to delete existing order items + try { + toRemove.addAll(delegator.findByAnd("OrderItem", "orderId", orderId)); + } catch (GenericEntityException e) { + Debug.logError(e, module); + } + } + // set the orderId & other information on all new value objects List<String> dropShipGroupIds = FastList.newInstance(); // this list will contain the ids of all the ship groups for drop shipments (no reservations) Iterator<GenericValue> tsi = toStore.iterator(); |
| Free forum by Nabble | Edit this page |
