From c9a2fc292a22cc8c8010bdbc846ec44af1cc52a4 Mon Sep 17 00:00:00 2001
From: Romain Courteaud <romain@nexedi.com>
Date: Wed, 6 Apr 2005 08:38:47 +0000
Subject: [PATCH] Remove workflow methods.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@2809 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/Order.py | 167 ++++++++++++---------------------
 1 file changed, 58 insertions(+), 109 deletions(-)

diff --git a/product/ERP5/Document/Order.py b/product/ERP5/Document/Order.py
index b868fc97e4..2edf65ab04 100755
--- a/product/ERP5/Document/Order.py
+++ b/product/ERP5/Document/Order.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
@@ -40,10 +41,8 @@ class Order(Delivery):
     # CMF Type Definition
     meta_type = 'ERP5 Order'
     portal_type = 'Order'
-    add_permission = Permissions.AddPortalContent
-    isPortalContent = 1
-    isRADContent = 1
     isDelivery = 1
+    isAccountable = 0
 
     # Declarative security
     security = ClassSecurityInfo()
@@ -58,21 +57,18 @@ class Order(Delivery):
                       , PropertySheet.Arrow
                       , PropertySheet.Reference
                       , PropertySheet.TradeCondition
+                      , PropertySheet.PaymentCondition
+                      , PropertySheet.Comment
+                      , PropertySheet.Order
                       )
 
-    security.declarePrivate( '_edit' )
-    def _edit(self, REQUEST=None, force_update = 0, **kw):
-      Delivery._edit(self, REQUEST=REQUEST, force_update = force_update, **kw)
-      # We must expand our applied rule only if not confirmed
-      if self.getSimulationState() in self.getPortalPlannedOrderStateList():
-        self.updateAppliedRule() # This should be implemented with the interaction tool rather than with this hard coding
-
     def updateAppliedRule(self):
       if self.getSimulationState() not in self.getPortalDraftOrderStateList():
         # Nothing to do
         self._createOrderRule()
 
-    security.declareProtected(Permissions.AccessContentsInformation, 'isAccountable')
+    security.declareProtected(Permissions.AccessContentsInformation, \
+                                                   'isAccountable')
     def isAccountable(self):
       """
         Returns 1 if this needs to be accounted
@@ -84,22 +80,26 @@ class Order(Delivery):
     def _createOrderRule(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')
       LOG('Order._createOrderRule,my_applied_rule_list',0,my_applied_rule_list)
       if len(my_applied_rule_list) == 0:
         # 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_order_rule.constructNewAppliedRule(portal_simulation)
+        my_applied_rule = \
+           portal_rules.default_order_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
+# XXX        my_applied_rule.flushActivity(invoke = 1)
+        # We must make sure this rule is indexed
+        # now in order not to create another one later
       elif len(my_applied_rule_list) == 1:
         # Re expand the rule if possible
         my_applied_rule = my_applied_rule_list[0]
@@ -112,69 +112,22 @@ class Order(Delivery):
 
       # We are now certain we have a single applied rule
       # It is time to expand it
-      LOG('Order._createOrderRule,my_applied_rule.getPhysicalPath()',0,my_applied_rule.getPhysicalPath())
+      LOG('Order._createOrderRule,my_applied_rule.getPhysicalPath()',0, \
+                     my_applied_rule.getPhysicalPath())
       self.activate().expand(my_applied_rule.getId())
 
-    security.declareProtected(Permissions.ModifyPortalContent, 'autoPlan')
-    def _autoPlan(self):
-      """
-        Sets the order to auto_planned. The auto_plan state
-        is used to differentiate planned orders generated by
-        the planification system with planned orders depending
-        of a user decision
-      """
-      # self._createOrderRule()
-      # No simulation created at this point
-
-    autoPlan = WorkflowMethod(_autoPlan, id='auto_plan')
-
-    security.declareProtected(Permissions.ModifyPortalContent, 'plan')
-    def _plan(self):
-      """
-        Sets the order to planned
-      """
-      self._createOrderRule()
-
-    plan = WorkflowMethod(_plan, id='plan')
-
-    security.declareProtected(Permissions.ModifyPortalContent, 'order')
-    def _order(self):
-      """
-        Sets the order to ordered
-      """
-      # make sure it is planned
-      # then plan order simulation
-      self._createOrderRule()
-
-    order = WorkflowMethod(_order, id='order')
-
-    security.declareProtected(Permissions.ModifyPortalContent, 'confirm')
-    def _confirm(self):
-      """
-        Sets the order to ordered
-        (a Workflow Script is responsible of creating the delivery)
-
-        Confirm is still not creating deliveries XXX - check activities seriously to make sure
-        they are not flushed in case of error
-      """
-      LOG('Order._confirm starting... on',0,self.getPhysicalPath())
-      self._createOrderRule()
-      # At confirm stage, we create deliveries for this order
-      LOG('Order._confirm finished ._createOrderRule... on',0,self.getPhysicalPath())
-      self.activate(priority=4).buildDeliveryList()
-      LOG('Order._confirm finished activate of buildDeliveryList... on',0,self.getPhysicalPath())
-
-    confirm = WorkflowMethod(_confirm, 'confirm')
-
-    security.declareProtected(Permissions.ModifyPortalContent, 'buildDeliveryList')
+    security.declareProtected(Permissions.ModifyPortalContent, \
+                                                 'buildDeliveryList')
     def buildDeliveryList(self):
       # Make sure there is exactly one 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) != 1:
         # Make sure we have an order rule
         self._createOrderRule()
       # Make sure there is exactly one 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) != 1:
         # XXX This is an error
         raise CategoryError, "Order has no or too many order rule(s)"
@@ -184,73 +137,69 @@ class Order(Delivery):
         raise CategoryError, "Order has None order rule"
       # Make sure applied rule has been reindexed
       # Make sure there are no more activities on this order related to expand
-      self.flushActivity(invoke=0, method_id='expand') # Make sure expand is finished
-                                                       # We are expanding but are not allowed to if state wrong...
-                                                       # (ex. confirmed)
-      applied_rule.expand(force = 1)                   # thus, we mist force expand of applied order rule
+      self.flushActivity(invoke=0, method_id='expand') 
+      # Make sure expand is finished
+      # We are expanding but are not allowed to if state wrong...
+      # (ex. confirmed)
+      applied_rule.expand(force = 1)                   
+      # thus, we mist force expand of applied order rule
       applied_rule.flushActivity(invoke=1)
       # Build delivery list on applied rule
       # Currently, we build it 'again' but we should actually only build
       # deliveries for orphaned movements
       if self.getPortalType() == 'Production Order' :
-        delivery_list = self.ProductionOrder_buildDeliveryList() # Coramy specific moved to portal_simulation
+        delivery_list = self.ProductionOrder_buildDeliveryList() 
+        # Coramy specific moved to portal_simulation
       #else:
       elif self.getPortalType() in ('Purchase Order', 'Sale Order') :
-        delivery_list = self.Order_createPackingList() # Coramy specific should be moved to portal_simulation
-      #self.informDeliveryList(delivery_list=delivery_list, comment=repr(delivery_list)) # XXX Not ready
-
-    def _informDeliveryList(self, delivery_list=None, comment=None):
-      pass
-
-    informDeliveryList = WorkflowMethod(_informDeliveryList, id='informDeliveryList')
-
-    security.declareProtected(Permissions.ModifyPortalContent, 'cancel')
-    def cancel(self):
-      """
-        Sets the order to ordered
-      """
-      # No need to create an order rule
-      # Should actually delete form simulation XXX
-      self.activate().applyToOrderRelatedMovement(method_id = 'expand')
-
-    cancel = WorkflowMethod(cancel)
+        delivery_list = self.Order_createPackingList() 
+        # Coramy specific should be moved to portal_simulation
+      #self.informDeliveryList(delivery_list=delivery_list, 
+      # comment=repr(delivery_list)) # XXX Not ready
 
-    def applyToOrderRelatedMovement(self, portal_type='Simulation Movement', method_id = 'expand'):
+    def applyToOrderRelatedMovement(self, portal_type='Simulation Movement', \
+                                    method_id = 'expand'):
       """
         Warning: does not work if it was not catalogued immediately
       """
       for my_simulation_movement in self.getOrderRelatedValueList(
-                                                portal_type = 'Simulation Movement'):
+                                         portal_type='Simulation Movement'):
           # And apply
           getattr(my_simulation_movement, method_id)()
-      for m in self.contentValues(filter={'portal_type': self.getPortalMovementTypeList()}):
+      for m in self.contentValues(filter={'portal_type': \
+                                          self.getPortalMovementTypeList()}):
         # Find related in simulation
         for my_simulation_movement in m.getOrderRelatedValueList(
-                                                portal_type = 'Simulation Movement'):
+                                            portal_type='Simulation Movement'):
           # And apply
           getattr(my_simulation_movement, method_id)()
         for c in m.contentValues(filter={'portal_type': 'Delivery Cell'}):
           for my_simulation_movement in c.getOrderRelatedValueList(
-                                                portal_type = 'Simulation Movement'):
+                                            portal_type='Simulation Movement'):
             # And apply
             getattr(my_simulation_movement, method_id)()
 
-    def applyToOrderRelatedAppliedRule(self, method_id = 'expand'):
-      my_applied_rule = self.getCausalityRelatedValue(portal_type = 'Applied Rule')
+    def applyToOrderRelatedAppliedRule(self, method_id='expand'):
+      my_applied_rule = self.getCausalityRelatedValue( \
+                                      portal_type='Applied Rule')
       getattr(my_applied_rule.getObject(), method_id)()
 
 
-    security.declareProtected(Permissions.AccessContentsInformation, 'getOrderRelatedMovementList')
+    security.declareProtected(Permissions.AccessContentsInformation, \
+                              'getOrderRelatedMovementList')
     def getOrderRelatedMovementList(self):
       """
-        Returns simulation movements related to a cell or line of this order
+        Returns simulation movements related to a cell or line 
+        of this order
       """
-      result = self.getOrderRelatedValueList( portal_type = 'Simulation Movement')
-      for m in self.contentValues(filter={'portal_type': self.getPortalMovementTypeList()}):
+      result = self.getOrderRelatedValueList(portal_type='Simulation Movement')
+      for m in self.contentValues(filter={'portal_type': \
+                                          self.getPortalMovementTypeList()}):
         # Find related in simulation
-        result += m.getOrderRelatedValueList( portal_type = 'Simulation Movement')
+        result += m.getOrderRelatedValueList(portal_type='Simulation Movement')
         for c in m.contentValues(filter={'portal_type': 'Delivery Cell'}):
-          result += c.getOrderRelatedValueList( portal_type = 'Simulation Movement')
+          result += c.getOrderRelatedValueList( \
+                                             portal_type='Simulation Movement')
       return result
 
     def reindexObject(self, *k, **kw):
-- 
2.30.9