From 432b4f7f86c8c493f9a09cc0214ff97dcabb65f2 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Wed, 24 Jun 2026 20:37:32 +0530 Subject: [PATCH] refactor: parse native JSON request args in controllers/stock_controller.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/controllers/stock_controller.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index e350f2d950c..5354c8c6f4e 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -625,8 +625,7 @@ def repost_required_for_queue(doc: StockController) -> bool: def check_item_quality_inspection(doctype: str, docstatus: str | int, items: str | list[dict]): from erpnext.stock.services.quality_inspection_service import INSPECTION_FIELDNAME_MAP - if isinstance(items, str): - items = json.loads(items) + items = frappe.parse_json(items) inspection_fieldname = INSPECTION_FIELDNAME_MAP.get(doctype) if inspection_fieldname is None: @@ -658,8 +657,7 @@ def check_item_quality_inspection(doctype: str, docstatus: str | int, items: str def make_quality_inspections( company: str, doctype: str, docname: str, items: str | list, inspection_type: str ): - if isinstance(items, str): - items = json.loads(items) + items = frappe.parse_json(items) inspections = [] for item in items: