From 3bef8118bdf018c2d5f0665ce87099f1d199b3b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Mon, 5 Nov 2007 17:59:14 +0000
Subject: [PATCH] Initial balance should take into account recievable and
 payable accounts detailed per third party

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@17396 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 ...ntModule_getAccountListForTrialBalance.xml | 136 +++++++++++-------
 bt5/erp5_accounting/bt/revision               |   2 +-
 2 files changed, 88 insertions(+), 50 deletions(-)

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 9ae86e05ad..4c5a387af4 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
@@ -310,7 +310,13 @@ initial_balance_date = (from_date - 1).latestTime()\n
 # standards accounts {{{\n
 # balance at period start date\n
 for node in getInventoryList(\n
-                node_category_strict_membership=account_type_to_group_by_node,\n
+                node_category_strict_membership=[\n
+                  \'account_type/asset\',\n
+                  \'account_type/asset/cash\',\n
+                  \'account_type/asset/receivable/refundable_vat\',\n
+                  \'account_type/liability/payable/collected_vat\',\n
+                  \'account_type/equity\',\n
+                  \'account_type/liability\',],\n
                 group_by_node=1,\n
                 to_date=period_start_date,\n
                 portal_type=accounting_movement_type_list +\n
@@ -327,7 +333,13 @@ for node in getInventoryList(\n
 \n
 # Balance Transaction\n
 for node in getInventoryList(\n
-                node_category_strict_membership=account_type_to_group_by_node,\n
+                node_category_strict_membership=[\n
+                  \'account_type/asset\',\n
+                  \'account_type/asset/cash\',\n
+                  \'account_type/asset/receivable/refundable_vat\',\n
+                  \'account_type/liability/payable/collected_vat\',\n
+                  \'account_type/equity\',\n
+                  \'account_type/liability\',],\n
                 group_by_node=1,\n
                 from_date=from_date,\n
                 at_date=from_date + 1,\n
@@ -337,13 +349,20 @@ for node in getInventoryList(\n
                           (node[\'node_relative_url\'], MARKER, MARKER),\n
                           dict(debit=0, credit=0))\n
   total_price = node[\'total_price\'] or 0\n
-  total_price += account_props.get(\'initial_debit_balance\', 0)\n
-  total_price -= account_props.get(\'initial_credit_balance\', 0)\n
-  account_props[\'initial_debit_balance\'] = max(total_price, 0)\n
-  account_props[\'initial_credit_balance\'] = max(- total_price, 0)\n
+  account_props[\'initial_debit_balance\'] = account_props.get(\n
+              \'initial_debit_balance\', 0) + max(total_price, 0)\n
+  account_props[\'initial_credit_balance\'] = account_props.get(\n
+              \'initial_credit_balance\', 0) + max(- total_price, 0)\n
+\n
 \n
 for node in getInventoryList(\n
-                node_category_strict_membership=account_type_to_group_by_node,\n
+                node_category_strict_membership=[\n
+                  \'account_type/asset\',\n
+                  \'account_type/asset/cash\',\n
+                  \'account_type/asset/receivable/refundable_vat\',\n
+                  \'account_type/liability/payable/collected_vat\',\n
+                  \'account_type/equity\',\n
+                  \'account_type/liability\',],\n
                 group_by_node=1,\n
                 omit_output=1,\n
                 from_date=period_start_date,\n
@@ -358,7 +377,13 @@ for node in getInventoryList(\n
                     \'initial_debit_balance\', 0) + total_price\n
 \n
 for node in getInventoryList(\n
-                node_category_strict_membership=account_type_to_group_by_node,\n
+                node_category_strict_membership=[\n
+                  \'account_type/asset\',\n
+                  \'account_type/asset/cash\',\n
+                  \'account_type/asset/receivable/refundable_vat\',\n
+                  \'account_type/liability/payable/collected_vat\',\n
+                  \'account_type/equity\',\n
+                  \'account_type/liability\',],\n
                 group_by_node=1,\n
                 omit_input=1,\n
                 from_date=period_start_date,\n
@@ -408,45 +433,51 @@ for node in getInventoryList(\n
 # }}}\n
 \n
 # payable / receivable accounts {{{\n
-if account_type_to_group_by_mirror_section:\n
-  # initial balance\n
-  for node in getInventoryList(\n
-                  node_category_strict_membership=\n
-                          account_type_to_group_by_mirror_section,\n
-                  group_by_mirror_section=1,\n
-                  group_by_node=1,\n
-                  to_date=period_start_date,\n
-                  portal_type=accounting_movement_type_list +\n
-                                balance_movement_type_list,\n
-                  **inventory_params):\n
-    account_props = line_per_account.setdefault(\n
-            (node[\'node_relative_url\'], node[\'mirror_section_uid\'], MARKER),\n
-            dict(debit=0, credit=0))\n
-    total_price = node[\'total_price\'] or 0\n
-    account_props[\'initial_debit_balance\'] = account_props.get(\n
-                    \'initial_debit_balance\', 0) + max(total_price, 0)\n
-    account_props[\'initial_credit_balance\'] = account_props.get(\n
-                   \'initial_credit_balance\', 0) + max(-total_price, 0)\n
-\n
-  # Balance Transactions\n
-  for node in getInventoryList(\n
-                  node_category_strict_membership=\n
-                          account_type_to_group_by_mirror_section,\n
-                  group_by_mirror_section=1,\n
-                  group_by_node=1,\n
-                  from_date=from_date,\n
-                  at_date=from_date + 1,\n
-                  portal_type=balance_movement_type_list,\n
-                  **inventory_params):\n
-    account_props = line_per_account.setdefault(\n
-            (node[\'node_relative_url\'], node[\'mirror_section_uid\'], MARKER),\n
-            dict(debit=0, credit=0))\n
-    total_price = node[\'total_price\'] or 0\n
-    total_price += account_props.get(\'initial_debit_balance\', 0)\n
-    total_price -= account_props.get(\'initial_credit_balance\', 0)\n
-    account_props[\'initial_debit_balance\'] = max(total_price, 0)\n
-    account_props[\'initial_credit_balance\'] = max(- total_price, 0)\n
+# initial balance\n
+for node in getInventoryList(\n
+                node_category_strict_membership=[\n
+                        \'account_type/asset/receivable\',\n
+                        \'account_type/liability/payable\', ],\n
+                group_by_mirror_section=1,\n
+                group_by_node=1,\n
+                to_date=period_start_date,\n
+                portal_type=accounting_movement_type_list +\n
+                              balance_movement_type_list,\n
+                **inventory_params):\n
+  mirror_section_uid = MARKER\n
+  if expand_accounts:\n
+    mirror_section_key = node[\'mirror_section_uid\']\n
+  account_props = line_per_account.setdefault(\n
+          (node[\'node_relative_url\'], mirror_section_key, MARKER),\n
+          dict(debit=0, credit=0))\n
+  total_price = node[\'total_price\'] or 0\n
+  account_props[\'initial_debit_balance\'] = account_props.get(\n
+                  \'initial_debit_balance\', 0) + max(total_price, 0)\n
+  account_props[\'initial_credit_balance\'] = account_props.get(\n
+                 \'initial_credit_balance\', 0) + max(-total_price, 0)\n
 \n
+# Balance Transactions\n
+for node in getInventoryList(\n
+                node_category_strict_membership=[\n
+                        \'account_type/asset/receivable\',\n
+                        \'account_type/liability/payable\', ],\n
+                group_by_mirror_section=1,\n
+                group_by_node=1,\n
+                from_date=from_date,\n
+                at_date=from_date + 1,\n
+                portal_type=balance_movement_type_list,\n
+                **inventory_params):\n
+  mirror_section_uid = MARKER\n
+  if expand_accounts:\n
+    mirror_section_key = node[\'mirror_section_uid\']\n
+  account_props = line_per_account.setdefault(\n
+          (node[\'node_relative_url\'], mirror_section_key, MARKER),\n
+          dict(debit=0, credit=0))\n
+  total_price = node[\'total_price\'] or 0\n
+  account_props[\'initial_debit_balance\'] = account_props.get(\n
+              \'initial_debit_balance\', 0) + max(total_price, 0)\n
+  account_props[\'initial_credit_balance\'] = account_props.get(\n
+              \'initial_credit_balance\', 0) + max(- total_price, 0)\n
 \n
   for node in getInventoryList(\n
                   node_category_strict_membership=\n
@@ -458,8 +489,11 @@ if account_type_to_group_by_mirror_section:\n
                   to_date=from_date,\n
                   portal_type=accounting_movement_type_list,\n
                   **inventory_params):\n
+    mirror_section_uid = MARKER\n
+    if expand_accounts:\n
+      mirror_section_key = node[\'mirror_section_uid\']\n
     account_props = line_per_account.setdefault(\n
-            (node[\'node_relative_url\'], node[\'mirror_section_uid\'], MARKER),\n
+            (node[\'node_relative_url\'], mirror_section_key, MARKER),\n
             dict(debit=0, credit=0))\n
     total_price = node[\'total_price\'] or 0\n
     account_props[\'initial_debit_balance\'] = account_props.get(\n
@@ -475,8 +509,11 @@ if account_type_to_group_by_mirror_section:\n
                   to_date=from_date,\n
                   portal_type=accounting_movement_type_list,\n
                   **inventory_params):\n
+    mirror_section_uid = MARKER\n
+    if expand_accounts:\n
+      mirror_section_key = node[\'mirror_section_uid\']\n
     account_props = line_per_account.setdefault(\n
-            (node[\'node_relative_url\'], node[\'mirror_section_uid\'], MARKER),\n
+            (node[\'node_relative_url\'], mirror_section_key, MARKER),\n
             dict(debit=0, credit=0))\n
     total_price = node[\'total_price\'] or 0\n
     account_props[\'initial_credit_balance\'] = account_props.get(\n
@@ -805,9 +842,10 @@ return new_line_list\n
                             <string>getNodeTitleAndId</string>
                             <string>initial_balance_date</string>
                             <string>min</string>
+                            <string>mirror_section_uid</string>
+                            <string>mirror_section_key</string>
                             <string>line_list</string>
                             <string>node_relative_url</string>
-                            <string>mirror_section_uid</string>
                             <string>payment_uid</string>
                             <string>data</string>
                             <string>node_title</string>
diff --git a/bt5/erp5_accounting/bt/revision b/bt5/erp5_accounting/bt/revision
index 34c3a209c7..8fc2b18859 100644
--- a/bt5/erp5_accounting/bt/revision
+++ b/bt5/erp5_accounting/bt/revision
@@ -1 +1 @@
-487
\ No newline at end of file
+488
\ No newline at end of file
-- 
2.30.9