Skip to content
Snippets Groups Projects
Commit 02cc8022 authored by oco-odoo's avatar oco-odoo
Browse files

[FIX] account: reconciliation widget: don't show draft entries

Before that, draft entries were taken into account in reconciliation propositions; which made no sense.

13.0 version of https://github.com/odoo/odoo/pull/39954



closes odoo/odoo#40167

Signed-off-by: default avatarLaurent Smet <smetl@users.noreply.github.com>
parent 4873e5ef
Branches
Tags
No related merge requests found
......@@ -316,7 +316,7 @@ class AccountReconciliation(models.AbstractModel):
'suppliers': [],
}
# If we have specified partner_ids, don't return the list of reconciliation for specific accounts as it will
# show entries that are not reconciled with other partner. Asking for a specific partner on a specific account
# show entries that are not reconciled with other partner. Asking for a specific partner on a specific account
# is never done.
accounts_data = []
if not partner_ids:
......@@ -358,25 +358,34 @@ class AccountReconciliation(models.AbstractModel):
AND EXISTS (
SELECT NULL
FROM account_move_line l
JOIN account_move move ON l.move_id = move.id
JOIN account_journal journal ON l.journal_id = journal.id
WHERE l.account_id = a.id
{inner_where}
AND l.amount_residual != 0
AND (move.state = 'posted' OR (move.state = 'draft' AND journal.post_at = 'bank_rec'))
)
""".format(inner_where=is_partner and 'AND l.partner_id = p.id' or ' ')
only_dual_entries_query = """
AND EXISTS (
SELECT NULL
FROM account_move_line l
JOIN account_move move ON l.move_id = move.id
JOIN account_journal journal ON l.journal_id = journal.id
WHERE l.account_id = a.id
{inner_where}
AND l.amount_residual > 0
AND (move.state = 'posted' OR (move.state = 'draft' AND journal.post_at = 'bank_rec'))
)
AND EXISTS (
SELECT NULL
FROM account_move_line l
JOIN account_move move ON l.move_id = move.id
JOIN account_journal journal ON l.journal_id = journal.id
WHERE l.account_id = a.id
{inner_where}
AND l.amount_residual < 0
AND (move.state = 'posted' OR (move.state = 'draft' AND journal.post_at = 'bank_rec'))
)
""".format(inner_where=is_partner and 'AND l.partner_id = p.id' or ' ')
query = ("""
......@@ -596,7 +605,7 @@ class AccountReconciliation(models.AbstractModel):
@api.model
def _domain_move_lines_for_manual_reconciliation(self, account_id, partner_id=False, excluded_ids=None, search_str=False):
""" Create domain criteria that are relevant to manual reconciliation. """
domain = ['&', ('reconciled', '=', False), ('account_id', '=', account_id)]
domain = ['&', '&', ('reconciled', '=', False), ('account_id', '=', account_id), '|', ('move_id.state', '=', 'posted'), '&', ('move_id.state', '=', 'draft'), ('move_id.journal_id.post_at', '=', 'bank_rec')]
if partner_id:
domain = expression.AND([domain, [('partner_id', '=', partner_id)]])
if excluded_ids:
......@@ -766,8 +775,16 @@ class AccountReconciliation(models.AbstractModel):
# Get pairs
query = """
SELECT a.id, b.id
FROM account_move_line a, account_move_line b
FROM account_move_line a, account_move_line b,
account_move move_a, account_move move_b,
account_journal journal_a, account_journal journal_b
WHERE a.id != b.id
AND move_a.id = a.move_id
AND (move_a.state = 'posted' OR (move_a.state = 'draft' AND journal_a.post_at = 'bank_rec'))
AND move_a.journal_id = journal_a.id
AND move_b.id = b.move_id
AND move_b.journal_id = journal_b.id
AND (move_b.state = 'posted' OR (move_b.state = 'draft' AND journal_b.post_at = 'bank_rec'))
AND a.amount_residual = -b.amount_residual
AND NOT a.reconciled
AND a.account_id = %s
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment