fix: Unlink PO on cancelling SO
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 8289b8a..075069c 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -837,11 +837,16 @@
print("Before unlinking: ", linked_po)
if linked_po:
- frappe.db.sql("""update `tabPurchase Order Item`
- set sales_order = null, sales_order_item = null,
- modified = %s, modified_by = %s
- where sales_order = %s and sales_order_item in %s
- and docstatus < 2""", (now(), frappe.session.user, self.name, so_items))
+ frappe.db.set_value(
+ 'Purchase Order Item', {
+ 'sales_order': self.name,
+ 'sales_order_item': ['in', so_items],
+ 'docstatus': ['<', 2]
+ },{
+ 'sales_order': None,
+ 'sales_order_item': None
+ }
+ )
frappe.msgprint(_("Purchase Orders {0} are un-linked").format("\n".join(linked_po)))