refactor: Add exception handling in background job within BOM Update Tool
diff --git a/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py b/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py
index 0e3955f..c719734 100644
--- a/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py
+++ b/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py
@@ -94,20 +94,31 @@
update_cost()
def replace_bom(args):
- frappe.db.auto_commit_on_many_writes = 1
- args = frappe._dict(args)
-
- doc = frappe.get_doc("BOM Update Tool")
- doc.current_bom = args.current_bom
- doc.new_bom = args.new_bom
- doc.replace_bom()
-
- frappe.db.auto_commit_on_many_writes = 0
+ try:
+ frappe.db.auto_commit_on_many_writes = 1
+ args = frappe._dict(args)
+ doc = frappe.get_doc("BOM Update Tool")
+ doc.current_bom = args.current_bom
+ doc.new_bom = args.new_bom
+ doc.replace_bom()
+ except Exception:
+ frappe.log_error(
+ msg=frappe.get_traceback(),
+ title=_("BOM Update Tool Error")
+ )
+ finally:
+ frappe.db.auto_commit_on_many_writes = 0
def update_cost():
- frappe.db.auto_commit_on_many_writes = 1
- bom_list = get_boms_in_bottom_up_order()
- for bom in bom_list:
- frappe.get_doc("BOM", bom).update_cost(update_parent=False, from_child_bom=True)
-
- frappe.db.auto_commit_on_many_writes = 0
+ try:
+ frappe.db.auto_commit_on_many_writes = 1
+ bom_list = get_boms_in_bottom_up_order()
+ for bom in bom_list:
+ frappe.get_doc("BOM", bom).update_cost(update_parent=False, from_child_bom=True)
+ except Exception:
+ frappe.log_error(
+ msg=frappe.get_traceback(),
+ title=_("BOM Update Tool Error")
+ )
+ finally:
+ frappe.db.auto_commit_on_many_writes = 0