Browse Source

[FIX] Make company_id a required field in statement wizard

pull/762/head
Graeme Gellatly 6 years ago
committed by Rujia Liu
parent
commit
4323573e48
  1. 132
      partner_statement/README.rst
  2. 4
      partner_statement/__init__.py
  3. 27
      partner_statement/__manifest__.py
  4. 251
      partner_statement/i18n/ca.po
  5. 262
      partner_statement/i18n/de.po
  6. 262
      partner_statement/i18n/es.po
  7. 262
      partner_statement/i18n/fr.po
  8. 254
      partner_statement/i18n/hr_HR.po
  9. 252
      partner_statement/i18n/it.po
  10. 251
      partner_statement/i18n/nl.po
  11. 253
      partner_statement/i18n/nl_NL.po
  12. 249
      partner_statement/i18n/partner_statement.pot
  13. 253
      partner_statement/i18n/pt.po
  14. 252
      partner_statement/i18n/ro.po
  15. 14
      partner_statement/readme/CONFIGURE.rst
  16. 2
      partner_statement/readme/CONTRIBUTORS.rst
  17. 13
      partner_statement/readme/DESCRIPTION.rst
  18. 7
      partner_statement/readme/HISTORY.rst
  19. 3
      partner_statement/readme/ROADMAP.rst
  20. 6
      partner_statement/readme/USAGE.rst
  21. 3
      partner_statement/report/__init__.py
  22. 126
      partner_statement/report/activity_statement.py
  23. 153
      partner_statement/report/outstanding_statement.py
  24. 445
      partner_statement/report/report_statement_common.py
  25. 14
      partner_statement/security/statement_security.xml
  26. BIN
      partner_statement/static/description/icon.png
  27. 22
      partner_statement/static/src/scss/layout_statement.scss
  28. 3
      partner_statement/tests/__init__.py
  29. 111
      partner_statement/tests/test_activity_statement.py
  30. 77
      partner_statement/tests/test_outstanding_statement.py
  31. 36
      partner_statement/tests/test_res_config_settings.py
  32. 136
      partner_statement/views/activity_statement.xml
  33. 49
      partner_statement/views/aging_buckets.xml
  34. 12
      partner_statement/views/assets.xml
  35. 133
      partner_statement/views/outstanding_statement.xml
  36. 59
      partner_statement/views/res_config_settings.xml
  37. 4
      partner_statement/wizard/__init__.py
  38. 44
      partner_statement/wizard/activity_statement_wizard.py
  39. 21
      partner_statement/wizard/outstanding_statement_wizard.py
  40. 57
      partner_statement/wizard/res_config_settings.py
  41. 71
      partner_statement/wizard/statement_common.py
  42. 101
      partner_statement/wizard/statement_wizard.xml

132
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 <https://github.com/OCA/account-financial-reporting/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 <https://github.com/OCA/account-financial-reporting/issues/new?body=module:%20partner_statement%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Eficent
Contributors
~~~~~~~~~~~~
* Miquel Raïch <miquel.raich@eficent.com>
* Graeme Gellatly <graeme@o4sb.com>
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 <https://github.com/OCA/account-financial-reporting/tree/12.0/partner_statement>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

4
partner_statement/__init__.py

@ -0,0 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import report
from . import wizard

27
partner_statement/__manifest__.py

@ -0,0 +1,27 @@
# 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 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',
],
'data': [
'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,
}

251
partner_statement/i18n/ca.po

@ -0,0 +1,251 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_statement
#
# Translators:
# Marc Tormo i Bochaca <mtbochaca@gmail.com>, 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 <mtbochaca@gmail.com>, 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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr "Balanç "
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr "Cancel·lar "
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr "Empresa "
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr "Creat per "
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr "Creat a "
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Customer Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
msgid "Date End"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr "Nom a mostrar "
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_filter_partners_non_due
msgid "Don't show partners with no due entries"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr "ID"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr "Última modificació a "
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr "Última actualització per "
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr "Última actualització a "
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
msgid "Statement Action to PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid ""
"The activity statement provides details of all activity on the "
"customer receivables 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."
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr "o"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr ""

262
partner_statement/i18n/de.po

