From 24ecca64ac9f549330895d356b6dc31fa3e3f154 Mon Sep 17 00:00:00 2001 From: Romain Courteaud <romain@nexedi.com> Date: Wed, 1 Jun 2005 15:27:40 +0000 Subject: [PATCH] Remove method updateTargetQuantityFromContainerQuantity. Add method isPacked. Remove flushActivity in _createDeliveryRule. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@3142 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Document/PackingList.py | 63 ++++++++++++++++++---------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/product/ERP5/Document/PackingList.py b/product/ERP5/Document/PackingList.py index 57615dbf2c..a34a542017 100755 --- a/product/ERP5/Document/PackingList.py +++ b/product/ERP5/Document/PackingList.py @@ -1,7 +1,8 @@ ############################################################################## # -# Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved. +# Copyright (c) 2002, 2005 Nexedi SARL and Contributors. All Rights Reserved. # Jean-Paul Smets-Solanes <jp@nexedi.com> +# Romain Courteaud <romain@nexedi.com> # # WARNING: This program as such is intended to be used by professional # programmers who take the whole responsability of assessing all potential @@ -32,6 +33,7 @@ from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface from Products.CMFCore.utils import getToolByName from Products.ERP5.Document.Delivery import Delivery +from zLOG import LOG class PackingList(Delivery): """ @@ -75,6 +77,7 @@ class PackingList(Delivery): , PropertySheet.DublinCore , PropertySheet.Task , PropertySheet.Arrow + , PropertySheet.Comment , PropertySheet.Movement ) @@ -94,48 +97,62 @@ class PackingList(Delivery): # Nothing to do if we are already simulated self._createDeliveryRule() - security.declareProtected(Permissions.ModifyPortalContent, '_createDeliveryRule') + security.declareProtected(Permissions.ModifyPortalContent,\ + '_createDeliveryRule') def _createDeliveryRule(self): # Return if draft or cancelled simulation_state if self.getSimulationState() in ('cancelled',): - # The applied rule should be cleaned up ie. empty all movements which have - # no confirmed children + # The applied rule should be cleaned up + # ie. empty all movements which have no confirmed children return # Otherwise, expand # Look up if existing applied rule - my_applied_rule_list = self.getCausalityRelatedValueList(portal_type='Applied Rule') + my_applied_rule_list = self.getCausalityRelatedValueList(\ + portal_type='Applied Rule') if len(my_applied_rule_list) == 0: - if self.isSimulated(): return # No need to create a DeliveryRule if we are already in the simulation process + if self.isSimulated(): + # No need to create a DeliveryRule + # if we are already in the simulation process + return # Create a new applied order rule (portal_rules.order_rule) portal_rules = getToolByName(self, 'portal_rules') portal_simulation = getToolByName(self, 'portal_simulation') - my_applied_rule = portal_rules.default_delivery_rule.constructNewAppliedRule(portal_simulation) + my_applied_rule = portal_rules.default_delivery_rule.\ + constructNewAppliedRule(portal_simulation) # Set causality my_applied_rule.setCausalityValue(self) - my_applied_rule.flushActivity(invoke = 1) # We must make sure this rule is indexed - # now in order not to create another one later + # We must make sure this rule is indexed + # now in order not to create another one later + # XXX do not use flushActivity anymore ! +# my_applied_rule.flushActivity(invoke = 1) elif len(my_applied_rule_list) == 1: # Re expand the rule if possible my_applied_rule = my_applied_rule_list[0] else: - # Delete first rules and re expand if possible - for my_applied_rule in my_applied_rule_list[0:-1]: - my_applied_rule.flushActivity(invoke=0) - my_applied_rule.aq_parent._delObject(my_applied_rule.getId()) - my_applied_rule = my_applied_rule_list[-1] + raise SimulationError, 'Packing list %s has more than one applied\ + rule.' % self.getRelativeUrl() # We are now certain we have a single applied rule # It is time to expand it self.activate().expand(my_applied_rule.getId()) - def updateTargetQuantityFromContainerQuantity(self): + ####################################################### + # Container computation + security.declareProtected(Permissions.View, 'isPacked') + def isPacked(self): """ - Update quantities in all lines from the container quantities + Returns 0 if all quantity resource on packing list line + are not in container. + It works only if a Resource is not on 2 PackingListLine. """ - movement_list = self.getMovementList() - for movement in movement_list : - # this is script dependent - movement.setTargetQuantity(movement.DeliveryCell_getContainedTargetQuantity()) - movement.flushActivity(invoke=1) - # finally edit in order to make automatic transition work in delivery_causality_workflow - self.edit() + explanation_uid = self.getUid() + for movement in self.getMovementList(): + + quantity = movement.getQuantity() + # XXX FIXME: script name hardcoded + packed_quantity = movement.Movement_getPackedQuantity() + + if quantity != packed_quantity: + return 0 + + return 1 -- 2.30.9