Initial commit: OCA Financial packages (186 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:04 +02:00
commit 3e0e8473fb
8757 changed files with 947473 additions and 0 deletions

View file

@ -0,0 +1,44 @@
# Account Invoice Clearing
Odoo addon: account_invoice_clearing
## Installation
```bash
pip install odoo-bringout-oca-account-invoicing-account_invoice_clearing
```
## Dependencies
This addon depends on:
- account
## Manifest Information
- **Name**: Account Invoice Clearing
- **Version**: 16.0.1.0.1
- **Category**: Accounting/Accounting
- **License**: AGPL-3
- **Installable**: False
## Source
Based on [OCA/account-invoicing](https://github.com/OCA/account-invoicing) branch 16.0, addon `account_invoice_clearing`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,123 @@
========================
Account Invoice Clearing
========================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:a09d8ef5e74817a985e8dd3d512e49a8a8d6316684764838590f571b89695ecd
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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 <https://odoo-community.org/page/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 <https://github.com/OCA/account-invoicing/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 <https://github.com/OCA/account-invoicing/issues/new?body=module:%20account_invoice_clearing%0Aversion:%2016.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
~~~~~~~
* Moduon
Contributors
~~~~~~~~~~~~
* Eduardo de Miguel (`Moduon <https://www.moduon.team/>`__)
* Rafael Blasco (`Moduon <https://www.moduon.team/>`__)
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 <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-Shide|
This module is part of the `OCA/account-invoicing <https://github.com/OCA/account-invoicing/tree/16.0/account_invoice_clearing>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,2 @@
from . import models
from . import wizards

View file

@ -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.1",
"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",
],
}

View file

@ -0,0 +1,451 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_clearing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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 ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" "
"invisible=\"1\">Actions:</span>"
msgstr ""
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" "
"invisible=\"1\">Sort by:</span>"
msgstr ""
#. module: account_invoice_clearing
#. odoo-python
#: 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: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
#. odoo-python
#: 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_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
#. odoo-python
#: 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
#. odoo-python
#: 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 "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
#. odoo-python
#: 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
#. odoo-python
#: 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
#. odoo-python
#: 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
#. odoo-python
#: 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
#. odoo-python
#: 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
#. odoo-python
#: 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 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
#. odoo-python
#: 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__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 ""

View file

@ -0,0 +1,451 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_clearing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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 ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" "
"invisible=\"1\">Actions:</span>"
msgstr ""
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" "
"invisible=\"1\">Sort by:</span>"
msgstr ""
#. module: account_invoice_clearing
#. odoo-python
#: 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 "Konto"
#. module: account_invoice_clearing
#: model:ir.model,name:account_invoice_clearing.model_account_invoice_clearing_lines_wizard
msgid "Account Invoice Clearing Lines Wizard"
msgstr "Čarobnjak linija poravnanja faktura računa"
#. 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 "Iznos za poravnanje"
#. 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 "Iznos ostatka (uzlazno)"
#. 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 "Iznos ostatka (silazno)"
#. module: account_invoice_clearing
#. odoo-python
#: 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 "Iznos za poravnanje ne može biti veći od ostatka."
#. 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 "Može koristiti liniju"
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid "Cancel"
msgstr "Otkaži"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__clearing_id
msgid "Clearing"
msgstr "Poravnavanje"
#. 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 "Iznos poravnanja"
#. 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 "Komercijalni partner"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__company_id
msgid "Company"
msgstr "Preduzeće"
#. 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 "Valuta preduzeć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 "Kreiraj i uskladi"
#. 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 "Kreirao"
#. 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 "Kreirano"
#. module: account_invoice_clearing
#. odoo-python
#: 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 "Potražuje"
#. 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 "Datum"
#. 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 "Datum dospeća (uzlazno)"
#. 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 "Datum dospeća (silazno)"
#. module: account_invoice_clearing
#. odoo-python
#: 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 "Duguje"
#. 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 "Prikazani naziv"
#. 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 "Datum dospijeća"
#. 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 "Popuni iznose po redu"
#. 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 "ID"
#. module: account_invoice_clearing
#: model:ir.actions.server,name:account_invoice_clearing.action_invoice_clearing
msgid "Invoice Clearing"
msgstr "Poravnanje faktura"
#. module: account_invoice_clearing
#: model:ir.model,name:account_invoice_clearing.model_account_invoice_clearing_wizard
msgid "Invoice Clearing Wizard"
msgstr "Čarobnjak poravnanja faktur"
#. 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 "Poravnanje faktura"
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Invoices must be from the same commercial partner."
msgstr "Fakture moraju biti od istog komercijalnog partnera."
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Invoices must be of the same type."
msgstr "Fakture moraju biti istog tipa."
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Invoices must belong to the same company."
msgstr "Fakture moraju pripadati istoj kompaniji."
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__invoice_ids
msgid "Invoices/Bills"
msgstr "Fakture/Računi"
#. 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 "JSON vrednost podataka koji se prikazuju u pregledniku"
#. 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 "JSON vrednost premestanja koja treba da se kreira"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__journal_id
msgid "Journal"
msgstr "Vrsta naloga"
#. 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 "Žurnal"
#. module: account_invoice_clearing
#. odoo-python
#: 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 "Opis"
#. 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 "Zadnje mijenjano"
#. 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 "Zadnji ažurirao"
#. 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 "Zadnje ažurirano"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__line_ids
msgid "Lines"
msgstr "Stavke"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_data
msgid "Move Data"
msgstr "Podaci premestanja"
#. 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 "Stavka prijenosa"
#. 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 "Linije premestanja za poravnanje"
#. 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 "Linije premestanja za korišćenje u poravnanju"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_name
msgid "Move Name"
msgstr "Naziv premestanja"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_type
msgid "Move Type"
msgstr "Tip temeljnice"
#. 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 "Tekstovi premestanja i linija premestanja"
#. 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 "Opšta konfiguracija premestanja"
#. 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 "Naziv premestanja generisanog ovim čarobnjakom"
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Partner"
msgstr "Partner"
#. 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 "Prefiks za linije premestanja"
#. 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 "Pregled podataka premestanja"
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Preview of the clearing move related to %s"
msgstr "Pregled premestanja poravnanja vezanog za %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 "Artikal"
#. 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 "Uklanja sve linije i ponovo dodaje sve dostupne linije premestanja."
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid "Reset lines"
msgstr "Resetuj linije"
#. 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 "Preostali iznos"
#. 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 "Ukupan iznos ostatka (sa predznakom)"
#. 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 "Iznos ostatka za poravnanje (sa predznakom)"
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Resulting Clearing Move"
msgstr "Rezultujuće premestanje poravnanja"
#. 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 "Rezultujuće premestanje neće biti potpuno usklađeno."
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__sequence
msgid "Sequence"
msgstr "Sekvenca"
#. 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 "Sortira fakture po datumu dospeća uzlazno."
#. 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 "Sortira fakture po datumu dospeća silazno."
#. 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 "Sortira fakture po iznosu ostatka uzlazno."
#. 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 "Sortira fakture po iznosu ostatka silazno."
#. 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 "Sljedeće temeljnice dnevnika će biti kreirane"
#. 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 "Ukupan iznos ostatka (sa predznakom)"
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid "Use"
msgstr "Upotreba"

View file

@ -0,0 +1,514 @@
# 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 <informatica@totmaterial.es>\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 ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" "
"invisible=\"1\">Actions:</span>"
msgstr ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" "
"invisible=\"1\">Acciones:</span>"
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" "
"invisible=\"1\">Sort by:</span>"
msgstr ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" "
"invisible=\"1\">Corta por:</span>"
#. module: account_invoice_clearing
#. odoo-python
#: 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: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
#. odoo-python
#: 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_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
#. odoo-python
#: 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
#. odoo-python
#: 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 "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
#. odoo-python
#: 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
#. odoo-python
#: 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
#. odoo-python
#: 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
#. odoo-python
#: 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
#. odoo-python
#: 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
#. odoo-python
#: 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 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
#. odoo-python
#: 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__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"
#~ msgid "Add all compensation lines"
#~ msgstr "Añadir todas las líneas a compensar"
#~ 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."
#~ msgid "Analytic Account"
#~ msgstr "Cuenta analítica"
#~ msgid "Analytic Tags"
#~ msgstr "Etiquetas analíticas"
#~ msgid "Are you sure you want to clear the invoices?"
#~ msgstr "¿Está seguro que quiere compensar las facturas?"
#~ msgid "Empty lines"
#~ msgstr "Vaciar líneas"
#~ msgid "Removes all invoices."
#~ msgstr "Elimina todas las líneas de Compensación."
#~ msgid "The move of this entry line."
#~ msgstr "El apunte de este asiento."
#~ msgid "Utility field to express amount currency"
#~ msgstr "Campo de utilidad para expresar la moneda del importe"
#~ msgid ""
#~ "<span class=\"o_form_label\" style=\"font-weight:bolder;\">Actions:</span>"
#~ msgstr ""
#~ "<span class=\"o_form_label\" style=\"font-weight:bolder;\">Acciones:</"
#~ "span>"
#~ msgid ""
#~ "<span class=\"o_form_label\" style=\"font-weight:bolder;\">Sort by:</span>"
#~ msgstr ""
#~ "<span class=\"o_form_label\" style=\"font-weight:bolder;\">Ordenar por:</"
#~ "span>"

View file

@ -0,0 +1,471 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_clearing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-02-21 18:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\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"
"X-Generator: Weblate 5.6.2\n"
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" "
"invisible=\"1\">Actions:</span>"
msgstr ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" invisible=\"1\""
">Azioni:</span>"
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" "
"invisible=\"1\">Sort by:</span>"
msgstr ""
"<span class=\"o_form_label\" style=\"font-weight:bolder;\" invisible=\"1\""
">Ordina per:</span>"
#. module: account_invoice_clearing
#. odoo-python
#: 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 "Conto"
#. module: account_invoice_clearing
#: model:ir.model,name:account_invoice_clearing.model_account_invoice_clearing_lines_wizard
msgid "Account Invoice Clearing Lines Wizard"
msgstr "Procedura guidata liguidazione righe conto fatture"
#. 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 "Valore da liquidare"
#. 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 "Valore residuo (cre)"
#. 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 "Valore residuo (dec)"
#. module: account_invoice_clearing
#. odoo-python
#: 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 "Il valore da liquidare non può essere maggiore del valore residuo."
#. 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 ""
"Si vuole davvero usare la configurazione selezionata per cancellare le "
"fatture? Questa operazione creerà un nuovo movimento e riconcilierà ogni "
"riga con la rispettiva controparte."
#. 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 "Può usare riga"
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid "Cancel"
msgstr "Annulla"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__clearing_id
msgid "Clearing"
msgstr "Liquidazione"
#. 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 "Valore liquidazione"
#. 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 commerciale"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__company_id
msgid "Company"
msgstr "Azienda"
#. 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 "Valuta aziendale"
#. 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 "Crea e riconcilia"
#. 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 "Creato da"
#. 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 "Creato il"
#. module: account_invoice_clearing
#. odoo-python
#: 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 "Credito"
#. 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 "Data"
#. 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 "Data scadenza (cre)"
#. 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 "Data scadenza (dec)"
#. module: account_invoice_clearing
#. odoo-python
#: 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 "Debito"
#. 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 "Nome visualizzato"
#. 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 "Scadenza"
#. 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 "Compila valore in ordine"
#. 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 ""
"Compila l'importo da liquidare con l'importo residuo della fattura fino a "
"quando l'importo residuo totale è zero."
#. 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"
#. module: account_invoice_clearing
#: model:ir.actions.server,name:account_invoice_clearing.action_invoice_clearing
msgid "Invoice Clearing"
msgstr "Liquidazione fattura"
#. module: account_invoice_clearing
#: model:ir.model,name:account_invoice_clearing.model_account_invoice_clearing_wizard
msgid "Invoice Clearing Wizard"
msgstr "Procedura guidata liquidazione fattura"
#. 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 "Liquidazione fattura"
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Invoices must be from the same commercial partner."
msgstr "Le fatture devono essere dello stesso partner commerciale."
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Invoices must be of the same type."
msgstr "Le fatture devono essere dello stesso tipo."
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Invoices must belong to the same company."
msgstr "Le fatture devono appartenere alla stessa azienda."
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__invoice_ids
msgid "Invoices/Bills"
msgstr "Fatture cliente/fornitore"
#. 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 "Valore JSON dei dati da visualizzare nell'anteprima"
#. 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 "Valore JSON dei movimenti da creare"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__journal_id
msgid "Journal"
msgstr "Registro"
#. 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 "Registrazione contabile"
#. module: account_invoice_clearing
#. odoo-python
#: 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 "Etichetta"
#. 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 "Ultima modifica il"
#. 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 "Ultimo aggiornamento di"
#. 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 "Ultimo aggiornamento il"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__line_ids
msgid "Lines"
msgstr "Righe"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_data
msgid "Move Data"
msgstr "Data movimento"
#. 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 "Riga movimento"
#. 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 "Righe movimento da cancellare"
#. 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 "Righe movimento da usare per la pulizia"
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_wizard__move_name
msgid "Move Name"
msgstr "Nome movimento"
#. 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 movimento"
#. 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 "Testi movimento e righe movimento"
#. 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 "Configurazione generale movimento"
#. 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 "Nome del movimento generato da questaprocedura guidata"
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Partner"
msgstr "Partner"
#. 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 "Prefisso per le righe movimento"
#. 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 ""
"Prefisso da utilizzare nel nome delle righe movimento generate da questa "
"procedura guidata"
#. 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 "Anteprima dati movimento"
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Preview of the clearing move related to %s"
msgstr "Anteprima del movimento di pulizia relativo a %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 "Prodotto"
#. 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 ""
"Rimuove tutte le righe e aggiunge nuovamente tutte le righe movimento "
"disponibili."
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid "Reset lines"
msgstr "Resetta righe"
#. 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 "Importo residuo"
#. 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 "Totale importo residuo (firmato)"
#. 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 "Importo residuo da pulire (firmato)"
#. module: account_invoice_clearing
#. odoo-python
#: code:addons/account_invoice_clearing/wizards/account_invoice_clearing_wizard.py:0
#, python-format
msgid "Resulting Clearing Move"
msgstr "Movimento di pulizia risultante"
#. 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 "Il movimento risultante non verrà riconciliato completamente."
#. module: account_invoice_clearing
#: model:ir.model.fields,field_description:account_invoice_clearing.field_account_invoice_clearing_lines_wizard__sequence
msgid "Sequence"
msgstr "Sequenza"
#. 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 "Ordina le fatture per data scadenza crescente."
#. 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 "Ordina le fatture per data scadenza decrescente."
#. 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 "Ordina le fatture per importo residuo crescente."
#. 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 "Ordina le fatture per importo residuo decrescente."
#. 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 "Verrà generata la seguente registrazione contabile"
#. 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 ""
"Importo residuo di una registrazione contabile espresso nella valuta "
"aziendale."
#. 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 ""
"Questo campo viene usato per pagare e ricevere registrazioni contabili. Si "
"può inserire la data limite per il pagamento di questa riga."
#. 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 "Importo totale residuo (firmato)"
#. module: account_invoice_clearing
#: model_terms:ir.ui.view,arch_db:account_invoice_clearing.account_invoice_clearing_wizard_form_view
msgid "Use"
msgstr "Usa"

View file

@ -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

View file

@ -0,0 +1,2 @@
* Eduardo de Miguel (`Moduon <https://www.moduon.team/>`__)
* Rafael Blasco (`Moduon <https://www.moduon.team/>`__)

View file

@ -0,0 +1,3 @@
The development of this module has been financially supported by:
* Moduon Team S.L.

View file

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

View file

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

View file

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

View file

@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 account_invoice_clearing_wizard account.invoice.clearing.wizard model_account_invoice_clearing_wizard account.group_account_invoice 1 1 1 1
3 account_invoice_clearing_wizard_lines account.invoice.clearing.lines.wizard model_account_invoice_clearing_lines_wizard account.group_account_invoice 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,467 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Account Invoice Clearing</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="account-invoice-clearing">
<h1 class="title">Account Invoice Clearing</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:a09d8ef5e74817a985e8dd3d512e49a8a8d6316684764838590f571b89695ecd
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Alpha" src="https://img.shields.io/badge/maturity-Alpha-red.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-invoicing/tree/16.0/account_invoice_clearing"><img alt="OCA/account-invoicing" src="https://img.shields.io/badge/github-OCA%2Faccount--invoicing-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-invoicing-16-0/account-invoicing-16-0-account_invoice_clearing"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/account-invoicing&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module complements the functionality of <em>Automatic Entries</em> 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. <em>out_</em> types are cleared with <em>in_</em> 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.</p>
<div class="admonition important">
<p class="first admonition-title">Important</p>
<p class="last">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.
<a class="reference external" href="https://odoo-community.org/page/development-status">More details on development status</a></p>
</div>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-2">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-6">Contributors</a></li>
<li><a class="reference internal" href="#other-credits" id="toc-entry-7">Other credits</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-8">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<p>To use this module, you need to:</p>
<ol class="arabic simple">
<li>You must have unpaid invoices in the system for the same contact (or his childs) in <em>out_</em> and <em>in_</em> types.</li>
<li>Go to a view where invoices are shown. No matter if are Invoices or Bills.</li>
<li>Select one or several invoices/bills. You can also enter an invoice/bill and click on the <em>Invoice clearing</em> button if its open and fully paid.</li>
<li>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.</li>
<li>With the Sort buttons, you can sort the lines as appropriate.</li>
<li>With the actions button, you can reset, clear or autofill the amount to be used in the order previously chosen.</li>
<li>Check that the preview is as expected.</li>
<li>Press the Confirm button to create the invoice clearing.</li>
<li>A clearing journal entry will be generated for each invoice/bill to be cleared.</li>
<li>The resulting journal entries will reconcile all their lines with the initial move lines and the clearing moves lines.</li>
</ol>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#toc-entry-2">Known issues / Roadmap</a></h1>
<p>To be able to sort the initial invoice/bill lines in the wizard with sequence
and sort with buttons as in the clearing lines.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-invoicing/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/account-invoicing/issues/new?body=module:%20account_invoice_clearing%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-4">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-5">Authors</a></h2>
<ul class="simple">
<li>Moduon</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
<ul class="simple">
<li>Eduardo de Miguel (<a class="reference external" href="https://www.moduon.team/">Moduon</a>)</li>
<li>Rafael Blasco (<a class="reference external" href="https://www.moduon.team/">Moduon</a>)</li>
</ul>
</div>
<div class="section" id="other-credits">
<h2><a class="toc-backref" href="#toc-entry-7">Other credits</a></h2>
<p>The development of this module has been financially supported by:</p>
<ul class="simple">
<li>Moduon Team S.L.</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-8">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/Shide"><img alt="Shide" src="https://github.com/Shide.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-invoicing/tree/16.0/account_invoice_clearing">OCA/account-invoicing</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1 @@
from . import test_clearing_wizard

View file

@ -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
),
)

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Moduon Team S.L.
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0) -->
<data>
<record id="action_invoice_clearing" model="ir.actions.server">
<field name="name">Invoice Clearing</field>
<field name="model_id" ref="account.model_account_move" />
<field name="binding_model_id" ref="account.model_account_move" />
<field name="binding_view_types">list</field>
<field name="state">code</field>
<field
name="code"
>action = records.action_open_invoice_clearing_wizard()</field>
</record>
<record id="view_move_form" model="ir.ui.view">
<field name="name">account.move.form</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<xpath expr="//form/header" position="inside">
<button
name="action_open_invoice_clearing_wizard"
string="Invoice clearing"
class="oe_highlight"
type="object"
groups="account.group_account_invoice"
attrs="{'invisible': ['|', '|', ('state', '!=', 'posted'), ('move_type', '=', 'entry'), ('payment_state', '=', 'paid')]}"
/>
</xpath>
</field>
</record>
</data>