@ -0,0 +1,262 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_statement
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2018
# Rudolf Schnapka <rs@techno-flex.de>, 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-23 13:16+0000\n"
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>\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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr "+120 Tage fällig"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr "1-30 Tage fällig"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr "30-60 Tage fällig"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr "60-90 Tage fällig"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr "90-120 Tage fällig"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr "<strong>Der Partner hat keine offenen Posten.</strong>"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr "Aktivitätenbericht"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr "Aktivitätenbericht zwischen"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr "Fälligkeiten Bericht zu"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr "Betrag"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr "Saldo"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr "Fälliger Saldo"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr "Saldovortrag"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr "Abbrechen"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr "Unternehmen"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr "Angelegt von"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr "Angelegt am"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr "Aktuell fällig"
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Customer Activity Statement"
msgstr "Kundenaktivitätsnachweis"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr "Assistent zum Kundenaktivitätsnachweis"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr "Datum"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
msgid "Date End"
msgstr "Enddatum"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr "Anfangsdatum"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr "Datum:"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr "Beschreibung"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr "Anzeigename"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr "Endsaldo"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr "Export PDF"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr "ID"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr "Schliesse Altersgruppen ein"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr "Zuletzt geändert am"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr "Zuletzt aktualisiert durch"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr "Zuletzt aktualisiert am"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr "Nummeriere Partner"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr "Partner-Ref.:"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr "Referenznummer"
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
msgid "Statement Action to PDF"
msgstr "Berichtsaktion zu PDF"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid ""
"The activity statement provides details of all activity on the "
"customer receivables 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."
msgstr ""
"Die Aktivitätsübersicht gibt Auskunft über alle Aktivitäten auf den "
"Kundenforderungen zwischen zwei ausgewählten Terminen. Dies schließt "
"Rechnungen, Rückerstattungen und Zahlungen ein. Ein ausstehender Saldo, der "
"vor dem gewählten Abrechnungszeitraum liegt, wird als Saldovortrag am Anfang "
"der Abrechnung ausgewiesen. Die Liste wird in chronologischer Reihenfolge "
"angezeigt und ist nach Währungen gegliedert."
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr "und"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr "in"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr "oder"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr "report.customer_activity_statement.statement"

262
partner_statement/i18n/es.po

@ -0,0 +1,262 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_statement
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Gelo Joga Landoo <gj@landoo.es>, 2017
# Pedro M. Baeza <pedro.baeza@gmail.com>, 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 <jordi.ballester@eficent.com>\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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr "+120 Días"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr "1- 30 Días"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr "30-60 Días"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr "60-90 Días"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr "90-120 Días"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr "<strong>Este cliente no tiene pagos pendietes</strong>"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr "Informe the Saldo de Cuenta"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr "Informe de Saldo de Cuenta entre"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr "Reporte de vencidos al"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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 ""
"Los detalles de saldos vencidos pueden ser mostrados en reporte, mostrados "
"en periodos.… (30 días, ...), para que el cliente pueda revisar cuánto está "
"abierto, a tiempo o vencido."
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr "Total"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr "Saldo"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr "Saldo"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr "Saldo Pendiente"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr "Cancelar"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr "Compañía"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr "Creado por"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr "Creado en"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr "Saldo a la Fecha"
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Customer Activity Statement"
msgstr "Estado de Cuenta de Cliente"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr "Asistente de Estado de Cuenta de Cliente"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr "Fecha"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
msgid "Date End"
msgstr "Fecha"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr "Fecha Inicio"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr "Fecha:"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr "Descripción"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr "Nombre a mostrar"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_filter_partners_non_due
msgid "Don't show partners with no due entries"
msgstr "No mostrar clientes sin saldo pendiente"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr "Saldo Final"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr "Exportar a PDF"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr "ID"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr "Inluir Períodos de Mora"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr "Última modificación en"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr "Última modificación por"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr "Número de Cliente"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr "Ref. de Cliente:"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr "Número de Referencia"
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
msgid "Statement Action to PDF"
msgstr "Acción Estado a PDF"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid ""
"The activity statement provides details of all activity on the "
"customer receivables 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."
msgstr ""
"El estado de cuenta provee detalles de toda la actividad en……las cuentas por "
"cobrar del cliente entre dos fechas seleccionadas. Esto incluye todas las "
"facturas,……reembolsos y pagos. Cualquier saldo pendiente fechado antes del……"
"periodo elegido aparecerá como un saldo arrastrado arriba del estado de "
"cuenta. La lista es……mostrada en orden cronológico y es dividido por monedas."
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr "y"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr "en"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr "o"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr "reporte.estado_de_cuenta_cliente.estado"

262
partner_statement/i18n/fr.po

@ -0,0 +1,262 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_statement
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2018
# Quentin THEURET <odoo@kerpeo.com>, 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 <svalaeys@fiefmanage.ch>\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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr "+120 jours d'arriérés"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr "1-30 jours d'arriérés"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr "30-60 jours d'arriérés"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr "60-90 jours d'arriérés"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr "90-120 jours d'arriérés"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr ""
"<strong>Le partenaire n'a pas d'écriture en attente de paiement.</strong>"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr "Relevé de compte"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr "Relevé de compte entre"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr "Balance âgée au"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr "Montant"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr "Solde"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr "Solde dû"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr "Solde reporté"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr "Annuler"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr "Société"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr "Créé par"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr "Créé le"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr "Dû en ce moment"
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Customer Activity Statement"
msgstr "Relevé de compte des partenaires"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr "Assistant d'édition de relevé de compte des partenaires"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr "Date"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
msgid "Date End"
msgstr "Jusqu'au"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr "À partir du"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr "Date :"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr "Description"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_filter_partners_non_due
msgid "Don't show partners with no due entries"
msgstr "Masquer les partenaires sans soldes ouverts"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr "Solde final"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr "Exporter en PDF"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr "ID"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr "Afficher les arriérés par tranche"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr "Numéro du partenaire"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr "Réf. partenaire :"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr "Numéro de référence"
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
msgid "Statement Action to PDF"
msgstr "Export du relevé de compte en PDF"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid ""
"The activity statement provides details of all activity on the "
"customer receivables 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."
msgstr ""
"Le relevé de compte présente le détail des activités des débiteurs ou "
"créanciers entre deux dates choisies. Ceci inclus toute facture, note de "
"crédit ou paiement. Si un solde ouvert est préalable à la date de début du "
"relevé, il sera affiché comme un solde reporté en haut du relevé. Les "
"transactions sont présentées par ordre chronologique et ventilées par devise."
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr "et"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr "en"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr "ou"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr "report.customer_activity_statement.statement"

254
partner_statement/i18n/hr_HR.po

@ -0,0 +1,254 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_statement
#
# Translators:
# Bole <bole@dajmi5.com>, 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 <bole@dajmi5.com>, 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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr "Saldo"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr "Otkaži"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr "Tvrtka"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr "Kreirano"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Customer Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr "Datum"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
#, fuzzy
msgid "Date End"
msgstr "Datum"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr "Naziv "
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_filter_partners_non_due
msgid "Don't show partners with no due entries"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr "Izvoz PDF"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr "ID"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
msgid "Statement Action to PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid ""
"The activity statement provides details of all activity on the "
"customer receivables 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."
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr "ili"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr ""

252
partner_statement/i18n/it.po

@ -0,0 +1,252 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_statement
#
# Translators:
# Stefano <stefano.sforzi@agilebg.com>, 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 <stefano.sforzi@agilebg.com>, 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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr "Cancellare"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr "Azienda"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Customer Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr "Data"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
#, fuzzy
msgid "Date End"
msgstr "Data"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr "Nome mostrato"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_filter_partners_non_due
msgid "Don't show partners with no due entries"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
msgid "Statement Action to PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid ""
"The activity statement provides details of all activity on the "
"customer receivables 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."
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr "o"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr ""

251
partner_statement/i18n/nl.po

@ -0,0 +1,251 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_statement
#
# Translators:
# Melroy van den Berg <webmaster1989@gmail.com>, 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 <webmaster1989@gmail.com>, 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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr "Balans"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr "Annuleren"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr "Bedrijf"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr "Gecreëerd door"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr "Gecreëerd op"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Customer Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
msgid "Date End"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr "Weergavenaam"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_filter_partners_non_due
msgid "Don't show partners with no due entries"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr "ID"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr "Laatst Gewijzigd op"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr "Laatst Geüpdatet door"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr "Laatst Geüpdatet op"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
msgid "Statement Action to PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid ""
"The activity statement provides details of all activity on the "
"customer receivables 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."
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr "of"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr ""

253
partner_statement/i18n/nl_NL.po

@ -0,0 +1,253 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_statement
#
# Translators:
# Peter Hageman <hageman.p@gmail.com>, 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 <hageman.p@gmail.com>, 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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr "Annuleer"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr "Bedrijf"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Customer Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr "Datum"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
#, fuzzy
msgid "Date End"
msgstr "Datum"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_filter_partners_non_due
msgid "Don't show partners with no due entries"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr "Export PDF"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
msgid "Statement Action to PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid ""
"The activity statement provides details of all activity on the "
"customer receivables 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."
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr ""

249
partner_statement/i18n/partner_statement.pot

@ -0,0 +1,249 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_account_type
msgid "Account type"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
msgid "Date End"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_filter_partners_non_due
msgid "Don't show partners with no due entries"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Partner Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr ""
#. module: customer_activity_statement
#: selection:customer.activity.statement.wizard,account_type:0
msgid "Payable"
msgstr ""
#. module: customer_activity_statement
#: selection:customer.activity.statement.wizard,account_type:0
msgid "Receivable"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "The activity statement provides details of all activity on a partner's receivables and 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."
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr ""

253
partner_statement/i18n/pt.po

@ -0,0 +1,253 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_statement
#
# Translators:
# Pedro Castro Silva <inactive+pcs.sossia@transifex.com>, 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 <inactive+pcs.sossia@transifex.com>, "
"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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr "Saldo"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr "Cancelar"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr "Empresa"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr "Criado por"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr "Criado em"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Customer Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr "Data"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
#, fuzzy
msgid "Date End"
msgstr "Data"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr "Exibir nome"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_filter_partners_non_due
msgid "Don't show partners with no due entries"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr "Exportar PDF"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr "ID"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr "Última modificação em"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr "Última atualização em"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr "Última atualização por"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
msgid "Statement Action to PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid ""
"The activity statement provides details of all activity on the "
"customer receivables 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."
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr "ou"
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr ""

252
partner_statement/i18n/ro.po

@ -0,0 +1,252 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * customer_activity_statement
#
# Translators:
# Dorin Hongu <dhongu@gmail.com>, 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 <dhongu@gmail.com>, 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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "+120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "1-30 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "30-60 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "60-90 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "90-120 Days Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "<strong>The partner doesn't have due entries.</strong>"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Activity Statement between"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Aging Report at"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_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_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Amount"
msgstr "Valoare"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Balance Forward"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Cancel"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_company_id
msgid "Company"
msgstr "Companie"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_uid
msgid "Created by"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_create_date
msgid "Created on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Current Due"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.act_window,name:customer_activity_statement.customer_activity_statement_wizard_action
msgid "Customer Activity Statement"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_customer_activity_statement_wizard
msgid "Customer Activity Statement Wizard"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date"
msgstr "Data"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_end
msgid "Date End"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_date_start
msgid "Date Start"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Date:"
msgstr "Data:"
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Description"
msgstr "Descriere"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_display_name
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_display_name
msgid "Display Name"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_filter_partners_non_due
msgid "Don't show partners with no due entries"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Ending Balance"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "Export PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_id
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement_id
msgid "ID"
msgstr "ID"
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_show_aging_buckets
msgid "Include Aging Buckets"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard___last_update
#: model:ir.model.fields,field_description:customer_activity_statement.field_report_customer_activity_statement_statement___last_update
msgid "Last Modified on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_uid
msgid "Last Updated by"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_write_date
msgid "Last Updated on"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model.fields,field_description:customer_activity_statement.field_customer_activity_statement_wizard_number_partner_ids
msgid "Number Partner"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Partner ref:"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "Reference number"
msgstr ""
#. module: customer_activity_statement
#: model:ir.actions.report,name:customer_activity_statement.action_print_customer_activity_statement
msgid "Statement Action to PDF"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid ""
"The activity statement provides details of all activity on the "
"customer receivables 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."
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "and"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.statement_document
msgid "in"
msgstr ""
#. module: customer_activity_statement
#: model:ir.ui.view,arch_db:customer_activity_statement.customer_activity_statement_wizard_view
msgid "or"
msgstr ""
#. module: customer_activity_statement
#: model:ir.model,name:customer_activity_statement.model_report_customer_activity_statement_statement
msgid "report.customer_activity_statement.statement"
msgstr ""

