[IMP] account_payment_order: Add Transfer moves dates

In v13 the existing behavior was defined with today's date the Transfer Move, therefore, we define
that behavior by default without configuration since it is the expected behavior.

https://github.com/OCA/bank-payment/pull/805/files

TT49582
This commit is contained in:
Víctor Martínez
2024-06-12 14:26:22 +02:00
parent 1d814c3de5
commit 1724c83d3a
5 changed files with 41 additions and 202 deletions

View File

@@ -1316,201 +1316,3 @@ msgstr "el"
msgid "otherwise, new payment orders will be created (one per payment mode)." msgid "otherwise, new payment orders will be created (one per payment mode)."
msgstr "" msgstr ""
"En caso contrario, se crearán nuevas órdenes (una por cada modo de pago)." "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"

View File

@@ -1,5 +1,6 @@
# Copyright 2019 ACSONE SA/NV # Copyright 2019 ACSONE SA/NV
# Copyright 2022 Tecnativa - Pedro M. Baeza # 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). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models from odoo import api, fields, models
@@ -43,3 +44,16 @@ class AccountPayment(models.Model):
and pay.available_payment_method_ids.code == "manual" and pay.available_payment_method_ids.code == "manual"
) )
return res 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

View File

@@ -187,7 +187,7 @@ class AccountPaymentLine(models.Model):
"destination_account_id": self.move_line_id.account_id.id, "destination_account_id": self.move_line_id.account_id.id,
"company_id": self.order_id.company_id.id, "company_id": self.order_id.company_id.id,
"amount": sum(self.mapped("amount_currency")), "amount": sum(self.mapped("amount_currency")),
"date": self[:1].date, "date": fields.Date.today(),
"currency_id": self.currency_id.id, "currency_id": self.currency_id.id,
"ref": self.order_id.name, "ref": self.order_id.name,
"payment_reference": " - ".join([line.communication for line in self]), "payment_reference": " - ".join([line.communication for line in self]),

View File

@@ -1,10 +1,12 @@
# Copyright 2017 Camptocamp SA # Copyright 2017 Camptocamp SA
# Copyright 2017 Creu Blanca # Copyright 2017 Creu Blanca
# Copyright 2019-2022 Tecnativa - Pedro M. Baeza # 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). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from datetime import date, timedelta from datetime import date, timedelta
from freezegun import freeze_time
from odoo.exceptions import UserError, ValidationError from odoo.exceptions import UserError, ValidationError
from odoo.tests.common import Form, tagged from odoo.tests.common import Form, tagged
@@ -141,3 +143,25 @@ class TestPaymentOrderInbound(TestPaymentOrderInboundBase):
payment_order.cancel2draft() payment_order.cancel2draft()
payment_order.unlink() payment_order.unlink()
self.assertEqual(len(self.payment_order_obj.search(self.domain)), 0) 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)],
)

View File

@@ -345,8 +345,7 @@ class TestPaymentOrderOutbound(TestPaymentOrderOutboundBase):
outbound_order.draft2open() outbound_order.draft2open()
self.assertEqual(outbound_order.payment_count, 2) self.assertEqual(outbound_order.payment_count, 2)
self.assertEqual( self.assertEqual(
outbound_order.payment_line_ids[0].date, outbound_order.payment_line_ids[0].payment_ids.date, fields.Date.today()
outbound_order.payment_line_ids[0].payment_ids.date,
) )
self.assertEqual( self.assertEqual(
outbound_order.payment_line_ids[1].date, outbound_order.payment_line_ids[1].date,