diff --git a/account_invoice_clearing/README.rst b/account_invoice_clearing/README.rst new file mode 100644 index 00000000000..9e00c59caa4 --- /dev/null +++ b/account_invoice_clearing/README.rst @@ -0,0 +1,123 @@ +======================== +Account Invoice Clearing +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:92e9f3c4fed7e9092315ca511cc7ec5bb4af3700968dedcaa5c9de0eff4a58cd + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |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--invoicing-lightgray.png?logo=github + :target: https://github.com/OCA/account-invoicing/tree/16.0/account_invoice_clearing + :alt: OCA/account-invoicing +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/account-invoicing-16-0/account-invoicing-16-0-account_invoice_clearing + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/account-invoicing&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module complements the functionality of *Automatic Entries* in Accounting. +It provides a Wizard to clear invoices by creating an intermediate journal entry. +It allows to clear any invoice with its opposite types. *out_* types are cleared with *in_* types and vice versa. +The invoices to be cleared have to be not paid or partially paid. +The wizard will use the residual amount of the invoices in the clearing process. + +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +#. You must have unpaid invoices in the system for the same contact (or his childs) in *out_* and *in_* types. +#. Go to a view where invoices are shown. No matter if are Invoices or Bills. +#. Select one or several invoices/bills. You can also enter an invoice/bill and click on the *Invoice clearing* button if it's open and fully paid. +#. Fill in the top fields of the wizard and in the lines to clear field, select the lines from other invoices you want to clear. +#. With the Sort buttons, you can sort the lines as appropriate. +#. With the actions button, you can reset, clear or autofill the amount to be used in the order previously chosen. +#. Check that the preview is as expected. +#. Press the Confirm button to create the invoice clearing. +#. A clearing journal entry will be generated for each invoice/bill to be cleared. +#. The resulting journal entries will reconcile all their lines with the initial move lines and the clearing moves lines. + +Known issues / Roadmap +====================== + +To be able to sort the initial invoice/bill lines in the wizard with sequence +and sort with buttons as in the clearing lines. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Moduon + +Contributors +~~~~~~~~~~~~ + +* Eduardo de Miguel (`Moduon `__) +* Rafael Blasco (`Moduon `__) + +Other credits +~~~~~~~~~~~~~ + +The development of this module has been financially supported by: + +* Moduon Team S.L. + +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. + +.. |maintainer-Shide| image:: https://github.com/Shide.png?size=40px + :target: https://github.com/Shide + :alt: Shide + +Current `maintainer `__: + +|maintainer-Shide| + +This module is part of the `OCA/account-invoicing `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_invoice_clearing/__init__.py b/account_invoice_clearing/__init__.py new file mode 100644 index 00000000000..aee8895e7a3 --- /dev/null +++ b/account_invoice_clearing/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizards diff --git a/account_invoice_clearing/__manifest__.py b/account_invoice_clearing/__manifest__.py new file mode 100644 index 00000000000..067bb2a12b3 --- /dev/null +++ b/account_invoice_clearing/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright 2023 Moduon Team S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0) + +{ + "name": "Account Invoice Clearing", + "summary": "Account invoice clearing wizard", + "version": "16.0.1.0.0", + "development_status": "Alpha", + "category": "Accounting/Accounting", + "website": "https://github.com/OCA/account-invoicing", + "author": "Moduon, Odoo Community Association (OCA)", + "maintainers": ["Shide"], + "license": "AGPL-3", + "application": False, + "depends": [ + "account", + ], + "data": [ + "security/ir.model.access.csv", + "views/account_move_view.xml", + "wizards/account_invoice_clearing_wizard_views.xml", + ], +} diff --git a/account_invoice_clearing/i18n/account_invoice_clearing.pot b/account_invoice_clearing/i18n/account_invoice_clearing.pot new file mode 100644 index 00000000000..8512c758132 --- /dev/null +++ b/account_invoice_clearing/i18n/account_invoice_clearing.pot @@ -0,0 +1,485 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_clearing +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.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: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "" +"Actions:" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "" +"Sort by:" +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__account_id +#, python-format +msgid "Account" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model,name:account_invoice_clearing.model_account_invoice_clearing_lines_wizard +msgid "Account Invoice Clearing Lines Wizard" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Add all compensation lines" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Adds all available compensation lines to allow use it." +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__amount_to_clear +msgid "Amount To Clear" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Amount residual (asc)" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Amount residual (desc)" +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Amount to clear cannot be greater than residual amount." +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__analytic_tag_ids +msgid "Analytic Tags" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Are you sure you want to clear the invoices?" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "" +"Are you sure you want to use the selected configuration to clear invoices? " +"This operation will create a new move and will reconcile every line with its" +" respective counterpart." +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__can_use_line +msgid "Can Use Line" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Cancel" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__clearing_id +msgid "Clearing" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__amount_to_clear +msgid "Clearing amount" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__commercial_partner_id +msgid "Commercial Partner" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__company_id +msgid "Company" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__company_currency_id +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__company_currency_id +msgid "Company Currency" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Create and Concile" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__create_uid +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__create_uid +msgid "Created by" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__create_date +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__create_date +msgid "Created on" +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__credit +#, python-format +msgid "Credit" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__date +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__date +msgid "Date" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Date due (asc)" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Date due (desc)" +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__debit +#, python-format +msgid "Debit" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__display_name +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__date_maturity +msgid "Due Date" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Empty lines" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Fill amounts in order" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "" +"Fills the amount to clear with the residual amount of the invoice until the " +"total residual amount is zero." +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__id +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__id +msgid "ID" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.actions.server,name:account_invoice_clearing.action_invoice_clearing +msgid "Invoice Clearing" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model,name:account_invoice_clearing.model_account_invoice_clearing_wizard +msgid "Invoice Clearing Wizard" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.actions.act_window,name:account_invoice_clearing.action_account_invoice_clearing_wizard +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.view_move_form +msgid "Invoice clearing" +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Invoices must be from the same commercial partner." +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Invoices must be of the same type." +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Invoices must belong to the same company." +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__invoice_ids +msgid "Invoices/Bills" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_wizard__preview_move_data +msgid "JSON value of the data to be displayed in the previewer" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_wizard__move_data +msgid "JSON value of the moves to be created" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__journal_id +msgid "Journal" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model,name:account_invoice_clearing.model_account_move +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__invoice_id +msgid "Journal Entry" +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__name +#, python-format +msgid "Label" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard____last_update +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__write_uid +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__write_date +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__line_ids +msgid "Lines" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_data +msgid "Move Data" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__move_line_id +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_line_ids +msgid "Move Line" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Move Lines to clear" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Move Lines to use for clearing" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_name +msgid "Move Name" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_type +msgid "Move Type" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Move and Move lines texts" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Move general configuration" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_wizard__move_name +msgid "Name of the move generated by this wizard" +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Partner" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_line_prefix +msgid "Prefix for move lines" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_wizard__move_line_prefix +msgid "" +"Prefix to be used in the name of the move lines generated by this wizard" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__preview_move_data +msgid "Preview Move Data" +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Preview of the clearing move related to %s" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__product_id +msgid "Product" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Removes all invoices." +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Removes all lines and adds all available move lines again." +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Reset lines" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__amount_residual +msgid "Residual Amount" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Residual Amount Total (Signed)" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Residual Amount to clear (Signed)" +msgstr "" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Resulting Clearing Move" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Resulting move will not be fully reconciled." +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__sequence +msgid "Sequence" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Sorts the invoices by date due ascending." +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Sorts the invoices by date due descending." +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Sorts the invoices by residual amount ascending." +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Sorts the invoices by residual amount descending." +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "The following Journal Entries will be generated" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__invoice_id +msgid "The move of this entry line." +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__amount_residual +msgid "" +"The residual amount on a journal item expressed in the company currency." +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__date_maturity +msgid "" +"This field is used for payable and receivable journal entries. You can put " +"the limit date for the payment of this line." +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Total Amount Residual (Signed)" +msgstr "" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Use" +msgstr "" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__company_currency_id +msgid "Utility field to express amount currency" +msgstr "" diff --git a/account_invoice_clearing/i18n/es.po b/account_invoice_clearing/i18n/es.po new file mode 100644 index 00000000000..2a94f6556ee --- /dev/null +++ b/account_invoice_clearing/i18n/es.po @@ -0,0 +1,521 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_clearing +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-04-12 10:57+0000\n" +"PO-Revision-Date: 2023-07-29 10:09+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "" +"Actions:" +msgstr "" +"Acciones:" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "" +"Sort by:" +msgstr "" +"Corta por:" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__account_id +#, python-format +msgid "Account" +msgstr "Cuenta" + +#. module: account_invoice_clearing +#: model:ir.model,name:account_invoice_clearing.model_account_invoice_clearing_lines_wizard +msgid "Account Invoice Clearing Lines Wizard" +msgstr "Asistente de Compensación de Líneas de Facturas" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Add all compensation lines" +msgstr "Añadir todas las líneas a compensar" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Adds all available compensation lines to allow use it." +msgstr "" +"Añade todas las líneas disponibles para la compensación para poder ser " +"utilizadas." + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__amount_to_clear +msgid "Amount To Clear" +msgstr "Importe a compensar" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Amount residual (asc)" +msgstr "Importe residual (asc)" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Amount residual (desc)" +msgstr "Importe residual (desc)" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Amount to clear cannot be greater than residual amount." +msgstr "El importe a compensar no puede ser superior a la cantidad residual." + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__analytic_account_id +msgid "Analytic Account" +msgstr "Cuenta analítica" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__analytic_tag_ids +msgid "Analytic Tags" +msgstr "Etiquetas analíticas" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Are you sure you want to clear the invoices?" +msgstr "¿Está seguro que quiere compensar las facturas?" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "" +"Are you sure you want to use the selected configuration to clear invoices? " +"This operation will create a new move and will reconcile every line with its " +"respective counterpart." +msgstr "" +"¿Está seguro que quiere utilizar la configuración seleccionada para " +"compensar las facturas? Ésta operación creará nuevo(s) movimiento(s) y " +"conciliará cada línea con su respectiva contrapartida." + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__can_use_line +msgid "Can Use Line" +msgstr "Puede utilizar la línea" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Cancel" +msgstr "Cancelar" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__clearing_id +msgid "Clearing" +msgstr "Compensar" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__amount_to_clear +msgid "Clearing amount" +msgstr "Importe a compensar" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__commercial_partner_id +msgid "Commercial Partner" +msgstr "Partner Comercial" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__company_id +msgid "Company" +msgstr "Empresa" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__company_currency_id +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__company_currency_id +msgid "Company Currency" +msgstr "Moneda de la Compañía" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Create and Concile" +msgstr "Crear y Conciliar" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__create_uid +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__create_date +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__credit +#, python-format +msgid "Credit" +msgstr "Crédito" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__date +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__date +msgid "Date" +msgstr "Fecha" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Date due (asc)" +msgstr "Fecha de vencimiento (asc)" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Date due (desc)" +msgstr "Fecha de vencimiento (desc)" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__debit +#, python-format +msgid "Debit" +msgstr "Débito" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__display_name +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__date_maturity +msgid "Due Date" +msgstr "Fecha de vencimiento" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Empty lines" +msgstr "Vaciar líneas" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Fill amounts in order" +msgstr "Rellenar importes en orden" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "" +"Fills the amount to clear with the residual amount of the invoice until the " +"total residual amount is zero." +msgstr "" +"Rellena el importe a compensar con la cantidad residual de las facturas " +"hasta que la cantidad residual es cero." + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__id +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__id +msgid "ID" +msgstr "ID(identificador)" + +#. module: account_invoice_clearing +#: model:ir.actions.server,name:account_invoice_clearing.action_invoice_clearing +msgid "Invoice Clearing" +msgstr "Compensación de facturas" + +#. module: account_invoice_clearing +#: model:ir.model,name:account_invoice_clearing.model_account_invoice_clearing_wizard +msgid "Invoice Clearing Wizard" +msgstr "Asistente de Compensación de facturas" + +#. module: account_invoice_clearing +#: model:ir.actions.act_window,name:account_invoice_clearing.action_account_invoice_clearing_wizard +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.view_move_form +msgid "Invoice clearing" +msgstr "Compensación de facturas" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Invoices must be from the same commercial partner." +msgstr "Las facturas deben ser del mismo Partner Comercial." + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Invoices must be of the same type." +msgstr "Las facturas deben ser del mismo tipo." + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Invoices must belong to the same company." +msgstr "Las facturas deben pertenecer a la misma compañía." + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__invoice_ids +msgid "Invoices/Bills" +msgstr "Facturas" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_wizard__preview_move_data +msgid "JSON value of the data to be displayed in the previewer" +msgstr "Valor JSON de los datos que se mostrarán en la vista previa" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_wizard__move_data +msgid "JSON value of the moves to be created" +msgstr "Valor JSON de los movimientos a crear" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__journal_id +msgid "Journal" +msgstr "Diario" + +#. module: account_invoice_clearing +#: model:ir.model,name:account_invoice_clearing.model_account_move +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__invoice_id +msgid "Journal Entry" +msgstr "Asiento contable" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__name +#, python-format +msgid "Label" +msgstr "Etiqueta" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard____last_update +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__write_uid +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__write_date +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__line_ids +msgid "Lines" +msgstr "Líneas" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_data +msgid "Move Data" +msgstr "Datos del Movimiento" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__move_line_id +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_line_ids +msgid "Move Line" +msgstr "Apunte" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Move Lines to clear" +msgstr "Apuntes a compensar" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Move Lines to use for clearing" +msgstr "Apuntes para utilizar en la compensación" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_name +msgid "Move Name" +msgstr "Nombre del movimiento" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_type +msgid "Move Type" +msgstr "Tipo de Movimiento" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Move and Move lines texts" +msgstr "Textos para el Movimiento y los Apuntes de Compensación" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Move general configuration" +msgstr "Configuración general del Movimiento de Compensación" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_wizard__move_name +msgid "Name of the move generated by this wizard" +msgstr "Referencia del Movimiento de Compensación" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Partner" +msgstr "Contacto" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_line_prefix +msgid "Prefix for move lines" +msgstr "Prefijo para los Apuntes de Compensación" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_wizard__move_line_prefix +msgid "" +"Prefix to be used in the name of the move lines generated by this wizard" +msgstr "" +"Prefijo que se utilizará en el nombre de los Apuntes generados por éste " +"Asistente" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__preview_move_data +msgid "Preview Move Data" +msgstr "Vista previa de datos de movimiento" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Preview of the clearing move related to %s" +msgstr "Previsualización del Movimiento de Compensación relacionado con %s" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__product_id +msgid "Product" +msgstr "Producto" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Removes all invoices." +msgstr "Elimina todas las líneas de Compensación." + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Removes all lines and adds all available move lines again." +msgstr "" +"Elimina todas las líneas y vuelve a añadir todas las líneas disponibles para " +"la compensación." + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Reset lines" +msgstr "Reiniciar líneas" + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__amount_residual +msgid "Residual Amount" +msgstr "Importe residual" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Residual Amount Total (Signed)" +msgstr "Total del Importe residual (con signo)" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Residual Amount to clear (Signed)" +msgstr "Importe residual a compensar (con signo)" + +#. module: account_invoice_clearing +#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0 +#, python-format +msgid "Resulting Clearing Move" +msgstr "Movimiento de compensación resultante" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Resulting move will not be fully reconciled." +msgstr "El movimiento resultante no conciliará completamente la(s) facturas." + +#. module: account_invoice_clearing +#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__sequence +msgid "Sequence" +msgstr "Secuencia" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Sorts the invoices by date due ascending." +msgstr "Ordena las líneas de las facturas por fecha de vencimiento ascendente." + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Sorts the invoices by date due descending." +msgstr "" +"Ordena las líneas de las facturas por fecha de vencimiento descendente." + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Sorts the invoices by residual amount ascending." +msgstr "Ordena las líneas de las facturas por importe residual ascendente." + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Sorts the invoices by residual amount descending." +msgstr "Ordena las líneas de las facturas por importe residual descendente." + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "The following Journal Entries will be generated" +msgstr "Se generarán los siguientes Movimientos" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__invoice_id +msgid "The move of this entry line." +msgstr "El apunte de este asiento." + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__amount_residual +msgid "" +"The residual amount on a journal item expressed in the company currency." +msgstr "" +"El importe residual en un apunte contable expresado en la moneda de la " +"compañía." + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__date_maturity +msgid "" +"This field is used for payable and receivable journal entries. You can put " +"the limit date for the payment of this line." +msgstr "" +"Este campo se utiliza en asientos pendientes de pago y de cobro. Puedes " +"establecer la fecha límite para el pago de esta línea." + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Total Amount Residual (Signed)" +msgstr "Total del Importe residual (con signo)" + +#. module: account_invoice_clearing +#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view +msgid "Use" +msgstr "Utilizar" + +#. module: account_invoice_clearing +#: model:ir.model.fields,help:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__company_currency_id +msgid "Utility field to express amount currency" +msgstr "Campo de utilidad para expresar la moneda del importe" + +#~ msgid "" +#~ "Actions:" +#~ msgstr "" +#~ "Acciones:" + +#~ msgid "" +#~ "Sort by:" +#~ msgstr "" +#~ "Ordenar por:" diff --git a/account_invoice_clearing/models/__init__.py b/account_invoice_clearing/models/__init__.py new file mode 100644 index 00000000000..9c0a4213854 --- /dev/null +++ b/account_invoice_clearing/models/__init__.py @@ -0,0 +1 @@ +from . import account_move diff --git a/account_invoice_clearing/models/account_move.py b/account_invoice_clearing/models/account_move.py new file mode 100644 index 00000000000..a5b7fed8ecb --- /dev/null +++ b/account_invoice_clearing/models/account_move.py @@ -0,0 +1,25 @@ +# Copyright 2023 Moduon Team S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0) + + +from odoo import models + + +class AccountMove(models.Model): + _inherit = "account.move" + + def action_open_invoice_clearing_wizard(self): + wizard = ( + self.env["account.invoice.clearing.wizard"] + .with_context(active_model=self._name, active_ids=self.ids) + .create({"invoice_ids": [(6, 0, self.ids)]}) + ) + wizard._compute_initial_data() + wizard._onchange_move_type() + action = ( + self.sudo() + .env.ref("account_invoice_clearing.action_account_invoice_clearing_wizard") + .read()[0] + ) + action["res_id"] = wizard.id + return action diff --git a/account_invoice_clearing/readme/CONTRIBUTORS.rst b/account_invoice_clearing/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..249b6b1dae9 --- /dev/null +++ b/account_invoice_clearing/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Eduardo de Miguel (`Moduon `__) +* Rafael Blasco (`Moduon `__) diff --git a/account_invoice_clearing/readme/CREDITS.rst b/account_invoice_clearing/readme/CREDITS.rst new file mode 100644 index 00000000000..9128243f5bb --- /dev/null +++ b/account_invoice_clearing/readme/CREDITS.rst @@ -0,0 +1,3 @@ +The development of this module has been financially supported by: + +* Moduon Team S.L. diff --git a/account_invoice_clearing/readme/DESCRIPTION.rst b/account_invoice_clearing/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..532f599a01d --- /dev/null +++ b/account_invoice_clearing/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module complements the functionality of *Automatic Entries* in Accounting. +It provides a Wizard to clear invoices by creating an intermediate journal entry. +It allows to clear any invoice with its opposite types. *out_* types are cleared with *in_* types and vice versa. +The invoices to be cleared have to be not paid or partially paid. +The wizard will use the residual amount of the invoices in the clearing process. diff --git a/account_invoice_clearing/readme/ROADMAP.rst b/account_invoice_clearing/readme/ROADMAP.rst new file mode 100644 index 00000000000..14c051623ba --- /dev/null +++ b/account_invoice_clearing/readme/ROADMAP.rst @@ -0,0 +1,2 @@ +To be able to sort the initial invoice/bill lines in the wizard with sequence +and sort with buttons as in the clearing lines. diff --git a/account_invoice_clearing/readme/USAGE.rst b/account_invoice_clearing/readme/USAGE.rst new file mode 100644 index 00000000000..f1f095cacfd --- /dev/null +++ b/account_invoice_clearing/readme/USAGE.rst @@ -0,0 +1,12 @@ +To use this module, you need to: + +#. You must have unpaid invoices in the system for the same contact (or his childs) in *out_* and *in_* types. +#. Go to a view where invoices are shown. No matter if are Invoices or Bills. +#. Select one or several invoices/bills. You can also enter an invoice/bill and click on the *Invoice clearing* button if it's open and fully paid. +#. Fill in the top fields of the wizard and in the lines to clear field, select the lines from other invoices you want to clear. +#. With the Sort buttons, you can sort the lines as appropriate. +#. With the actions button, you can reset, clear or autofill the amount to be used in the order previously chosen. +#. Check that the preview is as expected. +#. Press the Confirm button to create the invoice clearing. +#. A clearing journal entry will be generated for each invoice/bill to be cleared. +#. The resulting journal entries will reconcile all their lines with the initial move lines and the clearing moves lines. diff --git a/account_invoice_clearing/security/ir.model.access.csv b/account_invoice_clearing/security/ir.model.access.csv new file mode 100644 index 00000000000..2fddfac6847 --- /dev/null +++ b/account_invoice_clearing/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +account_invoice_clearing_wizard,account.invoice.clearing.wizard,model_account_invoice_clearing_wizard,account.group_account_invoice,1,1,1,1 +account_invoice_clearing_wizard_lines,account.invoice.clearing.lines.wizard,model_account_invoice_clearing_lines_wizard,account.group_account_invoice,1,1,1,1 diff --git a/account_invoice_clearing/static/description/icon.png b/account_invoice_clearing/static/description/icon.png new file mode 100644 index 00000000000..3a0328b516c Binary files /dev/null and b/account_invoice_clearing/static/description/icon.png differ diff --git a/account_invoice_clearing/static/description/index.html b/account_invoice_clearing/static/description/index.html new file mode 100644 index 00000000000..cf24010a06c --- /dev/null +++ b/account_invoice_clearing/static/description/index.html @@ -0,0 +1,467 @@ + + + + + +Account Invoice Clearing + + + +
+

