mirror of
https://github.com/bringout/oca-ocb-l10n_europe.git
synced 2026-04-26 12:01:59 +02:00
19.0 vanilla
This commit is contained in:
parent
ff721d030e
commit
7721452493
1826 changed files with 124775 additions and 274114 deletions
|
|
@ -45,38 +45,15 @@ pip install odoo-bringout-oca-ocb-l10n_latam_check
|
|||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- account_check_printing
|
||||
- account
|
||||
- base_vat
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Third Party and Deferred/Electronic Checks Management
|
||||
- **Version**: 1.0.0
|
||||
- **Category**: Accounting/Localizations
|
||||
- **License**: LGPL-3
|
||||
- **Installable**: True
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `l10n_latam_check`.
|
||||
- Repository: https://github.com/OCA/OCB
|
||||
- Branch: 19.0
|
||||
- Path: addons/l10n_latam_check
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original LGPL-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
|
||||
- Reports: doc/REPORTS.md
|
||||
- Security: doc/SECURITY.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
|
||||
This package preserves the original LGPL-3 license.
|
||||
|
|
|
|||
|
|
@ -42,21 +42,19 @@ There are 2 main Payment Methods additions:
|
|||
""",
|
||||
'author': 'ADHOC SA',
|
||||
'license': 'LGPL-3',
|
||||
'images': [
|
||||
],
|
||||
'depends': [
|
||||
'account_check_printing',
|
||||
'account',
|
||||
'base_vat',
|
||||
],
|
||||
'data': [
|
||||
'data/account_payment_method_data.xml',
|
||||
'wizards/l10n_latam_payment_mass_transfer_views.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'security/security.xml',
|
||||
'views/account_payment_view.xml',
|
||||
'views/account_journal_view.xml',
|
||||
'views/l10n_latam_check_view.xml',
|
||||
'views/report_payment_receipt_templates.xml',
|
||||
'wizards/account_payment_register_views.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'application': False,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,23 +1,40 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
|
||||
<record id="account_payment_method_own_checks" model="account.payment.method">
|
||||
<field name="name">Own Checks</field>
|
||||
<field name="name@es_419">Cheques Propios</field>
|
||||
<field name="code">own_checks</field>
|
||||
<field name="payment_type">outbound</field>
|
||||
</record>
|
||||
|
||||
<!-- third party checks -->
|
||||
<record id="account_payment_method_new_third_party_checks" model="account.payment.method">
|
||||
<field name="name">New Third Party Checks</field>
|
||||
<field name="name@es_419">Nuevo cheque de Terceros Existente</field>
|
||||
<field name="code">new_third_party_checks</field>
|
||||
<field name="payment_type">inbound</field>
|
||||
</record>
|
||||
|
||||
<record id="account_payment_method_in_third_party_checks" model="account.payment.method">
|
||||
<field name="name">Existing Third Party Checks</field>
|
||||
<field name="name@es_419">Cheque de Terceros Existente</field>
|
||||
<field name="code">in_third_party_checks</field>
|
||||
<field name="payment_type">inbound</field>
|
||||
</record>
|
||||
|
||||
<record id="account_payment_method_out_third_party_checks" model="account.payment.method">
|
||||
<field name="name">Existing Third Party Checks</field>
|
||||
<field name="name@es_419">Cheque de Terceros Existente</field>
|
||||
<field name="code">out_third_party_checks</field>
|
||||
<field name="payment_type">outbound</field>
|
||||
</record>
|
||||
|
||||
<record id="account_payment_method_return_third_party_checks" model="account.payment.method">
|
||||
<field name="name">Return Third Party Checks</field>
|
||||
<field name="name@es_419">Cheques de terceros devueltos</field>
|
||||
<field name="code">return_third_party_checks</field>
|
||||
<field name="payment_type">outbound</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -1,442 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_latam_check
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-11-22 17:42+0000\n"
|
||||
"PO-Revision-Date: 2023-11-22 17:42+0000\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: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "(Check %s)"
|
||||
msgstr "(Cheque %s)"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_account_journal__l10n_latam_manual_checks
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_account_payment__l10n_latam_manual_checks
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_account_payment_register__l10n_latam_manual_checks
|
||||
msgid ""
|
||||
"* Allows putting numbers manually\n"
|
||||
"* Enables Check Cash-In Date feature\n"
|
||||
"* Disables printing"
|
||||
msgstr ""
|
||||
"* Se le permite poner números manualmente\n"
|
||||
"* Nuevo campo para fecha de pago (Fecha de Pago del Cheque)\n"
|
||||
"* La impresión esta deshabilitada"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid ""
|
||||
"<span attrs=\"{'invisible': [('l10n_latam_check_current_journal_id', '!=', "
|
||||
"False)]}\">Not in Wallet</span>"
|
||||
msgstr ""
|
||||
"<span attrs=\"{'invisible': [('l10n_latam_check_current_journal_id', '!=', "
|
||||
"False)]}\">No en Mano</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Plantilla de Plan de Cuentas"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
#, python-format
|
||||
msgid "All selected checks must be on the same journal and on hand"
|
||||
msgstr ""
|
||||
"Todos los cheques seleccionados deben estan en el mismo Diario y a mano"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
#, python-format
|
||||
msgid "All the selected checks must be posted"
|
||||
msgstr "Todos los cheques seleccionados deben estar publicados"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_l10n_latam_payment_mass_transfer_form
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_check_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__check_ids
|
||||
msgid "Check"
|
||||
msgstr "Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Check \"%s\" is not anymore in journal \"%s\", it seems it has been moved by"
|
||||
" another payment."
|
||||
msgstr ""
|
||||
"Cheque \"%s\" ya no se encuentra en el diario \"%s\", parece que se movió en"
|
||||
" otro pago."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "Check %s delivered"
|
||||
msgstr "Cheque %s entregado"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "Check %s received"
|
||||
msgstr "Cheque %s recibido"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "Check '%s' is on journal '%s', it can't be received it again"
|
||||
msgstr "Cheque '%s' está en el diario '%s', no podemos recibirlo nuevamente"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_bank_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_check_bank_id
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_register_form
|
||||
msgid "Check Bank"
|
||||
msgstr "Banco del Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_payment_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_check_payment_date
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
msgid "Check Cash-In Date"
|
||||
msgstr "Fecha de Pago del Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_current_journal_id
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "Check Current Journal"
|
||||
msgstr "Diario del Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_issuer_vat
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_check_issuer_vat
|
||||
msgid "Check Issuer VAT"
|
||||
msgstr "CUIT Emisor del Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_register_form
|
||||
msgid "Check Issuer Vat"
|
||||
msgstr "CUIT Emisor del Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_check_number
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "Check Number"
|
||||
msgstr "Número de Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_operation_ids
|
||||
#, python-format
|
||||
msgid "Check Operations"
|
||||
msgstr "Operaciones del Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_view_l10n_latam_payment_mass_transfer
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_tree
|
||||
msgid "Check Transfer"
|
||||
msgstr "Transferir Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_journal_tree
|
||||
msgid "Checks Management"
|
||||
msgstr "Manejo de Cheques"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_l10n_latam_payment_mass_transfer
|
||||
msgid "Checks Mass Transfers"
|
||||
msgstr "Transferencia Masiva de Cheques"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
msgid "Checks on hand"
|
||||
msgstr "Cheque en mano"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__company_id
|
||||
msgid "Company"
|
||||
msgstr "Compañía"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_l10n_latam_payment_mass_transfer_form
|
||||
msgid "Create Transfers"
|
||||
msgstr "Crear Transferencia"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado el"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_tree
|
||||
msgid "Current Journal"
|
||||
msgstr "Diario Actual"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_operations_tree
|
||||
msgid "Customer"
|
||||
msgstr "Cliente"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_account_payment__l10n_latam_check_payment_date
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_account_payment_register__l10n_latam_check_payment_date
|
||||
msgid "Date from when you can cash in the check, turn the check into cash"
|
||||
msgstr ""
|
||||
"Fecha a partir de la cual puedes cobrar el checque, convertirlo en dinero"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__destination_journal_id
|
||||
msgid "Destination Journal"
|
||||
msgstr "Diario de Destino"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre Mostrado"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:account.payment.method,name:l10n_latam_check.account_payment_method_in_third_party_checks
|
||||
#: model:account.payment.method,name:l10n_latam_check.account_payment_method_out_third_party_checks
|
||||
msgid "Existing Third Party Checks"
|
||||
msgstr "Cheque de Terceros Existente"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"It seems you're trying to move a check with a date (%s) prior to last "
|
||||
"operation done with the check (%s). This may be wrong, please double check "
|
||||
"it. By continue, the last operation on the check will remain being %s"
|
||||
msgstr ""
|
||||
"Parece que quieres mover un cheque con fecha (%s) previo a la última "
|
||||
"operación realizada con el cheque (%s). Esto puede ser incorrecto, por favor"
|
||||
" chequear. De continuar, la última operación en el cheque continuará siendo "
|
||||
"%s"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_journal
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__journal_id
|
||||
msgid "Journal"
|
||||
msgstr "Diario"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_number
|
||||
msgid "L10N Latam Check Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_warning_msg
|
||||
msgid "L10N Latam Check Warning Msg"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última Modificación el"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última Actualización por"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última Actualización el"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_journal.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Manual checks (electronic/deferred) can't be used together with check manual"
|
||||
" sequencing (check printing functionality), please choose one or the other. "
|
||||
"Journals: %s"
|
||||
msgstr ""
|
||||
"Cheques Manuales (electrónicos/diferidos) no pueden ser usados junto con "
|
||||
"secuencia manual (funcionalidad de impresion de cheques), Por favor "
|
||||
"seleciona una u otra. Diarios: %s"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__communication
|
||||
msgid "Memo"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:account.payment.method,name:l10n_latam_check.account_payment_method_new_third_party_checks
|
||||
msgid "New Third Party Checks"
|
||||
msgstr "Nuevo Cheque de Tercero"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Other checks were found with same number, issuer and bank. Please double "
|
||||
"check you are not encoding the same check more than once. List of other "
|
||||
"payments/checks: %s"
|
||||
msgstr ""
|
||||
"Otros cheques fueron encontrados con el mismo número, emisor y banco. Por "
|
||||
"favor chquear que no estas ingresando el mismo cheque más de una vez. Lista "
|
||||
"de otros pagos/cheques: %s"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_own_check
|
||||
#: model:ir.ui.menu,name:l10n_latam_check.menu_own_check
|
||||
msgid "Own Checks"
|
||||
msgstr "Cheques Propios"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__payment_date
|
||||
msgid "Payment Date"
|
||||
msgstr "Fecha de Pago"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment_method
|
||||
msgid "Payment Methods"
|
||||
msgstr "Métodos de pago"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment
|
||||
#, python-format
|
||||
msgid "Payments"
|
||||
msgstr "Pagos"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment_register
|
||||
msgid "Register Payment"
|
||||
msgstr "Registrar pago"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
#, python-format
|
||||
msgid "Rejected Third Party Checks"
|
||||
msgstr "Cheques de Terceros Rechazados"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "Selected check \"%s\" is not posted"
|
||||
msgstr "Cheque seleccionado \"%s\" no está publicado"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The amount of the payment (%s) does not match the amount of the selected "
|
||||
"check (%s). Please try to deselect and select the check again."
|
||||
msgstr ""
|
||||
"El monto del pago (%s) no coincide con el monto del cheque seleccionado "
|
||||
"(%s). Por favor intente deseleccionar y seleccionar nuevamente el cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The check(s) '%s' is already used on another payment. Please select another "
|
||||
"check or deselect the check on this payment."
|
||||
msgstr ""
|
||||
"El/Los cheque/s es/son usado/s en otro pago. Por favor seleccione otro "
|
||||
"cheque o deseleccione el cheque en este pago."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The currency of the payment (%s) and the currency of the check (%s) must be "
|
||||
"the same."
|
||||
msgstr ""
|
||||
"La moneda del pago (%s) y la moneda del cheque (%s) debe ser la misma."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The register payment wizard should only be called on account.payment "
|
||||
"records."
|
||||
msgstr ""
|
||||
"El wizard del pago registrado solo debería ser llamado en registros del "
|
||||
"account.payment."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_third_party_check
|
||||
#: model:ir.ui.menu,name:l10n_latam_check.menu_third_party_check
|
||||
#, python-format
|
||||
msgid "Third Party Checks"
|
||||
msgstr "Cheques de terceros"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "Unmark sent is not implemented for electronic or deferred checks"
|
||||
msgstr ""
|
||||
"Desmarcar enviado no está implementado para cheques electronicos y diferidos"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_journal__l10n_latam_manual_checks
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_manual_checks
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_manual_checks
|
||||
msgid "Use electronic and deferred checks"
|
||||
msgstr "Usa cheques electronicos o diferidos"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_register_form
|
||||
msgid ""
|
||||
"You can't use checks when paying invoices of different partners or same "
|
||||
"partner without grouping"
|
||||
msgstr ""
|
||||
"No puede utilizar cheques cuando esta pagando facturas de diferentes "
|
||||
"contactos o mismo contacto sin agrupar"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "⇒ Check Operations"
|
||||
msgstr "⇒ Operaciones del Cheque"
|
||||
|
|
@ -0,0 +1,863 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_latam_check
|
||||
#
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
# "Patricia Gutiérrez (pagc)" <pagc@odoo.com>, 2025.
|
||||
# "Fernanda Alvarez (mfar)" <mfar@odoo.com>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-30 19:08+0000\n"
|
||||
"PO-Revision-Date: 2026-03-07 10:02+0000\n"
|
||||
"Last-Translator: \"Fernanda Alvarez (mfar)\" <mfar@odoo.com>\n"
|
||||
"Language-Team: Spanish (Latin America) <https://translate.odoo.com/projects/"
|
||||
"odoo-19-l10n/l10n_latam_check/es_419/>\n"
|
||||
"Language: es_419\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 5.16.1\n"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Amount</span>"
|
||||
msgstr "<span>Importe</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Bank</span>"
|
||||
msgstr "<span>Banco</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Check Number</span>"
|
||||
msgstr "<span>Número de cheque</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Issuer VAT</span>"
|
||||
msgstr "<span>Número de identificación fiscal del emisor</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Journal Entry</span>"
|
||||
msgstr "<span>Asiento Contable</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Operations</span>"
|
||||
msgstr "<span>Operaciones</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Payment date</span>"
|
||||
msgstr "<span>Fecha del pago</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Payment</span>"
|
||||
msgstr "<span>Pago</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Reconciled move</span>"
|
||||
msgstr "<span>Asiento conciliado</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"A payment with any Third Party Check or Own Check payment methods needs an "
|
||||
"outstanding account"
|
||||
msgstr ""
|
||||
"Un pago con cualquiera de los métodos de pago Cheque de terceros o Cheque "
|
||||
"propio requiere una cuenta de liquidez"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "A second payment has been created: "
|
||||
msgstr "Se ha creado un segundo pago: "
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Plantilla de plan contable"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_l10n_latam_check
|
||||
msgid "Account payment check"
|
||||
msgstr "Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr "Acción requerida"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_ids
|
||||
msgid "Activities"
|
||||
msgstr "Actividades"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_exception_decoration
|
||||
msgid "Activity Exception Decoration"
|
||||
msgstr "Decoración de la actividad de excepción"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_state
|
||||
msgid "Activity State"
|
||||
msgstr "Estado de la actividad"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_type_icon
|
||||
msgid "Activity Type Icon"
|
||||
msgstr "Ícono de tipo de actvidad"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "All selected checks must be on the same journal and on hand"
|
||||
msgstr ""
|
||||
"Todos los cheques seleccionados deben estan en el mismo Diario y a mano"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "All the selected checks must be posted"
|
||||
msgstr "Todos los cheques seleccionados deben estar publicados"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "All the selected checks must use the same currency"
|
||||
msgstr "Todos los cheques seleccionados deben ser de la misma moneda"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__amount
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__amount
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__amount
|
||||
msgid "Amount"
|
||||
msgstr "Importe"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_attachment_count
|
||||
msgid "Attachment Count"
|
||||
msgstr "Nº de archivos adjuntos"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__bank_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__bank_id
|
||||
msgid "Bank"
|
||||
msgstr "Banco"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/l10n_latam_check.py:0
|
||||
msgid "Can't delete a check if payment is In Process!"
|
||||
msgstr "No puedes eliminar un cheque si el pago está en proceso."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_l10n_latam_payment_mass_transfer_form
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__check_ids
|
||||
msgid "Check"
|
||||
msgstr "Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Check %(check_number)s - %(suffix)s"
|
||||
msgstr "Cheque %(check_number)s - %(suffix)s"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/l10n_latam_check.py:0
|
||||
msgid "Check Operations"
|
||||
msgstr "Operaciones del Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_view_l10n_latam_payment_mass_transfer
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_tree
|
||||
msgid "Check Transfer"
|
||||
msgstr "Transferir Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move_line__l10n_latam_check_ids
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_new_check_ids
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_move_check_ids
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_register_form
|
||||
msgid "Checks"
|
||||
msgstr "Cheques"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Checks %s delivered"
|
||||
msgstr "Cheques %s entregados"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Checks %s received"
|
||||
msgstr "Cheques %s recibidos"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_l10n_latam_payment_mass_transfer
|
||||
msgid "Checks Mass Transfers"
|
||||
msgstr "Transferencia Masiva de Cheques"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_move_check_ids
|
||||
msgid "Checks Operations"
|
||||
msgstr "Cheques"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_method_code
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__company_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__company_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__company_id
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Company"
|
||||
msgstr "Compañía"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_l10n_latam_payment_mass_transfer_form
|
||||
msgid "Create Transfers"
|
||||
msgstr "Crear Transferencia"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__create_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__create_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__create_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__create_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado el"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__currency_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__currency_id
|
||||
msgid "Currency"
|
||||
msgstr "Moneda"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__current_journal_id
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_tree
|
||||
msgid "Current Journal"
|
||||
msgstr "Diario Actual"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_own_check_tree
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_operations_tree
|
||||
msgid "Customer"
|
||||
msgstr "Cliente"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__partner_id
|
||||
msgid "Customer/Vendor"
|
||||
msgstr "Cliente/Proveedor"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields.selection,name:l10n_latam_check.selection__l10n_latam_check__issue_state__debited
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Debited"
|
||||
msgstr "Debitado"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__destination_journal_id
|
||||
msgid "Destination Journal"
|
||||
msgstr "Diario de Destino"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_chart_template__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_journal__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_method__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre Mostrado"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_follower_ids
|
||||
msgid "Followers"
|
||||
msgstr "Seguidores"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_partner_ids
|
||||
msgid "Followers (Partners)"
|
||||
msgstr "Seguidores (Contactos)"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_type_icon
|
||||
msgid "Font awesome icon e.g. fa-tasks"
|
||||
msgstr "Icono de Font Awesome ej. fa-tasks"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Future Activities"
|
||||
msgstr "Actividades futuras"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields.selection,name:l10n_latam_check.selection__l10n_latam_check__issue_state__handed
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Handed"
|
||||
msgstr "Entregado"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__has_message
|
||||
msgid "Has Message"
|
||||
msgstr "Tiene un mensaje"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_chart_template__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_journal__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_method__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_exception_icon
|
||||
msgid "Icon"
|
||||
msgstr "Icono"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_exception_icon
|
||||
msgid "Icon to indicate an exception activity."
|
||||
msgstr "Icono para indicar una actividad de excepción."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_needaction
|
||||
msgid "If checked, new messages require your attention."
|
||||
msgstr ""
|
||||
"Si se encuentra seleccionado, hay nuevos mensajes que requieren tu atención."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_has_error
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_has_sms_error
|
||||
msgid "If checked, some messages have a delivery error."
|
||||
msgstr "Si se encuentra seleccionado, algunos mensajes tienen error de envío."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_is_follower
|
||||
msgid "Is Follower"
|
||||
msgstr "Es un seguidor"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__issue_state
|
||||
msgid "Issue State"
|
||||
msgstr "Estado de Emisión"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__issuer_vat
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__issuer_vat
|
||||
msgid "Issuer Vat"
|
||||
msgstr "CUIT del Emisor"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"It seems you're trying to move a check with a date (%(date)s) prior to last "
|
||||
"operation done with the check (%(last_operation)s). This may be wrong, "
|
||||
"please double check it. By continue, the last operation on the check will "
|
||||
"remain being %(last_operation)s"
|
||||
msgstr ""
|
||||
"Parece que intentas mover un cheque con una fecha (%(date)s) anterior a la "
|
||||
"última operación realizada con el cheque (%(last_operation)s). Esto puede "
|
||||
"ser incorrecto, verifica la información. Si continúas, la última operación "
|
||||
"del cheque seguirá siendo %(last_operation)s"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_journal
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__original_journal_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__journal_id
|
||||
msgid "Journal"
|
||||
msgstr "Diario"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr "Asiento contable"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Apunte contable"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_warning_msg
|
||||
msgid "L10N Latam Check Warning Msg"
|
||||
msgstr "Mensaje de advertencia del cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__write_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__write_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última actualización por"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__write_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__write_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última actualización el"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Late Activities"
|
||||
msgstr "Actividades atrasadas"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__payment_method_line_id
|
||||
msgid ""
|
||||
"Manual: Pay or Get paid by any method outside of Odoo.\n"
|
||||
"Payment Providers: Each payment provider has its own Payment Method. Request "
|
||||
"a transaction on/to a card thanks to a payment token saved by the partner "
|
||||
"when buying or subscribing online.\n"
|
||||
"Check: Pay bills by check and print it from Odoo.\n"
|
||||
"Batch Deposit: Collect several customer checks at once generating and "
|
||||
"submitting a batch deposit to your bank. Module account_batch_payment is "
|
||||
"necessary.\n"
|
||||
"SEPA Credit Transfer: Pay in the SEPA zone by submitting a SEPA Credit "
|
||||
"Transfer file to your bank. Module account_iso20022 is necessary.\n"
|
||||
"SEPA Direct Debit: Get paid in the SEPA zone thanks to a mandate your "
|
||||
"partner will have granted to you. Module account_iso20022 is necessary.\n"
|
||||
"U.S. ISO20022: Pay in the US by submitting an ISO20022 file to your bank. "
|
||||
"Module account_iso20022 is necessary.\n"
|
||||
msgstr ""
|
||||
"Manual: Paga o cobra con cualquier método externo a Odoo.\n"
|
||||
"Proveedores de pago: Cada proveedor de pago tiene su propio método de pago. "
|
||||
"Solicita una transacción en o a una tarjeta con el token de pago que el "
|
||||
"contacto guarda al hacer una compra o suscribirse en línea.\n"
|
||||
"Cheque: Paga las facturas con un cheque e imprímelo desde Odoo.\n"
|
||||
"Depósito por lote: Cobra varios cheques de clientes a la vez y genera y "
|
||||
"envía un depósito por lote a tu banco. Necesitas el módulo "
|
||||
"account_batch_payment.\n"
|
||||
"Transferencia de crédito SEPA: Paga en la zona SEPA al enviar un archivo de "
|
||||
"transferencia de crédito SEPA a tu banco. Necesitas el módulo "
|
||||
"account_iso20022.\n"
|
||||
"Domiciliación bancaria SEPA: Cobra en la zona SEPA con el mandato que te "
|
||||
"otorgará tu contacto. Necesitas el módulo account_iso20022.\n"
|
||||
"EE. UU. ISO20022: Paga en Estados Unidos con el envío de un archivo ISO20022 "
|
||||
"a tu banco. Necesitas el módulo account_iso20022.\n"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid ""
|
||||
"Marking a check as void will cancel the check and generate a new entry that "
|
||||
"will re-open the debt."
|
||||
msgstr ""
|
||||
"Marcar un cheque como anulado cancelará el cheque y generará un nuevo "
|
||||
"asiento que reabrirá la deuda."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__communication
|
||||
msgid "Memo"
|
||||
msgstr "Memo"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_has_error
|
||||
msgid "Message Delivery error"
|
||||
msgstr "Error de Envío de Mensaje"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_ids
|
||||
msgid "Messages"
|
||||
msgstr "Mensajes"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "My Activities"
|
||||
msgstr "Mis actividades"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
msgstr "Fecha límite de mi actividad"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_new_check_ids
|
||||
msgid "New Checks"
|
||||
msgstr "Cheques Nuevos"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_calendar_event_id
|
||||
msgid "Next Activity Calendar Event"
|
||||
msgstr "Próximo evento del calendario de actividades"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_date_deadline
|
||||
msgid "Next Activity Deadline"
|
||||
msgstr "Fecha límite de siguiente actividad"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_summary
|
||||
msgid "Next Activity Summary"
|
||||
msgstr "Resumen de la siguiente actividad"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_type_id
|
||||
msgid "Next Activity Type"
|
||||
msgstr "Siguiente tipo de actividad"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__name
|
||||
msgid "Number"
|
||||
msgstr "Número"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_needaction_counter
|
||||
msgid "Number of Actions"
|
||||
msgstr "Número de acciones"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_has_error_counter
|
||||
msgid "Number of errors"
|
||||
msgstr "Número de errores"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_needaction_counter
|
||||
msgid "Number of messages requiring action"
|
||||
msgstr "Número de mensajes que requieren acción"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_has_error_counter
|
||||
msgid "Number of messages with delivery error"
|
||||
msgstr "Número de mensajes con error de envío"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
msgid "On hand"
|
||||
msgstr "A la mano"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__operation_ids
|
||||
msgid "Operation"
|
||||
msgstr "Operación"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"Other checks were found with same number, issuer and bank. Please double "
|
||||
"check you are not encoding the same check more than once. List of other "
|
||||
"payments/checks: %s"
|
||||
msgstr ""
|
||||
"Se encontraron otros cheques con el mismo número, emisor y banco. Verifique "
|
||||
"que no esté codificando el mismo cheque más de una vez. Lista de otros pagos/"
|
||||
"cheques: %s"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__outstanding_line_id
|
||||
msgid "Outstanding Line"
|
||||
msgstr "Línea de Liquidez"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
msgid "Outstanding Payments"
|
||||
msgstr "Pagos pendientes"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
msgid "Outstanding Receipts"
|
||||
msgstr "Ingresos pendientes"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_own_check
|
||||
#: model:ir.ui.menu,name:l10n_latam_check.menu_own_check
|
||||
msgid "Own Checks"
|
||||
msgstr "Cheques Propios"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Partner"
|
||||
msgstr "Contacto"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment_register
|
||||
msgid "Pay"
|
||||
msgstr "Pagar"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_id
|
||||
msgid "Payment"
|
||||
msgstr "Pago"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_own_check_tree
|
||||
msgid "Payment Currency"
|
||||
msgstr "Divisa del pago"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__payment_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__payment_date
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Payment Date"
|
||||
msgstr "Fecha de Pago"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_method_line_id
|
||||
msgid "Payment Method"
|
||||
msgstr "Método de pago"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment_method
|
||||
msgid "Payment Methods"
|
||||
msgstr "Métodos de pago"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__payment_register_id
|
||||
msgid "Payment Register"
|
||||
msgstr "Registro de pago"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_l10n_latam_payment_register_check
|
||||
msgid "Payment register check"
|
||||
msgstr "Registro de pago de cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment
|
||||
msgid "Payments"
|
||||
msgstr "Pagos"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__rating_ids
|
||||
msgid "Ratings"
|
||||
msgstr "Calificaciones"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
msgid "Rejected Third Party Checks"
|
||||
msgstr "Cheques de Terceros Rechazados"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_user_id
|
||||
msgid "Responsible User"
|
||||
msgstr "Usuario responsable"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_has_sms_error
|
||||
msgid "SMS Delivery error"
|
||||
msgstr "Error de entrega del SMS"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Selected checks \"%s\" are not posted"
|
||||
msgstr "Los cheques seleccionados \"%s\" no están publicados"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Show all records whose next activity date is past"
|
||||
msgstr "Mostrar todos los registros cuya próxima fecha de actividad ya pasó."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Some checks are already in hand and can't be received again. Checks: %s"
|
||||
msgstr ""
|
||||
"Algunos cheques ya están en mano y no se pueden volver a recibir. Cheques: %s"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"Some checks are not anymore in journal, it seems it has been moved by "
|
||||
"another payment."
|
||||
msgstr ""
|
||||
"Algunos cheques ya no están en el diario, parece que han sido movidos por "
|
||||
"otro pago."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "State"
|
||||
msgstr "Estado"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_state
|
||||
msgid ""
|
||||
"Status based on activities\n"
|
||||
"Overdue: Due date is already passed\n"
|
||||
"Today: Activity date is today\n"
|
||||
"Planned: Future activities."
|
||||
msgstr ""
|
||||
"Estado basado en actividades\n"
|
||||
"Vencida: la fecha tope ya ha pasado\n"
|
||||
"Hoy: La fecha tope es hoy\n"
|
||||
"Planificada: futuras actividades."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/l10n_latam_check.py:0
|
||||
msgid "The amount of the check must be greater than 0"
|
||||
msgstr "El monto del cheque debe ser mayor a 0"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"The amount of the payment does not match the amount of the selected check. "
|
||||
"Please try to deselect and select the check again."
|
||||
msgstr ""
|
||||
"El monto del pago no coincide con el monto del cheque seleccionado. Intente "
|
||||
"deseleccionar y seleccionar el cheque nuevamente."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"The currency of the payment and the currency of the check must be the same."
|
||||
msgstr "La moneda del pago y la moneda del cheque deben ser la misma."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__currency_id
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_payment_register_check__currency_id
|
||||
msgid "The payment's currency."
|
||||
msgstr "Moneda del pago."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid ""
|
||||
"The register payment wizard should only be called on account.payment records."
|
||||
msgstr ""
|
||||
"El asistente de registro de pagos sólo debe llamarse en account.payment "
|
||||
"registros."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_third_party_check
|
||||
#: model:ir.ui.menu,name:l10n_latam_check.menu_third_party_check
|
||||
msgid "Third Party Checks"
|
||||
msgstr "Cheques de Terceros"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "This payment has been created from: "
|
||||
msgstr "Este pago fue creado desde: "
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Today Activities"
|
||||
msgstr "Actividades de hoy"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_exception_decoration
|
||||
msgid "Type of the exception activity on record."
|
||||
msgstr "Tipo de la actividad de excepción registrada."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "Void Check"
|
||||
msgstr "Anular Cheque"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields.selection,name:l10n_latam_check.selection__l10n_latam_check__issue_state__voided
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Voided"
|
||||
msgstr "Anulado"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__website_message_ids
|
||||
msgid "Website Messages"
|
||||
msgstr "Mensajes del sitio web"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__website_message_ids
|
||||
msgid "Website communication history"
|
||||
msgstr "Historial de comunicaciones del sitio web"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"You can't cancel or re-open a payment with checks if some check has been "
|
||||
"debited or been voided. Checks:\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
"No puede cancelar o reabrir un pago con cheques si algún cheque ha sido "
|
||||
"debitado o anulado. Cheques:\n"
|
||||
"%s"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/account_payment_register.py:0
|
||||
msgid ""
|
||||
"You can't mix checks of different currencies in one payment, and you can't "
|
||||
"change the payment's currency if checks are already created in that "
|
||||
"currency.\n"
|
||||
"Please create separate payments for each currency."
|
||||
msgstr ""
|
||||
"No se pueden mezclar cheques de distintas monedas en un mismo pago, y no se "
|
||||
"puede cambiar la moneda del pago si los cheques seleccionados están creados "
|
||||
"en esa moneda.\n"
|
||||
"Por favor, crea pagos separados para cada moneda."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_register_form
|
||||
msgid ""
|
||||
"You can't use checks when paying invoices of different partners or same "
|
||||
"partner without grouping"
|
||||
msgstr ""
|
||||
"No puede utilizar cheques al pagar facturas de diferentes partners o del "
|
||||
"mismo partner sin agrupar"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid ""
|
||||
"You have selected payments which are not checks. Please call this action "
|
||||
"from the Third Party Checks menu"
|
||||
msgstr ""
|
||||
"Seleccionaste pagos que no son cheques. Ejecuta esta acción desde el menú "
|
||||
"Cheques de terceros."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "open"
|
||||
msgstr "abrir"
|
||||
|
|
@ -4,10 +4,10 @@
|
|||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e\n"
|
||||
"Project-Id-Version: Odoo Server 19.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-11-22 17:41+0000\n"
|
||||
"PO-Revision-Date: 2023-11-22 17:41+0000\n"
|
||||
"POT-Creation-Date: 2025-12-30 19:08+0000\n"
|
||||
"PO-Revision-Date: 2025-12-30 19:08+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -15,28 +15,63 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Amount</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Bank</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Check Number</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Issuer VAT</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Journal Entry</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Operations</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Payment date</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Payment</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Reconciled move</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "(Check %s)"
|
||||
msgid ""
|
||||
"A payment with any Third Party Check or Own Check payment methods needs an "
|
||||
"outstanding account"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_account_journal__l10n_latam_manual_checks
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_account_payment__l10n_latam_manual_checks
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_account_payment_register__l10n_latam_manual_checks
|
||||
msgid ""
|
||||
"* Allows putting numbers manually\n"
|
||||
"* Enables Check Cash-In Date feature\n"
|
||||
"* Disables printing"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid ""
|
||||
"<span attrs=\"{'invisible': [('l10n_latam_check_current_journal_id', '!=', "
|
||||
"False)]}\">Not in Wallet</span>"
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "A second payment has been created: "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
|
|
@ -44,28 +79,84 @@ msgstr ""
|
|||
msgid "Account Chart Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_l10n_latam_check
|
||||
msgid "Account payment check"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_ids
|
||||
msgid "Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_exception_decoration
|
||||
msgid "Activity Exception Decoration"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_state
|
||||
msgid "Activity State"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_type_icon
|
||||
msgid "Activity Type Icon"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
#, python-format
|
||||
msgid "All selected checks must be on the same journal and on hand"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
#, python-format
|
||||
msgid "All the selected checks must be posted"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "All the selected checks must use the same currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__amount
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__amount
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__amount
|
||||
msgid "Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_attachment_count
|
||||
msgid "Attachment Count"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__bank_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__bank_id
|
||||
msgid "Bank"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/l10n_latam_check.py:0
|
||||
msgid "Can't delete a check if payment is In Process!"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_l10n_latam_payment_mass_transfer_form
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_check_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__check_ids
|
||||
msgid "Check"
|
||||
msgstr ""
|
||||
|
|
@ -73,78 +164,12 @@ msgstr ""
|
|||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Check \"%s\" is not anymore in journal \"%s\", it seems it has been moved by"
|
||||
" another payment."
|
||||
msgid "Check %(check_number)s - %(suffix)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "Check %s delivered"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "Check %s received"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "Check '%s' is on journal '%s', it can't be received it again"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_bank_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_check_bank_id
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_register_form
|
||||
msgid "Check Bank"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_payment_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_check_payment_date
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
msgid "Check Cash-In Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_current_journal_id
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "Check Current Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_issuer_vat
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_check_issuer_vat
|
||||
msgid "Check Issuer VAT"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_register_form
|
||||
msgid "Check Issuer Vat"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_check_number
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "Check Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_operation_ids
|
||||
#, python-format
|
||||
#: code:addons/l10n_latam_check/models/l10n_latam_check.py:0
|
||||
msgid "Check Operations"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -155,8 +180,24 @@ msgid "Check Transfer"
|
|||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_journal_tree
|
||||
msgid "Checks Management"
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move_line__l10n_latam_check_ids
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_new_check_ids
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_move_check_ids
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_register_form
|
||||
msgid "Checks"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Checks %s delivered"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Checks %s received"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
|
|
@ -165,12 +206,20 @@ msgid "Checks Mass Transfers"
|
|||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
msgid "Checks on hand"
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_move_check_ids
|
||||
msgid "Checks Operations"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_method_code
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__company_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__company_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__company_id
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -180,30 +229,47 @@ msgid "Create Transfers"
|
|||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__create_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__create_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__create_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__create_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__currency_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__currency_id
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__current_journal_id
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_tree
|
||||
msgid "Current Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_own_check_tree
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_operations_tree
|
||||
msgid "Customer"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_account_payment__l10n_latam_check_payment_date
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_account_payment_register__l10n_latam_check_payment_date
|
||||
msgid "Date from when you can cash in the check, turn the check into cash"
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__partner_id
|
||||
msgid "Customer/Vendor"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields.selection,name:l10n_latam_check.selection__l10n_latam_check__issue_state__debited
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Debited"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
|
|
@ -212,40 +278,126 @@ msgid "Destination Journal"
|
|||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_chart_template__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_journal__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_method__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:account.payment.method,name:l10n_latam_check.account_payment_method_in_third_party_checks
|
||||
#: model:account.payment.method,name:l10n_latam_check.account_payment_method_out_third_party_checks
|
||||
msgid "Existing Third Party Checks"
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_follower_ids
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_partner_ids
|
||||
msgid "Followers (Partners)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_type_icon
|
||||
msgid "Font awesome icon e.g. fa-tasks"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Future Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields.selection,name:l10n_latam_check.selection__l10n_latam_check__issue_state__handed
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Handed"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__has_message
|
||||
msgid "Has Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_chart_template__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_journal__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_method__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_exception_icon
|
||||
msgid "Icon"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_exception_icon
|
||||
msgid "Icon to indicate an exception activity."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_needaction
|
||||
msgid "If checked, new messages require your attention."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_has_error
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_has_sms_error
|
||||
msgid "If checked, some messages have a delivery error."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_is_follower
|
||||
msgid "Is Follower"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__issue_state
|
||||
msgid "Issue State"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__issuer_vat
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__issuer_vat
|
||||
msgid "Issuer Vat"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"It seems you're trying to move a check with a date (%s) prior to last "
|
||||
"operation done with the check (%s). This may be wrong, please double check "
|
||||
"it. By continue, the last operation on the check will remain being %s"
|
||||
"It seems you're trying to move a check with a date (%(date)s) prior to last "
|
||||
"operation done with the check (%(last_operation)s). This may be wrong, "
|
||||
"please double check it. By continue, the last operation on the check will "
|
||||
"remain being %(last_operation)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_journal
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__original_journal_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__journal_id
|
||||
msgid "Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_number
|
||||
msgid "L10N Latam Check Number"
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
|
|
@ -254,28 +406,41 @@ msgid "L10N Latam Check Warning Msg"
|
|||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__write_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__write_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__write_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__write_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_journal.py:0
|
||||
#, python-format
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Late Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__payment_method_line_id
|
||||
msgid ""
|
||||
"Manual checks (electronic/deferred) can't be used together with check manual"
|
||||
" sequencing (check printing functionality), please choose one or the other. "
|
||||
"Journals: %s"
|
||||
"Manual: Pay or Get paid by any method outside of Odoo.\n"
|
||||
"Payment Providers: Each payment provider has its own Payment Method. Request a transaction on/to a card thanks to a payment token saved by the partner when buying or subscribing online.\n"
|
||||
"Check: Pay bills by check and print it from Odoo.\n"
|
||||
"Batch Deposit: Collect several customer checks at once generating and submitting a batch deposit to your bank. Module account_batch_payment is necessary.\n"
|
||||
"SEPA Credit Transfer: Pay in the SEPA zone by submitting a SEPA Credit Transfer file to your bank. Module account_iso20022 is necessary.\n"
|
||||
"SEPA Direct Debit: Get paid in the SEPA zone thanks to a mandate your partner will have granted to you. Module account_iso20022 is necessary.\n"
|
||||
"U.S. ISO20022: Pay in the US by submitting an ISO20022 file to your bank. Module account_iso20022 is necessary.\n"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid ""
|
||||
"Marking a check as void will cancel the check and generate a new entry that "
|
||||
"will re-open the debt."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
|
|
@ -284,20 +449,117 @@ msgid "Memo"
|
|||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:account.payment.method,name:l10n_latam_check.account_payment_method_new_third_party_checks
|
||||
msgid "New Third Party Checks"
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_has_error
|
||||
msgid "Message Delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_ids
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "My Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_new_check_ids
|
||||
msgid "New Checks"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_calendar_event_id
|
||||
msgid "Next Activity Calendar Event"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_date_deadline
|
||||
msgid "Next Activity Deadline"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_summary
|
||||
msgid "Next Activity Summary"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_type_id
|
||||
msgid "Next Activity Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__name
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_needaction_counter
|
||||
msgid "Number of Actions"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_has_error_counter
|
||||
msgid "Number of errors"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_needaction_counter
|
||||
msgid "Number of messages requiring action"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_has_error_counter
|
||||
msgid "Number of messages with delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
msgid "On hand"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__operation_ids
|
||||
msgid "Operation"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Other checks were found with same number, issuer and bank. Please double "
|
||||
"check you are not encoding the same check more than once. List of other "
|
||||
"payments/checks: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__outstanding_line_id
|
||||
msgid "Outstanding Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
msgid "Outstanding Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
msgid "Outstanding Receipts"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_own_check
|
||||
#: model:ir.ui.menu,name:l10n_latam_check.menu_own_check
|
||||
|
|
@ -305,73 +567,151 @@ msgid "Own Checks"
|
|||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment_register
|
||||
msgid "Pay"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_id
|
||||
msgid "Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_own_check_tree
|
||||
msgid "Payment Currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__payment_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__payment_date
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Payment Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_method_line_id
|
||||
msgid "Payment Method"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment_method
|
||||
msgid "Payment Methods"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__payment_register_id
|
||||
msgid "Payment Register"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_l10n_latam_payment_register_check
|
||||
msgid "Payment register check"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment
|
||||
#, python-format
|
||||
msgid "Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment_register
|
||||
msgid "Register Payment"
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__rating_ids
|
||||
msgid "Ratings"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
#, python-format
|
||||
msgid "Rejected Third Party Checks"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "Selected check \"%s\" is not posted"
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_user_id
|
||||
msgid "Responsible User"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_has_sms_error
|
||||
msgid "SMS Delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The amount of the payment (%s) does not match the amount of the selected "
|
||||
"check (%s). Please try to deselect and select the check again."
|
||||
msgid "Selected checks \"%s\" are not posted"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Show all records whose next activity date is past"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The check(s) '%s' is already used on another payment. Please select another "
|
||||
"check or deselect the check on this payment."
|
||||
"Some checks are already in hand and can't be received again. Checks: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The currency of the payment (%s) and the currency of the check (%s) must be "
|
||||
"the same."
|
||||
"Some checks are not anymore in journal, it seems it has been moved by "
|
||||
"another payment."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_state
|
||||
msgid ""
|
||||
"Status based on activities\n"
|
||||
"Overdue: Due date is already passed\n"
|
||||
"Today: Activity date is today\n"
|
||||
"Planned: Future activities."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/l10n_latam_check.py:0
|
||||
msgid "The amount of the check must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"The amount of the payment does not match the amount of the selected check. "
|
||||
"Please try to deselect and select the check again."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"The currency of the payment and the currency of the check must be the same."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__currency_id
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_payment_register_check__currency_id
|
||||
msgid "The payment's currency."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The register payment wizard should only be called on account.payment "
|
||||
"records."
|
||||
|
|
@ -382,31 +722,60 @@ msgstr ""
|
|||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_third_party_check
|
||||
#: model:ir.ui.menu,name:l10n_latam_check.menu_third_party_check
|
||||
#, python-format
|
||||
msgid "Third Party Checks"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This third party check is already used to make one or more payments. Please reset them to draft first.\n"
|
||||
"Payments made with this check: %s"
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "This payment has been created from: "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Today Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_exception_decoration
|
||||
msgid "Type of the exception activity on record."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "Void Check"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields.selection,name:l10n_latam_check.selection__l10n_latam_check__issue_state__voided
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Voided"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__website_message_ids
|
||||
msgid "Website Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__website_message_ids
|
||||
msgid "Website communication history"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
#, python-format
|
||||
msgid "Unmark sent is not implemented for electronic or deferred checks"
|
||||
msgid ""
|
||||
"You can't cancel or re-open a payment with checks if some check has been debited or been voided. Checks:\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_journal__l10n_latam_manual_checks
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_manual_checks
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_manual_checks
|
||||
msgid "Use electronic and deferred checks"
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/account_payment_register.py:0
|
||||
msgid ""
|
||||
"You can't mix checks of different currencies in one payment, and you can't change the payment's currency if checks are already created in that currency.\n"
|
||||
"Please create separate payments for each currency."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
|
|
@ -417,6 +786,14 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "⇒ Check Operations"
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid ""
|
||||
"You have selected payments which are not checks. Please call this action "
|
||||
"from the Third Party Checks menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "open"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -0,0 +1,815 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_latam_check
|
||||
#
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-30 19:08+0000\n"
|
||||
"PO-Revision-Date: 2025-11-17 03:12+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Portuguese (Brazil) <https://translate.odoo.com/projects/"
|
||||
"odoo-19-l10n/l10n_latam_check/pt_BR/>\n"
|
||||
"Language: pt_BR\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 5.12.2\n"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Amount</span>"
|
||||
msgstr "<span>Valor</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Bank</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Check Number</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Issuer VAT</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Journal Entry</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Operations</span>"
|
||||
msgstr "<span>Operações</span>"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.report_payment_receipt_document
|
||||
msgid "<span>Payment date</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Payment</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "<span>Reconciled move</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"A payment with any Third Party Check or Own Check payment methods needs an "
|
||||
"outstanding account"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "A second payment has been created: "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Modelo de plano da contas"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_l10n_latam_check
|
||||
msgid "Account payment check"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr "Requer ação"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_ids
|
||||
msgid "Activities"
|
||||
msgstr "Atividades"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_exception_decoration
|
||||
msgid "Activity Exception Decoration"
|
||||
msgstr "Decoração de atividade excepcional"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_state
|
||||
msgid "Activity State"
|
||||
msgstr "Status da atividade"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_type_icon
|
||||
msgid "Activity Type Icon"
|
||||
msgstr "Ícone do tipo de atividade"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "All selected checks must be on the same journal and on hand"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "All the selected checks must be posted"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "All the selected checks must use the same currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__amount
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__amount
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__amount
|
||||
msgid "Amount"
|
||||
msgstr "Valor"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_attachment_count
|
||||
msgid "Attachment Count"
|
||||
msgstr "Total de anexos"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__bank_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__bank_id
|
||||
msgid "Bank"
|
||||
msgstr "Banco"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/l10n_latam_check.py:0
|
||||
msgid "Can't delete a check if payment is In Process!"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_l10n_latam_payment_mass_transfer_form
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__check_ids
|
||||
msgid "Check"
|
||||
msgstr "Verificar"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Check %(check_number)s - %(suffix)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/l10n_latam_check.py:0
|
||||
msgid "Check Operations"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_view_l10n_latam_payment_mass_transfer
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_tree
|
||||
msgid "Check Transfer"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move_line__l10n_latam_check_ids
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_new_check_ids
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_move_check_ids
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_register_form
|
||||
msgid "Checks"
|
||||
msgstr "Cheques"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Checks %s delivered"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Checks %s received"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_l10n_latam_payment_mass_transfer
|
||||
msgid "Checks Mass Transfers"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_move_check_ids
|
||||
msgid "Checks Operations"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_method_code
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__company_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__company_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__company_id
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_l10n_latam_payment_mass_transfer_form
|
||||
msgid "Create Transfers"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__create_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__create_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Criado por"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__create_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__create_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Criado em"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__currency_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__currency_id
|
||||
msgid "Currency"
|
||||
msgstr "Moeda"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__current_journal_id
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_tree
|
||||
msgid "Current Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_own_check_tree
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_third_party_check_operations_tree
|
||||
msgid "Customer"
|
||||
msgstr "Cliente"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__partner_id
|
||||
msgid "Customer/Vendor"
|
||||
msgstr "Cliente/fornecedor"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields.selection,name:l10n_latam_check.selection__l10n_latam_check__issue_state__debited
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Debited"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__destination_journal_id
|
||||
msgid "Destination Journal"
|
||||
msgstr "Diário de destino"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_chart_template__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_journal__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_method__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Exibir nome"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_follower_ids
|
||||
msgid "Followers"
|
||||
msgstr "Seguidores"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_partner_ids
|
||||
msgid "Followers (Partners)"
|
||||
msgstr "Seguidores (parceiros)"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_type_icon
|
||||
msgid "Font awesome icon e.g. fa-tasks"
|
||||
msgstr "Ícone do Font Awesome. Ex.: fa-tasks"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Future Activities"
|
||||
msgstr "Atividades futuras"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields.selection,name:l10n_latam_check.selection__l10n_latam_check__issue_state__handed
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Handed"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__has_message
|
||||
msgid "Has Message"
|
||||
msgstr "Tem uma mensagem"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_chart_template__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_journal__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_method__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_exception_icon
|
||||
msgid "Icon"
|
||||
msgstr "Ícone"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_exception_icon
|
||||
msgid "Icon to indicate an exception activity."
|
||||
msgstr "Ícone para indicar uma atividade excepcional."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_needaction
|
||||
msgid "If checked, new messages require your attention."
|
||||
msgstr "Se marcado, há novas mensagens precisando de sua atenção."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_has_error
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_has_sms_error
|
||||
msgid "If checked, some messages have a delivery error."
|
||||
msgstr "Se marcado, algumas mensagens têm um erro de entrega."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_is_follower
|
||||
msgid "Is Follower"
|
||||
msgstr "É um seguidor"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__issue_state
|
||||
msgid "Issue State"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__issuer_vat
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__issuer_vat
|
||||
msgid "Issuer Vat"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"It seems you're trying to move a check with a date (%(date)s) prior to last "
|
||||
"operation done with the check (%(last_operation)s). This may be wrong, "
|
||||
"please double check it. By continue, the last operation on the check will "
|
||||
"remain being %(last_operation)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_journal
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__original_journal_id
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__journal_id
|
||||
msgid "Journal"
|
||||
msgstr "Diário"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr "Lançamento de diário"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Item do diário"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment__l10n_latam_check_warning_msg
|
||||
msgid "L10N Latam Check Warning Msg"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__write_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__write_uid
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última atualização por"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__write_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__write_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última atualização em"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Late Activities"
|
||||
msgstr "Atividades atrasadas"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__payment_method_line_id
|
||||
msgid ""
|
||||
"Manual: Pay or Get paid by any method outside of Odoo.\n"
|
||||
"Payment Providers: Each payment provider has its own Payment Method. Request "
|
||||
"a transaction on/to a card thanks to a payment token saved by the partner "
|
||||
"when buying or subscribing online.\n"
|
||||
"Check: Pay bills by check and print it from Odoo.\n"
|
||||
"Batch Deposit: Collect several customer checks at once generating and "
|
||||
"submitting a batch deposit to your bank. Module account_batch_payment is "
|
||||
"necessary.\n"
|
||||
"SEPA Credit Transfer: Pay in the SEPA zone by submitting a SEPA Credit "
|
||||
"Transfer file to your bank. Module account_iso20022 is necessary.\n"
|
||||
"SEPA Direct Debit: Get paid in the SEPA zone thanks to a mandate your "
|
||||
"partner will have granted to you. Module account_iso20022 is necessary.\n"
|
||||
"U.S. ISO20022: Pay in the US by submitting an ISO20022 file to your bank. "
|
||||
"Module account_iso20022 is necessary.\n"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid ""
|
||||
"Marking a check as void will cancel the check and generate a new entry that "
|
||||
"will re-open the debt."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__communication
|
||||
msgid "Memo"
|
||||
msgstr "Anotação"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_has_error
|
||||
msgid "Message Delivery error"
|
||||
msgstr "Erro na entrega da mensagem"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_ids
|
||||
msgid "Messages"
|
||||
msgstr "Mensagens"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "My Activities"
|
||||
msgstr "Minhas atividades"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
msgstr "Prazo da minha atividade"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_account_payment_register__l10n_latam_new_check_ids
|
||||
msgid "New Checks"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_calendar_event_id
|
||||
msgid "Next Activity Calendar Event"
|
||||
msgstr "Evento no calendário para a próxima atividade"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_date_deadline
|
||||
msgid "Next Activity Deadline"
|
||||
msgstr "Prazo da próxima atividade"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_summary
|
||||
msgid "Next Activity Summary"
|
||||
msgstr "Resumo da próxima atividade"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_type_id
|
||||
msgid "Next Activity Type"
|
||||
msgstr "Tipo da próxima atividade"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__name
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__name
|
||||
msgid "Number"
|
||||
msgstr "Número"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_needaction_counter
|
||||
msgid "Number of Actions"
|
||||
msgstr "Número de ações"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_has_error_counter
|
||||
msgid "Number of errors"
|
||||
msgstr "Número de erros"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_needaction_counter
|
||||
msgid "Number of messages requiring action"
|
||||
msgstr "Número de mensagens que requerem ação"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__message_has_error_counter
|
||||
msgid "Number of messages with delivery error"
|
||||
msgstr "Número de mensagens com erro de entrega"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_third_party_checks_search
|
||||
msgid "On hand"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__operation_ids
|
||||
msgid "Operation"
|
||||
msgstr "Operação"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"Other checks were found with same number, issuer and bank. Please double "
|
||||
"check you are not encoding the same check more than once. List of other "
|
||||
"payments/checks: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__outstanding_line_id
|
||||
msgid "Outstanding Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
msgid "Outstanding Payments"
|
||||
msgstr "Pagamentos pendentes"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
msgid "Outstanding Receipts"
|
||||
msgstr "Recebimentos pendentes"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_own_check
|
||||
#: model:ir.ui.menu,name:l10n_latam_check.menu_own_check
|
||||
msgid "Own Checks"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Partner"
|
||||
msgstr "Usuário"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment_register
|
||||
msgid "Pay"
|
||||
msgstr "Pagar"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_id
|
||||
msgid "Payment"
|
||||
msgstr "Pagamento"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_own_check_tree
|
||||
msgid "Payment Currency"
|
||||
msgstr "Moeda do pagamento"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__payment_date
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__payment_date
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Payment Date"
|
||||
msgstr "Data de pagamento"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__payment_method_line_id
|
||||
msgid "Payment Method"
|
||||
msgstr "Forma de pagamento"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment_method
|
||||
msgid "Payment Methods"
|
||||
msgstr "Formas de pagamento"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_register_check__payment_register_id
|
||||
msgid "Payment Register"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model,name:l10n_latam_check.model_l10n_latam_payment_register_check
|
||||
msgid "Payment register check"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
#: model:ir.model,name:l10n_latam_check.model_account_payment
|
||||
msgid "Payments"
|
||||
msgstr "Pagamentos"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__rating_ids
|
||||
msgid "Ratings"
|
||||
msgstr "Avaliações"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
msgid "Rejected Third Party Checks"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__activity_user_id
|
||||
msgid "Responsible User"
|
||||
msgstr "Usuário responsável"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__message_has_sms_error
|
||||
msgid "SMS Delivery error"
|
||||
msgstr "Erro no envio de SMS"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Selected checks \"%s\" are not posted"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Show all records whose next activity date is past"
|
||||
msgstr "Mostrar todos os registros cuja data da próxima atividade já passou"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid "Some checks are already in hand and can't be received again. Checks: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"Some checks are not anymore in journal, it seems it has been moved by "
|
||||
"another payment."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "State"
|
||||
msgstr "Estado"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_state
|
||||
msgid ""
|
||||
"Status based on activities\n"
|
||||
"Overdue: Due date is already passed\n"
|
||||
"Today: Activity date is today\n"
|
||||
"Planned: Future activities."
|
||||
msgstr ""
|
||||
"Status baseado em atividades\n"
|
||||
"Atrasado: data de vencimento já passou\n"
|
||||
"Hoje: data da atividade é hoje\n"
|
||||
"Planejado: atividades futuras."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/l10n_latam_check.py:0
|
||||
msgid "The amount of the check must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"The amount of the payment does not match the amount of the selected check. "
|
||||
"Please try to deselect and select the check again."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"The currency of the payment and the currency of the check must be the same."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__currency_id
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_payment_register_check__currency_id
|
||||
msgid "The payment's currency."
|
||||
msgstr "A moeda do pagamento."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid ""
|
||||
"The register payment wizard should only be called on account.payment records."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_chart_template.py:0
|
||||
#: model:ir.actions.act_window,name:l10n_latam_check.action_third_party_check
|
||||
#: model:ir.ui.menu,name:l10n_latam_check.menu_third_party_check
|
||||
msgid "Third Party Checks"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid "This payment has been created from: "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Today Activities"
|
||||
msgstr "Atividades de hoje"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__activity_exception_decoration
|
||||
msgid "Type of the exception activity on record."
|
||||
msgstr "Tipo de atividade de exceção registrada."
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.l10n_latam_check_view_form
|
||||
msgid "Void Check"
|
||||
msgstr "Cheque anulado"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields.selection,name:l10n_latam_check.selection__l10n_latam_check__issue_state__voided
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_search
|
||||
msgid "Voided"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__website_message_ids
|
||||
msgid "Website Messages"
|
||||
msgstr "Mensagens do site"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model:ir.model.fields,help:l10n_latam_check.field_l10n_latam_check__website_message_ids
|
||||
msgid "Website communication history"
|
||||
msgstr "Histórico de comunicação do site"
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/models/account_payment.py:0
|
||||
msgid ""
|
||||
"You can't cancel or re-open a payment with checks if some check has been "
|
||||
"debited or been voided. Checks:\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/account_payment_register.py:0
|
||||
msgid ""
|
||||
"You can't mix checks of different currencies in one payment, and you can't "
|
||||
"change the payment's currency if checks are already created in that "
|
||||
"currency.\n"
|
||||
"Please create separate payments for each currency."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_register_form
|
||||
msgid ""
|
||||
"You can't use checks when paying invoices of different partners or same "
|
||||
"partner without grouping"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_latam_check/wizards/l10n_latam_payment_mass_transfer.py:0
|
||||
msgid ""
|
||||
"You have selected payments which are not checks. Please call this action "
|
||||
"from the Third Party Checks menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_latam_check
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
|
||||
msgid "open"
|
||||
msgstr "open"
|
||||
|
|
@ -1,4 +1,7 @@
|
|||
from . import account_journal
|
||||
from . import account_payment
|
||||
from . import account_payment_method
|
||||
from . import account_chart_template
|
||||
from . import l10n_latam_check
|
||||
from . import account_move
|
||||
from . import account_move_line
|
||||
from . import account_journal
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
from odoo import models, Command, api, _
|
||||
from odoo.addons.account.models.chart_template import template
|
||||
|
||||
|
||||
class AccountChartTemplate(models.Model):
|
||||
class AccountChartTemplate(models.AbstractModel):
|
||||
_inherit = 'account.chart.template'
|
||||
|
||||
@api.model
|
||||
|
|
@ -10,30 +11,66 @@ class AccountChartTemplate(models.Model):
|
|||
when installing the COA"""
|
||||
return ["AR"]
|
||||
|
||||
def _create_bank_journals(self, company, acc_template_ref):
|
||||
res = super()._create_bank_journals(company, acc_template_ref)
|
||||
@template(model='account.journal')
|
||||
def _get_latam_check_account_journal(self, template_code):
|
||||
if self.env.company.country_id.code in self._get_third_party_checks_country_codes():
|
||||
return {
|
||||
"third_party_check": {
|
||||
'name': _('Third Party Checks'),
|
||||
'type': 'cash',
|
||||
'outbound_payment_method_line_ids': [
|
||||
Command.create({
|
||||
'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_out_third_party_checks').id,
|
||||
'payment_account_id': 'base_outstanding_payments',
|
||||
}),
|
||||
],
|
||||
'inbound_payment_method_line_ids': [
|
||||
Command.create({
|
||||
'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_new_third_party_checks').id,
|
||||
'payment_account_id': 'base_outstanding_receipts',
|
||||
}),
|
||||
Command.create({
|
||||
'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_in_third_party_checks').id,
|
||||
'payment_account_id': 'base_outstanding_receipts',
|
||||
}),
|
||||
],
|
||||
},
|
||||
"rejected_third_party_check": {
|
||||
'name': _('Rejected Third Party Checks'),
|
||||
'type': 'cash',
|
||||
'outbound_payment_method_line_ids': [
|
||||
Command.create({
|
||||
'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_out_third_party_checks').id,
|
||||
'payment_account_id': 'base_outstanding_payments',
|
||||
}),
|
||||
],
|
||||
'inbound_payment_method_line_ids': [
|
||||
Command.create({
|
||||
'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_new_third_party_checks').id,
|
||||
'payment_account_id': 'base_outstanding_receipts',
|
||||
}),
|
||||
Command.create({
|
||||
'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_in_third_party_checks').id,
|
||||
'payment_account_id': 'base_outstanding_receipts',
|
||||
}),
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
if company.country_id.code in self._get_third_party_checks_country_codes():
|
||||
self.env['account.journal'].create({
|
||||
'name': _('Third Party Checks'),
|
||||
'type': 'cash',
|
||||
'company_id': company.id,
|
||||
'outbound_payment_method_line_ids': [
|
||||
Command.create({'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_out_third_party_checks').id}),
|
||||
],
|
||||
'inbound_payment_method_line_ids': [
|
||||
Command.create({'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_new_third_party_checks').id}),
|
||||
Command.create({'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_in_third_party_checks').id}),
|
||||
]})
|
||||
self.env['account.journal'].create({
|
||||
'name': _('Rejected Third Party Checks'),
|
||||
'type': 'cash',
|
||||
'company_id': company.id,
|
||||
'outbound_payment_method_line_ids': [
|
||||
Command.create({'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_out_third_party_checks').id}),
|
||||
],
|
||||
'inbound_payment_method_line_ids': [
|
||||
Command.create({'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_new_third_party_checks').id}),
|
||||
Command.create({'payment_method_id': self.env.ref('l10n_latam_check.account_payment_method_in_third_party_checks').id}),
|
||||
]})
|
||||
return res
|
||||
@template(model='account.account')
|
||||
def _get_latam_check_outstanding_account_account(self, template_code):
|
||||
if self.env.company.country_id.code in self._get_third_party_checks_country_codes():
|
||||
return {
|
||||
'base_outstanding_receipts': {
|
||||
'name': _("Outstanding Receipts"),
|
||||
'code': '1.1.1.02.003',
|
||||
'reconcile': True,
|
||||
'account_type': 'asset_current',
|
||||
},
|
||||
'base_outstanding_payments': {
|
||||
'name': _("Outstanding Payments"),
|
||||
'code': '1.1.1.02.004',
|
||||
'reconcile': True,
|
||||
'account_type': 'asset_current',
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,28 +1,50 @@
|
|||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import UserError
|
||||
from odoo import models, api
|
||||
|
||||
|
||||
class AccountJournal(models.Model):
|
||||
_inherit = 'account.journal'
|
||||
_inherit = "account.journal"
|
||||
|
||||
l10n_latam_manual_checks = fields.Boolean(
|
||||
string='Use electronic and deferred checks',
|
||||
help="* Allows putting numbers manually\n"
|
||||
"* Enables Check Cash-In Date feature\n"
|
||||
"* Disables printing"
|
||||
)
|
||||
def _default_outbound_payment_methods(self):
|
||||
res = super()._default_outbound_payment_methods()
|
||||
if self.company_id.country_id.code != "AR":
|
||||
return res
|
||||
if self._is_payment_method_available('own_checks'):
|
||||
res |= self.env.ref('l10n_latam_check.account_payment_method_own_checks')
|
||||
if self._is_payment_method_available('return_third_party_checks'):
|
||||
res |= self.env.ref('l10n_latam_check.account_payment_method_return_third_party_checks')
|
||||
return res
|
||||
|
||||
@api.constrains('l10n_latam_manual_checks', 'check_manual_sequencing')
|
||||
def _check_l10n_latam_manual_checks(self):
|
||||
""" Protect from setting check_manual_sequencing (Manual Numbering) + Use electronic/deferred checks for these reasons
|
||||
* Printing checks for manual checks (electronic/deferred) is not implemented and using a "check printing" option together with the manual
|
||||
checks is confusing
|
||||
* The next check number field shown when choosing "Manual Numbering" don't have any meaning when using manual checks (electronic/deferred)
|
||||
* Some methods of account_check_printing module behave differently if "Manual Numbering" is configured
|
||||
"""
|
||||
recs = self.filtered(
|
||||
lambda x: x.check_manual_sequencing and x.l10n_latam_manual_checks)
|
||||
if recs:
|
||||
raise UserError(_(
|
||||
"Manual checks (electronic/deferred) can't be used together with check manual sequencing (check printing functionality), "
|
||||
"please choose one or the other. Journals: %s", ",".join(recs.mapped("name"))))
|
||||
@api.model
|
||||
def _get_reusable_payment_methods(self):
|
||||
""" We are able to have multiple times Checks payment method in a journal """
|
||||
res = super()._get_reusable_payment_methods()
|
||||
res.add("own_checks")
|
||||
return res
|
||||
|
||||
def create(self, vals_list):
|
||||
journals = super().create(vals_list)
|
||||
inbound_payment_accounts = self.env['account.account'].search([
|
||||
('code', '=', '1.1.1.02.003'),
|
||||
('company_ids', 'in', journals.company_id.ids)
|
||||
]).grouped('company_ids')
|
||||
|
||||
outbound_payment_accounts = self.env['account.account'].search([
|
||||
('code', '=', '1.1.1.02.004'),
|
||||
('company_ids', 'in', journals.company_id.ids)
|
||||
]).grouped('company_ids')
|
||||
|
||||
for journal in journals:
|
||||
if journal.country_code != 'AR' or journal.type not in ('bank', 'cash'):
|
||||
continue
|
||||
|
||||
for payment_method_line in journal.inbound_payment_method_line_ids:
|
||||
if payment_method_line.payment_account_id:
|
||||
continue
|
||||
payment_method_line.payment_account_id = inbound_payment_accounts.get(journal.company_id)
|
||||
|
||||
for payment_method_line in journal.outbound_payment_method_line_ids:
|
||||
if payment_method_line.payment_account_id:
|
||||
continue
|
||||
payment_method_line.payment_account_id = outbound_payment_accounts.get(journal.company_id)
|
||||
|
||||
return journals
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo import models
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = 'account.move'
|
||||
|
||||
def button_draft(self):
|
||||
super().button_draft()
|
||||
for move in self.filtered(lambda x: x.origin_payment_id.payment_method_code == 'own_checks'):
|
||||
move.origin_payment_id._l10n_latam_check_unlink_split_move()
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
_inherit = 'account.move.line'
|
||||
|
||||
l10n_latam_check_ids = fields.One2many('l10n_latam.check', 'outstanding_line_id', string='Checks')
|
||||
|
|
@ -1,123 +1,210 @@
|
|||
import stdnum
|
||||
|
||||
from odoo import fields, models, _, api
|
||||
from odoo import fields, models, api, Command, _
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
from odoo.tools.misc import format_date
|
||||
|
||||
|
||||
class AccountPayment(models.Model):
|
||||
_inherit = 'account.payment'
|
||||
_rec_names_search = ['name', 'check_number']
|
||||
|
||||
# Third party check operation links
|
||||
l10n_latam_check_id = fields.Many2one(
|
||||
comodel_name='account.payment',
|
||||
string='Check',
|
||||
readonly=True, states={'draft': [('readonly', False)]},
|
||||
l10n_latam_new_check_ids = fields.One2many('l10n_latam.check', 'payment_id', string='Checks')
|
||||
l10n_latam_move_check_ids = fields.Many2many(
|
||||
comodel_name='l10n_latam.check',
|
||||
relation='l10n_latam_check_account_payment_rel',
|
||||
column1="payment_id",
|
||||
column2="check_id",
|
||||
required=True,
|
||||
copy=False,
|
||||
check_company=True,
|
||||
)
|
||||
l10n_latam_check_operation_ids = fields.One2many(
|
||||
comodel_name='account.payment',
|
||||
inverse_name='l10n_latam_check_id',
|
||||
string='Check Operations',
|
||||
readonly=True,
|
||||
)
|
||||
l10n_latam_check_current_journal_id = fields.Many2one(
|
||||
comodel_name='account.journal',
|
||||
string="Check Current Journal",
|
||||
compute='_compute_l10n_latam_check_current_journal', store=True,
|
||||
string="Checks Operations"
|
||||
)
|
||||
# Warning message in case of unlogical third party check operations
|
||||
l10n_latam_check_warning_msg = fields.Text(
|
||||
compute='_compute_l10n_latam_check_warning_msg',
|
||||
)
|
||||
l10n_latam_check_number = fields.Char(
|
||||
compute='_compute_l10n_latam_check_number', inverse='_inverse_l10n_latam_check_number',
|
||||
)
|
||||
# New third party check info
|
||||
l10n_latam_check_bank_id = fields.Many2one(
|
||||
comodel_name='res.bank',
|
||||
string='Check Bank',
|
||||
compute='_compute_l10n_latam_check_bank_id', store=True, readonly=False,
|
||||
states={'posted': [('readonly', True)], 'cancel': [('readonly', True)]},
|
||||
)
|
||||
l10n_latam_check_issuer_vat = fields.Char(
|
||||
string='Check Issuer VAT',
|
||||
compute='_compute_l10n_latam_check_issuer_vat', store=True, readonly=False,
|
||||
states={'posted': [('readonly', True)], 'cancel': [('readonly', True)]},
|
||||
)
|
||||
l10n_latam_check_payment_date = fields.Date(
|
||||
string='Check Cash-In Date',
|
||||
help="Date from when you can cash in the check, turn the check into cash",
|
||||
readonly=True, states={'draft': [('readonly', False)]},
|
||||
)
|
||||
l10n_latam_check_warning_msg = fields.Text(compute='_compute_l10n_latam_check_warning_msg')
|
||||
amount = fields.Monetary(compute="_compute_amount", readonly=False, store=True)
|
||||
|
||||
# This is a technical field for the view only
|
||||
l10n_latam_manual_checks = fields.Boolean(
|
||||
related='journal_id.l10n_latam_manual_checks',
|
||||
)
|
||||
@api.constrains('state', 'move_id')
|
||||
def _check_move_id(self):
|
||||
for payment in self:
|
||||
if (
|
||||
not payment.move_id and
|
||||
payment.payment_method_code in ('own_checks', 'new_third_party_checks', 'in_third_party_checks', 'out_third_party_checks', 'return_third_party_checks') and
|
||||
not payment.outstanding_account_id
|
||||
):
|
||||
raise ValidationError(_("A payment with any Third Party Check or Own Check payment methods needs an outstanding account"))
|
||||
|
||||
@api.depends('check_number')
|
||||
def _compute_l10n_latam_check_number(self):
|
||||
""" This dummy computed field is added for two reasons:
|
||||
1. add a new field so that we don't need to modify attrs on the views for the original check_number field
|
||||
(not nice on terms of inheritance)
|
||||
2. if we set it as related (with readonly=False) it didn't work properly for our use case: If the user changes
|
||||
the proposed number the value was not saved. This computed with inverse does the trick"""
|
||||
@api.depends('l10n_latam_move_check_ids.amount', 'l10n_latam_new_check_ids.amount', 'payment_method_code')
|
||||
def _compute_amount(self):
|
||||
for rec in self:
|
||||
rec.l10n_latam_check_number = rec.check_number
|
||||
checks = rec.l10n_latam_new_check_ids if rec._is_latam_check_payment(check_subtype='new_check') else rec.l10n_latam_move_check_ids
|
||||
if checks:
|
||||
rec.amount = sum(checks.mapped('amount'))
|
||||
|
||||
def _inverse_l10n_latam_check_number(self):
|
||||
for rec in self:
|
||||
rec.check_number = rec.l10n_latam_check_number
|
||||
def _is_latam_check_payment(self, check_subtype=False):
|
||||
if check_subtype == 'move_check':
|
||||
codes = ['in_third_party_checks', 'out_third_party_checks', 'return_third_party_checks']
|
||||
elif check_subtype == 'new_check':
|
||||
codes = ['new_third_party_checks', 'own_checks']
|
||||
else:
|
||||
codes = ['in_third_party_checks', 'out_third_party_checks', 'return_third_party_checks', 'new_third_party_checks', 'own_checks']
|
||||
return self.payment_method_code in codes
|
||||
|
||||
def _compute_check_number(self):
|
||||
""" Override from account_check_printing.
|
||||
For electronic/deferred own checks or third party checks, don't call super so that number is not cleaned """
|
||||
latam_checks = self.filtered(
|
||||
lambda x: x.payment_method_line_id.code == 'new_third_party_checks' or
|
||||
(x.payment_method_line_id.code == 'check_printing' and x.l10n_latam_manual_checks))
|
||||
return super(AccountPayment, self - latam_checks)._compute_check_number()
|
||||
def action_post(self):
|
||||
# unlink checks if payment method code is not for checks. We do it on post and not when changing payment
|
||||
# method so that the user don't loose checks data in case of changing payment method and coming back again
|
||||
# also, changing partner recompute payment method so all checks would be cleaned
|
||||
for payment in self.filtered(lambda x: x.l10n_latam_new_check_ids and not x._is_latam_check_payment(check_subtype='new_check')):
|
||||
payment.l10n_latam_new_check_ids.unlink()
|
||||
if not self.env.context.get('l10n_ar_skip_remove_check'):
|
||||
for payment in self.filtered(lambda x: x.l10n_latam_move_check_ids and not x._is_latam_check_payment(check_subtype='move_check')):
|
||||
payment.l10n_latam_move_check_ids = False
|
||||
msgs = self._get_blocking_l10n_latam_warning_msg()
|
||||
if msgs:
|
||||
error_msg = "\n".join(f"* {msg}" for msg in msgs)
|
||||
raise ValidationError(error_msg)
|
||||
super().action_post()
|
||||
self._l10n_latam_check_split_move()
|
||||
|
||||
def _inverse_check_number(self):
|
||||
""" On third party checks or electronic/deferred own checks, avoid calling super because is not needed to write
|
||||
the sequence for these use case. """
|
||||
avoid_inverse = self.filtered(
|
||||
lambda x: x.l10n_latam_manual_checks or x.payment_method_line_id.code == 'new_third_party_checks')
|
||||
return super(AccountPayment, self - avoid_inverse)._inverse_check_number()
|
||||
def _get_latam_checks(self):
|
||||
self.ensure_one()
|
||||
if self._is_latam_check_payment(check_subtype='new_check'):
|
||||
return self.l10n_latam_new_check_ids
|
||||
elif self._is_latam_check_payment(check_subtype='move_check'):
|
||||
return self.l10n_latam_move_check_ids
|
||||
else:
|
||||
return self.env['l10n_latam.check']
|
||||
|
||||
@api.depends('payment_method_line_id.code', 'partner_id')
|
||||
def _compute_l10n_latam_check_bank_id(self):
|
||||
new_third_party_checks = self.filtered(lambda x: x.payment_method_line_id.code == 'new_third_party_checks')
|
||||
for rec in new_third_party_checks:
|
||||
rec.l10n_latam_check_bank_id = rec.partner_id.bank_ids[:1].bank_id
|
||||
(self - new_third_party_checks).l10n_latam_check_bank_id = False
|
||||
def _get_blocking_l10n_latam_warning_msg(self):
|
||||
msgs = []
|
||||
for rec in self.filtered(lambda x: x.state == 'draft' and x._is_latam_check_payment()):
|
||||
if any(rec.currency_id != check.currency_id for check in rec._get_latam_checks()):
|
||||
msgs.append(_('The currency of the payment and the currency of the check must be the same.'))
|
||||
if not rec.currency_id.is_zero(sum(rec._get_latam_checks().mapped('amount')) - rec.amount):
|
||||
msgs.append(
|
||||
_('The amount of the payment does not match the amount of the selected check. '
|
||||
'Please try to deselect and select the check again.')
|
||||
)
|
||||
# checks being moved
|
||||
if rec._is_latam_check_payment(check_subtype='move_check'):
|
||||
if any(check.payment_id.state == 'draft' for check in rec.l10n_latam_move_check_ids):
|
||||
msgs.append(
|
||||
_('Selected checks "%s" are not posted', rec.l10n_latam_move_check_ids.filtered(lambda x: x.payment_id.state == 'draft').mapped('display_name'))
|
||||
)
|
||||
elif rec.payment_type == 'outbound' and any(check.current_journal_id != rec.journal_id for check in rec.l10n_latam_move_check_ids):
|
||||
# check outbound payment and transfer or inbound transfer
|
||||
msgs.append(_(
|
||||
'Some checks are not anymore in journal, it seems it has been moved by another payment.')
|
||||
)
|
||||
elif rec.payment_type == 'inbound' and not rec._is_latam_check_transfer() and any(rec.l10n_latam_move_check_ids.mapped('current_journal_id')):
|
||||
msgs.append(
|
||||
_("Some checks are already in hand and can't be received again. Checks: %s",
|
||||
', '.join(rec.l10n_latam_move_check_ids.mapped('display_name')))
|
||||
)
|
||||
|
||||
@api.depends('payment_method_line_id.code', 'partner_id')
|
||||
def _compute_l10n_latam_check_issuer_vat(self):
|
||||
new_third_party_checks = self.filtered(lambda x: x.payment_method_line_id.code == 'new_third_party_checks')
|
||||
for rec in new_third_party_checks:
|
||||
rec.l10n_latam_check_issuer_vat = rec.partner_id.vat
|
||||
(self - new_third_party_checks).l10n_latam_check_issuer_vat = False
|
||||
for check in rec.l10n_latam_move_check_ids:
|
||||
date = rec.date or fields.Datetime.now()
|
||||
|
||||
@api.onchange('l10n_latam_check_issuer_vat')
|
||||
def _clean_l10n_latam_check_issuer_vat(self):
|
||||
for rec in self.filtered(lambda x: x.l10n_latam_check_issuer_vat and x.company_id.country_id.code):
|
||||
stdnum_vat = stdnum.util.get_cc_module(rec.company_id.country_id.code, 'vat')
|
||||
if hasattr(stdnum_vat, 'compact'):
|
||||
rec.l10n_latam_check_issuer_vat = stdnum_vat.compact(rec.l10n_latam_check_issuer_vat)
|
||||
last_operation = check._get_last_operation()
|
||||
if last_operation and last_operation[0].date > date:
|
||||
msgs.append(
|
||||
_(
|
||||
"It seems you're trying to move a check with a date (%(date)s) prior to last "
|
||||
"operation done with the check (%(last_operation)s). This may be wrong, please "
|
||||
"double check it. By continue, the last operation on "
|
||||
"the check will remain being %(last_operation)s",
|
||||
date=format_date(self.env, date), last_operation=last_operation.display_name
|
||||
)
|
||||
)
|
||||
return msgs
|
||||
|
||||
@api.constrains('l10n_latam_check_issuer_vat', 'company_id')
|
||||
def _check_l10n_latam_check_issuer_vat(self):
|
||||
for rec in self.filtered(lambda x: x.l10n_latam_check_issuer_vat and x.company_id.country_id):
|
||||
if not self.env['res.partner']._run_vat_test(rec.l10n_latam_check_issuer_vat, rec.company_id.country_id):
|
||||
error_message = self.env['res.partner']._build_vat_error_message(
|
||||
rec.company_id.country_id.code.lower(), rec.l10n_latam_check_issuer_vat, 'Check Issuer VAT')
|
||||
raise ValidationError(error_message)
|
||||
def _get_reconciled_checks_error(self):
|
||||
checks_reconciled = self.l10n_latam_new_check_ids.filtered(lambda x: x.issue_state in ['debited', 'voided'])
|
||||
if checks_reconciled:
|
||||
raise UserError(
|
||||
_("You can't cancel or re-open a payment with checks if some check has been debited or been voided. "
|
||||
"Checks:\n%s", ('\n'.join(['* %s (%s)' % (x.name, x.issue_state) for x in checks_reconciled])))
|
||||
)
|
||||
|
||||
@api.depends('payment_method_line_id', 'l10n_latam_check_issuer_vat', 'l10n_latam_check_bank_id', 'company_id',
|
||||
'l10n_latam_check_number', 'l10n_latam_check_id', 'state', 'date', 'is_internal_transfer', 'amount', 'currency_id')
|
||||
def action_cancel(self):
|
||||
self._get_reconciled_checks_error()
|
||||
super().action_cancel()
|
||||
|
||||
def action_draft(self):
|
||||
self._get_reconciled_checks_error()
|
||||
super().action_draft()
|
||||
|
||||
def _l10n_latam_check_split_move(self):
|
||||
for payment in self.filtered(lambda x: x.payment_method_code == 'own_checks' and x.payment_type == 'outbound'):
|
||||
if len(payment.l10n_latam_new_check_ids) == 1:
|
||||
liquidity_line = payment._seek_for_lines()[0]
|
||||
payment.l10n_latam_new_check_ids.outstanding_line_id = liquidity_line.id
|
||||
continue
|
||||
|
||||
vals = {
|
||||
'journal_id': payment.journal_id.id,
|
||||
'move_type': 'entry',
|
||||
'line_ids': [],
|
||||
}
|
||||
payment_liquidity_line = payment._seek_for_lines()[0]
|
||||
|
||||
# One line per check
|
||||
checks_total = sum(payment.l10n_latam_new_check_ids.mapped('amount'))
|
||||
liquidity_balance_total = 0.0
|
||||
for check in payment.l10n_latam_new_check_ids:
|
||||
liquidity_amount_currency = -check.amount
|
||||
|
||||
if check == payment.l10n_latam_new_check_ids[-1]:
|
||||
liquidity_balance = payment.currency_id.round(payment_liquidity_line.balance - liquidity_balance_total)
|
||||
else:
|
||||
liquidity_balance = payment.currency_id.round(payment_liquidity_line.balance * check.amount / checks_total)
|
||||
liquidity_balance_total += liquidity_balance
|
||||
|
||||
vals['line_ids'].append(
|
||||
Command.create({
|
||||
'name': _(
|
||||
'Check %(check_number)s - %(suffix)s',
|
||||
check_number=check.name,
|
||||
suffix=''.join([item[1] for item in payment._get_aml_default_display_name_list()])),
|
||||
'date_maturity': check.payment_date,
|
||||
'amount_currency': liquidity_amount_currency,
|
||||
'currency_id': check.currency_id.id,
|
||||
'debit': max(0.0, liquidity_balance),
|
||||
'credit': -min(liquidity_balance, 0.0),
|
||||
'partner_id': payment_liquidity_line.partner_id.id,
|
||||
'account_id': payment_liquidity_line.account_id.id,
|
||||
'l10n_latam_check_ids': [Command.link(check.id)]
|
||||
}),
|
||||
)
|
||||
|
||||
# Cancel payment line
|
||||
vals['line_ids'].append(
|
||||
Command.create({
|
||||
'name': payment_liquidity_line.name,
|
||||
'date_maturity': payment_liquidity_line.date_maturity,
|
||||
'amount_currency': -payment_liquidity_line.amount_currency,
|
||||
'currency_id': payment_liquidity_line.currency_id.id,
|
||||
'debit': -payment_liquidity_line.debit,
|
||||
'credit': -payment_liquidity_line.credit,
|
||||
'partner_id': payment_liquidity_line.partner_id.id,
|
||||
'account_id': payment_liquidity_line.account_id.id,
|
||||
}),
|
||||
)
|
||||
move_id = self.env['account.move'].create(vals)
|
||||
move_id.action_post()
|
||||
split_move_counterpart_line = move_id.line_ids.filtered(lambda x: x.amount_currency == -payment_liquidity_line.amount_currency)
|
||||
(split_move_counterpart_line + payment_liquidity_line).reconcile()
|
||||
|
||||
def _l10n_latam_check_unlink_split_move(self):
|
||||
self.ensure_one()
|
||||
for check in self.l10n_latam_new_check_ids:
|
||||
if self.move_id == check.outstanding_line_id.move_id:
|
||||
check.outstanding_line_id = False
|
||||
continue
|
||||
check.outstanding_line_id.move_id.button_draft()
|
||||
check.outstanding_line_id.move_id.unlink()
|
||||
|
||||
@api.depends(
|
||||
'payment_method_line_id', 'state', 'date', 'amount', 'currency_id', 'company_id',
|
||||
'l10n_latam_move_check_ids.issuer_vat', 'l10n_latam_move_check_ids.bank_id', 'l10n_latam_move_check_ids.payment_id.date',
|
||||
'l10n_latam_new_check_ids.amount', 'l10n_latam_new_check_ids.name',
|
||||
)
|
||||
def _compute_l10n_latam_check_warning_msg(self):
|
||||
"""
|
||||
Compute warning message for latam checks checks
|
||||
|
|
@ -125,245 +212,68 @@ class AccountPayment(models.Model):
|
|||
Another approach could be to add an onchange on _inverse_l10n_latam_check_number method
|
||||
"""
|
||||
self.l10n_latam_check_warning_msg = False
|
||||
latam_draft_checks = self.filtered(
|
||||
lambda x: x.state == 'draft' and (x.l10n_latam_manual_checks or x.payment_method_line_id.code in [
|
||||
'in_third_party_checks', 'out_third_party_checks', 'new_third_party_checks']))
|
||||
for rec in latam_draft_checks:
|
||||
for rec in self.filtered(lambda x: x._is_latam_check_payment()):
|
||||
msgs = rec._get_blocking_l10n_latam_warning_msg()
|
||||
# new third party check
|
||||
if rec.l10n_latam_check_number and rec.payment_method_line_id.code == 'new_third_party_checks' and \
|
||||
rec.l10n_latam_check_bank_id and rec.l10n_latam_check_issuer_vat:
|
||||
same_checks = self.search([
|
||||
('company_id', '=', rec.company_id.id),
|
||||
('l10n_latam_check_bank_id', '=', rec.l10n_latam_check_bank_id.id),
|
||||
('l10n_latam_check_issuer_vat', '=', rec.l10n_latam_check_issuer_vat),
|
||||
('check_number', '=', rec.l10n_latam_check_number),
|
||||
('id', '!=', rec._origin.id)])
|
||||
# new third party check uniqueness warning (on own checks it's done by a sql constraint)
|
||||
if rec.payment_method_code == 'new_third_party_checks':
|
||||
same_checks = self.env['l10n_latam.check']
|
||||
for check in rec.l10n_latam_new_check_ids.filtered(
|
||||
lambda x: x.name and x.payment_method_line_id.code == 'new_third_party_checks' and
|
||||
x.bank_id and x.issuer_vat):
|
||||
same_checks += same_checks.search([
|
||||
('company_id', '=', rec.company_id.id),
|
||||
('bank_id', '=', check.bank_id.id),
|
||||
('issuer_vat', '=', check.issuer_vat),
|
||||
('name', '=', check.name),
|
||||
('payment_id.state', 'not in', ['draft', 'canceled']),
|
||||
('id', '!=', check._origin.id)], limit=1)
|
||||
if same_checks:
|
||||
msgs.append(_(
|
||||
"Other checks were found with same number, issuer and bank. Please double check you are not "
|
||||
"encoding the same check more than once. List of other payments/checks: %s",
|
||||
", ".join(same_checks.mapped('display_name'))))
|
||||
msgs.append(
|
||||
_("Other checks were found with same number, issuer and bank. Please double check you are not "
|
||||
"encoding the same check more than once. List of other payments/checks: %s",
|
||||
", ".join(same_checks.mapped('display_name')))
|
||||
)
|
||||
rec.l10n_latam_check_warning_msg = msgs and '* %s' % '\n* '.join(msgs) or False
|
||||
|
||||
def _get_blocking_l10n_latam_warning_msg(self):
|
||||
msgs = []
|
||||
for rec in self.filtered('l10n_latam_check_id'):
|
||||
if rec.currency_id != rec.l10n_latam_check_id.currency_id:
|
||||
msgs.append(_(
|
||||
'The currency of the payment (%s) and the currency of the check (%s) must be the same.') % (
|
||||
rec.currency_id.name, rec.l10n_latam_check_id.currency_id.name))
|
||||
if not rec.currency_id.is_zero(rec.l10n_latam_check_id.amount - rec.amount):
|
||||
msgs.append(_(
|
||||
'The amount of the payment (%s) does not match the amount of the selected check (%s). '
|
||||
'Please try to deselect and select the check again.', rec.amount, rec.l10n_latam_check_id.amount))
|
||||
if rec.payment_method_line_id.code in ['in_third_party_checks', 'out_third_party_checks']:
|
||||
if rec.l10n_latam_check_id.state != 'posted':
|
||||
msgs.append(_('Selected check "%s" is not posted', rec.l10n_latam_check_id.display_name))
|
||||
elif (rec.payment_type == 'outbound' and
|
||||
rec.l10n_latam_check_id.l10n_latam_check_current_journal_id != rec.journal_id) or (
|
||||
rec.payment_type == 'inbound' and rec.is_internal_transfer and
|
||||
rec.l10n_latam_check_id.l10n_latam_check_current_journal_id != rec.destination_journal_id):
|
||||
# check outbound payment and transfer or inbound transfer
|
||||
msgs.append(_(
|
||||
'Check "%s" is not anymore in journal "%s", it seems it has been moved by another payment.',
|
||||
rec.l10n_latam_check_id.display_name, rec.journal_id.name
|
||||
if rec.payment_type == 'outbound' else rec.destination_journal_id.name))
|
||||
elif rec.payment_type == 'inbound' and not rec.is_internal_transfer and \
|
||||
rec.l10n_latam_check_id.l10n_latam_check_current_journal_id:
|
||||
msgs.append(_("Check '%s' is on journal '%s', it can't be received it again",
|
||||
rec.l10n_latam_check_id.display_name, rec.journal_id.name))
|
||||
# moved third party check
|
||||
if rec.l10n_latam_check_id:
|
||||
date = rec.date or fields.Datetime.now()
|
||||
last_operation = rec.env['account.payment'].search([
|
||||
('state', '=', 'posted'),
|
||||
'|', ('l10n_latam_check_id', '=', rec.l10n_latam_check_id.id),
|
||||
('id', '=', rec.l10n_latam_check_id.id),
|
||||
], order="date desc, id desc", limit=1)
|
||||
if last_operation and last_operation[0].date > date:
|
||||
msgs.append(_(
|
||||
"It seems you're trying to move a check with a date (%s) prior to last operation done with "
|
||||
"the check (%s). This may be wrong, please double check it. By continue, the last operation on "
|
||||
"the check will remain being %s",
|
||||
format_date(self.env, date), last_operation.display_name, last_operation.display_name))
|
||||
return msgs
|
||||
|
||||
@api.depends('is_internal_transfer')
|
||||
def _compute_payment_method_line_fields(self):
|
||||
""" Add is_internal_transfer as a trigger to re-compute """
|
||||
return super()._compute_payment_method_line_fields()
|
||||
|
||||
@api.depends('l10n_latam_check_operation_ids.state', 'payment_method_line_id.code')
|
||||
def _compute_l10n_latam_check_current_journal(self):
|
||||
new_checks = self.filtered(lambda x: x.payment_method_line_id.code == 'new_third_party_checks')
|
||||
payments = self.env['account.payment'].search(
|
||||
[('l10n_latam_check_id', 'in', new_checks.ids), ('state', '=', 'posted')], order="date desc, id desc")
|
||||
|
||||
# we store on a dict the first payment (last operation) for each check
|
||||
checks_mapping = {}
|
||||
for payment in payments:
|
||||
if payment.l10n_latam_check_id not in checks_mapping:
|
||||
checks_mapping[payment.l10n_latam_check_id] = payment
|
||||
|
||||
for rec in new_checks:
|
||||
last_operation = checks_mapping.get(rec)
|
||||
if not last_operation:
|
||||
rec.l10n_latam_check_current_journal_id = rec.journal_id
|
||||
continue
|
||||
if last_operation.is_internal_transfer and last_operation.payment_type == 'outbound':
|
||||
rec.l10n_latam_check_current_journal_id = last_operation.paired_internal_transfer_payment_id.journal_id
|
||||
elif last_operation.payment_type == 'inbound':
|
||||
rec.l10n_latam_check_current_journal_id = last_operation.journal_id
|
||||
else:
|
||||
rec.l10n_latam_check_current_journal_id = False
|
||||
|
||||
@api.depends('l10n_latam_manual_checks')
|
||||
def _compute_show_check_number(self):
|
||||
latam_checks = self.filtered(
|
||||
lambda x: x.payment_method_line_id.code == 'new_third_party_checks' or
|
||||
(x.payment_method_line_id.code == 'check_printing' and x.l10n_latam_manual_checks))
|
||||
latam_checks.show_check_number = False
|
||||
super(AccountPayment, self - latam_checks)._compute_show_check_number()
|
||||
|
||||
@api.constrains('check_number', 'journal_id')
|
||||
def _constrains_check_number_unique(self):
|
||||
""" Don't enforce uniqueness for third party checks"""
|
||||
third_party_checks = self.filtered(lambda x: x.payment_method_line_id.code == 'new_third_party_checks')
|
||||
return super(AccountPayment, self - third_party_checks)._constrains_check_number_unique()
|
||||
|
||||
@api.onchange('l10n_latam_check_id')
|
||||
def _onchange_check(self):
|
||||
for rec in self.filtered('l10n_latam_check_id'):
|
||||
rec.amount = rec.l10n_latam_check_id.amount
|
||||
|
||||
@api.onchange('payment_method_line_id', 'is_internal_transfer', 'journal_id', 'destination_journal_id')
|
||||
def _onchange_to_reset_check_ids(self):
|
||||
# If any of these fields change, the domain of the selectable checks could change
|
||||
self.l10n_latam_check_id = False
|
||||
|
||||
@api.onchange('l10n_latam_check_number')
|
||||
def _onchange_check_number(self):
|
||||
for rec in self.filtered(
|
||||
lambda x: x.journal_id.company_id.country_id.code == "AR" and
|
||||
x.l10n_latam_check_number and x.l10n_latam_check_number.isdecimal()):
|
||||
rec.l10n_latam_check_number = '%08d' % int(rec.l10n_latam_check_number)
|
||||
|
||||
def _get_payment_method_codes_to_exclude(self):
|
||||
res = super()._get_payment_method_codes_to_exclude()
|
||||
if self.is_internal_transfer:
|
||||
res.append('new_third_party_checks')
|
||||
return res
|
||||
|
||||
def action_unmark_sent(self):
|
||||
""" Unmarking as sent for electronic/deferred check would give the option to print and re-number check but
|
||||
it's not implemented yet for this kind of checks"""
|
||||
if self.filtered(lambda x: x.payment_method_line_id.code == 'check_printing' and x.l10n_latam_manual_checks):
|
||||
raise UserError(_('Unmark sent is not implemented for electronic or deferred checks'))
|
||||
return super().action_unmark_sent()
|
||||
|
||||
def action_post(self):
|
||||
msgs = self._get_blocking_l10n_latam_warning_msg()
|
||||
if msgs:
|
||||
raise ValidationError('* %s' % '\n* '.join(msgs))
|
||||
|
||||
res = super().action_post()
|
||||
|
||||
# mark own checks that are not printed as sent
|
||||
self.filtered(lambda x: x.payment_method_line_id.code == 'check_printing' and x.l10n_latam_manual_checks).write({'is_move_sent': True})
|
||||
return res
|
||||
|
||||
def action_draft(self):
|
||||
if self.l10n_latam_check_operation_ids.filtered(lambda x: x.state == "posted"):
|
||||
raise ValidationError(_(
|
||||
"This third party check is already used to make one or more payments. Please reset them to draft first.\n"
|
||||
"Payments made with this check: %s",
|
||||
"".join(f'\n - {payment.name}' for payment in self.l10n_latam_check_operation_ids)))
|
||||
return super().action_draft()
|
||||
|
||||
@api.model
|
||||
def _get_trigger_fields_to_synchronize(self):
|
||||
res = super()._get_trigger_fields_to_synchronize()
|
||||
return res + ('l10n_latam_check_number',)
|
||||
return res + ('l10n_latam_new_check_ids',)
|
||||
|
||||
def _prepare_move_line_default_vals(self, write_off_line_vals=None):
|
||||
def _prepare_move_line_default_vals(self, write_off_line_vals=None, force_balance=None):
|
||||
""" Add check name and operation on liquidity line """
|
||||
res = super()._prepare_move_line_default_vals(write_off_line_vals=write_off_line_vals)
|
||||
check = self if (self.payment_method_line_id.code == 'new_third_party_checks' or (self.payment_method_line_id.code == 'check_printing' and self.l10n_latam_manual_checks)) \
|
||||
else self.l10n_latam_check_id
|
||||
if check:
|
||||
document_name = (_('Check %s received') if self.payment_type == 'inbound' else _('Check %s delivered')) % (
|
||||
check.check_number)
|
||||
res = super()._prepare_move_line_default_vals(write_off_line_vals=write_off_line_vals, force_balance=force_balance)
|
||||
|
||||
# if only one check we don't create the split line, we add same data on liquidity line
|
||||
if self.payment_method_code == 'own_checks' and self.payment_type == 'outbound' and len(self.l10n_latam_new_check_ids) == 1:
|
||||
res[0].update({
|
||||
'name': _(
|
||||
'Check %(check_number)s - %(suffix)s',
|
||||
check_number=self.l10n_latam_new_check_ids.name,
|
||||
suffix=''.join([item[1] for item in self._get_aml_default_display_name_list()])),
|
||||
'date_maturity': self.l10n_latam_new_check_ids.payment_date,
|
||||
})
|
||||
# we dont check the payment method code because when deposited on bank/cash journals pay method is manual but we still change the label
|
||||
# we dont want this names on the own checks because it doesn't add value, already each split/check line will have it name
|
||||
elif (self.l10n_latam_new_check_ids or self.l10n_latam_move_check_ids) and self.payment_method_code != 'own_checks':
|
||||
check_name = [check_name for check_name in (self.l10n_latam_new_check_ids | self.l10n_latam_move_check_ids).mapped('name') if check_name]
|
||||
document_name = (
|
||||
_('Checks %s received') if self.payment_type == 'inbound' else _('Checks %s delivered')) % (
|
||||
', '.join(check_name)
|
||||
)
|
||||
res[0].update({
|
||||
'name': document_name + ' - ' + ''.join([item[1] for item in self._get_aml_default_display_name_list()]),
|
||||
})
|
||||
return res
|
||||
|
||||
def name_get(self):
|
||||
""" Add check number to display_name on check_id m2o field """
|
||||
res_names = super().name_get()
|
||||
for i, (res_name, rec) in enumerate(zip(res_names, self)):
|
||||
if rec.check_number and rec.payment_method_line_id.code == 'new_third_party_checks':
|
||||
res_names[i] = (res_name[0], "%s %s" % (res_name[1], _("(Check %s)", rec.check_number)))
|
||||
return res_names
|
||||
@api.depends('l10n_latam_move_check_ids')
|
||||
def _compute_destination_account_id(self):
|
||||
# EXTENDS 'account'
|
||||
super()._compute_destination_account_id()
|
||||
for payment in self:
|
||||
if payment.l10n_latam_move_check_ids and (not payment.partner_id or payment.partner_id == payment.company_id.partner_id):
|
||||
payment.destination_account_id = payment.company_id.transfer_account_id.id
|
||||
|
||||
def button_open_check_operations(self):
|
||||
''' Redirect the user to the invoice(s) paid by this payment.
|
||||
:return: An action on account.move.
|
||||
'''
|
||||
def _is_latam_check_transfer(self):
|
||||
self.ensure_one()
|
||||
|
||||
operations = (self.l10n_latam_check_operation_ids.filtered(lambda x: x.state == 'posted') + self)
|
||||
action = {
|
||||
'name': _("Check Operations"),
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'account.payment',
|
||||
'views': [
|
||||
(self.env.ref('l10n_latam_check.view_account_third_party_check_operations_tree').id, 'tree'),
|
||||
(False, 'form')],
|
||||
'context': {'create': False},
|
||||
'domain': [('id', 'in', operations.ids)],
|
||||
}
|
||||
return action
|
||||
|
||||
def _create_paired_internal_transfer_payment(self):
|
||||
"""
|
||||
Two modifications when only when transferring from a third party checks journal:
|
||||
1. When a paired transfer is created, the default odoo behavior is to use on the paired transfer the first
|
||||
available payment method. If we are transferring to another third party checks journal, then set as payment
|
||||
method on the paired transfer 'in_third_party_checks' or 'out_third_party_checks'
|
||||
2. On the paired transfer set the l10n_latam_check_id field, this field is needed for the
|
||||
l10n_latam_check_operation_ids and also for some warnings and constrains.
|
||||
"""
|
||||
third_party_checks = self.filtered(lambda x: x.payment_method_line_id.code in [
|
||||
'in_third_party_checks',
|
||||
'out_third_party_checks'
|
||||
])
|
||||
for rec in third_party_checks:
|
||||
dest_payment_method_code = 'in_third_party_checks' if rec.payment_type == 'outbound' else 'out_third_party_checks'
|
||||
dest_payment_method = rec.destination_journal_id.inbound_payment_method_line_ids.filtered(
|
||||
lambda x: x.code == dest_payment_method_code)
|
||||
if dest_payment_method:
|
||||
super(AccountPayment, rec.with_context(
|
||||
default_payment_method_line_id=dest_payment_method.id,
|
||||
default_l10n_latam_check_id=rec.l10n_latam_check_id,
|
||||
))._create_paired_internal_transfer_payment()
|
||||
else:
|
||||
super(AccountPayment, rec.with_context(
|
||||
default_l10n_latam_check_id=rec.l10n_latam_check_id,
|
||||
))._create_paired_internal_transfer_payment()
|
||||
super(AccountPayment, self - third_party_checks)._create_paired_internal_transfer_payment()
|
||||
|
||||
@api.constrains('l10n_latam_check_id')
|
||||
def _check_l10n_latam_check_id(self):
|
||||
if self.filtered(lambda x: x.payment_method_line_id.code == 'out_third_party_checks'):
|
||||
payments = self.env['account.payment'].search_count([
|
||||
('l10n_latam_check_id', 'in', self.l10n_latam_check_id.ids),
|
||||
('payment_type', '=', 'outbound'),
|
||||
('journal_id', 'in', self.journal_id.ids),
|
||||
('id', 'not in', self.ids)],
|
||||
limit=1)
|
||||
if payments:
|
||||
raise ValidationError(_(
|
||||
"The check(s) '%s' is already used on another payment. Please select another check or "
|
||||
"deselect the check on this payment.", self.l10n_latam_check_id.mapped('display_name')))
|
||||
return not self.partner_id and self.destination_account_id == self.company_id.transfer_account_id
|
||||
|
|
|
|||
|
|
@ -7,7 +7,9 @@ class AccountPaymentMethod(models.Model):
|
|||
@api.model
|
||||
def _get_payment_method_information(self):
|
||||
res = super()._get_payment_method_information()
|
||||
res['new_third_party_checks'] = {'mode': 'multi', 'domain': [('type', '=', 'cash')]}
|
||||
res['in_third_party_checks'] = {'mode': 'multi', 'domain': [('type', '=', 'cash')]}
|
||||
res['out_third_party_checks'] = {'mode': 'multi', 'domain': [('type', '=', 'cash')]}
|
||||
res['new_third_party_checks'] = {'mode': 'multi', 'type': ('cash',)}
|
||||
res['in_third_party_checks'] = {'mode': 'multi', 'type': ('cash',)}
|
||||
res['out_third_party_checks'] = {'mode': 'multi', 'type': ('cash',)}
|
||||
res['return_third_party_checks'] = {'mode': 'multi', 'type': ('bank',)}
|
||||
res['own_checks'] = {'mode': 'multi', 'type': ('bank',)}
|
||||
return res
|
||||
|
|
|
|||
|
|
@ -0,0 +1,210 @@
|
|||
# pylint: disable=protected-access
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
import logging
|
||||
import stdnum
|
||||
|
||||
from odoo import models, fields, api, Command, _
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
from odoo.tools import index_exists
|
||||
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class L10n_LatamCheck(models.Model):
|
||||
_name = 'l10n_latam.check'
|
||||
_description = 'Account payment check'
|
||||
_check_company_auto = True
|
||||
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
|
||||
payment_id = fields.Many2one(
|
||||
'account.payment',
|
||||
required=True,
|
||||
ondelete='cascade',
|
||||
)
|
||||
operation_ids = fields.Many2many(
|
||||
comodel_name='account.payment',
|
||||
relation='l10n_latam_check_account_payment_rel',
|
||||
column1="check_id",
|
||||
column2="payment_id",
|
||||
readonly=True,
|
||||
check_company=True,
|
||||
)
|
||||
current_journal_id = fields.Many2one(
|
||||
comodel_name='account.journal',
|
||||
compute='_compute_current_journal', store=True,
|
||||
)
|
||||
name = fields.Char(string='Number')
|
||||
bank_id = fields.Many2one(
|
||||
comodel_name='res.bank',
|
||||
compute='_compute_bank_id', store=True, readonly=False,
|
||||
)
|
||||
issuer_vat = fields.Char(
|
||||
compute='_compute_issuer_vat', store=True, readonly=False,
|
||||
)
|
||||
payment_date = fields.Date(readonly=False, required=True)
|
||||
amount = fields.Monetary()
|
||||
outstanding_line_id = fields.Many2one('account.move.line', readonly=True, check_company=True)
|
||||
issue_state = fields.Selection(
|
||||
selection=[('handed', 'Handed'), ('debited', 'Debited'), ('voided', 'Voided')],
|
||||
compute='_compute_issue_state',
|
||||
store=True
|
||||
)
|
||||
# fields from payment
|
||||
payment_method_code = fields.Char(related='payment_id.payment_method_code')
|
||||
partner_id = fields.Many2one(related='payment_id.partner_id')
|
||||
original_journal_id = fields.Many2one(related='payment_id.journal_id')
|
||||
company_id = fields.Many2one(related='payment_id.company_id', store=True)
|
||||
currency_id = fields.Many2one(related='payment_id.currency_id')
|
||||
payment_method_line_id = fields.Many2one(
|
||||
related='payment_id.payment_method_line_id',
|
||||
store=True,
|
||||
)
|
||||
|
||||
# issue_state is used to know that is an own check and also that is posted
|
||||
_unique = models.UniqueIndex("(name, payment_method_line_id) WHERE outstanding_line_id IS NOT NULL")
|
||||
|
||||
@api.onchange('name')
|
||||
def _onchange_name(self):
|
||||
if self.name:
|
||||
self.name = self.name.zfill(8)
|
||||
|
||||
def _prepare_void_move_vals(self):
|
||||
return {
|
||||
'ref': 'Void check',
|
||||
'journal_id': self.outstanding_line_id.move_id.journal_id.id,
|
||||
'line_ids': [
|
||||
Command.create({
|
||||
'name': "Void check %s" % self.outstanding_line_id.name,
|
||||
'date_maturity': self.outstanding_line_id.date_maturity,
|
||||
'amount_currency': self.outstanding_line_id.amount_currency,
|
||||
'currency_id': self.outstanding_line_id.currency_id.id,
|
||||
'debit': self.outstanding_line_id.debit,
|
||||
'credit': self.outstanding_line_id.credit,
|
||||
'partner_id': self.outstanding_line_id.partner_id.id,
|
||||
'account_id': self.payment_id.destination_account_id.id,
|
||||
}),
|
||||
Command.create({
|
||||
'name': "Void check %s" % self.outstanding_line_id.name,
|
||||
'date_maturity': self.outstanding_line_id.date_maturity,
|
||||
'amount_currency': -self.outstanding_line_id.amount_currency,
|
||||
'currency_id': self.outstanding_line_id.currency_id.id,
|
||||
'debit': -self.outstanding_line_id.debit,
|
||||
'credit': -self.outstanding_line_id.credit,
|
||||
'partner_id': self.outstanding_line_id.partner_id.id,
|
||||
'account_id': self.outstanding_line_id.account_id.id,
|
||||
}),
|
||||
],
|
||||
}
|
||||
|
||||
@api.depends('outstanding_line_id.amount_residual')
|
||||
def _compute_issue_state(self):
|
||||
for rec in self:
|
||||
if not rec.outstanding_line_id:
|
||||
rec.issue_state = False
|
||||
elif rec.amount and not rec.outstanding_line_id.amount_residual:
|
||||
if any(
|
||||
line.account_id.account_type in ['liability_payable', 'asset_receivable']
|
||||
for line in rec.outstanding_line_id.matched_debit_ids.debit_move_id.move_id.line_ids
|
||||
):
|
||||
rec.issue_state = 'voided'
|
||||
else:
|
||||
rec.issue_state = 'debited'
|
||||
else:
|
||||
rec.issue_state = 'handed'
|
||||
|
||||
def action_void(self):
|
||||
for rec in self.filtered('outstanding_line_id'):
|
||||
void_move = rec.env['account.move'].create(rec._prepare_void_move_vals())
|
||||
void_move.action_post()
|
||||
(void_move.line_ids[1] + rec.outstanding_line_id).reconcile()
|
||||
|
||||
def _get_last_operation(self):
|
||||
self.ensure_one()
|
||||
return (self.payment_id + self.operation_ids).filtered(
|
||||
lambda x: x.state not in ['draft', 'canceled']).sorted(key=lambda payment: (payment.date, payment.write_date, payment._origin.id))[-1:]
|
||||
|
||||
@api.depends('payment_id.state', 'operation_ids.state')
|
||||
def _compute_current_journal(self):
|
||||
for rec in self:
|
||||
last_operation = rec._get_last_operation()
|
||||
if not last_operation:
|
||||
rec.current_journal_id = False
|
||||
continue
|
||||
if last_operation.payment_type == 'inbound':
|
||||
rec.current_journal_id = last_operation.journal_id
|
||||
else:
|
||||
rec.current_journal_id = False
|
||||
|
||||
def button_open_payment(self):
|
||||
self.ensure_one()
|
||||
return self.payment_id._get_records_action()
|
||||
|
||||
def button_open_check_operations(self):
|
||||
''' Redirect the user to the invoice(s) paid by this payment.
|
||||
:return: An action on account.move.
|
||||
'''
|
||||
self.ensure_one()
|
||||
operations = ((self.operation_ids + self.payment_id).filtered(lambda x: x.state not in ['draft', 'canceled']))
|
||||
action = {
|
||||
'name': _("Check Operations"),
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'account.payment',
|
||||
'views': [
|
||||
(self.env.ref('l10n_latam_check.view_account_third_party_check_operations_tree').id, 'list'),
|
||||
(False, 'form')
|
||||
],
|
||||
'context': {'create': False},
|
||||
'domain': [('id', 'in', operations.ids)],
|
||||
}
|
||||
return action
|
||||
|
||||
def action_show_reconciled_move(self):
|
||||
self.ensure_one()
|
||||
move = self._get_reconciled_move()
|
||||
return move._get_records_action()
|
||||
|
||||
def action_show_journal_entry(self):
|
||||
self.ensure_one()
|
||||
return self.outstanding_line_id.move_id._get_records_action()
|
||||
|
||||
def _get_reconciled_move(self):
|
||||
reconciled_line = self.outstanding_line_id.full_reconcile_id.reconciled_line_ids - self.outstanding_line_id
|
||||
return (reconciled_line.move_id.line_ids - reconciled_line).mapped('move_id')
|
||||
|
||||
@api.constrains('amount')
|
||||
def _constrains_min_amount(self):
|
||||
min_amount_error = self.filtered(lambda x: x.amount <= 0)
|
||||
if min_amount_error:
|
||||
raise ValidationError(_('The amount of the check must be greater than 0'))
|
||||
|
||||
@api.depends('payment_method_line_id.code', 'payment_id.partner_id')
|
||||
def _compute_bank_id(self):
|
||||
new_third_party_checks = self.filtered(lambda x: x.payment_method_line_id.code == 'new_third_party_checks')
|
||||
for rec in new_third_party_checks:
|
||||
rec.bank_id = rec.partner_id.bank_ids[:1].bank_id
|
||||
(self - new_third_party_checks).bank_id = False
|
||||
|
||||
@api.depends('payment_method_line_id.code', 'payment_id.partner_id')
|
||||
def _compute_issuer_vat(self):
|
||||
new_third_party_checks = self.filtered(lambda x: x.payment_method_line_id.code == 'new_third_party_checks')
|
||||
for rec in new_third_party_checks:
|
||||
rec.issuer_vat = rec.payment_id.partner_id.vat
|
||||
(self - new_third_party_checks).issuer_vat = False
|
||||
|
||||
@api.onchange('issuer_vat')
|
||||
def _clean_issuer_vat(self):
|
||||
for rec in self.filtered(lambda x: x.issuer_vat and x.company_id.country_id.code):
|
||||
stdnum_vat = stdnum.util.get_cc_module(rec.company_id.country_id.code, 'vat')
|
||||
if hasattr(stdnum_vat, 'compact'):
|
||||
rec.issuer_vat = stdnum_vat.compact(rec.issuer_vat)
|
||||
|
||||
@api.constrains('issuer_vat')
|
||||
def _check_issuer_vat(self):
|
||||
for rec in self.filtered(lambda x: x.issuer_vat and x.company_id.country_id):
|
||||
self.env['res.partner']._run_vat_checks(rec.company_id.country_id, rec.issuer_vat, partner_name='Check Issuer VAT')
|
||||
|
||||
@api.ondelete(at_uninstall=False)
|
||||
def _unlink_if_payment_is_draft(self):
|
||||
if any(check.payment_id.state != 'draft' for check in self):
|
||||
raise UserError(self.env._("Can't delete a check if payment is In Process!"))
|
||||
|
|
@ -1,2 +1,5 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_l10n_latam_payment_mass_transfer,access_l10n_latam_payment_mass_transfer,model_l10n_latam_payment_mass_transfer,account.group_account_invoice,1,1,1,0
|
||||
access_l10n_latam_account_payment_register_check,access.account.payment.register.check,model_l10n_latam_payment_register_check,account.group_account_invoice,1,1,1,1
|
||||
access_l10n_latam_check_readonly,l10n_latam.check,model_l10n_latam_check,account.group_account_readonly,1,0,0,0
|
||||
access_l10n_latam_check,l10n_latam.check,model_l10n_latam_check,account.group_account_invoice,1,1,1,1
|
||||
|
|
|
|||
|
|
|
@ -0,0 +1,9 @@
|
|||
<odoo noupdate="1">
|
||||
|
||||
<record model="ir.rule" id="l10n_latam_check_comp_rule">
|
||||
<field name="name">Latam Check company rule</field>
|
||||
<field name="model_id" ref="model_l10n_latam_check"/>
|
||||
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -2,26 +2,36 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
||||
from odoo.tests.common import tagged
|
||||
from odoo import Command
|
||||
|
||||
|
||||
@tagged('post_install_l10n', 'post_install', '-at_install')
|
||||
class L10nLatamCheckTest(AccountTestInvoicingCommon):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls, chart_template_ref=None):
|
||||
super().setUpClass(chart_template_ref=chart_template_ref)
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
|
||||
chart_template = cls.company_data['company'].chart_template_id
|
||||
|
||||
cls.company_data_3 = cls.setup_company_data(
|
||||
'company_3_data', chart_template=chart_template, **{'country_id': cls.env.ref('base.ar').id})
|
||||
cls.chart_template = cls.company_data['company'].chart_template
|
||||
cls.company_data_3 = cls.setup_other_company(name='company_3_data', country_id=cls.env.ref('base.ar').id)
|
||||
|
||||
cls.bank_journal = cls.company_data_3['default_journal_bank']
|
||||
cls.bank_journal.outbound_payment_method_line_ids = [
|
||||
Command.create({'payment_method_id': cls.env.ref('l10n_latam_check.account_payment_method_own_checks').id, 'name': 'Own Checks'}),
|
||||
Command.create({'payment_method_id': cls.env.ref('l10n_latam_check.account_payment_method_out_third_party_checks').id, 'name': 'Rejected Check'}),
|
||||
]
|
||||
# enable use electronic/deferred checks on bank journal
|
||||
cls.bank_journal.l10n_latam_manual_checks = True
|
||||
third_party_checks_journals = cls.env['account.journal'].search([('outbound_payment_method_line_ids.code', '=', 'new_third_party_checks'), ('inbound_payment_method_line_ids.code', '=', 'out_third_party_checks'), ('inbound_payment_method_line_ids.code', '=', 'new_third_party_checks')])
|
||||
third_party_checks_journals = cls.env['account.journal'].search([
|
||||
('inbound_payment_method_line_ids.code', '=', 'in_third_party_checks'),
|
||||
('inbound_payment_method_line_ids.code', '=', 'new_third_party_checks'),
|
||||
('outbound_payment_method_line_ids.code', 'in', ('out_third_party_checks', 'return_third_party_checks')),
|
||||
])
|
||||
cls.third_party_check_journal = third_party_checks_journals[0]
|
||||
cls.rejected_check_journal = third_party_checks_journals[1]
|
||||
|
||||
cls.assertTrue(cls.third_party_check_journal, 'Third party check journal was not created so we can run the tests')
|
||||
cls.assertTrue(cls.rejected_check_journal, 'Rejected check journal was not created so we can run the tests')
|
||||
|
||||
for company in third_party_checks_journals.grouped('company_id'):
|
||||
outstanding_account = cls.outbound_payment_method_line.payment_account_id.copy({'company_ids': [Command.set(company.ids)]})
|
||||
cls.bank_journal.outbound_payment_method_line_ids.filtered(lambda m: m.company_id == company).payment_account_id = outstanding_account
|
||||
|
|
|
|||
|
|
@ -1,32 +1,94 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo.addons.l10n_latam_check.tests.common import L10nLatamCheckTest
|
||||
from odoo.tests.common import Form, tagged
|
||||
from odoo import fields
|
||||
from odoo.tests import Form, tagged
|
||||
from odoo import Command, fields
|
||||
|
||||
|
||||
@tagged('post_install_l10n', 'post_install', '-at_install')
|
||||
class TestOwnChecks(L10nLatamCheckTest):
|
||||
|
||||
def test_01_pay_with_manual_check(self):
|
||||
""" Create and post a manual check with deferred date """
|
||||
def test_01_pay_with_own_checks(self):
|
||||
""" Create and post a manual checks with deferred date """
|
||||
|
||||
with Form(self.env['account.payment'].with_context(default_payment_type='outbound')) as payment_form:
|
||||
payment_form.partner_id = self.partner_a
|
||||
payment_form.amount = 50
|
||||
payment_form.journal_id = self.bank_journal
|
||||
payment_form.payment_method_line_id = self.bank_journal._get_available_payment_method_lines(
|
||||
'outbound').filtered(lambda x: x.code == 'check_printing')
|
||||
'outbound').filtered(lambda x: x.code == 'own_checks')[0]
|
||||
payment_form.memo = 'Deferred check'
|
||||
with payment_form.l10n_latam_new_check_ids.new() as check1:
|
||||
check1.name = '00000001'
|
||||
check1.payment_date = fields.Date.add(fields.Date.today(), months=1)
|
||||
check1.issuer_vat = '30714295698'
|
||||
check1.amount = 25
|
||||
|
||||
payment_form.ref = 'Deferred check'
|
||||
payment_form.l10n_latam_check_payment_date = fields.Date.add(fields.Date.today(), months=1)
|
||||
|
||||
# Manual check (deferred/electronic) has l10n_latam_manual_checks = True and do not auto compute the check
|
||||
# number field
|
||||
self.assertEqual(payment_form.l10n_latam_manual_checks, True)
|
||||
self.assertEqual(payment_form.check_number, False)
|
||||
|
||||
payment_form.l10n_latam_check_number = '00000001'
|
||||
with payment_form.l10n_latam_new_check_ids.new() as check2:
|
||||
check2.name = '00000002'
|
||||
check2.payment_date = fields.Date.add(fields.Date.today(), months=1)
|
||||
check2.issuer_vat = '30714295698'
|
||||
check2.amount = 25
|
||||
|
||||
payment = payment_form.save()
|
||||
payment.action_post()
|
||||
self.assertEqual(payment.amount, 50)
|
||||
outstanding_line_ids = payment.l10n_latam_new_check_ids.mapped('outstanding_line_id')
|
||||
self.assertEqual(len(outstanding_line_ids), 2, "There should be a split line per check. (2)")
|
||||
all_handed = any(s == 'handed' for s in payment.l10n_latam_new_check_ids.mapped('issue_state'))
|
||||
self.assertTrue(all_handed, "All checks should be in handed status.")
|
||||
first_check = payment.l10n_latam_new_check_ids[0]
|
||||
first_check.action_void()
|
||||
self.assertTrue(first_check.issue_state == 'voided', "First checks should be in voided status.")
|
||||
|
||||
def test_02_pay_with_own_check_and_cancel_payment(self):
|
||||
""" Create and post a manual check with deferred date ands cancel it """
|
||||
|
||||
with Form(self.env['account.payment'].with_context(default_payment_type='outbound')) as payment_form:
|
||||
payment_form.partner_id = self.partner_a
|
||||
payment_form.journal_id = self.bank_journal
|
||||
payment_form.payment_method_line_id = self.bank_journal._get_available_payment_method_lines(
|
||||
'outbound').filtered(lambda x: x.code == 'own_checks')[0]
|
||||
|
||||
payment_form.memo = 'Deferred check'
|
||||
with payment_form.l10n_latam_new_check_ids.new() as check1:
|
||||
check1.name = '00000003'
|
||||
check1.payment_date = fields.Date.add(fields.Date.today(), months=1)
|
||||
check1.issuer_vat = '30714295698'
|
||||
check1.amount = 50
|
||||
|
||||
payment = payment_form.save()
|
||||
payment.action_post()
|
||||
self.assertEqual(payment.amount, 50)
|
||||
payment.action_cancel()
|
||||
self.assertFalse(payment.l10n_latam_new_check_ids.issue_state,
|
||||
"Canceled payment checks must not have issue state")
|
||||
self.assertEqual(len(payment.l10n_latam_new_check_ids.outstanding_line_id), 0,
|
||||
"Canceled payment checks must not have split move")
|
||||
|
||||
def test_post_own_check_with_3_lines(self):
|
||||
foreign_currency = self.env.ref('base.EUR')
|
||||
foreign_currency.active = True
|
||||
payment_method_line = self.bank_journal._get_available_payment_method_lines('outbound').filtered_domain([('code', '=', 'own_checks')])[:1]
|
||||
payment = self.env['account.payment'].create({
|
||||
'payment_type': 'outbound',
|
||||
'partner_id': self.partner_a.id,
|
||||
'journal_id': self.bank_journal.id,
|
||||
'currency_id': foreign_currency.id,
|
||||
'payment_method_line_id': payment_method_line.id,
|
||||
'l10n_latam_new_check_ids': [
|
||||
Command.create({
|
||||
'payment_date': fields.Date.today(),
|
||||
'amount': '20',
|
||||
}),
|
||||
Command.create({
|
||||
'payment_date': fields.Date.today(),
|
||||
'amount': '30',
|
||||
}),
|
||||
Command.create({
|
||||
'payment_date': fields.Date.today(),
|
||||
'amount': '70',
|
||||
}),
|
||||
]
|
||||
})
|
||||
payment.action_post()
|
||||
self.assertEqual(payment.amount, 120)
|
||||
|
|
|
|||
|
|
@ -1,24 +1,32 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from freezegun import freeze_time
|
||||
from unittest.mock import patch
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from odoo.addons.l10n_latam_check.tests.common import L10nLatamCheckTest
|
||||
from odoo.exceptions import ValidationError, UserError
|
||||
from odoo.tests.common import tagged
|
||||
from odoo import fields, Command
|
||||
|
||||
|
||||
@tagged('post_install_l10n', 'post_install', '-at_install')
|
||||
class TestThirdChecks(L10nLatamCheckTest):
|
||||
|
||||
def create_third_party_check(self, journal=False, check_number='00000001'):
|
||||
def create_third_party_check(self, journal=False, check_numbers=['00000001', '00000002']):
|
||||
if not journal:
|
||||
journal = self.third_party_check_journal
|
||||
vals = {
|
||||
'partner_id': self.partner_a.id,
|
||||
'amount': 1,
|
||||
'check_number': check_number,
|
||||
'payment_type': 'inbound',
|
||||
'journal_id': journal.id,
|
||||
'l10n_latam_new_check_ids': [
|
||||
Command.create({'name': check_numbers[0], 'payment_date': fields.Date.add(fields.Date.today(), months=1), 'amount': 1}),
|
||||
Command.create({'name': check_numbers[1], 'payment_date': fields.Date.add(fields.Date.today(), months=1), 'amount': 1}),
|
||||
],
|
||||
'payment_method_line_id': journal._get_available_payment_method_lines('inbound').filtered(lambda x: x.code == 'new_third_party_checks').id,
|
||||
}
|
||||
|
||||
payment = self.env['account.payment'].create(vals)
|
||||
payment.action_post()
|
||||
return payment
|
||||
|
|
@ -27,50 +35,35 @@ class TestThirdChecks(L10nLatamCheckTest):
|
|||
""" This a generic test to check that we are able to pay with checks
|
||||
We pay directly with multiple checks instead of just one check, just to ensure the create multi
|
||||
is properly working. """
|
||||
vals_list = [{
|
||||
'partner_id': self.partner_a.id,
|
||||
'amount': 1,
|
||||
'check_number': '00000001',
|
||||
'payment_type': 'inbound',
|
||||
'journal_id': self.third_party_check_journal.id,
|
||||
'payment_method_line_id': self.third_party_check_journal._get_available_payment_method_lines('inbound').filtered(lambda x: x.code == 'new_third_party_checks').id,
|
||||
}, {
|
||||
'partner_id': self.partner_a.id,
|
||||
'amount': 2,
|
||||
'check_number': '00000002',
|
||||
'payment_type': 'inbound',
|
||||
'journal_id': self.third_party_check_journal.id,
|
||||
'payment_method_line_id': self.third_party_check_journal._get_available_payment_method_lines('inbound').filtered(lambda x: x.code == 'new_third_party_checks').id,
|
||||
}]
|
||||
payments = self.env['account.payment'].create(vals_list)
|
||||
payments.action_post()
|
||||
self.assertEqual(len(payments), 2, 'Checks where not created properly')
|
||||
self.assertRecordValues(payments, [{
|
||||
'l10n_latam_check_current_journal_id': self.third_party_check_journal.id,
|
||||
payment = self.create_third_party_check()
|
||||
|
||||
self.assertEqual(len(payment.l10n_latam_new_check_ids), 2, 'Checks where not created properly')
|
||||
self.assertRecordValues(payment.l10n_latam_new_check_ids, [{
|
||||
'current_journal_id': self.third_party_check_journal.id,
|
||||
}]*2)
|
||||
|
||||
# delivery (assert) dd un cheque tmb un return (assert) y un claim (assert)
|
||||
def test_02_third_party_check_delivery(self):
|
||||
check = self.create_third_party_check()
|
||||
|
||||
payment = self.create_third_party_check()
|
||||
check = payment.l10n_latam_new_check_ids[0]
|
||||
# Check Delivery
|
||||
vals = {
|
||||
'l10n_latam_check_id': check.id,
|
||||
'amount': 1,
|
||||
'l10n_latam_move_check_ids': [Command.set([check.id])],
|
||||
'partner_id': self.partner_a.id,
|
||||
'payment_type': 'outbound',
|
||||
'journal_id': self.third_party_check_journal.id,
|
||||
'payment_method_line_id': self.third_party_check_journal._get_available_payment_method_lines('outbound').filtered(lambda x: x.code == 'out_third_party_checks').id,
|
||||
'payment_method_line_id': self.third_party_check_journal._get_available_payment_method_lines('outbound').filtered(lambda x: x.code in ('out_third_party_checks', 'return_third_party_checks')).id,
|
||||
}
|
||||
delivery = self.env['account.payment'].create(vals)
|
||||
delivery.action_post()
|
||||
self.assertFalse(check.l10n_latam_check_current_journal_id, 'Current journal was not computed properly on delivery')
|
||||
self.assertFalse(check.current_journal_id, 'Current journal was not computed properly on delivery')
|
||||
# check dont delivery twice
|
||||
with self.assertRaisesRegex(ValidationError, "is already used on another payment"), self.cr.savepoint():
|
||||
with self.assertRaisesRegex(ValidationError, "it seems it has been moved by another payment"):
|
||||
self.env['account.payment'].create(vals).action_post()
|
||||
|
||||
# Check Return / Rejection
|
||||
vals = {
|
||||
'l10n_latam_check_id': check.id,
|
||||
'l10n_latam_move_check_ids': [Command.set([check.id])],
|
||||
'amount': 1,
|
||||
'partner_id': self.partner_a.id,
|
||||
'payment_type': 'inbound',
|
||||
|
|
@ -79,105 +72,138 @@ class TestThirdChecks(L10nLatamCheckTest):
|
|||
}
|
||||
supplier_return = self.env['account.payment'].create(vals)
|
||||
supplier_return.action_post()
|
||||
self.assertEqual(check.l10n_latam_check_current_journal_id, self.rejected_check_journal, 'Current journal was not computed properly on return')
|
||||
self.assertEqual(check.current_journal_id, self.rejected_check_journal, 'Current journal was not computed properly on return')
|
||||
# check dont return twice
|
||||
with self.assertRaisesRegex(ValidationError, "it can't be received it again"), self.cr.savepoint():
|
||||
with self.assertRaisesRegex(ValidationError, "Some checks are already in hand and can't be received again"):
|
||||
self.env['account.payment'].create(vals).action_post()
|
||||
|
||||
# Check Claim/Return to customer
|
||||
vals = {
|
||||
'l10n_latam_check_id': check.id,
|
||||
'amount': 1,
|
||||
'l10n_latam_move_check_ids': [Command.set([check.id])],
|
||||
'partner_id': self.partner_a.id,
|
||||
'payment_type': 'outbound',
|
||||
'journal_id': self.rejected_check_journal.id,
|
||||
'payment_method_line_id': self.rejected_check_journal._get_available_payment_method_lines('outbound').filtered(lambda x: x.code == 'out_third_party_checks').id,
|
||||
'payment_method_line_id': self.rejected_check_journal._get_available_payment_method_lines('outbound').filtered(lambda x: x.code in ('out_third_party_checks', 'return_third_party_checks')).id,
|
||||
}
|
||||
customer_return = self.env['account.payment'].create(vals)
|
||||
customer_return.action_post()
|
||||
self.assertFalse(check.l10n_latam_check_current_journal_id, 'Current journal was not computed properly on customer return')
|
||||
self.assertFalse(check.current_journal_id, 'Current journal was not computed properly on customer return')
|
||||
# check dont claim twice
|
||||
with self.assertRaisesRegex(ValidationError, "is already used on another payment"), self.cr.savepoint():
|
||||
with self.assertRaisesRegex(ValidationError, "Some checks are not anymore in journal,"):
|
||||
self.env['account.payment'].create(vals).action_post()
|
||||
|
||||
operations = self.env['account.payment'].search([('l10n_latam_check_id', '=', check.id), ('state', '=', 'posted')], order="date desc, id desc")
|
||||
operations = self.env['account.payment'].search([('l10n_latam_move_check_ids', '=', check.id), ('state', '!=', 'draft')], order="date desc, id desc")
|
||||
self.assertEqual(len(operations), 3, 'There should be 3 operations on the check')
|
||||
self.assertEqual(operations, customer_return | supplier_return | delivery)
|
||||
|
||||
def test_03_check_deposit(self):
|
||||
check = self.create_third_party_check()
|
||||
def test_03_deposit(self):
|
||||
payment = self.create_third_party_check()
|
||||
check = payment.l10n_latam_new_check_ids[0]
|
||||
bank_journal = self.company_data_3['default_journal_bank']
|
||||
|
||||
# Check Deposit
|
||||
deposit = self.env['l10n_latam.payment.mass.transfer'].with_context(
|
||||
active_model='account.payment', active_ids=[check.id]).create({'destination_journal_id': bank_journal.id})._create_payments()
|
||||
self.assertEqual(check.l10n_latam_check_current_journal_id, bank_journal, 'Current journal was not computed properly on delivery')
|
||||
# check dont deposit twice
|
||||
with self.assertRaisesRegex(UserError, "All selected checks must be on the same journal and on hand"), self.cr.savepoint():
|
||||
self.env['l10n_latam.payment.mass.transfer'].with_context(
|
||||
active_model='account.payment', active_ids=[check.id]).create({'destination_journal_id': bank_journal.id})._create_payments()
|
||||
|
||||
# Check Rejection
|
||||
vals = {
|
||||
'l10n_latam_check_id': check.id,
|
||||
'amount': 1,
|
||||
'payment_type': 'inbound',
|
||||
'journal_id': self.rejected_check_journal.id,
|
||||
'is_internal_transfer': True,
|
||||
'payment_method_line_id': self.rejected_check_journal._get_available_payment_method_lines('inbound').filtered(lambda x: x.code == 'in_third_party_checks').id,
|
||||
# Deposit the check to the bank
|
||||
self.env['l10n_latam.payment.mass.transfer'].with_context(
|
||||
active_model='l10n_latam.check', active_ids=[check.id]
|
||||
).create({
|
||||
'destination_journal_id': bank_journal.id,
|
||||
}
|
||||
bank_rejection = self.env['account.payment'].create(vals)
|
||||
bank_rejection.action_post()
|
||||
self.assertEqual(check.l10n_latam_check_current_journal_id, self.rejected_check_journal, 'Current journal was not computed properly on return')
|
||||
# check dont reject twice
|
||||
with self.assertRaisesRegex(ValidationError, "it seems it has been moved by another payment"), self.cr.savepoint():
|
||||
self.env['account.payment'].create(vals).action_post()
|
||||
})._create_payments()
|
||||
self.assertEqual(check.current_journal_id.id, bank_journal.id, 'Current journal was not computed properly on delivery')
|
||||
self.assertEqual(len(check.operation_ids + payment), 3, 'Check that all three payments were created')
|
||||
|
||||
# Check Claim/Return to customer
|
||||
vals = {
|
||||
'l10n_latam_check_id': check.id,
|
||||
'amount': 1,
|
||||
# If the bank tells you that the check has been rejected you have to do a new transfer of the previous check
|
||||
self.env['l10n_latam.payment.mass.transfer'].with_context(
|
||||
active_model='l10n_latam.check', active_ids=[check.id]
|
||||
).create({
|
||||
'destination_journal_id': self.rejected_check_journal.id,
|
||||
})._create_payments()
|
||||
self.assertEqual(check.current_journal_id.id, self.rejected_check_journal.id, 'Current journal was not computed properly on delivery')
|
||||
self.assertEqual(len(check.operation_ids + payment), 5, 'Check that all five payments were created')
|
||||
|
||||
# Sent back to customer (with payment) - check if we can use the check
|
||||
self.env['account.payment'].create({
|
||||
'partner_id': self.partner_a.id,
|
||||
'payment_type': 'outbound',
|
||||
'journal_id': self.rejected_check_journal.id,
|
||||
'payment_method_line_id': self.rejected_check_journal._get_available_payment_method_lines('outbound').filtered(lambda x: x.code == 'out_third_party_checks').id,
|
||||
}
|
||||
customer_return = self.env['account.payment'].create(vals)
|
||||
customer_return.action_post()
|
||||
self.assertFalse(check.l10n_latam_check_current_journal_id, 'Current journal was not computed properly on customer return')
|
||||
# check dont return twice
|
||||
with self.assertRaisesRegex(ValidationError, "is already used on another payment"), self.cr.savepoint():
|
||||
self.env['account.payment'].create(vals).action_post()
|
||||
|
||||
operations = self.env['account.payment'].search([('l10n_latam_check_id', '=', check.id), ('state', '=', 'posted')], order="date desc, id desc")
|
||||
# we have 5 operations because for each transfers a second payment/operation is created automatically by odoo
|
||||
self.assertEqual(len(operations), 5, 'There should be 5 operations on the check')
|
||||
self.assertEqual(operations[0], customer_return, 'Last operation should be customer return')
|
||||
self.assertEqual(operations[2], bank_rejection, 'Previous operation should be bank rejection')
|
||||
self.assertEqual(operations[4], deposit, 'First operation should be the deposit')
|
||||
'l10n_latam_move_check_ids': [Command.set([check.id])],
|
||||
'payment_method_line_id': self.rejected_check_journal._get_available_payment_method_lines('inbound').filtered(lambda x: x.code == 'new_third_party_checks').id,
|
||||
}).action_post()
|
||||
|
||||
def test_04_check_transfer(self):
|
||||
""" Test transfer between third party checks journals """
|
||||
check = self.create_third_party_check()
|
||||
payment = self.create_third_party_check()
|
||||
check = payment.l10n_latam_new_check_ids[0]
|
||||
|
||||
# Transfer to rejected checks journal (usually is to another third party checks journal, but for test purpose is the same)
|
||||
self.env['l10n_latam.payment.mass.transfer'].with_context(
|
||||
active_model='account.payment', active_ids=[check.id]).create({'destination_journal_id': self.rejected_check_journal.id})._create_payments()
|
||||
self.assertEqual(check.l10n_latam_check_current_journal_id, self.rejected_check_journal, 'Current journal was not computed properly on delivery')
|
||||
active_model='l10n_latam.check', active_ids=[check.id]).create({'destination_journal_id': self.rejected_check_journal.id})._create_payments()
|
||||
self.assertEqual(check.current_journal_id, self.rejected_check_journal, 'Current journal was not computed properly on delivery')
|
||||
|
||||
# test that checks created on different journals but that are on same current journal, can be transfered together
|
||||
check2 = self.create_third_party_check(journal=self.rejected_check_journal)
|
||||
payment2 = self.create_third_party_check(journal=self.rejected_check_journal)
|
||||
check2 = payment2.l10n_latam_new_check_ids[0]
|
||||
self.env['l10n_latam.payment.mass.transfer'].with_context(
|
||||
active_model='account.payment', active_ids=[check.id, check2.id]).create({'destination_journal_id': self.third_party_check_journal.id})._create_payments()
|
||||
active_model='l10n_latam.check', active_ids=[check.id, check2.id]).create({'destination_journal_id': self.third_party_check_journal.id})._create_payments()
|
||||
|
||||
def test_check_number_is_number(self):
|
||||
"""
|
||||
Ensure 'check_number' field only allows numbers
|
||||
"""
|
||||
self.create_third_party_check(check_number='2147483647')
|
||||
def test_05_check_current_journal_with_both_operations(self):
|
||||
# -------------------------------
|
||||
# Case 1: inbound first, then outbound
|
||||
# -------------------------------
|
||||
inbound_payment = self.create_third_party_check()
|
||||
check = inbound_payment.l10n_latam_new_check_ids[0]
|
||||
|
||||
with self.assertRaises(ValidationError) as context:
|
||||
self.create_third_party_check(check_number='absdfdf')
|
||||
# Check should be on hand after receiving
|
||||
self.assertEqual(
|
||||
check.current_journal_id,
|
||||
self.third_party_check_journal,
|
||||
"Check should be available after inbound operation"
|
||||
)
|
||||
|
||||
self.assertTrue("Check numbers can only consist of digits" in context.exception.args[0])
|
||||
# Create outbound payment and consume check
|
||||
outbound_payment = self.env['account.payment'].create({
|
||||
'l10n_latam_move_check_ids': [Command.set([check.id])],
|
||||
'partner_id': self.partner_a.id,
|
||||
'payment_type': 'outbound',
|
||||
'journal_id': self.third_party_check_journal.id,
|
||||
'payment_method_line_id': self.third_party_check_journal
|
||||
._get_available_payment_method_lines('outbound')
|
||||
.filtered(lambda x: x.code == 'out_third_party_checks').id,
|
||||
})
|
||||
outbound_payment.action_post()
|
||||
|
||||
# Check should not be on hand after both operations
|
||||
self.assertFalse(
|
||||
check.current_journal_id,
|
||||
"Check with both inbound and outbound operations should not have current_journal_id set"
|
||||
)
|
||||
|
||||
# -------------------------------
|
||||
# Case 2: outbound first, then inbound
|
||||
# -------------------------------
|
||||
first_now = datetime(2023, 11, 6, 8, 0, 0)
|
||||
second_now = first_now + timedelta(seconds=1)
|
||||
|
||||
# Outbound creation with fixed now
|
||||
with patch.object(self.env.cr, 'now', lambda: first_now), freeze_time(first_now):
|
||||
outbound_payment_2 = self.env['account.payment'].create({
|
||||
'partner_id': self.partner_a.id,
|
||||
'payment_type': 'outbound',
|
||||
'journal_id': self.third_party_check_journal.id,
|
||||
'payment_method_line_id': self.third_party_check_journal
|
||||
._get_available_payment_method_lines('outbound')
|
||||
.filtered(lambda x: x.code == 'out_third_party_checks').id,
|
||||
})
|
||||
|
||||
# Inbound creation with slightly later now
|
||||
with patch.object(self.env.cr, 'now', lambda: second_now), freeze_time(second_now):
|
||||
inbound_payment_2 = self.create_third_party_check()
|
||||
check_2 = inbound_payment_2.l10n_latam_new_check_ids[0]
|
||||
|
||||
# Link check to outbound afterwards
|
||||
outbound_payment_2.write({'l10n_latam_move_check_ids': [Command.set([check_2.id])]})
|
||||
outbound_payment_2.action_post()
|
||||
|
||||
# Check should also not be on hand in this order
|
||||
self.assertFalse(
|
||||
check_2.current_journal_id,
|
||||
"Check should not be on hand even if outbound was created before inbound"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
<odoo>
|
||||
|
||||
<record id="view_account_journal_tree" model="ir.ui.view">
|
||||
<field name="name">account.journal.tree</field>
|
||||
<field name="model">account.journal</field>
|
||||
<field name="inherit_id" ref="account_check_printing.view_account_journal_form_inherited"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='check_sequence_id']/.." position="after">
|
||||
<group string="Checks Management" name="check_management"
|
||||
attrs="{'invisible': ['|', '!', ('selected_payment_method_codes', 'ilike', ',check_printing,'), ('type', '!=', 'bank')]}">
|
||||
<field name="l10n_latam_manual_checks"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -1,239 +1,53 @@
|
|||
<odoo>
|
||||
|
||||
<!-- Own checks search view -->
|
||||
<record model="ir.ui.view" id="view_account_payment_search">
|
||||
<field name="name">account.check.search</field>
|
||||
<field name="model">account.payment</field>
|
||||
<field name="priority">20</field>
|
||||
<field name="mode">primary</field>
|
||||
<field name="inherit_id" ref="account.view_account_payment_search"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="name" position="before">
|
||||
<field name="check_number"/>
|
||||
</field>
|
||||
<filter name="date" position="after">
|
||||
<separator/>
|
||||
</filter>
|
||||
<filter name="groupby_date" position="after">
|
||||
<filter string="Check Cash-In Date"
|
||||
name="groupby_l10n_latam_check_payment_date"
|
||||
context="{'group_by': 'l10n_latam_check_payment_date'}"/>
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Third party checks search view -->
|
||||
<record model="ir.ui.view" id="view_account_payment_third_party_checks_search">
|
||||
<field name="name">account.check.search</field>
|
||||
<field name="model">account.payment</field>
|
||||
<field name="priority">22</field>
|
||||
<field name="mode">primary</field>
|
||||
<field name="inherit_id" ref="account.view_account_payment_search"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="name" position="before">
|
||||
<field name="check_number"/>
|
||||
</field>
|
||||
<field name="journal_id" position="after">
|
||||
<field name="l10n_latam_check_current_journal_id"/>
|
||||
</field>
|
||||
<filter name="date" position="after">
|
||||
<separator/>
|
||||
<filter string="Checks on hand" name="checks_on_hand"
|
||||
domain="[('state', '=', 'posted'),
|
||||
('l10n_latam_check_current_journal_id.inbound_payment_method_line_ids.payment_method_id.code', 'in', ['new_third_party_checks', 'in_third_party_checks'])]"/>
|
||||
</filter>
|
||||
<filter name="journal" position="after">
|
||||
<filter name="groupby_third_party_check_current_journal"
|
||||
string="Current Journal"
|
||||
context="{'group_by': 'l10n_latam_check_current_journal_id'}"/>
|
||||
</filter>
|
||||
<filter name="unmatched" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</filter>
|
||||
<filter name="groupby_date" position="after">
|
||||
<filter string="Check Cash-In Date"
|
||||
name="groupby_l10n_latam_check_payment_date"
|
||||
context="{'group_by': 'l10n_latam_check_payment_date'}"/>
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_account_payment_form_inherited" model="ir.ui.view">
|
||||
<field name="name">account.payment.form.inherited</field>
|
||||
<field name="model">account.payment</field>
|
||||
<field name="inherit_id" ref="account_check_printing.view_account_payment_form_inherited" />
|
||||
<field name="inherit_id" ref="account.view_account_payment_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<group>
|
||||
<notebook>
|
||||
<page name="latam_checks_page" string="Checks" invisible="payment_method_code not in ['in_third_party_checks', 'out_third_party_checks', 'return_third_party_checks', 'new_third_party_checks', 'own_checks']">
|
||||
<group name="latam_checks" colspan="2">
|
||||
<field name="l10n_latam_new_check_ids" invisible="payment_method_code not in ['new_third_party_checks', 'own_checks']" nolabel="1" colspan="2" readonly="state != 'draft'">
|
||||
<list name="new_checks" editable="bottom">
|
||||
<field name="company_id" column_invisible="True"/>
|
||||
<field name="currency_id" column_invisible="True"/>
|
||||
<field name="name" />
|
||||
<field name="bank_id" column_invisible="parent.payment_method_code == 'own_checks'"/>
|
||||
<field name="issuer_vat" column_invisible="parent.payment_method_code == 'own_checks'"/>
|
||||
<field name="payment_date"/>
|
||||
<field name="amount" />
|
||||
<button type="object" name="get_formview_action" icon="fa-pencil-square-o" title="open" help="Open" column_invisible="parent.state == 'draft'"/>
|
||||
</list>
|
||||
</field>
|
||||
<field name="l10n_latam_move_check_ids" invisible="payment_method_code not in ['in_third_party_checks', 'out_third_party_checks', 'return_third_party_checks']"
|
||||
domain="
|
||||
[('payment_method_code', '=', 'new_third_party_checks'), ('current_journal_id', '=', journal_id), ('company_id', '=', company_id)]
|
||||
if payment_type == 'outbound' else
|
||||
[('payment_method_code', '=', 'new_third_party_checks'), ('current_journal_id', '=', False), ('company_id', '=', company_id)]" options="{'no_create': True}"
|
||||
nolabel="1" colspan="2" readonly="state != 'draft'">
|
||||
<list name="existing_checks">
|
||||
<field name="company_id" column_invisible="True"/>
|
||||
<field name="currency_id" column_invisible="True"/>
|
||||
<field name="name" />
|
||||
<field name="bank_id" optional="hide"/>
|
||||
<field name="issuer_vat" optional="hide"/>
|
||||
<field name="payment_date" optional="hide"/>
|
||||
<field name="amount"/>
|
||||
<button type="object" name="get_formview_action" icon="fa-pencil-square-o" title="open" help="Open"/>
|
||||
</list>
|
||||
</field>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</group>
|
||||
<sheet position="before">
|
||||
<div class="alert alert-danger mb-0" role="alert"
|
||||
attrs="{'invisible': [('l10n_latam_check_warning_msg', '=', False)]}">
|
||||
<div class="alert alert-danger mb-0" role="alert" invisible="not l10n_latam_check_warning_msg">
|
||||
<field name="l10n_latam_check_warning_msg" nolabel="1"/>
|
||||
</div>
|
||||
</sheet>
|
||||
|
||||
<field name="destination_journal_id" position="after">
|
||||
<!-- Move Third party checks -->
|
||||
<field name="l10n_latam_check_id"
|
||||
attrs="{
|
||||
'invisible': [('payment_method_code', 'not in', ['in_third_party_checks', 'out_third_party_checks']), ('l10n_latam_check_id', '=', False)],
|
||||
'required': [('payment_method_code', 'in', ['in_third_party_checks', 'out_third_party_checks'])]}"
|
||||
domain="
|
||||
[('payment_method_code', '=', 'new_third_party_checks'), ('l10n_latam_check_current_journal_id', '=', journal_id), ('state', '=', 'posted'), ('company_id', '=', company_id)]
|
||||
if payment_type == 'outbound' else
|
||||
[('payment_method_code', '=', 'new_third_party_checks'), ('l10n_latam_check_current_journal_id', '=', destination_journal_id), ('state', '=', 'posted'), ('company_id', '=', company_id)]
|
||||
if is_internal_transfer else
|
||||
[('payment_method_code', '=', 'new_third_party_checks'), ('l10n_latam_check_current_journal_id', '=', False), ('state', '=', 'posted'), ('company_id', '=', company_id)]"
|
||||
context="{'search_view_ref': 'l10n_latam_check.view_account_payment_third_party_checks_search'}"
|
||||
options="{'no_create': True}"
|
||||
/>
|
||||
</field>
|
||||
<field name="payment_method_line_id" position="after">
|
||||
<field name="l10n_latam_manual_checks" invisible="1"/>
|
||||
<field name="l10n_latam_check_number"
|
||||
string='Check Number'
|
||||
attrs="{
|
||||
'invisible': [('payment_method_code', '!=', 'new_third_party_checks'), '|', ('payment_method_code', '!=', 'check_printing'), ('l10n_latam_manual_checks', '=', False)],
|
||||
'required': ['|', ('payment_method_code', '=', 'new_third_party_checks'), '&', ('payment_method_code', '=', 'check_printing'), ('l10n_latam_manual_checks', '=', True)],
|
||||
'readonly': [('state', '!=', 'draft')]}"/>
|
||||
<field name="l10n_latam_check_payment_date" attrs="{
|
||||
'invisible': [('payment_method_code', '!=', 'new_third_party_checks'), '|', ('payment_method_code', '!=', 'check_printing'), ('l10n_latam_manual_checks', '=', False)]}"/>
|
||||
<field name="l10n_latam_check_bank_id" string="Check Bank"
|
||||
attrs="{'invisible': [('payment_method_code', '!=', 'new_third_party_checks')]}"/>
|
||||
<field name="l10n_latam_check_issuer_vat" string="Check Issuer Vat"
|
||||
attrs="{'invisible': [('payment_method_code', '!=', 'new_third_party_checks')]}"/>
|
||||
<label for="l10n_latam_check_current_journal_id" string="Check Current Journal"
|
||||
attrs="{'invisible': ['|', ('state', '!=', 'posted'), ('payment_method_code', '!=', 'new_third_party_checks')]}"/>
|
||||
<div class="oe_inline"
|
||||
attrs="{'invisible': ['|', ('state', '!=', 'posted'), ('payment_method_code', '!=', 'new_third_party_checks')]}">
|
||||
<field name="l10n_latam_check_current_journal_id"/>
|
||||
<span attrs="{'invisible': [('l10n_latam_check_current_journal_id', '!=', False)]}">Not in Wallet</span>
|
||||
<button name="button_open_check_operations" type="object" string="⇒ Check Operations" class="oe_link"/>
|
||||
</div>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_account_third_party_check_operations_tree">
|
||||
<field name="name">account.check.operations.tree</field>
|
||||
<field name="model">account.payment</field>
|
||||
<field name="priority" eval="99"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree default_order="date desc, id desc, name desc">
|
||||
<field name="date"/>
|
||||
<field name="name"/>
|
||||
<field name="payment_type"/>
|
||||
<field name="journal_id"/>
|
||||
<field name="partner_id" string="Customer"/>
|
||||
<field name="state" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_account_check_calendar">
|
||||
<field name="name">account.check.calendar</field>
|
||||
<field name="model">account.payment</field>
|
||||
<field name="arch" type="xml">
|
||||
<calendar
|
||||
mode="month"
|
||||
date_start="l10n_latam_check_payment_date"
|
||||
color="journal_id">
|
||||
<field name="amount"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_account_check_pivot">
|
||||
<field name="name">account.check.calendar</field>
|
||||
<field name="model">account.payment</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot>
|
||||
<field name="l10n_latam_check_payment_date" type="row" interval="month"/>
|
||||
<field name="l10n_latam_check_payment_date" type="row" interval="week"/>
|
||||
<field name="amount" type="measure"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Own Check Views and menus -->
|
||||
|
||||
<record model="ir.ui.view" id="view_account_own_check_tree">
|
||||
<field name="name">account.check.tree</field>
|
||||
<field name="model">account.payment</field>
|
||||
<field name="priority">100</field>
|
||||
<field name="mode">primary</field>
|
||||
<field name="inherit_id" ref="account.view_account_payment_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="name" position="attributes">
|
||||
<attribute name="optional">hide</attribute>
|
||||
</field>
|
||||
<field name="name" position="after">
|
||||
<field name="check_number"/>
|
||||
</field>
|
||||
<field name="payment_method_line_id" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</field>
|
||||
<field name="date" position="after">
|
||||
<field name="l10n_latam_check_payment_date" optional="show"/>
|
||||
</field>
|
||||
<tree>
|
||||
<field name="is_matched"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_own_check">
|
||||
<field name="name">Own Checks</field>
|
||||
<field name="res_model">account.payment</field>
|
||||
<field name="view_mode">tree,form,calendar,graph,pivot</field>
|
||||
<field name="view_id" ref="view_account_own_check_tree"/>
|
||||
<field name="search_view_id" ref="view_account_payment_search"/>
|
||||
<field name="domain">[('payment_method_code', '=', 'check_printing')]</field>
|
||||
<field name="context">{'search_default_unmatched': True}</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
action="action_own_check"
|
||||
id="menu_own_check"
|
||||
sequence="50"
|
||||
parent="account.menu_finance_payables"/>
|
||||
|
||||
<!-- Third party check Views and menus -->
|
||||
|
||||
<record model="ir.ui.view" id="view_account_third_party_check_tree">
|
||||
<field name="name">account.check.tree</field>
|
||||
<field name="model">account.payment</field>
|
||||
<field name="priority">110</field>
|
||||
<field name="mode">primary</field>
|
||||
<field name="inherit_id" ref="view_account_own_check_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="is_matched" position="replace"/>
|
||||
<field name="journal_id" position="replace">
|
||||
<field name="l10n_latam_check_current_journal_id" string="Current Journal"/>
|
||||
</field>
|
||||
<tree position="attributes">
|
||||
<attribute name="create">false</attribute>
|
||||
</tree>
|
||||
<tree position="inside">
|
||||
<header>
|
||||
<button name="%(action_view_l10n_latam_payment_mass_transfer)d" type="action" string="Check Transfer" groups="account.group_account_user"/>
|
||||
</header>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_third_party_check">
|
||||
<field name="name">Third Party Checks</field>
|
||||
<field name="res_model">account.payment</field>
|
||||
<field name="view_mode">tree,form,calendar,graph,pivot</field>
|
||||
<field name="view_id" ref="view_account_third_party_check_tree"/>
|
||||
<field name="search_view_id" ref="l10n_latam_check.view_account_payment_third_party_checks_search"/>
|
||||
<field name="domain">[('payment_method_code', '=', 'new_third_party_checks')]</field>
|
||||
<field name="context">{'search_default_checks_on_hand': 1}</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
action="action_third_party_check"
|
||||
id="menu_third_party_check"
|
||||
sequence="40"
|
||||
parent="account.menu_finance_receivables"/>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,227 @@
|
|||
<odoo>
|
||||
|
||||
<!-- Own checks search view -->
|
||||
<record model="ir.ui.view" id="view_account_payment_search">
|
||||
<field name="name">account.check.search</field>
|
||||
<field name="model">l10n_latam.check</field>
|
||||
<field name="inherit_id" eval="False"/>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="original_journal_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<separator/>
|
||||
<filter string="Payment Date" name="payment_date" date="payment_date"/>
|
||||
<separator/>
|
||||
<filter string="Handed" name="checks_on_hand" domain="[('issue_state', '=', 'handed')]"/>
|
||||
<filter string="Voided" name="checks_voided" domain="[('issue_state', '=', 'voided')]"/>
|
||||
<filter string="Debited" name="checks_debited" domain="[('issue_state', '=', 'debited')]"/>
|
||||
<separator/>
|
||||
<filter string="Partner" name="groupby_partner" domain="[]" context="{'group_by': 'partner_id'}"/>
|
||||
<filter string="Payment Date" name="groupby_date" domain="[]" context="{'group_by': 'payment_date'}"/>
|
||||
<filter string="State" name="groupby_issue_state" domain="[]" context="{'group_by': 'issue_state'}"/>
|
||||
<filter string="Company" name="groupby_company" domain="[]" context="{'group_by': 'company_id'}" groups="base.group_multi_company"/>
|
||||
<separator/>
|
||||
<filter invisible="1" string="My Activities" name="filter_activities_my"
|
||||
domain="[('activity_user_id', '=', uid)]"/>
|
||||
<separator invisible="1"/>
|
||||
<filter invisible="1" string="Late Activities" name="activities_overdue" domain="[('my_activity_date_deadline', '<', 'today')]" help="Show all records whose next activity date is past"/>
|
||||
<filter invisible="1" string="Today Activities" name="activities_today" domain="[('my_activity_date_deadline', '=', 'today')]"/>
|
||||
<filter invisible="1" string="Future Activities" name="activities_upcoming_all" domain="[('my_activity_date_deadline', '>', 'today')]"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Third party checks search view -->
|
||||
<record model="ir.ui.view" id="view_account_payment_third_party_checks_search">
|
||||
<field name="name">account.check.search</field>
|
||||
<field name="model">l10n_latam.check</field>
|
||||
<field name="mode">primary</field>
|
||||
<field name="inherit_id" ref="view_account_payment_search"/>
|
||||
<field name="arch" type="xml">
|
||||
<filter name="checks_on_hand" position="replace"/>
|
||||
<filter name="checks_voided" position="replace"/>
|
||||
<filter name="checks_debited" position="replace">
|
||||
<filter string="On hand" name="checks_on_hand"
|
||||
domain="[('current_journal_id.inbound_payment_method_line_ids.payment_method_id.code', '=', 'in_third_party_checks')]"/>
|
||||
</filter>
|
||||
<field name="original_journal_id" position="before">
|
||||
<field name="issuer_vat"/>
|
||||
<field name="bank_id"/>
|
||||
<field name="current_journal_id"/>
|
||||
</field>
|
||||
<filter name="groupby_issue_state" position="replace">
|
||||
<filter name="groupby_current_journal"
|
||||
string="Current Journal"
|
||||
context="{'group_by': 'current_journal_id'}"/>
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_account_third_party_check_operations_tree">
|
||||
<field name="name">account.check.operations.list</field>
|
||||
<field name="model">account.payment</field>
|
||||
<field name="priority" eval="99"/>
|
||||
<field name="arch" type="xml">
|
||||
<list default_order="date desc, id desc, name desc" create="false" delete="false" duplicate="false" >
|
||||
<field name="date" readonly="state in ['cancel', 'posted']"/>
|
||||
<field name="name"/>
|
||||
<field name="payment_type"/>
|
||||
<field name="journal_id"/>
|
||||
<field name="partner_id" string="Customer"/>
|
||||
<field name="state" column_invisible="True"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_account_check_calendar">
|
||||
<field name="name">account.check.calendar</field>
|
||||
<field name="model">l10n_latam.check</field>
|
||||
<field name="arch" type="xml">
|
||||
<calendar
|
||||
mode="month"
|
||||
date_start="payment_date"
|
||||
color="original_journal_id">
|
||||
<field name="amount"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_account_check_pivot">
|
||||
<field name="name">account.check.calendar</field>
|
||||
<field name="model">l10n_latam.check</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot>
|
||||
<field name="payment_date" type="row" interval="month"/>
|
||||
<field name="payment_date" type="row" interval="week"/>
|
||||
<field name="amount" type="measure"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_latam_check_view_form" model="ir.ui.view">
|
||||
<field name="name">l10n_latam_check.view.form</field>
|
||||
<field name="model">l10n_latam.check</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false" edit="false" delete="false">
|
||||
<field name="outstanding_line_id" invisible="True"/>
|
||||
<header>
|
||||
<button name="action_void" string="Void Check" invisible="issue_state != 'handed'" type="object" class="oe_highlight" confirm="Marking a check as void will cancel the check and generate a new entry that will re-open the debt." data-hotkey="v"/>
|
||||
<field name="issue_state" statusbar_visible="issue_state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button icon="fa-bars" type="object" name="button_open_check_operations" invisible="payment_method_code != 'new_third_party_checks'">
|
||||
<span>Operations</span>
|
||||
</button>
|
||||
<button icon="fa-bars" type="object" name="button_open_payment" invisible="payment_method_code != 'own_checks'">
|
||||
<span>Payment</span>
|
||||
</button>
|
||||
<button icon="fa-bars" type="object" invisible="not outstanding_line_id" name="action_show_journal_entry" groups="account.group_account_user,account.group_account_readonly">
|
||||
<span>Journal Entry</span>
|
||||
</button>
|
||||
<button icon="fa-bars" type="object" invisible="not issue_state or issue_state == 'handed'" name="action_show_reconciled_move" groups="account.group_account_user,account.group_account_readonly">
|
||||
<span>Reconciled move</span>
|
||||
</button>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="payment_date"/>
|
||||
<field name="original_journal_id"/>
|
||||
<field name="current_journal_id" invisible="issue_state"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="amount"/>
|
||||
<field name="bank_id" invisible="issue_state"/>
|
||||
<field name="issuer_vat" invisible="issue_state"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Own Check Views and menus -->
|
||||
|
||||
<record model="ir.ui.view" id="view_account_own_check_tree">
|
||||
<field name="name">account.check.list</field>
|
||||
<field name="model">l10n_latam.check</field>
|
||||
<field name="priority">100</field>
|
||||
<field name="arch" type="xml">
|
||||
<list edit="false" create="false" delete="false" duplicate="false" sample="1" decoration-info="issue_state == 'handed'" decoration-muted="issue_state in ('voided','debited')">
|
||||
<header>
|
||||
</header>
|
||||
<field name="payment_date" optional="show"/>
|
||||
<field name="name"/>
|
||||
<field name="original_journal_id"/>
|
||||
<field name="company_id" optional="hide" groups="base.group_multi_company"/>
|
||||
<field name="payment_method_line_id" column_invisible="True"/>
|
||||
<field name="partner_id" string="Customer"/>
|
||||
<field name="amount" optional="show"/>
|
||||
<field name="currency_id" string="Payment Currency" optional="hide"/>
|
||||
<field name="issue_state" widget="badge" decoration-info="issue_state == 'handed'" decoration-muted="issue_state in ('voided','debited')"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_own_check">
|
||||
<field name="name">Own Checks</field>
|
||||
<field name="res_model">l10n_latam.check</field>
|
||||
<field name="view_mode">list,form,calendar,graph,pivot</field>
|
||||
<field name="view_id" ref="view_account_own_check_tree"/>
|
||||
<field name="search_view_id" ref="view_account_payment_search"/>
|
||||
<field name="domain">[('outstanding_line_id', '!=', False)]</field>
|
||||
<field name="context">{'search_default_checks_on_hand': True}</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
action="action_own_check"
|
||||
id="menu_own_check"
|
||||
sequence="50"
|
||||
parent="account.menu_finance_payables"/>
|
||||
|
||||
<!-- Third party check Views and menus -->
|
||||
<record model="ir.ui.view" id="view_account_third_party_check_tree">
|
||||
<field name="name">account.check.list</field>
|
||||
<field name="model">l10n_latam.check</field>
|
||||
<field name="priority">110</field>
|
||||
<field name="mode">primary</field>
|
||||
<field name="inherit_id" ref="view_account_own_check_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="issue_state" position="attributes">
|
||||
<attribute name="column_invisible">1</attribute>
|
||||
</field>
|
||||
<field name="original_journal_id" position="replace">
|
||||
<field name="current_journal_id" string="Current Journal"/>
|
||||
</field>
|
||||
|
||||
<list position="inside">
|
||||
<header>
|
||||
<button name="%(action_view_l10n_latam_payment_mass_transfer)d" type="action" string="Check Transfer"/>
|
||||
</header>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_third_party_check">
|
||||
<field name="name">Third Party Checks</field>
|
||||
<field name="res_model">l10n_latam.check</field>
|
||||
<field name="view_mode">list,form,calendar,graph,pivot</field>
|
||||
<field name="view_id" ref="view_account_third_party_check_tree"/>
|
||||
<field name="search_view_id" ref="l10n_latam_check.view_account_payment_third_party_checks_search"/>
|
||||
<field name="domain">[('payment_method_code', '=', 'new_third_party_checks'), ('payment_id.state', '!=', 'draft')]</field>
|
||||
<field name="context">{'search_default_checks_on_hand': 1}</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
action="action_third_party_check"
|
||||
id="menu_third_party_check"
|
||||
sequence="40"
|
||||
parent="account.menu_finance_receivables"/>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
<odoo>
|
||||
<template inherit_id="account.report_payment_receipt_document" id="report_payment_receipt_document">
|
||||
<xpath expr="//table[@name='invoices']" position="before">
|
||||
<t t-set="checks" t-value="o._get_latam_checks()"/>
|
||||
<t t-if="checks">
|
||||
<table id="l10n_latam_check" class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><span>Check Number</span></th>
|
||||
<th t-if="o.payment_method_code != 'own_checks'"><span>Bank</span></th>
|
||||
<th t-if="o.payment_method_code != 'own_checks'"><span>Issuer VAT</span></th>
|
||||
<th><span>Payment date</span></th>
|
||||
<th class="text-end"><span>Amount</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<t t-foreach="checks" t-as="check">
|
||||
<tr>
|
||||
<td>
|
||||
<span t-field='check.name'/>
|
||||
</td>
|
||||
<td t-if="o.payment_method_code != 'own_checks'">
|
||||
<span t-field='check.bank_id.display_name'/>
|
||||
</td>
|
||||
<td t-if="o.payment_method_code != 'own_checks'">
|
||||
<span t-field='check.issuer_vat'/>
|
||||
</td>
|
||||
<td>
|
||||
<span t-field='check.payment_date'/>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-out="check.amount" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/>
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
</tbody>
|
||||
</table>
|
||||
</t>
|
||||
</xpath>
|
||||
</template>
|
||||
</odoo>
|
||||
|
|
@ -2,3 +2,4 @@
|
|||
|
||||
from . import account_payment_register
|
||||
from . import l10n_latam_payment_mass_transfer
|
||||
from . import l10n_latam_payment_register_check
|
||||
|
|
|
|||
|
|
@ -1,76 +1,63 @@
|
|||
from odoo import models, fields, api
|
||||
from odoo import models, fields, api, Command, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class AccountPaymentRegister(models.TransientModel):
|
||||
_inherit = 'account.payment.register'
|
||||
|
||||
l10n_latam_check_id = fields.Many2one(
|
||||
comodel_name='account.payment',
|
||||
string='Check',
|
||||
)
|
||||
l10n_latam_check_bank_id = fields.Many2one(
|
||||
comodel_name='res.bank',
|
||||
string='Check Bank',
|
||||
compute='_compute_l10n_latam_check_bank_id', store=True, readonly=False,
|
||||
)
|
||||
l10n_latam_check_issuer_vat = fields.Char(
|
||||
string='Check Issuer VAT',
|
||||
compute='_compute_l10n_latam_check_issuer_vat', store=True, readonly=False,
|
||||
)
|
||||
l10n_latam_check_number = fields.Char(
|
||||
string="Check Number",
|
||||
)
|
||||
l10n_latam_manual_checks = fields.Boolean(
|
||||
related='journal_id.l10n_latam_manual_checks',
|
||||
)
|
||||
l10n_latam_check_payment_date = fields.Date(
|
||||
string='Check Cash-In Date', help="Date from when you can cash in the check, turn the check into cash",
|
||||
l10n_latam_new_check_ids = fields.One2many('l10n_latam.payment.register.check', 'payment_register_id', string="New Checks")
|
||||
l10n_latam_move_check_ids = fields.Many2many(
|
||||
comodel_name='l10n_latam.check',
|
||||
string='Checks',
|
||||
)
|
||||
|
||||
@api.depends('payment_method_line_id.code', 'partner_id')
|
||||
def _compute_l10n_latam_check_bank_id(self):
|
||||
new_third_party_checks = self.filtered(lambda x: x.payment_method_line_id.code == 'new_third_party_checks')
|
||||
for rec in new_third_party_checks:
|
||||
rec.l10n_latam_check_bank_id = rec.partner_id.bank_ids[:1].bank_id
|
||||
(self - new_third_party_checks).l10n_latam_check_bank_id = False
|
||||
|
||||
@api.depends('payment_method_line_id.code', 'partner_id')
|
||||
def _compute_l10n_latam_check_issuer_vat(self):
|
||||
new_third_party_checks = self.filtered(lambda x: x.payment_method_line_id.code == 'new_third_party_checks')
|
||||
for rec in new_third_party_checks:
|
||||
rec.l10n_latam_check_issuer_vat = rec.partner_id.vat
|
||||
(self - new_third_party_checks).l10n_latam_check_issuer_vat = False
|
||||
|
||||
@api.depends('l10n_latam_check_id')
|
||||
@api.depends('l10n_latam_move_check_ids.amount', 'l10n_latam_new_check_ids.amount', 'payment_method_code')
|
||||
def _compute_amount(self):
|
||||
super()._compute_amount()
|
||||
for wizard in self.filtered('l10n_latam_check_id'):
|
||||
wizard.amount = wizard.l10n_latam_check_id.amount
|
||||
for wizard in self.filtered(lambda x: x._is_latam_check_payment(check_subtype='new_check')):
|
||||
wizard.amount = sum(wizard.l10n_latam_new_check_ids.mapped('amount'))
|
||||
for wizard in self.filtered(lambda x: x._is_latam_check_payment(check_subtype='move_check')):
|
||||
wizard.amount = sum(wizard.l10n_latam_move_check_ids.mapped('amount'))
|
||||
|
||||
@api.depends('l10n_latam_check_id')
|
||||
@api.depends('l10n_latam_move_check_ids.currency_id')
|
||||
def _compute_currency_id(self):
|
||||
super()._compute_currency_id()
|
||||
for wizard in self.filtered('l10n_latam_check_id'):
|
||||
wizard.currency_id = wizard.l10n_latam_check_id.currency_id
|
||||
for wizard in self.filtered(lambda x: x._is_latam_check_payment(check_subtype='move_check')):
|
||||
if wizard.l10n_latam_move_check_ids:
|
||||
wizard.currency_id = wizard.l10n_latam_move_check_ids[0].currency_id
|
||||
|
||||
@api.onchange('l10n_latam_check_number')
|
||||
def _onchange_l10n_latam_check_number(self):
|
||||
for rec in self.filtered(lambda x: x.journal_id.company_id.country_id.code == "AR" and x.l10n_latam_check_number
|
||||
and x.l10n_latam_check_number.isdecimal()):
|
||||
rec.l10n_latam_check_number = '%08d' % int(rec.l10n_latam_check_number)
|
||||
|
||||
@api.onchange('payment_method_line_id', 'journal_id')
|
||||
def _onchange_to_reset_check_ids(self):
|
||||
# If any of these fields change, the domain of the selectable checks could change
|
||||
self.l10n_latam_check_id = False
|
||||
def _is_latam_check_payment(self, check_subtype=False):
|
||||
if check_subtype == 'move_check':
|
||||
codes = ['in_third_party_checks', 'out_third_party_checks', 'return_third_party_checks']
|
||||
elif check_subtype == 'new_check':
|
||||
codes = ['new_third_party_checks', 'own_checks']
|
||||
else:
|
||||
codes = ['in_third_party_checks', 'out_third_party_checks', 'return_third_party_checks', 'new_third_party_checks', 'own_checks']
|
||||
return self.payment_method_code in codes
|
||||
|
||||
def _create_payment_vals_from_wizard(self, batch_result):
|
||||
vals = super()._create_payment_vals_from_wizard(batch_result)
|
||||
vals.update({
|
||||
'l10n_latam_check_id': self.l10n_latam_check_id.id,
|
||||
'l10n_latam_check_bank_id': self.l10n_latam_check_bank_id.id,
|
||||
'l10n_latam_check_issuer_vat': self.l10n_latam_check_issuer_vat,
|
||||
'check_number': self.l10n_latam_check_number,
|
||||
'l10n_latam_check_payment_date': self.l10n_latam_check_payment_date,
|
||||
})
|
||||
if self.l10n_latam_new_check_ids:
|
||||
vals.update({'l10n_latam_new_check_ids': [Command.create({
|
||||
'name': x.name,
|
||||
'bank_id': x.bank_id.id,
|
||||
'issuer_vat': x.issuer_vat,
|
||||
'payment_date': x.payment_date,
|
||||
'amount': x.amount}) for x in self.l10n_latam_new_check_ids
|
||||
]})
|
||||
if self.l10n_latam_move_check_ids:
|
||||
vals.update({
|
||||
'l10n_latam_move_check_ids': [Command.link(x.id) for x in self.l10n_latam_move_check_ids]
|
||||
})
|
||||
return vals
|
||||
|
||||
def action_create_payments(self):
|
||||
if self._is_latam_check_payment(check_subtype="move_check"):
|
||||
latam_check_currencies = self.l10n_latam_move_check_ids.mapped("currency_id")
|
||||
if latam_check_currencies and (len(latam_check_currencies) > 1 or latam_check_currencies != self.currency_id):
|
||||
raise ValidationError(_(
|
||||
"You can't mix checks of different currencies in one payment, "
|
||||
"and you can't change the payment's currency if checks are already created in that currency.\n"
|
||||
"Please create separate payments for each currency."
|
||||
))
|
||||
return super().action_create_payments()
|
||||
|
|
|
|||
|
|
@ -6,41 +6,47 @@
|
|||
<field name="model">account.payment.register</field>
|
||||
<field name="inherit_id" ref="account.view_account_payment_register_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="payment_method_line_id" position="after">
|
||||
<field name="l10n_latam_manual_checks" invisible="1"/>
|
||||
<field name="payment_method_code" invisible="1"/>
|
||||
<field name="l10n_latam_check_number"
|
||||
attrs="{
|
||||
'invisible': [('payment_method_code', '!=', 'new_third_party_checks'), '|', ('l10n_latam_manual_checks', '=', False), ('payment_method_code', '!=', 'check_printing')],
|
||||
'required': [
|
||||
'|', '&', ('payment_method_code', '=', 'check_printing'), ('l10n_latam_manual_checks', '!=', False), ('payment_method_code', '=', 'new_third_party_checks'),
|
||||
]}"/>
|
||||
|
||||
<div class="o_row"
|
||||
attrs="{'invisible': ['|', ('can_edit_wizard', '=', False), '&', ('can_group_payments', '=', True), ('group_payment', '=', False)]}" colspan="2">
|
||||
<group>
|
||||
<field name="l10n_latam_check_id"
|
||||
attrs="{
|
||||
'invisible': [('payment_method_code', 'not in', ['in_third_party_checks', 'out_third_party_checks'])],
|
||||
'required': [('payment_method_code', 'in', ['in_third_party_checks', 'out_third_party_checks'])]}"
|
||||
domain="
|
||||
[('payment_method_code', '=', 'new_third_party_checks'), ('l10n_latam_check_current_journal_id', '=', journal_id), ('state', '=', 'posted')]
|
||||
if payment_type == 'outbound' else
|
||||
[('payment_method_code', '=', 'new_third_party_checks'), ('l10n_latam_check_current_journal_id', '=', False), ('state', '=', 'posted')]"
|
||||
options="{'no_create': True}"/>
|
||||
<field name="l10n_latam_check_payment_date"
|
||||
attrs="{'invisible': [('payment_method_code', '!=', 'new_third_party_checks'), '|', ('l10n_latam_manual_checks', '=', False), ('payment_method_code', '!=', 'check_printing')]}"/>
|
||||
<field name="l10n_latam_check_bank_id" string="Check Bank"
|
||||
attrs="{'invisible': [('payment_method_code', '!=', 'new_third_party_checks')]}"/>
|
||||
<field name="l10n_latam_check_issuer_vat" string="Check Issuer Vat"
|
||||
attrs="{'invisible': [('payment_method_code', '!=', 'new_third_party_checks')]}"/>
|
||||
</group>
|
||||
<group>
|
||||
<notebook invisible="not can_edit_wizard or (can_group_payments and not group_payment)">
|
||||
<page name="latam_checks_page" string="Checks" invisible="payment_method_code not in ['in_third_party_checks', 'out_third_party_checks', 'return_third_party_checks', 'new_third_party_checks', 'own_checks']">
|
||||
<group name="latam_checks" colspan="2">
|
||||
<field name="l10n_latam_new_check_ids" invisible="payment_method_code not in ['new_third_party_checks', 'own_checks']" nolabel="1" colspan="2" >
|
||||
<list editable="bottom">
|
||||
<field name="company_id" column_invisible="True"/>
|
||||
<field name="currency_id" column_invisible="True"/>
|
||||
<field name="name" />
|
||||
<field name="bank_id" column_invisible="parent.payment_method_code == 'own_checks'"/>
|
||||
<field name="issuer_vat" column_invisible="parent.payment_method_code == 'own_checks'"/>
|
||||
<field name="payment_date"/>
|
||||
<field name="amount" />
|
||||
</list>
|
||||
</field>
|
||||
<field name="l10n_latam_move_check_ids" invisible="payment_method_code not in ['in_third_party_checks', 'out_third_party_checks', 'return_third_party_checks']"
|
||||
domain="
|
||||
[('payment_method_code', '=', 'new_third_party_checks'), ('current_journal_id', '=', journal_id), ('company_id', '=', company_id)]
|
||||
if payment_type == 'outbound' else
|
||||
[('payment_method_code', '=', 'new_third_party_checks'), ('current_journal_id', '=', False), ('company_id', '=', company_id)]" options="{'no_create': True}"
|
||||
nolabel="1" colspan="2">
|
||||
<list name="existing_checks">
|
||||
<field name="company_id" column_invisible="True"/>
|
||||
<field name="currency_id" column_invisible="True"/>
|
||||
<field name="name" />
|
||||
<field name="bank_id" optional="hide"/>
|
||||
<field name="issuer_vat" optional="hide"/>
|
||||
<field name="payment_date" optional="show"/>
|
||||
<field name="amount"/>
|
||||
</list>
|
||||
</field>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</group>
|
||||
<div role="alert" position="after">
|
||||
<div role="alert" class="alert alert-info"
|
||||
invisible="payment_method_code not in ['new_third_party_checks', 'in_third_party_checks', 'out_third_party_checks', 'return_third_party_checks', 'own_checks'] or can_edit_wizard and (not can_group_payments or can_group_payments and group_payment)">
|
||||
<p>You can't use checks when paying invoices of different partners or same partner without grouping</p>
|
||||
</div>
|
||||
<div colspan="2" class="o_row"
|
||||
attrs="{'invisible': ['|', ('payment_method_code', 'not in', ['new_third_party_checks', 'in_third_party_checks', 'out_third_party_checks']), '&', ('can_edit_wizard', '=', True), '|', ('can_group_payments', '=', False), '&', ('can_group_payments', '=', True), ('group_payment', '=', True)]}">
|
||||
<p class="alert alert-warning" role="alert">You can't use checks when paying invoices of different partners or same partner without grouping</p>
|
||||
</div>
|
||||
</field>
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import models, api, fields, _
|
||||
from odoo import models, api, fields, _, Command
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class L10nLatamPaymentMassTransfer(models.TransientModel):
|
||||
class L10n_LatamPaymentMassTransfer(models.TransientModel):
|
||||
_name = 'l10n_latam.payment.mass.transfer'
|
||||
_description = 'Checks Mass Transfers'
|
||||
_check_company_auto = True
|
||||
|
||||
payment_date = fields.Date(
|
||||
string="Payment Date",
|
||||
|
|
@ -16,13 +17,13 @@ class L10nLatamPaymentMassTransfer(models.TransientModel):
|
|||
destination_journal_id = fields.Many2one(
|
||||
comodel_name='account.journal',
|
||||
string='Destination Journal',
|
||||
domain="[('type', 'in', ('bank', 'cash')), ('company_id', '=', company_id), ('id', '!=', journal_id)]",
|
||||
)
|
||||
communication = fields.Char(
|
||||
string="Memo",
|
||||
check_company=True,
|
||||
domain="[('type', 'in', ('bank', 'cash')), ('id', '!=', journal_id)]",
|
||||
)
|
||||
communication = fields.Char(string="Memo")
|
||||
journal_id = fields.Many2one(
|
||||
'account.journal',
|
||||
check_company=True,
|
||||
compute='_compute_journal_company'
|
||||
)
|
||||
company_id = fields.Many2one(
|
||||
|
|
@ -30,31 +31,34 @@ class L10nLatamPaymentMassTransfer(models.TransientModel):
|
|||
compute="_compute_journal_company"
|
||||
)
|
||||
check_ids = fields.Many2many(
|
||||
'account.payment',
|
||||
'l10n_latam.check', 'latam_tranfer_check_rel'
|
||||
'transfer_id', 'check_id', check_company=True,
|
||||
)
|
||||
|
||||
@api.depends('check_ids')
|
||||
def _compute_journal_company(self):
|
||||
# use ._origin because if not a NewId for the checks is used and the returned
|
||||
# value for l10n_latam_check_current_journal_id is wrong
|
||||
journal = self.check_ids._origin.mapped("l10n_latam_check_current_journal_id")
|
||||
if len(journal) != 1 or not journal.inbound_payment_method_line_ids.filtered(
|
||||
lambda x: x.code == 'in_third_party_checks'):
|
||||
# value for current_journal_id is wrong
|
||||
journal = self.check_ids._origin.mapped("current_journal_id")
|
||||
if len(journal) != 1:
|
||||
raise UserError(_("All selected checks must be on the same journal and on hand"))
|
||||
self.journal_id = journal
|
||||
self.company_id = journal.company_id.id
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields_list):
|
||||
res = super().default_get(fields_list)
|
||||
if 'check_ids' in fields_list and 'check_ids' not in res:
|
||||
if self._context.get('active_model') != 'account.payment':
|
||||
def default_get(self, fields):
|
||||
res = super().default_get(fields)
|
||||
if 'check_ids' in fields and 'check_ids' not in res:
|
||||
if self.env.context.get('active_model') != 'l10n_latam.check':
|
||||
raise UserError(_("The register payment wizard should only be called on account.payment records."))
|
||||
checks = self.env['account.payment'].browse(self._context.get('active_ids', []))
|
||||
checks = self.env['l10n_latam.check'].browse(self.env.context.get('active_ids', []))
|
||||
if checks.filtered(lambda x: x.payment_method_line_id.code != 'new_third_party_checks'):
|
||||
raise 'You have select some payments that are not checks. Please call this action from the Third Party Checks menu'
|
||||
elif not all(check.state == 'posted' for check in checks):
|
||||
raise UserError(_('You have selected payments which are not checks. Please call this action from the Third Party Checks menu'))
|
||||
elif not all(check.payment_id.state not in ('draft', 'canceled') for check in checks):
|
||||
raise UserError(_("All the selected checks must be posted"))
|
||||
currency_ids = checks.mapped('currency_id')
|
||||
if any(x != currency_ids[0] for x in currency_ids):
|
||||
raise UserError(_("All the selected checks must use the same currency"))
|
||||
res['check_ids'] = checks.ids
|
||||
return res
|
||||
|
||||
|
|
@ -62,28 +66,60 @@ class L10nLatamPaymentMassTransfer(models.TransientModel):
|
|||
""" This is nedeed because we would like to create a payment of type internal transfer for each check with the
|
||||
counterpart journal and then, when posting a second payment will be created automatically """
|
||||
self.ensure_one()
|
||||
checks = self.check_ids.filtered(lambda x: x.payment_method_line_id.code == 'new_third_party_checks')
|
||||
payment_vals_list = []
|
||||
checks = self.check_ids.filtered(lambda x: x.payment_method_line_id.code == 'new_third_party_checks' and x.currency_id == self.check_ids[0].currency_id)
|
||||
currency_id = self.check_ids[0].currency_id
|
||||
|
||||
pay_method_line = self.journal_id._get_available_payment_method_lines('outbound').filtered(
|
||||
lambda x: x.code == 'out_third_party_checks')
|
||||
lambda x: x.code in ('out_third_party_checks', 'return_third_party_checks')
|
||||
)[:1]
|
||||
|
||||
for check in checks:
|
||||
payment_vals_list.append({
|
||||
'date': self.payment_date,
|
||||
'l10n_latam_check_id': check.id,
|
||||
'amount': check.amount,
|
||||
'payment_type': 'outbound',
|
||||
'ref': self.communication,
|
||||
'journal_id': self.journal_id.id,
|
||||
'currency_id': check.currency_id.id,
|
||||
'is_internal_transfer': True,
|
||||
'payment_method_line_id': pay_method_line.id,
|
||||
'destination_journal_id': self.destination_journal_id.id,
|
||||
})
|
||||
payments = self.env['account.payment'].create(payment_vals_list)
|
||||
payments.action_post()
|
||||
return payments
|
||||
outbound_payment = self.env['account.payment'].create({
|
||||
'date': self.payment_date,
|
||||
'amount': sum(checks.mapped('amount')),
|
||||
'partner_id': self.env.company.partner_id.id,
|
||||
'payment_type': 'outbound',
|
||||
'memo': self.communication,
|
||||
'journal_id': self.journal_id.id,
|
||||
'currency_id': currency_id.id,
|
||||
'payment_method_line_id': pay_method_line.id if pay_method_line else False,
|
||||
'l10n_latam_move_check_ids': [Command.link(x.id) for x in checks],
|
||||
})
|
||||
outbound_payment.action_post()
|
||||
|
||||
inbound_payment = self.env['account.payment'].create({
|
||||
'date': self.payment_date,
|
||||
'amount': sum(checks.mapped('amount')),
|
||||
'partner_id': self.env.company.partner_id.id,
|
||||
'payment_type': 'inbound',
|
||||
'memo': self.communication,
|
||||
'journal_id': self.destination_journal_id.id,
|
||||
'currency_id': currency_id.id,
|
||||
'l10n_latam_move_check_ids': [Command.link(x.id) for x in checks],
|
||||
})
|
||||
|
||||
dest_payment_method = self.destination_journal_id.inbound_payment_method_line_ids.filtered(
|
||||
lambda x: x.code == 'in_third_party_checks'
|
||||
)
|
||||
if dest_payment_method:
|
||||
inbound_payment.payment_method_line_id = dest_payment_method
|
||||
inbound_payment.action_post()
|
||||
else:
|
||||
# In case the journal is not part of the third party check, when posting the move we remove the checks
|
||||
# when the payment method line is not for checks, but in this case, we don't want to remove it so that
|
||||
# the operation_ids is filled with the two payments
|
||||
inbound_payment.with_context(l10n_ar_skip_remove_check=True).action_post()
|
||||
|
||||
body_inbound = _("This payment has been created from: ") + outbound_payment._get_html_link()
|
||||
inbound_payment.message_post(body=body_inbound)
|
||||
body_outbound = _("A second payment has been created: ") + inbound_payment._get_html_link()
|
||||
outbound_payment.message_post(body=body_outbound)
|
||||
|
||||
(outbound_payment.move_id.line_ids + inbound_payment.move_id.line_ids).filtered(
|
||||
lambda l:
|
||||
l.account_id == outbound_payment.destination_account_id and not l.reconciled
|
||||
).reconcile()
|
||||
|
||||
return outbound_payment
|
||||
|
||||
def action_create_payments(self):
|
||||
payments = self._create_payments()
|
||||
|
|
@ -101,7 +137,7 @@ class L10nLatamPaymentMassTransfer(models.TransientModel):
|
|||
})
|
||||
else:
|
||||
action.update({
|
||||
'view_mode': 'tree,form',
|
||||
'view_mode': 'list,form',
|
||||
'domain': [('id', 'in', payments.ids)],
|
||||
})
|
||||
return action
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
<button string="Cancel"
|
||||
class="btn btn-secondary"
|
||||
special="cancel"
|
||||
data-hotkey="z"/>
|
||||
data-hotkey="x"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
# pylint: disable=protected-access
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
import logging
|
||||
|
||||
from odoo import models, fields, api
|
||||
import stdnum
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class L10n_LatamPaymentRegisterCheck(models.TransientModel):
|
||||
_name = 'l10n_latam.payment.register.check'
|
||||
_description = 'Payment register check'
|
||||
_check_company_auto = True
|
||||
|
||||
payment_register_id = fields.Many2one('account.payment.register', required=True, ondelete='cascade')
|
||||
company_id = fields.Many2one(related='payment_register_id.company_id')
|
||||
currency_id = fields.Many2one(related='payment_register_id.currency_id')
|
||||
name = fields.Char(string='Number')
|
||||
bank_id = fields.Many2one(
|
||||
comodel_name='res.bank',
|
||||
compute='_compute_bank_id', store=True, readonly=False,
|
||||
)
|
||||
issuer_vat = fields.Char(
|
||||
compute='_compute_issuer_vat', store=True, readonly=False,
|
||||
)
|
||||
payment_date = fields.Date(readonly=False, required=True)
|
||||
amount = fields.Monetary()
|
||||
|
||||
@api.onchange('name')
|
||||
def _onchange_name(self):
|
||||
if self.name:
|
||||
self.name = self.name.zfill(8)
|
||||
|
||||
@api.depends('payment_register_id.payment_method_line_id.code', 'payment_register_id.partner_id')
|
||||
def _compute_bank_id(self):
|
||||
new_third_party_checks = self.filtered(lambda x: x.payment_register_id.payment_method_line_id.code == 'new_third_party_checks')
|
||||
for rec in new_third_party_checks:
|
||||
rec.bank_id = rec.payment_register_id.partner_id.bank_ids[:1].bank_id
|
||||
(self - new_third_party_checks).bank_id = False
|
||||
|
||||
@api.depends('payment_register_id.payment_method_line_id.code', 'payment_register_id.partner_id')
|
||||
def _compute_issuer_vat(self):
|
||||
new_third_party_checks = self.filtered(lambda x: x.payment_register_id.payment_method_line_id.code == 'new_third_party_checks')
|
||||
for rec in new_third_party_checks:
|
||||
rec.issuer_vat = rec.payment_register_id.partner_id.vat
|
||||
(self - new_third_party_checks).issuer_vat = False
|
||||
|
||||
@api.onchange('issuer_vat')
|
||||
def _clean_issuer_vat(self):
|
||||
for rec in self.filtered(lambda x: x.issuer_vat and x.company_id.country_id.code):
|
||||
stdnum_vat = stdnum.util.get_cc_module(rec.company_id.country_id.code, 'vat')
|
||||
if hasattr(stdnum_vat, 'compact'):
|
||||
rec.issuer_vat = stdnum_vat.compact(rec.issuer_vat)
|
||||
|
|
@ -1,13 +1,15 @@
|
|||
[project]
|
||||
name = "odoo-bringout-oca-ocb-l10n_latam_check"
|
||||
version = "16.0.0"
|
||||
description = "Third Party and Deferred/Electronic Checks Management - Checks Management"
|
||||
description = "Third Party and Deferred/Electronic Checks Management -
|
||||
Checks Management
|
||||
"
|
||||
authors = [
|
||||
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||
]
|
||||
dependencies = [
|
||||
"odoo-bringout-oca-ocb-account_check_printing>=16.0.0",
|
||||
"odoo-bringout-oca-ocb-base_vat>=16.0.0",
|
||||
"odoo-bringout-oca-ocb-account>=19.0.0",
|
||||
"odoo-bringout-oca-ocb-base_vat>=19.0.0",
|
||||
"requests>=2.25.1"
|
||||
]
|
||||
readme = "README.md"
|
||||
|
|
@ -17,7 +19,7 @@ classifiers = [
|
|||
"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.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Office/Business",
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue