From 6110d0e78c30b2f6fbc406a1f63fe1f3fd51c109 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Sun, 11 Nov 2018 13:42:55 +0100 Subject: [PATCH] add an extra line for P&L application so that the trial balance zeroes in the balance, and total debits = total credits --- .../report/abstract_report_xlsx.py | 24 ++++ .../report/templates/trial_balance.xml | 5 +- .../report/trial_balance.py | 132 +++++++++++++++++- .../report/trial_balance_xlsx.py | 7 + .../tests/test_trial_balance.py | 111 ++++++++++++++- 5 files changed, 267 insertions(+), 12 deletions(-) diff --git a/account_financial_report/report/abstract_report_xlsx.py b/account_financial_report/report/abstract_report_xlsx.py index 886538e8..eacea35d 100644 --- a/account_financial_report/report/abstract_report_xlsx.py +++ b/account_financial_report/report/abstract_report_xlsx.py @@ -21,6 +21,7 @@ class AbstractReportXslx(models.AbstractModel): # Formats self.format_right = None + self.format_left = None self.format_right_bold_italic = None self.format_bold = None self.format_header_left = None @@ -41,6 +42,7 @@ class AbstractReportXslx(models.AbstractModel): self._define_formats(workbook) report_name = self._get_report_name() + report_footer = self._get_report_footer() filters = self._get_report_filters(report) self.columns = self._get_report_columns(report) self.workbook = workbook @@ -54,6 +56,8 @@ class AbstractReportXslx(models.AbstractModel): self._generate_report_content(workbook, report) + self._write_report_footer(report_footer) + def _define_formats(self, workbook): """ Add cell formats to current workbook. Those formats can be used on all cell. @@ -71,6 +75,7 @@ class AbstractReportXslx(models.AbstractModel): """ self.format_bold = workbook.add_format({'bold': True}) self.format_right = workbook.add_format({'align': 'right'}) + self.format_left = workbook.add_format({'align': 'left'}) self.format_right_bold_italic = workbook.add_format( {'align': 'right', 'bold': True, 'italic': True} ) @@ -120,6 +125,18 @@ class AbstractReportXslx(models.AbstractModel): ) self.row_pos += 3 + def _write_report_footer(self, footer): + """Write report footer . + Columns are defined with `_get_report_columns` method. + """ + if footer: + self.row_pos += 1 + self.sheet.merge_range( + self.row_pos, 0, self.row_pos, len(self.columns) - 1, + footer, self.format_left + ) + self.row_pos += 1 + def _write_filters(self, filters): """Write one line per filters on starting on current line. Columns number for filter name is defined @@ -322,6 +339,13 @@ class AbstractReportXslx(models.AbstractModel): """ raise NotImplementedError() + def _get_report_footer(self): + """ + Allow to define the report footer. + :return: the report footer + """ + return False + def _get_report_columns(self, report): """ Allow to define the report columns diff --git a/account_financial_report/report/templates/trial_balance.xml b/account_financial_report/report/templates/trial_balance.xml index 3028cf5d..011cd89c 100644 --- a/account_financial_report/report/templates/trial_balance.xml +++ b/account_financial_report/report/templates/trial_balance.xml @@ -104,9 +104,8 @@