[Erp5-report] r38191 yo - /erp5/trunk/products/ERP5/Document/OrderBuilder.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Sep 8 12:04:13 CEST 2010
Author: yo
Date: Wed Sep 8 12:04:11 2010
New Revision: 38191
URL: http://svn.erp5.org?rev=38191&view=rev
Log:
No need to record updated delivery lines by using a destructive manipulation on the list of delivery lines to be updated.
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=38191&r1=38190&r2=38191&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/OrderBuilder.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/OrderBuilder.py [utf8] Wed Sep 8 12:04:11 2010
@@ -430,13 +430,18 @@ class OrderBuilder(XMLObject, Amount, Pr
property_dict.setdefault('edit_order', ('stop_date', 'start_date'))
delivery.edit(**property_dict)
- # Then, create delivery line
+ # Then, create delivery lines
+ delivery_line_portal_type = self.getDeliveryLinePortalType()
+ delivery_line_to_update_list = []
+ for line in delivery.contentValues(portal_type=delivery_line_portal_type):
+ delivery_line_to_update_list.append(line)
for grouped_node in movement_group_node.getGroupList():
self._processDeliveryLineGroup(
delivery,
grouped_node,
self.getDeliveryLineMovementGroupList()[1:],
divergence_list=divergence_list,
+ delivery_line_to_update_list=delivery_line_to_update_list,
activate_kw=activate_kw,
force_update=force_update)
delivery_list.append(delivery)
@@ -458,6 +463,7 @@ class OrderBuilder(XMLObject, Amount, Pr
def _processDeliveryLineGroup(self, delivery, movement_group_node,
collect_order_list, movement_group_node_list=None,
divergence_list=None,
+ delivery_line_to_update_list=None,
activate_kw=None, force_update=0, **kw):
"""
Build delivery line from a list of movement on a delivery
@@ -466,6 +472,8 @@ class OrderBuilder(XMLObject, Amount, Pr
movement_group_node_list = []
if divergence_list is None:
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]
@@ -478,19 +486,18 @@ class OrderBuilder(XMLObject, Amount, Pr
collect_order_list[1:],
movement_group_node_list=movement_group_node_list,
divergence_list=divergence_list,
+ delivery_line_to_update_list=delivery_line_to_update_list,
activate_kw=activate_kw,
force_update=force_update)
else:
# Test if we can update an existing line, or if we need to create a new
# one
- delivery_line_to_update_list = [x for x in delivery.contentValues(
- portal_type=self.getDeliveryLinePortalType()) if \
- not self._isUpdated(x, 'line')]
delivery_line, property_dict = self._findUpdatableObject(
delivery_line_to_update_list, movement_group_node_list,
divergence_list)
if delivery_line is not None:
update_existing_line = 1
+ delivery_line_to_update_list.remove(delivery_line)
else:
# Create delivery line
update_existing_line = 0
@@ -499,12 +506,15 @@ class OrderBuilder(XMLObject, Amount, Pr
movement_group_node.getMovementList(),
activate_kw)
# Put properties on delivery line
- self._setUpdated(delivery_line, 'line')
if property_dict:
property_dict.setdefault('edit_order', ('stop_date', 'start_date'))
delivery_line.edit(force_update=1, **property_dict)
if movement_group_node.getCurrentMovementGroup().isBranch():
+ delivery_line_portal_type = self.getDeliveryLinePortalType()
+ nested_delivery_line_to_update_list = []
+ for line in delivery_line.contentValues(portal_type=delivery_line_portal_type):
+ nested_delivery_line_to_update_list.append(line)
for grouped_node in movement_group_node.getGroupList():
self._processDeliveryLineGroup(
delivery_line,
@@ -512,6 +522,7 @@ class OrderBuilder(XMLObject, Amount, Pr
collect_order_list[1:],
movement_group_node_list=movement_group_node_list,
divergence_list=divergence_list,
+ delivery_line_to_update_list=nested_delivery_line_to_update_list,
activate_kw=activate_kw,
force_update=force_update)
return
More information about the Erp5-report
mailing list