Browse Source

Merge pull request #489 from Eficent/11.0-imp-account_financial_report-multicompany-2

11.0 imp account financial report multicompany 2
pull/498/head
Jordi Ballester Alomar 6 years ago
committed by GitHub
parent
commit
cfab16090c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      account_financial_report/README.rst
  2. 2
      account_financial_report/__manifest__.py
  3. 1
      account_financial_report/readme/CONTRIBUTORS.rst
  4. 4
      account_financial_report/report/abstract_report_xlsx.py
  5. 6
      account_financial_report/report/aged_partner_balance_xlsx.py
  6. 6
      account_financial_report/report/general_ledger_xlsx.py
  7. 6
      account_financial_report/report/journal_ledger_xlsx.py
  8. 6
      account_financial_report/report/open_items_xlsx.py
  9. 9
      account_financial_report/report/templates/aged_partner_balance.xml
  10. 9
      account_financial_report/report/templates/general_ledger.xml
  11. 10
      account_financial_report/report/templates/journal_ledger.xml
  12. 10
      account_financial_report/report/templates/layouts.xml
  13. 10
      account_financial_report/report/templates/open_items.xml
  14. 8
      account_financial_report/report/templates/trial_balance.xml
  15. 4
      account_financial_report/report/templates/vat_report.xml
  16. 6
      account_financial_report/report/trial_balance_xlsx.py
  17. 6
      account_financial_report/report/vat_report_xlsx.py
  18. 27
      account_financial_report/tests/test_vat_report.py
  19. 14
      account_financial_report/wizard/aged_partner_balance_wizard.py
  20. 12
      account_financial_report/wizard/aged_partner_balance_wizard_view.xml
  21. 29
      account_financial_report/wizard/general_ledger_wizard.py
  22. 19
      account_financial_report/wizard/general_ledger_wizard_view.xml
  23. 14
      account_financial_report/wizard/open_items_wizard.py
  24. 14
      account_financial_report/wizard/open_items_wizard_view.xml
  25. 25
      account_financial_report/wizard/trial_balance_wizard.py
  26. 20
      account_financial_report/wizard/trial_balance_wizard_view.xml
  27. 20
      account_financial_report/wizard/vat_report_wizard.py

1
account_financial_report/README.rst

@ -97,6 +97,7 @@ Contributors
* Akim Juillerat <akim.juillerat@camptocamp.com> * Akim Juillerat <akim.juillerat@camptocamp.com>
* Alexis de Lattre <alexis@via.ecp.fr> * Alexis de Lattre <alexis@via.ecp.fr>
* Mihai Fekete <feketemihai@gmail.com> * Mihai Fekete <feketemihai@gmail.com>
* Miquel Raïch <miquel.raich@eficent.com>
Much of the work in this module was done at a sprint in Sorrento, Italy in Much of the work in this module was done at a sprint in Sorrento, Italy in
April 2016. April 2016.

2
account_financial_report/__manifest__.py