View file

@ -0,0 +1 @@
from . import account_invoice_clearing_wizard

View file

@ -0,0 +1,650 @@
# Copyright 2023 Moduon Team S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0)
import json
from collections import OrderedDict
from datetime import datetime
from odoo import _, api, exceptions, fields, models
from odoo.tools import float_is_zero, groupby
class AccountInvoiceClearingWizard(models.TransientModel):
_name = "account.invoice.clearing.wizard"
_description = "Invoice Clearing Wizard"
_transient_max_hours = 6 # 6 hours to allow vacuuming
@api.model
def _get_default_journal(self):
return self.env["account.journal"].search(
[
("company_id", "=", self.env.company.id),
("type", "=", "general"),
],
limit=1,
)
move_name = fields.Char(
help="Name of the move generated by this wizard",
default="Clearing operation",
)
move_line_prefix = fields.Char(
string="Prefix for move lines",
help="Prefix to be used in the name of the move lines generated by this wizard",
default="Clearing operation",
)
invoice_ids = fields.Many2many(
comodel_name="account.move",
domain=[("move_type", "!=", "entry"), ("state", "=", "posted")],
string="Invoices/Bills",
required=True,
)
move_line_ids = fields.Many2many(
comodel_name="account.move.line",
compute="_compute_initial_data",
store=True,
)
company_id = fields.Many2one(
comodel_name="res.company",
compute="_compute_initial_data",
store=True,
)
company_currency_id = fields.Many2one(
comodel_name="res.currency",
compute="_compute_initial_data",
store=True,
)
move_type = fields.Char(
compute="_compute_initial_data",
store=True,
)
commercial_partner_id = fields.Many2one(
comodel_name="res.partner",
compute="_compute_initial_data",
store=True,
)
amount_to_clear = fields.Monetary(
compute="_compute_amount_to_clear",
currency_field="company_currency_id",
store=False,
)
line_ids = fields.One2many(
comodel_name="account.invoice.clearing.lines.wizard",
inverse_name="clearing_id",
string="Lines",
)
date = fields.Date(
default=fields.Date.context_today,
required=True,
)
journal_id = fields.Many2one(
comodel_name="account.journal",
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]",
string="Journal",
check_company=True,
required=True,
default=_get_default_journal,
)
# Preview resulting move
move_data = fields.Text(
compute="_compute_move_data",
help="JSON value of the moves to be created",
)
preview_move_data = fields.Text(
compute="_compute_preview_move_data",
help="JSON value of the data to be displayed in the previewer",
)
def default_get(self, fields):
res = super().default_get(fields)
active_model = self.env.context.get("active_model")
active_ids = self.env.context.get("active_ids")
if active_model == "account.move" and active_ids:
res["invoice_ids"] = [(6, 0, active_ids)]
return res
@api.model
def _get_account_type_from_move_type(self, move_type, is_counterpart=False):
move_types = ["liability_payable", "asset_receivable"]
if is_counterpart and "refund" not in move_type:
move_types.reverse()
if move_type.startswith("out_"):
move_types.reverse()
return move_types[0]
# Computes & Onchange
@api.depends("invoice_ids")
def _compute_initial_data(self):
"""Compute initial data for the wizard."""
self.update(
{
"move_type": False,
"commercial_partner_id": False,
"company_id": False,
"company_currency_id": False,
"move_line_ids": False,
}
)
for record in self:
if not record.invoice_ids:
continue
company = self._get_companies(record.invoice_ids)[0]
record.move_type = self._get_move_types(record.invoice_ids)[0]
record.commercial_partner_id = self._get_commercial_partners(
record.invoice_ids
)[0]
record.company_id = company
record.company_currency_id = company.currency_id
account_type = self._get_account_type_from_move_type(record.move_type)
record.move_line_ids = self.invoice_ids.mapped("line_ids").filtered(
lambda ml, acc_type=account_type: not ml.full_reconcile_id
and ml.balance
and ml.account_id.reconcile
and ml.account_id.account_type == acc_type
)
@api.depends("move_line_ids", "line_ids")
def _compute_move_data(self):
"""Compute the data to be used by the account.move form view."""
self.update({"move_data": "[]"})
for record in self:
if not record.move_line_ids or not record.line_ids:
continue
record.move_data = json.dumps(
record.with_context(preview=True)._get_move_dict_vals()
)
@api.depends("move_data")
def _compute_preview_move_data(self):
"""Compute the data to be displayed in the previewer."""
am_model = self.env["account.move"]
for record in self:
preview_columns = [
{"field": "account_id", "label": _("Account")},
{"field": "name", "label": _("Label")},
{"field": "partner_id", "label": _("Partner")},
{
"field": "debit",
"label": _("Debit"),
"class": "text-right text-nowrap",
},
{
"field": "credit",
"label": _("Credit"),
"class": "text-right text-nowrap",
},
]
move_vals = json.loads(record.move_data)
preview_data = []
for move in move_vals:
preview_vals = am_model._move_dict_to_preview_vals(
move,
record.company_currency_id,
)
preview_vals["group_name"] = _(
"Preview of the clearing move related to %s",
move["related_to_move"],
)
preview_data += [preview_vals]
record.preview_move_data = json.dumps(
{
"groups_vals": preview_data,
"options": {
"discarded_number": False,
"columns": preview_columns,
},
}
)
def _compute_amount_to_clear(self):
"""Compute the remaining amount to clear."""
for record in self:
residual_amount = sum(record.move_line_ids.mapped("amount_residual"))
amount_cleared = sum(record.line_ids.mapped("amount_to_clear"))
record.amount_to_clear = residual_amount + amount_cleared
@api.onchange("move_type")
def _onchange_move_type(self):
"""Create lines for all invoices of the counterpart types."""
data = [(5, 0, 0)]
if self.move_type and self.commercial_partner_id:
for idx, move_line in enumerate(
self._get_available_clearing_move_lines(
self.move_type, self.commercial_partner_id, self.move_line_ids
),
10,
):
data.append((0, 0, {"move_line_id": move_line.id, "sequence": idx}))
self.line_ids = data
# Actions
def action_reopen_wizard(self):
"""Reopen the wizard."""
self.ensure_one()
action = (
self.sudo()
.env.ref("account_invoice_clearing.action_account_invoice_clearing_wizard")
.read()[0]
)
action["res_id"] = self.id
return action
def action_reset_lines(self):
"""Reset all lines."""
self.ensure_one()
self._action_unlink_lines()
self._action_add_lines()
return self.action_reopen_wizard()
def action_fill_amount_to_clear(self):
"""Fill the amount to clear in all lines until amount to clear is zero."""
self.ensure_one()
# Always inverse sign because move lines has negative residual amounts
amount_to_clear = -self.amount_to_clear
for line in self.line_ids.filtered(lambda line: not line.amount_to_clear):
cmp_fnc = float.__le__ if line.amount_residual < 0.0 else float.__ge__
if float_is_zero(
amount_to_clear, precision_rounding=line.company_currency_id.rounding
):
line.amount_to_clear = 0.0
elif cmp_fnc(amount_to_clear, line.amount_residual):
line.amount_to_clear = line.amount_residual
amount_to_clear -= line.amount_residual
else:
line.amount_to_clear = amount_to_clear
amount_to_clear = 0.0
return self.action_reopen_wizard()
def _action_unlink_lines(self):
"""Unlink all lines."""
self.ensure_one()
self.line_ids = [(5, 0, 0)]
return self.action_reopen_wizard()
def _action_add_lines(self):
"""Add all possible lines."""
self.ensure_one()
existing_move_lines = self.line_ids.mapped("move_line_id")
last_sequence = self.line_ids[-1].sequence if self.line_ids else 0
new_lines = []
for move_line in self._get_available_clearing_move_lines(
self.move_type, self.commercial_partner_id, self.move_line_ids
):
if move_line in existing_move_lines:
continue
new_lines.append(
(0, 0, {"move_line_id": move_line.id, "sequence": last_sequence + 1})
)
last_sequence += 10
if new_lines:
self.line_ids = new_lines
return self.action_reopen_wizard()
def _action_sort_by_date_due(self, reverse=False):
"""Sort lines by date due."""
self.ensure_one()
max_date = datetime.max.date()
sorted_lines = self.line_ids.sorted(
key=lambda line: line.date_maturity or max_date, reverse=reverse
)
for seq, line in enumerate(sorted_lines, start=10):
line.sequence = seq
return self.action_reopen_wizard()
def action_sort_by_date_due_asc(self):
"""Sort lines by date due ascending."""
return self._action_sort_by_date_due(reverse=False)
def action_sort_by_date_due_desc(self):
"""Sort lines by date due descending."""
return self._action_sort_by_date_due(reverse=True)
def _action_sort_by_residual(self, reverse=False):
"""Sort lines by residual amount."""
self.ensure_one()
sorted_lines = self.line_ids.sorted(
key=lambda line: line.amount_residual, reverse=reverse
)
for seq, line in enumerate(sorted_lines, start=10):
line.sequence = seq
return self.action_reopen_wizard()
def action_sort_by_residual_asc(self):
"""Sort lines by residual amount ascending."""
return self._action_sort_by_residual(reverse=False)
def action_sort_by_residual_desc(self):
"""Sort lines by residual amount descending."""
return self._action_sort_by_residual(reverse=True)
def button_confirm(self):
"""Create the clearing move."""
self.ensure_one()
am_model = self.env["account.move"]
aml_model = self.env["account.move.line"]
# Get the fresh resulting moves data
res_ids = []
moves_data = self._get_move_dict_vals()
for move_data in moves_data:
# Extract in order the move_line wich every line needs to be reconciled
to_concile_lines = []
for move_line in move_data["line_ids"]:
to_concile_lines.append(
aml_model.browse(move_line[2]["move_line_id_to_reconcile"])
)
del move_line[2]["move_line_id_to_reconcile"]
# Create move with cleaned data
del move_data["related_to_move"]
move = am_model.create(move_data)
move.action_post()
res_ids.append(move.id)
for idx, move_line in enumerate(move.line_ids):
(move_line | to_concile_lines[idx]).reconcile()
# Build resulting action
action = {
"name": _("Resulting Clearing Move"),
"type": "ir.actions.act_window",
"res_model": "account.move",
"view_mode": "form",
"target": "current",
}
if len(res_ids) > 1:
action.update(
{
"domain": [("id", "in", res_ids)],
"view_mode": "tree,form",
}
)
else:
action["res_id"] = res_ids[0]
return action
# Helpers
@api.model
def _get_commercial_partners(self, invoices):
"""Get the commercial partners of the invoices."""
partners = invoices.mapped("commercial_partner_id")
return partners.mapped("commercial_partner_id")
@api.model
def _get_companies(self, invoices):
"""Get the companies of the invoices."""
return invoices.mapped("company_id")
@api.model
def _get_move_types(self, invoices):
"""Get the move types of the invoices."""
return list(set(invoices.mapped("move_type")))
@api.model
def _get_available_clearing_move_lines(self, move_type, partner, move_lines):
"""Get the move lines that can be used for clearing."""
counterpart_account_type = self._get_account_type_from_move_type(
move_type, is_counterpart=True
)
debit_credit_field = (
"credit" if sum(move_lines.mapped("amount_residual")) > 0 else "debit"
)
return (
self.env["account.move.line"]
.sudo()
.search(
[
("id", "not in", move_lines.ids),
("account_id.account_type", "=", counterpart_account_type),
("reconciled", "=", False),
("partner_id", "child_of", partner.id),
("parent_state", "=", "posted"),
("account_id.reconcile", "=", True),
("company_id", "=", move_lines.mapped("company_id").id),
(debit_credit_field, ">", 0.0),
],
order="date_maturity asc, amount_residual asc",
)
)
def _get_remaining_amount_to_clear(self):
"""Get the remaining amount to clear."""
self.ensure_one()
return self.amount_to_clear + sum(self.line_ids.mapped("amount_to_clear"))
# flake8: noqa: C901
def _get_move_dict_vals(self):
self.ensure_one()
move_name, move_line_prefix = self.move_name, self.move_line_prefix
if self.env.context.get("preview"):
move_name, move_line_prefix = "<Move Name>", "<Move Line Prefix>"
def fiz(amount):
return float_is_zero(
amount, precision_rounding=self.company_currency_id.rounding
)
def get_debit_credit(amount):
if amount > 0.0:
return amount, 0.0
return 0.0, 0.0 if fiz(amount) else -amount
def get_amount_to_use(amount_to_fill, avaiable_amount):
amount = max(amount_to_fill, avaiable_amount)
if amount_to_fill > 0.0:
amount = min(amount_to_fill, avaiable_amount)
return self.company_currency_id.round(amount)
def build_line_name(move_line):
txts = [move_line_prefix, move_line.move_id.name, move_line.name]
if move_line.move_id.name == move_line.name:
txts[1:] = [move_line.move_id.name]
return " - ".join(list(map(str.strip, filter(lambda t: t, txts))))
def get_clear_sign_modifier(a, b):
different_sign = (a < 0.0 and b > 0.0) or (a > 0.0 and b < 0.0)
return -1.0 if different_sign else 1.0
clear_lines_availability = OrderedDict()
for cl in self.line_ids.filtered(lambda line: line.amount_to_clear):
clear_lines_availability[cl.move_line_id] = cl.amount_to_clear
move_vals = []
for move, move_lines in groupby(self.move_line_ids, key=lambda ml: ml.move_id):
line_vals = []
for move_line in move_lines:
related_move_line_vals = []
ml_amount_residual, cl_balance = move_line.amount_residual, 0.0
for cl_move_line in clear_lines_availability:
# Move line fully cleared
if fiz(ml_amount_residual):
break
# Clearing line fully used
if fiz(clear_lines_availability[cl_move_line]):
continue
# Choose correct sign to compute clearing amount
clear_sign = get_clear_sign_modifier(
ml_amount_residual, clear_lines_availability[cl_move_line]
)
# Used amount for clearing (sign aligned)
used_amount = get_amount_to_use(
ml_amount_residual,
clear_sign * clear_lines_availability[cl_move_line],
)
# Clearing balance for this move line
cl_balance += clear_sign * used_amount
# Remaining amount to clear on this move
ml_amount_residual -= used_amount
# Remaining amount on this clearing move line
clear_lines_availability[cl_move_line] += used_amount
cl_debit, cl_credit = get_debit_credit(used_amount)
related_move_line_vals.append(
{
"name": build_line_name(cl_move_line),
"debit": cl_debit,
"credit": cl_credit,
"account_id": cl_move_line.account_id.id,
"partner_id": self.commercial_partner_id.id,
"currency_id": self.company_currency_id.id,
"move_line_id_to_reconcile": cl_move_line.id,
}
)
ml_debit, ml_credit = get_debit_credit(cl_balance)
if fiz(ml_debit) and fiz(ml_credit):
continue
line_vals.append(
{
"name": build_line_name(move_line),
"debit": ml_debit,
"credit": ml_credit,
"account_id": move_line.account_id.id,
"partner_id": self.commercial_partner_id.id,
"currency_id": self.company_currency_id.id,
"move_line_id_to_reconcile": move_line.id,
}
)
line_vals.extend(related_move_line_vals)
if not line_vals:
continue
move_vals.append(
{
"currency_id": self.company_currency_id.id,
"move_type": "entry",
"journal_id": self.journal_id.id,
"date": fields.Date.to_string(self.date),
"ref": move_name,
"line_ids": [(0, 0, line) for line in line_vals],
"related_to_move": move.name,
}
)
return move_vals
# Constrains
@api.constrains("invoice_ids")
def _check_invoices_same_partner(self):
"""Check that all invoices are from the same
commercial partner, type and company."""
for record in self:
if len(set(self._get_commercial_partners(record.invoice_ids))) > 1:
raise exceptions.ValidationError(
_("Invoices must be from the same commercial partner.")
)
if len(self._get_move_types(record.invoice_ids)) > 1:
raise exceptions.ValidationError(
_("Invoices must be of the same type.")
)
if len(self._get_companies(record.invoice_ids)) > 1:
raise exceptions.ValidationError(
_("Invoices must belong to the same company.")
)
class AccountInvoiceClearingLinesWizard(models.TransientModel):
_name = "account.invoice.clearing.lines.wizard"
_description = "Account Invoice Clearing Lines Wizard"
_order = "sequence, id"
clearing_id = fields.Many2one(
comodel_name="account.invoice.clearing.wizard",
string="Clearing",
)
sequence = fields.Integer(
default=10,
)
move_line_id = fields.Many2one(
comodel_name="account.move.line",
string="Move Line",
required=True,
)
invoice_id = fields.Many2one(
related="move_line_id.move_id",
readonly=True,
)
date = fields.Date(
related="move_line_id.date",
readonly=True,
)
date_maturity = fields.Date(
related="move_line_id.date_maturity",
readonly=True,
)
company_currency_id = fields.Many2one(
related="move_line_id.company_currency_id",
readonly=True,
)
amount_residual = fields.Monetary(
related="move_line_id.amount_residual",
currency_field="company_currency_id",
readonly=True,
)
debit = fields.Monetary(
related="move_line_id.debit",
currency_field="company_currency_id",
readonly=True,
)
credit = fields.Monetary(
related="move_line_id.credit",
currency_field="company_currency_id",
readonly=True,
)
account_id = fields.Many2one(
related="move_line_id.account_id",
readonly=True,
)
name = fields.Char(
related="move_line_id.name",
readonly=True,
)
product_id = fields.Many2one(
related="move_line_id.product_id",
readonly=True,
)
amount_to_clear = fields.Monetary(
string="Clearing amount",
currency_field="company_currency_id",
default=0.0,
readonly=True,
)
can_use_line = fields.Boolean(
compute="_compute_can_use_line",
store=False,
)
# Compute
@api.depends("amount_residual")
def _compute_can_use_line(self):
"""Compute if the line can be used for clearing."""
self.update({"can_use_line": False})
for record in self:
if record.clearing_id.amount_to_clear == 0.0:
continue
record.can_use_line = record.amount_residual != record.amount_to_clear
# Actions
def action_use_all_amount_residual(self):
"""Fill the amount to clear with the residual amount."""
self.ensure_one()
clearing = self.clearing_id
if float_is_zero(
clearing.amount_to_clear,
precision_digits=clearing.company_currency_id.rounding,
):
return clearing.action_reopen_wizard()
# Always inverse sign because move lines has negative residual amounts
amount_to_clear = -clearing.amount_to_clear
cmp_fnc = float.__le__ if self.amount_residual < 0.0 else float.__ge__
if cmp_fnc(amount_to_clear, self.amount_residual):
amount_to_clear = self.amount_residual
self.amount_to_clear = amount_to_clear
return clearing.action_reopen_wizard()
# Constrains
@api.constrains("amount_to_clear")
def _check_amount_to_clear(self):
"""Check that the amount to clear is not greater than the residual amount."""
for record in self:
if abs(record.amount_to_clear) > abs(record.amount_residual):
raise exceptions.ValidationError(
_("Amount to clear cannot be greater than residual amount.")
)

