From 277aa7bc2bd37aa721a0fa4fcf7b85217b84236b Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Mon, 8 Jan 2024 13:18:29 +0530 Subject: [PATCH] fix: bank transction status upon reconciliation (cherry picked from commit 6de8c18f9803c055c17e220f8f8d7eed5dfb45c6) --- .../bank_reconciliation_tool.py | 4 ++++ .../doctype/bank_transaction/bank_transaction.py | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py index 0779a09e2f..9e6b51d2c1 100644 --- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py +++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py @@ -444,6 +444,10 @@ def reconcile_vouchers(bank_transaction_name, vouchers): vouchers = json.loads(vouchers) transaction = frappe.get_doc("Bank Transaction", bank_transaction_name) transaction.add_payment_entries(vouchers) + transaction.validate_duplicate_references() + transaction.allocate_payment_entries() + transaction.update_allocated_amount() + transaction.set_status() transaction.save() return transaction diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py index 57f7c0eca3..8d82123989 100644 --- a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py +++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py @@ -3,12 +3,11 @@ import frappe from frappe import _ +from frappe.model.document import Document from frappe.utils import flt -from erpnext.controllers.status_updater import StatusUpdater - -class BankTransaction(StatusUpdater): +class BankTransaction(Document): # begin: auto-generated types # This code is auto-generated. Do not modify anything in this block. @@ -50,6 +49,15 @@ class BankTransaction(StatusUpdater): def validate(self): self.validate_duplicate_references() + def set_status(self): + if self.docstatus == 2: + self.db_set("status", "Cancelled") + elif self.docstatus == 1: + if self.unallocated_amount > 0: + self.db_set("status", "Unreconciled") + elif self.unallocated_amount <= 0: + self.db_set("status", "Reconciled") + def validate_duplicate_references(self): """Make sure the same voucher is not allocated twice within the same Bank Transaction""" if not self.payment_entries: @@ -88,7 +96,7 @@ class BankTransaction(StatusUpdater): for payment_entry in self.payment_entries: self.clear_linked_payment_entry(payment_entry, for_cancel=True) - self.set_status(update=True) + self.set_status() def add_payment_entries(self, vouchers): "Add the vouchers with zero allocation. Save() will perform the allocations and clearance"