diff --git a/account_financial_report_qweb/README.rst b/account_financial_report/README.rst similarity index 90% rename from account_financial_report_qweb/README.rst rename to account_financial_report/README.rst index 7836ebbb..ec4cdd12 100644 --- a/account_financial_report_qweb/README.rst +++ b/account_financial_report/README.rst @@ -1,10 +1,10 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 -============================= -account_financial_report_qweb -============================= +====================== +QWeb Financial Reports +====================== This module adds a set of financial reports. They are accessible under Accounting / Reporting / OCA Reports. @@ -16,7 +16,7 @@ Accounting / Reporting / OCA Reports. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/91/9.0 + :target: https://runbot.odoo-community.org/runbot/91/11.0 Bug Tracker =========== diff --git a/account_financial_report/__init__.py b/account_financial_report/__init__.py new file mode 100644 index 00000000..b8f60543 --- /dev/null +++ b/account_financial_report/__init__.py @@ -0,0 +1,8 @@ + +# Author: Damien Crier +# Copyright 2016 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models +from . import report +from . import wizard diff --git a/account_financial_report_qweb/__manifest__.py b/account_financial_report/__manifest__.py similarity index 91% rename from account_financial_report_qweb/__manifest__.py rename to account_financial_report/__manifest__.py index 59c289f2..60bb34fb 100644 --- a/account_financial_report_qweb/__manifest__.py +++ b/account_financial_report/__manifest__.py @@ -1,11 +1,11 @@ -# -*- coding: utf-8 -*- + # Author: Damien Crier # Author: Julien Coux # Copyright 2016 Camptocamp SA # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { - 'name': 'QWeb Financial Reports', - 'version': '10.0.1.2.0', + 'name': 'Account Financial Reports', + 'version': '11.0.1.1.0', 'category': 'Reporting', 'summary': 'OCA Financial Reports', 'author': 'Camptocamp SA,' @@ -18,7 +18,6 @@ 'date_range', 'account_fiscal_year', 'report_xlsx', - 'report', ], 'data': [ 'wizard/aged_partner_balance_wizard_view.xml', @@ -27,9 +26,9 @@ 'wizard/trial_balance_wizard_view.xml', 'menuitems.xml', 'reports.xml', + 'report/templates/layouts.xml', 'report/templates/aged_partner_balance.xml', 'report/templates/general_ledger.xml', - 'report/templates/layouts.xml', 'report/templates/open_items.xml', 'report/templates/trial_balance.xml', 'view/account_view.xml' diff --git a/account_financial_report_qweb/i18n/account_financial_report_qweb.pot b/account_financial_report/i18n/account_financial_report_qweb.pot similarity index 100% rename from account_financial_report_qweb/i18n/account_financial_report_qweb.pot rename to account_financial_report/i18n/account_financial_report_qweb.pot diff --git a/account_financial_report_qweb/i18n/es.po b/account_financial_report/i18n/es.po similarity index 100% rename from account_financial_report_qweb/i18n/es.po rename to account_financial_report/i18n/es.po diff --git a/account_financial_report_qweb/i18n/fr.po b/account_financial_report/i18n/fr.po similarity index 100% rename from account_financial_report_qweb/i18n/fr.po rename to account_financial_report/i18n/fr.po diff --git a/account_financial_report_qweb/i18n/hr_HR.po b/account_financial_report/i18n/hr_HR.po similarity index 100% rename from account_financial_report_qweb/i18n/hr_HR.po rename to account_financial_report/i18n/hr_HR.po diff --git a/account_financial_report_qweb/i18n/nl_NL.po b/account_financial_report/i18n/nl_NL.po similarity index 100% rename from account_financial_report_qweb/i18n/nl_NL.po rename to account_financial_report/i18n/nl_NL.po diff --git a/account_financial_report_qweb/i18n/pt.po b/account_financial_report/i18n/pt.po similarity index 100% rename from account_financial_report_qweb/i18n/pt.po rename to account_financial_report/i18n/pt.po diff --git a/account_financial_report_qweb/menuitems.xml b/account_financial_report/menuitems.xml similarity index 100% rename from account_financial_report_qweb/menuitems.xml rename to account_financial_report/menuitems.xml diff --git a/account_financial_report_qweb/models/__init__.py b/account_financial_report/models/__init__.py similarity index 85% rename from account_financial_report_qweb/models/__init__.py rename to account_financial_report/models/__init__.py index b8a98686..df4d025b 100644 --- a/account_financial_report_qweb/models/__init__.py +++ b/account_financial_report/models/__init__.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- + # Author: Damien Crier # Copyright 2016 Camptocamp SA # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). diff --git a/account_financial_report_qweb/models/account.py b/account_financial_report/models/account.py similarity index 94% rename from account_financial_report_qweb/models/account.py rename to account_financial_report/models/account.py index f5f1e715..4659f26a 100644 --- a/account_financial_report_qweb/models/account.py +++ b/account_financial_report/models/account.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- + # © 2011 Guewen Baconnier (Camptocamp) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).- from odoo import models, fields diff --git a/account_financial_report_qweb/report/__init__.py b/account_financial_report/report/__init__.py similarity index 95% rename from account_financial_report_qweb/report/__init__.py rename to account_financial_report/report/__init__.py index 111bf4f4..480af0e4 100644 --- a/account_financial_report_qweb/report/__init__.py +++ b/account_financial_report/report/__init__.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- + # © 2015 Yannick Vaucher (Camptocamp) # © 2016 Damien Crier (Camptocamp) # © 2016 Julien Coux (Camptocamp) diff --git a/account_financial_report_qweb/report/abstract_report_xlsx.py b/account_financial_report/report/abstract_report_xlsx.py similarity index 94% rename from account_financial_report_qweb/report/abstract_report_xlsx.py rename to account_financial_report/report/abstract_report_xlsx.py index 82560370..7c97a2eb 100644 --- a/account_financial_report_qweb/report/abstract_report_xlsx.py +++ b/account_financial_report/report/abstract_report_xlsx.py @@ -1,18 +1,15 @@ -# -*- coding: utf-8 -*- + # Author: Julien Coux # Copyright 2016 Camptocamp SA # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import models -from odoo.addons.report_xlsx.report.report_xlsx import ReportXlsx - - -class AbstractReportXslx(ReportXlsx): - def __init__(self, name, table, rml=False, parser=False, header=True, - store=False): - super(AbstractReportXslx, self).__init__( - name, table, rml, parser, header, store) +class AbstractReportXslx(models.AbstractModel): + _name = 'report.account_financial_report.abstract_report_xlsx' + _inherit = 'report.report_xlsx.abstract' + def __init__(self, pool, cr): # main sheet which will contains report self.sheet = None @@ -107,7 +104,7 @@ class AbstractReportXslx(ReportXlsx): """Set width for all defined columns. Columns are defined with `_get_report_columns` method. """ - for position, column in self.columns.iteritems(): + for position, column in self.columns.items(): self.sheet.set_column(position, position, column['width']) def _write_report_title(self, title): @@ -157,7 +154,7 @@ class AbstractReportXslx(ReportXlsx): """Write array header on current line using all defined columns name. Columns are defined with `_get_report_columns` method. """ - for col_pos, column in self.columns.iteritems(): + for col_pos, column in self.columns.items(): self.sheet.write(self.row_pos, col_pos, column['header'], self.format_header_center) self.row_pos += 1 @@ -166,7 +163,7 @@ class AbstractReportXslx(ReportXlsx): """Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method. """ - for col_pos, column in self.columns.iteritems(): + for col_pos, column in self.columns.items(): value = getattr(line_object, column['field']) cell_type = column.get('type', 'string') if cell_type == 'string': @@ -185,7 +182,7 @@ class AbstractReportXslx(ReportXlsx): """ col_pos_label = self._get_col_pos_initial_balance_label() self.sheet.write(self.row_pos, col_pos_label, label, self.format_right) - for col_pos, column in self.columns.iteritems(): + for col_pos, column in self.columns.items(): if column.get('field_initial_balance'): value = getattr(my_object, column['field_initial_balance']) cell_type = column.get('type', 'string') @@ -213,7 +210,7 @@ class AbstractReportXslx(ReportXlsx): ) self.sheet.write(self.row_pos, col_pos_label, label, self.format_header_right) - for col_pos, column in self.columns.iteritems(): + for col_pos, column in self.columns.items(): if column.get('field_final_balance'): value = getattr(my_object, column['field_final_balance']) cell_type = column.get('type', 'string') diff --git a/account_financial_report_qweb/report/aged_partner_balance.py b/account_financial_report/report/aged_partner_balance.py similarity index 85% rename from account_financial_report_qweb/report/aged_partner_balance.py rename to account_financial_report/report/aged_partner_balance.py index e174bb54..fe0d1a54 100644 --- a/account_financial_report_qweb/report/aged_partner_balance.py +++ b/account_financial_report/report/aged_partner_balance.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- + # © 2016 Julien Coux (Camptocamp) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). @@ -18,7 +18,7 @@ class AgedPartnerBalanceReport(models.TransientModel): If "show_move_line_details" is selected """ - _name = 'report_aged_partner_balance_qweb' + _name = 'report_aged_partner_balance' # Filters fields, used for data computation date_at = fields.Date() @@ -29,22 +29,22 @@ class AgedPartnerBalanceReport(models.TransientModel): show_move_line_details = fields.Boolean() # Open Items Report Data fields, used as base for compute the data reports - open_items_id = fields.Many2one(comodel_name='report_open_items_qweb') + open_items_id = fields.Many2one(comodel_name='report_open_items') # Data fields, used to browse report data account_ids = fields.One2many( - comodel_name='report_aged_partner_balance_qweb_account', + comodel_name='report_aged_partner_balance_account', inverse_name='report_id' ) class AgedPartnerBalanceReportAccount(models.TransientModel): - _name = 'report_aged_partner_balance_qweb_account' + _name = 'report_aged_partner_balance_account' _order = 'code ASC' report_id = fields.Many2one( - comodel_name='report_aged_partner_balance_qweb', + comodel_name='report_aged_partner_balance', ondelete='cascade', index=True ) @@ -76,17 +76,17 @@ class AgedPartnerBalanceReportAccount(models.TransientModel): # Data fields, used to browse report data partner_ids = fields.One2many( - comodel_name='report_aged_partner_balance_qweb_partner', + comodel_name='report_aged_partner_balance_partner', inverse_name='report_account_id' ) class AgedPartnerBalanceReportPartner(models.TransientModel): - _name = 'report_aged_partner_balance_qweb_partner' + _name = 'report_aged_partner_balance_partner' report_account_id = fields.Many2one( - comodel_name='report_aged_partner_balance_qweb_account', + comodel_name='report_aged_partner_balance_account', ondelete='cascade', index=True ) @@ -102,11 +102,11 @@ class AgedPartnerBalanceReportPartner(models.TransientModel): # Data fields, used to browse report data move_line_ids = fields.One2many( - comodel_name='report_aged_partner_balance_qweb_move_line', + comodel_name='report_aged_partner_balance_move_line', inverse_name='report_partner_id' ) line_ids = fields.One2many( - comodel_name='report_aged_partner_balance_qweb_line', + comodel_name='report_aged_partner_balance_line', inverse_name='report_partner_id' ) @@ -117,20 +117,20 @@ class AgedPartnerBalanceReportPartner(models.TransientModel): ORDER BY CASE WHEN - "report_aged_partner_balance_qweb_partner"."partner_id" IS NOT NULL + "report_aged_partner_balance_partner"."partner_id" IS NOT NULL THEN 0 ELSE 1 END, - "report_aged_partner_balance_qweb_partner"."name" + "report_aged_partner_balance_partner"."name" """ class AgedPartnerBalanceReportLine(models.TransientModel): - _name = 'report_aged_partner_balance_qweb_line' + _name = 'report_aged_partner_balance_line' report_partner_id = fields.Many2one( - comodel_name='report_aged_partner_balance_qweb_partner', + comodel_name='report_aged_partner_balance_partner', ondelete='cascade', index=True ) @@ -148,10 +148,10 @@ class AgedPartnerBalanceReportLine(models.TransientModel): class AgedPartnerBalanceReportMoveLine(models.TransientModel): - _name = 'report_aged_partner_balance_qweb_move_line' + _name = 'report_aged_partner_balance_move_line' report_partner_id = fields.Many2one( - comodel_name='report_aged_partner_balance_qweb_partner', + comodel_name='report_aged_partner_balance_partner', ondelete='cascade', index=True ) @@ -182,20 +182,21 @@ class AgedPartnerBalanceReportCompute(models.TransientModel): For class fields, go more top at this file. """ - _inherit = 'report_aged_partner_balance_qweb' + _inherit = 'report_aged_partner_balance' @api.multi - def print_report(self, xlsx_report=False): + def print_report(self, report_type): self.ensure_one() self.compute_data_for_report() - if xlsx_report: - report_name = 'account_financial_report_qweb.' \ - 'report_aged_partner_balance_xlsx' + if report_type == 'xlsx': + report_name = 'a_f_r.report_aged_partner_balance_xlsx' else: - report_name = 'account_financial_report_qweb.' \ + report_name = 'account_financial_report.' \ 'report_aged_partner_balance_qweb' - return self.env['report'].get_action(docids=self.ids, - report_name=report_name) + report = self.env['ir.actions.report'].search( + [('report_name', '=', report_name), + ('report_type', '=', report_type)], limit=1) + return report.report_action(self) def _prepare_report_open_items(self): self.ensure_one() @@ -213,7 +214,7 @@ class AgedPartnerBalanceReportCompute(models.TransientModel): # Compute Open Items Report Data. # The data of Aged Partner Balance Report # are based on Open Items Report data. - model = self.env['report_open_items_qweb'] + model = self.env['report_open_items'] self.open_items_id = model.create(self._prepare_report_open_items()) self.open_items_id.compute_data_for_report() @@ -230,10 +231,10 @@ class AgedPartnerBalanceReportCompute(models.TransientModel): self.refresh() def _inject_account_values(self): - """Inject report values for report_aged_partner_balance_qweb_account""" + """Inject report values for report_aged_partner_balance_account""" query_inject_account = """ INSERT INTO - report_aged_partner_balance_qweb_account + report_aged_partner_balance_account ( report_id, create_uid, @@ -250,7 +251,7 @@ SELECT rao.code, rao.name FROM - report_open_items_qweb_account rao + report_open_items_account rao WHERE rao.report_id = %s """ @@ -262,10 +263,10 @@ WHERE self.env.cr.execute(query_inject_account, query_inject_account_params) def _inject_partner_values(self): - """Inject report values for report_aged_partner_balance_qweb_partner""" + """Inject report values for report_aged_partner_balance_partner""" query_inject_partner = """ INSERT INTO - report_aged_partner_balance_qweb_partner + report_aged_partner_balance_partner ( report_account_id, create_uid, @@ -280,11 +281,11 @@ SELECT rpo.partner_id, rpo.name FROM - report_open_items_qweb_partner rpo + report_open_items_partner rpo INNER JOIN - report_open_items_qweb_account rao ON rpo.report_account_id = rao.id + report_open_items_account rao ON rpo.report_account_id = rao.id INNER JOIN - report_aged_partner_balance_qweb_account ra ON rao.code = ra.code + report_aged_partner_balance_account ra ON rao.code = ra.code WHERE rao.report_id = %s AND ra.report_id = %s @@ -297,7 +298,7 @@ AND ra.report_id = %s self.env.cr.execute(query_inject_partner, query_inject_partner_params) def _inject_line_values(self, only_empty_partner_line=False): - """ Inject report values for report_aged_partner_balance_qweb_line. + """ Inject report values for report_aged_partner_balance_line. The "only_empty_partner_line" value is used to compute data without partner. @@ -315,7 +316,7 @@ WITH DATE %s - INTEGER '150' AS date_older ) INSERT INTO - report_aged_partner_balance_qweb_line + report_aged_partner_balance_line ( report_partner_id, create_uid, @@ -381,15 +382,15 @@ SELECT ) AS older FROM date_range, - report_open_items_qweb_move_line rlo + report_open_items_move_line rlo INNER JOIN - report_open_items_qweb_partner rpo ON rlo.report_partner_id = rpo.id + report_open_items_partner rpo ON rlo.report_partner_id = rpo.id INNER JOIN - report_open_items_qweb_account rao ON rpo.report_account_id = rao.id + report_open_items_account rao ON rpo.report_account_id = rao.id INNER JOIN - report_aged_partner_balance_qweb_account ra ON rao.code = ra.code + report_aged_partner_balance_account ra ON rao.code = ra.code INNER JOIN - report_aged_partner_balance_qweb_partner rp + report_aged_partner_balance_partner rp ON ra.id = rp.report_account_id """ @@ -418,7 +419,7 @@ GROUP BY self.env.cr.execute(query_inject_line, query_inject_line_params) def _inject_move_line_values(self, only_empty_partner_line=False): - """ Inject report values for report_aged_partner_balance_qweb_move_line + """ Inject report values for report_aged_partner_balance_move_line The "only_empty_partner_line" value is used to compute data without partner. @@ -436,7 +437,7 @@ WITH DATE %s - INTEGER '150' AS date_older ) INSERT INTO - report_aged_partner_balance_qweb_move_line + report_aged_partner_balance_move_line ( report_partner_id, create_uid, @@ -502,15 +503,15 @@ SELECT END AS older FROM date_range, - report_open_items_qweb_move_line rlo + report_open_items_move_line rlo INNER JOIN - report_open_items_qweb_partner rpo ON rlo.report_partner_id = rpo.id + report_open_items_partner rpo ON rlo.report_partner_id = rpo.id INNER JOIN - report_open_items_qweb_account rao ON rpo.report_account_id = rao.id + report_open_items_account rao ON rpo.report_account_id = rao.id INNER JOIN - report_aged_partner_balance_qweb_account ra ON rao.code = ra.code + report_aged_partner_balance_account ra ON rao.code = ra.code INNER JOIN - report_aged_partner_balance_qweb_partner rp + report_aged_partner_balance_partner rp ON ra.id = rp.report_account_id """ @@ -539,7 +540,7 @@ AND ra.report_id = %s def _compute_accounts_cumul(self): """ Compute cumulative amount for - report_aged_partner_balance_qweb_account. + report_aged_partner_balance_account. """ query_compute_accounts_cumul = """ WITH @@ -555,12 +556,12 @@ WITH SUM(rl.age_120_days) AS cumul_age_120_days, SUM(rl.older) AS cumul_older FROM - report_aged_partner_balance_qweb_line rl + report_aged_partner_balance_line rl INNER JOIN - report_aged_partner_balance_qweb_partner rp + report_aged_partner_balance_partner rp ON rl.report_partner_id = rp.id INNER JOIN - report_aged_partner_balance_qweb_account ra + report_aged_partner_balance_account ra ON rp.report_account_id = ra.id WHERE ra.report_id = %s @@ -568,7 +569,7 @@ WITH ra.id ) UPDATE - report_aged_partner_balance_qweb_account + report_aged_partner_balance_account SET cumul_amount_residual = c.cumul_amount_residual, cumul_current = c.cumul_current, diff --git a/account_financial_report_qweb/report/aged_partner_balance_xlsx.py b/account_financial_report/report/aged_partner_balance_xlsx.py similarity index 94% rename from account_financial_report_qweb/report/aged_partner_balance_xlsx.py rename to account_financial_report/report/aged_partner_balance_xlsx.py index ab23da2b..6f1982e0 100644 --- a/account_financial_report_qweb/report/aged_partner_balance_xlsx.py +++ b/account_financial_report/report/aged_partner_balance_xlsx.py @@ -1,19 +1,14 @@ -# -*- 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 odoo.report import report_sxw -from odoo import _ - +from odoo import _, models -class AgedPartnerBalanceXslx(abstract_report_xlsx.AbstractReportXslx): - def __init__(self, name, table, rml=False, parser=False, header=True, - store=False): - super(AgedPartnerBalanceXslx, self).__init__( - name, table, rml, parser, header, store) +class AgedPartnerBalanceXslx(models.AbstractModel): + _name = 'report.a_f_r.report_aged_partner_balance_xlsx' + _inherit = 'report.account_financial_report.abstract_report_xlsx' def _get_report_name(self): return _('Aged Partner Balance') @@ -238,7 +233,7 @@ class AgedPartnerBalanceXslx(abstract_report_xlsx.AbstractReportXslx): Specific function to write account footer for Aged Partner Balance """ col_pos_footer_label = self._get_col_pos_footer_label(report) - for col_pos, column in self.columns.iteritems(): + for col_pos, column in self.columns.items(): if col_pos == col_pos_footer_label or column.get(field_name): if col_pos == col_pos_footer_label: value = label @@ -260,10 +255,3 @@ class AgedPartnerBalanceXslx(abstract_report_xlsx.AbstractReportXslx): string_format) self.row_pos += 1 - - -AgedPartnerBalanceXslx( - 'report.account_financial_report_qweb.report_aged_partner_balance_xlsx', - 'report_aged_partner_balance_qweb', - parser=report_sxw.rml_parse -) diff --git a/account_financial_report_qweb/report/general_ledger.py b/account_financial_report/report/general_ledger.py similarity index 94% rename from account_financial_report_qweb/report/general_ledger.py rename to account_financial_report/report/general_ledger.py index 8bd8fc25..96641440 100644 --- a/account_financial_report_qweb/report/general_ledger.py +++ b/account_financial_report/report/general_ledger.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- + # © 2016 Julien Coux (Camptocamp) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). @@ -21,7 +21,7 @@ class GeneralLedgerReport(models.TransientModel): For receivable/payable and not centralized accounts """ - _name = 'report_general_ledger_qweb' + _name = 'report_general_ledger' # Filters fields, used for data computation date_from = fields.Date() @@ -47,7 +47,7 @@ class GeneralLedgerReport(models.TransientModel): # Data fields, used to browse report data account_ids = fields.One2many( - comodel_name='report_general_ledger_qweb_account', + comodel_name='report_general_ledger_account', inverse_name='report_id' ) @@ -70,11 +70,11 @@ class GeneralLedgerReport(models.TransientModel): class GeneralLedgerReportAccount(models.TransientModel): - _name = 'report_general_ledger_qweb_account' + _name = 'report_general_ledger_account' _order = 'code ASC' report_id = fields.Many2one( - comodel_name='report_general_ledger_qweb', + comodel_name='report_general_ledger', ondelete='cascade', index=True ) @@ -100,21 +100,21 @@ class GeneralLedgerReportAccount(models.TransientModel): # Data fields, used to browse report data move_line_ids = fields.One2many( - comodel_name='report_general_ledger_qweb_move_line', + comodel_name='report_general_ledger_move_line', inverse_name='report_account_id' ) partner_ids = fields.One2many( - comodel_name='report_general_ledger_qweb_partner', + comodel_name='report_general_ledger_partner', inverse_name='report_account_id' ) class GeneralLedgerReportPartner(models.TransientModel): - _name = 'report_general_ledger_qweb_partner' + _name = 'report_general_ledger_partner' report_account_id = fields.Many2one( - comodel_name='report_general_ledger_qweb_account', + comodel_name='report_general_ledger_account', ondelete='cascade', index=True ) @@ -136,7 +136,7 @@ class GeneralLedgerReportPartner(models.TransientModel): # Data fields, used to browse report data move_line_ids = fields.One2many( - comodel_name='report_general_ledger_qweb_move_line', + comodel_name='report_general_ledger_move_line', inverse_name='report_partner_id' ) @@ -146,25 +146,25 @@ class GeneralLedgerReportPartner(models.TransientModel): return """ ORDER BY CASE - WHEN "report_general_ledger_qweb_partner"."partner_id" IS NOT NULL + WHEN "report_general_ledger_partner"."partner_id" IS NOT NULL THEN 0 ELSE 1 END, - "report_general_ledger_qweb_partner"."name" + "report_general_ledger_partner"."name" """ class GeneralLedgerReportMoveLine(models.TransientModel): - _name = 'report_general_ledger_qweb_move_line' + _name = 'report_general_ledger_move_line' report_account_id = fields.Many2one( - comodel_name='report_general_ledger_qweb_account', + comodel_name='report_general_ledger_account', ondelete='cascade', index=True ) report_partner_id = fields.Many2one( - comodel_name='report_general_ledger_qweb_partner', + comodel_name='report_general_ledger_partner', ondelete='cascade', index=True ) @@ -193,20 +193,20 @@ class GeneralLedgerReportCompute(models.TransientModel): For class fields, go more top at this file. """ - _inherit = 'report_general_ledger_qweb' + _inherit = 'report_general_ledger' @api.multi - def print_report(self, xlsx_report=False): + def print_report(self, report_type): self.ensure_one() self.compute_data_for_report() - if xlsx_report: - report_name = 'account_financial_report_qweb.' \ - 'report_general_ledger_xlsx' + if report_type == 'xlsx': + report_name = 'a_f_r.report_general_ledger_xlsx' else: - report_name = 'account_financial_report_qweb.' \ + report_name = 'account_financial_report.' \ 'report_general_ledger_qweb' - return self.env['report'].get_action(docids=self.ids, - report_name=report_name) + return self.env['ir.actions.report'].search( + [('report_name', '=', report_name), + ('report_type', '=', report_type)], limit=1).report_action(self) @api.multi def compute_data_for_report(self, @@ -346,7 +346,7 @@ class GeneralLedgerReportCompute(models.TransientModel): return subquery_sum_amounts def _inject_account_values(self): - """Inject report values for report_general_ledger_qweb_account.""" + """Inject report values for report_general_ledger_account.""" query_inject_account = """ WITH accounts AS @@ -412,7 +412,7 @@ WITH initial_sum_amounts AS ( """ + init_subquery + """ ), final_sum_amounts AS ( """ + final_subquery + """ ) INSERT INTO - report_general_ledger_qweb_account + report_general_ledger_account ( report_id, create_uid, @@ -612,11 +612,11 @@ AND return subquery_sum_amounts def _inject_partner_values(self, only_empty_partner=False): - """ Inject report values for report_general_ledger_qweb_partner. + """ Inject report values for report_general_ledger_partner. Only for "partner" accounts (payable and receivable). """ - + # pylint: disable=sql-injection query_inject_partner = """ WITH accounts_partners AS @@ -637,7 +637,7 @@ WITH '""" + _('No partner allocated') + """' ) AS partner_name FROM - report_general_ledger_qweb_account ra + report_general_ledger_account ra INNER JOIN account_account a ON ra.account_id = a.id INNER JOIN @@ -702,7 +702,7 @@ WITH initial_sum_amounts AS ( """ + init_subquery + """ ), final_sum_amounts AS ( """ + final_subquery + """ ) INSERT INTO - report_general_ledger_qweb_partner + report_general_ledger_partner ( report_account_id, create_uid, @@ -830,7 +830,7 @@ AND is_partner_line=False, only_empty_partner_line=False, only_unaffected_earnings_account=False): - """ Inject report values for report_general_ledger_qweb_move_line. + """ Inject report values for report_general_ledger_move_line. If centralized option have been chosen, only non centralized accounts are computed. @@ -843,7 +843,7 @@ AND """ query_inject_move_line = """ INSERT INTO - report_general_ledger_qweb_move_line + report_general_ledger_move_line ( """ if is_account_line: @@ -943,13 +943,13 @@ FROM """ if is_account_line: query_inject_move_line += """ - report_general_ledger_qweb_account ra + report_general_ledger_account ra """ elif is_partner_line: query_inject_move_line += """ - report_general_ledger_qweb_partner rp + report_general_ledger_partner rp INNER JOIN - report_general_ledger_qweb_account ra ON rp.report_account_id = ra.id + report_general_ledger_account ra ON rp.report_account_id = ra.id """ query_inject_move_line += """ INNER JOIN @@ -1070,7 +1070,7 @@ ORDER BY ) def _inject_line_centralized_values(self): - """ Inject report values for report_general_ledger_qweb_move_line. + """ Inject report values for report_general_ledger_move_line. Only centralized accounts are computed. """ @@ -1088,7 +1088,7 @@ WITH SUM(ml.credit) AS credit, SUM(ml.balance) AS balance FROM - report_general_ledger_qweb_account ra + report_general_ledger_account ra INNER JOIN account_move_line ml ON ra.account_id = ml.account_id INNER JOIN @@ -1122,7 +1122,7 @@ WITH ra.id, ml.account_id, a.code, 2 ) INSERT INTO - report_general_ledger_qweb_move_line + report_general_ledger_move_line ( report_account_id, create_uid, @@ -1148,7 +1148,7 @@ SELECT OVER (PARTITION BY a.code ORDER BY ml.date) ) AS cumul_balance FROM - report_general_ledger_qweb_account ra + report_general_ledger_account ra INNER JOIN move_lines ml ON ra.account_id = ml.account_id INNER JOIN @@ -1184,16 +1184,16 @@ ORDER BY """ Compute "has_second_currency" flag which will used for display.""" query_update_has_second_currency = """ UPDATE - report_general_ledger_qweb + report_general_ledger SET has_second_currency = ( SELECT TRUE FROM - report_general_ledger_qweb_move_line l + report_general_ledger_move_line l INNER JOIN - report_general_ledger_qweb_account a + report_general_ledger_account a ON l.report_account_id = a.id WHERE a.report_id = %s @@ -1205,12 +1205,12 @@ SET SELECT TRUE FROM - report_general_ledger_qweb_move_line l + report_general_ledger_move_line l INNER JOIN - report_general_ledger_qweb_partner p + report_general_ledger_partner p ON l.report_partner_id = p.id INNER JOIN - report_general_ledger_qweb_account a + report_general_ledger_account a ON p.report_account_id = a.id WHERE a.report_id = %s @@ -1278,7 +1278,7 @@ WHERE id = %s def _inject_unaffected_earnings_account_values(self): """Inject the report values of the unaffected earnings account - for report_general_ledger_qweb_account.""" + for report_general_ledger_account.""" subquery_sum_amounts = """ SELECT SUM(COALESCE(sub.balance, 0.0)) AS balance @@ -1299,11 +1299,13 @@ WHERE id = %s subquery_sum_amounts += """ ) sub """ + + # pylint: disable=sql-injection query_inject_account = """ WITH initial_sum_amounts AS ( """ + subquery_sum_amounts + """ ) INSERT INTO - report_general_ledger_qweb_account + report_general_ledger_account ( report_id, create_uid, @@ -1364,7 +1366,7 @@ WHERE id = %s def _complete_unaffected_earnings_account_values(self): """Complete the report values of the unaffected earnings account - for report_general_ledger_qweb_account.""" + for report_general_ledger_account.""" query_update_unaffected_earnings_account_values = """ WITH sum_amounts AS @@ -1377,9 +1379,9 @@ WHERE id = %s COALESCE(rml.credit, 0.0) ) + ra.initial_balance AS balance FROM - report_general_ledger_qweb_account ra + report_general_ledger_account ra LEFT JOIN - report_general_ledger_qweb_move_line rml + report_general_ledger_move_line rml ON ra.id = rml.report_account_id WHERE ra.report_id = %s @@ -1388,7 +1390,7 @@ WHERE id = %s ra.id ) UPDATE - report_general_ledger_qweb_account ra + report_general_ledger_account ra SET initial_debit = 0.0, initial_credit = 0.0, diff --git a/account_financial_report_qweb/report/general_ledger_xlsx.py b/account_financial_report/report/general_ledger_xlsx.py similarity index 90% rename from account_financial_report_qweb/report/general_ledger_xlsx.py rename to account_financial_report/report/general_ledger_xlsx.py index e7b99cf0..9dee4a3a 100644 --- a/account_financial_report_qweb/report/general_ledger_xlsx.py +++ b/account_financial_report/report/general_ledger_xlsx.py @@ -1,20 +1,15 @@ -# -*- coding: utf-8 -*- + # Author: Damien Crier # 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 odoo.report import report_sxw -from odoo import _ - +from odoo import _, models -class GeneralLedgerXslx(abstract_report_xlsx.AbstractReportXslx): - def __init__(self, name, table, rml=False, parser=False, header=True, - store=False): - super(GeneralLedgerXslx, self).__init__( - name, table, rml, parser, header, store) +class GeneralLedgerXslx(models.AbstractModel): + _name = 'report.a_f_r.report_general_ledger_xlsx' + _inherit = 'report.account_financial_report.abstract_report_xlsx' def _get_report_name(self): return _('General Ledger') @@ -140,10 +135,3 @@ class GeneralLedgerXslx(abstract_report_xlsx.AbstractReportXslx): super(GeneralLedgerXslx, self).write_ending_balance( my_object, name, label ) - - -GeneralLedgerXslx( - 'report.account_financial_report_qweb.report_general_ledger_xlsx', - 'report_general_ledger_qweb', - parser=report_sxw.rml_parse -) diff --git a/account_financial_report_qweb/report/open_items.py b/account_financial_report/report/open_items.py similarity index 88% rename from account_financial_report_qweb/report/open_items.py rename to account_financial_report/report/open_items.py index 5265fd00..2423677b 100644 --- a/account_financial_report_qweb/report/open_items.py +++ b/account_financial_report/report/open_items.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- + # © 2016 Julien Coux (Camptocamp) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). @@ -16,7 +16,7 @@ class OpenItemsReport(models.TransientModel): **** OpenItemsReportMoveLine """ - _name = 'report_open_items_qweb' + _name = 'report_open_items' # Filters fields, used for data computation date_at = fields.Date() @@ -31,18 +31,18 @@ class OpenItemsReport(models.TransientModel): # Data fields, used to browse report data account_ids = fields.One2many( - comodel_name='report_open_items_qweb_account', + comodel_name='report_open_items_account', inverse_name='report_id' ) class OpenItemsReportAccount(models.TransientModel): - _name = 'report_open_items_qweb_account' + _name = 'report_open_items_account' _order = 'code ASC' report_id = fields.Many2one( - comodel_name='report_open_items_qweb', + comodel_name='report_open_items', ondelete='cascade', index=True ) @@ -60,17 +60,17 @@ class OpenItemsReportAccount(models.TransientModel): # Data fields, used to browse report data partner_ids = fields.One2many( - comodel_name='report_open_items_qweb_partner', + comodel_name='report_open_items_partner', inverse_name='report_account_id' ) class OpenItemsReportPartner(models.TransientModel): - _name = 'report_open_items_qweb_partner' + _name = 'report_open_items_partner' report_account_id = fields.Many2one( - comodel_name='report_open_items_qweb_account', + comodel_name='report_open_items_account', ondelete='cascade', index=True ) @@ -87,7 +87,7 @@ class OpenItemsReportPartner(models.TransientModel): # Data fields, used to browse report data move_line_ids = fields.One2many( - comodel_name='report_open_items_qweb_move_line', + comodel_name='report_open_items_move_line', inverse_name='report_partner_id' ) @@ -97,20 +97,20 @@ class OpenItemsReportPartner(models.TransientModel): return """ ORDER BY CASE - WHEN "report_open_items_qweb_partner"."partner_id" IS NOT NULL + WHEN "report_open_items_partner"."partner_id" IS NOT NULL THEN 0 ELSE 1 END, - "report_open_items_qweb_partner"."name" + "report_open_items_partner"."name" """ class OpenItemsReportMoveLine(models.TransientModel): - _name = 'report_open_items_qweb_move_line' + _name = 'report_open_items_move_line' report_partner_id = fields.Many2one( - comodel_name='report_open_items_qweb_partner', + comodel_name='report_open_items_partner', ondelete='cascade', index=True ) @@ -138,20 +138,20 @@ class OpenItemsReportCompute(models.TransientModel): For class fields, go more top at this file. """ - _inherit = 'report_open_items_qweb' + _inherit = 'report_open_items' @api.multi - def print_report(self, xlsx_report=False): + def print_report(self, report_type): self.ensure_one() self.compute_data_for_report() - if xlsx_report: - report_name = 'account_financial_report_qweb.' \ - 'report_open_items_xlsx' + if report_type == 'xlsx': + report_name = 'a_f_r.report_open_items_xlsx' else: - report_name = 'account_financial_report_qweb.' \ + report_name = 'account_financial_report.' \ 'report_open_items_qweb' - return self.env['report'].get_action(docids=self.ids, - report_name=report_name) + return self.env['ir.actions.report'].search( + [('report_name', '=', report_name), + ('report_type', '=', report_type)], limit=1).report_action(self) @api.multi def compute_data_for_report(self): @@ -173,7 +173,7 @@ class OpenItemsReportCompute(models.TransientModel): self.refresh() def _inject_account_values(self): - """Inject report values for report_open_items_qweb_account.""" + """Inject report values for report_open_items_account.""" query_inject_account = """ WITH accounts AS @@ -218,7 +218,7 @@ WITH a.id ) INSERT INTO - report_open_items_qweb_account + report_open_items_account ( report_id, create_uid, @@ -256,7 +256,8 @@ FROM self.env.cr.execute(query_inject_account, query_inject_account_params) def _inject_partner_values(self): - """ Inject report values for report_open_items_qweb_partner. """ + """ Inject report values for report_open_items_partner. """ + # pylint: disable=sql-injection query_inject_partner = """ WITH accounts_partners AS @@ -277,7 +278,7 @@ WITH '""" + _('No partner allocated') + """' ) AS partner_name FROM - report_open_items_qweb_account ra + report_open_items_account ra INNER JOIN account_account a ON ra.account_id = a.id INNER JOIN @@ -309,7 +310,7 @@ WITH at.include_initial_balance ) INSERT INTO - report_open_items_qweb_partner + report_open_items_partner ( report_account_id, create_uid, @@ -363,9 +364,9 @@ FROM END ) AS partial_amount_currency FROM - report_open_items_qweb_partner rp + report_open_items_partner rp INNER JOIN - report_open_items_qweb_account ra + report_open_items_account ra ON rp.report_account_id = ra.id INNER JOIN account_move_line ml @@ -423,7 +424,7 @@ FROM return sub_query def _inject_line_values(self, only_empty_partner_line=False): - """ Inject report values for report_open_items_qweb_move_line. + """ Inject report values for report_open_items_move_line. The "only_empty_partner_line" value is used to compute data without partner. @@ -478,7 +479,7 @@ WITH amount_currency ) INSERT INTO - report_open_items_qweb_move_line + report_open_items_move_line ( report_partner_id, create_uid, @@ -530,9 +531,9 @@ SELECT ml.amount_currency, ml2.amount_residual_currency FROM - report_open_items_qweb_partner rp + report_open_items_partner rp INNER JOIN - report_open_items_qweb_account ra ON rp.report_account_id = ra.id + report_open_items_account ra ON rp.report_account_id = ra.id INNER JOIN account_move_line ml ON ra.account_id = ml.account_id INNER JOIN @@ -600,20 +601,20 @@ ORDER BY def _compute_partners_and_accounts_cumul(self): """ Compute cumulative amount for - report_open_items_qweb_partner and report_open_items_qweb_account. + report_open_items_partner and report_open_items_account. """ query_compute_partners_cumul = """ UPDATE - report_open_items_qweb_partner + report_open_items_partner SET final_amount_residual = ( SELECT SUM(rml.amount_residual) AS final_amount_residual FROM - report_open_items_qweb_move_line rml + report_open_items_move_line rml WHERE - rml.report_partner_id = report_open_items_qweb_partner.id + rml.report_partner_id = report_open_items_partner.id ) WHERE id IN @@ -621,9 +622,9 @@ WHERE SELECT rp.id FROM - report_open_items_qweb_account ra + report_open_items_account ra INNER JOIN - report_open_items_qweb_partner rp + report_open_items_partner rp ON ra.id = rp.report_account_id WHERE ra.report_id = %s @@ -634,16 +635,16 @@ WHERE params_compute_partners_cumul) query_compute_accounts_cumul = """ UPDATE - report_open_items_qweb_account + report_open_items_account SET final_amount_residual = ( SELECT SUM(rp.final_amount_residual) AS final_amount_residual FROM - report_open_items_qweb_partner rp + report_open_items_partner rp WHERE - rp.report_account_id = report_open_items_qweb_account.id + rp.report_account_id = report_open_items_account.id ) WHERE report_id = %s @@ -655,26 +656,26 @@ WHERE def _clean_partners_and_accounts(self, only_delete_account_balance_at_0=False): """ Delete empty data for - report_open_items_qweb_partner and report_open_items_qweb_account. + report_open_items_partner and report_open_items_account. The "only_delete_account_balance_at_0" value is used to delete also the data with cumulative amounts at 0. """ query_clean_partners = """ DELETE FROM - report_open_items_qweb_partner + report_open_items_partner WHERE id IN ( SELECT DISTINCT rp.id FROM - report_open_items_qweb_account ra + report_open_items_account ra INNER JOIN - report_open_items_qweb_partner rp + report_open_items_partner rp ON ra.id = rp.report_account_id LEFT JOIN - report_open_items_qweb_move_line rml + report_open_items_move_line rml ON rp.id = rml.report_partner_id WHERE ra.report_id = %s @@ -697,16 +698,16 @@ WHERE self.env.cr.execute(query_clean_partners, params_clean_partners) query_clean_accounts = """ DELETE FROM - report_open_items_qweb_account + report_open_items_account WHERE id IN ( SELECT DISTINCT ra.id FROM - report_open_items_qweb_account ra + report_open_items_account ra LEFT JOIN - report_open_items_qweb_partner rp + report_open_items_partner rp ON ra.id = rp.report_account_id WHERE ra.report_id = %s @@ -732,19 +733,19 @@ WHERE """ Compute "has_second_currency" flag which will used for display.""" query_update_has_second_currency = """ UPDATE - report_open_items_qweb + report_open_items SET has_second_currency = ( SELECT TRUE FROM - report_open_items_qweb_move_line l + report_open_items_move_line l INNER JOIN - report_open_items_qweb_partner p + report_open_items_partner p ON l.report_partner_id = p.id INNER JOIN - report_open_items_qweb_account a + report_open_items_account a ON p.report_account_id = a.id WHERE a.report_id = %s diff --git a/account_financial_report_qweb/report/open_items_xlsx.py b/account_financial_report/report/open_items_xlsx.py similarity index 87% rename from account_financial_report_qweb/report/open_items_xlsx.py rename to account_financial_report/report/open_items_xlsx.py index 63bd02fb..a5447aea 100644 --- a/account_financial_report_qweb/report/open_items_xlsx.py +++ b/account_financial_report/report/open_items_xlsx.py @@ -1,19 +1,14 @@ -# -*- 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 odoo.report import report_sxw -from odoo import _ - +from odoo import _, models -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) +class OpenItemsXslx(models.AbstractModel): + _name = 'report.a_f_r.report_open_items_xlsx' + _inherit = 'report.account_financial_report.abstract_report_xlsx' def _get_report_name(self): return _('Open Items') @@ -108,10 +103,3 @@ class OpenItemsXslx(abstract_report_xlsx.AbstractReportXslx): 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 -) diff --git a/account_financial_report_qweb/report/templates/aged_partner_balance.xml b/account_financial_report/report/templates/aged_partner_balance.xml similarity index 93% rename from account_financial_report_qweb/report/templates/aged_partner_balance.xml rename to account_financial_report/report/templates/aged_partner_balance.xml index 50edb5a6..3e94011e 100644 --- a/account_financial_report_qweb/report/templates/aged_partner_balance.xml +++ b/account_financial_report/report/templates/aged_partner_balance.xml @@ -1,20 +1,20 @@ -