Commit 3468c820 authored by Romain Courteaud's avatar Romain Courteaud

Expand the Simulation related to the Order as soon as it is reindexed.

Thanks to Rafael Monnerat.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@9867 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent a79ec10b
...@@ -144,3 +144,22 @@ class Order(Delivery): ...@@ -144,3 +144,22 @@ class Order(Delivery):
""" """
Delivery.updateAppliedRule(self, rule_id, force=force,**kw) Delivery.updateAppliedRule(self, rule_id, force=force,**kw)
def recursiveReindexObject(self, *k, **kw):
"""
Reindex children and simulation
"""
# Now the applied rule is expanded
Delivery.recursiveReindexObject(self, *k, **kw)
self.expandAppliedRuleRelatedToOrder(**kw)
def expandAppliedRuleRelatedToOrder(self, **kw):
"""
Expand the applied rule related
"""
applied_rule = None
order_causality_list = self.getCausalityRelatedValueList()
for order_causality in order_causality_list:
if order_causality.getPortalType() == 'Applied Rule':
applied_rule = order_causality
if applied_rule is not None:
applied_rule.activate().expand(**kw)
##############################################################################
#
# Copyright (c) 2002, 2004 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
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# garantees 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from Globals import InitializeClass, PersistentMapping
from AccessControl import ClassSecurityInfo
from Acquisition import aq_base
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5Type.Base import Base
from Products.ERP5.Document.DeliveryCell import DeliveryCell
from zLOG import LOG
class OrderCell(DeliveryCell):
"""
A OrderCell allows to define specific quantities
for each variation of a resource in a delivery line.
"""
meta_type = 'ERP5 Order Cell'
portal_type = 'Order Cell'
isCell = 1
isMovement = 1
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
__implements__ = ( Interface.Variated, )
# Declarative properties
property_sheets = ( PropertySheet.Base
, PropertySheet.CategoryCore
, PropertySheet.Arrow
, PropertySheet.Amount
, PropertySheet.Task
, PropertySheet.Movement
, PropertySheet.Price
, PropertySheet.Predicate
, PropertySheet.MappedValue
, PropertySheet.ItemAggregation
)
def reindexObject(self, *k, **kw):
"""
Reindex children and simulation
"""
self.recursiveReindexObject(*k,**kw)
security.declarePublic('recursiveReindexObject')
def recursiveReindexObject(self, *k, **kw):
"""
Reindex children and simulation
"""
self.getExplanationValue().expandAppliedRuleRelatedToOrder(**kw)
DeliveryCell.recursiveReindexObject(self, *k, **kw)
...@@ -62,26 +62,29 @@ class OrderLine(DeliveryLine): ...@@ -62,26 +62,29 @@ class OrderLine(DeliveryLine):
# Declarative interfaces # Declarative interfaces
__implements__ = ( Interface.Variated, ) __implements__ = ( Interface.Variated, )
def applyToOrderLineRelatedMovement(self, portal_type='Simulation Movement', method_id = 'expand'): def applyToOrderLineRelatedMovement(self, portal_type='Simulation Movement',
method_id = 'expand'):
""" """
Warning: does not work if it was not catalogued immediately Warning: does not work if it was not catalogued immediately
""" """
# Find related in simulation # Find related in simulation
for my_simulation_movement in self.getOrderRelatedValueList( for my_simulation_movement in self.getOrderRelatedValueList(
portal_type = 'Simulation Movement'): portal_type = 'Simulation Movement'):
# And apply # And apply
getattr(my_simulation_movement, method_id)() getattr(my_simulation_movement, method_id)()
for c in self.contentValues(filter={'portal_type': 'Delivery Cell'}): for c in self.contentValues(filter={'portal_type': 'Delivery Cell'}):
for my_simulation_movement in c.getOrderRelatedValueList( for my_simulation_movement in c.getOrderRelatedValueList(
portal_type = 'Simulation Movement'): portal_type = 'Simulation Movement'):
# And apply # And apply
getattr(my_simulation_movement, method_id)() getattr(my_simulation_movement, method_id)()
def reindexObject(self, *k, **kw): security.declarePublic('recursiveReindexObject')
def recursiveReindexObject(self, *k, **kw):
""" """
Reindex children and simulation Reindex children and simulation
""" """
self.recursiveReindexObject() self.getExplanationValue().expandAppliedRuleRelatedToOrder(**kw)
DeliveryLine.recursiveReindexObject(self, *k, **kw)
#self.activate().applyToOrderLineRelatedMovement(method_id = 'expand') #self.activate().applyToOrderLineRelatedMovement(method_id = 'expand')
# We do it at Order level through edit # We do it at Order level through edit
# This logic should actually be put in worklow # This logic should actually be put in worklow
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment