From 610267879d27b4b1088478f7ec0b2d467f2bb76c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Thu, 5 Nov 2009 16:43:48 +0000
Subject: [PATCH] Use more styles in budget consumption report and improve a
 lot the layout

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@30347 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../Budget_getBudgetConsumptionReportData.xml | 145 +++--
 .../Budget_viewBudgetConsumptionReport.xml    | 213 +++----
 ...et_viewBudgetConsumptionReportTemplate.xml | 574 +++++++++---------
 bt5/erp5_budget/bt/revision                   |   2 +-
 4 files changed, 479 insertions(+), 455 deletions(-)

diff --git a/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_getBudgetConsumptionReportData.xml b/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_getBudgetConsumptionReportData.xml
index bf72b0fe76..c94194a66c 100644
--- a/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_getBudgetConsumptionReportData.xml
+++ b/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_getBudgetConsumptionReportData.xml
@@ -65,6 +65,8 @@ from pprint import pformat\n
 portal = context.getPortalObject()\n
 request= portal.REQUEST\n
 \n
+from Products.ERP5Type.Utils import cartesianProduct\n
+\n
 # this report can be called on a budget ...\n
 if context.getPortalType() == \'Budget\':\n
   defined_group = \'group\'\n
@@ -105,6 +107,10 @@ def isVisibleCell(cell):\n
 \n
 \n
 for budget in budget_list:\n
