[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