squashed commit

This commit is contained in:
hoangvv
2026-09-18 13:55:25 +07:00
commit 039c98d4d0
45882 changed files with 24235585 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
from . import models
from . import wizards
+59
View File
@@ -0,0 +1,59 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Third Party and Deferred/Electronic Checks Management',
'version': "1.0.0",
'category': 'Accounting/Localizations',
'summary': 'Checks Management',
'description': """
Own Checks Management
---------------------
Extends 'Check Printing Base' module to manage own checks with more features:
* allow using own checks that are not printed but filled manually by the user
* allow to use deferred or electronic checks
* printing is disabled
* check number is set manually by the user
* add an optional "Check Cash-In Date" for post-dated checks (deferred payments)
* add a menu to track own checks
Third Party Checks Management
-----------------------------
Add new "Third party check Management" feature.
There are 2 main Payment Methods additions:
* New Third Party Checks:
* Payments of this payment method represent the check you get from a customer when getting paid (from an invoice or a manual payment)
* Existing Third Party check.
* Payments of this payment method are to track moves of the check, for eg:
* Use a check to pay a vendor
* Deposit the check on the bank
* Get the check back from the bank (rejection)
* Get the check back from the vendor (a rejection or return)
* Transfer the check from one third party check journal to the other (one shop to another)
* Those operations can be done with multiple checks at once
""",
'author': 'ADHOC SA',
'license': 'LGPL-3',
'depends': [
'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/l10n_latam_check_view.xml',
'wizards/account_payment_register_views.xml',
],
'installable': True,
}
@@ -0,0 +1,35 @@
<?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="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="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="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="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="code">return_third_party_checks</field>
<field name="payment_type">outbound</field>
</record>
</odoo>
+811
View File
@@ -0,0 +1,811 @@
# 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 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-03 15:45+0000\n"
"PO-Revision-Date: 2025-11-08 09:22+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Spanish (Latin America) <https://translate.odoo.com/projects/"
"odoo-18-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: \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.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.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 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
#: 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_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: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_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_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 ""
#. 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 ""
#. 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 tardías"
#. 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_sepa 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_sepa is necessary.\n"
msgstr ""
"Manual: Pague o cobre con cualquier método fuera de Odoo.\n"
"Payment Providers: Cada proveedor de pagos tiene su propio método de pago. "
"Solicite una transacción desde/hacia una tarjeta gracias a un token de pago "
"guardado por el socio al comprar o suscribirse en línea..\n"
"Check: Pague las cuentas con cheques e imprímalo desde Odoo.\n"
"Batch Deposit: Cobre varios cheques de clientes a la vez generando y "
"enviando un ingreso por lotes a su banco. Módulo account_batch_payment es "
"necesario.\n"
"SEPA Credit Transfer: Pague en la zona SEPA enviando un fichero de "
"transferencia SEPA a su banco. Módulo account_sepa es necesario.\n"
"SEPA Direct Debit: Cobre en la zona SEPA gracias a un mandato que su socio "
"le habrá otorgado. Módulo account_sepa es necesario.\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:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_check__my_activity_date_deadline
msgid "My Activity Deadline"
msgstr "Mi fecha límite de 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:account.payment.method,name:l10n_latam_check.account_payment_method_new_third_party_checks
msgid "New Third Party Checks"
msgstr "Nuevo cheque de Terceros Existente"
#. 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 "Numero 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 ""
#. 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:account.payment.method,name:l10n_latam_check.account_payment_method_own_checks
#: 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 "Registrar pago"
#. 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:account.payment.method,name:l10n_latam_check.account_payment_method_return_third_party_checks
msgid "Return Third Party Checks"
msgstr "Cheques de terceros devueltos"
#. 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 which has next action date is before today"
msgstr ""
"Mostrar todos los registros que tienen la próxima fecha de acción antes de "
"hoy"
#. 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 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
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
msgid "open"
msgstr "abrir"
@@ -0,0 +1,757 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_latam_check
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-11 15:22+0000\n"
"PO-Revision-Date: 2025-02-11 15:22+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
#: 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.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 ""
#. 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
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 ""
#. 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
#: 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_l10n_latam_payment_mass_transfer__check_ids
msgid "Check"
msgstr ""
#. 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 ""
#. 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 ""
#. 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 ""
#. 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 ""
#. 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,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
#: model:ir.model.fields,field_description:l10n_latam_check.field_l10n_latam_payment_mass_transfer__destination_journal_id
msgid "Destination Journal"
msgstr ""
#. module: l10n_latam_check
#: 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"
msgstr ""
#. module: l10n_latam_check
#: 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_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
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 ""
#. module: l10n_latam_check
#: 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
#: 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 ""
#. 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
#: 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: 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_sepa 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_sepa 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 ""
#. 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 ""
#. 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: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:account.payment.method,name:l10n_latam_check.account_payment_method_new_third_party_checks
msgid "New Third Party 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
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:account.payment.method,name:l10n_latam_check.account_payment_method_own_checks
#: 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 ""
#. 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
msgid "Payments"
msgstr ""
#. module: l10n_latam_check
#: 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
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 ""
#. module: l10n_latam_check
#: model:account.payment.method,name:l10n_latam_check.account_payment_method_return_third_party_checks
msgid "Return Third Party Checks"
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
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 which has next action date is before today"
msgstr ""
#. 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 ""
#. 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
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 ""
#. 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
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
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
msgid "open"
msgstr ""
+786
View File
@@ -0,0 +1,786 @@
# 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 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-03 15:45+0000\n"
"PO-Revision-Date: 2025-11-08 09:22+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Portuguese (Brazil) <https://translate.odoo.com/projects/"
"odoo-18-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.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.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 de 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 "Contagem 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
#: 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_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 "Nome exibido"
#. 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 ""
#. 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_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 que indica 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, há mensagens com erros 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 de 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_sepa 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_sepa is necessary.\n"
msgstr ""
"Manual: enviar ou receber pagamentos por qualquer método fora do Odoo.\n"
"Provedores de pagamento: cada provedor de pagamento tem seu próprio método "
"de pagamento. Solicite uma transação em/para um cartão graças a um token de "
"pagamento salvo pelo usuário ao comprar ou assinar online.\n"
"Cheque: pague contas com cheques e imprima-as do Odoo.\n"
"Depósito em lote: debite vários cheques de clientes de uma só vez, gerando e "
"enviando um depósito em lote ao seu banco. É necessário o módulo "
"account_batch_payment.\n"
"Transferência de crédito SEPA: pagamentos na zona SEPA com envio de um "
"arquivo de transferência de crédito SEPA para o seu banco. O módulo "
"account_sepa é necessário.\n"
"Débito direto SEPA: receber pagamentos na zona SEPA por um mandato concedido "
"pelo seu usuário. O módulo account_sepa é necessário.\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 ""
#. 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: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:account.payment.method,name:l10n_latam_check.account_payment_method_new_third_party_checks
msgid "New Third Party 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 "Aberto"
#. 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:account.payment.method,name:l10n_latam_check.account_payment_method_own_checks
#: 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:account.payment.method,name:l10n_latam_check.account_payment_method_return_third_party_checks
msgid "Return Third Party Checks"
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 "Erro na entrega do 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 which has next action date is before today"
msgstr ""
"Mostrar todos os registros em que a próxima data de ação seja antes de hoje"
#. 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 da 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
#: model_terms:ir.ui.view,arch_db:l10n_latam_check.view_account_payment_form_inherited
msgid "open"
msgstr "open"
@@ -0,0 +1,7 @@
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
@@ -0,0 +1,76 @@
from odoo import models, Command, api, _
from odoo.addons.account.models.chart_template import template
class AccountChartTemplate(models.AbstractModel):
_inherit = 'account.chart.template'
@api.model
def _get_third_party_checks_country_codes(self):
""" Return the list of country codes for the countries where third party checks journals should be created
when installing the COA"""
return ["AR"]
@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',
}),
],
},
}
@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',
},
}
@@ -0,0 +1,50 @@
from odoo import models, api
class AccountJournal(models.Model):
_inherit = "account.journal"
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.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,12 @@
# 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,9 @@
# 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')
@@ -0,0 +1,278 @@
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'
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,
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')
amount = fields.Monetary(compute="_compute_amount", readonly=False, store=True)
@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('l10n_latam_move_check_ids.amount', 'l10n_latam_new_check_ids.amount', 'payment_method_code')
def _compute_amount(self):
for rec in self:
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 _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 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:
raise ValidationError('* %s' % '\n* '.join(msgs))
super().action_post()
self._l10n_latam_check_split_move()
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']
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')))
)
for check in rec.l10n_latam_move_check_ids:
date = rec.date or fields.Datetime.now()
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
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])))
)
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
We use l10n_latam_check_number as de dependency because on the interface this is the field the user is using.
Another approach could be to add an onchange on _inverse_l10n_latam_check_number method
"""
self.l10n_latam_check_warning_msg = False
for rec in self.filtered(lambda x: x._is_latam_check_payment()):
msgs = rec._get_blocking_l10n_latam_warning_msg()
# 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')))
)
rec.l10n_latam_check_warning_msg = msgs and '* %s' % '\n* '.join(msgs) or False
@api.model
def _get_trigger_fields_to_synchronize(self):
res = super()._get_trigger_fields_to_synchronize()
return res + ('l10n_latam_new_check_ids',)
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, 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
@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 _is_latam_check_transfer(self):
self.ensure_one()
return not self.partner_id and self.destination_account_id == self.company_id.transfer_account_id
@@ -0,0 +1,15 @@
from odoo import models, api
class AccountPaymentMethod(models.Model):
_inherit = 'account.payment.method'
@api.model
def _get_payment_method_information(self):
res = super()._get_payment_method_information()
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,221 @@
# 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 l10nLatamAccountPaymentCheck(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,
)
def _auto_init(self):
super()._auto_init()
if not index_exists(self.env.cr, 'l10n_latam_check_unique'):
# issue_state is used to know that is an own check and also that is posted
self.env.cr.execute("""
CREATE UNIQUE INDEX l10n_latam_check_unique
ON l10n_latam_check(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):
if not self.env['res.partner']._run_vat_test(rec.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.issuer_vat, 'Check Issuer VAT'
)
raise ValidationError(error_message)
@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("Can't delete a check if payment is In Process!")
@@ -0,0 +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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 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
3 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
4 access_l10n_latam_check_readonly l10n_latam.check model_l10n_latam_check account.group_account_readonly 1 0 0 0
5 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>
@@ -0,0 +1,3 @@
from . import common
from . import test_own_checks
from . import test_third_party_checks
+37
View File
@@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
# 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):
super().setUpClass()
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
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, journals in third_party_checks_journals.grouped('company_id').items():
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
@@ -0,0 +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 import Form, tagged
from odoo import Command, fields
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestOwnChecks(L10nLatamCheckTest):
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.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 = '00000001'
check1.payment_date = fields.Date.add(fields.Date.today(), months=1)
check1.issuer_vat = '30714295698'
check1.amount = 25
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)
@@ -0,0 +1,209 @@
# -*- 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_numbers=['00000001', '00000002']):
if not journal:
journal = self.third_party_check_journal
vals = {
'partner_id': self.partner_a.id,
'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
def test_01_get_paid_with_multiple_checks(self):
""" 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. """
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):
payment = self.create_third_party_check()
check = payment.l10n_latam_new_check_ids[0]
# Check Delivery
vals = {
'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 in ('out_third_party_checks', 'return_third_party_checks')).id,
}
delivery = self.env['account.payment'].create(vals)
delivery.action_post()
self.assertFalse(check.current_journal_id, 'Current journal was not computed properly on delivery')
# check dont delivery 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()
# Check Return / Rejection
vals = {
'l10n_latam_move_check_ids': [Command.set([check.id])],
'amount': 1,
'partner_id': self.partner_a.id,
'payment_type': 'inbound',
'journal_id': self.rejected_check_journal.id,
'payment_method_line_id': self.rejected_check_journal._get_available_payment_method_lines('inbound').filtered(lambda x: x.code == 'in_third_party_checks').id,
}
supplier_return = self.env['account.payment'].create(vals)
supplier_return.action_post()
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, "Some checks are already in hand and can't be received again"), self.cr.savepoint():
self.env['account.payment'].create(vals).action_post()
# Check Claim/Return to customer
vals = {
'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 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.current_journal_id, 'Current journal was not computed properly on customer return')
# check dont claim twice
with self.assertRaisesRegex(ValidationError, "Some checks are not anymore in journal,"), self.cr.savepoint():
self.env['account.payment'].create(vals).action_post()
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_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']
# 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,
})._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')
# 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,
'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 """
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='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
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='l10n_latam.check', active_ids=[check.id, check2.id]).create({'destination_journal_id': self.third_party_check_journal.id})._create_payments()
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]
# 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"
)
# 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"
)
@@ -0,0 +1,53 @@
<odoo>
<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.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" invisible="not l10n_latam_check_warning_msg">
<field name="l10n_latam_check_warning_msg" nolabel="1"/>
</div>
</sheet>
</field>
</record>
</odoo>
@@ -0,0 +1,224 @@
<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="Late Activities" name="activities_overdue" domain="[('my_activity_date_deadline', '&lt;', context_today().strftime('%Y-%m-%d'))]" help="Show all records which has next action date is before today"/>
<filter invisible="1" string="Today Activities" name="activities_today" domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
<filter invisible="1" string="Future Activities" name="activities_upcoming_all" domain="[('my_activity_date_deadline', '&gt;', context_today().strftime('%Y-%m-%d'))]"/>
</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,5 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import account_payment_register
from . import l10n_latam_payment_mass_transfer
from . import l10n_latam_payment_register_check
@@ -0,0 +1,63 @@
from odoo import models, fields, api, Command, _
from odoo.exceptions import ValidationError
class AccountPaymentRegister(models.TransientModel):
_inherit = 'account.payment.register'
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('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(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_move_check_ids.currency_id')
def _compute_currency_id(self):
super()._compute_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
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)
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()
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_account_payment_register_form" model="ir.ui.view">
<field name="name">account.payment.register.form</field>
<field name="model">account.payment.register</field>
<field name="inherit_id" ref="account.view_account_payment_register_form"/>
<field name="arch" type="xml">
<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>
</field>
</record>
</odoo>
@@ -0,0 +1,143 @@
# -*- coding: utf-8 -*-
from odoo import models, api, fields, _, Command
from odoo.exceptions import UserError
class L10nLatamPaymentMassTransfer(models.TransientModel):
_name = 'l10n_latam.payment.mass.transfer'
_description = 'Checks Mass Transfers'
_check_company_auto = True
payment_date = fields.Date(
string="Payment Date",
required=True,
default=fields.Date.context_today,
)
destination_journal_id = fields.Many2one(
comodel_name='account.journal',
string='Destination Journal',
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(
'res.company',
compute="_compute_journal_company"
)
check_ids = fields.Many2many(
'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 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') != 'l10n_latam.check':
raise UserError(_("The register payment wizard should only be called on account.payment records."))
checks = self.env['l10n_latam.check'].browse(self._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.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
def _create_payments(self):
""" 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' 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 in ('out_third_party_checks', 'return_third_party_checks')
)[:1]
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()
action = {
'name': _('Payments'),
'type': 'ir.actions.act_window',
'res_model': 'account.payment',
'context': {'create': False},
}
if len(payments) == 1:
action.update({
'view_mode': 'form',
'res_id': payments.id,
})
else:
action.update({
'view_mode': 'list,form',
'domain': [('id', 'in', payments.ids)],
})
return action
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_l10n_latam_payment_mass_transfer_form" model="ir.ui.view">
<field name="name">l10n_latam.payment.mass.transfer.form</field>
<field name="model">l10n_latam.payment.mass.transfer</field>
<field name="arch" type="xml">
<form>
<field name="check_ids" invisible="1"/>
<field name="journal_id" invisible="1"/>
<field name="company_id" invisible="1"/>
<group>
<group name="destination_journal_group">
<field name="destination_journal_id" options="{'no_open': True, 'no_create': True}" required="1"/>
</group>
<group name="other_check_info">
<field name="payment_date"/>
<field name="communication"/>
</group>
</group>
<footer>
<button string="Create Transfers"
name="action_create_payments"
type="object"
class="oe_highlight"
data-hotkey="q"/>
<button string="Cancel"
class="btn btn-secondary"
special="cancel"
data-hotkey="x"/>
</footer>
</form>
</field>
</record>
<record id="action_view_l10n_latam_payment_mass_transfer" model="ir.actions.act_window">
<field name="name">Check Transfer</field>
<field name="res_model">l10n_latam.payment.mass.transfer</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>
@@ -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 l10nLatamCheckPaymentRegisterCheck(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)