From 97b57c85727d37a94b40e9a96c8d7e9c0f4a47f3 Mon Sep 17 00:00:00 2001 From: Ali <010109ali@gmail.com> Date: Mon, 16 Mar 2026 18:31:58 +0400 Subject: [PATCH] fix: rollback document if reconciliation fails in Documents & Reconcile mode Previously a JE/PE was left in the database even when reconcile_vouchers threw an error. Now the whole transaction (document creation + failed reconciliation) is rolled back so no orphaned document is created. Co-Authored-By: Claude Sonnet 4.6 --- kapital_bank/mapping.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kapital_bank/mapping.py b/kapital_bank/mapping.py index 2d000b4..cc4bd9f 100644 --- a/kapital_bank/mapping.py +++ b/kapital_bank/mapping.py @@ -369,11 +369,13 @@ def _create_and_reconcile_doc(txn, paid_from, paid_to, document_type, multi_curr ) return {"success": True, "doc_name": doc_name, "reconciled": True} except Exception as re: + frappe.db.rollback() + frappe.local.message_log = [] frappe.log_error( f"reconcile_vouchers failed for {doc_name}: {re}\n{frappe.get_traceback()}", "Kapital Bank Mapping", ) - return {"success": True, "doc_name": doc_name, "reconciled": False, "error": str(re)} + return {"success": False, "error": str(re)} except Exception as e: frappe.db.rollback()