From d84a656a480264962f8e7721b891db20a18fda45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Thu, 1 Nov 2007 22:33:10 +0000
Subject: [PATCH] Add a new parameter in trial balance to have intermediate
 sums

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@17352 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 ...ntModule_getAccountListForTrialBalance.xml |  94 +++++++++-
 ...odule_getTrialBalanceReportSectionList.xml |  13 +-
 .../AccountModule_viewTrialBalanceReport.xml  |   2 +-
 ...untModule_viewTrialBalanceReportDialog.xml |   1 +
 .../your_per_account_class_summary.xml        | 171 ++++++++++++++++++
 bt5/erp5_accounting/bt/revision               |   2 +-
 6 files changed, 266 insertions(+), 17 deletions(-)
 create mode 100644 bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReportDialog/your_per_account_class_summary.xml

diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance.xml
index 955bc8ac76..9ae86e05ad 100644
--- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance.xml
+++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance.xml
@@ -3,11 +3,8 @@
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
       <tuple>
-        <tuple>
-          <string>Products.PythonScripts.PythonScript</string>
-          <string>PythonScript</string>
-        </tuple>
-        <none/>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
       </tuple>
     </pickle>
     <pickle>
@@ -634,7 +631,69 @@ request.set(\'TrialBalance.debit\', total_debit)\n
 request.set(\'TrialBalance.credit\', total_credit)\n
 request.set(\'TrialBalance.final_balance_if_debit\', total_final_balance_if_debit)\n
 request.set(\'TrialBalance.final_balance_if_credit\', total_final_balance_if_credit)\n
-return line_list\n
+\n
+if not per_account_class_summary:\n
+  return line_list\n
+\n
+current_gap = portal.portal_preferences.getPreferredAccountingTransactionGap()\n
+if current_gap.startswith(\'gap/\'):\n
+  current_gap = current_gap[4:]\n
+def getAccountClass(account_relative_url):\n
+  account = traverse(account_relative_url)\n
+  for gap in account.getGapList():\n
+    if gap.startswith(current_gap):\n
+     gap_part_list = gap.split(\'/\')\n
+     # country / accounting principle / ${class}\n
+     if len(gap_part_list) > 2:\n
+       return gap_part_list[2]\n
+  return None # this account has no class on the current GAP  \n
+\n
+new_line_list = []\n
+account_per_class = dict()\n
+for brain in line_list:\n
+  account_per_class.setdefault(\n
+      getAccountClass(brain.node_relative_url), []).append(brain)\n
+\n
+account_class_list = account_per_class.keys()\n
+account_class_list.sort()\n
+\n
+add_line = new_line_list.append\n
+for account_class in account_class_list:\n
+  initial_debit_balance = 0\n
+  debit = 0\n
+  final_debit_balance = 0\n
+  initial_credit_balance = 0\n
+  credit = 0\n
+  final_credit_balance = 0\n
+  final_balance_if_debit = 0\n
+  final_balance_if_credit = 0\n
+\n
+  for account in account_per_class[account_class]:\n
+    initial_debit_balance += account.initial_debit_balance\n
+    debit += account.debit\n
+    final_debit_balance += account.final_debit_balance\n
+    initial_credit_balance += account.initial_credit_balance\n
+    credit += account.credit\n
+    final_credit_balance += account.final_credit_balance\n
+    final_balance_if_debit += account.final_balance_if_debit\n
+    final_balance_if_credit += account.final_balance_if_credit\n
+    add_line(account)\n
+    \n
+  # summary\n
+  add_line(Object(node_title=N_(\'Total for class ${account_class}\',\n
+                   mapping=dict(account_class=account_class or \'???\')),\n
+          initial_debit_balance=round(initial_debit_balance, precision),\n
+          debit=round(debit, precision),\n
+          final_debit_balance=round(final_debit_balance, precision),\n
+          initial_credit_balance=round(initial_credit_balance, precision),\n
+          credit=round(credit, precision),\n
+          final_credit_balance=round(final_credit_balance, precision),\n
+          final_balance_if_debit=round(final_balance_if_debit, precision),\n
+          final_balance_if_credit=round(final_balance_if_credit, precision),))\n
+\n
+  add_line(Object(node_title=\' \'))\n
+\n
+return new_line_list\n
 # vim: foldmethod=marker\n
 
 
@@ -660,7 +719,7 @@ return line_list\n
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>show_empty_accounts, expand_accounts, at_date, from_date, period_start_date, section_uid, simulation_state, precision, node_uid, **kw</string> </value>
+            <value> <string>show_empty_accounts, expand_accounts, at_date, from_date, period_start_date, section_uid, simulation_state, precision, node_uid, per_account_class_summary=0, **kw</string> </value>
         </item>
         <item>
             <key> <string>errors</string> </key>
@@ -680,7 +739,7 @@ return line_list\n
                   <dictionary>
                     <item>
                         <key> <string>co_argcount</string> </key>
-                        <value> <int>9</int> </value>
+                        <value> <int>10</int> </value>
                     </item>
                     <item>
                         <key> <string>co_varnames</string> </key>
@@ -695,6 +754,7 @@ return line_list\n
                             <string>simulation_state</string>
                             <string>precision</string>
                             <string>node_uid</string>
+                            <string>per_account_class_summary</string>
                             <string>kw</string>
                             <string>Products.PythonScripts.standard</string>
                             <string>Object</string>
@@ -736,6 +796,7 @@ return line_list\n
                             <string>_getitem_</string>
                             <string>account_props</string>
                             <string>total_price</string>
+                            <string>_inplacevar_</string>
                             <string>round</string>
                             <string>max</string>
                             <string>traverse</string>
@@ -762,6 +823,19 @@ return line_list\n
                             <string>closing_balance</string>
                             <string>line</string>
                             <string>getStringIndex</string>
+                            <string>current_gap</string>
+                            <string>getAccountClass</string>
+                            <string>new_line_list</string>
+                            <string>account_per_class</string>
+                            <string>brain</string>
+                            <string>account_class_list</string>
+                            <string>add_line</string>
+                            <string>account_class</string>
+                            <string>debit</string>
+                            <string>credit</string>
+                            <string>final_balance_if_debit</string>
+                            <string>final_balance_if_credit</string>
+                            <string>account</string>
                           </tuple>
                         </value>
                     </item>
@@ -773,7 +847,9 @@ return line_list\n
         <item>
             <key> <string>func_defaults</string> </key>
             <value>
-              <none/>
+              <tuple>
+                <int>0</int>
+              </tuple>
             </value>
         </item>
         <item>
diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getTrialBalanceReportSectionList.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getTrialBalanceReportSectionList.xml
index df4484cc08..e83cb52569 100644
--- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getTrialBalanceReportSectionList.xml
+++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getTrialBalanceReportSectionList.xml
@@ -3,11 +3,8 @@
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
       <tuple>
-        <tuple>
-          <string>Products.PythonScripts.PythonScript</string>
-          <string>PythonScript</string>
-        </tuple>
-        <none/>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
       </tuple>
     </pickle>
     <pickle>
@@ -81,6 +78,7 @@ from_date = request.get(\'from_date\', None)\n
 simulation_state = request[\'simulation_state\']\n
 expand_accounts = request.get(\'expand_accounts\', False)\n
 show_empty_accounts = request[\'show_empty_accounts\']\n
+per_account_class_summary = request[\'per_account_class_summary\']\n
 \n
 section_uid = portal.Base_getSectionUidListForSectionCategory(\n
                                    request[\'section_category\'])\n
@@ -128,7 +126,9 @@ return [ ReportSection(\n
                                   section_uid=section_uid,\n
                                   simulation_state=simulation_state,\n
                                   precision=precision,\n
-                                  node_uid=node_uid), )]\n
+                                  node_uid=node_uid,\n
+                                  per_account_class_summary=\n
+                                          per_account_class_summary), )]\n
 </string> </value>
         </item>
         <item>
@@ -192,6 +192,7 @@ return [ ReportSection(\n
                             <string>False</string>
                             <string>expand_accounts</string>
                             <string>show_empty_accounts</string>
+                            <string>per_account_class_summary</string>
                             <string>section_uid</string>
                             <string>period_start_date</string>
                             <string>currency</string>
diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReport.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReport.xml
index e7e4550460..303f61bae2 100644
--- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReport.xml
+++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReport.xml
@@ -77,8 +77,8 @@
                     <value>
                       <list>
                         <string>your_period_start_date</string>
-                        <string>your_at_date</string>
                         <string>your_from_date</string>
+                        <string>your_at_date</string>
                         <string>your_section_category</string>
                         <string>your_simulation_state</string>
                       </list>
diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReportDialog.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReportDialog.xml
index 39f56d83d1..77ef8f7b1d 100644
--- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReportDialog.xml
+++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReportDialog.xml
@@ -91,6 +91,7 @@
                         <string>your_at_date</string>
                         <string>your_expand_accounts</string>
                         <string>your_show_empty_accounts</string>
+                        <string>your_per_account_class_summary</string>
                         <string>your_portal_skin</string>
                         <string>your_format</string>
                       </list>
diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReportDialog/your_per_account_class_summary.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReportDialog/your_per_account_class_summary.xml
new file mode 100644
index 0000000000..2526e0a321
--- /dev/null
+++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewTrialBalanceReportDialog/your_per_account_class_summary.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="CheckBoxField" module="Products.Formulator.StandardFields"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_per_account_class_summary</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Summary for each Account Class</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_accounting/bt/revision b/bt5/erp5_accounting/bt/revision
index 0642336574..8cb9d84396 100644
--- a/bt5/erp5_accounting/bt/revision
+++ b/bt5/erp5_accounting/bt/revision
@@ -1 +1 @@
-473
\ No newline at end of file
+475
\ No newline at end of file
-- 
2.30.9