+  line_list.append(dict(is_budget=True,\n
+                        title=budget.getTitle().decode(\'utf8\'),\n
+                        resource_title=budget.getResource() and\n
+                                 budget.getResourceReference()))\n
   for budget_line in budget.contentValues(sort_on=((\'int_index\', \'asc\'),)):\n
     total_level_1_initial_budget = 0\n
     total_level_1_current_budget = 0\n
@@ -112,9 +118,7 @@ for budget in budget_list:\n
     total_level_1_consumed_budget = 0\n
     total_level_1_available_budget = 0\n
     \n
-    level_1_line_list = [dict(is_level_1=1,\n
-                              title=budget_line.getTitle().decode(\'utf8\'))]\n
-\n
+    level_1_line_list = []\n
     variation_axis_list = []\n
     for possible_axis in budget_line.getVariationBaseCategoryList():\n
       for cell_range in budget_line.getCellRange():\n
@@ -130,12 +134,11 @@ for budget in budget_list:\n
           budget_line.getVariationCategoryList() if\n
           x.startswith(variation_axis_list[0])]\n
     else:\n
-      level_2_variation_category_list = [x for x in\n
-          budget_line.getVariationCategoryList() if\n
-          x.startswith(variation_axis_list[0])]\n
-      level_3_variation_category_list = [x for x in\n
-          budget_line.getVariationCategoryList() if\n
-          x.startswith(variation_axis_list[1])]\n
+      budget_line_vcl = budget_line.getVariationCategoryList()\n
+      budget_line_cell_range = budget_line.BudgetLine_asCellRange()\n
+      \n
+      level_2_variation_category_list = budget_line.getCellRange()[0]\n
+      level_3_variation_category_list = budget_line.getCellRange()[1]\n
 \n
     # we use BudgetLine_asCellRange to get cell names, and have a default value\n
     # for "virtual level 2"\n
@@ -143,18 +146,40 @@ for budget in budget_list:\n
     cell_name_dict = {budget_line.getResource(base=1):\n
                           budget_line.getTitle().decode(\'utf8\')}\n
     cell_style_dict = {budget_line.getResource(base=1): \'Level2\'}\n
-    for cell_range_list in budget_line.BudgetLine_asCellRange(matrixbox=1):\n
+    cell_depth_dict = {budget_line.getResource(base=1): 0}\n
+\n
+    min_depth = 100\n
+    budget_line_as_cell_range_matrixbox =\\\n
+        budget_line.BudgetLine_asCellRange(matrixbox=1)\n
+    for cell_range_list in budget_line_as_cell_range_matrixbox:\n
+      for category, title in cell_range_list:\n
+        if category in level_2_variation_category_list:\n
+          min_depth = min((title.count(\'\\xA0\') / 4) or title.count(\'/\'),\n
+                          min_depth)\n
+\n
+    if min_depth == 100:\n
+      min_depth = 0\n
+\n
+    for cell_range_list in budget_line_as_cell_range_matrixbox:\n
       for category, title in cell_range_list:\n
         cell_name_dict[category] = title.decode(\'utf8\').replace(u\'\\xA0\', \'\')\n
-        depth = (title.count(\'\\xA0\') / 4.) or title.count(\'/\')\n
-        if depth == 1:\n
-          cell_style_dict[category] = \'Level2.1\'\n
-        elif depth == 2:\n
-          cell_style_dict[category] = \'Level2.2\'\n
-        elif depth == 3:\n
-          cell_style_dict[category] = \'Level2.3\'\n
-        else:\n
-          cell_style_dict[category] = \'Level2\'\n
+        if category in level_2_variation_category_list:\n
+          depth = -min_depth + (title.count(\'\\xA0\') / 4) or title.count(\'/\')\n
+          cell_depth_dict[category] = depth\n
+          if depth == 1:\n
+            cell_style_dict[category] = \'Level2.1\'\n
+          elif depth == 2:\n
+            cell_style_dict[category] = \'Level2.2\'\n
+          elif depth == 3:\n
+            cell_style_dict[category] = \'Level2.3\'\n
+          else:\n
+            cell_style_dict[category] = \'Level2\'\n
+\n
+    # We\'ll only sum level 2 budget cells if they are the shallowest in the\n
+    # category tree\n
+    higher_depth = min_depth\n
+    if cell_depth_dict:\n
+      higher_depth = min(cell_depth_dict.values())\n
 \n
     for level_2_category in level_2_variation_category_list:\n
 \n
@@ -163,13 +188,17 @@ for budget in budget_list:\n
       total_level_2_engaged_budget = 0\n
       total_level_2_consumed_budget = 0\n
       total_level_2_available_budget = 0\n
-      level_2_line_list = [dict(is_level_2=1,\n
+      level_2_line_list = [dict(is_level_2=True,\n
                                 title=cell_name_dict[level_2_category],\n
                                 style=cell_style_dict[level_2_category])]\n
-      \n
+\n
+      is_higher_level2 = cell_depth_dict[level_2_category] == higher_depth\n
+\n
       for level_3_category in level_3_variation_category_list:\n
         sign = budget_line.BudgetLine_getConsumptionSign()\n
-        for cell in budget_line.getCellValueList():\n
+\n
+        for cell_key in cartesianProduct(budget_line.BudgetLine_asCellRange()):\n
+          cell = budget_line.getCell(*cell_key)\n
           if not isVisibleCell(cell):\n
             continue\n
           if level_2_category in cell.getMembershipCriterionCategoryList() and\\\n
@@ -178,8 +207,13 @@ for budget in budget_list:\n
             initial_budget = cell.getQuantity() * sign\n
             current_budget = cell.getCurrentBalance() * sign\n
             engaged_budget = cell.getEngagedBudget()\n
-            consumed_budget = cell.getConsumedBudget()\n
-            available_budget = cell.getAvailableBudget()\n
+            if engaged_budget:\n
+              # XXX stupid optimisation that may not always be true\n
+              consumed_budget = cell.getConsumedBudget()\n
+              available_budget = cell.getAvailableBudget()\n
+            else:\n
+              consumed_budget = 0\n
+              available_budget = current_budget\n
             \n
             total_level_2_initial_budget += initial_budget\n
             total_level_2_current_budget += current_budget\n
@@ -190,8 +224,8 @@ for budget in budget_list:\n
             consumed_ratio = 0\n
             if current_budget:\n
               consumed_ratio = consumed_budget / current_budget\n
-            level_2_line_list.append(dict(is_level_3=1,\n
-                                          title=cell_name_dict[level_3_category],\n
+            level_2_line_list.append(dict(title=cell_name_dict[level_3_category],\n
+                                          is_level_3=True,\n
                                           initial_budget=initial_budget,\n
                                           current_budget=current_budget,\n
                                           engaged_budget=engaged_budget,\n
@@ -203,28 +237,29 @@ for budget in budget_list:\n
         consumed_ratio = 0\n
         if total_level_2_current_budget:\n
           consumed_ratio = total_level_2_consumed_budget / total_level_2_current_budget\n
-        level_1_line_list.extend(level_2_line_list)\n
-        level_1_line_list.append(dict(is_total_level_2=1,\n
+        level_1_line_list.append(dict(is_level_2=True,\n
                                       title=cell_name_dict[level_2_category],\n
+                                      style=cell_style_dict[level_2_category],\n
                                       initial_budget=total_level_2_initial_budget,\n
                                       current_budget=total_level_2_current_budget,\n
                                       engaged_budget=total_level_2_engaged_budget,\n
                                       consumed_budget=total_level_2_consumed_budget,\n
                                       available_budget=total_level_2_available_budget,\n
                                       consumed_ratio=consumed_ratio))\n
+        level_1_line_list.append(level_2_line_list)\n
 \n
-      total_level_1_initial_budget += total_level_2_initial_budget\n
-      total_level_1_current_budget += total_level_2_current_budget\n
-      total_level_1_engaged_budget += total_level_2_engaged_budget\n
-      total_level_1_consumed_budget += total_level_2_consumed_budget\n
-      total_level_1_available_budget += total_level_2_available_budget\n
+      if is_higher_level2:\n
+        total_level_1_initial_budget += total_level_2_initial_budget\n
+        total_level_1_current_budget += total_level_2_current_budget\n
+        total_level_1_engaged_budget += total_level_2_engaged_budget\n
+        total_level_1_consumed_budget += total_level_2_consumed_budget\n
+        total_level_1_available_budget += total_level_2_available_budget\n
 \n
     if len(level_1_line_list) > 1:\n
       consumed_ratio = 0\n
       if total_level_1_current_budget:\n
         consumed_ratio = total_level_1_consumed_budget / total_level_1_current_budget\n
-      line_list.extend(level_1_line_list)\n
-      line_list.append(dict(is_total_level_1=1,\n
+      line_list.append(dict(is_level_1=True,\n
                             title=budget_line.getTitle().decode(\'utf8\'),\n
                             initial_budget=total_level_1_initial_budget,\n
                             current_budget=total_level_1_current_budget,\n
@@ -232,12 +267,17 @@ for budget in budget_list:\n
                             consumed_budget=total_level_1_consumed_budget,\n
                             available_budget=total_level_1_available_budget,\n
                             consumed_ratio=consumed_ratio))\n
+      line_list.extend(level_1_line_list)\n
      \n
-  \n
-if line_list:\n
-  line_list[-1][\'is_last_line\'] = 1\n
+line_count = 0\n
+for line in line_list:\n
+  if same_type(line, []):\n
+    line_count += len(line)\n
+  else:\n
+    line_count += 1\n
 \n
-return line_list\n
+if not REQUEST:\n
+  return line_list, line_count\n
 \n
 from pprint import pformat\n
 return pformat(line_list)\n
@@ -253,7 +293,7 @@ return pformat(line_list)\n
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string></string> </value>
+            <value> <string>REQUEST=None</string> </value>
         </item>
         <item>
             <key> <string>_proxy_roles</string> </key>
@@ -281,18 +321,21 @@ return pformat(line_list)\n
                   <dictionary>
                     <item>
                         <key> <string>co_argcount</string> </key>
-                        <value> <int>0</int> </value>
+                        <value> <int>1</int> </value>
                     </item>
                     <item>
                         <key> <string>co_varnames</string> </key>
                         <value>
                           <tuple>
+                            <string>REQUEST</string>
                             <string>pprint</string>
                             <string>pformat</string>
                             <string>_getattr_</string>
                             <string>context</string>
                             <string>portal</string>
                             <string>request</string>
+                            <string>Products.ERP5Type.Utils</string>
+                            <string>cartesianProduct</string>
                             <string>defined_group</string>
                             <string>_getiter_</string>
                             <string>category</string>
@@ -305,13 +348,14 @@ return pformat(line_list)\n
                             <string>budget</string>
                             <string>line_list</string>
                             <string>isVisibleCell</string>
+                            <string>dict</string>
+                            <string>True</string>
                             <string>budget_line</string>
                             <string>total_level_1_initial_budget</string>
                             <string>total_level_1_current_budget</string>
                             <string>total_level_1_engaged_budget</string>
                             <string>total_level_1_consumed_budget</string>
                             <string>total_level_1_available_budget</string>
-                            <string>dict</string>
                             <string>level_1_line_list</string>
                             <string>variation_axis_list</string>
                             <string>possible_axis</string>
@@ -322,12 +366,19 @@ return pformat(line_list)\n
                             <string>$append0</string>
                             <string>x</string>
                             <string>level_3_variation_category_list</string>
+                            <string>budget_line_vcl</string>
+                            <string>budget_line_cell_range</string>
                             <string>title</string>
                             <string>cell_name_dict</string>
                             <string>cell_style_dict</string>
+                            <string>cell_depth_dict</string>
+                            <string>min_depth</string>
+                            <string>budget_line_as_cell_range_matrixbox</string>
                             <string>cell_range_list</string>
+                            <string>min</string>
                             <string>_write_</string>
                             <string>depth</string>
+                            <string>higher_depth</string>
                             <string>level_2_category</string>
                             <string>total_level_2_initial_budget</string>
                             <string>total_level_2_current_budget</string>
@@ -335,8 +386,11 @@ return pformat(line_list)\n
                             <string>total_level_2_consumed_budget</string>
                             <string>total_level_2_available_budget</string>
                             <string>level_2_line_list</string>
+                            <string>is_higher_level2</string>
                             <string>level_3_category</string>
                             <string>sign</string>
+                            <string>cell_key</string>
+                            <string>_apply_</string>
                             <string>cell</string>
                             <string>initial_budget</string>
                             <string>current_budget</string>
@@ -345,6 +399,9 @@ return pformat(line_list)\n
                             <string>available_budget</string>
                             <string>_inplacevar_</string>
                             <string>consumed_ratio</string>
+                            <string>line_count</string>
+                            <string>line</string>
+                            <string>same_type</string>
                           </tuple>
                         </value>
                     </item>
@@ -356,7 +413,9 @@ return pformat(line_list)\n
         <item>
             <key> <string>func_defaults</string> </key>
             <value>
-              <none/>
+              <tuple>
+                <none/>
+              </tuple>
             </value>
         </item>
         <item>
diff --git a/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_viewBudgetConsumptionReport.xml b/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_viewBudgetConsumptionReport.xml
index afae85311c..5cea15b2bf 100644
--- a/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_viewBudgetConsumptionReport.xml
+++ b/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_viewBudgetConsumptionReport.xml
@@ -93,7 +93,9 @@ AQABAEMAAAB9AQAAAAA=</string> </value>
                          i18n:domain=\'ui\'\n
                          office:version="1.2"\n
                          tal:attributes="dummy python:request.RESPONSE.setHeader(\'Content-Type\', \'text/html;; charset=utf-8\')"\n
-                         tal:define="line_list here/Budget_getBudgetConsumptionReportData;\n
+                         tal:define="line_list_line_count here/Budget_getBudgetConsumptionReportData;\n
+                                     line_list python: line_list_line_count[0];\n
+                                     line_count python: line_list_line_count[1];\n
                                      date_renderer nocall:here/Base_viewFieldLibrary/my_date/render_pdf;\n
                                      start_date python:date_renderer(request.get(\'from_date\', here.getProperty(\'start_date_range_min\')));\n
                                      stop_date python:date_renderer(request.get(\'at_date\', here.getProperty(\'start_date_range_max\')));\n
@@ -107,10 +109,10 @@ AQABAEMAAAB9AQAAAAA=</string> </value>
  </office:font-face-decls>\n
  <office:automatic-styles>\n
   <style:style style:name="co1" style:family="table-column">\n
-   <style:table-column-properties fo:break-before="auto" style:column-width="0.676cm"/>\n
+   <style:table-column-properties fo:break-before="auto" style:column-width="10cm"/>\n
   </style:style>\n
   <style:style style:name="co2" style:family="table-column">\n
-   <style:table-column-properties fo:break-before="auto" style:column-width="10cm"/>\n
+   <style:table-column-properties fo:break-before="auto" style:column-width="2.7cm"/>\n
   </style:style>\n
   <style:style style:name="co3" style:family="table-column">\n
    <style:table-column-properties fo:break-before="auto" style:column-width="2.7cm"/>\n
@@ -252,7 +254,7 @@ AQABAEMAAAB9AQAAAAA=</string> </value>
  <office:body>\n
   <office:spreadsheet>\n
     <table:table table:name="Feuille1" table:style-name="ta1" table:print-ranges="Feuille1.A1:Feuille1.H11"\n
-                 tal:attributes="table:print-ranges python:\'Feuille1.A1:Feuille1.H%d\' % (7 + len(line_list))">\n
+                 tal:attributes="table:print-ranges python:\'Feuille1.A1:Feuille1.G%d\' % (6 + line_count)">\n
 \n
     <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>\n
     <table:table-column table:style-name="co1" table:default-cell-style-name="ce2"/>\n
@@ -260,7 +262,7 @@ AQABAEMAAAB9AQAAAAA=</string> </value>
     <table:table-column table:style-name="co3" table:number-columns-repeated="6" table:default-cell-style-name="Default"/>\n
     <table:table-column table:style-name="co4" table:number-columns-repeated="1016" table:default-cell-style-name="Default"/>\n
     <table:table-row table:style-name="ro1">\n
-     <table:table-cell table:style-name="ce1" office:value-type="string" table:number-columns-spanned="8" table:number-rows-spanned="1">\n
+     <table:table-cell table:style-name="ce1" office:value-type="string" table:number-columns-spanned="7" table:number-rows-spanned="1">\n
       <text:p i18n:translate="">Budget Situation</text:p>\n
      </table:table-cell>\n
      <table:covered-table-cell/>\n
@@ -288,25 +290,32 @@ AQABAEMAAAB9AQAAAAA=</string> </value>
     <table:table-row table:style-name="ro2">\n
      <table:table-cell table:number-columns-repeated="1024"/>\n
     </table:table-row>\n
-    <table:table-row table:style-name="ro3">\n
-     <table:table-cell table:style-name="ce3" office:value-type="string" table:number-columns-spanned="2" table:number-rows-spanned="1">\n
-      <text:p i18n:translate="">Budget Name</text:p>\n
+\n
+    <tal:block tal:repeat="line line_list">\n
+\n
+      <table:table-row table:style-name="ro3" tal:condition="line/is_budget | nothing">\n
+     <table:table-cell table:style-name="ce3" office:value-type="string">\n
+       <text:p tal:content="line/title">Budget Name</text:p>\n
      </table:table-cell>\n
-     <table:covered-table-cell table:style-name="ce8"/>\n
      <table:table-cell table:style-name="ce8" office:value-type="string">\n
-      <text:p i18n:translate="">Initial Budget</text:p>\n
+       <text:p i18n:translate="" tal:condition="not: line/resource_title">Initial Budget</text:p>\n
+       <text:p i18n:translate="" tal:condition="line/resource_title">Initial Budget (<i18n:block i18n:name="resource_title" tal:content="line/resource_title"/>)</text:p>\n
      </table:table-cell>\n
      <table:table-cell table:style-name="ce8" office:value-type="string">\n
-      <text:p i18n:translate="">Current Budget</text:p>\n
+      <text:p i18n:translate="" tal:condition="not: line/resource_title">Current Budget</text:p>\n
+       <text:p i18n:translate="" tal:condition="line/resource_title">Current Budget (<i18n:block i18n:name="resource_title" tal:content="line/resource_title"/>)</text:p>\n
      </table:table-cell>\n
      <table:table-cell table:style-name="ce8" office:value-type="string">\n
-      <text:p i18n:translate="">Engaged Budget</text:p>\n
+      <text:p i18n:translate="" tal:condition="not: line/resource_title">Engaged Budget</text:p>\n
+       <text:p i18n:translate="" tal:condition="line/resource_title">Engaged Budget (<i18n:block i18n:name="resource_title" tal:content="line/resource_title"/>)</text:p>\n
      </table:table-cell>\n
      <table:table-cell table:style-name="ce8" office:value-type="string">\n
-      <text:p i18n:translate="">Consumed Budget</text:p>\n
+      <text:p i18n:translate="" tal:condition="not: line/resource_title">Consumed Budget</text:p>\n
+       <text:p i18n:translate="" tal:condition="line/resource_title">Consumed Budget (<i18n:block i18n:name="resource_title" tal:content="line/resource_title"/>)</text:p>\n
      </table:table-cell>\n
      <table:table-cell table:style-name="ce8" office:value-type="string">\n
-       <text:p i18n:translate="">Available Budget</text:p>\n
+       <text:p i18n:translate="" tal:condition="not: line/resource_title">Available Budget</text:p>\n
+       <text:p i18n:translate="" tal:condition="line/resource_title">Available Budget (<i18n:block i18n:name="resource_title" tal:content="line/resource_title"/>)</text:p>\n
      </table:table-cell>\n
      <table:table-cell table:style-name="ce8" office:value-type="string">\n
       <text:p i18n:translate="">Percentage Realized</text:p>\n
@@ -315,137 +324,93 @@ AQABAEMAAAB9AQAAAAA=</string> </value>
      <table:table-cell table:number-columns-repeated="768"/>\n
     </table:table-row>\n
 \n
-    <tal:block tal:repeat="line line_list">\n
 \n
     <table:table-row table:style-name="Level1" tal:condition="line/is_level_1 | nothing">\n
      <table:table-cell table:style-name="Level1Cell1" office:value-type="string">\n
        <text:p tal:content="line/title">$level1</text:p>\n
      </table:table-cell>\n
-     <table:table-cell table:style-name="Level1" table:number-columns-repeated="7"/>\n
-     <table:table-cell table:number-columns-repeated="768"/>\n
-    </table:table-row>\n
-\n
-    <table:table-row table:style-name="Level2" \n
-                     tal:condition="line/is_level_2 | nothing"\n
-                     tal:define="style python:line.get(\'style\', \'Level2\')">\n
-     <table:table-cell table:style-name="Level2Cell1"\n
-                       tal:attributes="table:style-name string:${style}Cell1"/>\n
-     <table:table-cell table:style-name="Level2" office:value-type="string"\n
-                       tal:attributes="table:style-name style">\n
-      <text:p tal:content="line/title">$level 2</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="Level2" table:number-columns-repeated="6"\n
-                       tal:attributes="table:style-name style"/>\n
-     <table:table-cell table:number-columns-repeated="768"/>\n
-    </table:table-row>\n
-\n
-    <table:table-row table:style-name="Level3" tal:condition="line/is_level_3 | nothing">\n
-     <table:table-cell table:style-name="Level3Cell1"/>\n
-     <table:table-cell table:style-name="Level3" office:value-type="string">\n
-       <text:p><text:s text:c="3"/><tal:block tal:replace="line/title"/></text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="Level3" office:value-type="float" office:value="1"  tal:attributes="office:value line/initial_budget">\n
-      <text:p>1</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="Level3" office:value-type="float" office:value="2" tal:attributes="office:value line/current_budget">\n
-      <text:p>2</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="Level3" office:value-type="float" office:value="3" tal:attributes="office:value line/engaged_budget">\n
-      <text:p>3</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="Level3" office:value-type="float" office:value="4" tal:attributes="office:value line/consumed_budget">\n
-      <text:p>4</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="Level3" office:value-type="float" office:value="5" tal:attributes="office:value line/available_budget">\n
-      <text:p>5</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="Level3" office:value-type="percentage" office:value="0.06"  tal:attributes="office:value line/consumed_ratio">\n
-      <text:p>6,00%</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:number-columns-repeated="1016"/>\n
-    </table:table-row>\n
-\n
-    <table:table-row table:style-name="ro5" tal:condition="line/is_total_level_2 | nothing">\n
-     <table:table-cell table:style-name="ce6"/>\n
-     <table:table-cell table:style-name="ce12" office:value-type="string">\n
-       <text:p>TOTAL <tal:block tal:replace="line/title"/></text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce18" office:value-type="float" office:value="1"  tal:attributes="office:value line/initial_budget">\n
+     <table:table-cell table:style-name="Level1" office:value-type="float" office:value="1"  tal:attributes="office:value line/initial_budget">\n
       <text:p>1</text:p>\n
      </table:table-cell>\n
-     <table:table-cell table:style-name="ce18" office:value-type="float" office:value="2" tal:attributes="office:value line/current_budget">\n
+     <table:table-cell table:style-name="Level1" office:value-type="float" office:value="2" tal:attributes="office:value line/current_budget">\n
       <text:p>2</text:p>\n
      </table:table-cell>\n
-     <table:table-cell table:style-name="ce18" office:value-type="float" office:value="3" tal:attributes="office:value line/engaged_budget">\n
+     <table:table-cell table:style-name="Level1" office:value-type="float" office:value="3" tal:attributes="office:value line/engaged_budget">\n
       <text:p>3</text:p>\n
      </table:table-cell>\n
-     <table:table-cell table:style-name="ce18" office:value-type="float" office:value="4" tal:attributes="office:value line/consumed_budget">\n
+     <table:table-cell table:style-name="Level1" office:value-type="float" office:value="4" tal:attributes="office:value line/consumed_budget">\n
       <text:p>4</text:p>\n
      </table:table-cell>\n
-     <table:table-cell table:style-name="ce18" office:value-type="float" office:value="5" tal:attributes="office:value line/available_budget">\n
+     <table:table-cell table:style-name="Level1" office:value-type="float" office:value="5" tal:attributes="office:value line/available_budget">\n
       <text:p>5</text:p>\n
      </table:table-cell>\n
-     <table:table-cell table:style-name="ce23" office:value-type="percentage" office:value="0.06"  tal:attributes="office:value line/consumed_ratio">\n
+     <table:table-cell table:style-name="Level1" office:value-type="percentage" office:value="0.06" tal:attributes="office:value line/consumed_ratio">\n
       <text:p>6,00%</text:p>\n
      </table:table-cell>\n
-     <table:table-cell table:style-name="ce27" table:number-columns-repeated="1016"/>\n
-    </table:table-row>\n
-\n
-\n
-    <table:table-row table:style-name="ro5" tal:condition="python: line.get(\'is_total_level_1\') and not line.get(\'is_last_line\')">\n
-     <table:table-cell table:style-name="ce7"/>\n
-     <table:table-cell table:style-name="ce13" office:value-type="string">\n
-       <text:p>TOTAL <tal:block tal:replace="line/title"/></text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce15" office:value-type="float" office:value="1"  tal:attributes="office:value line/initial_budget">\n
-      <text:p>1</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce15" office:value-type="float" office:value="2" tal:attributes="office:value line/current_budget">\n
-      <text:p>2</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce15" office:value-type="float" office:value="3" tal:attributes="office:value line/engaged_budget">\n
-      <text:p>3</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce15" office:value-type="float" office:value="4" tal:attributes="office:value line/consumed_budget">\n
-      <text:p>4</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce15" office:value-type="float" office:value="5" tal:attributes="office:value line/available_budget">\n
-      <text:p>5</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce24" office:value-type="percentage" office:value="0.06" tal:attributes="office:value line/consumed_ratio">\n
-      <text:p>6,00%</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce26" table:number-columns-repeated="248"/>\n
      <table:table-cell table:number-columns-repeated="768"/>\n
     </table:table-row>\n
 \n
-\n
-    <table:table-row table:style-name="ro4" tal:condition="line/is_last_line | nothing">\n
-     <table:table-cell table:style-name="ce7"/>\n
-     <table:table-cell table:style-name="ce13" office:value-type="string">\n
-       <text:p>TOTAL <tal:block tal:replace="line/title"/></text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce15" office:value-type="float" office:value="1"  tal:attributes="office:value line/initial_budget">\n
-      <text:p>1</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce15" office:value-type="float" office:value="2" tal:attributes="office:value line/current_budget">\n
-      <text:p>2</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce15" office:value-type="float" office:value="3" tal:attributes="office:value line/engaged_budget">\n
-      <text:p>3</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce15" office:value-type="float" office:value="4" tal:attributes="office:value line/consumed_budget">\n
-      <text:p>4</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce15" office:value-type="float" office:value="5" tal:attributes="office:value line/available_budget">\n
-      <text:p>5</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce24" office:value-type="percentage" office:value="0.06"  tal:attributes="office:value line/consumed_ratio">\n
-      <text:p>6,00%</text:p>\n
-     </table:table-cell>\n
-     <table:table-cell table:style-name="ce26" table:number-columns-repeated="248"/>\n
-     <table:table-cell table:number-columns-repeated="768"/>\n
+    <table:table-row table:style-name="Level2" \n
+                     tal:condition="line/is_level_2 | nothing">\n
+     <tal:block tal:define="style python:line.get(\'style\', \'Level2\')">\n
+       <table:table-cell table:style-name="Level2Cell1"\n
+                         tal:attributes="table:style-name string:${style}Cell1">\n
+        <text:p tal:content="line/title">$level 2</text:p>\n
+       </table:table-cell>\n
+         <table:table-cell table:style-name="ce18" office:value-type="float" office:value="1"  tal:attributes="office:value line/initial_budget; table:style-name style">\n
+          <text:p>1</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="ce18" office:value-type="float" office:value="2" tal:attributes="office:value line/current_budget; table:style-name style">\n
+          <text:p>2</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="ce18" office:value-type="float" office:value="3" tal:attributes="office:value line/engaged_budget; table:style-name style">\n
+          <text:p>3</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="ce18" office:value-type="float" office:value="4" tal:attributes="office:value line/consumed_budget; table:style-name style">\n
+          <text:p>4</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="ce18" office:value-type="float" office:value="5" tal:attributes="office:value line/available_budget; table:style-name style">\n
+          <text:p>5</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="ce23" office:value-type="percentage" office:value="0.06"  tal:attributes="office:value line/consumed_ratio; table:style-name style">\n
+           <text:p>6,00%</text:p>\n
+         </table:table-cell>\n
+       <table:table-cell table:number-columns-repeated="768"/>\n
+     </tal:block>\n
     </table:table-row>\n
+  \n
+    <tal:block tal:condition="python: same_type(line, [])">\n
+      <table:table-row-group table:display="false">\n
+        <tal:block tal:repeat="subline line">\n
+          <table:table-row table:style-name="Level3" \n
+            tal:attributes="table:visibility python: repeat[\'subline\'].first and \'collapse\' or None"\n
+            tal:condition="subline/is_level_3 | nothing">\n
+         <table:table-cell table:style-name="Level3Cell1" office:value-type="string">\n
+           <text:p><tal:block tal:replace="subline/title"/></text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="Level3" office:value-type="float" office:value="1"  tal:attributes="office:value subline/initial_budget">\n
+          <text:p>1</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="Level3" office:value-type="float" office:value="2" tal:attributes="office:value subline/current_budget">\n
+          <text:p>2</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="Level3" office:value-type="float" office:value="3" tal:attributes="office:value subline/engaged_budget">\n
+          <text:p>3</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="Level3" office:value-type="float" office:value="4" tal:attributes="office:value subline/consumed_budget">\n
+          <text:p>4</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="Level3" office:value-type="float" office:value="5" tal:attributes="office:value subline/available_budget">\n
+          <text:p>5</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:style-name="Level3" office:value-type="percentage" office:value="0.06"  tal:attributes="office:value subline/consumed_ratio">\n
+          <text:p>6,00%</text:p>\n
+         </table:table-cell>\n
+         <table:table-cell table:number-columns-repeated="1016"/>\n
+        </table:table-row>\n
+      </tal:block>\n
+      </table:table-row-group>\n
+    </tal:block>\n
 \n
   </tal:block>\n
    </table:table>\n
diff --git a/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_viewBudgetConsumptionReportTemplate.xml b/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_viewBudgetConsumptionReportTemplate.xml
index 515e476d55..d996a83637 100644
--- a/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_viewBudgetConsumptionReportTemplate.xml
+++ b/bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/Budget_viewBudgetConsumptionReportTemplate.xml
@@ -11,7 +11,7 @@
       <dictionary>
         <item>
             <key> <string>_EtagSupport__etag</string> </key>
-            <value> <string>ts57189905.65</string> </value>
+            <value> <string>ts57433893.89</string> </value>
         </item>
         <item>
             <key> <string>__name__</string> </key>
@@ -23,291 +23,291 @@
         </item>
         <item>
             <key> <string>data</string> </key>
-            <value> <string encoding="base64">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
-7mSmJpOXilyrTblWlXK9PWhxkfUKY7dpgsAYuhbDsbdVuC1zVWOAbt6kdvGmZmxInG17s+Zg26W6
-TmrikMXC1WZTG+t8YJrMFwiJskmbVWdlQ6b/El9od4YypCpiXwp3Q5SZRPk5abKbT2TTUc3sk05M
-LgiynvKzUlJOO2w7kch7UcO0FQuUbszYgU/I063lRHS6vbHz7+LfwRHCuLO7Dx8+3ErlwqTEr4FW
-jYdSHNSPLVUhWGTnM5U9+UDFjE9t7pSUgVxZLU+5PotAf4WntH3OBB0M8wX6CLfbRa2xS8HfMDzQ
-bWvKX4rZs0yz+CmmC+3QyZPEn38uaCkTszJokRnms7Xc0OftG/f7VGGREYnssI4sgWR5KyqKKBNF
-yKqkKBItSbiihHd/WqQCEGmUzU7TdqqeCVEGX1mEF1YnAsuFlCdkh7Z3222eMC67AHyzWFQKOFm5
-iYzIzZKD4O7/UEsHCGyv3v9XDAAAAJcAAFBLAwQUAAAAAAAtjGI7kZlpE8cEAADHBAAACAAAAG1l
-dGEueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KCjxvZmZpY2U6ZG9j
-dW1lbnQtbWV0YSB4bWxuczpvZmZpY2U9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6
-eG1sbnM6b2ZmaWNlOjEuMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
-bmsiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6bWV0
-YT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRhOjEuMCIgeG1sbnM6
-b29vPSJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC9vZmZpY2UiIG9mZmljZTp2ZXJzaW9uPSIx
-LjIiPgogPG9mZmljZTptZXRhPgogIAogIAogIAogIAogIAogIDxtZXRhOmdlbmVyYXRvcj5PcGVu
-T2ZmaWNlLm9yZy8zLjAkVW5peCBPcGVuT2ZmaWNlLm9yZ19wcm9qZWN0LzMwMG05JEJ1aWxkLTkz
-NTg8L21ldGE6Z2VuZXJhdG9yPgogIAogIAogIAogIAogIAogIDxtZXRhOmNyZWF0aW9uLWRhdGU+
-MjAwOS0wMS0yM1QxMjowNDozMjwvbWV0YTpjcmVhdGlvbi1kYXRlPgogIAogIAogIAogIAogIAog
-IDxkYzpkYXRlPjIwMDktMTEtMDJUMTg6MzM6MjY8L2RjOmRhdGU+CiAgCiAgCiAgCiAgCiAgCiAg
-PGRjOmxhbmd1YWdlPmZyLUZSPC9kYzpsYW5ndWFnZT4KICAKICAKICAKICAKICAKICA8bWV0YTpl
-ZGl0aW5nLWN5Y2xlcz4xNzwvbWV0YTplZGl0aW5nLWN5Y2xlcz4KICAKICAKICAKICAKICAKICA8
-bWV0YTplZGl0aW5nLWR1cmF0aW9uPlBUMTFIMDRNNTdTPC9tZXRhOmVkaXRpbmctZHVyYXRpb24+
-CiAgCiAgCiAgCiAgCiAgCiAgPGRjOmNyZWF0b3I+SsOpcm9tZSBQZXJyaW48L2RjOmNyZWF0b3I+
-CiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAg
-CiAgCiAgCiAgCiAgCiAgCiAgCiAgPG1ldGE6ZG9jdW1lbnQtc3RhdGlzdGljIG1ldGE6dGFibGUt
-Y291bnQ9IjMiIG1ldGE6Y2VsbC1jb3VudD0iNjYiIG1ldGE6b2JqZWN0LWNvdW50PSIwIi8+CiAg
-PG1ldGE6dXNlci1kZWZpbmVkIG1ldGE6bmFtZT0iSW5mbyAxIi8+CiAgPG1ldGE6dXNlci1kZWZp
-bmVkIG1ldGE6bmFtZT0iSW5mbyAyIi8+CiAgPG1ldGE6dXNlci1kZWZpbmVkIG1ldGE6bmFtZT0i
-SW5mbyAzIi8+CiAgPG1ldGE6dXNlci1kZWZpbmVkIG1ldGE6bmFtZT0iSW5mbyA0Ii8+PC9vZmZp
-Y2U6bWV0YT4KPC9vZmZpY2U6ZG9jdW1lbnQtbWV0YT5QSwMEFAAIAAgALYxiOwAAAAAAAAAAAAAA
-ABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmftV2k4FO67Hik0DSpky0gqUlEI2SNEthlDjK2S
-XfZtjH3NHlnHMjQMxlpEjPWHiOyG1NiXkbHvYzDH/5zz6VznOp/Oh/PhvNd1X+/74f3wvPfzPPf7
-3NH6uhrMQB4gAABg1nz+DHq2EwAAOgATw9npVodEKQDAdUnz2VOYb/bapJITmy0/4+a0ZmFyu/4K
-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
-DwAPAO4DAABGOwAAAAA=</string> </value>
+            <value> <string encoding="base64">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
+IHhtbG5zOm9mZmljZT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZp
+Y2U6MS4wIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6
+ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczptZXRhPSJ1cm46b2Fz
+aXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1ldGE6MS4wIiB4bWxuczpvb289Imh0dHA6
+Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L29mZmljZSIgb2ZmaWNlOnZlcnNpb249IjEuMiI+CiA8b2Zm
+aWNlOm1ldGE+CiAgCiAgCiAgCiAgCiAgCiAgCiAgPG1ldGE6Z2VuZXJhdG9yPk9wZW5PZmZpY2Uu
+b3JnLzMuMCRVbml4IE9wZW5PZmZpY2Uub3JnX3Byb2plY3QvMzAwbTkkQnVpbGQtOTM1ODwvbWV0
+YTpnZW5lcmF0b3I+CiAgCiAgCiAgCiAgCiAgCiAgCiAgPG1ldGE6Y3JlYXRpb24tZGF0ZT4yMDA5
+LTAxLTIzVDEyOjA0OjMyPC9tZXRhOmNyZWF0aW9uLWRhdGU+CiAgCiAgCiAgCiAgCiAgCiAgCiAg
+PGRjOmRhdGU+MjAwOS0xMS0wNVQxNjoxMTowNzwvZGM6ZGF0ZT4KICAKICAKICAKICAKICAKICAK
+ICA8ZGM6bGFuZ3VhZ2U+ZnItRlI8L2RjOmxhbmd1YWdlPgogIAogIAogIAogIAogIAogIAogIDxt
+ZXRhOmVkaXRpbmctY3ljbGVzPjIyPC9tZXRhOmVkaXRpbmctY3ljbGVzPgogIAogIAogIAogIAog
+IAogIAogIDxtZXRhOmVkaXRpbmctZHVyYXRpb24+UFQxM0gwM00wMlM8L21ldGE6ZWRpdGluZy1k
+dXJhdGlvbj4KICAKICAKICAKICAKICAKICAKICA8ZGM6Y3JlYXRvcj5Kw6lyb21lIFBlcnJpbjwv
+ZGM6Y3JlYXRvcj4KICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAK
+ICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICA8bWV0YTpwcmlu
+dGVkLWJ5PkrDqXJvbWUgUGVycmluPC9tZXRhOnByaW50ZWQtYnk+CiAgPG1ldGE6cHJpbnQtZGF0
+ZT4yMDA5LTExLTA1VDE0OjM3OjQwPC9tZXRhOnByaW50LWRhdGU+CiAgPG1ldGE6ZG9jdW1lbnQt
+c3RhdGlzdGljIG1ldGE6dGFibGUtY291bnQ9IjMiIG1ldGE6Y2VsbC1jb3VudD0iNDYiIG1ldGE6
+b2JqZWN0LWNvdW50PSIwIi8+CiAgPG1ldGE6dXNlci1kZWZpbmVkIG1ldGE6bmFtZT0iSW5mbyAx
+Ii8+CiAgPG1ldGE6dXNlci1kZWZpbmVkIG1ldGE6bmFtZT0iSW5mbyAyIi8+CiAgPG1ldGE6dXNl
+ci1kZWZpbmVkIG1ldGE6bmFtZT0iSW5mbyAzIi8+CiAgPG1ldGE6dXNlci1kZWZpbmVkIG1ldGE6
+bmFtZT0iSW5mbyA0Ii8+PC9vZmZpY2U6bWV0YT4KPC9vZmZpY2U6ZG9jdW1lbnQtbWV0YT5QSwME
+FAAIAAgAY3llOwAAAAAAAAAAAAAAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmftWPc3XHHT
+17voQbArRLSIkgRRV69B9BJddCHBqkGityzRe9ToVvSy2NWCFaKHLNFWXb3Xd/OU8573nPec5x94
+7i/3njl3Zr535jPzmbnROloqlGT3yHBwcCjVVBV1sfdRHBxcHBIi7BMCc7aLg8O8paYop++bjcmR
+dWVVuu1z4Ppo9xXHVQ5ugleU/vF7RFOUgJz11z8prDGMNnJwpSWlwWL2b3RkrtH0jeQWAyW+8K86
+7Q6kCe94o1x9Y3t05xFg3M85SyrYd004VJ+TFaysCkC5dLfd83b9Hnt6tp2ghn91wAJkUr3b6uo8
+JT0Pt69uf3B27PLLq7pJvRulAqlm54eoKkDBtsPA55IFUx2Wem6RsxOJO5x81yamlO1SfwjPpAWP
+Ss1kfx/U3w4MqHUelmk9O5iPatJrTrGJZDzJsdYBFd0Xvz4dd5Zuqi5xKDHoX2ZzPm4zaPDz0as2
+H7SgFUsqK+MNpwDYnbUGdrJZzPhEyOEmRuAsbYj/ztfqANMWQ4jlnLS4tNXQAAnhB2s8bCu5wOlV
+8S+VySIjax3ph9yCmuVXNX40SgeYokyYuNkjEwSirvPwZvf0eiIj2bS9g2dNIZhN99ByOICe2omE
+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
+ZIp/yhQGp7Fr9RsJcFBlkaLI1qb1NOZEe87WzUKnoeJWQYyUOv65GMWkufnwzx4YylbkcsBV7VWP
+/MQ4qTbs1a9r7AGpp27uX0LsSu4WzJ6JVoaQRONzsEuXq29qVBS7VPQySo2pjwuSlIlVImiWcAgV
+//7zuH9H51/bx38F/xX8f4Ir2fELp5osRaM2HOylpqSlWC1v9fF/AFBLBwhvewC3yRcAACQaAABQ
+SwMEFAAIAAgAY3llOwAAAAAAAAAAAAAAACcAAABDb25maWd1cmF0aW9uczIvYWNjZWxlcmF0b3Iv
+Y3VycmVudC54bWwDAFBLBwgAAAAAAgAAAAAAAABQSwMEFAAAAAAAY3llOwAAAAAAAAAAAAAAABwA
+AABDb25maWd1cmF0aW9uczIvcHJvZ3Jlc3NiYXIvUEsDBBQAAAAAAGN5ZTsAAAAAAAAAAAAAAAAY
+AAAAQ29uZmlndXJhdGlvbnMyL2Zsb2F0ZXIvUEsDBBQAAAAAAGN5ZTsAAAAAAAAAAAAAAAAaAAAA
+Q29uZmlndXJhdGlvbnMyL3BvcHVwbWVudS9QSwMEFAAAAAAAY3llOwAAAAAAAAAAAAAAABgAAABD
+b25maWd1cmF0aW9uczIvbWVudWJhci9QSwMEFAAAAAAAY3llOwAAAAAAAAAAAAAAABgAAABDb25m
+aWd1cmF0aW9uczIvdG9vbGJhci9QSwMEFAAAAAAAY3llOwAAAAAAAAAAAAAAAB8AAABDb25maWd1
+cmF0aW9uczIvaW1hZ2VzL0JpdG1hcHMvUEsDBBQAAAAAAGN5ZTsAAAAAAAAAAAAAAAAaAAAAQ29u
+ZmlndXJhdGlvbnMyL3N0YXR1c2Jhci9QSwMEFAAIAAgAY3llOwAAAAAAAAAAAAAAAAwAAABzZXR0
+aW5ncy54bWzNWm1zqjoQ/n5+hcPXO62Ibe/RaT2Dtvbl1Fbxpcq3AKmmhoSTBNH++htEOz1UFCs4
+1y8OJNlnd9nNsxu4/DV3cWEGGUeUXCmlU1UpQGJTB5HxldLvNU9+Kr9qP35c0tdXZMOqQ23fhUSc
+cCiEnMMLcj3h1Wj4SvEZqVLAEa8S4EJeFXaVepCsl1U/z64u0aI7c4zI9EqZCOFVi8UgCE6D8ill
+42KpUqkUl6PrqTYlr2icFiqa/RmKUvoBFC6IlFmCaap6VoyulcJKyU++0ZTaj8LaE2sHyFuFyxVK
+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
+cG5nUEsBAhQAFAAIAAgAY3llOwAAAAACAAAAAAAAACcAAAAAAAAAAAAAAAAAijIAAENvbmZpZ3Vy
+YXRpb25zMi9hY2NlbGVyYXRvci9jdXJyZW50LnhtbFBLAQIUABQAAAAAAGN5ZTsAAAAAAAAAAAAA
+AAAcAAAAAAAAAAAAAAAAAOEyAABDb25maWd1cmF0aW9uczIvcHJvZ3Jlc3NiYXIvUEsBAhQAFAAA
+AAAAY3llOwAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAGzMAAENvbmZpZ3VyYXRpb25zMi9mbG9h
+dGVyL1BLAQIUABQAAAAAAGN5ZTsAAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAAAFEzAABDb25maWd1
+cmF0aW9uczIvcG9wdXBtZW51L1BLAQIUABQAAAAAAGN5ZTsAAAAAAAAAAAAAAAAYAAAAAAAAAAAA
+AAAAAIkzAABDb25maWd1cmF0aW9uczIvbWVudWJhci9QSwECFAAUAAAAAABjeWU7AAAAAAAAAAAA
+AAAAGAAAAAAAAAAAAAAAAAC/MwAAQ29uZmlndXJhdGlvbnMyL3Rvb2xiYXIvUEsBAhQAFAAAAAAA
+Y3llOwAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAA9TMAAENvbmZpZ3VyYXRpb25zMi9pbWFnZXMv
+Qml0bWFwcy9QSwECFAAUAAAAAABjeWU7AAAAAAAAAAAAAAAAGgAAAAAAAAAAAAAAAAAyNAAAQ29u
+ZmlndXJhdGlvbnMyL3N0YXR1c2Jhci9QSwECFAAUAAgACABjeWU7HuquVD8FAABMIgAADAAAAAAA
+AAAAAAAAAABqNAAAc2V0dGluZ3MueG1sUEsBAhQAFAAIAAgAY3llO0TVgP9KAQAAaAcAABUAAAAA
+AAAAAAAAAAAA4zkAAE1FVEEtSU5GL21hbmlmZXN0LnhtbFBLBQYAAAAADwAPAO4DAABwOwAAAAA=</string> </value>
         </item>
         <item>
             <key> <string>precondition</string> </key>
@@ -315,7 +315,7 @@ DwAPAO4DAABGOwAAAAA=</string> </value>
         </item>
         <item>
             <key> <string>size</string> </key>
-            <value> <int>16202</int> </value>
+            <value> <int>16244</int> </value>
         </item>
         <item>
             <key> <string>title</string> </key>
diff --git a/bt5/erp5_budget/bt/revision b/bt5/erp5_budget/bt/revision
index f123c4f4b5..dd4a90065c 100644
--- a/bt5/erp5_budget/bt/revision
+++ b/bt5/erp5_budget/bt/revision
@@ -1 +1 @@
-251
\ No newline at end of file
+254
\ No newline at end of file
-- 
2.30.9