From fe70bd5362ad640f0112cd399a1a3a96484142d0 Mon Sep 17 00:00:00 2001 From: Nicolas Wavrant <nicolas.wavrant@nexedi.com> Date: Wed, 8 Jun 2016 12:22:09 +0000 Subject: [PATCH] erp5_accounting: adds filtering on ledger for General Ledger Report --- ...odule_getGeneralLedgerReportSectionList.py | 10 +++ .../AccountModule_getGeneralLedgerSummary.py | 2 + .../AccountModule_getGeneralLedgerSummary.xml | 2 +- .../AccountModule_viewGeneralLedgerReport.xml | 1 + .../your_ledger.xml | 84 +++++++++++++++++++ ...ntModule_viewGeneralLedgerReportDialog.xml | 1 + .../your_ledger.xml | 84 +++++++++++++++++++ product/ERP5/tests/testAccountingReports.py | 44 ++++++++++ 8 files changed, 227 insertions(+), 1 deletion(-) create mode 100644 bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReport/your_ledger.xml create mode 100644 bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReportDialog/your_ledger.xml diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList.py b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList.py index 0dc146814c..541d47d31a 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList.py +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList.py @@ -79,6 +79,16 @@ if mirror_section: mirror_section_uid = portal.restrictedTraverse(mirror_section).getUid() params['mirror_section_uid'] = mirror_section_uid +ledger = request.get('ledger', None) +if ledger: + if not isinstance(ledger, list): + # Allows the generation of reports on different ledgers as the same time + ledger = [ledger] + ledger_value_list = [cat_tool.restrictedTraverse(ledger_category, None) + for ledger_category in ledger] + for ledger_value in ledger_value_list: + params.setdefault('ledger_uid', []).append(ledger_value.getUid()) + default_selection_params = params.copy() default_selection_params['period_start_date'] = period_start_date default_selection_params['movement_portal_type'] = portal.getPortalAccountingMovementTypeList() diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerSummary.py b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerSummary.py index 7d4674c7c9..2d54319205 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerSummary.py +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerSummary.py @@ -20,6 +20,8 @@ if mirror_section_category: inventory_kw['mirror_section_category'] = mirror_section_category if mirror_section_uid: inventory_kw['mirror_section_uid'] = mirror_section_uid +if ledger_uid: + inventory_kw['ledger_uid'] = ledger_uid if node_category: # XXX if node category is passed, income or balance accounts are not diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerSummary.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerSummary.xml index 2b27a50b53..7911269f3e 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerSummary.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerSummary.xml @@ -50,7 +50,7 @@ </item> <item> <key> <string>_params</string> </key> - <value> <string>section_uid, simulation_state, at_date, period_start_date, precision, node_category=None, function_category=None, function_uid=None, funding_category=None, funding_uid=None, project_uid=None, from_date=\'ignored\', mirror_section_category=None, mirror_section_uid=None, **kw</string> </value> + <value> <string>section_uid, simulation_state, at_date, period_start_date, precision, node_category=None, function_category=None, function_uid=None, funding_category=None, funding_uid=None, project_uid=None, ledger_uid=None, from_date=\'ignored\', mirror_section_category=None, mirror_section_uid=None, **kw</string> </value> </item> <item> <key> <string>id</string> </key> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReport.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReport.xml index 9dfd59a53c..25508da662 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReport.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReport.xml @@ -101,6 +101,7 @@ <string>your_mirror_section</string> <string>your_gap_list</string> <string>your_gap_root</string> + <string>your_ledger</string> <string>your_simulation_state</string> <string>your_report_date</string> </list> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReport/your_ledger.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReport/your_ledger.xml new file mode 100644 index 0000000000..461d1fbb64 --- /dev/null +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReport/your_ledger.xml @@ -0,0 +1,84 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>your_ledger</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>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>your_ledger</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>AccountModule_viewReportFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReportDialog.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReportDialog.xml index 998b46a909..2227f2e838 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReportDialog.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReportDialog.xml @@ -112,6 +112,7 @@ <list> <string>your_simulation_state</string> <string>your_mirror_section_category_list</string> + <string>your_ledger</string> <string>your_export</string> </list> </value> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReportDialog/your_ledger.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReportDialog/your_ledger.xml new file mode 100644 index 0000000000..798bcb9c77 --- /dev/null +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewGeneralLedgerReportDialog/your_ledger.xml @@ -0,0 +1,84 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>your_ledger</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>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>your_ledger</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>AccountModule_viewDialogFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/tests/testAccountingReports.py b/product/ERP5/tests/testAccountingReports.py index 7f511b87ed..eaefb12f93 100644 --- a/product/ERP5/tests/testAccountingReports.py +++ b/product/ERP5/tests/testAccountingReports.py @@ -4214,6 +4214,50 @@ class TestAccountingReports(AccountingTestCase, ERP5ReportTestCase): self.assertEqual(1, len(data_line_list)) self.checkLineProperties(data_line_list[0], debit_price=500, credit_price=500) + def testGeneralLedgerLedger(self): + # general ledger restricted to a ledger + self.createLedgerDataSet() + + request_form = self.portal.REQUEST.form + request_form['from_date'] = DateTime(2006, 1, 1) + request_form['at_date'] = DateTime(2006, 12, 31) + request_form['section_category'] = 'group/demo_group' + request_form['section_category_strict'] = False + request_form['simulation_state'] = ['delivered'] + request_form['ledger'] = 'ledger/accounting/general' + request_form['hide_analytic'] = False + request_form['export'] = False + + report_section_list = self.getReportSectionList( + self.portal.accounting_module, + 'AccountModule_viewGeneralLedgerReport') + self.assertEqual(3, len(report_section_list)) + + line_list = self.getListBoxLineList(report_section_list[0]) + data_line_list = [l for l in line_list if l.isDataLine()] + self.assertEqual(1, len(data_line_list)) + self.checkLineProperties(data_line_list[0], + Movement_getExplanationTitleAndAnalytics='Ledger general\nlag', + date=DateTime(2006, 2, 2), + debit_price=500, credit_price=0, running_total_price=500, ) + self.assertTrue(line_list[-1].isStatLine()) + self.checkLineProperties(line_list[-1], debit_price=500, credit_price=0) + + line_list = self.getListBoxLineList(report_section_list[1]) + data_line_list = [l for l in line_list if l.isDataLine()] + self.assertEqual(1, len(data_line_list)) + self.checkLineProperties(data_line_list[0], + Movement_getExplanationTitleAndAnalytics='Ledger general\nlag', + date=DateTime(2006, 2, 2), + debit_price=0, credit_price=500, running_total_price=-500, ) + self.assertTrue(line_list[-1].isStatLine()) + self.checkLineProperties(line_list[-1], debit_price=0, credit_price=500) + + line_list = self.getListBoxLineList(report_section_list[2]) + data_line_list = [l for l in line_list if l.isDataLine()] + self.assertEqual(1, len(data_line_list)) + self.checkLineProperties(data_line_list[0], debit_price=500, credit_price=500) + def testGeneralLedgerMirrorSectionRole(self): # general ledger restricted to a mirror section role self.createMirrorSectionRoleDataSet() -- 2.30.9