From 277aa7bc2bd37aa721a0fa4fcf7b85217b84236b Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Mon, 8 Jan 2024 13:18:29 +0530 Subject: [PATCH 1/2] 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" From 53eb6129eaa311213d9dffce1bd304f3f578064d Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Mon, 8 Jan 2024 17:32:22 +0530 Subject: [PATCH 2/2] refactor: remove 'Bank Trasaction' logic from status_update (cherry picked from commit cf988434e9e4fd7f7c6df2b024902f8df9942ca3) --- erpnext/controllers/status_updater.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index d09001c8fc..297f8c26be 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -131,11 +131,6 @@ status_map = { "eval:self.status != 'Stopped' and self.per_ordered == 100 and self.docstatus == 1 and self.material_request_type == 'Manufacture'", ], ], - "Bank Transaction": [ - ["Unreconciled", "eval:self.docstatus == 1 and self.unallocated_amount>0"], - ["Reconciled", "eval:self.docstatus == 1 and self.unallocated_amount<=0"], - ["Cancelled", "eval:self.docstatus == 2"], - ], "POS Opening Entry": [ ["Draft", None], ["Open", "eval:self.docstatus == 1 and not self.pos_closing_entry"],