From 088f7b96bee24bc5a5e9d245b24bcde9ebf502cc Mon Sep 17 00:00:00 2001 From: Kazuhiko Shiozaki <kazuhiko@nexedi.com> Date: Mon, 25 Jan 2010 15:33:37 +0000 Subject: [PATCH] support BPM. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@31940 20353a03-c40f-0410-a6d1-a30d3c3de9de --- .../DocumentTemplateItem/InvoicingRule.py | 11 ++++++--- .../DocumentTemplateItem/OrderRule.py | 23 ++++++++++++------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py b/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py index eddabb1b66..4ddaf0e40b 100644 --- a/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py +++ b/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py @@ -36,6 +36,7 @@ from Products.ERP5.Document.Predicate import Predicate from Products.ERP5.mixin.rule import RuleMixin from Products.ERP5.mixin.movement_collection_updater import \ MovementCollectionUpdaterMixin +from Products.ERP5.mixin.movement_generator import MovementGeneratorMixin from Products.ERP5.MovementCollectionDiff import _getPropertyAndCategoryList # XXX this class should be moved to Rule.py once new simulation is fully @@ -125,7 +126,7 @@ class InvoicingRule(Rule): # or destination. return (movement.getSource() is None or movement.getDestination() is None) -class InvoicingRuleMovementGenerator(object): +class InvoicingRuleMovementGenerator(MovementGeneratorMixin): def getGeneratedMovementList(self, context, movement_list=None, rounding=False): """ @@ -135,8 +136,9 @@ class InvoicingRuleMovementGenerator(object): i.e. business paths are not taken into account. """ ret = [] - for movement in [context.getParentValue(),]: - kw = _getPropertyAndCategoryList(movement) + for input_movement, business_path in self \ + ._getInputMovementAndPathTupleList(context): + kw = self._getPropertyAndCategoryList(input_movement, business_path) kw.update({'order':None,'delivery':None}) simulation_movement = context.newContent( portal_type=RuleMixin.movement_type, @@ -144,3 +146,6 @@ class InvoicingRuleMovementGenerator(object): **kw) ret.append(simulation_movement) return ret + + def _getInputMovementList(self, context): + return [context.getParentValue(),] diff --git a/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py b/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py index d623ac2b2d..09a383b355 100644 --- a/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py +++ b/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py @@ -36,6 +36,7 @@ from Products.ERP5.Document.Predicate import Predicate from Products.ERP5.mixin.rule import RuleMixin from Products.ERP5.mixin.movement_collection_updater import \ MovementCollectionUpdaterMixin +from Products.ERP5.mixin.movement_generator import MovementGeneratorMixin from Products.ERP5.MovementCollectionDiff import _getPropertyAndCategoryList # XXX this class should be moved to Rule.py once new simulation is fully @@ -128,7 +129,7 @@ class OrderRule(Rule): # or destination. return (movement.getSource() is None or movement.getDestination() is None) -class OrderRuleMovementGenerator(object): +class OrderRuleMovementGenerator(MovementGeneratorMixin): def getGeneratedMovementList(self, context, movement_list=None, rounding=False): """ @@ -137,17 +138,23 @@ class OrderRuleMovementGenerator(object): XXX This implementation is very primitive, and does not support BPM, i.e. business paths are not taken into account. """ - order = context.getDefaultCausalityValue() - if order is None: - return [] ret = [] - for movement in order.getMovementList( - portal_type=order.getPortalOrderMovementTypeList()): - kw = _getPropertyAndCategoryList(movement) + for input_movement, business_path in self \ + ._getInputMovementAndPathTupleList(context): + kw = self._getPropertyAndCategoryList(input_movement, business_path) simulation_movement = context.newContent( portal_type=RuleMixin.movement_type, temp_object=True, - order_value=movement, + order_value=input_movement, **kw) ret.append(simulation_movement) return ret + + def _getInputMovementList(self, context): + """Input movement list comes from order""" + order = context.getDefaultCausalityValue() + if order is None: + return [] + else: + return order.getMovementList( + portal_type=order.getPortalOrderMovementTypeList()) -- 2.30.9