[Erp5-report] r31983 kazuhiko - /erp5/trunk/products/ERP5/Document/NewOrderRule.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Jan 26 15:17:23 CET 2010
Author: kazuhiko
Date: Tue Jan 26 15:17:18 2010
New Revision: 31983
URL: http://svn.erp5.org?rev=31983&view=rev
Log:
remove an obsolete experimental code.
Removed:
erp5/trunk/products/ERP5/Document/NewOrderRule.py
Removed: erp5/trunk/products/ERP5/Document/NewOrderRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/NewOrderRule.py?rev=31982&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/Document/NewOrderRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/NewOrderRule.py (removed)
@@ -1,153 +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 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.MovementCollectionDiff import _getPropertyAndCategoryList
-
-# XXX this class should be moved to Rule.py once new simulation is fully
-# integrated.
-class Rule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
- # 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
- )
-
- security.declareProtected(Permissions.View, 'getDivergenceList')
- def getDivergenceList(self, movement):
- """
- Returns a list of divergences of the movements provided
- in delivery_or_movement.
-
- movement -- a movement, a delivery, a simulation movement,
- or a list thereof
- """
- if movement.getDelivery() is None:
- return []
- result_list = []
- for divergence_tester in self._getDivergenceTesterList(
- exclude_quantity=False):
- result = divergence_tester.explain(movement)
- if isinstance(result, (list, tuple)): # for compatibility
- result_list.extend(result)
- elif result is not None:
- result_list.append(result)
- return result_list
-
-class NewOrderRule(Rule):
- """
- 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 New Order Rule'
- portal_type = 'New Order Rule'
-
- # XXX this method is missing in interface.
- def isOrderable(self, movement):
- return 1
-
- # XXX this method is missing in interface.
- def isDeliverable(self, movement):
- if movement.getSimulationState() in movement.getPortalDraftOrderStateList():
- return 0
- return 1
-
- 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(object):
- 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.
- """
- order = context.getDefaultCausalityValue()
- if order is None:
- return []
- ret = []
- for movement in order.getMovementList(
- portal_type=order.getPortalOrderMovementTypeList()):
- kw = _getPropertyAndCategoryList(movement)
- simulation_movement = context.newContent(
- portal_type=RuleMixin.movement_type,
- temp_object=True,
- order_value=movement,
- **kw)
- ret.append(simulation_movement)
- return ret
More information about the Erp5-report
mailing list