From f4df5ee0bc496cc3cc682d4cc0469ec3673bbf5e Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Wed, 24 Jun 2026 20:37:34 +0530 Subject: [PATCH] refactor: parse native JSON request args in selling/doctype/sales_order/sales_order.py Use frappe.parse_json instead of json.loads so the whitelisted endpoints accept native JSON types (list/dict/bool) in addition to JSON strings. --- erpnext/selling/doctype/sales_order/sales_order.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index c468b92f183..784feff8ed7 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -711,11 +711,11 @@ def is_enable_cutoff_date_on_bulk_delivery_note_creation(): @frappe.whitelist() -def close_or_unclose_sales_orders(names: str, status: str): +def close_or_unclose_sales_orders(names: str | list, status: str): if not frappe.has_permission("Sales Order", "write"): frappe.throw(_("Not permitted"), frappe.PermissionError) - names = json.loads(names) + names = frappe.parse_json(names) for name in names: so = frappe.get_lazy_doc("Sales Order", name) if so.docstatus == 1: