Files
Pedro M. Baeza 427e66abec [FIX] account_reconciliation_widget: Don't link counterpart to the statement line
Steps to reproduce the problem:

- Issue an invoice.
- Add a bank statement for paying such invoice.
- Reconcile the statement with the invoice. It gets paid.
- Revert reconciliation from the statement.
- Go again to reconcile the statement line.

Expected behavior: The invoice is available to be reconciled again.

Current behavior: The invoice is not available.

That's because the move line of the AR/AP account was linked to the
statement line in the reconciliation process through the field
`statement_line_id`. That field is used for linking the generated
move lines to the generating statement line, not for other things.

This is probably a bad migration from v13 original code to v14, where
the reconciliation and the datamodel changed.

It includes a migration script that mitigates a bit the problem on
past reconciled invoices, removing such link. It doesn't cover other
AR/AP lines, but at least we keep data consistent for these ones.

TT46644
2024-01-02 08:52:26 +01:00

25 lines
840 B
Python

# Copyright 2023 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openupgradelib import openupgrade
@openupgrade.migrate()
def migrate(env, version):
"""Mitigate a bit the problem on past reconciled invoices, for being available
to be reconciled again if we press "Revert reconciliation" on the statement line.
This doesn't cover other AR/AP lines, but at least we keep data consistent for
these ones.
"""
openupgrade.logged_query(
env.cr,
"""
UPDATE account_move_line aml
SET statement_line_id = NULL, statement_id = NULL
FROM account_move am WHERE am.id = aml.move_id
AND aml.statement_line_id IS NOT NULL
AND am.move_type IN ('out_invoice', 'out_refund', 'in_invoice', 'in_refund')
""",
)