From c97eac34bfac1ecf4a6dcb9c33069645d7b29d09 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Mon, 29 Jun 2026 22:38:02 +0530 Subject: [PATCH] fix(accounts): savepoint per-row bank entry in Bank Transaction upload (Postgres) create_bank_entries loops rows inserting+submitting a Bank Transaction; on failure the except calls bank_transaction.log_error (INSERT) with no rollback, raising InFailedSqlTransaction on Postgres, and the next row runs in the poisoned txn. Savepoint per row + rollback(save_point=) before log_error. No-op on MariaDB. --- .../doctype/bank_transaction/bank_transaction_upload.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py b/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py index c2bac737a78..d38d9df6ca0 100644 --- a/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py +++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py @@ -47,6 +47,7 @@ def create_bank_entries(columns: str, data: str | list, bank_account: str): for key, value in header_map.items(): fields.update({key: d[int(value) - 1]}) + frappe.db.savepoint("bank_entry") try: bank_transaction = frappe.get_doc({"doctype": "Bank Transaction"}) bank_transaction.update(fields) @@ -56,6 +57,7 @@ def create_bank_entries(columns: str, data: str | list, bank_account: str): bank_transaction.submit() success += 1 except Exception: + frappe.db.rollback(save_point="bank_entry") bank_transaction.log_error("Bank entry creation failed") errors += 1