View file

@ -0,0 +1,226 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Moduon Team S.L.
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0) -->
<data>
<record id="action_account_invoice_clearing_wizard" model="ir.actions.act_window">
<field name="name">Invoice clearing</field>
<field name="res_model">account.invoice.clearing.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<record id="account_invoice_clearing_wizard_form_view" model="ir.ui.view">
<field name="name">account.invoice.clearing.wizard.form.view</field>
<field name="model">account.invoice.clearing.wizard</field>
<field name="arch" type="xml">
<form string="Invoice clearing">
<field name="invoice_ids" invisible="1" />
<field name="company_id" invisible="1" />
<field name="amount_to_clear" invisible="1" />
<field name="move_data" invisible="1" />
<sheet>
<group name="group_config">
<group
name="group_config_left"
string="Move general configuration"
colspan="1"
>
<field name="journal_id" />
<field name="date" />
</group>
<group
name="group_config_right"
string="Move and Move lines texts"
colspan="1"
>
<field name="move_name" />
<field name="move_line_prefix" />
</group>
</group>
<group
name="group_move_lines_to_clear"
string="Move Lines to clear"
>
<field name="move_line_ids" nolabel="1" colspan="2">
<tree limit="4">
<field name="move_id" />
<field name="name" optional="hide" />
<field name="account_id" optional="hide" />
<field name="date" optional="hide" />
<field name="date_maturity" optional="show" />
<field name="company_currency_id" invisible="1" />
<field name="debit" optional="hide" />
<field name="credit" optional="hide" />
<field
name="amount_residual"
sum="Total Amount Residual (Signed)"
/>
</tree>
</field>
</group>
<group
name="group_invoices_to_clear_with"
string="Move Lines to use for clearing"
colspan="2"
>
<div name="group_lines_actions" class="o_row mb-2" colspan="2">
<span
class="o_form_label"
style="font-weight:bolder;"
invisible="1"
>Actions:</span>
<button
name="action_fill_amount_to_clear"
type="object"
string="Fill amounts in order"
icon="fa-arrow-right"
class="btn-primary"
help="Fills the amount to clear with the residual amount of the invoice until the total residual amount is zero."
/>
<button
name="action_reset_lines"
type="object"
string="Reset lines"
icon="fa-refresh"
class="btn-outline-primary"
help="Removes all lines and adds all available move lines again."
/>
</div>
<div
name="group_lines_sort"
class="o_row float-end mb-1"
colspan="2"
>
<span
class="o_form_label"
style="font-weight:bolder;"
invisible="1"
>Sort by:</span>
<button
name="action_sort_by_date_due_asc"
type="object"
string="Date due (asc)"
icon="fa-sort-alpha-asc"
class="oe_link"
help="Sorts the invoices by date due ascending."
/>
<button
name="action_sort_by_date_due_desc"
type="object"
string="Date due (desc)"
icon="fa-sort-alpha-desc"
class="oe_link"
help="Sorts the invoices by date due descending."
/>
<button
name="action_sort_by_residual_asc"
type="object"
string="Amount residual (asc)"
icon="fa-sort-numeric-asc"
class="oe_link"
help="Sorts the invoices by residual amount ascending."
/>
<button
name="action_sort_by_residual_desc"
type="object"
string="Amount residual (desc)"
icon="fa-sort-numeric-desc"
class="oe_link"
help="Sorts the invoices by residual amount descending."
/>
</div>
<div name="group_lines" class="o_row" colspan="2">
<field
name="line_ids"
colspan="2"
nolabel="1"
options="{'no_create': True, 'no_open': True}"
>
<tree
create="false"
delete="false"
decoration-success="amount_residual == amount_to_clear"
decoration-warning="amount_to_clear != 0.0 and (amount_residual != amount_to_clear)"
decoration-muted="amount_to_clear == 0.0 and not can_use_line"
>
<field
name="sequence"
widget="handle"
attrs="{'column_invisible': [('parent.move_data', '!=', '[]')]}"
/>
<field name="invoice_id" />
<field name="move_line_id" invisible="1" />
<field name="account_id" optional="hide" />
<field name="name" optional="hide" />
<field name="product_id" optional="hide" />
<field name="date" optional="hide" />
<field name="date_maturity" />
<field name="company_currency_id" invisible="1" />
<field
name="amount_residual"
sum="Residual Amount Total (Signed)"
/>
<field name="debit" optional="hide" />
<field name="credit" optional="hide" />
<field
name="amount_to_clear"
sum="Residual Amount to clear (Signed)"
/>
<field name="can_use_line" invisible="1" />
<button
name="action_use_all_amount_residual"
type="object"
string="Use"
icon="fa-arrow-right"
attrs="{'invisible': [('can_use_line', '=', False)]}"
/>
</tree>
</field>
</div>
</group>
<group
name="group_preview"
string="The following Journal Entries will be generated"
colspan="2"
attrs="{'invisible': [('move_data', '=', '[]')]}"
>
<div
class="alert alert-info mb-0"
role="alert"
attrs="{'invisible': [('amount_to_clear', '=', 0.0)]}"
colspan="2"
>
Resulting move will not be fully reconciled.
</div>
<field
name="preview_move_data"
widget="grouped_view_widget"
nolabel="1"
colspan="2"
/>
</group>
</sheet>
<footer>
<button
string="Create and Concile"
name="button_confirm"
type="object"
class="oe_highlight"
confirm="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."
data-hotkey="c"
attrs="{'invisible': [('move_data', '=', '[]')]}"
/>
<button
string="Cancel"
class="oe_link"
special="cancel"
data-hotkey="z"
/>
</footer>
</form>
</field>
</record>
</data>

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Account_invoice_clearing Module - account_invoice_clearing
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for account_invoice_clearing. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,5 @@
# Dependencies
This addon depends on:
- [account](../../odoo-bringout-oca-ocb-account)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon account_invoice_clearing or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-account-invoicing-account_invoice_clearing"
# or
uv pip install odoo-bringout-oca-account-invoicing-account_invoice_clearing"
```

View file

@ -0,0 +1,12 @@
# Models
Detected core models and extensions in account_invoice_clearing.
```mermaid
classDiagram
class account_move
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: account_invoice_clearing. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon account_invoice_clearing
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,34 @@
# Security
Access control and security definitions in account_invoice_clearing.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../account_invoice_clearing/security/ir.model.access.csv)**
- 2 model access rules
## Record Rules
Row-level security rules defined in:
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[ir.model.access.csv](../account_invoice_clearing/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon account_invoice_clearing
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,42 @@
[project]
name = "odoo-bringout-oca-account-invoicing-account_invoice_clearing"
version = "16.0.0"
description = "Account Invoice Clearing - Account invoice clearing wizard"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-account>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["account_invoice_clearing"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]