[Erp5-report] r34969 kazuhiko - /erp5/trunk/products/ERP5Legacy/Document/
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue May 4 11:11:41 CEST 2010
Author: kazuhiko
Date: Tue May 4 11:11:39 2010
New Revision: 34969
URL: http://svn.erp5.org?rev=34969&view=rev
Log:
move clever default _getInputMovementList() implementation.
* a parent simulation movement for non-root rule.
* non-simulated movements for root rule.
Modified:
erp5/trunk/products/ERP5Legacy/Document/DeliveryRule.py
erp5/trunk/products/ERP5Legacy/Document/InvoiceRule.py
erp5/trunk/products/ERP5Legacy/Document/Rule.py
Modified: erp5/trunk/products/ERP5Legacy/Document/DeliveryRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Legacy/Document/DeliveryRule.py?rev=34969&r1=34968&r2=34969&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Legacy/Document/DeliveryRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5Legacy/Document/DeliveryRule.py [utf8] Tue May 4 11:11:39 2010
@@ -62,30 +62,6 @@
Else, it cannot be modified.
"""
return Rule._expand(self, applied_rule, **kw)
-
- 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
security.declareProtected(Permissions.ModifyPortalContent, 'solve')
def solve(self, applied_rule, solution_list):
@@ -179,21 +155,6 @@
)
return property_list
- def _getInputMovementList(self, applied_rule):
- """Return list of movements from delivery"""
- delivery = applied_rule.getDefaultCausalityValue()
- movement_list = []
- if delivery is not None:
- existing_movement_list = applied_rule.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:
- movement_list.append(movement)
- return movement_list
-
def _getExpandablePropertyUpdateDict(self, applied_rule, movement,
business_path, current_property_dict):
"""Delivery specific update dict"""
Modified: erp5/trunk/products/ERP5Legacy/Document/InvoiceRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Legacy/Document/InvoiceRule.py?rev=34969&r1=34968&r2=34969&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Legacy/Document/InvoiceRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5Legacy/Document/InvoiceRule.py [utf8] Tue May 4 11:11:39 2010
@@ -58,20 +58,3 @@
invoice movements should not be accountable either.
"""
return 0
-
- def _getInputMovementList(self, applied_rule):
- """Return list of movements from delivery"""
- delivery = applied_rule.getDefaultCausalityValue()
- movement_list = []
- delivery_movement_type_list = self.getPortalInvoiceMovementTypeList() + \
- self.getPortalTaxMovementTypeList()
- if delivery is not None:
- existing_movement_list = applied_rule.objectValues()
- for movement in delivery.getMovementList(
- portal_type=delivery_movement_type_list):
- simulation_movement = self._getDeliveryRelatedSimulationMovement(
- movement)
- if simulation_movement is None or \
- simulation_movement in existing_movement_list:
- movement_list.append(movement)
- return movement_list
Modified: erp5/trunk/products/ERP5Legacy/Document/Rule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Legacy/Document/Rule.py?rev=34969&r1=34968&r2=34969&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Legacy/Document/Rule.py [utf8] (original)
+++ erp5/trunk/products/ERP5Legacy/Document/Rule.py [utf8] Tue May 4 11:11:39 2010
@@ -251,7 +251,44 @@
def _getInputMovementList(self, applied_rule):
"""Return list of movements for applied rule.
This method might be overloaded"""
- return [applied_rule.getParentValue()]
+ if applied_rule.isRootAppliedRule():
+ delivery = applied_rule.getDefaultCausalityValue()
+ movement_list = []
+ if delivery is not None:
+ existing_movement_list = applied_rule.objectValues()
+ for movement in delivery.getMovementList():
+ simulation_movement = self._getDeliveryRelatedSimulationMovement(
+ movement)
+ if simulation_movement is None or \
+ simulation_movement in existing_movement_list:
+ movement_list.append(movement)
+ return movement_list
+ else:
+ return [applied_rule.getParentValue()]
+
+ 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
def _generatePrevisionList(self, applied_rule, **kw):
"""
More information about the Erp5-report
mailing list