[Erp5-report] r28443 - /erp5/trunk/products/ERP5/Document/Delivery.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Aug 18 16:53:06 CEST 2009
Author: luke
Date: Tue Aug 18 16:53:05 2009
New Revision: 28443
URL: http://svn.erp5.org?rev=28443&view=rev
Log:
- implementation of movement disconnection from delivery
- copyright update
Modified:
erp5/trunk/products/ERP5/Document/Delivery.py
Modified: erp5/trunk/products/ERP5/Document/Delivery.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Delivery.py?rev=28443&r1=28442&r2=28443&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Delivery.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/Delivery.py [utf8] Tue Aug 18 16:53:05 2009
@@ -1,6 +1,6 @@
##############################################################################
#
-# Copyright (c) 2002-2008 Nexedi SA and Contributors. All Rights Reserved.
+# Copyright (c) 2002-2009 Nexedi SA and Contributors. All Rights Reserved.
# Jean-Paul Smets-Solanes <jp at nexedi.com>
# Romain Courteaud <romain at nexedi.com>
#
@@ -900,3 +900,49 @@
return None
return findSpecialiseValue(self)
+ security.declareProtected( Permissions.ModifyPortalContent,
+ 'disconnectSimulationMovementList')
+ def disconnectSimulationMovementList(self, movement_list=None):
+ """Disconnects simulation movements from delivery's lines
+
+ Note: This is experimental code, do not use in production system
+
+ If movement_list is passed only those movements will be disconnected
+ from simulation.
+
+ If movements in movement_list do not belong to current
+ delivery they are silently ignored.
+
+ Returns list of disconnected Simulation Movements.
+
+ Known issues and open questions:
+ * how to protect disconnection from completed delivery?
+ * what to do if movements from movement_list do not belong to delivery?
+ * it is required to remove causality relation from delivery or delivery
+ lines??
+ """
+ delivery_movement_value_list = self.getMovementList()
+ if movement_list is not None:
+ movement_value_list = [self.restrictedTraverse(movement) for movement
+ in movement_list]
+ # only those how are in this delivery
+ movement_value_list = [movement_value for movement_value in
+ movement_value_list if movement_value
+ in delivery_movement_value_list]
+ else:
+ movement_value_list = delivery_movement_value_list
+
+ disconnected_simulation_movement_list = []
+ for movement_value in movement_value_list:
+ # Note: Relies on fact that is invoked, when simulation movements are
+ # indexed properly
+ for simulation_movement in movement_value \
+ .getDeliveryRelatedValueList(portal_type='Simulation Movement'):
+ simulation_movement.edit(
+ delivery = None,
+ delivery_ratio = None
+ )
+ disconnected_simulation_movement_list.append(
+ simulation_movement.getRelativeUrl())
+
+ return disconnected_simulation_movement_list
More information about the Erp5-report
mailing list