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

nobody at svn.erp5.org nobody at svn.erp5.org
Sat Sep 11 05:36:40 CEST 2010


Author: yo
Date: Sat Sep 11 05:36:39 2010
New Revision: 38277

URL: http://svn.erp5.org?rev=38277&view=rev
Log:
Rewrite the code to look up for current delivery, because it did not work when the list of movement group nodes is empty.

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=38277&r1=38276&r2=38277&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/OrderBuilder.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/OrderBuilder.py [utf8] Sat Sep 11 05:36:39 2010
@@ -301,8 +301,8 @@ class OrderBuilder(XMLObject, Amount, Pr
       new_property_dict.update(tmp_property_dict)
     return result, new_property_dict
 
-  def _findUpdatableObject(self, instance_list, movement_group_node_list,
-                           divergence_list):
+  def _findUpdatableObject(self, instance_list, current_movement_group_node,
+          movement_group_node_list, divergence_list):
     # FIXME this code may generate inconsistent results, because
     # MovementGroupNode.test can return anything else but the
     # property dict. So it would be better to use the test method
@@ -322,21 +322,16 @@ class OrderBuilder(XMLObject, Amount, Pr
             property_dict[k] = v
     else:
       # we want to check the original delivery first.
-      # so sort instance_list by that current is exists or not.
-      try:
-        current = movement_group_node_list[-1].getMovementList()[0].getDeliveryValue()
-        portal = self.getPortalObject()
-        while current != portal:
-          try:
-            instance_list.remove(current)
-          except ValueError:
-            pass
-          else:
-            instance_list.insert(0, current)
-            break
-          current = current.getParentValue()
-      except AttributeError:
-        pass
+      movement = current_movement_group_node.getMovementList()[0]
+      delivery_movement = movement.getDeliveryValue()
+      if delivery_movement is not None:
+        delivery = delivery_movement.getRootDeliveryValue()
+        try:
+          instance_list.remove(delivery)
+        except ValueError:
+          pass
+        else:
+          instance_list.insert(0, delivery)
       for instance_to_update in instance_list:
         result, property_dict = self._test(
           instance_to_update, movement_group_node_list, divergence_list)
@@ -436,7 +431,7 @@ class OrderBuilder(XMLObject, Amount, Pr
       # Test if we can update a existing delivery, or if we need to create
       # a new one
       delivery, property_dict = self._findUpdatableObject(
-        delivery_to_update_list, movement_group_node_list,
+        delivery_to_update_list, movement_group_node, movement_group_node_list,
         divergence_list)
 
       # if all deliveries are rejected in case of update, we update the
@@ -522,8 +517,8 @@ class OrderBuilder(XMLObject, Amount, Pr
       # Test if we can update an existing line, or if we need to create a new
       # one
       delivery_line, property_dict = self._findUpdatableObject(
-        delivery_line_to_update_list, movement_group_node_list,
-        divergence_list)
+        delivery_line_to_update_list, movement_group_node,
+        movement_group_node_list, divergence_list)
       if delivery_line is not None:
         update_existing_line = 1
         delivery_line_to_update_list.remove(delivery_line)
@@ -662,8 +657,8 @@ class OrderBuilder(XMLObject, Amount, Pr
         if not delivery_line.getCellKeyList(base_id=base_id):
           # update line
           dummy, property_dict = self._findUpdatableObject(
-            delivery_movement_to_update_list, movement_group_node_list,
-            divergence_list)
+            delivery_movement_to_update_list, movement_group_node,
+            movement_group_node_list, divergence_list)
           if delivery_movement_to_update_list:
             if update_existing_line:
               update_existing_movement = 1
@@ -674,8 +669,8 @@ class OrderBuilder(XMLObject, Amount, Pr
           object_to_update = delivery_line
         else:
           object_to_update, property_dict = self._findUpdatableObject(
-            delivery_movement_to_update_list, movement_group_node_list,
-            divergence_list)
+            delivery_movement_to_update_list, movement_group_node,
+            movement_group_node_list, divergence_list)
           if object_to_update is not None:
             # We update a existing cell
             # delivery_ratio of new related movement to this cell




More information about the Erp5-report mailing list