From b3c64107dff9ddd71f9170b6fd35b5fb28cad7fd Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Wed, 24 Jun 2026 20:37:31 +0530 Subject: [PATCH] refactor: parse native JSON request args in buying/doctype/purchase_order/purchase_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/buying/doctype/purchase_order/purchase_order.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 976ee5bbf9e..be27000db2b 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -549,11 +549,11 @@ def item_last_purchase_rate(name, conversion_rate, item_code, conversion_factor= @frappe.whitelist() -def close_or_unclose_purchase_orders(names: str, status: str): +def close_or_unclose_purchase_orders(names: str | list, status: str): if not frappe.has_permission("Purchase Order", "write"): frappe.throw(_("Not permitted"), frappe.PermissionError) - names = json.loads(names) + names = frappe.parse_json(names) for name in names: po = frappe.get_lazy_doc("Purchase Order", name) if po.docstatus == 1: