From c9cf4e6863ba5bdd31a103efd0b74899d6560d7d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Thu, 26 Nov 2009 14:53:09 +0000
Subject: [PATCH] It can be usefull to calculate the budget consumption using
 same parameters but for another date range. Those scripts accepts from_date
 and at_date parameters for that usage

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@30877 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../BudgetCell_getConsumedBudget.xml          | 24 +++++++++++++------
 .../BudgetCell_getEngagedBudget.xml           | 22 ++++++++++++-----
 bt5/erp5_budget/bt/revision                   |  2 +-
 3 files changed, 34 insertions(+), 14 deletions(-)

diff --git a/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/BudgetCell_getConsumedBudget.xml b/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/BudgetCell_getConsumedBudget.xml
index 518d409929..daf01d87f7 100644
--- a/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/BudgetCell_getConsumedBudget.xml
+++ b/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/BudgetCell_getConsumedBudget.xml
@@ -60,12 +60,17 @@ if budget_model is not None:\n
   kw = budget_model.getInventoryQueryDict(context)\n
 \n
 kw.setdefault(\'from_date\', budget.getStartDateRangeMin())\n
-at_date = budget.getStartDateRangeMax()\n
+start_date_range_max = budget.getStartDateRangeMax()\n
+if start_date_range_max:\n
+  start_date_range_max = start_date_range_max.latestTime()\n
+kw.setdefault(\'at_date\', start_date_range_max)\n
+\n
+if from_date:\n
+  kw[\'from_date\'] = from_date\n
 if at_date:\n
-  at_date = at_date.latestTime()\n
-kw.setdefault(\'at_date\', at_date)\n
+  kw[\'at_date\'] = at_date\n
 \n
-# XXX use getBudgetConsumptionMethod ?\n
+ # XXX use getBudgetConsumptionMethod ?\n
 if src__:\n
   return context.portal_simulation.getCurrentInventoryAssetPrice(src__=src__, **kw)\n
 return (context.portal_simulation.getCurrentInventoryAssetPrice(**kw) or 0) * context.getParentValue().BudgetLine_getConsumptionSign()\n
@@ -79,7 +84,7 @@ return (context.portal_simulation.getCurrentInventoryAssetPrice(**kw) or 0) * co
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>src__=0</string> </value>
+            <value> <string>src__=0, from_date=None, at_date=None</string> </value>
         </item>
         <item>
             <key> <string>errors</string> </key>
@@ -99,13 +104,15 @@ return (context.portal_simulation.getCurrentInventoryAssetPrice(**kw) or 0) * co
                   <dictionary>
                     <item>
                         <key> <string>co_argcount</string> </key>
-                        <value> <int>1</int> </value>
+                        <value> <int>3</int> </value>
                     </item>
                     <item>
                         <key> <string>co_varnames</string> </key>
                         <value>
                           <tuple>
                             <string>src__</string>
+                            <string>from_date</string>
+                            <string>at_date</string>
                             <string>dict</string>
                             <string>kw</string>
                             <string>_getattr_</string>
@@ -113,7 +120,8 @@ return (context.portal_simulation.getCurrentInventoryAssetPrice(**kw) or 0) * co
                             <string>budget</string>
                             <string>budget_model</string>
                             <string>None</string>
-                            <string>at_date</string>
+                            <string>start_date_range_max</string>
+                            <string>_write_</string>
                             <string>_apply_</string>
                           </tuple>
                         </value>
@@ -128,6 +136,8 @@ return (context.portal_simulation.getCurrentInventoryAssetPrice(**kw) or 0) * co
             <value>
               <tuple>
                 <int>0</int>
+                <none/>
+                <none/>
               </tuple>
             </value>
         </item>
diff --git a/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/BudgetCell_getEngagedBudget.xml b/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/BudgetCell_getEngagedBudget.xml
index 6fe021b53d..7c7addd77a 100644
--- a/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/BudgetCell_getEngagedBudget.xml
+++ b/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/BudgetCell_getEngagedBudget.xml
@@ -60,10 +60,15 @@ if budget_model is not None:\n
   kw = budget_model.getInventoryQueryDict(context)\n
 \n
 kw.setdefault(\'from_date\', budget.getStartDateRangeMin())\n
-at_date = budget.getStartDateRangeMax()\n
+start_date_range_max = budget.getStartDateRangeMax()\n
+if start_date_range_max:\n
+  start_date_range_max = start_date_range_max.latestTime()\n
+kw.setdefault(\'at_date\', start_date_range_max)\n
+\n
+if from_date:\n
+  kw[\'from_date\'] = from_date\n
 if at_date:\n
-  at_date = at_date.latestTime()\n
-kw.setdefault(\'at_date\', at_date)\n
+  kw[\'at_date\'] = at_date\n
 \n
 kw.setdefault(\'explanation_simulation_state\', context.getPortalReservedInventoryStateList() \\\n
                                             + context.getPortalCurrentInventoryStateList() \\\n
@@ -83,7 +88,7 @@ return (context.portal_simulation.getInventoryAssetPrice(**kw) or 0) * context.g
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>src__=0</string> </value>
+            <value> <string>src__=0, from_date=None, at_date=None</string> </value>
         </item>
         <item>
             <key> <string>errors</string> </key>
@@ -103,13 +108,15 @@ return (context.portal_simulation.getInventoryAssetPrice(**kw) or 0) * context.g
                   <dictionary>
                     <item>
                         <key> <string>co_argcount</string> </key>
-                        <value> <int>1</int> </value>
+                        <value> <int>3</int> </value>
                     </item>
                     <item>
                         <key> <string>co_varnames</string> </key>
                         <value>
                           <tuple>
                             <string>src__</string>
+                            <string>from_date</string>
+                            <string>at_date</string>
                             <string>dict</string>
                             <string>kw</string>
                             <string>_getattr_</string>
@@ -117,7 +124,8 @@ return (context.portal_simulation.getInventoryAssetPrice(**kw) or 0) * context.g
                             <string>budget</string>
                             <string>budget_model</string>
                             <string>None</string>
-                            <string>at_date</string>
+                            <string>start_date_range_max</string>
+                            <string>_write_</string>
                             <string>_apply_</string>
                           </tuple>
                         </value>
@@ -132,6 +140,8 @@ return (context.portal_simulation.getInventoryAssetPrice(**kw) or 0) * context.g
             <value>
               <tuple>
                 <int>0</int>
+                <none/>
+                <none/>
               </tuple>
             </value>
         </item>
diff --git a/bt5/erp5_budget/bt/revision b/bt5/erp5_budget/bt/revision
index ce83bd94b3..ddc17b20b7 100644
--- a/bt5/erp5_budget/bt/revision
+++ b/bt5/erp5_budget/bt/revision
@@ -1 +1 @@
-258
\ No newline at end of file
+260
\ No newline at end of file
-- 
2.30.9