Account Invoice Clearing

+ + +

Alpha License: AGPL-3 OCA/account-invoicing Translate me on Weblate Try me on Runboat

+

This module complements the functionality of Automatic Entries in Accounting. +It provides a Wizard to clear invoices by creating an intermediate journal entry. +It allows to clear any invoice with its opposite types. out_ types are cleared with in_ types and vice versa. +The invoices to be cleared have to be not paid or partially paid. +The wizard will use the residual amount of the invoices in the clearing process.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. You must have unpaid invoices in the system for the same contact (or his childs) in out_ and in_ types.
  2. +
  3. Go to a view where invoices are shown. No matter if are Invoices or Bills.
  4. +
  5. Select one or several invoices/bills. You can also enter an invoice/bill and click on the Invoice clearing button if it’s open and fully paid.
  6. +
  7. Fill in the top fields of the wizard and in the lines to clear field, select the lines from other invoices you want to clear.
  8. +
  9. With the Sort buttons, you can sort the lines as appropriate.
  10. +
  11. With the actions button, you can reset, clear or autofill the amount to be used in the order previously chosen.
  12. +
  13. Check that the preview is as expected.
  14. +
  15. Press the Confirm button to create the invoice clearing.
  16. +
  17. A clearing journal entry will be generated for each invoice/bill to be cleared.
  18. +
  19. The resulting journal entries will reconcile all their lines with the initial move lines and the clearing moves lines.
  20. +
