[Erp5-report] r42339 jm - /erp5/trunk/products/ERP5Legacy/OrderBuilder.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Jan 14 14:00:31 CET 2011


Author: jm
Date: Fri Jan 14 14:00:31 2011
New Revision: 42339

URL: http://svn.erp5.org?rev=42339&view=rev
Log:
Fix ERP5Legacy.OrderBuilder._findUpdatableObject

- fix getting delivery value from a simulation movement
- revert 38277 partially, since it only worked when working at delivery level

Modified:
    erp5/trunk/products/ERP5Legacy/OrderBuilder.py

Modified: erp5/trunk/products/ERP5Legacy/OrderBuilder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Legacy/OrderBuilder.py?rev=42339&r1=42338&r2=42339&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Legacy/OrderBuilder.py [utf8] (original)
+++ erp5/trunk/products/ERP5Legacy/OrderBuilder.py [utf8] Fri Jan 14 14:00:31 2011
@@ -29,6 +29,7 @@
 
 from AccessControl import ClassSecurityInfo
 from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type.Base import Base
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Type.Core.Predicate import Predicate
 from Products.ERP5.Document.Amount import Amount
@@ -330,18 +331,19 @@ class OrderBuilder(XMLObject, Amount, Pr
       # XXX in the case of Order Builder, the movement is not always
       # related to simulation, thus it might not have the delivery category.
       # Possibly, this code should be overridden by DeliveryBuilder.
-      if getattr(aq_base(movement), 'getDeliveryValue', None) is not None:
-        delivery_movement = movement.getDeliveryValue()
+      try:
+        delivery = movement.getDeliveryValue()
+      except AttributeError:
+        pass
       else:
-        delivery_movement = None
-      if delivery_movement is not None:
-        delivery = delivery_movement.getRootDeliveryValue()
-        try:
-          instance_list.remove(delivery)
-        except ValueError:
-          pass
-        else:
-          instance_list.insert(0, delivery)
+        while isinstance(delivery, Base):
+          try:
+            instance_list.remove(delivery)
+          except ValueError:
+            pass
+          else:
+            instance_list.insert(0, delivery)
+          delivery = delivery.getParentValue()
       for instance_to_update in instance_list:
         result, property_dict = self._test(
           instance_to_update, movement_group_node_list, divergence_list)



More information about the Erp5-report mailing list