[Erp5-report] r38258 yo - /erp5/trunk/products/ERP5/Document/OrderBuilder.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Sep 10 12:43:33 CEST 2010


Author: yo
Date: Fri Sep 10 12:43:33 2010
New Revision: 38258

URL: http://svn.erp5.org?rev=38258&view=rev
Log:
Fix a bug that _process* add movement_group_node into movement_group_node_list even when they should not. The fix requires that movement_group_node_list be prepared by the caller instead of the callee, because it is not feasible to detect how it is called from the callee perfectly.

Modified:
    erp5/trunk/products/ERP5/Document/OrderBuilder.py

Modified: erp5/trunk/products/ERP5/Document/OrderBuilder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/OrderBuilder.py?rev=38258&r1=38257&r2=38258&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/OrderBuilder.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/OrderBuilder.py [utf8] Fri Sep 10 12:43:33 2010
@@ -413,8 +413,6 @@ class OrderBuilder(XMLObject, Amount, Pr
       movement_group_node_list = []
     if divergence_list is None:
       divergence_list = []
-    # do not use 'append' or '+=' because they are destructive.
-    movement_group_node_list = movement_group_node_list + [movement_group_node]
     # Parameter initialization
     if delivery_to_update_list is None:
       delivery_to_update_list = []
@@ -423,15 +421,17 @@ class OrderBuilder(XMLObject, Amount, Pr
     if collect_order_list:
       # Get sorted movement for each delivery
       for grouped_node in movement_group_node.getGroupList():
+        # do not use 'append' or '+=' because they are destructive.
+        new_movement_group_node_list = movement_group_node_list + [grouped_node]
         new_delivery_list = self._processDeliveryGroup(
-                              delivery_module,
-                              grouped_node,
-                              collect_order_list[1:],
-                              movement_group_node_list=movement_group_node_list,
-                              delivery_to_update_list=delivery_to_update_list,
-                              divergence_list=divergence_list,
-                              activate_kw=activate_kw,
-                              force_update=force_update)
+                delivery_module,
+                grouped_node,
+                collect_order_list[1:],
+                movement_group_node_list=new_movement_group_node_list,
+                delivery_to_update_list=delivery_to_update_list,
+                divergence_list=divergence_list,
+                activate_kw=activate_kw,
+                force_update=force_update)
         delivery_list.extend(new_delivery_list)
         force_update = 0
     else:
@@ -470,6 +470,7 @@ class OrderBuilder(XMLObject, Amount, Pr
                                 delivery,
                                 grouped_node,
                                 self.getDeliveryLineMovementGroupList()[1:],
+                                movement_group_node_list=[grouped_node],
                                 divergence_list=divergence_list,
                                 delivery_line_to_update_list=delivery_line_to_update_list,
                                 activate_kw=activate_kw,
@@ -504,17 +505,17 @@ class OrderBuilder(XMLObject, Amount, Pr
       divergence_list = []
     if delivery_line_to_update_list is None:
       delivery_line_to_update_list = []
-    # do not use 'append' or '+=' because they are destructive.
-    movement_group_node_list = movement_group_node_list + [movement_group_node]
 
     if collect_order_list and not movement_group_node.getCurrentMovementGroup().isBranch():
       # Get sorted movement for each delivery line
       for grouped_node in movement_group_node.getGroupList():
+        # do not use 'append' or '+=' because they are destructive.
+        new_movement_group_node_list = movement_group_node_list + [grouped_node]
         self._processDeliveryLineGroup(
           delivery,
           grouped_node,
           collect_order_list[1:],
-          movement_group_node_list=movement_group_node_list,
+          movement_group_node_list=new_movement_group_node_list,
           divergence_list=divergence_list,
           delivery_line_to_update_list=delivery_line_to_update_list,
           activate_kw=activate_kw,
@@ -550,7 +551,7 @@ class OrderBuilder(XMLObject, Amount, Pr
             delivery_line,
             grouped_node,
             collect_order_list[1:],
-            movement_group_node_list=movement_group_node_list,
+            movement_group_node_list=[grouped_node],
             divergence_list=divergence_list,
             delivery_line_to_update_list=nested_delivery_line_to_update_list,
             activate_kw=activate_kw,
@@ -581,6 +582,7 @@ class OrderBuilder(XMLObject, Amount, Pr
                                     delivery_line,
                                     grouped_node,
                                     self.getDeliveryCellMovementGroupList()[1:],
+                                    movement_group_node_list=[grouped_node],
                                     update_existing_line=update_existing_line,
                                     divergence_list=divergence_list,
                                     delivery_movement_to_update_list=delivery_movement_to_update_list,
@@ -589,11 +591,9 @@ class OrderBuilder(XMLObject, Amount, Pr
       else:
         self._processDeliveryCellGroup(
                                   delivery_line,
-                                  # FIXME passing current movement group node
-                                  # has bad side effect, so the logic must
-                                  # be corrected.
                                   movement_group_node,
                                   [],
+                                  movement_group_node_list=[],
                                   update_existing_line=update_existing_line,
                                   divergence_list=divergence_list,
                                   delivery_movement_to_update_list=[delivery_line],
@@ -628,17 +628,16 @@ class OrderBuilder(XMLObject, Amount, Pr
       delivery_movement_to_update_list = []
     if divergence_list is None:
       divergence_list = []
-    # do not use 'append' or '+=' because they are destructive.
-    movement_group_node_list = movement_group_node_list + [movement_group_node]
 
     if collect_order_list:
       # Get sorted movement for each delivery line
       for grouped_node in movement_group_node.getGroupList():
+        new_movement_group_node_list = movement_group_node_list + [grouped_node]
         self._processDeliveryCellGroup(
           delivery_line,
           grouped_node,
           collect_order_list[1:],
-          movement_group_node_list=movement_group_node_list,
+          movement_group_node_list=new_movement_group_node_list,
           update_existing_line=update_existing_line,
           divergence_list=divergence_list,
           delivery_movement_to_update_list=delivery_movement_to_update_list,




More information about the Erp5-report mailing list