+
+
+

Known issues / Roadmap

+

To be able to sort the initial invoice/bill lines in the wizard with sequence +and sort with buttons as in the clearing lines.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Moduon
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

The development of this module has been financially supported by:

+
    +
  • Moduon Team S.L.
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

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.

+

Current maintainer:

+

Shide

+

This module is part of the OCA/account-invoicing project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/account_invoice_clearing/tests/__init__.py b/account_invoice_clearing/tests/__init__.py new file mode 100644 index 00000000000..d46527b2e1a --- /dev/null +++ b/account_invoice_clearing/tests/__init__.py @@ -0,0 +1 @@ +from . import test_clearing_wizard diff --git a/account_invoice_clearing/tests/test_clearing_wizard.py b/account_invoice_clearing/tests/test_clearing_wizard.py new file mode 100644 index 00000000000..d3b9d16c106 --- /dev/null +++ b/account_invoice_clearing/tests/test_clearing_wizard.py @@ -0,0 +1,146 @@ +# Copyright 2023 Moduon Team S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0) + +from datetime import timedelta + +from odoo import fields +from odoo.tests.common import tagged +from odoo.tools import float_is_zero + +from odoo.addons.account.tests.common import AccountTestInvoicingCommon + + +@tagged("post_install", "-at_install") +class TestClearingWizard(AccountTestInvoicingCommon): + @classmethod + def setUpClass(cls, chart_template_ref=None): + super().setUpClass(chart_template_ref=chart_template_ref) + cls.cl_partner = cls.env["res.partner"].create( + { + "name": "Clearing Partner", + "is_company": True, + "child_ids": [ + (0, 0, {"name": "Clearing Contact 1", "type": "invoice"}), + (0, 0, {"name": "Clearing Contact 2", "type": "invoice"}), + ], + } + ) + + def test_clearing_wizard(self): + """Test clearing wizard with different move types.""" + + def sorted_by_sequence(lines): + return sorted(lines, key=lambda line: line.sequence) + + t = fields.Date.today() + t_5 = t + timedelta(days=5) + t_10 = t + timedelta(days=10) + move_types = ["out_invoice", "in_invoice"] + for init_move_type, clearing_move_type in [move_types, move_types[::-1]]: + with self.subTest( + init_move_type=init_move_type, clearing_move_type=clearing_move_type + ): + init_inv = self.init_invoice( + invoice_date=t, + move_type=init_move_type, + partner=self.cl_partner, + amounts=[100, 200], + post=True, + ) + cl_inv_1 = self.init_invoice( + invoice_date=t_5, + move_type=clearing_move_type, + partner=self.cl_partner.child_ids[0], + amounts=[100], + post=False, + ) + cl_inv_2 = self.init_invoice( + invoice_date=fields.Date.today() + timedelta(days=10), + move_type=clearing_move_type, + partner=self.cl_partner.child_ids[1], + amounts=[200], + post=False, + ) + # Set date maturities + cl_inv_1.invoice_date_due = t_5 + cl_inv_2.invoice_date_due = t_10 + # Post clearing invoices + cl_inv_1.action_post() + cl_inv_2.action_post() + # Create wizard + cw_action = init_inv.action_open_invoice_clearing_wizard() + wizard = self.env[cw_action["res_model"]].browse(cw_action["res_id"]) + # Test Action: Unlink Lines + wizard._action_unlink_lines() + self.assertFalse(wizard.line_ids) + # Test Action: Add Lines + wizard._action_add_lines() + self.assertTrue(wizard.line_ids) + # Test Action: Sort Lines by Date Due + wizard.action_sort_by_date_due_asc() + slines = sorted_by_sequence(wizard.line_ids) + self.assertTrue(slines[0].date_maturity < slines[1].date_maturity) + wizard.action_sort_by_date_due_desc() + slines = sorted_by_sequence(wizard.line_ids) + self.assertTrue(slines[0].date_maturity > slines[1].date_maturity) + # Test Action: Sort Lines by Amount Residual + wizard.action_sort_by_residual_asc() + slines = sorted_by_sequence(wizard.line_ids) + self.assertTrue(slines[0].amount_residual < slines[1].amount_residual) + wizard.action_sort_by_residual_desc() + slines = sorted_by_sequence(wizard.line_ids) + self.assertTrue(slines[0].amount_residual > slines[1].amount_residual) + # Test Action: Fill Amount to Clear + wizard.action_fill_amount_to_clear() + wizard.invalidate_recordset() + self.assertTrue( + float_is_zero( + wizard.amount_to_clear, + precision_rounding=wizard.company_currency_id.rounding, + ) + ) + # Test Action: Reset Lines + wizard.action_reset_lines() + wizard.invalidate_recordset() + self.assertTrue( + not float_is_zero( + wizard.amount_to_clear, + precision_rounding=wizard.company_currency_id.rounding, + ) + ) + # Create moves + wizard.action_fill_amount_to_clear() + wizard.invalidate_recordset() + wizard.button_confirm() + self.assertEqual(init_inv.payment_state, "paid") + self.assertEqual(cl_inv_1.payment_state, "paid") + self.assertEqual(cl_inv_2.payment_state, "paid") + + def test_account_types(self): + aicw_model = self.env["account.invoice.clearing.wizard"] + # For lines to clear + self.assertEqual( + "liability_payable", + aicw_model._get_account_type_from_move_type( + "in_invoice", is_counterpart=False + ), + ) + self.assertEqual( + "asset_receivable", + aicw_model._get_account_type_from_move_type( + "out_invoice", is_counterpart=False + ), + ) + # For counterpart lines + self.assertEqual( + "asset_receivable", + aicw_model._get_account_type_from_move_type( + "in_invoice", is_counterpart=True + ), + ) + self.assertEqual( + "liability_payable", + aicw_model._get_account_type_from_move_type( + "out_invoice", is_counterpart=True + ), + ) diff --git a/account_invoice_clearing/views/account_move_view.xml b/account_invoice_clearing/views/account_move_view.xml new file mode 100644 index 00000000000..1c7c07553b9 --- /dev/null +++ b/account_invoice_clearing/views/account_move_view.xml @@ -0,0 +1,33 @@ + + + + + Invoice Clearing + + + list + code + action = records.action_open_invoice_clearing_wizard() + + + + account.move.form + account.move + + + +