From c372c94ee5ff8921788b9ce12a9f66ca042ffbbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Lodeiros?= Date: Tue, 1 Feb 2022 20:17:05 +0100 Subject: [PATCH] [IMP]pms: reconcile payment with statements by ref and/or folios --- pms/models/account_bank_statement.py | 45 ++++------------------- pms/models/account_bank_statement_line.py | 30 +++++++++++++++ 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/pms/models/account_bank_statement.py b/pms/models/account_bank_statement.py index 18c1a8398..5e5ff1aae 100644 --- a/pms/models/account_bank_statement.py +++ b/pms/models/account_bank_statement.py @@ -34,40 +34,11 @@ class AccountBankStatement(models.Model): ) super(AccountBankStatement, self).button_post() for line in lines_of_moves_to_post: - folio_ids = line.folio_ids.ids - if folio_ids: - to_reconcile_ids = self.env["account.move.line"].search( - [ - ("move_id.folio_ids", "in", folio_ids), - ("reconciled", "=", False), - "|", - ( - "account_id", - "=", - self.journal_id.payment_debit_account_id.id, - ), - ( - "account_id", - "=", - self.journal_id.payment_credit_account_id.id, - ), - ("journal_id", "=", self.journal_id.id), - ] - ) - if to_reconcile_ids: - statement_move_line = line.move_id.line_ids.filtered( - lambda line: line.account_id.reconcile - ) - payment_lines = self.env["account.move.line"].browse( - to_reconcile_ids.ids - ) - # We try to reconcile by amount - payment_line = False - for record in payment_lines: - payment_line = ( - record if abs(record.balance) == line.amount else False - ) - if payment_line and statement_move_line: - statement_move_line.account_id = payment_line.account_id - lines_to_reconcile = payment_line + statement_move_line - lines_to_reconcile.reconcile() + payment_move_line = line._get_payment_move_lines_to_reconcile(line) + statement_move_line = line.move_id.line_ids.filtered( + lambda line: line.account_id.reconcile + ) + if payment_move_line and statement_move_line: + statement_move_line.account_id = payment_move_line.account_id + lines_to_reconcile = payment_move_line + statement_move_line + lines_to_reconcile.reconcile() diff --git a/pms/models/account_bank_statement_line.py b/pms/models/account_bank_statement_line.py index 03ec91a54..064a0471c 100644 --- a/pms/models/account_bank_statement_line.py +++ b/pms/models/account_bank_statement_line.py @@ -48,3 +48,33 @@ class AccountBankStatementLine(models.Model): } ) return line_vals_list + + def _get_payment_move_lines_to_reconcile(self): + self.ensure_one() + payment_move_line = False + folio_ids = self.folio_ids and self.folio_ids.ids or False + domain = [("move_id.folio_ids", "in", folio_ids)] if folio_ids else [] + domain.extend( + [ + ("move_id.ref", "=", self.payment_ref), + ("date", "=", self.date), + ("reconciled", "=", False), + "|", + ( + "account_id", + "=", + self.journal_id.payment_debit_account_id.id, + ), + ( + "account_id", + "=", + self.journal_id.payment_credit_account_id.id, + ), + ("journal_id", "=", self.journal_id.id), + ] + ) + to_reconcile_move_lines = self.env["account.move.line"].search(domain) + # We try to reconcile by amount + for record in to_reconcile_move_lines: + payment_move_line = record if record.balance == self.amount else False + return payment_move_line