diff --git a/account_payment_order/i18n/es.po b/account_payment_order/i18n/es.po index 664669fcf..53c71e367 100644 --- a/account_payment_order/i18n/es.po +++ b/account_payment_order/i18n/es.po @@ -1316,201 +1316,3 @@ msgstr "el" msgid "otherwise, new payment orders will be created (one per payment mode)." msgstr "" "En caso contrario, se crearán nuevas órdenes (una por cada modo de pago)." - -#~ msgid "SMS Delivery error" -#~ msgstr "Error de entrega del SMS" - -#~ msgid "Accounting Entries Options" -#~ msgstr "Opciones de asientos contables" - -#~ msgid "Generate Accounting Entries On File Upload" -#~ msgstr "Generar asientos contables al subir el archivo" - -#~ msgid "Move Option" -#~ msgstr "Opciones de asiento" - -#, python-format -#~ msgid "" -#~ "On the payment mode '%s', you must choose an option for the 'Move Option' " -#~ "parameter." -#~ msgstr "" -#~ "En el modo de pago '%s', debe escoger una opción para las 'Opciones de " -#~ "asiento'." - -#~ msgid "One move per payment date" -#~ msgstr "Un asiento por fecha de pago" - -#~ msgid "One move per payment line" -#~ msgstr "Un asiento por línea de pago" - -#~ msgid "Post Move" -#~ msgstr "Publicar movimiento" - -#~ msgid "Bank Payment Line" -#~ msgstr "Línea de pago bancario" - -#~ msgid "Bank Payment Line Ref" -#~ msgstr "Ref. de la línea de pago bancario" - -#~ msgid "Bank Payment Lines" -#~ msgstr "Líneas de pago bancario" - -#, python-format -#~ msgid "Can not reconcile: no move line for payment line %s of partner '%s'." -#~ msgstr "" -#~ "No se puede conciliar: no hay apunte para la línea de pago %s de la " -#~ "empresa '%s'." - -#, python-format -#~ msgid "" -#~ "Cannot delete a payment order line whose payment order is in state '%s'. " -#~ "You need to cancel it first." -#~ msgstr "" -#~ "No se puede eliminar una línea de una orden de pago cuyo estado es '%s'. " -#~ "Primero debes cancelarla." - -#, python-format -#~ msgid "Debit bank line %s" -#~ msgstr "Línea de adeudo de banco %s" - -#, python-format -#~ msgid "Debit order %s" -#~ msgstr "Orden de cobro %s" - -#, python-format -#~ msgid "" -#~ "For partner '%s', the account of the account move line to pay (%s) is " -#~ "different from the account of of the transit move line (%s)." -#~ msgstr "" -#~ "Para la empresa '%s', la cuenta del apunte a pagar (%s) es diferente de " -#~ "la cuenta del apunte de tránsito (%s)." - -#, python-format -#~ msgid "Move line '%s' of partner '%s' has already been reconciled" -#~ msgstr "El apunte '%s' de la empresa '%s' ya ha sido conciliado" - -#~ msgid "Order" -#~ msgstr "Orden" - -#, python-format -#~ msgid "Payment bank line %s" -#~ msgstr "Línea de pago bancario %s" - -#, python-format -#~ msgid "Payment order %s" -#~ msgstr "Orden %s" - -#~ msgid "Related Payment Lines" -#~ msgstr "Líneas de pago relacionadas" - -#~ msgid "Search Bank Payment Lines" -#~ msgstr "Buscar líneas de pago bancario" - -#~ msgid "" -#~ "The bank payment lines are used to generate the payment file. They are " -#~ "automatically created from transaction lines upon confirmation of the " -#~ "payment order: one bank payment line can group several transaction lines " -#~ "if the option 'Group Transactions in Payment Orders' is active on the " -#~ "payment mode." -#~ msgstr "" -#~ "Las líneas de pago bancarias se usan para generar el archivo de pago. Se " -#~ "crean automáticamente de las líneas de transacciones en la confirmación " -#~ "de la orden: una línea de pago bancario puede agrupar varias líneas de " -#~ "transacción si la opción 'Agrupar transacciones en las órdenes' está " -#~ "activada en el modo de pago." - -#~ msgid "Total Amount" -#~ msgstr "Importe total" - -#, python-format -#~ msgid "%d payment lines added to the existing draft payment order %s." -#~ msgstr "%d líneas de pago añadidas a la orden de pago en borrador %s." - -#, python-format -#~ msgid "" -#~ "%d payment lines added to the new draft payment order %s which has been " -#~ "automatically created." -#~ msgstr "" -#~ "%d líneas de pago añadidas a una nueva orden de pago en borrador %s que " -#~ "ha sido creada automáticamente." - -#~ msgid "Done" -#~ msgstr "Realizado" - -#~ msgid "Done Date" -#~ msgstr "Fecha de realización" - -#~ msgid "" -#~ "Journal to write payment entries when confirming payment/debit orders of " -#~ "this mode" -#~ msgstr "" -#~ "Diario al que escribir los asientos contables cuando se confirme la orden " -#~ "de cobro/pago de este modo" - -#~ msgid "Number of Bank Lines" -#~ msgstr "Número de líneas bancarias" - -#~ msgid "Offsetting Account" -#~ msgstr "Cuenta de compensación" - -#~ msgid "" -#~ "On the payment mode '%s', you must select a value for the 'Transfer " -#~ "Account'." -#~ msgstr "" -#~ "En el modo de pago '%s', debe seleccionar un valor para la 'Cuenta de " -#~ "transferencia'." - -#~ msgid "" -#~ "On the payment mode '%s', you must select a value for the 'Transfer " -#~ "Journal'." -#~ msgstr "" -#~ "En el modo de pago '%s', debe seleccionar un valor para el 'Diario de " -#~ "transferencia'." - -#~ msgid "" -#~ "On the payment mode '%s', you must select an option for the 'Offsetting " -#~ "Account' parameter" -#~ msgstr "" -#~ "En el modo de pago '%s', debe seleccionar una opción para el parámetro " -#~ "'Cuenta de compensación'" - -#~ msgid "" -#~ "Pay off lines in 'file uploaded' payment orders with a move on this " -#~ "account. You can only select accounts that are marked for reconciliation" -#~ msgstr "" -#~ "Las líneas de pago de la orden se conciliarán en la 'subida de archivo' " -#~ "con un apunte a esta cuenta. Sólo puede seleccionar las cuentas que están " -#~ "marcadas para conciliación" - -#~ msgid "Transaction Lines" -#~ msgstr "Líneas de transacción" - -#~ msgid "Transfer Account" -#~ msgstr "Cuenta de transferencia" - -#~ msgid "Transfer Journal" -#~ msgstr "Diario de transferencia" - -#~ msgid "Transfer Journal Entries" -#~ msgstr "Asientos de transferencia" - -#~ msgid "Due date" -#~ msgstr "Fecha de vencimiento" - -#~ msgid "ISO" -#~ msgstr "ISO" - -#~ msgid "Invoice" -#~ msgstr "Factura" - -#~ msgid "No Journal Entry on invoice %s" -#~ msgstr "No se ha encontrado asiento en la factura %s" - -#~ msgid "Payment Order / Payment" -#~ msgstr "Orden de Pago / Pago" - -#~ msgid "Account Entry" -#~ msgstr "Asiento contable" - -#~ msgid "report.account_payment_order.print_account_payment_order_main" -#~ msgstr "report.account_payment_order.print_account_payment_order_main" diff --git a/account_payment_order/models/account_payment.py b/account_payment_order/models/account_payment.py index 7acb4f5c8..6bdbde725 100644 --- a/account_payment_order/models/account_payment.py +++ b/account_payment_order/models/account_payment.py @@ -1,5 +1,6 @@ # Copyright 2019 ACSONE SA/NV # Copyright 2022 Tecnativa - Pedro M. Baeza +# Copyright 2024 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, fields, models @@ -43,3 +44,16 @@ class AccountPayment(models.Model): and pay.available_payment_method_ids.code == "manual" ) return res + + def _prepare_move_line_default_vals(self, write_off_line_vals=None): + """Overwrite date_maturity of the move_lines that are generated when related + to a payment order. + """ + vals_list = super()._prepare_move_line_default_vals( + write_off_line_vals=write_off_line_vals + ) + if not self.payment_order_id: + return vals_list + for vals in vals_list: + vals["date_maturity"] = self.payment_line_ids[0].date + return vals_list diff --git a/account_payment_order/models/account_payment_line.py b/account_payment_order/models/account_payment_line.py index f3b38dcd3..eac8cb933 100644 --- a/account_payment_order/models/account_payment_line.py +++ b/account_payment_order/models/account_payment_line.py @@ -187,7 +187,7 @@ class AccountPaymentLine(models.Model): "destination_account_id": self.move_line_id.account_id.id, "company_id": self.order_id.company_id.id, "amount": sum(self.mapped("amount_currency")), - "date": self[:1].date, + "date": fields.Date.today(), "currency_id": self.currency_id.id, "ref": self.order_id.name, "payment_reference": " - ".join([line.communication for line in self]), diff --git a/account_payment_order/tests/test_payment_order_inbound.py b/account_payment_order/tests/test_payment_order_inbound.py index 87056e464..228571d33 100644 --- a/account_payment_order/tests/test_payment_order_inbound.py +++ b/account_payment_order/tests/test_payment_order_inbound.py @@ -1,10 +1,12 @@ # Copyright 2017 Camptocamp SA # Copyright 2017 Creu Blanca # Copyright 2019-2022 Tecnativa - Pedro M. Baeza +# Copyright 2024 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - from datetime import date, timedelta +from freezegun import freeze_time + from odoo.exceptions import UserError, ValidationError from odoo.tests.common import Form, tagged @@ -141,3 +143,25 @@ class TestPaymentOrderInbound(TestPaymentOrderInboundBase): payment_order.cancel2draft() payment_order.unlink() self.assertEqual(len(self.payment_order_obj.search(self.domain)), 0) + + @freeze_time("2024-04-01") + def test_creation_transfer_move_date(self): + self.inbound_order.date_prefered = "fixed" + self.inbound_order.date_scheduled = "2024-06-01" + self.inbound_order.draft2open() + payment_move = self.inbound_order.payment_ids.move_id + self.assertEqual(payment_move.date, date(2024, 4, 1)) # now + self.assertEqual( + payment_move.line_ids.mapped("date_maturity"), + [date(2024, 6, 1), date(2024, 6, 1)], + ) + self.assertEqual(self.inbound_order.payment_count, 1) + self.inbound_order.open2generated() + self.inbound_order.generated2uploaded() + self.assertEqual(self.inbound_order.state, "uploaded") + payment_move = self.inbound_order.payment_ids.move_id + self.assertEqual(payment_move.date, date(2024, 4, 1)) # now + self.assertEqual( + payment_move.line_ids.mapped("date_maturity"), + [date(2024, 6, 1), date(2024, 6, 1)], + ) diff --git a/account_payment_order/tests/test_payment_order_outbound.py b/account_payment_order/tests/test_payment_order_outbound.py index cc44292fb..6fd7819e9 100644 --- a/account_payment_order/tests/test_payment_order_outbound.py +++ b/account_payment_order/tests/test_payment_order_outbound.py @@ -345,8 +345,7 @@ class TestPaymentOrderOutbound(TestPaymentOrderOutboundBase): outbound_order.draft2open() self.assertEqual(outbound_order.payment_count, 2) self.assertEqual( - outbound_order.payment_line_ids[0].date, - outbound_order.payment_line_ids[0].payment_ids.date, + outbound_order.payment_line_ids[0].payment_ids.date, fields.Date.today() ) self.assertEqual( outbound_order.payment_line_ids[1].date,