14
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.

2
partner_statement/readme/CONTRIBUTORS.rst

@ -0,0 +1,2 @@
* Miquel Raïch <miquel.raich@eficent.com>
* Graeme Gellatly <graeme@o4sb.com>

13
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.

7
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

3
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.

6
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.

3
partner_statement/report/__init__.py

@ -0,0 +1,3 @@
from . import report_statement_common
from . import activity_statement
from . import outstanding_statement

126
partner_statement/report/activity_statement.py

@ -0,0 +1,126 @@
# 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, Q1.move_id, Q1.date, Q1.date_maturity,
Q1.name, Q1.ref, Q1.debit, Q1.credit,
Q1.debit-Q1.credit as amount, Q1.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)

153
partner_statement/report/outstanding_statement.py

@ -0,0 +1,153 @@
# 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 Q1.partner_id, Q1.currency_id, Q1.move_id,
Q1.date, Q1.date_maturity, Q1.debit, Q1.credit,
Q1.name, Q1.ref, Q1.blocked, Q1.company_id,
CASE WHEN Q1.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, Q2.move_id, Q2.date, Q2.date_maturity,
Q2.name, Q2.ref, Q2.debit, Q2.credit,
Q2.debit-Q2.credit AS amount, blocked,
COALESCE(Q2.currency_id, c.currency_id) AS currency_id,
Q2.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)

445
partner_statement/report/report_statement_common.py

@ -0,0 +1,445 @@
# 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 _get_invoice_address(self, part):
inv_addr_id = part.address_get(['invoice']).get('invoice', part.id)
return self.env["res.partner"].browse(inv_addr_id)
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 - default needed if partner lang not set
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()}
default_fmt = self.env["res.lang"]._lang_get(
self.env.user.lang).date_format
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.get(partner_id, default_fmt)),
'start': format_date(date_start,
date_formats.get(partner_id, default_fmt)),
'end': format_date(date_end,
date_formats.get(partner_id, default_fmt)),
'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.get(partner_id, default_fmt)
)
line['date_maturity'] = format_date(
line['date_maturity'],
date_formats.get(partner_id, default_fmt)
)
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,
'get_inv_addr': self._get_invoice_address,
}

14
partner_statement/security/statement_security.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="group_activity_statement" model="res.groups">
<field name="name">Use activity statements</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_outstanding_statement" model="res.groups">
<field name="name">Use outstanding statements</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</odoo>

BIN
partner_statement/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 9.2 KiB

22
partner_statement/static/src/scss/layout_statement.scss

@ -0,0 +1,22 @@
.table-statement {
.amount {
text-align: right !important;
width: 14% //spread 7 columns evenly
}
thead {
border-bottom: solid; // required for clean layout
tr th:first-child {
width: auto !important; // required for clean layout
}
tr th:last-child {
width: 16% !important; // required for boxed layout
}
}
}
.statement-blocked {
background-color: $gray-500 !important;
td:last-child {
background-color: $gray-500 !important;
}
}

3
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

111
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)

77
partner_statement/tests/test_outstanding_statement.py

