[Erp5-report] r33255 kazuhiko - in /erp5/trunk/bt5/erp5_simulation: DocumentTemplateItem/ bt/
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Mar 2 10:44:21 CET 2010
Author: kazuhiko
Date: Tue Mar 2 10:44:19 2010
New Revision: 33255
URL: http://svn.erp5.org?rev=33255&view=rev
Log:
rename simulation rules according to the new naming convention.
Added:
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRootSimulationRule.py
- copied, changed from r33063, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliverySimulationRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRootSimulationRule.py
- copied, changed from r33063, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceSimulationRule.py
- copied, changed from r33249, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionSimulationRule.py
- copied, changed from r33249, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRootSimulationRule.py
- copied, changed from r33063, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentSimulationRule.py
- copied, changed from r33249, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelSimulationRule.py
- copied, changed from r33249, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelRule.py
Removed:
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentRule.py
erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelRule.py
Modified:
erp5/trunk/bt5/erp5_simulation/bt/revision
erp5/trunk/bt5/erp5_simulation/bt/template_document_id_list
Copied: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRootSimulationRule.py (from r33063, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRule.py)
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRootSimulationRule.py?p2=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRootSimulationRule.py&p1=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRule.py&r1=33063&r2=33255&rev=33255&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRootSimulationRule.py [utf8] Tue Mar 2 10:44:19 2010
@@ -38,7 +38,7 @@
MovementCollectionUpdaterMixin
from Products.ERP5.mixin.movement_generator import MovementGeneratorMixin
-class DeliveryRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
+class DeliveryRootSimulationRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
"""
Delivery Rule object make sure an Delivery in the simulation
is consistent with the real delivery
@@ -46,8 +46,8 @@
WARNING: what to do with movement split ?
"""
# CMF Type Definition
- meta_type = 'ERP5 Delivery Rule'
- portal_type = 'Delivery Rule'
+ meta_type = 'ERP5 Delivery Root Simulation Rule'
+ portal_type = 'Delivery Root Simulation Rule'
# Declarative security
security = ClassSecurityInfo()
Removed: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRule.py
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRule.py?rev=33254&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliveryRule.py (removed)
@@ -1,157 +1,0 @@
-##############################################################################
-#
-# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsibility of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# guarantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-##############################################################################
-"""
-XXX This file is experimental for new simulation implementation, and
-will replace DeliveryRule.
-"""
-
-import zope.interface
-from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet, interfaces
-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
-
-class DeliveryRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
- """
- Delivery Rule object make sure an Delivery in the simulation
- is consistent with the real delivery
-
- WARNING: what to do with movement split ?
- """
- # CMF Type Definition
- meta_type = 'ERP5 Delivery Rule'
- portal_type = 'Delivery Rule'
-
- # Declarative security
- security = ClassSecurityInfo()
- security.declareObjectProtected(Permissions.AccessContentsInformation)
-
- # Declarative interfaces
- zope.interface.implements(interfaces.IRule,
- interfaces.IDivergenceController,
- interfaces.IMovementCollectionUpdater,)
-
- # Default Properties
- property_sheets = (
- PropertySheet.Base,
- PropertySheet.XMLObject,
- PropertySheet.CategoryCore,
- PropertySheet.DublinCore,
- PropertySheet.Task,
- PropertySheet.Predicate,
- PropertySheet.Reference,
- PropertySheet.Version,
- PropertySheet.Rule
- )
-
- def _getMovementGenerator(self):
- """
- Return the movement generator to use in the expand process
- """
- return DeliveryRuleMovementGenerator()
-
- def _getMovementGeneratorContext(self, context):
- """
- Return the movement generator context to use for expand
- """
- return context
-
- def _getMovementGeneratorMovementList(self):
- """
- Return the movement lists to provide to the movement generator
- """
- return []
-
- def _isProfitAndLossMovement(self, movement):
- # For a kind of trade rule, a profit and loss movement lacks source
- # or destination.
- return (movement.getSource() is None or movement.getDestination() is None)
-
-class DeliveryRuleMovementGenerator(MovementGeneratorMixin):
- def getGeneratedMovementList(self, context, movement_list=None,
- rounding=False):
- """
- Input movement list comes from delivery
- """
- ret = []
- rule = context.getSpecialiseValue()
- for input_movement, business_path in self \
- ._getInputMovementAndPathTupleList(context):
- kw = self._getPropertyAndCategoryList(input_movement, business_path,
- rule)
- input_movement_url = input_movement.getRelativeUrl()
- kw.update({'order':input_movement_url,
- 'delivery':input_movement_url})
- simulation_movement = context.newContent(
- portal_type=RuleMixin.movement_type,
- temp_object=True,
- **kw)
- ret.append(simulation_movement)
- return ret
-
- def _getInputMovementList(self, context):
- """Input movement list comes from delivery"""
- delivery = context.getDefaultCausalityValue()
- if delivery is None:
- return []
- else:
- ret = []
- existing_movement_list = context.objectValues()
- for movement in delivery.getMovementList(
- portal_type=delivery.getPortalDeliveryMovementTypeList()):
- simulation_movement = self._getDeliveryRelatedSimulationMovement(movement)
- if simulation_movement is None or \
- simulation_movement in existing_movement_list:
- ret.append(movement)
- return ret
-
- def _getDeliveryRelatedSimulationMovement(self, delivery_movement):
- """Helper method to get the delivery related simulation movement.
- This method is more robust than simply calling getDeliveryRelatedValue
- which will not work if simulation movements are not indexed.
- """
- simulation_movement = delivery_movement.getDeliveryRelatedValue()
- if simulation_movement is not None:
- return simulation_movement
- # simulation movement was not found, maybe simply because it's not indexed
- # yet. We'll look in the simulation tree and try to find it anyway before
- # creating another simulation movement.
- # Try to find the one from trade model rule, which is the most common case
- # where we may expand again before indexation of simulation movements is
- # finished.
- delivery = delivery_movement.getExplanationValue()
- for movement in delivery.getMovementList():
- related_simulation_movement = movement.getDeliveryRelatedValue()
- if related_simulation_movement is not None:
- for applied_rule in related_simulation_movement.contentValues():
- for simulation_movement in applied_rule.contentValues():
- if simulation_movement.getDeliveryValue() == delivery_movement:
- return simulation_movement
- return None
Added: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliverySimulationRule.py
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliverySimulationRule.py?rev=33255&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliverySimulationRule.py (added)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/DeliverySimulationRule.py [utf8] Tue Mar 2 10:44:19 2010
@@ -1,0 +1,113 @@
+##############################################################################
+#
+# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsibility of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# guarantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+##############################################################################
+"""
+XXX This file is experimental for new simulation implementation, and
+will replace DeliveryRule.
+"""
+
+import zope.interface
+from AccessControl import ClassSecurityInfo
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
+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
+
+class DeliverySimulationRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
+ """
+ Delivery Rule object make sure an Delivery in the simulation
+ is consistent with the real delivery
+
+ WARNING: what to do with movement split ?
+ """
+ # CMF Type Definition
+ meta_type = 'ERP5 Delivery Simulation Rule'
+ portal_type = 'Delivery Simulation Rule'
+
+ # Declarative security
+ security = ClassSecurityInfo()
+ security.declareObjectProtected(Permissions.AccessContentsInformation)
+
+ # Declarative interfaces
+ zope.interface.implements(interfaces.IRule,
+ interfaces.IDivergenceController,
+ interfaces.IMovementCollectionUpdater,)
+
+ # Default Properties
+ property_sheets = (
+ PropertySheet.Base,
+ PropertySheet.XMLObject,
+ PropertySheet.CategoryCore,
+ PropertySheet.DublinCore,
+ PropertySheet.Task,
+ PropertySheet.Predicate,
+ PropertySheet.Reference,
+ PropertySheet.Version,
+ PropertySheet.Rule
+ )
+
+ def _getMovementGenerator(self):
+ """
+ Return the movement generator to use in the expand process
+ """
+ return DeliveryRuleMovementGenerator()
+
+ def _getMovementGeneratorContext(self, context):
+ """
+ Return the movement generator context to use for expand
+ """
+ return context
+
+ def _getMovementGeneratorMovementList(self):
+ """
+ Return the movement lists to provide to the movement generator
+ """
+ return []
+
+ def _isProfitAndLossMovement(self, movement):
+ # For a kind of trade rule, a profit and loss movement lacks source
+ # or destination.
+ return (movement.getSource() is None or movement.getDestination() is None)
+
+class DeliveryRuleMovementGenerator(MovementGeneratorMixin):
+ def getGeneratedMovementList(self, context, movement_list=None,
+ rounding=False):
+ """
+ Input movement list comes from the parent
+ """
+ ret = []
+ 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,
+ temp_object=True,
+ **kw)
+ ret.append(simulation_movement)
+ return ret
Copied: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRootSimulationRule.py (from r33063, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRule.py)
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRootSimulationRule.py?p2=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRootSimulationRule.py&p1=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRule.py&r1=33063&r2=33255&rev=33255&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRootSimulationRule.py [utf8] Tue Mar 2 10:44:19 2010
@@ -38,14 +38,14 @@
MovementCollectionUpdaterMixin
from Products.ERP5.mixin.movement_generator import MovementGeneratorMixin
-class InvoiceRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
+class InvoiceRootSimulationRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
"""
InvoiceRule and DeliveryRule seems to be identical. Keep it for
compatibility only.
"""
# CMF Type Definition
- meta_type = 'ERP5 Invoice Rule'
- portal_type = 'Invoice Rule'
+ meta_type = 'ERP5 Invoice Root Simulation Rule'
+ portal_type = 'Invoice Root Simulation Rule'
# Declarative security
security = ClassSecurityInfo()
Removed: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRule.py
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRule.py?rev=33254&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceRule.py (removed)
@@ -1,156 +1,0 @@
-##############################################################################
-#
-# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsibility of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# guarantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-##############################################################################
-"""
-XXX This file is experimental for new simulation implementation, and
-will replace InvoiceRule.
-"""
-
-import zope.interface
-from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet, interfaces
-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
-
-class InvoiceRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
- """
- InvoiceRule and DeliveryRule seems to be identical. Keep it for
- compatibility only.
- """
- # CMF Type Definition
- meta_type = 'ERP5 Invoice Rule'
- portal_type = 'Invoice Rule'
-
- # Declarative security
- security = ClassSecurityInfo()
- security.declareObjectProtected(Permissions.AccessContentsInformation)
-
- # Declarative interfaces
- zope.interface.implements(interfaces.IRule,
- interfaces.IDivergenceController,
- interfaces.IMovementCollectionUpdater,)
-
- # Default Properties
- property_sheets = (
- PropertySheet.Base,
- PropertySheet.XMLObject,
- PropertySheet.CategoryCore,
- PropertySheet.DublinCore,
- PropertySheet.Task,
- PropertySheet.Predicate,
- PropertySheet.Reference,
- PropertySheet.Version,
- PropertySheet.Rule
- )
-
- def _getMovementGenerator(self):
- """
- Return the movement generator to use in the expand process
- """
- return InvoiceRuleMovementGenerator()
-
- def _getMovementGeneratorContext(self, context):
- """
- Return the movement generator context to use for expand
- """
- return context
-
- def _getMovementGeneratorMovementList(self):
- """
- Return the movement lists to provide to the movement generator
- """
- return []
-
- def _isProfitAndLossMovement(self, movement):
- # For a kind of trade rule, a profit and loss movement lacks source
- # or destination.
- return (movement.getSource() is None or movement.getDestination() is None)
-
-class InvoiceRuleMovementGenerator(MovementGeneratorMixin):
- def getGeneratedMovementList(self, context, movement_list=None,
- rounding=False):
- """
- Input movement list comes from delivery
- """
- ret = []
- rule = context.getSpecialiseValue()
- for input_movement, business_path in self \
- ._getInputMovementAndPathTupleList(context):
- kw = self._getPropertyAndCategoryList(input_movement, business_path,
- rule)
- input_movement_url = input_movement.getRelativeUrl()
- kw.update({'order':input_movement_url,
- 'delivery':input_movement_url})
- simulation_movement = context.newContent(
- portal_type=RuleMixin.movement_type,
- temp_object=True,
- **kw)
- ret.append(simulation_movement)
- return ret
-
- def _getInputMovementList(self, context):
- """Input movement list comes from delivery"""
- delivery = context.getDefaultCausalityValue()
- if delivery is None:
- return []
- else:
- ret = []
- existing_movement_list = context.objectValues()
- for movement in delivery.getMovementList(
- portal_type=(delivery.getPortalInvoiceMovementTypeList() + \
- delivery.getPortalTaxMovementTypeList())):
- simulation_movement = self._getDeliveryRelatedSimulationMovement(movement)
- if simulation_movement is None or \
- simulation_movement in existing_movement_list:
- ret.append(movement)
- return ret
-
- def _getDeliveryRelatedSimulationMovement(self, delivery_movement):
- """Helper method to get the delivery related simulation movement.
- This method is more robust than simply calling getDeliveryRelatedValue
- which will not work if simulation movements are not indexed.
- """
- simulation_movement = delivery_movement.getDeliveryRelatedValue()
- if simulation_movement is not None:
- return simulation_movement
- # simulation movement was not found, maybe simply because it's not indexed
- # yet. We'll look in the simulation tree and try to find it anyway before
- # creating another simulation movement.
- # Try to find the one from trade model rule, which is the most common case
- # where we may expand again before indexation of simulation movements is
- # finished.
- delivery = delivery_movement.getExplanationValue()
- for movement in delivery.getMovementList():
- related_simulation_movement = movement.getDeliveryRelatedValue()
- if related_simulation_movement is not None:
- for applied_rule in related_simulation_movement.contentValues():
- for simulation_movement in applied_rule.contentValues():
- if simulation_movement.getDeliveryValue() == delivery_movement:
- return simulation_movement
- return None
Copied: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceSimulationRule.py (from r33249, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py)
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceSimulationRule.py?p2=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceSimulationRule.py&p1=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py&r1=33249&r2=33255&rev=33255&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceSimulationRule.py [utf8] Tue Mar 2 10:44:19 2010
@@ -38,13 +38,13 @@
MovementCollectionUpdaterMixin
from Products.ERP5.mixin.movement_generator import MovementGeneratorMixin
-class InvoicingRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
+class InvoiceSimulationRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
"""
Invoicing Rule expand simulation created by a order or delivery rule.
"""
# CMF Type Definition
- meta_type = 'ERP5 Invoicing Rule'
- portal_type = 'Invoicing Rule'
+ meta_type = 'ERP5 Invoice Simulation Rule'
+ portal_type = 'Invoice Simulation Rule'
# Declarative security
security = ClassSecurityInfo()
Removed: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionRule.py
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionRule.py?rev=33254&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionRule.py (removed)
@@ -1,228 +1,0 @@
-##############################################################################
-#
-# Copyright (c) 2009 Nexedi SARL and Contributors. All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsibility of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# guarantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-##############################################################################
-"""
-XXX This file is experimental for new simulation implementation, and
-will replace InvoicingRule.
-"""
-
-import zope.interface
-from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet, interfaces
-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.Document.PredicateMatrix import PredicateMatrix
-from Products.ERP5.mixin.movement_generator import MovementGeneratorMixin
-
-class InvoiceTransactionRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate, PredicateMatrix):
- """
- Invoice Transaction Rule object generates accounting movements for
- each invoice movement based on category membership and other
- predicated. Template accounting movements are stored in cells inside
- an instance of the InvoiceTransactionRule.
- """
- # CMF Type Definition
- meta_type = 'ERP5 Invoice Transaction Rule'
- portal_type = 'Invoice Transaction Rule'
-
- # Declarative security
- security = ClassSecurityInfo()
- security.declareObjectProtected(Permissions.AccessContentsInformation)
-
- # Declarative interfaces
- zope.interface.implements(interfaces.IRule,
- interfaces.IDivergenceController,
- interfaces.IMovementCollectionUpdater,)
-
- # Default Properties
- property_sheets = (
- PropertySheet.Base,
- PropertySheet.XMLObject,
- PropertySheet.CategoryCore,
- PropertySheet.DublinCore,
- PropertySheet.Task,
- PropertySheet.Predicate,
- PropertySheet.Reference,
- PropertySheet.Version,
- PropertySheet.Rule
- )
-
- def _getMovementGenerator(self):
- """
- Return the movement generator to use in the expand process
- """
- return InvoiceTransactionRuleMovementGenerator()
-
- def _getMovementGeneratorContext(self, context):
- """
- Return the movement generator context to use for expand
- """
- return context
-
- def _getMovementGeneratorMovementList(self):
- """
- Return the movement lists to provide to the movement generator
- """
- return []
-
- def _isProfitAndLossMovement(self, movement):
- # For a kind of trade rule, a profit and loss movement lacks source
- # or destination.
- return (movement.getSource() is None or movement.getDestination() is None)
-
-class InvoiceTransactionRuleMovementGenerator(MovementGeneratorMixin):
- def getGeneratedMovementList(self, context, movement_list=None,
- rounding=False):
- """
- Input movement list comes from order
-
- XXX This implementation is very primitive, and does not support BPM,
- i.e. business paths are not taken into account.
- """
- ret = []
-
- rule = context.getSpecialiseValue()
- # input_movement, business_path = rule._getInputMovementAndPathTupleList(
- # applied_rule)[0]
- input_movement = context.getParentValue()
- parent_movement = context.getParentValue()
-
- # Find a matching cell
- cell = rule._getMatchingCell(input_movement)
-
- if cell is not None:
- for accounting_rule_cell_line in cell.objectValues():
- # get the resource (in that order):
- # * resource from the invoice (using deliveryValue)
- # * price_currency from the invoice
- # * price_currency from the parents simulation movement's
- # deliveryValue
- # * price_currency from the top level simulation movement's
- # orderValue
- resource = None
- invoice_line = input_movement.getDeliveryValue()
- if invoice_line is not None :
- invoice = invoice_line.getExplanationValue()
- resource = invoice.getProperty('resource',
- invoice.getProperty('price_currency', None))
- if resource is None :
- # search the resource on parents simulation movement's deliveries
- simulation_movement = parent_movement
- portal_simulation = context.getPortalObject().portal_simulation
- while resource is None and \
- simulation_movement != portal_simulation :
- delivery = simulation_movement.getDeliveryValue()
- if delivery is not None:
- resource = delivery.getProperty('price_currency', None)
- if (resource is None) and \
- (simulation_movement.getParentValue().getParentValue() \
- == portal_simulation) :
- # we are on the first simulation movement, we'll try
- # to get the resource from it's order price currency.
- order = simulation_movement.getOrderValue()
- if order is not None:
- resource = order.getProperty('price_currency', None)
- simulation_movement = simulation_movement\
- .getParentValue().getParentValue()
- if resource is None :
- # last resort : get the resource from the rule
- resource = accounting_rule_cell_line.getResource() \
- or cell.getResource()
- # XXX we need business path here?
- kw = self._getPropertyAndCategoryList(input_movement, None, rule)
-
- kw.update(
- delivery=None,
- source=[accounting_rule_cell_line.getSource()],
- destination=[accounting_rule_cell_line.getDestination()],
- quantity=(input_movement.getCorrectedQuantity() *
- input_movement.getPrice(0.0)) *
- accounting_rule_cell_line.getQuantity(),
- resource=[resource],
- price=1,
- )
- if resource is not None:
- #set asset_price on movement when resource is different from price
- #currency of the source/destination section
- destination_exchange_ratio, precision = self \
- ._getCurrencyRatioAndPrecisionByArrow(
- rule, 'destination_section', kw)
- if destination_exchange_ratio is not None:
- kw.update(destination_total_asset_price=round(
- (destination_exchange_ratio*
- parent_movement.getTotalPrice()),precision))
-
- source_exchange_ratio, precision = self \
- ._getCurrencyRatioAndPrecisionByArrow(
- rule, 'source_section', kw)
- if source_exchange_ratio is not None:
- kw.update(source_total_asset_price=round(
- (source_exchange_ratio*
- parent_movement.getTotalPrice()),precision))
-
- if accounting_rule_cell_line.hasProperty(
- 'generate_prevision_script_id'):
- generate_prevision_script_id = \
- accounting_rule_cell_line.getGeneratePrevisionScriptId()
- kw.update(getattr(input_movement,
- generate_prevision_script_id)(kw))
- simulation_movement = context.newContent(
- portal_type=RuleMixin.movement_type,
- temp_object=True,
- **kw)
- ret.append(simulation_movement)
- return ret
-
- def _getCurrencyRatioAndPrecisionByArrow(self, rule, arrow, prevision_line):
- from Products.ERP5Type.Document import newTempSimulationMovement
- try:
- prevision_currency = prevision_line['resource'][0]
- except IndexError:
- prevision_currency = None
- exchange_ratio = None
- precision = None
- try:
- section = prevision_line[arrow][0]
- except IndexError:
- section = None
- if section is not None:
- currency_url = rule.restrictedTraverse(section).getProperty(
- 'price_currency', None)
- else:
- currency_url = None
- if currency_url is not None and prevision_currency != currency_url:
- precision = section.getPriceCurrencyValue() \
- .getQuantityPrecision()
- temporary_movement = newTempSimulationMovement(rule.getPortalObject(),
- '1', **prevision_line)
- exchange_ratio = rule.restrictedTraverse(currency_url).getPrice(
- context=temporary_movement.asContext(
- categories=['price_currency/%s' % currency_url,
- 'resource/%s' % prevision_currency],
- start_date=temporary_movement.getStartDate()))
- return exchange_ratio, precision
Copied: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionSimulationRule.py (from r33249, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionRule.py)
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionSimulationRule.py?p2=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionSimulationRule.py&p1=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionRule.py&r1=33249&r2=33255&rev=33255&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoiceTransactionSimulationRule.py [utf8] Tue Mar 2 10:44:19 2010
@@ -39,7 +39,7 @@
from Products.ERP5.Document.PredicateMatrix import PredicateMatrix
from Products.ERP5.mixin.movement_generator import MovementGeneratorMixin
-class InvoiceTransactionRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate, PredicateMatrix):
+class InvoiceTransactionSimulationRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate, PredicateMatrix):
"""
Invoice Transaction Rule object generates accounting movements for
each invoice movement based on category membership and other
@@ -47,8 +47,8 @@
an instance of the InvoiceTransactionRule.
"""
# CMF Type Definition
- meta_type = 'ERP5 Invoice Transaction Rule'
- portal_type = 'Invoice Transaction Rule'
+ meta_type = 'ERP5 Invoice Transaction Simulation Rule'
+ portal_type = 'Invoice Transaction Simulation Rule'
# Declarative security
security = ClassSecurityInfo()
Removed: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py?rev=33254&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/InvoicingRule.py (removed)
@@ -1,116 +1,0 @@
-##############################################################################
-#
-# Copyright (c) 2009 Nexedi SARL and Contributors. All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsibility of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# guarantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-##############################################################################
-"""
-XXX This file is experimental for new simulation implementation, and
-will replace InvoicingRule.
-"""
-
-import zope.interface
-from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet, interfaces
-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
-
-class InvoicingRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
- """
- Invoicing Rule expand simulation created by a order or delivery rule.
- """
- # CMF Type Definition
- meta_type = 'ERP5 Invoicing Rule'
- portal_type = 'Invoicing Rule'
-
- # Declarative security
- security = ClassSecurityInfo()
- security.declareObjectProtected(Permissions.AccessContentsInformation)
-
- # Declarative interfaces
- zope.interface.implements(interfaces.IRule,
- interfaces.IDivergenceController,
- interfaces.IMovementCollectionUpdater,)
-
- # Default Properties
- property_sheets = (
- PropertySheet.Base,
- PropertySheet.XMLObject,
- PropertySheet.CategoryCore,
- PropertySheet.DublinCore,
- PropertySheet.Task,
- PropertySheet.Predicate,
- PropertySheet.Reference,
- PropertySheet.Version,
- PropertySheet.Rule
- )
-
- def _getMovementGenerator(self):
- """
- Return the movement generator to use in the expand process
- """
- return InvoicingRuleMovementGenerator()
-
- def _getMovementGeneratorContext(self, context):
- """
- Return the movement generator context to use for expand
- """
- return context
-
- def _getMovementGeneratorMovementList(self):
- """
- Return the movement lists to provide to the movement generator
- """
- return []
-
- def _isProfitAndLossMovement(self, movement):
- # For a kind of trade rule, a profit and loss movement lacks source
- # or destination.
- return (movement.getSource() is None or movement.getDestination() is None)
-
-class InvoicingRuleMovementGenerator(MovementGeneratorMixin):
- def getGeneratedMovementList(self, context, movement_list=None,
- rounding=False):
- """
- Input movement list comes from order
-
- XXX This implementation is very primitive, and does not support BPM,
- i.e. business paths are not taken into account.
- """
- ret = []
- 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,
- temp_object=True,
- **kw)
- ret.append(simulation_movement)
- return ret
-
- def _getInputMovementList(self, context):
- return [context.getParentValue(),]
Copied: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRootSimulationRule.py (from r33063, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py)
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRootSimulationRule.py?p2=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRootSimulationRule.py&p1=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py&r1=33063&r2=33255&rev=33255&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRootSimulationRule.py [utf8] Tue Mar 2 10:44:19 2010
@@ -38,7 +38,7 @@
MovementCollectionUpdaterMixin
from Products.ERP5.mixin.movement_generator import MovementGeneratorMixin
-class OrderRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
+class OrderRootSimulationRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
"""
Order Rule object make sure an Order in the simulation
is consistent with the real order
@@ -46,8 +46,8 @@
WARNING: what to do with movement split ?
"""
# CMF Type Definition
- meta_type = 'ERP5 Order Rule'
- portal_type = 'Order Rule'
+ meta_type = 'ERP5 Order Root Simulation Rule'
+ portal_type = 'Order Root Simulation Rule'
# Declarative security
security = ClassSecurityInfo()
Removed: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py?rev=33254&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/OrderRule.py (removed)
@@ -1,125 +1,0 @@
-##############################################################################
-#
-# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsibility of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# guarantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-##############################################################################
-"""
-XXX This file is experimental for new simulation implementation, and
-will replace OrderRule.
-"""
-
-import zope.interface
-from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet, interfaces
-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
-
-class OrderRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
- """
- Order Rule object make sure an Order in the simulation
- is consistent with the real order
-
- WARNING: what to do with movement split ?
- """
- # CMF Type Definition
- meta_type = 'ERP5 Order Rule'
- portal_type = 'Order Rule'
-
- # Declarative security
- security = ClassSecurityInfo()
- security.declareObjectProtected(Permissions.AccessContentsInformation)
-
- # Declarative interfaces
- zope.interface.implements(interfaces.IRule,
- interfaces.IDivergenceController,
- interfaces.IMovementCollectionUpdater,)
-
- # Default Properties
- property_sheets = (
- PropertySheet.Base,
- PropertySheet.XMLObject,
- PropertySheet.CategoryCore,
- PropertySheet.DublinCore,
- PropertySheet.Task,
- PropertySheet.Predicate,
- PropertySheet.Reference,
- PropertySheet.Version,
- PropertySheet.Rule
- )
-
- def _getMovementGenerator(self):
- """
- Return the movement generator to use in the expand process
- """
- return OrderRuleMovementGenerator()
-
- def _getMovementGeneratorContext(self, context):
- """
- Return the movement generator context to use for expand
- """
- return context
-
- def _getMovementGeneratorMovementList(self):
- """
- Return the movement lists to provide to the movement generator
- """
- return []
-
- def _isProfitAndLossMovement(self, movement):
- # For a kind of trade rule, a profit and loss movement lacks source
- # or destination.
- return (movement.getSource() is None or movement.getDestination() is None)
-
-class OrderRuleMovementGenerator(MovementGeneratorMixin):
- def getGeneratedMovementList(self, context, movement_list=None,
- rounding=False):
- """
- Input movement list comes from order
- """
- ret = []
- rule = context.getSpecialiseValue()
- for input_movement, business_path in self \
- ._getInputMovementAndPathTupleList(context):
- kw = self._getPropertyAndCategoryList(input_movement, business_path,
- rule)
- input_movement_url = input_movement.getRelativeUrl()
- kw.update({'order':input_movement_url})
- simulation_movement = context.newContent(
- portal_type=RuleMixin.movement_type,
- temp_object=True,
- **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())
Removed: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentRule.py
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentRule.py?rev=33254&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentRule.py (removed)
@@ -1,143 +1,0 @@
-##############################################################################
-#
-# Copyright (c) 2010 Nexedi SARL and Contributors. All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsibility of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# guarantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-##############################################################################
-"""
-XXX This file is experimental for new simulation implementation, and
-will replace PaymentRule.
-"""
-
-import zope.interface
-from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet, interfaces
-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
-
-class PaymentRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
- """
- Payment Rule generates payment simulation movement from invoice
- transaction simulation movements.
- """
- # CMF Type Definition
- meta_type = 'ERP5 Payment Rule'
- portal_type = 'Payment Rule'
-
- # Declarative security
- security = ClassSecurityInfo()
- security.declareObjectProtected(Permissions.AccessContentsInformation)
-
- # Declarative interfaces
- zope.interface.implements(interfaces.IRule,
- interfaces.IDivergenceController,
- interfaces.IMovementCollectionUpdater,)
-
- # Default Properties
- property_sheets = (
- PropertySheet.Base,
- PropertySheet.XMLObject,
- PropertySheet.CategoryCore,
- PropertySheet.DublinCore,
- PropertySheet.Task,
- PropertySheet.Predicate,
- PropertySheet.Reference,
- PropertySheet.Version,
- PropertySheet.Rule
- )
-
- def _getMovementGenerator(self):
- """
- Return the movement generator to use in the expand process
- """
- return PaymentRuleMovementGenerator()
-
- def _getMovementGeneratorContext(self, context):
- """
- Return the movement generator context to use for expand
- """
- return context
-
- def _getMovementGeneratorMovementList(self):
- """
- Return the movement lists to provide to the movement generator
- """
- return []
-
- def _isProfitAndLossMovement(self, movement):
- # For a kind of trade rule, a profit and loss movement lacks source
- # or destination.
- return (movement.getSource() is None or movement.getDestination() is None)
-
-class PaymentRuleMovementGenerator(MovementGeneratorMixin):
- def getGeneratedMovementList(self, context, movement_list=None,
- rounding=False):
- """
- Input movement list comes from parent.
-
- XXX This implementation using Business Path, not Payment Condition.
- """
- ret = []
- rule = context.getSpecialiseValue()
- for input_movement, business_path in self \
- ._getInputMovementAndPathTupleList(context):
- # Payment Rule does not work with Business Path
- if business_path is None:
- continue
- # Since we need to consider business_path only for bank movement,
- # not for payable movement, we pass None as business_path here.
- kw = self._getPropertyAndCategoryList(input_movement, None, rule)
- kw.update({'order':None, 'delivery':None})
- quantity = kw.pop('quantity', 0)
- efficiency = business_path.getEfficiency()
- if efficiency:
- quantity *= efficiency
- start_date = business_path.getExpectedStartDate(input_movement)
- if start_date is not None:
- kw.update({'start_date':start_date})
- stop_date = business_path.getExpectedStopDate(input_movement)
- if stop_date is not None:
- kw.update({'stop_date':stop_date})
- # one for payable
- simulation_movement = context.newContent(
- portal_type=RuleMixin.movement_type,
- temp_object=True,
- quantity=-quantity,
- **kw)
- ret.append(simulation_movement)
- # one for bank
- kw.update({'source':business_path.getSource(),
- 'destination':business_path.getDestination(),})
- simulation_movement = context.newContent(
- portal_type=RuleMixin.movement_type,
- temp_object=True,
- quantity=quantity,
- **kw)
- ret.append(simulation_movement)
- return ret
-
- def _getInputMovementList(self, context):
- return [context.getParentValue(),]
Copied: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentSimulationRule.py (from r33249, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentRule.py)
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentSimulationRule.py?p2=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentSimulationRule.py&p1=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentRule.py&r1=33249&r2=33255&rev=33255&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/PaymentSimulationRule.py [utf8] Tue Mar 2 10:44:19 2010
@@ -38,14 +38,14 @@
MovementCollectionUpdaterMixin
from Products.ERP5.mixin.movement_generator import MovementGeneratorMixin
-class PaymentRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
+class PaymentSimulationRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
"""
Payment Rule generates payment simulation movement from invoice
transaction simulation movements.
"""
# CMF Type Definition
- meta_type = 'ERP5 Payment Rule'
- portal_type = 'Payment Rule'
+ meta_type = 'ERP5 Payment Simulation Rule'
+ portal_type = 'Payment Simulation Rule'
# Declarative security
security = ClassSecurityInfo()
Removed: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelRule.py
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelRule.py?rev=33254&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelRule.py (removed)
@@ -1,140 +1,0 @@
-##############################################################################
-#
-# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsibility of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# guarantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-##############################################################################
-"""
-XXX This file is experimental for new simulation implementation, and
-will replace DeliveryRule.
-"""
-
-import zope.interface
-from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet, interfaces
-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
-
-class TradeModelRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
- """
- Rule for Trade Model
- """
- # CMF Type Definition
- meta_type = 'ERP5 Trade Model Rule'
- portal_type = 'Trade Model Rule'
-
- # Declarative security
- security = ClassSecurityInfo()
- security.declareObjectProtected(Permissions.AccessContentsInformation)
-
- # Declarative interfaces
- zope.interface.implements(interfaces.IRule,
- interfaces.IDivergenceController,
- interfaces.IMovementCollectionUpdater,)
-
- # Default Properties
- property_sheets = (
- PropertySheet.Base,
- PropertySheet.XMLObject,
- PropertySheet.CategoryCore,
- PropertySheet.DublinCore,
- PropertySheet.Task,
- PropertySheet.Predicate,
- PropertySheet.Reference,
- PropertySheet.Version,
- PropertySheet.Rule
- )
-
- def _getMovementGenerator(self):
- """
- Return the movement generator to use in the expand process
- """
- return TradeModelRuleMovementGenerator()
-
- def _getMovementGeneratorContext(self, context):
- """
- Return the movement generator context to use for expand
- """
- return context
-
- def _getMovementGeneratorMovementList(self):
- """
- Return the movement lists to provide to the movement generator
- """
- return []
-
- def _isProfitAndLossMovement(self, movement):
- # For a kind of trade rule, a profit and loss movement lacks source
- # or destination.
- return (movement.getSource() is None or movement.getDestination() is None)
-
-class TradeModelRuleMovementGenerator(MovementGeneratorMixin):
- def getGeneratedMovementList(self, context, movement_list=None,
- rounding=False):
- """
- Generates list of movements
- """
- movement_list = []
- trade_condition = context.getTradeConditionValue()
- business_process = context.getBusinessProcessValue()
-
- if trade_condition is None or business_process is None:
- return movement_list
-
- context_movement = context.getParentValue()
- for amount in trade_condition.getAggregatedAmountList(context_movement):
- # business path specific
- business_path_list = business_process.getPathValueList(
- trade_phase=amount.getTradePhaseList())
- if len(business_path_list) == 0:
- raise ValueError('Cannot find Business Path')
-
- if len(business_path_list) != 1:
- raise NotImplementedError('Only one Business Path is supported')
-
- business_path = business_path_list[0]
-
- kw = self._getPropertyAndCategoryList(context_movement, business_path)
-
- # rule specific
- kw['price'] = amount.getProperty('price')
- kw['resource'] = amount.getProperty('resource_list')
- kw['reference'] = amount.getProperty('reference')
- kw['quantity'] = amount.getProperty('quantity')
- kw['base_application'] = amount.getProperty(
- 'base_application_list')
- kw['base_contribution'] = amount.getProperty(
- 'base_contribution_list')
-
- simulation_movement = context.newContent(
- portal_type=RuleMixin.movement_type,
- temp_object=True,
- order=None,
- delivery=None,
- **kw)
- movement_list.append(simulation_movement)
-
- return movement_list
Copied: erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelSimulationRule.py (from r33249, erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelRule.py)
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelSimulationRule.py?p2=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelSimulationRule.py&p1=erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelRule.py&r1=33249&r2=33255&rev=33255&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelRule.py [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/DocumentTemplateItem/TradeModelSimulationRule.py [utf8] Tue Mar 2 10:44:19 2010
@@ -38,13 +38,13 @@
MovementCollectionUpdaterMixin
from Products.ERP5.mixin.movement_generator import MovementGeneratorMixin
-class TradeModelRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
+class TradeModelSimulationRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
"""
Rule for Trade Model
"""
# CMF Type Definition
- meta_type = 'ERP5 Trade Model Rule'
- portal_type = 'Trade Model Rule'
+ meta_type = 'ERP5 Trade Model Simulation Rule'
+ portal_type = 'Trade Model Simulation Rule'
# Declarative security
security = ClassSecurityInfo()
Modified: erp5/trunk/bt5/erp5_simulation/bt/revision
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/bt/revision?rev=33255&r1=33254&r2=33255&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/bt/revision [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/bt/revision [utf8] Tue Mar 2 10:44:19 2010
@@ -1,1 +1,1 @@
-47
+48
Modified: erp5/trunk/bt5/erp5_simulation/bt/template_document_id_list
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_simulation/bt/template_document_id_list?rev=33255&r1=33254&r2=33255&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_simulation/bt/template_document_id_list [utf8] (original)
+++ erp5/trunk/bt5/erp5_simulation/bt/template_document_id_list [utf8] Tue Mar 2 10:44:19 2010
@@ -1,7 +1,8 @@
-DeliveryRule
-InvoiceRule
-InvoiceTransactionRule
-InvoicingRule
-OrderRule
-PaymentRule
-TradeModelRule
+DeliveryRootSimulationRule
+DeliverySimulationRule
+InvoiceRootSimulationRule
+InvoiceSimulationRule
+InvoiceTransactionSimulationRule
+OrderRootSimulationRule
+PaymentSimulationRule
+TradeModelSimulationRule
More information about the Erp5-report
mailing list