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();
+                    
+                        }
                     }
                 }
             }


Reply via email to