@ -4,7 +4,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{ {
'name': 'Account Financial Reports', 'name': 'Account Financial Reports',
'version': '11.0.2.3.1',
'version': '11.0.2.4.0',
'category': 'Reporting', 'category': 'Reporting',
'summary': 'OCA Financial Reports', 'summary': 'OCA Financial Reports',
'author': 'Camptocamp SA,' 'author': 'Camptocamp SA,'

1
account_financial_report/readme/CONTRIBUTORS.rst

@ -14,6 +14,7 @@
* Akim Juillerat <akim.juillerat@camptocamp.com> * Akim Juillerat <akim.juillerat@camptocamp.com>
* Alexis de Lattre <alexis@via.ecp.fr> * Alexis de Lattre <alexis@via.ecp.fr>
* Mihai Fekete <feketemihai@gmail.com> * Mihai Fekete <feketemihai@gmail.com>
* Miquel Raïch <miquel.raich@eficent.com>
Much of the work in this module was done at a sprint in Sorrento, Italy in Much of the work in this module was done at a sprint in Sorrento, Italy in
April 2016. April 2016.

4
account_financial_report/report/abstract_report_xlsx.py

@ -41,7 +41,7 @@ class AbstractReportXslx(models.AbstractModel):
self._define_formats(workbook) self._define_formats(workbook)
report_name = self._get_report_name()
report_name = self._get_report_name(objects)
report_footer = self._get_report_footer() report_footer = self._get_report_footer()
filters = self._get_report_filters(report) filters = self._get_report_filters(report)
self.columns = self._get_report_columns(report) self.columns = self._get_report_columns(report)
@ -349,7 +349,7 @@ class AbstractReportXslx(models.AbstractModel):
""" """
raise NotImplementedError() raise NotImplementedError()
def _get_report_name(self):
def _get_report_name(self, objects):
""" """
Allow to define the report name. Allow to define the report name.
Report name will be used as sheet name and as report title. Report name will be used as sheet name and as report title.

6
account_financial_report/report/aged_partner_balance_xlsx.py

@ -10,8 +10,10 @@ class AgedPartnerBalanceXslx(models.AbstractModel):
_name = 'report.a_f_r.report_aged_partner_balance_xlsx' _name = 'report.a_f_r.report_aged_partner_balance_xlsx'
_inherit = 'report.account_financial_report.abstract_report_xlsx' _inherit = 'report.account_financial_report.abstract_report_xlsx'
def _get_report_name(self):
return _('Aged Partner Balance')
def _get_report_name(self, objects):
report = objects
return _('Aged Partner Balance - %s - %s') % (
report.company_id.name, report.company_id.currency_id.name)
def _get_report_columns(self, report): def _get_report_columns(self, report):
if not report.show_move_line_details: if not report.show_move_line_details:

6
account_financial_report/report/general_ledger_xlsx.py

@ -11,8 +11,10 @@ class GeneralLedgerXslx(models.AbstractModel):
_name = 'report.a_f_r.report_general_ledger_xlsx' _name = 'report.a_f_r.report_general_ledger_xlsx'
_inherit = 'report.account_financial_report.abstract_report_xlsx' _inherit = 'report.account_financial_report.abstract_report_xlsx'
def _get_report_name(self):
return _('General Ledger')
def _get_report_name(self, objects):
report = objects
return _('General Ledger - %s - %s') % (
report.company_id.name, report.company_id.currency_id.name)
def _get_report_columns(self, report): def _get_report_columns(self, report):
res = { res = {

6
account_financial_report/report/journal_ledger_xlsx.py

@ -10,8 +10,10 @@ class JournalLedgerXslx(models.AbstractModel):
_name = 'report.a_f_r.report_journal_ledger_xlsx' _name = 'report.a_f_r.report_journal_ledger_xlsx'
_inherit = 'report.account_financial_report.abstract_report_xlsx' _inherit = 'report.account_financial_report.abstract_report_xlsx'
def _get_report_name(self):
return _('Journal Ledger')
def _get_report_name(self, objects):
report = objects
return _('Journal Ledger - %s - %s') % (
report.company_id.name, report.company_id.currency_id.name)
def _get_report_columns(self, report): def _get_report_columns(self, report):
columns = [ columns = [

6
account_financial_report/report/open_items_xlsx.py

@ -9,8 +9,10 @@ class OpenItemsXslx(models.AbstractModel):
_name = 'report.a_f_r.report_open_items_xlsx' _name = 'report.a_f_r.report_open_items_xlsx'
_inherit = 'report.account_financial_report.abstract_report_xlsx' _inherit = 'report.account_financial_report.abstract_report_xlsx'
def _get_report_name(self):
return _('Open Items')
def _get_report_name(self, objects):
report = objects
return _('Open Items - %s - %s') % (
report.company_id.name, report.company_id.currency_id.name)
def _get_report_columns(self, report): def _get_report_columns(self, report):
res = { res = {

9
account_financial_report/report/templates/aged_partner_balance.xml

@ -14,12 +14,13 @@
<template id="report_aged_partner_balance_base"> <template id="report_aged_partner_balance_base">
<!-- Saved flag fields into variables, used to define columns display --> <!-- Saved flag fields into variables, used to define columns display -->
<t t-set="show_move_line_details" t-value="o.show_move_line_details"/> <t t-set="show_move_line_details" t-value="o.show_move_line_details"/>
<!-- Defines global variables used by internal layout --> <!-- Defines global variables used by internal layout -->
<t t-set="title">Aged Partner Balance</t>
<t t-set="title">Aged Partner Balance - <t t-raw="o.company_id.name"/> - <t t-raw="o.company_id.currency_id.name"/></t>
<t t-set="company_name" t-value="o.company_id.name"/> <t t-set="company_name" t-value="o.company_id.name"/>
<div class="page">
<div class="page data_table">
<div class="row">
<h4 class="mt0" t-esc="title or 'Odoo Report'"/>
</div>
<!-- Display filters --> <!-- Display filters -->
<t t-call="account_financial_report.report_aged_partner_balance_filters"/> <t t-call="account_financial_report.report_aged_partner_balance_filters"/>

9
account_financial_report/report/templates/general_ledger.xml

@ -17,13 +17,14 @@
<t t-set="show_cost_center" t-value="o.show_cost_center"/> <t t-set="show_cost_center" t-value="o.show_cost_center"/>
<t t-set="foreign_currency" t-value="o.foreign_currency"/> <t t-set="foreign_currency" t-value="o.foreign_currency"/>
<!-- Defines global variables used by internal layout --> <!-- Defines global variables used by internal layout -->
<t t-set="title">General Ledger</t>
<t t-set="title">General Ledger - <t t-raw="o.company_id.name"/> - <t t-raw="o.company_id.currency_id.name"/></t>
<t t-set="company_name" t-value="o.company_id.name"/> <t t-set="company_name" t-value="o.company_id.name"/>
<div class="page">
<div class="page data_table">
<div class="row">
<h4 class="mt0" t-esc="title or 'Odoo Report'"/>
</div>
<!-- Display filters --> <!-- Display filters -->
<t t-call="account_financial_report.report_general_ledger_filters"/> <t t-call="account_financial_report.report_general_ledger_filters"/>
<t t-foreach="o.account_ids" t-as="account"> <t t-foreach="o.account_ids" t-as="account">
<div class="page_break"> <div class="page_break">
<!-- Display account header --> <!-- Display account header -->

10
account_financial_report/report/templates/journal_ledger.xml

@ -12,12 +12,14 @@
</template> </template>
<template id="report_journal_ledger_base"> <template id="report_journal_ledger_base">
<t t-set="title">Journal Ledger</t>
<t t-set="company_name" t-value="o.company_id.name"/>
<t t-set="display_currency" t-value="o.foreign_currency"/> <t t-set="display_currency" t-value="o.foreign_currency"/>
<t t-set="display_account_name" t-value="o.with_account_name"/> <t t-set="display_account_name" t-value="o.with_account_name"/>
<div class="page">
<t t-set="title">Journal Ledger - <t t-raw="o.company_id.name"/> - <t t-raw="o.company_id.currency_id.name"/></t>
<t t-set="company_name" t-value="o.company_id.name"/>
<div class="page data_table">
<div class="row">
<h4 class="mt0" t-esc="title or 'Odoo Report'"/>
</div>
<t t-if="o.group_option == 'none'"> <t t-if="o.group_option == 'none'">
<div class="page_break"> <div class="page_break">
<t t-call="account_financial_report.report_journal_all"/> <t t-call="account_financial_report.report_journal_all"/>

10
account_financial_report/report/templates/layouts.xml

@ -2,16 +2,6 @@
<odoo> <odoo>
<template id="account_financial_report.internal_layout"> <template id="account_financial_report.internal_layout">
<div class="header">
<div class="row">
<div class="col-xs-6">
<span t-esc="title"/>
</div>
<div class="col-xs-6 text-right">
<span t-esc="company_name"/>
</div>
</div>
</div>
<div class="article"> <div class="article">
<link href="/account_financial_report/static/src/css/report.css" rel="stylesheet"/> <link href="/account_financial_report/static/src/css/report.css" rel="stylesheet"/>
<t t-raw="0" /> <t t-raw="0" />

10
account_financial_report/report/templates/open_items.xml

@ -14,13 +14,13 @@
<template id="account_financial_report.report_open_items_base"> <template id="account_financial_report.report_open_items_base">
<!-- Saved flag fields into variables, used to define columns display --> <!-- Saved flag fields into variables, used to define columns display -->
<t t-set="foreign_currency" t-value="o.foreign_currency"/> <t t-set="foreign_currency" t-value="o.foreign_currency"/>
<!-- Defines global variables used by internal layout --> <!-- Defines global variables used by internal layout -->
<t t-set="title">Open Items</t>
<t t-set="title">Open Items - <t t-raw="o.company_id.name"/> - <t t-raw="o.company_id.currency_id.name"/></t>
<t t-set="company_name" t-value="o.company_id.name"/> <t t-set="company_name" t-value="o.company_id.name"/>
<div class="page">
<div class="page data_table">
<div class="row">
<h4 class="mt0" t-esc="title or 'Odoo Report'"/>
</div>
<!-- Display filters --> <!-- Display filters -->
<t t-call="account_financial_report.report_open_items_filters"/> <t t-call="account_financial_report.report_open_items_filters"/>

8
account_financial_report/report/templates/trial_balance.xml

@ -16,11 +16,13 @@
<t t-set="show_partner_details" t-value="o.show_partner_details"/> <t t-set="show_partner_details" t-value="o.show_partner_details"/>
<t t-set="foreign_currency" t-value="o.foreign_currency"/> <t t-set="foreign_currency" t-value="o.foreign_currency"/>
<!-- Defines global variables used by internal layout --> <!-- Defines global variables used by internal layout -->
<t t-set="title">Trial Balance</t>
<t t-set="title">Trial Balance - <t t-raw="o.company_id.name"/> - <t t-raw="o.company_id.currency_id.name"/></t>
<t t-set="company_name" t-value="o.company_id.name"/> <t t-set="company_name" t-value="o.company_id.name"/>
<t t-set="res_company" t-value="o.company_id"/> <t t-set="res_company" t-value="o.company_id"/>
<div class="page">
<div class="page data_table">
<div class="row">
<h4 class="mt0" t-esc="title or 'Odoo Report'"/>
</div>
<!-- Display filters --> <!-- Display filters -->
<t t-call="account_financial_report.report_trial_balance_filters"/> <t t-call="account_financial_report.report_trial_balance_filters"/>
<div class="act_as_table list_table" style="margin-top: 10px;"/> <div class="act_as_table list_table" style="margin-top: 10px;"/>

4
account_financial_report/report/templates/vat_report.xml

@ -12,15 +12,15 @@
</template> </template>
<template id="account_financial_report.report_vat_report_base"> <template id="account_financial_report.report_vat_report_base">
<t t-set="title">VAT Report - <t t-raw="o.company_id.name"/> - <t t-raw="o.company_id.currency_id.name"/></t>
<t t-set="company_name" t-value="o.company_id.name"/>
<div class="page data_table"> <div class="page data_table">
<t t-set="title">VAT Report</t>
<div class="row"> <div class="row">
<h4 class="mt0" t-esc="title or 'Odoo Report'"/> <h4 class="mt0" t-esc="title or 'Odoo Report'"/>
</div> </div>
<!-- Display filters --> <!-- Display filters -->
<t t-call="account_financial_report.report_vat_report_filters"/> <t t-call="account_financial_report.report_vat_report_filters"/>
<div class="page_break"/> <div class="page_break"/>
<div class="act_as_table data_table" style="width: 100%;"> <div class="act_as_table data_table" style="width: 100%;">
<!-- Display table headers for lines --> <!-- Display table headers for lines -->
<div class="act_as_thead"> <div class="act_as_thead">

6
account_financial_report/report/trial_balance_xlsx.py

@ -10,8 +10,10 @@ class TrialBalanceXslx(models.AbstractModel):
_name = 'report.a_f_r.report_trial_balance_xlsx' _name = 'report.a_f_r.report_trial_balance_xlsx'
_inherit = 'report.account_financial_report.abstract_report_xlsx' _inherit = 'report.account_financial_report.abstract_report_xlsx'
def _get_report_name(self):
return _('Trial Balance')
def _get_report_name(self, objects):
report = objects
return _('Trial Balance - %s - %s') % (
report.company_id.name, report.company_id.currency_id.name)
def _get_report_columns(self, report): def _get_report_columns(self, report):
if not report.show_partner_details: if not report.show_partner_details:

6
account_financial_report/report/vat_report_xlsx.py

@ -8,8 +8,10 @@ class VATReportXslx(models.AbstractModel):
_name = 'report.a_f_r.report_vat_report_xlsx' _name = 'report.a_f_r.report_vat_report_xlsx'
_inherit = 'report.account_financial_report.abstract_report_xlsx' _inherit = 'report.account_financial_report.abstract_report_xlsx'
def _get_report_name(self):
return _('VAT Report')
def _get_report_name(self, objects):
report = objects
return _('VAT Report - %s - %s') % (
report.company_id.name, report.company_id.currency_id.name)
def _get_report_columns(self, report): def _get_report_columns(self, report):
return { return {

27
account_financial_report/tests/test_vat_report.py

@ -48,22 +48,27 @@ class TestVATReport(common.TransactionCase):
def setUp(self): def setUp(self):
super(TestVATReport, self).setUp() super(TestVATReport, self).setUp()
self.date_from = time.strftime('%Y-%m-01'),
self.date_to = time.strftime('%Y-%m-28'),
self.date_from = time.strftime('%Y-%m-01')
self.date_to = time.strftime('%Y-%m-28')
self.company = self.env.ref('base.main_company')
self.receivable_account = self.env['account.account'].search([ self.receivable_account = self.env['account.account'].search([
('company_id', '=', self.company.id),
('user_type_id.name', '=', 'Receivable') ('user_type_id.name', '=', 'Receivable')
], limit=1) ], limit=1)
self.income_account = self.env['account.account'].search([ self.income_account = self.env['account.account'].search([
('company_id', '=', self.company.id),
('user_type_id.name', '=', 'Income') ('user_type_id.name', '=', 'Income')
], limit=1) ], limit=1)
self.tax_account = self.env['account.account'].search([ self.tax_account = self.env['account.account'].search([
('company_id', '=', self.company.id),
('user_type_id', ('user_type_id',
'=', '=',
self.env.ref( self.env.ref(
'account.data_account_type_non_current_liabilities').id
)], limit=1)
self.bank_journal = self.env['account.journal'].search(
[('type', '=', 'bank')], limit=1)
'account.data_account_type_non_current_liabilities').id)
], limit=1)
self.bank_journal = self.env['account.journal'].search([
('type', '=', 'bank'), ('company_id', '=', self.company.id)
], limit=1)
self.tax_tag_01 = self.env['account.account.tag'].create({ self.tax_tag_01 = self.env['account.account.tag'].create({
'name': 'Tag 01', 'name': 'Tag 01',
'applicability': 'taxes' 'applicability': 'taxes'
@ -90,6 +95,7 @@ class TestVATReport(common.TransactionCase):
'amount_type': 'percent', 'amount_type': 'percent',
'type_tax_use': 'sale', 'type_tax_use': 'sale',
'account_id': self.tax_account.id, 'account_id': self.tax_account.id,
'company_id': self.company.id,
'refund_account_id': self.tax_account.id, 'refund_account_id': self.tax_account.id,
'tax_group_id': self.tax_group_10.id, 'tax_group_id': self.tax_group_10.id,
'tag_ids': [(6, 0, [self.tax_tag_01.id, self.tax_tag_02.id])] 'tag_ids': [(6, 0, [self.tax_tag_01.id, self.tax_tag_02.id])]
@ -102,6 +108,7 @@ class TestVATReport(common.TransactionCase):
'type_tax_use': 'sale', 'type_tax_use': 'sale',
'tax_exigibility': 'on_payment', 'tax_exigibility': 'on_payment',
'account_id': self.tax_account.id, 'account_id': self.tax_account.id,
'company_id': self.company.id,
'refund_account_id': self.tax_account.id, 'refund_account_id': self.tax_account.id,
'cash_basis_account': self.tax_account.id, 'cash_basis_account': self.tax_account.id,
'tax_group_id': self.tax_group_20.id, 'tax_group_id': self.tax_group_20.id,
@ -111,6 +118,7 @@ class TestVATReport(common.TransactionCase):
invoice = self.env['account.invoice'].create({ invoice = self.env['account.invoice'].create({
'partner_id': self.env.ref('base.res_partner_2').id, 'partner_id': self.env.ref('base.res_partner_2').id,
'account_id': self.receivable_account.id, 'account_id': self.receivable_account.id,
'company_id': self.company.id,
'date_invoice': time.strftime('%Y-%m-03'), 'date_invoice': time.strftime('%Y-%m-03'),
'type': 'out_invoice', 'type': 'out_invoice',
}) })
@ -130,6 +138,7 @@ class TestVATReport(common.TransactionCase):
self.cbinvoice = self.env['account.invoice'].create({ self.cbinvoice = self.env['account.invoice'].create({
'partner_id': self.env.ref('base.res_partner_2').id, 'partner_id': self.env.ref('base.res_partner_2').id,
'account_id': self.receivable_account.id, 'account_id': self.receivable_account.id,
'company_id': self.company.id,
'date_invoice': time.strftime('%Y-%m-05'), 'date_invoice': time.strftime('%Y-%m-05'),
'type': 'out_invoice', 'type': 'out_invoice',
}) })
@ -147,13 +156,12 @@ class TestVATReport(common.TransactionCase):
self.cbinvoice.action_invoice_open() self.cbinvoice.action_invoice_open()
def _get_report_lines(self): def _get_report_lines(self):
company = self.env.ref('base.main_company')
self.cbinvoice.pay_and_reconcile( self.cbinvoice.pay_and_reconcile(
self.bank_journal.id, 300, time.strftime('%Y-%m-10')) self.bank_journal.id, 300, time.strftime('%Y-%m-10'))
vat_report = self.env['report_vat_report'].create({ vat_report = self.env['report_vat_report'].create({
'date_from': self.date_from, 'date_from': self.date_from,
'date_to': self.date_to, 'date_to': self.date_to,
'company_id': company.id,
'company_id': self.company.id,
'based_on': 'taxtags', 'based_on': 'taxtags',
'tax_detail': True, 'tax_detail': True,
}) })
@ -238,11 +246,10 @@ class TestVATReport(common.TransactionCase):
self.assertEqual(lines['tax_group_20'].tax, 50) self.assertEqual(lines['tax_group_20'].tax, 50)
def test_get_report_html(self): def test_get_report_html(self):
company = self.env.ref('base.main_company')
vat_report = self.env['report_vat_report'].create({ vat_report = self.env['report_vat_report'].create({
'date_from': self.date_from, 'date_from': self.date_from,
'date_to': self.date_to, 'date_to': self.date_to,
'company_id': company.id,
'company_id': self.company.id,
'tax_detail': True, 'tax_detail': True,
}) })
vat_report.compute_data_for_report() vat_report.compute_data_for_report()

14
account_financial_report/wizard/aged_partner_balance_wizard.py

@ -17,6 +17,7 @@ class AgedPartnerBalanceWizard(models.TransientModel):
company_id = fields.Many2one( company_id = fields.Many2one(
comodel_name='res.company', comodel_name='res.company',
default=lambda self: self.env.user.company_id, default=lambda self: self.env.user.company_id,
required=True,
string='Company' string='Company'
) )
date_at = fields.Date(required=True, date_at = fields.Date(required=True,
@ -38,11 +39,22 @@ class AgedPartnerBalanceWizard(models.TransientModel):
) )
show_move_line_details = fields.Boolean() show_move_line_details = fields.Boolean()
@api.onchange('company_id')
def onchange_company_id(self):
"""Handle company change."""
if self.company_id and self.partner_ids:
self.partner_ids = self.partner_ids.filtered(
lambda p: p.company_id == self.company_id or
not p.company_id)
if self.company_id and self.account_ids:
self.account_ids = self.account_ids.filtered(
lambda a: a.company_id == self.company_id)
@api.onchange('receivable_accounts_only', 'payable_accounts_only') @api.onchange('receivable_accounts_only', 'payable_accounts_only')
def onchange_type_accounts_only(self): def onchange_type_accounts_only(self):
"""Handle receivable/payable accounts only change.""" """Handle receivable/payable accounts only change."""
if self.receivable_accounts_only or self.payable_accounts_only: if self.receivable_accounts_only or self.payable_accounts_only:
domain = []
domain = [('company_id', '=', self.company_id.id)]
if self.receivable_accounts_only and self.payable_accounts_only: if self.receivable_accounts_only and self.payable_accounts_only:
domain += [('internal_type', 'in', ('receivable', 'payable'))] domain += [('internal_type', 'in', ('receivable', 'payable'))]
elif self.receivable_accounts_only: elif self.receivable_accounts_only:

12
account_financial_report/wizard/aged_partner_balance_wizard_view.xml

@ -21,15 +21,21 @@
</group> </group>
<group name="partner_filter" col="1"> <group name="partner_filter" col="1">
<label for="partner_ids"/> <label for="partner_ids"/>
<field name="partner_ids" nolabel="1" widget="many2many_tags" options="{'no_create': True}"/>
<field name="partner_ids" nolabel="1"
widget="many2many_tags"
options="{'no_create': True}"
domain="['|',('company_id','=',company_id), ('company_id','=',False)]"/>
</group> </group>
<group name="account_filter" col="4"> <group name="account_filter" col="4">
<label for="account_ids" colspan="4"/> <label for="account_ids" colspan="4"/>
<field name="receivable_accounts_only"/> <field name="receivable_accounts_only"/>
<field name="payable_accounts_only"/> <field name="payable_accounts_only"/>
<field name="account_ids" nolabel="1" widget="many2many_tags" options="{'no_create': True}" colspan="4"/>
<field name="account_ids" nolabel="1"
widget="many2many_tags"
options="{'no_create': True}"
domain="[('company_id','=',company_id)]"
colspan="4"/>
</group> </group>
<field name="account_ids" nolabel="1" options="{'no_create': True}"/>
<footer> <footer>
<button name="button_export_html" string="View" <button name="button_export_html" string="View"
type="object" default_focus="1" class="oe_highlight"/> type="object" default_focus="1" class="oe_highlight"/>

29
account_financial_report/wizard/general_ledger_wizard.py

@ -7,9 +7,10 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
from odoo import api, fields, models, _
from odoo.tools.safe_eval import safe_eval from odoo.tools.safe_eval import safe_eval
from odoo.tools import pycompat from odoo.tools import pycompat
from odoo.exceptions import ValidationError
class GeneralLedgerReportWizard(models.TransientModel): class GeneralLedgerReportWizard(models.TransientModel):
@ -21,6 +22,7 @@ class GeneralLedgerReportWizard(models.TransientModel):
company_id = fields.Many2one( company_id = fields.Many2one(
comodel_name='res.company', comodel_name='res.company',
default=lambda self: self.env.user.company_id, default=lambda self: self.env.user.company_id,
required=True,
string='Company' string='Company'
) )
date_range_id = fields.Many2one( date_range_id = fields.Many2one(
@ -98,6 +100,19 @@ class GeneralLedgerReportWizard(models.TransientModel):
('company_id', '=', self.company_id.id) ('company_id', '=', self.company_id.id)
]) ])
self.not_only_one_unaffected_earnings_account = count != 1 self.not_only_one_unaffected_earnings_account = count != 1
if self.company_id and self.date_range_id.company_id and \
self.date_range_id.company_id != self.company_id:
self.date_range_id = False
if self.company_id and self.partner_ids:
self.partner_ids = self.partner_ids.filtered(
lambda p: p.company_id == self.company_id or
not p.company_id)
if self.company_id and self.account_ids:
self.account_ids = self.account_ids.filtered(
lambda a: a.company_id == self.company_id)
if self.company_id and self.cost_center_ids:
self.cost_center_ids = self.cost_center_ids.filtered(
lambda c: c.company_id == self.company_id)
@api.onchange('date_range_id') @api.onchange('date_range_id')
def onchange_date_range_id(self): def onchange_date_range_id(self):
@ -105,11 +120,21 @@ class GeneralLedgerReportWizard(models.TransientModel):
self.date_from = self.date_range_id.date_start self.date_from = self.date_range_id.date_start
self.date_to = self.date_range_id.date_end self.date_to = self.date_range_id.date_end
@api.multi
@api.constrains('company_id', 'date_range_id')
def _check_company_id_date_range_id(self):
for rec in self.sudo():
if rec.company_id and rec.date_range_id.company_id and\
rec.company_id != rec.date_range_id.company_id:
raise ValidationError(
_('The Company in the General Ledger Report Wizard and in '
'Date Range must be the same.'))
@api.onchange('receivable_accounts_only', 'payable_accounts_only') @api.onchange('receivable_accounts_only', 'payable_accounts_only')
def onchange_type_accounts_only(self): def onchange_type_accounts_only(self):
"""Handle receivable/payable accounts only change.""" """Handle receivable/payable accounts only change."""
if self.receivable_accounts_only or self.payable_accounts_only: if self.receivable_accounts_only or self.payable_accounts_only:
domain = []
domain = [('company_id', '=', self.company_id.id)]
if self.receivable_accounts_only and self.payable_accounts_only: if self.receivable_accounts_only and self.payable_accounts_only:
domain += [('internal_type', 'in', ('receivable', 'payable'))] domain += [('internal_type', 'in', ('receivable', 'payable'))]
elif self.receivable_accounts_only: elif self.receivable_accounts_only:

19
account_financial_report/wizard/general_ledger_wizard_view.xml

@ -13,7 +13,8 @@
<div attrs="{'invisible': [('not_only_one_unaffected_earnings_account', '=', True)]}"> <div attrs="{'invisible': [('not_only_one_unaffected_earnings_account', '=', True)]}">
<group name="filters"> <group name="filters">
<group name="date_range"> <group name="date_range">
<field name="date_range_id" domain="['|',('company_id','=',company_id), ('company_id','=',False)]"/>
<field name="date_range_id"
domain="['|',('company_id','=',company_id), ('company_id','=',False)]"/>
<field name="date_from"/> <field name="date_from"/>
<field name="date_to"/> <field name="date_to"/>
<field name="fy_start_date" invisible="1"/> <field name="fy_start_date" invisible="1"/>
@ -32,13 +33,23 @@
<field name="receivable_accounts_only"/> <field name="receivable_accounts_only"/>
<field name="payable_accounts_only"/> <field name="payable_accounts_only"/>
</group> </group>
<field name="account_ids" nolabel="1" widget="many2many_tags" options="{'no_create': True}"/>
<field name="account_ids"
nolabel="1"
widget="many2many_tags"
options="{'no_create': True}"
domain="[('company_id','=',company_id)]"/>
</page> </page>
<page string="Filter partners"> <page string="Filter partners">
<field name="partner_ids" nolabel="1" widget="many2many_tags" options="{'no_create': True}"/>
<field name="partner_ids" nolabel="1"
widget="many2many_tags"
domain="['|',('company_id','=',company_id), ('company_id','=',False)]"
options="{'no_create': True}"/>
</page> </page>
<page string="Filter cost centers" groups="analytic.group_analytic_accounting"> <page string="Filter cost centers" groups="analytic.group_analytic_accounting">
<field name="cost_center_ids" nolabel="1" options="{'no_create': True}" groups="analytic.group_analytic_accounting"/>
<field name="cost_center_ids" nolabel="1"
options="{'no_create': True}"
domain="[('company_id','=',company_id)]"
groups="analytic.group_analytic_accounting"/>
</page> </page>
<page string="Filter analytic tags"> <page string="Filter analytic tags">
<field name="analytic_tag_ids" widget="many2many_tags" nolabel="1" options="{'no_create': True}"/> <field name="analytic_tag_ids" widget="many2many_tags" nolabel="1" options="{'no_create': True}"/>

14
account_financial_report/wizard/open_items_wizard.py

@ -17,6 +17,7 @@ class OpenItemsReportWizard(models.TransientModel):
company_id = fields.Many2one( company_id = fields.Many2one(
comodel_name='res.company', comodel_name='res.company',
default=lambda self: self.env.user.company_id, default=lambda self: self.env.user.company_id,
required=True,
string='Company' string='Company'
) )
date_at = fields.Date(required=True, date_at = fields.Date(required=True,
@ -51,11 +52,22 @@ class OpenItemsReportWizard(models.TransientModel):
'will display initial and final balance in that currency.' 'will display initial and final balance in that currency.'
) )
@api.onchange('company_id')
def onchange_company_id(self):
"""Handle company change."""
if self.company_id and self.partner_ids:
self.partner_ids = self.partner_ids.filtered(
lambda p: p.company_id == self.company_id or
not p.company_id)
if self.company_id and self.account_ids:
self.account_ids = self.account_ids.filtered(
lambda a: a.company_id == self.company_id)
@api.onchange('receivable_accounts_only', 'payable_accounts_only') @api.onchange('receivable_accounts_only', 'payable_accounts_only')
def onchange_type_accounts_only(self): def onchange_type_accounts_only(self):
"""Handle receivable/payable accounts only change.""" """Handle receivable/payable accounts only change."""
if self.receivable_accounts_only or self.payable_accounts_only: if self.receivable_accounts_only or self.payable_accounts_only:
domain = []
domain = [('company_id', '=', self.company_id.id)]
if self.receivable_accounts_only and self.payable_accounts_only: if self.receivable_accounts_only and self.payable_accounts_only:
domain += [('internal_type', 'in', ('receivable', 'payable'))] domain += [('internal_type', 'in', ('receivable', 'payable'))]
elif self.receivable_accounts_only: elif self.receivable_accounts_only:

14
account_financial_report/wizard/open_items_wizard_view.xml

@ -22,13 +22,21 @@
</group> </group>
<group name="partner_filter" col="1"> <group name="partner_filter" col="1">
<label for="partner_ids"/> <label for="partner_ids"/>
<field name="partner_ids" nolabel="1" widget="many2many_tags" options="{'no_create': True}"/>
<field name="partner_ids"
nolabel="1"
domain="['|',('company_id','=',company_id), ('company_id','=',False)]"
widget="many2many_tags"
options="{'no_create': True}"/>
</group> </group>
<group name="account_filter" col="4"> <group name="account_filter" col="4">
<label for="account_ids" colspan="4"/>
<field name="receivable_accounts_only"/> <field name="receivable_accounts_only"/>
<field name="payable_accounts_only"/> <field name="payable_accounts_only"/>
<field name="account_ids" nolabel="1" widget="many2many_tags" options="{'no_create': True}" colspan="4"/>
<field name="account_ids"
nolabel="1"
widget="many2many_tags"
domain="[('company_id','=',company_id)]"
options="{'no_create': True}"
colspan="4"/>
</group> </group>
<footer> <footer>
<button name="button_export_html" string="View" <button name="button_export_html" string="View"

25
account_financial_report/wizard/trial_balance_wizard.py

@ -7,7 +7,7 @@
from odoo import api, fields, models, _ from odoo import api, fields, models, _
from odoo.tools.safe_eval import safe_eval from odoo.tools.safe_eval import safe_eval
from odoo.tools import pycompat from odoo.tools import pycompat
from odoo.exceptions import UserError
from odoo.exceptions import UserError, ValidationError
class TrialBalanceReportWizard(models.TransientModel): class TrialBalanceReportWizard(models.TransientModel):
@ -19,6 +19,7 @@ class TrialBalanceReportWizard(models.TransientModel):
company_id = fields.Many2one( company_id = fields.Many2one(
comodel_name='res.company', comodel_name='res.company',
default=lambda self: self.env.user.company_id, default=lambda self: self.env.user.company_id,
required=True,
string='Company' string='Company'
) )
date_range_id = fields.Many2one( date_range_id = fields.Many2one(
@ -107,6 +108,16 @@ class TrialBalanceReportWizard(models.TransientModel):
('company_id', '=', self.company_id.id) ('company_id', '=', self.company_id.id)
]) ])
self.not_only_one_unaffected_earnings_account = count != 1 self.not_only_one_unaffected_earnings_account = count != 1
if self.company_id and self.date_range_id.company_id and \
self.date_range_id.company_id != self.company_id:
self.date_range_id = False
if self.company_id and self.partner_ids:
self.partner_ids = self.partner_ids.filtered(
lambda p: p.company_id == self.company_id or
not p.company_id)
if self.company_id and self.account_ids:
self.account_ids = self.account_ids.filtered(
lambda a: a.company_id == self.company_id)
@api.onchange('date_range_id') @api.onchange('date_range_id')
def onchange_date_range_id(self): def onchange_date_range_id(self):
@ -114,11 +125,21 @@ class TrialBalanceReportWizard(models.TransientModel):
self.date_from = self.date_range_id.date_start self.date_from = self.date_range_id.date_start
self.date_to = self.date_range_id.date_end self.date_to = self.date_range_id.date_end
@api.multi
@api.constrains('company_id', 'date_range_id')
def _check_company_id_date_range_id(self):
for rec in self.sudo():
if rec.company_id and rec.date_range_id.company_id and\
rec.company_id != rec.date_range_id.company_id:
raise ValidationError(
_('The Company in the Trial Balance Report Wizard and in '
'Date Range must be the same.'))
@api.onchange('receivable_accounts_only', 'payable_accounts_only') @api.onchange('receivable_accounts_only', 'payable_accounts_only')
def onchange_type_accounts_only(self): def onchange_type_accounts_only(self):
"""Handle receivable/payable accounts only change.""" """Handle receivable/payable accounts only change."""
if self.receivable_accounts_only or self.payable_accounts_only: if self.receivable_accounts_only or self.payable_accounts_only:
domain = []
domain = [('company_id', '=', self.company_id.id)]
if self.receivable_accounts_only and self.payable_accounts_only: if self.receivable_accounts_only and self.payable_accounts_only:
domain += [('internal_type', 'in', ('receivable', 'payable'))] domain += [('internal_type', 'in', ('receivable', 'payable'))]
elif self.receivable_accounts_only: elif self.receivable_accounts_only:

20
account_financial_report/wizard/trial_balance_wizard_view.xml

@ -30,17 +30,31 @@
</group> </group>
<group name="partner_filter" attrs="{'invisible':[('show_partner_details','!=',True)]}" col="1"> <group name="partner_filter" attrs="{'invisible':[('show_partner_details','!=',True)]}" col="1">
<label for="partner_ids"/> <label for="partner_ids"/>
<field name="partner_ids" nolabel="1" widget="many2many_tags" options="{'no_create': True}"/>
<field name="partner_ids"
nolabel="1"
domain="['|',('company_id','=',company_id), ('company_id','=',False)]"
widget="many2many_tags"
options="{'no_create': True}"/>
</group> </group>
<label for="journal_ids"/> <label for="journal_ids"/>
<field name="journal_ids" widget="many2many_tags" nolabel="1" options="{'no_create': True}"/>
<field name="journal_ids"
widget="many2many_tags"
domain="[('company_id','=',company_id)]"
nolabel="1"
options="{'no_create': True}"
/>
<group attrs="{'invisible':[('show_partner_details','!=',True)]}"/> <group attrs="{'invisible':[('show_partner_details','!=',True)]}"/>
<div/> <div/>
<group name="account_filter" col="4"> <group name="account_filter" col="4">
<label for="account_ids" colspan="4"/> <label for="account_ids" colspan="4"/>
<field name="receivable_accounts_only"/> <field name="receivable_accounts_only"/>
<field name="payable_accounts_only"/> <field name="payable_accounts_only"/>
<field name="account_ids" nolabel="1" widget="many2many_tags" options="{'no_create': True}" colspan="4"/>
<field name="account_ids"
nolabel="1"
widget="many2many_tags"
domain="[('company_id','=',company_id)]"
options="{'no_create': True}"
colspan="4"/>
</group> </group>
</div> </div>
<div attrs="{'invisible': [('not_only_one_unaffected_earnings_account', '=', False)]}"> <div attrs="{'invisible': [('not_only_one_unaffected_earnings_account', '=', False)]}">

20
account_financial_report/wizard/vat_report_wizard.py

@ -1,9 +1,10 @@
# Copyright 2018 Forest and Biomass Romania # Copyright 2018 Forest and Biomass Romania
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
from odoo import api, fields, models, _
from odoo.tools.safe_eval import safe_eval from odoo.tools.safe_eval import safe_eval
from odoo.tools import pycompat from odoo.tools import pycompat
from odoo.exceptions import ValidationError
class VATReportWizard(models.TransientModel): class VATReportWizard(models.TransientModel):
@ -12,6 +13,7 @@ class VATReportWizard(models.TransientModel):
company_id = fields.Many2one( company_id = fields.Many2one(
comodel_name='res.company', comodel_name='res.company',
default=lambda self: self.env.user.company_id, default=lambda self: self.env.user.company_id,
required=True,
string='Company' string='Company'
) )
date_range_id = fields.Many2one( date_range_id = fields.Many2one(
@ -27,12 +29,28 @@ class VATReportWizard(models.TransientModel):
default='taxtags') default='taxtags')
tax_detail = fields.Boolean('Detail Taxes') tax_detail = fields.Boolean('Detail Taxes')
@api.onchange('company_id')
def onchange_company_id(self):
if self.company_id and self.date_range_id.company_id and \
self.date_range_id.company_id != self.company_id:
self.date_range_id = False
@api.onchange('date_range_id') @api.onchange('date_range_id')
def onchange_date_range_id(self): def onchange_date_range_id(self):
"""Handle date range change.""" """Handle date range change."""
self.date_from = self.date_range_id.date_start self.date_from = self.date_range_id.date_start
self.date_to = self.date_range_id.date_end self.date_to = self.date_range_id.date_end
@api.multi
@api.constrains('company_id', 'date_range_id')
def _check_company_id_date_range_id(self):
for rec in self.sudo():
if rec.company_id and rec.date_range_id.company_id and\
rec.company_id != rec.date_range_id.company_id:
raise ValidationError(
_('The Company in the Vat Report Wizard and in '
'Date Range must be the same.'))
@api.multi @api.multi
def button_export_html(self): def button_export_html(self):
self.ensure_one() self.ensure_one()

Loading…
Cancel
Save