[Erp5-report] r27968 - /erp5/trunk/products/ERP5/Document/Movement.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jul 6 12:46:01 CEST 2009


Author: luke
Date: Mon Jul  6 12:45:55 2009
New Revision: 27968

URL: http://svn.erp5.org?rev=27968&view=rev
Log:
 - enable BPM related isFrozen checking, only if BPM was used to generate movement

Modified:
    erp5/trunk/products/ERP5/Document/Movement.py

Modified: erp5/trunk/products/ERP5/Document/Movement.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Movement.py?rev=27968&r1=27967&r2=27968&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Movement.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/Movement.py [utf8] Mon Jul  6 12:45:55 2009
@@ -497,25 +497,33 @@
                             'isFrozen')
   def isFrozen(self):
     """
-    Returns the frozen status of this movemnt.
+    Returns the frozen status of this movement.
     a movement in started, stopped, delivered is automatically frozen.
     If frozen is locally set to '0', we must check for a parent set to '1', in
     which case, we want the children to be frozen as well.
-    """
-    # XXX Hardcoded
-    # Maybe, we should use getPortalCurrentInventoryStateList
-    # and another portal method for cancelled (and deleted)
-#     LOG("Movement, isFrozen", DEBUG, "Hardcoded state list")
-    if self.getSimulationState() in ('stopped', 'delivered', 'cancelled'):
-      return 1
+
+    BPM evaluation allows to set frozen state list per Business Path.
+    """
+    business_path = self.getCausalityValue(portal_type='Business Path')
+    if business_path is None:
+      # XXX Hardcoded
+      # Maybe, we should use getPortalCurrentInventoryStateList
+      # and another portal method for cancelled (and deleted)
+      #     LOG("Movement, isFrozen", DEBUG, "Hardcoded state list")
+      if self.getSimulationState() in ('stopped', 'delivered', 'cancelled'):
+        return 1
+    else:
+      # conditional BPM enabled frozen state check
+      LOG("Movement.isFrozen", WARNING, "%s is using BPM experimental \
+          evaluation" % self.getPath())
+      # BPM dynamic configuration
+      if self.getSimulationState() in business_path.getFrozenStateList():
+        return True
+
+    # manually frozen
     if self._baseIsFrozen() == 0:
       self._baseSetFrozen(None)
-    return self._baseGetFrozen() or 0
-    # Future implementation - for information
-    path = self.getCausalityValue()
-    if path is not None:
-      return self.getSimulationState() in path.getCompletedSimulationStateList()
-    return False
+    return self._baseGetFrozen() or False
 
   security.declareProtected( Permissions.AccessContentsInformation,
                              'getExplanation')




More information about the Erp5-report mailing list