svn commit: r516192 - /ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r516192 - /ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java

sichen
Author: sichen
Date: Thu Mar  8 14:09:25 2007
New Revision: 516192

URL: http://svn.apache.org/viewvc?view=rev&rev=516192
Log:
Fix potential bug with drop ship when a user accidentally selects a supplier party for a ship group but none of the items are actually drop shipped by that supplier

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=516192&r1=516191&r2=516192
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java Thu Mar  8 14:09:25 2007
@@ -3650,38 +3650,51 @@
                         cart.setBillFromVendorPartyId(supplierPartyId);
                         cart.setOrderPartyId(supplierPartyId);
                         // Get the items associated to it and create po
-                        Iterator items = orh.getValidOrderItems(shipGroup.getString("shipGroupSeqId")).iterator();
-                        while (items.hasNext()) {
-                            GenericValue item = (GenericValue)items.next();
-                            try {
-                                int itemIndex = cart.addOrIncreaseItem(item.getString("productId"),
-                                                                       null, // amount
-                                                                       item.getDouble("quantity").doubleValue(),
-                                                                       null, null, null, // reserv
-                                                                       item.getTimestamp("shipBeforeDate"),
-                                                                       item.getTimestamp("shipAfterDate"),
-                                                                       null, null, null,
-                                                                       null, null, null,
-                                                                       null, dispatcher);
-                                ShoppingCartItem sci = cart.findCartItem(itemIndex);
-                                sci.setAssociatedOrderId(orderId);
-                                sci.setAssociatedOrderItemSeqId(item.getString("orderItemSeqId"));
-                                sci.setOrderItemAssocTypeId("DROP_SHIPMENT");
-                                // TODO: we should consider also the ship group in the association between sales and purchase orders
-                            } catch(Exception e) {
-                                ServiceUtil.returnError("The following error occurred creating drop shipments for order [" + orderId + "]: " + e.getMessage());
+                        List items = orh.getValidOrderItems(shipGroup.getString("shipGroupSeqId"));
+                        if (!UtilValidate.isEmpty(items)) {
+                            Iterator itemsIt = items.iterator();
+                            while (itemsIt.hasNext()) {
+                                GenericValue item = (GenericValue)itemsIt.next();
+                                try {
+                                    int itemIndex = cart.addOrIncreaseItem(item.getString("productId"),
+                                                                           null, // amount
+                                                                           item.getDouble("quantity").doubleValue(),
+                                                                           null, null, null, // reserv
+                                                                           item.getTimestamp("shipBeforeDate"),
+                                                                           item.getTimestamp("shipAfterDate"),
+                                                                           null, null, null,
+                                                                           null, null, null,
+                                                                           null, dispatcher);
+                                    ShoppingCartItem sci = cart.findCartItem(itemIndex);
+                                    sci.setAssociatedOrderId(orderId);
+                                    sci.setAssociatedOrderItemSeqId(item.getString("orderItemSeqId"));
+                                    sci.setOrderItemAssocTypeId("DROP_SHIPMENT");
+                                    // TODO: we should consider also the ship group in the association between sales and purchase orders
+                                } catch(Exception e) {
+                                    ServiceUtil.returnError("The following error occurred creating drop shipments for order [" + orderId + "]: " + e.getMessage());
+                                }
                             }
                         }
-                        // set checkout options
-                        cart.setDefaultCheckoutOptions(dispatcher);
-                        // the shipping address is the one of the customer
-                        cart.setShippingContactMechId(shipGroup.getString("contactMechId"));
-                        // create the order
-                        CheckOutHelper coh = new CheckOutHelper(dispatcher, delegator, cart);
-                        Map resultOrderMap = coh.createOrder(userLogin);
-                        String purchaseOrderId = (String)resultOrderMap.get("orderId");
 
-                        // TODO: associate the new purchase order with the sales order (ship group)
+                        // If there are indeed items to drop ship, then create the purchase order
+                        if (!UtilValidate.isEmpty(cart.items())) {
+                            // set checkout options
+                            cart.setDefaultCheckoutOptions(dispatcher);
+                            // the shipping address is the one of the customer
+                            cart.setShippingContactMechId(shipGroup.getString("contactMechId"));
+                            // create the order
+                            CheckOutHelper coh = new CheckOutHelper(dispatcher, delegator, cart);
+                            Map resultOrderMap = coh.createOrder(userLogin);
+                            String purchaseOrderId = (String)resultOrderMap.get("orderId");
+    
+                            // TODO: associate the new purchase order with the sales order (ship group)
+                        } else {
+                            // if there are no items to drop ship, then clear out the supplier partyId
+                            Debug.logWarning("No drop ship items found for order [" + shipGroup.getString("orderId") + "] and ship group [" + shipGroup.getString("shipGroupSeqId") + "] and supplier party [" + shipGroup.getString("supplierPartyId") + "].  Supplier party information will be cleared for this ship group", module);
+                            shipGroup.set("supplierPartyId", null);
+                            shipGroup.store();
+                    
+                        }
                     }
                 }
             }