committed by
Jordi Ballester
10 changed files with 251 additions and 52 deletions
-
1account_financial_report_qweb/README.rst
-
1account_financial_report_qweb/report/__init__.py
-
68account_financial_report_qweb/report/abstract_report_xlsx.py
-
60account_financial_report_qweb/report/general_ledger_xlsx.py
-
9account_financial_report_qweb/report/open_items.py
-
117account_financial_report_qweb/report/open_items_xlsx.py
-
9account_financial_report_qweb/reports.xml
-
27account_financial_report_qweb/tests/test_open_items.py
-
9account_financial_report_qweb/wizard/open_items_wizard.py
-
2account_financial_report_qweb/wizard/open_items_wizard_view.xml
@ -0,0 +1,117 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Author: Julien Coux |
||||
|
# Copyright 2016 Camptocamp SA |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
||||
|
|
||||
|
from . import abstract_report_xlsx |
||||
|
from openerp.report import report_sxw |
||||
|
from openerp import _ |
||||
|
|
||||
|
|
||||
|
class OpenItemsXslx(abstract_report_xlsx.AbstractReportXslx): |
||||
|
|
||||
|
def __init__(self, name, table, rml=False, parser=False, header=True, |
||||
|
store=False): |
||||
|
super(OpenItemsXslx, self).__init__( |
||||
|
name, table, rml, parser, header, store) |
||||
|
|
||||
|
def _get_report_name(self): |
||||
|
return _('Open Items') |
||||
|
|
||||
|
def _get_report_columns(self, report): |
||||
|
return { |
||||
|
0: {'header': _('Date'), 'field': 'date', 'width': 11}, |
||||
|
1: {'header': _('Entry'), 'field': 'entry', 'width': 18}, |
||||
|
2: {'header': _('Journal'), 'field': 'journal', 'width': 8}, |
||||
|
3: {'header': _('Account'), 'field': 'account', 'width': 9}, |
||||
|
4: {'header': _('Partner'), 'field': 'partner', 'width': 25}, |
||||
|
5: {'header': _('Ref - Label'), 'field': 'label', 'width': 40}, |
||||
|
6: {'header': _('Due date'), 'field': 'date_due', 'width': 11}, |
||||
|
7: {'header': _('Original'), |
||||
|
'field': 'amount_total_due', |
||||
|
'type': 'amount', |
||||
|
'width': 14}, |
||||
|
8: {'header': _('Residual'), |
||||
|
'field': 'amount_residual', |
||||
|
'field_final_balance': 'final_amount_residual', |
||||
|
'type': 'amount', |
||||
|
'width': 14}, |
||||
|
9: {'header': _('Cur.'), 'field': 'currency_name', 'width': 7}, |
||||
|
10: {'header': _('Cur. Original'), |
||||
|
'field': 'amount_total_due_currency', |
||||
|
'type': 'amount', |
||||
|
'width': 14}, |
||||
|
11: {'header': _('Cur. Residual'), |
||||
|
'field': 'amount_residual_currency', |
||||
|
'type': 'amount', |
||||
|
'width': 14}, |
||||
|
} |
||||
|
|
||||
|
def _get_report_filters(self, report): |
||||
|
return [ |
||||
|
[_('Date at filter'), report.date_at], |
||||
|
[_('Target moves filter'), |
||||
|
_('All posted entries') if report.only_posted_moves |
||||
|
else _('All entries')], |
||||
|
[_('Account balance at 0 filter'), |
||||
|
_('Hide') if report.hide_account_balance_at_0 else _('Show')], |
||||
|
] |
||||
|
|
||||
|
def _get_col_count_filter_name(self): |
||||
|
return 2 |
||||
|
|
||||
|
def _get_col_count_filter_value(self): |
||||
|
return 2 |
||||
|
|
||||
|
def _get_col_count_final_balance_name(self): |
||||
|
return 5 |
||||
|
|
||||
|
def _get_col_pos_final_balance_label(self): |
||||
|
return 5 |
||||
|
|
||||
|
def _generate_report_content(self, workbook, report): |
||||
|
# For each account |
||||
|
for account in report.account_ids: |
||||
|
# Write account title |
||||
|
self.write_array_title(account.code + ' - ' + account.name) |
||||
|
|
||||
|
# For each partner |
||||
|
for partner in account.partner_ids: |
||||
|
# Write partner title |
||||
|
self.write_array_title(partner.name) |
||||
|
|
||||
|
# Display array header for move lines |
||||
|
self.write_array_header() |
||||
|
|
||||
|
# Display account move lines |
||||
|
for line in partner.move_line_ids: |
||||
|
self.write_line(line) |
||||
|
|
||||
|
# Display ending balance line for partner |
||||
|
self.write_ending_balance(partner, 'partner') |
||||
|
|
||||
|
# Line break |
||||
|
self.row_pos += 1 |
||||
|
|
||||
|
# Display ending balance line for account |
||||
|
self.write_ending_balance(account, 'account') |
||||
|
|
||||
|
# 2 lines break |
||||
|
self.row_pos += 2 |
||||
|
|
||||
|
def write_ending_balance(self, my_object, type_object): |
||||
|
"""Specific function to write ending balance for Open Items""" |
||||
|
if type_object == 'partner': |
||||
|
name = my_object.name |
||||
|
label = _('Partner ending balance') |
||||
|
elif type_object == 'account': |
||||
|
name = my_object.code + ' - ' + my_object.name |
||||
|
label = _('Ending balance') |
||||
|
super(OpenItemsXslx, self).write_ending_balance(my_object, name, label) |
||||
|
|
||||
|
|
||||
|
OpenItemsXslx( |
||||
|
'report.account_financial_report_qweb.report_open_items_xlsx', |
||||
|
'report_open_items_qweb', |
||||
|
parser=report_sxw.rml_parse |
||||
|
) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue