diff --git a/customer_outstanding_statement/README.rst b/customer_outstanding_statement/README.rst deleted file mode 100644 index 0f3b9859..00000000 --- a/customer_outstanding_statement/README.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.png - :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 - -==================================== -Print Partner Outstanding Statement -==================================== - -The outstanding statement provides details of all outstanding partner receivables or payables -up to a particular date. This includes all unpaid invoices, unclaimed refunds and -outstanding payments. The list is displayed in chronological order and is split by currencies. - -Aging details can be shown in the report, expressed in aging buckets (30 days -due, ...), so the customer or vendor can review how much is open, due or overdue. - -Configuration -============= - -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. -#. In *Application / Accounting & Finance*, select *Billing* or *Billing Manager* -#. In *Technical Settings* mark *Show Full Accounting Features* options. - -Usage -===== - -To use this module, you need to: - -#. Go to Invoicing > Sales > Master Data > Customers or or Invoicing > Purchases > Master Data > Vendors and select one or more -#. Press 'Action > Partner Outstanding Statement' -#. Indicate if you want to display receivables or payables, and if you want to display aging buckets - - -.. 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/11.0 - -Roadmap -======= - -* In v12, the module should be renamed to `Partner Outstanding Statement`. - Maybe merge this module with the `Partner Activity Statement` module. - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues -`_. In case of trouble, -please check there if your issue has already been reported. If you spotted it -first, help us smash it by providing detailed and welcomed feedback. - -Credits -======= - -Images ------- - -* Odoo Community Association: `Icon `_. - -Contributors ------------- - -* Miquel Raïch - -Maintainer ----------- - -.. image:: https://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: https://odoo-community.org - -This module is maintained by the OCA. - -OCA, or the Odoo Community Association, is a nonprofit organization whose -mission is to support the collaborative development of Odoo features and -promote its widespread use. - -To contribute to this module, please visit https://odoo-community.org. diff --git a/customer_outstanding_statement/__manifest__.py b/customer_outstanding_statement/__manifest__.py deleted file mode 100644 index 7010013d..00000000 --- a/customer_outstanding_statement/__manifest__.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2018 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). - -{ - 'name': 'Partner Outstanding Statement', - 'version': '11.0.2.0.0', - 'category': 'Accounting & Finance', - 'summary': 'OCA Financial Reports', - 'author': "Eficent, Odoo Community Association (OCA)", - 'website': 'https://github.com/OCA/account-financial-reporting', - 'license': 'AGPL-3', - 'depends': [ - 'account_invoicing', - ], - 'data': [ - 'views/statement.xml', - 'wizard/customer_outstanding_statement_wizard.xml', - ], - 'installable': True, - 'application': False, -} diff --git a/customer_outstanding_statement/i18n/ca.po b/customer_outstanding_statement/i18n/ca.po deleted file mode 100644 index cb99976b..00000000 --- a/customer_outstanding_statement/i18n/ca.po +++ /dev/null @@ -1,244 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -# Translators: -# Marc Tormo i Bochaca , 2017 -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-04-26 02:44+0000\n" -"PO-Revision-Date: 2017-04-26 02:44+0000\n" -"Last-Translator: Marc Tormo i Bochaca , 2017\n" -"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"Aging details can be shown in the report, expressed in aging " -"buckets (30 days due, ...), so the customer can review how much is open, due " -"or overdue." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "Balanç " - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "Cancel·lar " - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "Empresa " - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "Creat per " - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "Creat a " - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Customer Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -msgid "Date End" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "Nom a mostrar " - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "ID" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "Última modificació a " - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "Última actualització per " - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "Última actualització a " - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"The outstanding statement provides details of all outstanding " -"customer receivables up to a particular date. This includes all unpaid " -"invoices, unclaimed refunds and outstanding payments. The list is " -"displayed in chronological order and is split by currencies." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "o" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "" diff --git a/customer_outstanding_statement/i18n/customer_outstanding_statement.pot b/customer_outstanding_statement/i18n/customer_outstanding_statement.pot deleted file mode 100644 index 9c204932..00000000 --- a/customer_outstanding_statement/i18n/customer_outstanding_statement.pot +++ /dev/null @@ -1,253 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" -"Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+ Customer Outstanding Statement at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+ Supplier Outstanding Statement at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_account_type -msgid "Account type" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Aging details can be shown in the report, expressed in aging buckets (30 days due, ...), so the customer or vendor can review how much is open, due or overdue." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -msgid "Date End" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Partner Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "" - -#. module: customer_outstanding_statement -#: selection:customer.outstanding.statement.wizard,account_type:0 -msgid "Payable" -msgstr "" - -#. module: customer_outstanding_statement -#: selection:customer.outstanding.statement.wizard,account_type:0 -msgid "Receivable" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "The outstanding statement provides details of all partner's outstanding receivables and payables up to a particular date. This includes all unpaid invoices, unclaimed refunds and outstanding payments. The list is displayed in chronological order and is split by currencies." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "" - diff --git a/customer_outstanding_statement/i18n/de.po b/customer_outstanding_statement/i18n/de.po deleted file mode 100644 index de9596e7..00000000 --- a/customer_outstanding_statement/i18n/de.po +++ /dev/null @@ -1,254 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -# Translators: -# OCA Transbot , 2018 -# Rudolf Schnapka , 2018 -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-28 10:11+0000\n" -"PO-Revision-Date: 2018-08-24 13:24+0000\n" -"Last-Translator: Rudolf Schnapka \n" -"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.1.1\n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "+120 Tage fällig" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "1-30 Tage fällig" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "30-60 Tage fällig" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "90-120 Tage fällig" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "Der Partner hat keine offenen Posten." - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "Fälligkeiten Bericht zu" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"Aging details can be shown in the report, expressed in aging " -"buckets (30 days due, ...), so the customer can review how much is open, due " -"or overdue." -msgstr "" -"Die einzelnen Fälligkeiten können im Bericht, nach Altersgruppen (30 Tage " -"fällig,....) gegliedert, ausgewertet werden, so dass der Kunde überprüfen " -"kann, wie viel offen, fällig oder überfällig ist." - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "Saldo" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "Fälliger Saldo" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "Abbrechen" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "Unternehmen" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "Angelegt von" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "Angelegt am" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "Aktuell fällig" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Customer Outstanding Statement" -msgstr "Kunden-Offene Posten-Bericht" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "Assistent zum Kunden-Offene Posten-Bericht" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "Datum" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -msgid "Date End" -msgstr "Enddatum" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "Datum:" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "Beschreibung" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "Anzeigename" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "Unterdrücke Partner ohne fällige Posten" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "Fälligkeitsdatum" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "Endsaldo" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "Export PDF" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "ID" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "Schliesse Altersgruppen ein" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "Zuletzt geändert am" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "Zuletzt aktualisiert durch" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "Zuletzt aktualisiert am" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "Nummeriere Partner" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "Offene Summe" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "Ursprüngliche Summe" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "Offene Posten-Bericht" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement at" -msgstr "Offene Posten zum" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "Partner-Ref.:" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "Referenznummer" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "Berichtsaktion zu PDF" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"The outstanding statement provides details of all outstanding " -"customer receivables up to a particular date. This includes all unpaid " -"invoices, unclaimed refunds and outstanding payments. The list is " -"displayed in chronological order and is split by currencies." -msgstr "" -"Der offene Posten-Bericht gibt Auskunft über alle offenen Kundenforderungen " -"bis zu einem bestimmten Datum. Dazu gehören alle unbezahlten Rechnungen, " -"nicht eingeforderte Rückerstattungen und ausstehende Zahlungen. Die Liste " -"wird in chronologischer Reihenfolge angezeigt und ist nach Währungen " -"gegliedert." - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "in" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "oder" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "report.customer_outstanding_statement.statement" diff --git a/customer_outstanding_statement/i18n/es.po b/customer_outstanding_statement/i18n/es.po deleted file mode 100644 index 635fe9a1..00000000 --- a/customer_outstanding_statement/i18n/es.po +++ /dev/null @@ -1,254 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -# Translators: -# OCA Transbot , 2017 -# Gelo Joga Landoo , 2017 -# Pedro M. Baeza , 2017 -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-22 16:14+0000\n" -"PO-Revision-Date: 2018-10-23 03:45+0000\n" -"Last-Translator: Jordi Ballester Alomar \n" -"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.2.1\n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "+120 Días" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "1-30 Días" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "30-60 Días" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "60-90 Días" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "90-120 Días" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "Este cliente no tiene pagos pendientes" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "Reporte de vencidos al" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"Aging details can be shown in the report, expressed in aging " -"buckets (30 days due, ...), so the customer can review how much is open, due " -"or overdue." -msgstr "" -"Detalles de vencidos pueden ser mostrados en el reporte, expresados en " -"rangos……de mora (30 días, …), para que el cliente pueda revisar cuando está " -"abierto, cuando debe y cuańto está vencido." - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "Cuota" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "Saldo" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "Cancelar" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "Compañía" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "Creado por" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "Creado en" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "Saldo a la Fecha" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Customer Outstanding Statement" -msgstr "Informe de Saldos Abiertos" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "Asistente de Informe de Saldos Abiertos" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "Fecha" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -msgid "Date End" -msgstr "Fecha Fin" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "Fecha:" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "Descripción" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "Nombre a mostrar" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "No mostrar clientes sin saldo pendiente" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "Fecha de Pago" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "Saldo Final" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "Exportar a PDF" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "ID" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "Inluir Períodos de Mora" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "Última modificación en" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "Última modificación por" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "Última actualización en" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "Número de Cliente" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "Saldo Abierto" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "Saldo Original" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "Estado de Cuenta" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement at" -msgstr "Estado de Cuenta al" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "Ref. de Cliente:" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "Número de Referencia" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "Acción Estado a PDF" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"The outstanding statement provides details of all outstanding " -"customer receivables up to a particular date. This includes all unpaid " -"invoices, unclaimed refunds and outstanding payments. The list is " -"displayed in chronological order and is split by currencies." -msgstr "" -"El estado de cuenta proporciona detalles de todas las cuentas por cobrar " -"pendientes…… de clientes hasta una fecha determinada. Esto incluye todas las " -"facturas no pagadas, reembolsos…… no reclamados y pagos pendientes. La lista " -"se muestra en orden cronológico y se divide por monedas." - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "en" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "o" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "informe.estado_de_cuenta_de_cliente" diff --git a/customer_outstanding_statement/i18n/fr.po b/customer_outstanding_statement/i18n/fr.po deleted file mode 100644 index 9356df8e..00000000 --- a/customer_outstanding_statement/i18n/fr.po +++ /dev/null @@ -1,254 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -# Translators: -# OCA Transbot , 2018 -# Quentin THEURET , 2018 -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-28 10:11+0000\n" -"PO-Revision-Date: 2018-09-01 08:20+0000\n" -"Last-Translator: Valaeys Stéphane \n" -"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.1.1\n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "+120 jours d'arriérés" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "1-30 jours d'arriérés" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "30-60 jours d'arriérés" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "60-90 jours d'arriérés" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "90-120 jours d'arriérés" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "" -"Le partenaire n'a pas d'écriture en attente de paiement." - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "Balance âgée au" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"Aging details can be shown in the report, expressed in aging " -"buckets (30 days due, ...), so the customer can review how much is open, due " -"or overdue." -msgstr "" -"Le détail des arriérés peut être affiché dans le rapport, exprimé par " -"tranche (30 jours d'arriérés, ...), de telle sorte que le destinataire " -"puisse voir combien est ouvert, dû ou échu." - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "Solde" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "Solde dû" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "Annuler" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "Société" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "Créé par" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "Créé le" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "Dû en ce moment" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Customer Outstanding Statement" -msgstr "Postes ouverts des partenaires" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "Assistant pour l'édition des postes ouverts" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "Date" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -msgid "Date End" -msgstr "Jusqu'au" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "Date :" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "Description" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "Nom affiché" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "Masquer les partenaires sans solde" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "Date d'échéance" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "Solde final" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "Export PDF" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "ID" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "Afficher les arriérés par tranche" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "Dernière modification le" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "Dernière mise à jour par" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "Dernière mise à jour le" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "Numéro du partenaire" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "Solde ouvert" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "Montant original" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "Relevé des postes ouverts" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement at" -msgstr "Relevé des postes ouverts au" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "Ref. partenaire :" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "Numéro de référence" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "Export du relevé des postes ouverts en PDF" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"The outstanding statement provides details of all outstanding " -"customer receivables up to a particular date. This includes all unpaid " -"invoices, unclaimed refunds and outstanding payments. The list is " -"displayed in chronological order and is split by currencies." -msgstr "" -"Le relevé des postes ouverts détaille tous les montants dû à une date " -"donnée. Ceci inclus toutes les factures non payées, remboursements non " -"effectués et paiements en attente. Les transactions sont affichées par ordre " -"chronologique et ventillées par devise." - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "en" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "ou" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "report.customer_outstanding_statement.statement" diff --git a/customer_outstanding_statement/i18n/hr_HR.po b/customer_outstanding_statement/i18n/hr_HR.po deleted file mode 100644 index e952a22d..00000000 --- a/customer_outstanding_statement/i18n/hr_HR.po +++ /dev/null @@ -1,247 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -# Translators: -# Bole , 2017 -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-22 16:14+0000\n" -"PO-Revision-Date: 2017-12-22 16:14+0000\n" -"Last-Translator: Bole , 2017\n" -"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" -"hr_HR/)\n" -"Language: hr_HR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"Aging details can be shown in the report, expressed in aging " -"buckets (30 days due, ...), so the customer can review how much is open, due " -"or overdue." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "Saldo" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "Otkaži" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "Tvrtka" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "Kreirao" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "Kreirano" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Customer Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "Datum" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -#, fuzzy -msgid "Date End" -msgstr "Datum" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "Naziv " - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "Izvoz PDF" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "ID" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"The outstanding statement provides details of all outstanding " -"customer receivables up to a particular date. This includes all unpaid " -"invoices, unclaimed refunds and outstanding payments. The list is " -"displayed in chronological order and is split by currencies." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "ili" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "" diff --git a/customer_outstanding_statement/i18n/it.po b/customer_outstanding_statement/i18n/it.po deleted file mode 100644 index 9bf7f56e..00000000 --- a/customer_outstanding_statement/i18n/it.po +++ /dev/null @@ -1,245 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -# Translators: -# Stefano , 2017 -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-22 23:13+0000\n" -"PO-Revision-Date: 2017-12-22 23:13+0000\n" -"Last-Translator: Stefano , 2017\n" -"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"Aging details can be shown in the report, expressed in aging " -"buckets (30 days due, ...), so the customer can review how much is open, due " -"or overdue." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "Cancellare" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "Azienda" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Customer Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "Data" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -#, fuzzy -msgid "Date End" -msgstr "Data" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "Nome mostrato" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"The outstanding statement provides details of all outstanding " -"customer receivables up to a particular date. This includes all unpaid " -"invoices, unclaimed refunds and outstanding payments. The list is " -"displayed in chronological order and is split by currencies." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "o" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "" diff --git a/customer_outstanding_statement/i18n/nl.po b/customer_outstanding_statement/i18n/nl.po deleted file mode 100644 index ee40afd2..00000000 --- a/customer_outstanding_statement/i18n/nl.po +++ /dev/null @@ -1,244 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -# Translators: -# Melroy van den Berg , 2018 -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-28 10:11+0000\n" -"PO-Revision-Date: 2018-02-28 10:11+0000\n" -"Last-Translator: Melroy van den Berg , 2018\n" -"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" -"Language: nl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"Aging details can be shown in the report, expressed in aging " -"buckets (30 days due, ...), so the customer can review how much is open, due " -"or overdue." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "Balans" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "Annuleren" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "Bedrijf" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "Gecreëerd door" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "Gecreëerd op" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Customer Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -msgid "Date End" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "Weergavenaam" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "ID" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "Laatst Gewijzigd op" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "Laatst Geüpdatet door" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "Laatst Geüpdatet op" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"The outstanding statement provides details of all outstanding " -"customer receivables up to a particular date. This includes all unpaid " -"invoices, unclaimed refunds and outstanding payments. The list is " -"displayed in chronological order and is split by currencies." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "of" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "" diff --git a/customer_outstanding_statement/i18n/nl_NL.po b/customer_outstanding_statement/i18n/nl_NL.po deleted file mode 100644 index c46a5964..00000000 --- a/customer_outstanding_statement/i18n/nl_NL.po +++ /dev/null @@ -1,246 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -# Translators: -# Peter Hageman , 2017 -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-22 16:14+0000\n" -"PO-Revision-Date: 2017-12-22 16:14+0000\n" -"Last-Translator: Peter Hageman , 2017\n" -"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" -"teams/23907/nl_NL/)\n" -"Language: nl_NL\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"Aging details can be shown in the report, expressed in aging " -"buckets (30 days due, ...), so the customer can review how much is open, due " -"or overdue." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "Annuleer" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "Bedrijf" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Customer Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "Datum" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -#, fuzzy -msgid "Date End" -msgstr "Datum" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "Export PDF" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"The outstanding statement provides details of all outstanding " -"customer receivables up to a particular date. This includes all unpaid " -"invoices, unclaimed refunds and outstanding payments. The list is " -"displayed in chronological order and is split by currencies." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "" diff --git a/customer_outstanding_statement/i18n/pt.po b/customer_outstanding_statement/i18n/pt.po deleted file mode 100644 index 4d960f84..00000000 --- a/customer_outstanding_statement/i18n/pt.po +++ /dev/null @@ -1,246 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -# Translators: -# Pedro Castro Silva , 2017 -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-22 16:14+0000\n" -"PO-Revision-Date: 2017-12-22 16:14+0000\n" -"Last-Translator: Pedro Castro Silva , " -"2017\n" -"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"Aging details can be shown in the report, expressed in aging " -"buckets (30 days due, ...), so the customer can review how much is open, due " -"or overdue." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "Saldo" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "Cancelar" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "Empresa" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "Criado por" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "Criado em" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Customer Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "Data" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -#, fuzzy -msgid "Date End" -msgstr "Data" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "Exibir nome" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "Exportar PDF" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "ID" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "Última modificação em" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "Última atualização em" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "Última atualização por" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"The outstanding statement provides details of all outstanding " -"customer receivables up to a particular date. This includes all unpaid " -"invoices, unclaimed refunds and outstanding payments. The list is " -"displayed in chronological order and is split by currencies." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "ou" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "" diff --git a/customer_outstanding_statement/i18n/ro.po b/customer_outstanding_statement/i18n/ro.po deleted file mode 100644 index 8e514474..00000000 --- a/customer_outstanding_statement/i18n/ro.po +++ /dev/null @@ -1,245 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * customer_outstanding_statement -# -# Translators: -# Dorin Hongu , 2018 -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-03-16 08:14+0000\n" -"PO-Revision-Date: 2018-03-16 08:14+0000\n" -"Last-Translator: Dorin Hongu , 2018\n" -"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" -"2:1));\n" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "+120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "1-30 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "30-60 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "60-90 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "90-120 Days Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "The partner doesn't have due entries." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Aging Report at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"Aging details can be shown in the report, expressed in aging " -"buckets (30 days due, ...), so the customer can review how much is open, due " -"or overdue." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Balance Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Cancel" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_company_id -msgid "Company" -msgstr "Companie" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_uid -msgid "Created by" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_create_date -msgid "Created on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Current Due" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.act_window,name:customer_outstanding_statement.customer_outstanding_statement_wizard_action -msgid "Customer Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_customer_outstanding_statement_wizard -msgid "Customer Outstanding Statement Wizard" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date" -msgstr "Data" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_date_end -msgid "Date End" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Date:" -msgstr "Data:" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Description" -msgstr "Descriere" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_display_name -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_display_name -msgid "Display Name" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_filter_partners_non_due -msgid "Don't show partners with no due entries" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Due Date" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Ending Balance" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "Export PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_id -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement_id -msgid "ID" -msgstr "ID" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_show_aging_buckets -msgid "Include Aging Buckets" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard___last_update -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_report_customer_outstanding_statement_statement___last_update -msgid "Last Modified on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_uid -msgid "Last Updated by" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_write_date -msgid "Last Updated on" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model.fields,field_description:customer_outstanding_statement.field_customer_outstanding_statement_wizard_number_partner_ids -msgid "Number Partner" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Open Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Original Amount" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Outstanding Statement at" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Partner ref:" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "Reference number" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.actions.report,name:customer_outstanding_statement.action_print_customer_outstanding_statement -msgid "Statement Action to PDF" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "" -"The outstanding statement provides details of all outstanding " -"customer receivables up to a particular date. This includes all unpaid " -"invoices, unclaimed refunds and outstanding payments. The list is " -"displayed in chronological order and is split by currencies." -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.statement_document -msgid "in" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.ui.view,arch_db:customer_outstanding_statement.customer_outstanding_statement_wizard_view -msgid "or" -msgstr "" - -#. module: customer_outstanding_statement -#: model:ir.model,name:customer_outstanding_statement.model_report_customer_outstanding_statement_statement -msgid "report.customer_outstanding_statement.statement" -msgstr "" diff --git a/customer_outstanding_statement/report/__init__.py b/customer_outstanding_statement/report/__init__.py deleted file mode 100644 index 82153818..00000000 --- a/customer_outstanding_statement/report/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - -from . import customer_outstanding_statement diff --git a/customer_outstanding_statement/report/customer_outstanding_statement.py b/customer_outstanding_statement/report/customer_outstanding_statement.py deleted file mode 100644 index b8a0861c..00000000 --- a/customer_outstanding_statement/report/customer_outstanding_statement.py +++ /dev/null @@ -1,190 +0,0 @@ -# Copyright 2018 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). - -from datetime import datetime, timedelta -from odoo.tools.misc import DEFAULT_SERVER_DATE_FORMAT -from odoo import api, fields, models - - -class CustomerOutstandingStatement(models.AbstractModel): - """Model of Customer Outstanding Statement""" - - _inherit = 'report.statement.common' - _name = 'report.customer_outstanding_statement.statement' - - def _display_lines_sql_q0(self, date_end): - return self._cr.mogrify(""" - SELECT l1.id, - CASE WHEN l1.reconciled = TRUE and l1.balance > 0.0 - THEN max(pd.max_date) - WHEN l1.reconciled = TRUE and l1.balance < 0.0 - THEN max(pc.max_date) - ELSE null - END as reconciled_date - FROM account_move_line l1 - LEFT JOIN (SELECT pr.* - FROM account_partial_reconcile pr - INNER JOIN account_move_line l2 - ON pr.credit_move_id = l2.id - WHERE l2.date <= %(date_end)s - ) as pd ON pd.debit_move_id = l1.id - LEFT JOIN (SELECT pr.* - FROM account_partial_reconcile pr - INNER JOIN account_move_line l2 - ON pr.debit_move_id = l2.id - WHERE l2.date <= %(date_end)s - ) as pc ON pc.credit_move_id = l1.id - GROUP BY l1.id - """, locals() - ) - - def _display_lines_sql_q1(self, partners, date_end, account_type): - partners = tuple(partners) - return self._cr.mogrify(""" - SELECT m.name AS move_id, l.partner_id, l.date, l.name, - l.ref, l.blocked, l.currency_id, l.company_id, - CASE WHEN (l.currency_id is not null AND l.amount_currency > 0.0) - THEN avg(l.amount_currency) - ELSE avg(l.debit) - END as debit, - CASE WHEN (l.currency_id is not null AND l.amount_currency < 0.0) - THEN avg(l.amount_currency * (-1)) - ELSE avg(l.credit) - END as credit, - CASE WHEN l.balance > 0.0 - THEN l.balance - sum(coalesce(pd.amount, 0.0)) - ELSE l.balance + sum(coalesce(pc.amount, 0.0)) - END AS open_amount, - CASE WHEN l.balance > 0.0 - THEN l.amount_currency - sum(coalesce(pd.amount_currency, 0.0)) - ELSE l.amount_currency + sum(coalesce(pc.amount_currency, 0.0)) - END AS open_amount_currency, - CASE WHEN l.date_maturity is null - THEN l.date - ELSE l.date_maturity - END as date_maturity - FROM account_move_line l - JOIN account_account_type at ON (at.id = l.user_type_id) - JOIN account_move m ON (l.move_id = m.id) - LEFT JOIN Q0 ON Q0.id = l.id - LEFT JOIN (SELECT pr.* - FROM account_partial_reconcile pr - INNER JOIN account_move_line l2 - ON pr.credit_move_id = l2.id - WHERE l2.date <= %(date_end)s - ) as pd ON pd.debit_move_id = l.id - LEFT JOIN (SELECT pr.* - FROM account_partial_reconcile pr - INNER JOIN account_move_line l2 - ON pr.debit_move_id = l2.id - WHERE l2.date <= %(date_end)s - ) as pc ON pc.credit_move_id = l.id - WHERE l.partner_id IN %(partners)s AND at.type = %(account_type)s - AND (Q0.reconciled_date is null or - Q0.reconciled_date > %(date_end)s) - AND l.date <= %(date_end)s - GROUP BY l.partner_id, m.name, l.date, l.date_maturity, l.name, - l.ref, l.blocked, l.currency_id, - l.balance, l.amount_currency, l.company_id - """, locals()) - - def _display_lines_sql_q2(self): - return self._cr.mogrify(""" - SELECT partner_id, currency_id, move_id, date, date_maturity, - debit, credit, name, ref, blocked, company_id, - CASE WHEN currency_id is not null - THEN open_amount_currency - ELSE open_amount - END as open_amount - FROM Q1 - """, locals()) - - def _display_lines_sql_q3(self, company_id): - return self._cr.mogrify(""" - SELECT Q2.partner_id, move_id, date, date_maturity, Q2.name, ref, - debit, credit, debit-credit AS amount, blocked, - COALESCE(Q2.currency_id, c.currency_id) AS currency_id, open_amount - FROM Q2 - JOIN res_company c ON (c.id = Q2.company_id) - WHERE c.id = %(company_id)s - """, locals()) - - def _get_account_display_lines(self, company_id, partner_ids, date_end, - account_type): - res = dict(map(lambda x: (x, []), partner_ids)) - partners = tuple(partner_ids) - # pylint: disable=E8103 - self.env.cr.execute(""" - WITH Q0 as (%s), - Q1 AS (%s), - Q2 AS (%s), - Q3 AS (%s) - SELECT partner_id, currency_id, move_id, date, date_maturity, debit, - credit, amount, open_amount, name, ref, blocked - FROM Q3 - ORDER BY date, date_maturity, move_id""" % ( - self._display_lines_sql_q0(date_end), - self._display_lines_sql_q1(partners, date_end, account_type), - self._display_lines_sql_q2(), - self._display_lines_sql_q3(company_id))) - for row in self.env.cr.dictfetchall(): - res[row.pop('partner_id')].append(row) - return res - - @api.multi - def get_report_values(self, docids, data): - company_id = data['company_id'] - partner_ids = data['partner_ids'] - date_end = data['date_end'] - account_type = data['account_type'] - today = fields.Date.today() - - buckets_to_display = {} - lines_to_display, amount_due = {}, {} - currency_to_display = {} - today_display, date_end_display = {}, {} - - lines = self._get_account_display_lines( - company_id, partner_ids, date_end, account_type) - - for partner_id in partner_ids: - lines_to_display[partner_id], amount_due[partner_id] = {}, {} - currency_to_display[partner_id] = {} - today_display[partner_id] = self._format_date_to_partner_lang( - today, partner_id) - date_end_display[partner_id] = self._format_date_to_partner_lang( - date_end, partner_id) - for line in lines[partner_id]: - currency = self.env['res.currency'].browse(line['currency_id']) - if currency not in lines_to_display[partner_id]: - lines_to_display[partner_id][currency] = [] - currency_to_display[partner_id][currency] = currency - amount_due[partner_id][currency] = 0.0 - if not line['blocked']: - amount_due[partner_id][currency] += line['open_amount'] - line['balance'] = amount_due[partner_id][currency] - line['date'] = self._format_date_to_partner_lang( - line['date'], partner_id) - line['date_maturity'] = self._format_date_to_partner_lang( - line['date_maturity'], partner_id) - lines_to_display[partner_id][currency].append(line) - - if data['show_aging_buckets']: - buckets_to_display = self._get_account_show_buckets( - company_id, partner_ids, date_end, account_type) - - return { - 'doc_ids': partner_ids, - 'doc_model': 'res.partner', - 'docs': self.env['res.partner'].browse(partner_ids), - 'Amount_Due': amount_due, - 'Lines': lines_to_display, - 'Buckets': buckets_to_display, - 'Currencies': currency_to_display, - 'Show_Buckets': data['show_aging_buckets'], - 'Filter_non_due_partners': data['filter_non_due_partners'], - 'Date_end': date_end_display, - 'Date': today_display, - 'account_type': account_type, - } diff --git a/customer_outstanding_statement/static/description/Outstanding_Statement.png b/customer_outstanding_statement/static/description/Outstanding_Statement.png deleted file mode 100644 index eeba6829..00000000 Binary files a/customer_outstanding_statement/static/description/Outstanding_Statement.png and /dev/null differ diff --git a/customer_outstanding_statement/static/description/index.html b/customer_outstanding_statement/static/description/index.html deleted file mode 100644 index 1cdb5ba3..00000000 --- a/customer_outstanding_statement/static/description/index.html +++ /dev/null @@ -1,76 +0,0 @@ -
-
-
-

Partner Outstanding Statement

-
-
-
- -
-
-
-

The outstanding statement provides details of all outstanding -receivables or payables of a partner up to a particular date. This includes all unpaid invoices, unclaimed -refunds and outstanding payments. The list is displayed in chronological order and is split -by currencies.

Aging details can be shown in the report, expressed in aging buckets (30 days -due, ...), so the customer or vendor can review how much is open, due or overdue.

-
-
-
- -
-
-
-

Configuration

-
-
-

To configure this module, you need to: -

    -
  • Go to Settings / Users and edit your user to add the corresponding access rights as follows.
  • -
  • In Application / Accounting & Finance, select Billing or Billing Manager options.
  • -
  • In Technical Setting mark Show Full Accounting Features options.
  • -
-

-
-
-
- -
-
-
-

Usage

-
-
-

To use this module, you need to: -

    -
  • Go to Invoicing > Sales > Master Data > Customers or Invoicing > Purchases > Master Data > Vendors and select one or more
  • -
  • Press 'Action > Partner Outstanding Statement'
  • -
  • Indicate if you want to display aging buckets
  • -
-

-
-
-
- -
-
-
-

Credits

-
-
-

Contributors

- -
-
-

Maintainer

-

- This module is maintained by the OCA.
- OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
- To contribute to this module, please visit http://odoo-community.org.
- -

-
-
-
\ No newline at end of file diff --git a/customer_outstanding_statement/tests/__init__.py b/customer_outstanding_statement/tests/__init__.py deleted file mode 100644 index c90a2674..00000000 --- a/customer_outstanding_statement/tests/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - -from . import test_customer_outstanding_statement diff --git a/customer_outstanding_statement/views/statement.xml b/customer_outstanding_statement/views/statement.xml deleted file mode 100644 index 209c5649..00000000 --- a/customer_outstanding_statement/views/statement.xml +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - - diff --git a/customer_outstanding_statement/wizard/__init__.py b/customer_outstanding_statement/wizard/__init__.py deleted file mode 100644 index 23f71889..00000000 --- a/customer_outstanding_statement/wizard/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - -from . import customer_outstanding_statement_wizard diff --git a/customer_outstanding_statement/wizard/customer_outstanding_statement_wizard.xml b/customer_outstanding_statement/wizard/customer_outstanding_statement_wizard.xml deleted file mode 100644 index 3badd1fb..00000000 --- a/customer_outstanding_statement/wizard/customer_outstanding_statement_wizard.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - Customer Outstanding Statement Wizard - customer.outstanding.statement.wizard - -
-
-

- - - - - - - - - - - - - - - - -
-
-
-
-
-
diff --git a/customer_statement/README.rst b/customer_statement/README.rst deleted file mode 100644 index a23c75e1..00000000 --- a/customer_statement/README.rst +++ /dev/null @@ -1,81 +0,0 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.png - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 - -================================= -Print Partner Activity Statement -================================= - -The activity statement provides details of all activity on the partner receivables or payables -between two selected dates. This includes all invoices, refunds and payments. -Any outstanding balance dated prior to the chosen statement period will appear -as a forward balance at the top of the statement. The list is displayed in chronological -order and is split by currencies. - -Aging details can be shown in the report, expressed in aging buckets (30 days -due, ...), so the customer or vendor can review how much is open, due or overdue. - -Configuration -============= - -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. -#. In *Application / Accounting & Finance*, select *Billing* or *Billing Manager* -#. In *Technical Settings* mark *Show Full Accounting Features* options. - -Usage -===== - -To use this module, you need to: - -#. Go to Invoicing > Sales > Master Data > Customers or Invoicing > Purchases > Master Data > Vendors and select one or more -#. Press 'Action > Partner Activity Statement' -#. Indicate if you want to display receivables or payables, and if you want to display aging buckets - - -.. 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/11.0 - -Roadmap -======= - -* In v12, the module should be renamed to `Partner Activity Statement`. - Maybe merge this module with the `Partner Outstanding Statement` module. - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues -`_. In case of trouble, -please check there if your issue has already been reported. If you spotted it -first, help us smash it by providing detailed and welcomed feedback. - -Credits -======= - -Images ------- - -* Odoo Community Association: `Icon `_. - -Contributors ------------- - -* Miquel Raïch - -Maintainer ----------- - -.. image:: https://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: https://odoo-community.org - -This module is maintained by the OCA. - -OCA, or the Odoo Community Association, is a nonprofit organization whose -mission is to support the collaborative development of Odoo features and -promote its widespread use. - -To contribute to this module, please visit https://odoo-community.org. diff --git a/customer_statement/__init__.py b/customer_statement/__init__.py deleted file mode 100644 index 56d9f4d0..00000000 --- a/customer_statement/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - -from . import report -from . import wizard -from . import models -from . import wizards diff --git a/customer_statement/demo/account_payment_term.xml b/customer_statement/demo/account_payment_term.xml deleted file mode 100644 index 21d7c8e8..00000000 --- a/customer_statement/demo/account_payment_term.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/customer_statement/models/__init__.py b/customer_statement/models/__init__.py deleted file mode 100644 index 2e019d67..00000000 --- a/customer_statement/models/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import account_payment_term diff --git a/customer_statement/models/account_payment_term.py b/customer_statement/models/account_payment_term.py deleted file mode 100644 index cd4a0d98..00000000 --- a/customer_statement/models/account_payment_term.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2018 Graeme Gellatly -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import api, fields, models, _ - - -class AccountPaymentTerm(models.Model): - - _inherit = 'account.payment.term' - - aging_periods = fields.Integer(string='Aging Periods to show', default=4) - - @api.constrains('aging_periods') - def _aging_period_limits(self): - periods = self.mapped('aging_periods') - if max(periods) > 5 or min(periods) < 0: - raise ValidationError(_('Only between 0 and 5 Aging periods allowed')) diff --git a/customer_statement/report/__init__.py b/customer_statement/report/__init__.py deleted file mode 100644 index bc3fd583..00000000 --- a/customer_statement/report/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - -from . import customer_activity_statement diff --git a/customer_statement/report/customer_activity_statement.py b/customer_statement/report/customer_activity_statement.py deleted file mode 100644 index cf20ffd1..00000000 --- a/customer_statement/report/customer_activity_statement.py +++ /dev/null @@ -1,207 +0,0 @@ -# Copyright 2018 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). - -from datetime import datetime, timedelta -from odoo.tools.misc import DEFAULT_SERVER_DATE_FORMAT -from odoo import api, fields, models -from collections import defaultdict - - -class CustomerActivityStatement(models.AbstractModel): - """Model of Customer Activity Statement""" - - _inherit = 'report.statement.common' - _name = 'report.customer_activity_statement.statement' - - def _initial_balance_sql_q1(self, partners, date_start, account_type): - return self._cr.mogrify(""" - SELECT l.partner_id, l.currency_id, l.company_id, - CASE WHEN l.currency_id is not null AND l.amount_currency > 0.0 - THEN sum(l.amount_currency) - ELSE sum(l.debit) - END as debit, - CASE WHEN l.currency_id is not null AND l.amount_currency < 0.0 - THEN sum(l.amount_currency * (-1)) - ELSE sum(l.credit) - END as credit - FROM account_move_line l - JOIN account_account_type at ON (at.id = l.user_type_id) - JOIN account_move m ON (l.move_id = m.id) - WHERE l.partner_id IN %(partners)s AND at.type = %(account_type)s - AND l.date < %(date_start)s AND not l.blocked - GROUP BY l.partner_id, l.currency_id, l.amount_currency, - l.company_id - """, locals()) - - def _initial_balance_sql_q2(self, company_id): - return """ - SELECT Q1.partner_id, debit-credit AS balance, - COALESCE(Q1.currency_id, c.currency_id) AS currency_id - FROM Q1 - JOIN res_company c ON (c.id = Q1.company_id) - WHERE c.id = %s - """ % company_id - - def _get_account_initial_balance(self, company_id, partner_ids, - date_start, account_type, currencies): - balance_start = dict(map(lambda x: (x, []), partner_ids)) - balance_start_to_display = defaultdict({}) - partners = tuple(partner_ids) - # pylint: disable=E8103 - self.env.cr.execute("""WITH Q1 AS (%s), Q2 AS (%s) - SELECT partner_id, currency_id, balance - FROM Q2""" % (self._initial_balance_sql_q1(partners, date_start, - account_type), - self._initial_balance_sql_q2(company_id))) - for row in self.env.cr.dictfetchall(): - balance_start[row.pop('partner_id')].append(row) - - for partner_id, line in balance_start.items(): - currency = currencies.get( - line['currency_id'], - self.env['res.currency'].browse(line['currency_id']) - ) - balance_start_to_display[partner_id][currency] = \ - line['balance'] - return balance_start_to_display - - def _display_lines_sql_q1(self, partners, date_start, date_end, - account_type): - return self._cr.mogrify(""" - SELECT m.name AS move_id, l.partner_id, l.date, l.name, - l.ref, l.blocked, l.currency_id, l.company_id, - CASE WHEN (l.currency_id is not null AND l.amount_currency > 0.0) - THEN sum(l.amount_currency) - ELSE sum(l.debit) - END as debit, - CASE WHEN (l.currency_id is not null AND l.amount_currency < 0.0) - THEN sum(l.amount_currency * (-1)) - ELSE sum(l.credit) - END as credit, - CASE WHEN l.date_maturity is null - THEN l.date - ELSE l.date_maturity - END as date_maturity - FROM account_move_line l - JOIN account_account_type at ON (at.id = l.user_type_id) - JOIN account_move m ON (l.move_id = m.id) - WHERE l.partner_id IN %(partners)s AND at.type = %(account_type)s - AND %(date_start)s <= l.date AND l.date <= %(date_end)s - GROUP BY l.partner_id, m.name, l.date, l.date_maturity, l.name, - l.ref, l.blocked, l.currency_id, - l.amount_currency, l.company_id - """, locals()) - - def _display_lines_sql_q2(self, company_id): - return self._cr.mogrify(""" - SELECT Q1.partner_id, move_id, date, date_maturity, Q1.name, ref, - debit, credit, debit-credit as amount, blocked, - COALESCE(Q1.currency_id, c.currency_id) AS currency_id - FROM Q1 - JOIN res_company c ON (c.id = Q1.company_id) - WHERE c.id = %(company_id)s - """, locals()) - - def _get_account_display_lines(self, company_id, partner_ids, date_start, - date_end, account_type): - res = dict(map(lambda x: (x, []), partner_ids)) - partners = tuple(partner_ids) - - # pylint: disable=E8103 - self.env.cr.execute(""" - WITH Q1 AS (%s), - Q2 AS (%s) - SELECT partner_id, move_id, date, date_maturity, name, ref, debit, - credit, amount, blocked, currency_id - FROM Q2 - ORDER BY date, date_maturity, move_id""" % ( - self._display_lines_sql_q1(partners, date_start, date_end, - account_type), - self._display_lines_sql_q2(company_id))) - for row in self.env.cr.dictfetchall(): - res[row.pop('partner_id')].append(row) - return res - - @api.multi - def get_report_values(self, docids, data): - if not data: - wiz = self.env["customer.activity.statement.wizard"].with_context( - active_ids=docids, model="res.partner" - ) - data = wiz.create({})._prepare_statement() - company_id = data['company_id'] - partner_ids = data['partner_ids'] - date_start = data['date_start'] - date_end = data['date_end'] - account_type = data['account_type'] - today = fields.Date.today() - - # There should be relatively few of these, so to speed performance we cache them - self._cr.execute(""" - SELECT p.id, l.date_format - FROM res_partner p LEFT JOIN res_lang l ON p.lang=l.id - WHERE p.id IN %(partner_ids)s""", {"partner_ids": tuple(partner_ids)}) - date_formats = {r[0]: r[1] for r in self._cr.fetchall()} - currencies = {x.id: x for x in self.env['res.currency'].search([])} - - - buckets_to_display = {} - lines_to_display = defaultdict({}) - amount_due = defaultdict({}) - currency_to_display = defaultdict({}) - today_display, date_start_display, date_end_display = {}, {}, {} - - balance_start_to_display = self._get_account_initial_balance( - company_id, partner_ids, date_start, account_type, currencies) - - lines = self._get_account_display_lines( - company_id, partner_ids, date_start, date_end, account_type) - - for partner_id in partner_ids: - today_display[partner_id] = self._format_date_to_partner_lang( - today, partner_id, date_formats['partner_id']) - date_start_display[partner_id] = self._format_date_to_partner_lang( - date_start, partner_id, date_formats['partner_id']) - date_end_display[partner_id] = self._format_date_to_partner_lang( - date_end, partner_id, date_formats['partner_id']) - - for line in lines[partner_id]: - currency = self.env['res.currency'].browse(line['currency_id']) - if currency not in lines_to_display[partner_id]: - lines_to_display[partner_id][currency] = [] - currency_to_display[partner_id][currency] = currency - if currency in balance_start_to_display[partner_id]: - amount_due[partner_id][currency] = \ - balance_start_to_display[partner_id][currency] - else: - amount_due[partner_id][currency] = 0.0 - if not line['blocked']: - amount_due[partner_id][currency] += line['amount'] - line['balance'] = amount_due[partner_id][currency] - line['date'] = self._format_date_to_partner_lang( - line['date'], partner_id, date_formats['partner_id']) - line['date_maturity'] = self._format_date_to_partner_lang( - line['date_maturity'], partner_id, date_formats['partner_id']) - lines_to_display[partner_id][currency].append(line) - - if data['show_aging_buckets']: - buckets_to_display = self._get_account_show_buckets( - company_id, partner_ids, date_end, account_type) - - return { - 'doc_ids': partner_ids, - 'doc_model': 'res.partner', - 'docs': self.env['res.partner'].browse(partner_ids), - 'Amount_Due': amount_due, - 'Balance_forward': balance_start_to_display, - 'Lines': lines_to_display, - 'Buckets': buckets_to_display, - 'Currencies': currency_to_display, - 'Show_Buckets': data['show_aging_buckets'], - 'Filter_non_due_partners': data['filter_non_due_partners'], - 'Date_start': date_start_display, - 'Date_end': date_end_display, - 'Date': today_display, - 'account_type': account_type, - } diff --git a/customer_statement/report/statement_common.py b/customer_statement/report/statement_common.py deleted file mode 100644 index 663938c6..00000000 --- a/customer_statement/report/statement_common.py +++ /dev/null @@ -1,368 +0,0 @@ -# Copyright 2018 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). - -from datetime import datetime, timedelta -from odoo.tools.misc import DEFAULT_SERVER_DATE_FORMAT -from odoo import api, fields, models - - -class ReportStatementCommon(models.AbstractModel): - """Abstract Report Statement for use in other models""" - - _name = 'report.statement.common' - - def _format_date_to_partner_lang(self, date, partner_id, date_formats=DEFAULT_SERVER_DATE_FORMAT): - """ - Note: Function kept for backwards compatibility in V12 in case of override. - Consider deprecating in v13 migration or removing - """ - return date.strftime(lang.date_format) - - def _get_account_initial_balance(self, company_id, partner_ids, - date_start, account_type): - res = dict(map(lambda x: (x, []), partner_ids)) - partners = ', '.join([str(i) for i in partner_ids]) - date_start = datetime.strptime( - date_start, DEFAULT_SERVER_DATE_FORMAT).date() - # pylint: disable=E8103 - self.env.cr.execute("""WITH Q1 AS (%s), Q2 AS (%s) - SELECT partner_id, currency_id, balance - FROM Q2""" % (self._initial_balance_sql_q1(partners, date_start, - account_type), - self._initial_balance_sql_q2(company_id))) - for row in self.env.cr.dictfetchall(): - res[row.pop('partner_id')].append(row) - return res - - def _display_lines_sql_q1(self, partners, date_start, date_end, - account_type): - return """ - SELECT m.name AS move_id, l.partner_id, l.date, l.name, - l.ref, l.blocked, l.currency_id, l.company_id, - CASE WHEN (l.currency_id is not null AND l.amount_currency > 0.0) - THEN sum(l.amount_currency) - ELSE sum(l.debit) - END as debit, - CASE WHEN (l.currency_id is not null AND l.amount_currency < 0.0) - THEN sum(l.amount_currency * (-1)) - ELSE sum(l.credit) - END as credit, - CASE WHEN l.date_maturity is null - THEN l.date - ELSE l.date_maturity - END as date_maturity - FROM account_move_line l - JOIN account_account_type at ON (at.id = l.user_type_id) - JOIN account_move m ON (l.move_id = m.id) - WHERE l.partner_id IN (%s) AND at.type = '%s' - AND '%s' <= l.date AND l.date <= '%s' - GROUP BY l.partner_id, m.name, l.date, l.date_maturity, l.name, - l.ref, l.blocked, l.currency_id, - l.amount_currency, l.company_id - """ % (partners, account_type, date_start, date_end) - - def _display_lines_sql_q2(self, company_id): - return """ - SELECT Q1.partner_id, move_id, date, date_maturity, Q1.name, ref, - debit, credit, debit-credit as amount, blocked, - COALESCE(Q1.currency_id, c.currency_id) AS currency_id - FROM Q1 - JOIN res_company c ON (c.id = Q1.company_id) - WHERE c.id = %s - """ % company_id - - def _show_buckets_sql_q0(self, date_end): - return self._cr_mogrify(""" - SELECT l1.id, - CASE WHEN l1.reconciled = TRUE and l1.balance > 0.0 - THEN max(pd.max_date) - WHEN l1.reconciled = TRUE and l1.balance < 0.0 - THEN max(pc.max_date) - ELSE null - END as reconciled_date - FROM account_move_line l1 - LEFT JOIN (SELECT pr.* - FROM account_partial_reconcile pr - INNER JOIN account_move_line l2 - ON pr.credit_move_id = l2.id - WHERE l2.date <= %(date_end)s - ) as pd ON pd.debit_move_id = l1.id - LEFT JOIN (SELECT pr.* - FROM account_partial_reconcile pr - INNER JOIN account_move_line l2 - ON pr.debit_move_id = l2.id - WHERE l2.date <= %(date_end)s - ) as pc ON pc.credit_move_id = l1.id - GROUP BY l1.id - """, locals()) - - def _show_buckets_sql_q1(self, partners, date_end, account_type): - return self._cr.mogrify(""" - SELECT l.partner_id, l.currency_id, l.company_id, l.move_id, - CASE WHEN l.balance > 0.0 - THEN l.balance - sum(coalesce(pd.amount, 0.0)) - ELSE l.balance + sum(coalesce(pc.amount, 0.0)) - END AS open_due, - CASE WHEN l.balance > 0.0 - THEN l.amount_currency - sum(coalesce(pd.amount_currency, 0.0)) - ELSE l.amount_currency + sum(coalesce(pc.amount_currency, 0.0)) - END AS open_due_currency, - CASE WHEN l.date_maturity is null - THEN l.date - ELSE l.date_maturity - END as date_maturity - FROM account_move_line l - JOIN account_account_type at ON (at.id = l.user_type_id) - JOIN account_move m ON (l.move_id = m.id) - LEFT JOIN Q0 ON Q0.id = l.id - LEFT JOIN (SELECT pr.* - FROM account_partial_reconcile pr - INNER JOIN account_move_line l2 - ON pr.credit_move_id = l2.id - WHERE l2.date <= %(date_end)s - ) as pd ON pd.debit_move_id = l.id - LEFT JOIN (SELECT pr.* - FROM account_partial_reconcile pr - INNER JOIN account_move_line l2 - ON pr.debit_move_id = l2.id - WHERE l2.date <= %(date_end)s - ) as pc ON pc.credit_move_id = l.id - WHERE l.partner_id IN %(partners)s AND at.type = %(account_type)s - AND (Q0.reconciled_date is null or - Q0.reconciled_date > %(date_end)s) - AND l.date <= %(date_end)s AND not l.blocked - GROUP BY l.partner_id, l.currency_id, l.date, l.date_maturity, - l.amount_currency, l.balance, l.move_id, - l.company_id - """, locals()) - - def _show_buckets_sql_q2(self, date_end, minus_30, minus_60, minus_90, - minus_120): - return """ - SELECT partner_id, currency_id, date_maturity, open_due, - open_due_currency, move_id, company_id, - CASE - WHEN '%s' <= date_maturity AND currency_id is null - THEN open_due - WHEN '%s' <= date_maturity AND currency_id is not null - THEN open_due_currency - ELSE 0.0 - END as current, - CASE - WHEN '%s' < date_maturity AND date_maturity < '%s' - AND currency_id is null THEN open_due - WHEN '%s' < date_maturity AND date_maturity < '%s' - AND currency_id is not null - THEN open_due_currency - ELSE 0.0 - END as b_1_30, - CASE - WHEN '%s' < date_maturity AND date_maturity <= '%s' - AND currency_id is null THEN open_due - WHEN '%s' < date_maturity AND date_maturity <= '%s' - AND currency_id is not null - THEN open_due_currency - ELSE 0.0 - END as b_30_60, - CASE - WHEN '%s' < date_maturity AND date_maturity <= '%s' - AND currency_id is null THEN open_due - WHEN '%s' < date_maturity AND date_maturity <= '%s' - AND currency_id is not null - THEN open_due_currency - ELSE 0.0 - END as b_60_90, - CASE - WHEN '%s' < date_maturity AND date_maturity <= '%s' - AND currency_id is null THEN open_due - WHEN '%s' < date_maturity AND date_maturity <= '%s' - AND currency_id is not null - THEN open_due_currency - ELSE 0.0 - END as b_90_120, - CASE - WHEN date_maturity <= '%s' AND currency_id is null - THEN open_due - WHEN date_maturity <= '%s' AND currency_id is not null - THEN open_due_currency - ELSE 0.0 - END as b_over_120 - FROM Q1 - GROUP BY partner_id, currency_id, date_maturity, open_due, - open_due_currency, move_id, company_id - """ % (date_end, date_end, minus_30, date_end, minus_30, date_end, - minus_60, minus_30, minus_60, minus_30, minus_90, minus_60, - minus_90, minus_60, minus_120, minus_90, minus_120, minus_90, - minus_120, minus_120) - - def _show_buckets_sql_q3(self, company_id): - return self._cr.mogrify(""" - SELECT Q2.partner_id, current, b_1_30, b_30_60, b_60_90, b_90_120, - b_over_120, - COALESCE(Q2.currency_id, c.currency_id) AS currency_id - FROM Q2 - JOIN res_company c ON (c.id = Q2.company_id) - WHERE c.id = %(company_id)s - """, locals()) - - def _show_buckets_sql_q4(self): - return """ - SELECT partner_id, currency_id, sum(current) as current, - sum(b_1_30) as b_1_30, - sum(b_30_60) as b_30_60, - sum(b_60_90) as b_60_90, - sum(b_90_120) as b_90_120, - sum(b_over_120) as b_over_120 - FROM Q3 - GROUP BY partner_id, currency_id - """ - - def _get_bucket_dates(self, date_end, aging_type): - return getattr( - self, '_get_bucket_dates_%s' % aging_type, - self._get_bucket_dates_days - )(date_end) - - def _get_bucket_dates_days(date_end): - return { - 'date_end': date_end, - 'minus_30': date_end - timedelta(days=30), - 'minus_60': date_end - timedelta(days=60), - 'minus_90': date_end - timedelta(days=90), - 'minus_120': date_end - timedelta(days=120), - } - - def _get_bucket_dates_months(date_end): - res = {} - d = date_end - for k in ( - "date_end", - "minus_30", - "minus_60", - "minus_90", - "minus_120", - ): - res[k] = d - d = d.replace(day=1) - timedelta(days=1) - return res - - def _get_account_show_buckets(self, company_id, partner_ids, date_end, - account_type): - buckets = dict(map(lambda x: (x, []), partner_ids)) - partners = ', '.join([str(i) for i in partner_ids]) - date_end = datetime.strptime( - date_end, DEFAULT_SERVER_DATE_FORMAT).date() - full_dates = self._get_bucket_dates(date_end) - # pylint: disable=E8103 - self.env.cr.execute(""" - WITH Q0 AS (%s), Q1 AS (%s), Q2 AS (%s), Q3 AS (%s), Q4 AS (%s) - SELECT partner_id, currency_id, current, b_1_30, b_30_60, b_60_90, - b_90_120, b_over_120, - current+b_1_30+b_30_60+b_60_90+b_90_120+b_over_120 - AS balance - FROM Q4 - GROUP BY partner_id, currency_id, current, b_1_30, b_30_60, b_60_90, - b_90_120, b_over_120""" % ( - self._show_buckets_sql_q0(date_end), - self._show_buckets_sql_q1(partners, date_end, account_type), - self._show_buckets_sql_q2( - full_dates['date_end'], - full_dates['minus_30'], - full_dates['minus_60'], - full_dates['minus_90'], - full_dates['minus_120']), - self._show_buckets_sql - _q3(company_id), - self._show_buckets_sql_q4())) - for row in self.env.cr.dictfetchall(): - buckets[row.pop('partner_id')].append(row) - for partner_id in partner_ids: - buckets_to_display[partner_id] = {} - for line in buckets[partner_id]: - currency = self.env['res.currency'].browse( - line['currency_id']) - if currency not in buckets_to_display[partner_id]: - buckets_to_display[partner_id][currency] = [] - buckets_to_display[partner_id][currency] = line - return buckets_to_display - - @api.multi - def get_report_values(self, docids, data): - - company_id = data['company_id'] - partner_ids = data['partner_ids'] - date_start = data['date_start'] - date_end = data['date_end'] - account_type = data['account_type'] - today = fields.Date.today() - - balance_start_to_display, buckets_to_display = {}, {} - lines_to_display, amount_due = {}, {} - currency_to_display = {} - today_display, date_start_display, date_end_display = {}, {}, {} - - balance_start = self._get_account_initial_balance( - company_id, partner_ids, date_start, account_type) - - for partner_id in partner_ids: - balance_start_to_display[partner_id] = {} - for line in balance_start[partner_id]: - currency = self.env['res.currency'].browse(line['currency_id']) - if currency not in balance_start_to_display[partner_id]: - balance_start_to_display[partner_id][currency] = [] - balance_start_to_display[partner_id][currency] = \ - line['balance'] - - lines = self._get_account_display_lines( - company_id, partner_ids, date_start, date_end, account_type) - - for partner_id in partner_ids: - lines_to_display[partner_id], amount_due[partner_id] = {}, {} - currency_to_display[partner_id] = {} - today_display[partner_id] = self._format_date_to_partner_lang( - today, partner_id) - date_start_display[partner_id] = self._format_date_to_partner_lang( - date_start, partner_id) - date_end_display[partner_id] = self._format_date_to_partner_lang( - date_end, partner_id) - for line in lines[partner_id]: - currency = self.env['res.currency'].browse(line['currency_id']) - if currency not in lines_to_display[partner_id]: - lines_to_display[partner_id][currency] = [] - currency_to_display[partner_id][currency] = currency - if currency in balance_start_to_display[partner_id]: - amount_due[partner_id][currency] = \ - balance_start_to_display[partner_id][currency] - else: - amount_due[partner_id][currency] = 0.0 - if not line['blocked']: - amount_due[partner_id][currency] += line['amount'] - line['balance'] = amount_due[partner_id][currency] - line['date'] = self._format_date_to_partner_lang( - line['date'], partner_id) - line['date_maturity'] = self._format_date_to_partner_lang( - line['date_maturity'], partner_id) - lines_to_display[partner_id][currency].append(line) - - if data['show_aging_buckets']: - buckets_to_display = self._get_account_show_buckets( - company_id, partner_ids, date_end, account_type) - - - return { - 'doc_ids': partner_ids, - 'doc_model': 'res.partner', - 'docs': self.env['res.partner'].browse(partner_ids), - 'Amount_Due': amount_due, - 'Balance_forward': balance_start_to_display, - 'Lines': lines_to_display, - 'Buckets': buckets_to_display, - 'Currencies': currency_to_display, - 'Show_Buckets': data['show_aging_buckets'], - 'Filter_non_due_partners': data['filter_non_due_partners'], - 'Date_start': date_start_display, - 'Date_end': date_end_display, - 'Date': today_display, - 'account_type': account_type, - } diff --git a/customer_statement/static/description/Activity_Statement.png b/customer_statement/static/description/Activity_Statement.png deleted file mode 100644 index e730c3a7..00000000 Binary files a/customer_statement/static/description/Activity_Statement.png and /dev/null differ diff --git a/customer_statement/static/description/icon.png b/customer_statement/static/description/icon.png deleted file mode 100644 index 3a0328b5..00000000 Binary files a/customer_statement/static/description/icon.png and /dev/null differ diff --git a/customer_statement/static/description/index.html b/customer_statement/static/description/index.html deleted file mode 100644 index a811835d..00000000 --- a/customer_statement/static/description/index.html +++ /dev/null @@ -1,78 +0,0 @@ -
-
-
-

Partner Activity Statement

-
-
-
- -
-
-
-

The activity statement provides -details of all activity on the receivables or payables of a partner between two selected dates. This -includes all invoices, refunds and payments. Any outstanding balance dated prior to -the chosen statement period will appear as a forward balance at the top of the statement. -The list is displayed in chronological order and is split by currencies.

Aging -details can be shown in the report, expressed in aging buckets (30 days due, ...), -so the customer or vendor can review how much is open, due or overdue.

-
-
-
- -
-
-
-

Configuration

-
-
-

To configure this module, you need to: -

    -
  • Go to Settings / Users and edit your user to add the corresponding access rights as follows.
  • -
  • In Application / Accounting & Finance, select Billing or Billing Manager options.
  • -
  • In Technical Setting mark Show Full Accounting Features options.
  • -
-

-
-
-
- -
-
-
-

Usage

-
-
-

To use this module, you need to: -

    -
  • Go to Invoicing > Sales > Master Data > Customers or Invoicing > Purchases > Master Data > Vendors and select one or more
  • -
  • Press 'Action > Partner Activity Statement'
  • -
  • Indicate if you want to display aging buckets
  • -
-

-
-
-
- -
-
-
-

Credits

-
-
-

Contributors

- -
-
-

Maintainer

-

- This module is maintained by the OCA.
- OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
- To contribute to this module, please visit http://odoo-community.org.
- -

-
-
-
\ No newline at end of file diff --git a/customer_statement/tests/__init__.py b/customer_statement/tests/__init__.py deleted file mode 100644 index 9117f0c2..00000000 --- a/customer_statement/tests/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - -from . import test_customer_activity_statement diff --git a/customer_statement/tests/test_customer_activity_statement.py b/customer_statement/tests/test_customer_activity_statement.py deleted file mode 100644 index 091b351d..00000000 --- a/customer_statement/tests/test_customer_activity_statement.py +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 2018 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). - -from odoo.tests.common import TransactionCase - - -class TestCustomerActivityStatement(TransactionCase): - """ - Tests for Customer Activity Statement. - """ - def setUp(self): - super(TestCustomerActivityStatement, self).setUp() - - self.res_users_model = self.env['res.users'] - self.company = self.env.ref('base.main_company') - self.partner1 = self.env.ref('base.res_partner_1') - self.partner2 = self.env.ref('base.res_partner_2') - self.g_account_user = self.env.ref('account.group_account_user') - - self.user = self._create_user('user_1', [self.g_account_user], - self.company).id - - self.statement_model = \ - self.env['report.customer_activity_statement.statement'] - self.wiz = self.env['customer.activity.statement.wizard'] - self.report_name = 'customer_activity_statement.statement' - self.report_title = 'Customer Activity Statement' - - def _create_user(self, login, groups, company): - group_ids = [group.id for group in groups] - user = self.res_users_model.create({ - 'name': login, - 'login': login, - 'password': 'demo', - 'email': 'example@yourcompany.com', - 'company_id': company.id, - 'company_ids': [(4, company.id)], - 'groups_id': [(6, 0, group_ids)] - }) - return user - - def test_customer_activity_statement(self): - - wiz_id = self.wiz.with_context( - active_ids=[self.partner1.id, self.partner2.id], - ).create({}) - - statement = wiz_id.button_export_pdf() - - self.assertDictContainsSubset( - { - 'type': 'ir.actions.report', - 'report_name': self.report_name, - 'report_type': 'qweb-pdf', - }, - statement, - 'There was an error and the PDF report was not generated.' - ) - - data = wiz_id._prepare_activity_statement() - docids = data['partner_ids'] - report = self.statement_model.get_report_values(docids, data) - self.assertIsInstance(report, dict, - "There was an error while compiling the report.") - self.assertIn("Show_Buckets", report, - "There was an error while compiling the report.") diff --git a/customer_statement/views/account_payment_term.xml b/customer_statement/views/account_payment_term.xml deleted file mode 100644 index aa9f556b..00000000 --- a/customer_statement/views/account_payment_term.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - account.payment.term.form (in customer_activity_statement) - account.payment.term - - - - - - - - account.payment.term.search (in customer_activity_statement) - account.payment.term - - - - - - - - account.payment.term.tree (in customer_activity_statement) - account.payment.term - - - - - - - diff --git a/customer_statement/views/statement.xml b/customer_statement/views/statement.xml deleted file mode 100644 index 866a261d..00000000 --- a/customer_statement/views/statement.xml +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - diff --git a/customer_statement/wizard/__init__.py b/customer_statement/wizard/__init__.py deleted file mode 100644 index 2670d954..00000000 --- a/customer_statement/wizard/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - -from . import customer_activity_statement_wizard diff --git a/customer_statement/wizard/customer_activity_statement_wizard.py b/customer_statement/wizard/customer_activity_statement_wizard.py deleted file mode 100644 index 6fa7ba21..00000000 --- a/customer_statement/wizard/customer_activity_statement_wizard.py +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright 2018 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). - -from datetime import date -from odoo import api, fields, models - - -class CustomerActivityStatementWizard(models.TransientModel): - """Customer Activity Statement wizard.""" - - _inherit = 'statement.common' - _name = 'customer.activity.statement.wizard' - _description = 'Customer Activity Statement Wizard' - - - def _get_date_start(self): - for record in self: - record.date_start = fields.Date.context_today() - relativedelta(day=1) - - date_start = fields.Date(required=True, default='_get_date_start') - - account_type = fields.Selection( - [('receivable', 'Receivable'), - ('payable', 'Payable')], string='Account type', default='receivable') - - def _export(self): - """Export to PDF.""" - data = self._prepare_statement() - return self.env.ref( - 'customer_statement' - '.action_print_customer_activity_statement').report_action( - self, data=data) - - def _prepare_activity_statement(self): - res = super()._prepare_activity_statement() - res.update({'date_start': self.date_start}) - return res \ No newline at end of file diff --git a/customer_statement/wizard/customer_activity_statement_wizard.xml b/customer_statement/wizard/customer_activity_statement_wizard.xml deleted file mode 100644 index 175c7241..00000000 --- a/customer_statement/wizard/customer_activity_statement_wizard.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - Customer Activity Statement Wizard - customer.activity.statement.wizard - -
-
-

