[Erp5-report] r27774 - /erp5/trunk/products/ERP5/Document/TradeCondition.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Jun 23 12:54:50 CEST 2009


Author: luke
Date: Tue Jun 23 12:54:45 2009
New Revision: 27774

URL: http://svn.erp5.org?rev=27774&view=rev
Log:
 - it is needed to apply models only two times - once for real input movements, second one for generated values globally

Modified:
    erp5/trunk/products/ERP5/Document/TradeCondition.py

Modified: erp5/trunk/products/ERP5/Document/TradeCondition.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/TradeCondition.py?rev=27774&r1=27773&r2=27774&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/TradeCondition.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/TradeCondition.py [utf8] Tue Jun 23 12:54:45 2009
@@ -224,19 +224,15 @@
       trade_model_line_composed_list = \
           self.getTradeModelLineComposedList(context)
 
-      need_to_run = 1
-      while need_to_run: # XXX Dangerous code. This can leed to infinite loop
-        need_to_run = 0
+      # initialise run then rerun only once, as trade_model_line_composed_list
+      # is sorted in good way to have simple algorithm
+      for pass_type in ['initialise', 'rerun']:
         for model_line in trade_model_line_composed_list:
-          model_line_result = model_line.getAggregatedAmountList(context,
+          result.extend(model_line.getAggregatedAmountList(context,
             movement_list=movement_list,
             current_aggregated_amount_list=result,
-            **kw)
-          result.extend(model_line_result)
-        if len(result) != len(movement_list):
-          # something was added
-          need_to_run = 1
-          movement_list = result
+            **kw))
+        movement_list = result # apply model again on generated movements
 
       # remove movement that should not be created
       movement_list = []




More information about the Erp5-report mailing list