@ -0,0 +1,77 @@
# 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 TestOutstandingStatement(TransactionCase):
"""
Tests for Outstanding 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_2')
self.partner2 = self.env.ref('base.res_partner_3')
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.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]
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_outstanding_statement(self):
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()
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_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.")

36
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')

136
partner_statement/views/activity_statement.xml

@ -0,0 +1,136 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<template id="partner_statement.activity_statement_document">
<t t-call="web.external_layout">
<t t-set="o" t-value="o.with_context({'lang': lang})"/>
<t t-set="address">
<address t-esc="get_inv_addr(o)" t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}' />
<div t-if="o.vat" class="mt16"><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-field="o.vat"/></div>
</t>
<div class="page">
<h2 >Statement of Account</h2>
<div id="informations" class="row mt32 mb32">
<div class="col-3 bm-2">
<strong>Date:</strong>
<p t-esc="d['today']" class="m-0"/>
</div>
<div t-if="o.ref" class="col-3 bm-2">
<strong>Partner Code:</strong>
<p t-field="o.ref" class="m-0" />
</div>
</div>
<t t-if="d['currencies']">
<br/>
<t t-foreach="d['currencies'].items()" t-as="currency">
<t t-set="display_currency" t-value="Currencies[currency[0]]" />
<t t-set="currency" t-value="currency[1]" />
<p>
<span t-esc="'' if account_type == 'receivable' else 'Supplier '"/>Statement between <span t-esc="d['start']" /> and <span t-esc="d['end']" /> in <span t-esc="display_currency.name"/>
</p>
<table class="table table-condensed table-statement">
<thead>
<tr>
<th>Reference number</th>
<th>Date</th>
<th>Description</th>
<th class="amount">Amount</th>
<th class="amount">Balance</th>
</tr>
</thead>
<tbody>
<tr>
<td />
<td>
<span t-esc="d['start']"/>
</td>
<td>
Balance Forward
</td>
<td />
<td class="amount">
<span t-esc="currency['balance_forward']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
</tr>
<tr t-foreach="currency['lines']" t-as="line" t-att-class="'statement-blocked' if line['blocked'] else ''">
<td>
<span t-esc="line['move_id']"/>
</td>
<td>
<span t-esc="line['date']"/>
</td>
<td>
<t t-if="line['name'] != '/'">
<t t-if="not line['ref']">
<span t-esc="line['name']"/>
</t>
<t t-if="line['ref'] and line['name']">
<t t-if="line['name'] not in line['ref']">
<span t-esc="line['name']"/>
</t>
<t t-if="line['ref'] not in line['name']">
<span t-esc="line['ref']"/>
</t>
</t>
</t>
<t t-if="line['name'] == '/'">
<span t-esc="line['ref']"/>
</t>
</td>
<td class="amount">
<span t-esc="line['amount']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
<td class="amount">
<span t-esc="line['balance']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
</tr>
<tr>
<td />
<td>
<span t-esc="d['end']"/>
</td>
<td>
Ending Balance
</td>
<td />
<td class="amount">
<span t-esc="currency['amount_due']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
</tr>
</tbody>
</table>
<t t-call="partner_statement.aging_buckets" t-if="currency['buckets']" />
</t>
</t>
<p t-if="d.get('no_entries')">
<strong>The partner doesn't have due entries.</strong>
</p>
</div>
</t>
</template>
<template id="activity_statement">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t t-set="d" t-value="data.get(o.id)" />
<t t-call="partner_statement.activity_statement_document" t-lang="o.lang"/>
</t>
</t>
</template>
<report id="action_print_activity_statement"
model="res.partner"
report_type="qweb-pdf"
menu="False"
string="Activity Statement"
name="partner_statement.activity_statement"
file="partner_statement.activity_statement"
/>
</odoo>

49
partner_statement/views/aging_buckets.xml

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<template id="aging_buckets">
<p>
Aging Report at <span t-esc="d['end']" /> in <span t-esc="display_currency.name"/>:
</p>
<table class="table table-sm table-statement">
<thead>
<tr>
<t t-foreach="bucket_labels" t-as="bl">
<th class="amount">
<span t-esc="bl" />
</th>
</t>
</tr>
</thead>
<t t-set="buckets" t-value="currency['buckets']" />
<tbody>
<tr>
<td class="amount">
<span t-esc="buckets.get('current', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
<td class="amount">
<span t-esc="buckets.get('b_1_30', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
<td class="amount">
<span t-esc="buckets.get('b_30_60', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
<td class="amount">
<span t-esc="buckets.get('b_60_90', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
<td class="amount">
<span t-esc="buckets.get('b_90_120', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
<td class="amount">
<span t-esc="buckets.get('b_over_120', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
<td class="amount">
<span t-esc="buckets.get('balance', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
</tr>
</tbody>
</table>
</template>
</odoo>

12
partner_statement/views/assets.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<template id="report_assets_common" name="oca_statements report assets" inherit_id="web.report_assets_common">
<xpath expr="." position="inside">
<link rel="stylesheet" href="/partner_statement/static/src/scss/layout_statement.scss" type="text/scss" />
</xpath>
</template>
</odoo>

133
partner_statement/views/outstanding_statement.xml

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<template id="partner_statement.outstanding_statement_document">
<t t-call="web.external_layout">
<t t-set="o" t-value="o.with_context({'lang': lang})"/>
<t t-set="address">
<address t-esc="o.address_get(['invoice'])['invoice']" t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}' />
<div t-if="o.vat" class="mt16"><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-field="o.vat"/></div>
</t>
<div class="page">
<div class="oe_structure"/>
<h2 >Statement of Account</h2>
<div id="informations" class="row mt32 mb32">
<div class="col-3 bm-2">
<strong>Date:</strong>
<p t-esc="d['today']" class="m-0"/>
</div>
<div t-if="o.ref" class="col-3 bm-2">
<strong>Partner Code:</strong>
<p t-field="o.ref" class="m-0" />
</div>
</div>
<t t-if="d['currencies']">
<br/>
<t t-foreach="d['currencies'].items()" t-as="currency">
<t t-set="display_currency" t-value="Currencies[currency[0]]" />
<t t-set="currency" t-value="currency[1]" />
<p>
<span t-esc="'' if account_type == 'receivable' else 'Supplier '"/>Statement up to <span t-esc="d['end']" /> in <span t-esc="display_currency.name"/>
</p>
<table class="table table-sm table-statement">
<thead>
<tr>
<th>Reference number</th>
<th>Date</th>
<th>Due Date</th>
<th>Description</th>
<th class="amount">Original</th>
<th class="amount">Open Amount</th>
<th class="amount">Balance</th>
</tr>
</thead>
<tbody>
<tr t-foreach="currency['lines']" t-as="line" t-att-class="'statement-blocked' if line['blocked'] else ''">
<td>
<span t-esc="line['move_id']"/>
</td>
<td>
<span t-esc="line['date']"/>
</td>
<td>
<span t-esc="line['date_maturity']"/>
</td>
<td>
<t t-if="line['name'] != '/'">
<t t-if="not line['ref']">
<span t-esc="line['name']"/>
</t>
<t t-if="line['ref'] and line['name']">
<t t-if="line['name'] not in line['ref']">
<span t-esc="line['name']"/>
</t>
<t t-if="line['ref'] not in line['name']">
<span t-esc="line['ref']"/>
</t>
</t>
</t>
<t t-if="line['name'] == '/'">
<span t-esc="line['ref']"/>
</t>
</td>
<td class="amount">
<span t-esc="line['amount']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
<td class="amount">
<span t-esc="line['open_amount']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
<td class="amount">
<span t-esc="line['balance']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
</tr>
<tr>
<td />
<td>
<span t-esc="d['end']"/>
</td>
<td>
Ending Balance
</td>
<td />
<td />
<td />
<td class="amount">
<span t-esc="currency['amount_due']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
</td>
</tr>
</tbody>
</table>
<t t-call="partner_statement.aging_buckets" t-if="currency['buckets']" />
</t>
</t>
<p t-if="d.get('no_entries')">
<strong>The partner doesn't have due entries.</strong>
</p>
</div>
</t>
</template>
<template id="outstanding_statement">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t t-set="d" t-value="data.get(o.id)" />
<t t-call="partner_statement.outstanding_statement_document" t-lang="o.lang"/>
</t>
</t>
</template>
<report id="action_print_outstanding_statement"
model="res.partner"
report_type="qweb-pdf"
menu="False"
string="Outstanding Statement"
name="partner_statement.outstanding_statement"
file="partner_statement.outstanding_statement"
/>
</odoo>

59
partner_statement/views/res_config_settings.xml

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form (in partner_statement)</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="40"/>
<field name="inherit_id" ref="account.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[@id='account_followup']" position="after">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="group_activity_statement" />
</div>
<div class="o_setting_right_pane">
<label for="group_activity_statement"/>
<div class="text-muted">
Activity Statements show all transactions between two dates.
</div>
<div class="content-group" attrs="{'invisible': [('group_activity_statement', '=', False), ('group_outstanding_statement', '=', False)]}">
<div class="row mt16">
<label for="default_aging_type" class="col-lg-3 o_light_label"/>
<field name="default_aging_type" />
</div>
<div >
<field name="default_show_aging_buckets" class="oe_inline" />
<label for="default_show_aging_buckets" class="o_light_label"/>
</div>
<div >
<field name="default_filter_partners_non_due" class="oe_inline" />
<label for="default_filter_partners_non_due" class="o_light_label"/>
</div>
<div >
<field name="default_filter_negative_balances" class="oe_inline" />
<label for="default_filter_negative_balances" class="o_light_label"/>
</div>
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="group_outstanding_statement" />
</div>
<div class="o_setting_right_pane">
<label for="group_outstanding_statement"/>
<div class="text-muted">
Outstanding Statements show all transactions up to a date.
</div>
<div class="text-muted" attrs="{'invisible': [('group_outstanding_statement', '=', False)]}">
Please set defaults under Activity Statements.
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

4
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

44
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

21
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)

57
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()

71
partner_statement/wizard/statement_common.py

@ -0,0 +1,71 @@
# 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',
required=True,
)
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

101
partner_statement/wizard/statement_wizard.xml

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<!-- wizard action on res.partner -->
<act_window id="activity_statement_wizard_action"
name="Partner Activity Statement"
src_model="res.partner"
res_model="activity.statement.wizard"
view_type="form" view_mode="form"
key2="client_action_multi" target="new"
groups="partner_statement.group_activity_statement"/>
<act_window id="outstanding_statement_wizard_action"
name="Partner Outstanding Statement"
src_model="res.partner"
res_model="outstanding.statement.wizard"
view_type="form" view_mode="form"
key2="client_action_multi" target="new"
groups="partner_statement.group_outstanding_statement"/>
<!-- wizard view -->
<record id="statement_common_view" model="ir.ui.view">
<field name="name">Statement Common Wizard View</field>
<field name="model">statement.common.wizard</field>
<field name="arch" type="xml">
<form name="Report Options">
<div style="text-align:justify" name="info">
<label string="Aging details can be shown in the report, expressed in aging
buckets, so the partner can review how much is open, due or overdue." for=""/>
</div><hr/>
<group>
<group name="main_info">
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
<label for="account_type"/>
<field name="account_type" nolabel="1" widget="radio"/>
</group>
<group name="aging_report">
<field name="show_aging_buckets"/>
<field name="aging_type" />
</group>
</group>
<group>
<group name="dates">
<field name="date_end"/>
</group>
<group name="multiple_partners">
<field name="number_partner_ids" readonly="1" invisible="1"/>
<field name="filter_partners_non_due" attrs="{'invisible': [('number_partner_ids', '=', 1)]}" />
<field name="filter_negative_balances" attrs="{'invisible': [('number_partner_ids', '=', 1)]}" />
</group>
</group>
<footer>
<button name="button_export_pdf" string="Export PDF" type="object" default_focus="1" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="outstanding_statement_wizard_view" model="ir.ui.view">
<field name="name">Outstanding Statement Wizard</field>
<field name="model">outstanding.statement.wizard</field>
<field name="inherit_id" ref="partner_statement.statement_common_view" />
<field name="mode">primary</field>
<field name="arch" type="xml">
<xpath expr="//div[@name='info']/label" position="before" >
<label string="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." for=""/>
<br/><br/>
</xpath>
</field>
</record>
<record id="activity_statement_wizard_view" model="ir.ui.view">
<field name="name">Activity Statement Wizard</field>
<field name="model">activity.statement.wizard</field>
<field name="inherit_id" ref="partner_statement.statement_common_view" />
<field name="mode">primary</field>
<field name="arch" type="xml">
<xpath expr="//div[@name='info']/label" position="before" >
<label string="The activity statement provides details of all activity on
a partner's receivables and 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." for=""/>
<br/><br/>
</xpath>
<xpath expr="//field[@name='date_end']" position="before">
<field name="date_start"/>
</xpath>
</field>
</record>
</odoo>
Loading…
Cancel
Save