- - - - - - - - - - - - - - - - - -
-
-
-
-
-
diff --git a/customer_statement/wizard/customer_outstanding_statement_wizard.py b/customer_statement/wizard/customer_outstanding_statement_wizard.py deleted file mode 100644 index eff286b6..00000000 --- a/customer_statement/wizard/customer_outstanding_statement_wizard.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright 2018 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). - -from datetime import date -from odoo import api, fields, models - - -class CustomerOutstandingStatementWizard(models.TransientModel): - """Customer Outstanding Statement wizard.""" - - _name = 'customer.outstanding.statement.wizard' - _description = 'Customer Outstanding Statement Wizard' - - company_id = fields.Many2one( - comodel_name='res.company', - default=lambda self: self.env.user.company_id, - string='Company' - ) - - def _export(self): - """Export to PDF.""" - data = self._prepare_statement() - return self.env.ref( - 'customer_statement' - '.action_print_customer_outstanding_statement').report_action( - self, data=data) diff --git a/customer_statement/wizard/statement_common.py b/customer_statement/wizard/statement_common.py deleted file mode 100644 index 79bbfcda..00000000 --- a/customer_statement/wizard/statement_common.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2018 Graeme Gellatly -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import api, fields, models, _ - - -class StatementCommon(models.AbstractModel): - - _name = 'statement.common' - - name = fields.Char() - company_id = fields.Many2one( - comodel_name='res.company', - default=lambda self: self.env.user.company_id, - string='Company' - ) - date_end = fields.Date(required=True, - default=fields.Date.context_today) - show_aging_buckets = fields.Selection( - [('auto', 'Auto'), ('always', 'Always'), ('never', 'Never')], - string='Include Aging Buckets', default=True) - number_partner_ids = fields.Integer( - default=lambda self: len(self._context['active_ids']) - ) - filter_partners_non_due = fields.Boolean( - string='Don\'t show partners with no due entries', default=True) - - @api.multi - def button_export_pdf(self): - self.ensure_one() - return self._export() - - def _prepare_statement(self): - self.ensure_one() - return { - 'date_start': self.date_start, - 'date_end': self.date_end, - 'company_id': self.company_id.id, - 'partner_ids': self._context['active_ids'], - 'show_aging_buckets': self.show_aging_buckets, - 'filter_non_due_partners': self.filter_partners_non_due, - 'account_type': self.account_type, - } - - def _export(self): - raise NotImplementedError diff --git a/partner_statement/README.rst b/partner_statement/README.rst new file mode 100644 index 00000000..fc0d16ef --- /dev/null +++ b/partner_statement/README.rst @@ -0,0 +1,132 @@ +================= +Partner Statement +================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--financial--reporting-lightgray.png?logo=github + :target: https://github.com/OCA/account-financial-reporting/tree/12.0/partner_statement + :alt: OCA/account-financial-reporting +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/account-financial-reporting-12-0/account-financial-reporting-12-0-partner_statement + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/91/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of Invoicing to support the printing of customer and vendor statements. +There are two types of statements, Activity and Outstanding. Aging details can be shown in the reports, expressed in aging buckets, +so the customer or vendor can review how much is open, due or overdue. + +The activity statement provides details of all activity on the partner receivables or payables +between two selected dates. This includes all invoices, refunds and payments. +Any outstanding balance dated prior to the chosen statement period will appear +as a forward balance at the top of the statement. The list is displayed in chronological +order and is split by currencies. + +The outstanding statement provides details of all outstanding partner receivables or payables +up to a particular date. This includes all unpaid invoices, unclaimed refunds and +outstanding payments. The list is displayed in chronological order and is split by currencies. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + + +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. +#. In *Application / Accounting & Finance*, select *Billing* or *Billing Manager* + +To configure this module, you need to: + +#. Go to *Configuration / Settings* +#. Under the *Followup Section* of *Accounting* option select either or both of OCA Activity or Outstanding Statement +#. Once selected, you may set default options for the reports. +#. Click *Save* + +Removing the wizard from menus follows the same process. + +Usage +===== + +To use this module, you need to: + +#. Go to Invoicing > Sales > Master Data > Customers or Invoicing > Purchases > Master Data > Vendors and select one or more +#. Press 'Action > Partner Activity Statement' or 'Action > Partner Outstanding Statement' respectively. +#. Indicate if you want to display receivables or payables, and if you want to display aging buckets and the aging type. +#. Optionally complete advanced options such as filtering non due or negative balance partners. + +Known issues / Roadmap +====================== + +* Email template. +* Expose reports (using defaults) to billing users while restricting the wizard to managers option. +* Concept of statement run - to start an async job to send out all statements. + +Changelog +========= + +12.0.1.0.0 (2018-11-08) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [BREAKING] Modules customer_activity_statement and customer_outstanding_statement merged to create partner_statement. +* [ADD] New features. + * Age by months or days + * Filter negative balances + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Eficent + +Contributors +~~~~~~~~~~~~ + +* Miquel Raïch +* Graeme Gellatly + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/account-financial-reporting `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/customer_outstanding_statement/__init__.py b/partner_statement/__init__.py similarity index 100% rename from customer_outstanding_statement/__init__.py rename to partner_statement/__init__.py diff --git a/customer_statement/__manifest__.py b/partner_statement/__manifest__.py similarity index 58% rename from customer_statement/__manifest__.py rename to partner_statement/__manifest__.py index c09e9927..f4b4299d 100644 --- a/customer_statement/__manifest__.py +++ b/partner_statement/__manifest__.py @@ -3,20 +3,24 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { - 'name': 'Partner Activity Statement', - 'version': '11.0.2.1.0', + 'name': 'Partner Statement', + 'version': '12.0.1.0.0', 'category': 'Accounting & Finance', 'summary': 'OCA Financial Reports', 'author': "Eficent, Odoo Community Association (OCA)", 'website': 'https://github.com/OCA/account-financial-reporting', 'license': 'AGPL-3', 'depends': [ - 'account_invoicing', + 'account', ], 'data': [ - 'views/account_payment_term.xml', - 'views/statement.xml', - 'wizard/customer_activity_statement_wizard.xml', + 'security/statement_security.xml', + 'views/activity_statement.xml', + 'views/outstanding_statement.xml', + 'views/assets.xml', + 'views/aging_buckets.xml', + 'views/res_config_settings.xml', + 'wizard/statement_wizard.xml', ], 'installable': True, 'application': False, diff --git a/customer_statement/i18n/ca.po b/partner_statement/i18n/ca.po similarity index 100% rename from customer_statement/i18n/ca.po rename to partner_statement/i18n/ca.po diff --git a/customer_statement/i18n/de.po b/partner_statement/i18n/de.po similarity index 100% rename from customer_statement/i18n/de.po rename to partner_statement/i18n/de.po diff --git a/customer_statement/i18n/es.po b/partner_statement/i18n/es.po similarity index 100% rename from customer_statement/i18n/es.po rename to partner_statement/i18n/es.po diff --git a/customer_statement/i18n/fr.po b/partner_statement/i18n/fr.po similarity index 100% rename from customer_statement/i18n/fr.po rename to partner_statement/i18n/fr.po diff --git a/customer_statement/i18n/hr_HR.po b/partner_statement/i18n/hr_HR.po similarity index 100% rename from customer_statement/i18n/hr_HR.po rename to partner_statement/i18n/hr_HR.po diff --git a/customer_statement/i18n/it.po b/partner_statement/i18n/it.po similarity index 100% rename from customer_statement/i18n/it.po rename to partner_statement/i18n/it.po diff --git a/customer_statement/i18n/nl.po b/partner_statement/i18n/nl.po similarity index 100% rename from customer_statement/i18n/nl.po rename to partner_statement/i18n/nl.po diff --git a/customer_statement/i18n/nl_NL.po b/partner_statement/i18n/nl_NL.po similarity index 100% rename from customer_statement/i18n/nl_NL.po rename to partner_statement/i18n/nl_NL.po diff --git a/customer_statement/i18n/customer_activity_statement.pot b/partner_statement/i18n/partner_statement.pot similarity index 100% rename from customer_statement/i18n/customer_activity_statement.pot rename to partner_statement/i18n/partner_statement.pot diff --git a/customer_statement/i18n/pt.po b/partner_statement/i18n/pt.po similarity index 100% rename from customer_statement/i18n/pt.po rename to partner_statement/i18n/pt.po diff --git a/customer_statement/i18n/ro.po b/partner_statement/i18n/ro.po similarity index 100% rename from customer_statement/i18n/ro.po rename to partner_statement/i18n/ro.po diff --git a/partner_statement/readme/CONFIGURE.rst b/partner_statement/readme/CONFIGURE.rst new file mode 100644 index 00000000..3242049d --- /dev/null +++ b/partner_statement/readme/CONFIGURE.rst @@ -0,0 +1,14 @@ + +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. +#. In *Application / Accounting & Finance*, select *Billing* or *Billing Manager* + +To configure this module, you need to: + +#. Go to *Configuration / Settings* +#. Under the *Followup Section* of *Accounting* option select either or both of OCA Activity or Outstanding Statement +#. Once selected, you may set default options for the reports. +#. Click *Save* + +Removing the wizard from menus follows the same process. diff --git a/partner_statement/readme/CONTRIBUTORS.rst b/partner_statement/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..1e2a70df --- /dev/null +++ b/partner_statement/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Miquel Raïch +* Graeme Gellatly diff --git a/partner_statement/readme/DESCRIPTION.rst b/partner_statement/readme/DESCRIPTION.rst new file mode 100644 index 00000000..169136b1 --- /dev/null +++ b/partner_statement/readme/DESCRIPTION.rst @@ -0,0 +1,13 @@ +This module extends the functionality of Invoicing to support the printing of customer and vendor statements. +There are two types of statements, Activity and Outstanding. Aging details can be shown in the reports, expressed in aging buckets, +so the customer or vendor can review how much is open, due or overdue. + +The activity statement provides details of all activity on the partner receivables or payables +between two selected dates. This includes all invoices, refunds and payments. +Any outstanding balance dated prior to the chosen statement period will appear +as a forward balance at the top of the statement. The list is displayed in chronological +order and is split by currencies. + +The outstanding statement provides details of all outstanding partner receivables or payables +up to a particular date. This includes all unpaid invoices, unclaimed refunds and +outstanding payments. The list is displayed in chronological order and is split by currencies. diff --git a/partner_statement/readme/HISTORY.rst b/partner_statement/readme/HISTORY.rst new file mode 100644 index 00000000..dee6c04a --- /dev/null +++ b/partner_statement/readme/HISTORY.rst @@ -0,0 +1,7 @@ +12.0.1.0.0 (2018-11-08) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [BREAKING] Modules customer_activity_statement and customer_outstanding_statement merged to create partner_statement. +* [ADD] New features. + * Age by months or days + * Filter negative balances diff --git a/partner_statement/readme/ROADMAP.rst b/partner_statement/readme/ROADMAP.rst new file mode 100644 index 00000000..6632eec0 --- /dev/null +++ b/partner_statement/readme/ROADMAP.rst @@ -0,0 +1,3 @@ +* Email template. +* Expose reports (using defaults) to billing users while restricting the wizard to managers option. +* Concept of statement run - to start an async job to send out all statements. diff --git a/partner_statement/readme/USAGE.rst b/partner_statement/readme/USAGE.rst new file mode 100644 index 00000000..0c0c0828 --- /dev/null +++ b/partner_statement/readme/USAGE.rst @@ -0,0 +1,6 @@ +To use this module, you need to: + +#. Go to Invoicing > Sales > Master Data > Customers or Invoicing > Purchases > Master Data > Vendors and select one or more +#. Press 'Action > Partner Activity Statement' or 'Action > Partner Outstanding Statement' respectively. +#. Indicate if you want to display receivables or payables, and if you want to display aging buckets and the aging type. +#. Optionally complete advanced options such as filtering non due or negative balance partners. diff --git a/partner_statement/report/__init__.py b/partner_statement/report/__init__.py new file mode 100644 index 00000000..d1df1e8a --- /dev/null +++ b/partner_statement/report/__init__.py @@ -0,0 +1,3 @@ +from . import report_statement_common +from . import activity_statement +from . import outstanding_statement diff --git a/partner_statement/report/activity_statement.py b/partner_statement/report/activity_statement.py new file mode 100644 index 00000000..7c627ef0 --- /dev/null +++ b/partner_statement/report/activity_statement.py @@ -0,0 +1,125 @@ +# Copyright 2018 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). + +from odoo import api, models +from collections import defaultdict + + +class ActivityStatement(models.AbstractModel): + """Model of Activity Statement""" + + _inherit = 'statement.common' + _name = 'report.partner_statement.activity_statement' + + def _initial_balance_sql_q1(self, partners, date_start, account_type): + return str(self._cr.mogrify(""" + SELECT l.partner_id, l.currency_id, l.company_id, + CASE WHEN l.currency_id is not null AND l.amount_currency > 0.0 + THEN sum(l.amount_currency) + ELSE sum(l.debit) + END as debit, + CASE WHEN l.currency_id is not null AND l.amount_currency < 0.0 + THEN sum(l.amount_currency * (-1)) + ELSE sum(l.credit) + END as credit + FROM account_move_line l + JOIN account_account_type at ON (at.id = l.user_type_id) + JOIN account_move m ON (l.move_id = m.id) + WHERE l.partner_id IN %(partners)s AND at.type = %(account_type)s + AND l.date < %(date_start)s AND not l.blocked + GROUP BY l.partner_id, l.currency_id, l.amount_currency, + l.company_id + """, locals()), "utf-8") + + def _initial_balance_sql_q2(self, company_id): + return str(self._cr.mogrify(""" + SELECT Q1.partner_id, debit-credit AS balance, + COALESCE(Q1.currency_id, c.currency_id) AS currency_id + FROM Q1 + JOIN res_company c ON (c.id = Q1.company_id) + WHERE c.id = %(company_id)s + """, locals()), "utf-8") + + def _get_account_initial_balance(self, company_id, partner_ids, + date_start, account_type): + balance_start = defaultdict(list) + partners = tuple(partner_ids) + # pylint: disable=E8103 + self.env.cr.execute("""WITH Q1 AS (%s), Q2 AS (%s) + SELECT partner_id, currency_id, balance + FROM Q2""" % (self._initial_balance_sql_q1(partners, date_start, + account_type), + self._initial_balance_sql_q2(company_id))) + for row in self.env.cr.dictfetchall(): + balance_start[row.pop('partner_id')].append(row) + return balance_start + + def _display_lines_sql_q1(self, partners, date_start, date_end, + account_type): + return str(self._cr.mogrify(""" + SELECT m.name AS move_id, l.partner_id, l.date, l.name, + l.ref, l.blocked, l.currency_id, l.company_id, + CASE WHEN (l.currency_id is not null AND l.amount_currency > 0.0) + THEN sum(l.amount_currency) + ELSE sum(l.debit) + END as debit, + CASE WHEN (l.currency_id is not null AND l.amount_currency < 0.0) + THEN sum(l.amount_currency * (-1)) + ELSE sum(l.credit) + END as credit, + CASE WHEN l.date_maturity is null + THEN l.date + ELSE l.date_maturity + END as date_maturity + FROM account_move_line l + JOIN account_account_type at ON (at.id = l.user_type_id) + JOIN account_move m ON (l.move_id = m.id) + WHERE l.partner_id IN %(partners)s + AND at.type = %(account_type)s + AND %(date_start)s <= l.date + AND l.date <= %(date_end)s + GROUP BY l.partner_id, m.name, l.date, l.date_maturity, l.name, + l.ref, l.blocked, l.currency_id, + l.amount_currency, l.company_id + """, locals()), "utf-8") + + def _display_lines_sql_q2(self, company_id): + return str(self._cr.mogrify(""" + SELECT Q1.partner_id, move_id, date, date_maturity, Q1.name, ref, + debit, credit, debit-credit as amount, blocked, + COALESCE(Q1.currency_id, c.currency_id) AS currency_id + FROM Q1 + JOIN res_company c ON (c.id = Q1.company_id) + WHERE c.id = %(company_id)s + """, locals()), "utf-8") + + def _get_account_display_lines(self, company_id, partner_ids, date_start, + date_end, account_type): + res = dict(map(lambda x: (x, []), partner_ids)) + partners = tuple(partner_ids) + + # pylint: disable=E8103 + self.env.cr.execute(""" + WITH Q1 AS (%s), + Q2 AS (%s) + SELECT partner_id, move_id, date, date_maturity, name, ref, debit, + credit, amount, blocked, currency_id + FROM Q2 + ORDER BY date, date_maturity, move_id""" % ( + self._display_lines_sql_q1(partners, date_start, date_end, + account_type), + self._display_lines_sql_q2(company_id))) + for row in self.env.cr.dictfetchall(): + res[row.pop('partner_id')].append(row) + return res + + @api.multi + def _get_report_values(self, docids, data): + if not data: + wiz = self.env["activity.statement.wizard"].with_context( + active_ids=docids, model="res.partner" + ) + data = wiz.create({})._prepare_statement() + data['amount_field'] = 'amount' + return super()._get_report_values(docids, data) diff --git a/partner_statement/report/outstanding_statement.py b/partner_statement/report/outstanding_statement.py new file mode 100644 index 00000000..9c6fab6d --- /dev/null +++ b/partner_statement/report/outstanding_statement.py @@ -0,0 +1,150 @@ +# Copyright 2018 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). + +from odoo import api, models + + +class OutstandingStatement(models.AbstractModel): + """Model of Outstanding Statement""" + + _inherit = 'statement.common' + _name = 'report.partner_statement.outstanding_statement' + + def _display_lines_sql_q0(self, date_end): + return str( + self._cr.mogrify(""" + SELECT l1.id, + CASE WHEN l1.reconciled = TRUE and l1.balance > 0.0 + THEN max(pd.max_date) + WHEN l1.reconciled = TRUE and l1.balance < 0.0 + THEN max(pc.max_date) + ELSE null + END as reconciled_date + FROM account_move_line l1 + LEFT JOIN (SELECT pr.* + FROM account_partial_reconcile pr + INNER JOIN account_move_line l2 + ON pr.credit_move_id = l2.id + WHERE l2.date <= %(date_end)s + ) as pd ON pd.debit_move_id = l1.id + LEFT JOIN (SELECT pr.* + FROM account_partial_reconcile pr + INNER JOIN account_move_line l2 + ON pr.debit_move_id = l2.id + WHERE l2.date <= %(date_end)s + ) as pc ON pc.credit_move_id = l1.id + GROUP BY l1.id + """, locals() + ), + "utf-8" + ) + + def _display_lines_sql_q1(self, partners, date_end, account_type): + partners = tuple(partners) + return str(self._cr.mogrify(""" + SELECT m.name AS move_id, l.partner_id, l.date, l.name, + l.ref, l.blocked, l.currency_id, l.company_id, + CASE WHEN (l.currency_id is not null AND l.amount_currency > 0.0) + THEN avg(l.amount_currency) + ELSE avg(l.debit) + END as debit, + CASE WHEN (l.currency_id is not null AND l.amount_currency < 0.0) + THEN avg(l.amount_currency * (-1)) + ELSE avg(l.credit) + END as credit, + CASE WHEN l.balance > 0.0 + THEN l.balance - sum(coalesce(pd.amount, 0.0)) + ELSE l.balance + sum(coalesce(pc.amount, 0.0)) + END AS open_amount, + CASE WHEN l.balance > 0.0 + THEN l.amount_currency - sum(coalesce(pd.amount_currency, 0.0)) + ELSE l.amount_currency + sum(coalesce(pc.amount_currency, 0.0)) + END AS open_amount_currency, + CASE WHEN l.date_maturity is null + THEN l.date + ELSE l.date_maturity + END as date_maturity + FROM account_move_line l + JOIN account_account_type at ON (at.id = l.user_type_id) + JOIN account_move m ON (l.move_id = m.id) + LEFT JOIN Q0 ON Q0.id = l.id + LEFT JOIN (SELECT pr.* + FROM account_partial_reconcile pr + INNER JOIN account_move_line l2 + ON pr.credit_move_id = l2.id + WHERE l2.date <= %(date_end)s + ) as pd ON pd.debit_move_id = l.id + LEFT JOIN (SELECT pr.* + FROM account_partial_reconcile pr + INNER JOIN account_move_line l2 + ON pr.debit_move_id = l2.id + WHERE l2.date <= %(date_end)s + ) as pc ON pc.credit_move_id = l.id + WHERE l.partner_id IN %(partners)s AND at.type = %(account_type)s + AND (Q0.reconciled_date is null or + Q0.reconciled_date > %(date_end)s) + AND l.date <= %(date_end)s + GROUP BY l.partner_id, m.name, l.date, l.date_maturity, l.name, + l.ref, l.blocked, l.currency_id, + l.balance, l.amount_currency, l.company_id + """, locals()), "utf-8" + ) + + def _display_lines_sql_q2(self): + return str( + self._cr.mogrify(""" + SELECT partner_id, currency_id, move_id, date, date_maturity, + debit, credit, name, ref, blocked, company_id, + CASE WHEN currency_id is not null + THEN open_amount_currency + ELSE open_amount + END as open_amount + FROM Q1 + """, locals() + ), + "utf-8" + ) + + def _display_lines_sql_q3(self, company_id): + return str(self._cr.mogrify(""" + SELECT Q2.partner_id, move_id, date, date_maturity, Q2.name, ref, + debit, credit, debit-credit AS amount, blocked, + COALESCE(Q2.currency_id, c.currency_id) AS currency_id, open_amount + FROM Q2 + JOIN res_company c ON (c.id = Q2.company_id) + WHERE c.id = %(company_id)s + """, locals()), "utf-8" + ) + + def _get_account_display_lines(self, company_id, partner_ids, date_start, + date_end, account_type): + res = dict(map(lambda x: (x, []), partner_ids)) + partners = tuple(partner_ids) + # pylint: disable=E8103 + self.env.cr.execute(""" + WITH Q0 as (%s), + Q1 AS (%s), + Q2 AS (%s), + Q3 AS (%s) + SELECT partner_id, currency_id, move_id, date, date_maturity, debit, + credit, amount, open_amount, name, ref, blocked + FROM Q3 + ORDER BY date, date_maturity, move_id""" % ( + self._display_lines_sql_q0(date_end), + self._display_lines_sql_q1(partners, date_end, account_type), + self._display_lines_sql_q2(), + self._display_lines_sql_q3(company_id))) + for row in self.env.cr.dictfetchall(): + res[row.pop('partner_id')].append(row) + return res + + @api.multi + def _get_report_values(self, docids, data): + if not data: + wiz = self.env["outstanding.statement.wizard"].with_context( + active_ids=docids, model="res.partner" + ) + data = wiz.create({})._prepare_statement() + data['amount_field'] = 'open_amount' + return super()._get_report_values(docids, data) diff --git a/partner_statement/report/report_statement_common.py b/partner_statement/report/report_statement_common.py new file mode 100644 index 00000000..09889a6e --- /dev/null +++ b/partner_statement/report/report_statement_common.py @@ -0,0 +1,434 @@ +# Copyright 2018 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). + +from datetime import datetime, timedelta +from odoo.tools.misc import DEFAULT_SERVER_DATE_FORMAT +from odoo import api, fields, models, _ + + +class ReportStatementCommon(models.AbstractModel): + """Abstract Report Statement for use in other models""" + + _name = 'statement.common' + _description = 'Statement Reports Common' + + def _format_date_to_partner_lang( + self, + date, + date_format=DEFAULT_SERVER_DATE_FORMAT + ): + if isinstance(date, str): + date = datetime.strptime(date, DEFAULT_SERVER_DATE_FORMAT) + return date.strftime(date_format) if date else '' + + def _get_account_display_lines(self, company_id, partner_ids, date_start, + date_end, account_type): + raise NotImplementedError + + def _get_account_initial_balance(self, company_id, partner_ids, + date_start, account_type): + return {} + + def _show_buckets_sql_q0(self, date_end): + return str(self._cr.mogrify(""" + SELECT l1.id, + CASE WHEN l1.reconciled = TRUE and l1.balance > 0.0 + THEN max(pd.max_date) + WHEN l1.reconciled = TRUE and l1.balance < 0.0 + THEN max(pc.max_date) + ELSE null + END as reconciled_date + FROM account_move_line l1 + LEFT JOIN (SELECT pr.* + FROM account_partial_reconcile pr + INNER JOIN account_move_line l2 + ON pr.credit_move_id = l2.id + WHERE l2.date <= %(date_end)s + ) as pd ON pd.debit_move_id = l1.id + LEFT JOIN (SELECT pr.* + FROM account_partial_reconcile pr + INNER JOIN account_move_line l2 + ON pr.debit_move_id = l2.id + WHERE l2.date <= %(date_end)s + ) as pc ON pc.credit_move_id = l1.id + GROUP BY l1.id + """, locals()), "utf-8") + + def _show_buckets_sql_q1(self, partners, date_end, account_type): + return str(self._cr.mogrify(""" + SELECT l.partner_id, l.currency_id, l.company_id, l.move_id, + CASE WHEN l.balance > 0.0 + THEN l.balance - sum(coalesce(pd.amount, 0.0)) + ELSE l.balance + sum(coalesce(pc.amount, 0.0)) + END AS open_due, + CASE WHEN l.balance > 0.0 + THEN l.amount_currency - sum(coalesce(pd.amount_currency, 0.0)) + ELSE l.amount_currency + sum(coalesce(pc.amount_currency, 0.0)) + END AS open_due_currency, + CASE WHEN l.date_maturity is null + THEN l.date + ELSE l.date_maturity + END as date_maturity + FROM account_move_line l + JOIN account_account_type at ON (at.id = l.user_type_id) + JOIN account_move m ON (l.move_id = m.id) + LEFT JOIN Q0 ON Q0.id = l.id + LEFT JOIN (SELECT pr.* + FROM account_partial_reconcile pr + INNER JOIN account_move_line l2 + ON pr.credit_move_id = l2.id + WHERE l2.date <= %(date_end)s + ) as pd ON pd.debit_move_id = l.id + LEFT JOIN (SELECT pr.* + FROM account_partial_reconcile pr + INNER JOIN account_move_line l2 + ON pr.debit_move_id = l2.id + WHERE l2.date <= %(date_end)s + ) as pc ON pc.credit_move_id = l.id + WHERE l.partner_id IN %(partners)s AND at.type = %(account_type)s + AND (Q0.reconciled_date is null or + Q0.reconciled_date > %(date_end)s) + AND l.date <= %(date_end)s AND not l.blocked + GROUP BY l.partner_id, l.currency_id, l.date, l.date_maturity, + l.amount_currency, l.balance, l.move_id, + l.company_id + """, locals()), "utf-8") + + def _show_buckets_sql_q2(self, date_end, minus_30, minus_60, minus_90, + minus_120): + return str(self._cr.mogrify(""" + SELECT partner_id, currency_id, date_maturity, open_due, + open_due_currency, move_id, company_id, + CASE + WHEN %(date_end)s <= date_maturity AND currency_id is null + THEN open_due + WHEN %(date_end)s <= date_maturity AND currency_id is not null + THEN open_due_currency + ELSE 0.0 + END as current, + CASE + WHEN %(minus_30)s < date_maturity + AND date_maturity < %(date_end)s + AND currency_id is null + THEN open_due + WHEN %(minus_30)s < date_maturity + AND date_maturity < %(date_end)s + AND currency_id is not null + THEN open_due_currency + ELSE 0.0 + END as b_1_30, + CASE + WHEN %(minus_60)s < date_maturity + AND date_maturity <= %(minus_30)s + AND currency_id is null + THEN open_due + WHEN %(minus_60)s < date_maturity + AND date_maturity <= %(minus_30)s + AND currency_id is not null + THEN open_due_currency + ELSE 0.0 + END as b_30_60, + CASE + WHEN %(minus_90)s < date_maturity + AND date_maturity <= %(minus_60)s + AND currency_id is null + THEN open_due + WHEN %(minus_90)s < date_maturity + AND date_maturity <= %(minus_60)s + AND currency_id is not null + THEN open_due_currency + ELSE 0.0 + END as b_60_90, + CASE + WHEN %(minus_120)s < date_maturity + AND date_maturity <= %(minus_90)s + AND currency_id is null + THEN open_due + WHEN %(minus_120)s < date_maturity + AND date_maturity <= %(minus_90)s + AND currency_id is not null + THEN open_due_currency + ELSE 0.0 + END as b_90_120, + CASE + WHEN date_maturity <= %(minus_120)s + AND currency_id is null + THEN open_due + WHEN date_maturity <= %(minus_120)s + AND currency_id is not null + THEN open_due_currency + ELSE 0.0 + END as b_over_120 + FROM Q1 + GROUP BY partner_id, currency_id, date_maturity, open_due, + open_due_currency, move_id, company_id + """, locals()), "utf-8") + + def _show_buckets_sql_q3(self, company_id): + return str(self._cr.mogrify(""" + SELECT Q2.partner_id, current, b_1_30, b_30_60, b_60_90, b_90_120, + b_over_120, + COALESCE(Q2.currency_id, c.currency_id) AS currency_id + FROM Q2 + JOIN res_company c ON (c.id = Q2.company_id) + WHERE c.id = %(company_id)s + """, locals()), "utf-8") + + def _show_buckets_sql_q4(self): + return """ + SELECT partner_id, currency_id, sum(current) as current, + sum(b_1_30) as b_1_30, + sum(b_30_60) as b_30_60, + sum(b_60_90) as b_60_90, + sum(b_90_120) as b_90_120, + sum(b_over_120) as b_over_120 + FROM Q3 + GROUP BY partner_id, currency_id + """ + + def _get_bucket_dates(self, date_end, aging_type): + return getattr( + self, '_get_bucket_dates_%s' % aging_type, + self._get_bucket_dates_days + )(date_end) + + def _get_bucket_dates_days(self, date_end): + return { + 'date_end': date_end, + 'minus_30': date_end - timedelta(days=30), + 'minus_60': date_end - timedelta(days=60), + 'minus_90': date_end - timedelta(days=90), + 'minus_120': date_end - timedelta(days=120), + } + + def _get_bucket_dates_months(self, date_end): + res = {} + d = date_end + for k in ( + "date_end", + "minus_30", + "minus_60", + "minus_90", + "minus_120", + ): + res[k] = d + d = d.replace(day=1) - timedelta(days=1) + return res + + def _get_account_show_buckets(self, company_id, partner_ids, date_end, + account_type, aging_type): + buckets = dict(map(lambda x: (x, []), partner_ids)) + partners = tuple(partner_ids) + full_dates = self._get_bucket_dates(date_end, aging_type) + # pylint: disable=E8103 + # All input queries are properly escaped - false positive + self.env.cr.execute(""" + WITH Q0 AS (%s), + Q1 AS (%s), + Q2 AS (%s), + Q3 AS (%s), + Q4 AS (%s) + SELECT partner_id, currency_id, current, b_1_30, b_30_60, b_60_90, + b_90_120, b_over_120, + current+b_1_30+b_30_60+b_60_90+b_90_120+b_over_120 + AS balance + FROM Q4 + GROUP BY partner_id, currency_id, current, b_1_30, b_30_60, + b_60_90, b_90_120, b_over_120""" % ( + self._show_buckets_sql_q0(date_end), + self._show_buckets_sql_q1(partners, date_end, account_type), + self._show_buckets_sql_q2( + full_dates['date_end'], + full_dates['minus_30'], + full_dates['minus_60'], + full_dates['minus_90'], + full_dates['minus_120']), + self._show_buckets_sql_q3(company_id), + self._show_buckets_sql_q4())) + for row in self.env.cr.dictfetchall(): + buckets[row.pop('partner_id')].append(row) + return buckets + + def _get_bucket_labels(self, date_end, aging_type): + return getattr( + self, '_get_bucket_labels_%s' % aging_type, + self._get_bucket_dates_days + )(date_end) + + def _get_bucket_labels_days(self, date_end): + return [ + _('Current'), + _('1 - 30 Days'), + _('31 - 60 Days'), + _('61 - 90 Days'), + _('91 - 120 Days'), + _('121 Days +'), + _('Total'), + ] + + def _get_bucket_labels_months(self, date_end): + return [ + _('Current'), + _('1 Month'), + _('2 Months'), + _('3 Months'), + _('4 Months'), + _('Older'), + _('Total'), + ] + + def _get_line_currency_defaults(self, currency_id, currencies, + balance_forward): + if currency_id not in currencies: + # This will only happen if currency is inactive + currencies[currency_id] = ( + self.env['res.currency'].browse(currency_id) + ) + return ( + { + 'lines': [], + 'buckets': [], + 'balance_forward': balance_forward, + 'amount_due': balance_forward, + }, + currencies + ) + + @api.multi + def _get_report_values(self, docids, data): + """ + @return: returns a dict of parameters to pass to qweb report. + the most important pair is {'data': res} which contains all + the data for each partner. It is structured like: + {partner_id: { + 'start': date string, + 'end': date_string, + 'today': date_string + 'currencies': { + currency_id: { + 'lines': [{'date': date string, ...}, ...], + 'balance_forward': float, + 'amount_due': float, + 'buckets': { + 'p1': float, 'p2': ... + } + } + } + } + """ + company_id = data['company_id'] + partner_ids = data['partner_ids'] + date_start = data.get('date_start') + if date_start and isinstance(date_start, str): + date_start = datetime.strptime( + date_start, DEFAULT_SERVER_DATE_FORMAT + ).date() + date_end = data['date_end'] + if isinstance(date_end, str): + date_end = datetime.strptime( + date_end, DEFAULT_SERVER_DATE_FORMAT + ).date() + account_type = data['account_type'] + aging_type = data['aging_type'] + today = fields.Date.today() + amount_field = data.get('amount_field', 'amount') + + # There should be relatively few of these, so to speed performance + # we cache them + self._cr.execute(""" + SELECT p.id, l.date_format + FROM res_partner p LEFT JOIN res_lang l ON p.lang=l.code + WHERE p.id IN %(partner_ids)s + """, {"partner_ids": tuple(partner_ids)}) + date_formats = {r[0]: r[1] for r in self._cr.fetchall()} + currencies = {x.id: x for x in self.env['res.currency'].search([])} + + res = {} + # get base data + lines = self._get_account_display_lines( + company_id, partner_ids, date_start, date_end, account_type) + balances_forward = self._get_account_initial_balance( + company_id, partner_ids, date_start, account_type) + + if data['show_aging_buckets']: + buckets = self._get_account_show_buckets( + company_id, partner_ids, date_end, account_type, aging_type) + bucket_labels = self._get_bucket_labels(date_end, aging_type) + else: + bucket_labels = {} + + # organise and format for report + format_date = self._format_date_to_partner_lang + partners_to_remove = set() + for partner_id in partner_ids: + res[partner_id] = { + 'today': format_date(today, date_formats[partner_id]), + 'start': format_date(date_start, date_formats[partner_id]), + 'end': format_date(date_end, date_formats[partner_id]), + 'currencies': {}, + } + currency_dict = res[partner_id]['currencies'] + + for line in balances_forward.get(partner_id, []): + currency_dict[line['currency_id']], currencies = ( + self._get_line_currency_defaults( + line['currency_id'], currencies, line['balance']) + ) + + for line in lines[partner_id]: + if line['currency_id'] not in currency_dict: + currency_dict[line['currency_id']], currencies = ( + self._get_line_currency_defaults( + line['currency_id'], currencies, 0.0) + ) + line_currency = currency_dict[line['currency_id']] + if not line['blocked']: + line_currency['amount_due'] += line[amount_field] + line['balance'] = line_currency['amount_due'] + line['date'] = format_date( + line['date'], date_formats[partner_id] + ) + line['date_maturity'] = format_date( + line['date_maturity'], date_formats[partner_id] + ) + line_currency['lines'].append(line) + + if data['show_aging_buckets']: + for line in buckets[partner_id]: + if line['currency_id'] not in currency_dict: + currency_dict[line['currency_id']], currencies = ( + self._get_line_currency_defaults( + line['currency_id'], currencies, 0.0) + ) + line_currency = currency_dict[line['currency_id']] + line_currency['buckets'] = line + + if len(partner_ids) > 1: + values = currency_dict.values() + if not any( + [v['lines'] or v['balance_forward'] for v in values] + ): + if data["filter_non_due_partners"]: + partners_to_remove.add(partner_id) + continue + else: + res[partner_id]['no_entries'] = True + if data["filter_negative_balances"]: + if not all([v['amount_due'] >= 0.0 for v in values]): + partners_to_remove.add(partner_id) + + for partner in partners_to_remove: + del res[partner] + partner_ids.remove(partner) + + return { + 'doc_ids': partner_ids, + 'doc_model': 'res.partner', + 'docs': self.env['res.partner'].browse(partner_ids), + 'data': res, + 'company': self.env['res.company'].browse(company_id), + 'Currencies': currencies, + 'account_type': account_type, + 'bucket_labels': bucket_labels, + } diff --git a/partner_statement/security/statement_security.xml b/partner_statement/security/statement_security.xml new file mode 100644 index 00000000..b04edfcf --- /dev/null +++ b/partner_statement/security/statement_security.xml @@ -0,0 +1,14 @@ + + + + + Use activity statements + + + + + Use outstanding statements + + + + diff --git a/customer_outstanding_statement/static/description/icon.png b/partner_statement/static/description/icon.png similarity index 100% rename from customer_outstanding_statement/static/description/icon.png rename to partner_statement/static/description/icon.png diff --git a/customer_statement/static/src/less/layout_statement.less b/partner_statement/static/src/scss/layout_statement.scss similarity index 80% rename from customer_statement/static/src/less/layout_statement.less rename to partner_statement/static/src/scss/layout_statement.scss index 4a600646..80cd8edc 100644 --- a/customer_statement/static/src/less/layout_statement.less +++ b/partner_statement/static/src/scss/layout_statement.scss @@ -15,8 +15,8 @@ } .statement-blocked { - background-color: @gray-lighter-darker !important; + background-color: $gray-500 !important; td:last-child { - background-color: @gray-lighter-darker !important; + background-color: $gray-500 !important; } } diff --git a/partner_statement/tests/__init__.py b/partner_statement/tests/__init__.py new file mode 100644 index 00000000..6395f9e7 --- /dev/null +++ b/partner_statement/tests/__init__.py @@ -0,0 +1,3 @@ +from . import test_activity_statement +from . import test_outstanding_statement +from . import test_res_config_settings diff --git a/partner_statement/tests/test_activity_statement.py b/partner_statement/tests/test_activity_statement.py new file mode 100644 index 00000000..56813906 --- /dev/null +++ b/partner_statement/tests/test_activity_statement.py @@ -0,0 +1,111 @@ +# Copyright 2018 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). + +from datetime import date +from odoo.tests.common import TransactionCase +from odoo import fields + + +class TestActivityStatement(TransactionCase): + """ + Tests for Activity Statement. + """ + def setUp(self): + super().setUp() + + self.res_users_model = self.env['res.users'] + self.company = self.env.ref('base.main_company') + self.partner1 = self.env.ref('base.res_partner_1') + self.partner2 = self.env.ref('base.res_partner_2') + self.g_account_user = self.env.ref('account.group_account_user') + + self.user = self._create_user('user_1', [self.g_account_user], + self.company).id + + self.statement_model = \ + self.env['report.partner_statement.activity_statement'] + self.wiz = self.env['activity.statement.wizard'] + self.report_name = 'partner_statement.activity_statement' + self.report_title = 'Activity Statement' + self.today = fields.Date.context_today(self.wiz) + + def _create_user(self, login, groups, company): + group_ids = [group.id for group in groups] + user = self.res_users_model.create({ + 'name': login, + 'login': login, + 'password': 'demo', + 'email': 'example@yourcompany.com', + 'company_id': company.id, + 'company_ids': [(4, company.id)], + 'groups_id': [(6, 0, group_ids)] + }) + return user + + def test_customer_activity_statement(self): + + wiz_id = self.wiz.with_context( + active_ids=[self.partner1.id, self.partner2.id], + ).create({}) + + wiz_id.aging_type = 'months' + wiz_id.show_aging_buckets = False + + statement = wiz_id.button_export_pdf() + + self.assertDictContainsSubset( + { + 'type': 'ir.actions.report', + 'report_name': self.report_name, + 'report_type': 'qweb-pdf', + }, + statement, + 'There was an error and the PDF report was not generated.' + ) + + data = wiz_id._prepare_statement() + docids = data['partner_ids'] + report = self.statement_model._get_report_values(docids, data) + self.assertIsInstance(report, dict, + "There was an error while compiling the report.") + self.assertIn("bucket_labels", report, + "There was an error while compiling the report.") + + def test_customer_activity_report_no_wizard(self): + docids = [self.partner1.id, self.partner2.id] + report = self.statement_model._get_report_values(docids, False) + self.assertIsInstance(report, dict, + "There was an error while compiling the report.") + self.assertIn("bucket_labels", report, + "There was an error while compiling the report.") + + def test_date_formatting(self): + date_fmt = '%d/%m/%Y' + test_date = date(2018, 9, 30) + res = self.statement_model._format_date_to_partner_lang( + test_date, date_fmt + ) + self.assertEqual(res, '30/09/2018') + + test_date_string = '2018-09-30' + res = self.statement_model._format_date_to_partner_lang( + test_date_string, date_fmt + ) + self.assertEqual(res, '30/09/2018') + + def test_onchange_aging_type(self): + """Test that partner data is filled accodingly""" + wiz_id = self.wiz.with_context( + active_ids=[self.partner1.id, self.partner2.id], + ).new() + wiz_id.aging_type = 'months' + wiz_id.onchange_aging_type() + self.assertEqual(wiz_id.date_end.month, wiz_id.date_start.month) + self.assertTrue(wiz_id.date_end.day > wiz_id.date_start.day) + self.assertTrue(wiz_id.date_end < self.today) + + wiz_id.aging_type = 'days' + wiz_id.onchange_aging_type() + self.assertEqual((wiz_id.date_end - wiz_id.date_start).days, 30) + self.assertTrue(wiz_id.date_end == self.today) diff --git a/customer_outstanding_statement/tests/test_customer_outstanding_statement.py b/partner_statement/tests/test_outstanding_statement.py similarity index 66% rename from customer_outstanding_statement/tests/test_customer_outstanding_statement.py rename to partner_statement/tests/test_outstanding_statement.py index e1fd2786..9d24ba19 100644 --- a/customer_outstanding_statement/tests/test_customer_outstanding_statement.py +++ b/partner_statement/tests/test_outstanding_statement.py @@ -5,12 +5,12 @@ from odoo.tests.common import TransactionCase -class TestCustomerOutstandingStatement(TransactionCase): +class TestOutstandingStatement(TransactionCase): """ - Tests for Customer Outstanding Statement. + Tests for Outstanding Statement. """ def setUp(self): - super(TestCustomerOutstandingStatement, self).setUp() + super().setUp() self.res_users_model = self.env['res.users'] self.company = self.env.ref('base.main_company') @@ -22,10 +22,10 @@ class TestCustomerOutstandingStatement(TransactionCase): self.company).id self.statement_model = \ - self.env['report.customer_outstanding_statement.statement'] - self.wiz = self.env['customer.outstanding.statement.wizard'] - self.report_name = 'customer_outstanding_statement.statement' - self.report_title = 'Customer Outstanding Statement' + self.env['report.partner_statement.outstanding_statement'] + self.wiz = self.env['outstanding.statement.wizard'] + self.report_name = 'partner_statement.outstanding_statement' + self.report_title = 'Outstanding Statement' def _create_user(self, login, groups, company): group_ids = [group.id for group in groups] @@ -45,6 +45,7 @@ class TestCustomerOutstandingStatement(TransactionCase): wiz_id = self.wiz.with_context( active_ids=[self.partner1.id, self.partner2.id], ).create({}) + wiz_id.aging_type = 'months' statement = wiz_id.button_export_pdf() @@ -58,11 +59,19 @@ class TestCustomerOutstandingStatement(TransactionCase): 'There was an error and the PDF report was not generated.' ) - data = wiz_id._prepare_outstanding_statement() + data = wiz_id._prepare_statement() docids = data['partner_ids'] - report = self.statement_model.get_report_values(docids, data) + report = self.statement_model._get_report_values(docids, data) self.assertIsInstance(report, dict, "There was an error while compiling the report.") - self.assertIn("Show_Buckets", report, + self.assertIn("bucket_labels", report, + "There was an error while compiling the report.") + + def test_customer_outstanding_report_no_wizard(self): + docids = [self.partner1.id] + report = self.statement_model._get_report_values(docids, False) + self.assertIsInstance(report, dict, + "There was an error while compiling the report.") + self.assertIn("bucket_labels", report, "There was an error while compiling the report.") diff --git a/partner_statement/tests/test_res_config_settings.py b/partner_statement/tests/test_res_config_settings.py new file mode 100644 index 00000000..c9a1f317 --- /dev/null +++ b/partner_statement/tests/test_res_config_settings.py @@ -0,0 +1,36 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo.tests.common import TransactionCase + + +class TestResConfigSettings(TransactionCase): + + def setUp(self): + super().setUp() + self.config = self.env['res.config.settings'] + self.cr.execute( + "SELECT uid FROM res_groups_users_rel " + "WHERE gid IN (SELECT res_id FROM ir_model_data " + " WHERE module='account' AND name='group_account_invoice') " + "ORDER BY uid DESC LIMIT 1" + ) + self.account_user = self.cr.fetchone()[0] + self.user_obj = self.env['res.users'].sudo(self.account_user) + + def test_groups(self): + conf = self.config.create({ + "default_aging_type": "months", + "group_activity_statement": True, + "group_outstanding_statement": False, + }) + conf.set_values() + self.assertFalse(self.user_obj._has_group( + 'partner_statement.group_outstanding_statement') + ) + self.assertTrue(self.user_obj._has_group( + 'partner_statement.group_activity_statement') + ) + res = self.env['ir.default'].get( + 'activity.statement.wizard', 'aging_type' + ) + self.assertEquals(res, 'months') diff --git a/partner_statement/views/activity_statement.xml b/partner_statement/views/activity_statement.xml new file mode 100644 index 00000000..07d8e377 --- /dev/null +++ b/partner_statement/views/activity_statement.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + diff --git a/partner_statement/views/aging_buckets.xml b/partner_statement/views/aging_buckets.xml new file mode 100644 index 00000000..ce8c2687 --- /dev/null +++ b/partner_statement/views/aging_buckets.xml @@ -0,0 +1,49 @@ + + + + + + + diff --git a/partner_statement/views/assets.xml b/partner_statement/views/assets.xml new file mode 100644 index 00000000..118d979e --- /dev/null +++ b/partner_statement/views/assets.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/partner_statement/views/outstanding_statement.xml b/partner_statement/views/outstanding_statement.xml new file mode 100644 index 00000000..bd6a28d2 --- /dev/null +++ b/partner_statement/views/outstanding_statement.xml @@ -0,0 +1,126 @@ + + + + + + + + + + diff --git a/partner_statement/views/res_config_settings.xml b/partner_statement/views/res_config_settings.xml new file mode 100644 index 00000000..60794fd0 --- /dev/null +++ b/partner_statement/views/res_config_settings.xml @@ -0,0 +1,59 @@ + + + + + res.config.settings.view.form (in partner_statement) + res.config.settings + + + + +
+
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+ +
diff --git a/partner_statement/wizard/__init__.py b/partner_statement/wizard/__init__.py new file mode 100644 index 00000000..984e2b53 --- /dev/null +++ b/partner_statement/wizard/__init__.py @@ -0,0 +1,4 @@ +from . import statement_common +from . import activity_statement_wizard +from . import outstanding_statement_wizard +from . import res_config_settings diff --git a/partner_statement/wizard/activity_statement_wizard.py b/partner_statement/wizard/activity_statement_wizard.py new file mode 100644 index 00000000..830d82e7 --- /dev/null +++ b/partner_statement/wizard/activity_statement_wizard.py @@ -0,0 +1,44 @@ +# Copyright 2018 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). + +from dateutil.relativedelta import relativedelta +from odoo import api, fields, models + + +class ActivityStatementWizard(models.TransientModel): + """Activity Statement wizard.""" + + _inherit = 'statement.common.wizard' + _name = 'activity.statement.wizard' + _description = 'Activity Statement Wizard' + + @api.model + def _get_date_start(self): + return ( + fields.Date.context_today(self).replace(day=1) - + relativedelta(days=1) + ).replace(day=1) + + date_start = fields.Date(required=True, default=_get_date_start) + + @api.onchange('aging_type') + def onchange_aging_type(self): + super().onchange_aging_type() + if self.aging_type == 'months': + self.date_start = self.date_end.replace(day=1) + else: + self.date_start = self.date_end - relativedelta(days=30) + + def _export(self): + """Export to PDF.""" + data = self._prepare_statement() + return self.env.ref( + 'partner_statement' + '.action_print_activity_statement').report_action( + self, data=data) + + def _prepare_statement(self): + res = super()._prepare_statement() + res.update({'date_start': self.date_start}) + return res diff --git a/partner_statement/wizard/outstanding_statement_wizard.py b/partner_statement/wizard/outstanding_statement_wizard.py new file mode 100644 index 00000000..92b76ce8 --- /dev/null +++ b/partner_statement/wizard/outstanding_statement_wizard.py @@ -0,0 +1,21 @@ +# Copyright 2018 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). + +from odoo import models + + +class OutstandingStatementWizard(models.TransientModel): + """Outstanding Statement wizard.""" + + _name = 'outstanding.statement.wizard' + _inherit = 'statement.common.wizard' + _description = 'Outstanding Statement Wizard' + + def _export(self): + """Export to PDF.""" + data = self._prepare_statement() + return self.env.ref( + 'partner_statement' + '.action_print_outstanding_statement').report_action( + self, data=data) diff --git a/partner_statement/wizard/res_config_settings.py b/partner_statement/wizard/res_config_settings.py new file mode 100644 index 00000000..fe261503 --- /dev/null +++ b/partner_statement/wizard/res_config_settings.py @@ -0,0 +1,57 @@ +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + group_activity_statement = fields.Boolean( + "Enable OCA Activity Statements", + group='account.group_account_invoice', + implied_group='partner_statement.group_activity_statement', + ) + + default_aging_type = fields.Selection( + [("days", "Age by Days"), ("months", "Age by Months")], + string="Aging Method", + required=True, + default_model="statement.common.wizard", + ) + + default_show_aging_buckets = fields.Boolean( + string="Show Aging Buckets", + default_model="statement.common.wizard", + ) + + default_filter_partners_non_due = fields.Boolean( + string='Exclude partners with no due entries', + default_model="statement.common.wizard", + ) + + default_filter_negative_balances = fields.Boolean( + "Exclude Negative Balances", + default_model="statement.common.wizard", + ) + + group_outstanding_statement = fields.Boolean( + "Enable OCA Outstanding Statements", + group='account.group_account_invoice', + implied_group='partner_statement.group_outstanding_statement', + ) + + def set_values(self): + self = self.with_context(active_test=False) + # default values fields + IrDefault = self.env['ir.default'].sudo() + for name, field in self._fields.items(): + if (name.startswith("default_") and + field.default_model == 'statement.common.wizard'): + if isinstance(self[name], models.BaseModel): + if self._fields[name].type == 'many2one': + value = self[name].id + else: + value = self[name].ids + else: + value = self[name] + IrDefault.set('activity.statement.wizard', name[8:], value) + IrDefault.set('outstanding.statement.wizard', name[8:], value) + return super().set_values() diff --git a/partner_statement/wizard/statement_common.py b/partner_statement/wizard/statement_common.py new file mode 100644 index 00000000..ac01f816 --- /dev/null +++ b/partner_statement/wizard/statement_common.py @@ -0,0 +1,70 @@ +# Copyright 2018 Graeme Gellatly +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from dateutil.relativedelta import relativedelta +from odoo import api, fields, models + + +class StatementCommon(models.AbstractModel): + + _name = 'statement.common.wizard' + _description = 'Statement Reports Common Wizard' + + name = fields.Char() + company_id = fields.Many2one( + comodel_name='res.company', + default=lambda self: self.env.user.company_id, + string='Company' + ) + date_end = fields.Date(required=True, default=fields.Date.context_today) + show_aging_buckets = fields.Boolean(default=True) + number_partner_ids = fields.Integer( + default=lambda self: len(self._context['active_ids']) + ) + filter_partners_non_due = fields.Boolean( + string='Don\'t show partners with no due entries', default=True) + filter_negative_balances = fields.Boolean( + "Exclude Negative Balances", default=True + ) + + aging_type = fields.Selection( + [("days", "Age by Days"), ("months", "Age by Months")], + string="Aging Method", + default="days", + required=True, + ) + + account_type = fields.Selection( + [('receivable', 'Receivable'), + ('payable', 'Payable')], string='Account type', default='receivable') + + @api.onchange('aging_type') + def onchange_aging_type(self): + if self.aging_type == 'months': + self.date_end = ( + fields.Date.context_today(self).replace(day=1) - + relativedelta(days=1) + ) + else: + self.date_end = fields.Date.context_today(self) + + @api.multi + def button_export_pdf(self): + self.ensure_one() + return self._export() + + def _prepare_statement(self): + self.ensure_one() + return { + 'date_end': self.date_end, + 'company_id': self.company_id.id, + 'partner_ids': self._context['active_ids'], + 'show_aging_buckets': self.show_aging_buckets, + 'filter_non_due_partners': self.filter_partners_non_due, + 'account_type': self.account_type, + 'aging_type': self.aging_type, + 'filter_negative_balances': self.filter_negative_balances, + } + + def _export(self): + raise NotImplementedError diff --git a/partner_statement/wizard/statement_wizard.xml b/partner_statement/wizard/statement_wizard.xml new file mode 100644 index 00000000..6513cc34 --- /dev/null +++ b/partner_statement/wizard/statement_wizard.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + Statement Common Wizard View + statement.common.wizard + +
+
+

+ + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + Outstanding Statement Wizard + outstanding.statement.wizard + + primary + + + + + + + + + Activity Statement Wizard + activity.statement.wizard + + primary + + + + + + + + + + +