[MIG] customer_outstanding_statement: Migration to 11.0
parent
6ab0038ae2
commit
60b26ca0dc
|
@ -1,5 +1,5 @@
|
||||||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
|
||||||
: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
|
:alt: License: AGPL-3
|
||||||
|
|
||||||
====================================
|
====================================
|
||||||
|
@ -19,21 +19,28 @@ Configuration
|
||||||
Users willing to access to this report should have proper Accounting & Finance rights:
|
Users willing to access to this report should have proper Accounting & Finance rights:
|
||||||
|
|
||||||
#. Go to *Settings / Users* and edit your user to add the corresponding access rights as follows.
|
#. Go to *Settings / Users* and edit your user to add the corresponding access rights as follows.
|
||||||
#. In *Application / Accounting & Finance*, select *Accountant* or *Adviser* options.
|
#. In *Application / Accounting & Finance*, select *Billing* or *Billing Manager*
|
||||||
|
#. In *Technical Setting* mark *Show Full Accounting Features* options.
|
||||||
|
|
||||||
Usage
|
Usage
|
||||||
=====
|
=====
|
||||||
|
|
||||||
To use this module, you need to:
|
To use this module, you need to:
|
||||||
|
|
||||||
#. Go to Customers and select one or more
|
#. Go to Invoicing > Sales > Master Data > Customers and select one or more
|
||||||
#. Press 'Action > Customer Outstanding Statement'
|
#. Press 'Action > Customer Outstanding Statement'
|
||||||
#. Indicate if you want to display aging buckets
|
#. Indicate if you want to display aging buckets
|
||||||
|
|
||||||
|
|
||||||
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
|
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
|
||||||
:alt: Try me on Runbot
|
:alt: Try me on Runbot
|
||||||
:target: https://runbot.odoo-community.org/runbot/91/10.0
|
:target: https://runbot.odoo-community.org/runbot/91/11.0
|
||||||
|
|
||||||
|
Roadmap
|
||||||
|
=======
|
||||||
|
|
||||||
|
Have an action that prints specific report for all partners that have due amounts,
|
||||||
|
at a specific date.
|
||||||
|
|
||||||
Bug Tracker
|
Bug Tracker
|
||||||
===========
|
===========
|
||||||
|
@ -49,7 +56,7 @@ Credits
|
||||||
Images
|
Images
|
||||||
------
|
------
|
||||||
|
|
||||||
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
|
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.png>`_.
|
||||||
|
|
||||||
Contributors
|
Contributors
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
|
|
||||||
# (http://www.eficent.com)
|
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
from . import report
|
from . import report
|
||||||
from . import wizard
|
from . import wizard
|
||||||
|
from . import tests
|
||||||
|
|
|
@ -1,18 +1,17 @@
|
||||||
# -*- coding: utf-8 -*-
|
# Copyright 2018 Eficent Business and IT Consulting Services S.L.
|
||||||
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
|
|
||||||
# (http://www.eficent.com)
|
# (http://www.eficent.com)
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Customer Outstanding Statement',
|
'name': 'Customer Outstanding Statement',
|
||||||
'version': '10.0.1.0.0',
|
'version': '11.0.1.0.0',
|
||||||
'category': 'Accounting & Finance',
|
'category': 'Accounting & Finance',
|
||||||
'summary': 'OCA Financial Reports',
|
'summary': 'OCA Financial Reports',
|
||||||
'author': "Eficent, Odoo Community Association (OCA)",
|
'author': "Eficent, Odoo Community Association (OCA)",
|
||||||
'website': 'https://github.com/OCA/account-financial-reporting',
|
'website': 'https://github.com/OCA/account-financial-reporting',
|
||||||
'license': 'AGPL-3',
|
'license': 'AGPL-3',
|
||||||
'depends': [
|
'depends': [
|
||||||
'account',
|
'account_invoicing',
|
||||||
],
|
],
|
||||||
'data': [
|
'data': [
|
||||||
'views/statement.xml',
|
'views/statement.xml',
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
|
|
||||||
# (http://www.eficent.com)
|
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
from . import customer_outstanding_statement
|
from . import customer_outstanding_statement
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
# -*- coding: utf-8 -*-
|
# Copyright 2018 Eficent Business and IT Consulting Services S.L.
|
||||||
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
|
|
||||||
# (http://www.eficent.com)
|
# (http://www.eficent.com)
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
@ -91,6 +90,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
|
||||||
partners = ', '.join([str(i) for i in partner_ids])
|
partners = ', '.join([str(i) for i in partner_ids])
|
||||||
date_end = datetime.strptime(
|
date_end = datetime.strptime(
|
||||||
date_end, DEFAULT_SERVER_DATE_FORMAT).date()
|
date_end, DEFAULT_SERVER_DATE_FORMAT).date()
|
||||||
|
# pylint: disable=E8103
|
||||||
self.env.cr.execute("""WITH Q1 AS (%s), Q2 AS (%s), Q3 AS (%s)
|
self.env.cr.execute("""WITH Q1 AS (%s), Q2 AS (%s), Q3 AS (%s)
|
||||||
SELECT partner_id, currency_id, move_id, date, date_maturity, debit,
|
SELECT partner_id, currency_id, move_id, date, date_maturity, debit,
|
||||||
credit, amount, open_amount, name, ref, blocked
|
credit, amount, open_amount, name, ref, blocked
|
||||||
|
@ -142,6 +142,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
|
||||||
|
|
||||||
def _show_buckets_sql_q2(self, today, minus_30, minus_60, minus_90,
|
def _show_buckets_sql_q2(self, today, minus_30, minus_60, minus_90,
|
||||||
minus_120):
|
minus_120):
|
||||||
|
# pylint: disable=E8103
|
||||||
return """
|
return """
|
||||||
SELECT partner_id, currency_id, date_maturity, open_due,
|
SELECT partner_id, currency_id, date_maturity, open_due,
|
||||||
open_due_currency, move_id, company_id,
|
open_due_currency, move_id, company_id,
|
||||||
|
@ -234,6 +235,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
|
||||||
partners = ', '.join([str(i) for i in partner_ids])
|
partners = ', '.join([str(i) for i in partner_ids])
|
||||||
date_end = datetime.strptime(
|
date_end = datetime.strptime(
|
||||||
date_end, DEFAULT_SERVER_DATE_FORMAT).date()
|
date_end, DEFAULT_SERVER_DATE_FORMAT).date()
|
||||||
|
# pylint: disable=E8103
|
||||||
self.env.cr.execute("""WITH Q1 AS (%s), Q2 AS (%s),
|
self.env.cr.execute("""WITH Q1 AS (%s), Q2 AS (%s),
|
||||||
Q3 AS (%s), Q4 AS (%s)
|
Q3 AS (%s), Q4 AS (%s)
|
||||||
SELECT partner_id, currency_id, current, b_1_30, b_30_60, b_60_90,
|
SELECT partner_id, currency_id, current, b_1_30, b_30_60, b_60_90,
|
||||||
|
@ -257,7 +259,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def render_html(self, docids, data):
|
def get_report_values(self, docids, data):
|
||||||
company_id = data['company_id']
|
company_id = data['company_id']
|
||||||
partner_ids = data['partner_ids']
|
partner_ids = data['partner_ids']
|
||||||
date_end = data['date_end']
|
date_end = data['date_end']
|
||||||
|
@ -305,7 +307,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
|
||||||
buckets_to_display[partner_id][currency] = []
|
buckets_to_display[partner_id][currency] = []
|
||||||
buckets_to_display[partner_id][currency] = line
|
buckets_to_display[partner_id][currency] = line
|
||||||
|
|
||||||
docargs = {
|
return {
|
||||||
'doc_ids': partner_ids,
|
'doc_ids': partner_ids,
|
||||||
'doc_model': 'res.partner',
|
'doc_model': 'res.partner',
|
||||||
'docs': self.env['res.partner'].browse(partner_ids),
|
'docs': self.env['res.partner'].browse(partner_ids),
|
||||||
|
@ -318,5 +320,3 @@ class CustomerOutstandingStatement(models.AbstractModel):
|
||||||
'Date_end': date_end_display,
|
'Date_end': date_end_display,
|
||||||
'Date': today_display,
|
'Date': today_display,
|
||||||
}
|
}
|
||||||
return self.env['report'].render(
|
|
||||||
'customer_outstanding_statement.statement', values=docargs)
|
|
||||||
|
|
|
@ -27,7 +27,8 @@ due, ...), so the customer can review how much is open, due or overdue.</div></p
|
||||||
<p class="oe_mt32">To configure this module, you need to:
|
<p class="oe_mt32">To configure this module, you need to:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Go to <code>Settings / Users</code> and edit your user to add the corresponding access rights as follows.</li>
|
<li>Go to <code>Settings / Users</code> and edit your user to add the corresponding access rights as follows.</li>
|
||||||
<li>In <code>Application / Accounting & Finance</code>, select <code>Accountant</code> or <code>Adviser</code> options.</li>
|
<li>In <code>Application / Accounting & Finance</code>, select <code>Billing</code> or <code>Billing Manager</code> options.</li>
|
||||||
|
<li>In <code>Technical Setting</code> mark <code>Show Full Accounting Features</code> options.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -42,7 +43,7 @@ due, ...), so the customer can review how much is open, due or overdue.</div></p
|
||||||
<div class="oe_span12">
|
<div class="oe_span12">
|
||||||
<p class="oe_mt32">To use this module, you need to:
|
<p class="oe_mt32">To use this module, you need to:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Go to <code>Customers</code> and select one or more</li>
|
<li>Go to <code>Invoicing > Sales > Master Data > Customers</code> and select one or more</li>
|
||||||
<li>Press '<code>Action > Customer Outstanding Statement</code>'</li>
|
<li>Press '<code>Action > Customer Outstanding Statement</code>'</li>
|
||||||
<li>Indicate if you want to display aging buckets</li>
|
<li>Indicate if you want to display aging buckets</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
|
|
||||||
# (http://www.eficent.com)
|
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
from . import test_customer_outstanding_statement
|
from . import test_customer_outstanding_statement
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
# -*- coding: utf-8 -*-
|
# Copyright 2018 Eficent Business and IT Consulting Services S.L.
|
||||||
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
|
|
||||||
# (http://www.eficent.com)
|
# (http://www.eficent.com)
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
@ -15,8 +14,8 @@ class TestCustomerOutstandingStatement(TransactionCase):
|
||||||
|
|
||||||
self.res_users_model = self.env['res.users']
|
self.res_users_model = self.env['res.users']
|
||||||
self.company = self.env.ref('base.main_company')
|
self.company = self.env.ref('base.main_company')
|
||||||
self.partner1 = self.env.ref('base.res_partner_1')
|
self.partner1 = self.env.ref('base.res_partner_2')
|
||||||
self.partner2 = self.env.ref('base.res_partner_2')
|
self.partner2 = self.env.ref('base.res_partner_3')
|
||||||
self.g_account_user = self.env.ref('account.group_account_user')
|
self.g_account_user = self.env.ref('account.group_account_user')
|
||||||
|
|
||||||
self.user = self._create_user('user_1', [self.g_account_user],
|
self.user = self._create_user('user_1', [self.g_account_user],
|
||||||
|
@ -51,7 +50,7 @@ class TestCustomerOutstandingStatement(TransactionCase):
|
||||||
|
|
||||||
self.assertDictContainsSubset(
|
self.assertDictContainsSubset(
|
||||||
{
|
{
|
||||||
'type': 'ir.actions.report.xml',
|
'type': 'ir.actions.report',
|
||||||
'report_name': self.report_name,
|
'report_name': self.report_name,
|
||||||
'report_type': 'qweb-pdf',
|
'report_type': 'qweb-pdf',
|
||||||
},
|
},
|
||||||
|
@ -61,8 +60,9 @@ class TestCustomerOutstandingStatement(TransactionCase):
|
||||||
|
|
||||||
data = wiz_id._prepare_outstanding_statement()
|
data = wiz_id._prepare_outstanding_statement()
|
||||||
docids = data['partner_ids']
|
docids = data['partner_ids']
|
||||||
report = self.statement_model.render_html(docids, data)
|
report = self.statement_model.get_report_values(docids, data)
|
||||||
self.assertIsInstance(report, str,
|
self.assertIsInstance(report,
|
||||||
|
dict,
|
||||||
"There was an error while compiling the report.")
|
"There was an error while compiling the report.")
|
||||||
self.assertIn("<!DOCTYPE html>", report,
|
self.assertIn("Show_Buckets", report,
|
||||||
"There was an error while compiling the report.")
|
"There was an error while compiling the report.")
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
|
||||||
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||||
<odoo>
|
<odoo>
|
||||||
<template id="customer_outstanding_statement.statement_document">
|
<template id="customer_outstanding_statement.statement_document">
|
||||||
<t t-call="report.external_layout">
|
<t t-call="web.external_layout">
|
||||||
<div class="page">
|
<div class="page">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-5 col-xs-offset-7">
|
<div class="col-xs-5 col-xs-offset-7">
|
||||||
|
@ -99,16 +101,16 @@
|
||||||
</t>
|
</t>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="border-right: 1px solid black;"></td>
|
<td style="border-right: 1px solid black;"/>
|
||||||
<td style="border-right: 1px solid black;">
|
<td style="border-right: 1px solid black;">
|
||||||
<span t-esc="Date_end[o.id]"/>
|
<span t-esc="Date_end[o.id]"/>
|
||||||
</td>
|
</td>
|
||||||
<td style="border-right: 1px solid black;"></td>
|
<td style="border-right: 1px solid black;"/>
|
||||||
<td style="border-right: 1px solid black;">
|
<td style="border-right: 1px solid black;">
|
||||||
Ending Balance
|
Ending Balance
|
||||||
</td>
|
</td>
|
||||||
<td style="border-right: 1px solid black;"></td>
|
<td style="border-right: 1px solid black;"/>
|
||||||
<td style="border-right: 1px solid black;"></td>
|
<td style="border-right: 1px solid black;"/>
|
||||||
<td class="text-right" style="border-right: 1px solid black;">
|
<td class="text-right" style="border-right: 1px solid black;">
|
||||||
<span t-esc="Amount_Due[o.id][currency]" t-esc-options='{"widget": "monetary", "display_currency": "currency"}'/>
|
<span t-esc="Amount_Due[o.id][currency]" t-esc-options='{"widget": "monetary", "display_currency": "currency"}'/>
|
||||||
</td>
|
</td>
|
||||||
|
@ -184,7 +186,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template id="statement">
|
<template id="statement">
|
||||||
<t t-call="report.html_container">
|
<t t-call="web.html_container">
|
||||||
<t t-foreach="docs" t-as="o">
|
<t t-foreach="docs" t-as="o">
|
||||||
<t t-if="not (Filter_non_due_partners and (not Lines[o.id]) and (len(doc_ids) > 1))">
|
<t t-if="not (Filter_non_due_partners and (not Lines[o.id]) and (len(doc_ids) > 1))">
|
||||||
<t t-call="customer_outstanding_statement.statement_document" t-lang="o.lang"/>
|
<t t-call="customer_outstanding_statement.statement_document" t-lang="o.lang"/>
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
|
|
||||||
# (http://www.eficent.com)
|
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
from . import customer_outstanding_statement_wizard
|
from . import customer_outstanding_statement_wizard
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
# -*- coding: utf-8 -*-
|
# Copyright 2018 Eficent Business and IT Consulting Services S.L.
|
||||||
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
|
|
||||||
# (http://www.eficent.com)
|
# (http://www.eficent.com)
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
@ -47,5 +46,7 @@ class CustomerOutstandingStatementWizard(models.TransientModel):
|
||||||
def _export(self):
|
def _export(self):
|
||||||
"""Export to PDF."""
|
"""Export to PDF."""
|
||||||
data = self._prepare_outstanding_statement()
|
data = self._prepare_outstanding_statement()
|
||||||
return self.env['report'].with_context(landscape=True).get_action(
|
return self.env.ref(
|
||||||
self, 'customer_outstanding_statement.statement', data=data)
|
'customer_outstanding_statement'
|
||||||
|
'.action_print_customer_outstanding_statement').report_action(
|
||||||
|
self, data=data)
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
|
||||||
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||||
<odoo>
|
<odoo>
|
||||||
<!-- wizard action on res.partner -->
|
<!-- wizard action on res.partner -->
|
||||||
<act_window id="customer_outstanding_statement_wizard_action"
|
<act_window id="customer_outstanding_statement_wizard_action"
|
||||||
|
|
Loading…
Reference in New Issue