diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 47a1c400faa..9dfaae7188e 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -1565,7 +1565,30 @@ def repost_required_for_queue(doc: StockController) -> bool: @frappe.whitelist() +<<<<<<< HEAD def make_quality_inspections(doctype, docname, items): +======= +def check_item_quality_inspection(doctype, items): + if isinstance(items, str): + items = json.loads(items) + + inspection_fieldname_map = { + "Purchase Receipt": "inspection_required_before_purchase", + "Purchase Invoice": "inspection_required_before_purchase", + "Subcontracting Receipt": "inspection_required_before_purchase", + "Sales Invoice": "inspection_required_before_delivery", + "Delivery Note": "inspection_required_before_delivery", + } + + for item in items: + if not frappe.db.get_value("Item", item.get("item_code"), inspection_fieldname_map.get(doctype)): + items.remove(item) + return items + + +@frappe.whitelist() +def make_quality_inspections(doctype, docname, items, inspection_type): +>>>>>>> c92ec312b9 (fix: show only items with inspection enabled on create QI dialog) if isinstance(items, str): items = json.loads(items) diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 86c9ef46c78..81a8a617e64 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -2367,29 +2367,39 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe primary_action_label: __("Create") }); - this.frm.doc.items.forEach(item => { - if (this.has_inspection_required(item)) { - let dialog_items = dialog.fields_dict.items; - dialog_items.df.data.push({ - "item_code": item.item_code, - "item_name": item.item_name, - "qty": item.qty, - "description": item.description, - "serial_no": item.serial_no, - "batch_no": item.batch_no, - "sample_size": item.sample_quantity, - "child_row_reference": item.name, + frappe.call({ + method: "erpnext.controllers.stock_controller.check_item_quality_inspection", + args: { + doctype: this.frm.doc.doctype, + items: this.frm.doc.items + }, + freeze: true, + callback: function (r) { + r.message.forEach(item => { + if (me.has_inspection_required(item)) { + let dialog_items = dialog.fields_dict.items; + dialog_items.df.data.push({ + "item_code": item.item_code, + "item_name": item.item_name, + "qty": item.qty, + "description": item.description, + "serial_no": item.serial_no, + "batch_no": item.batch_no, + "sample_size": item.sample_quantity, + "child_row_reference": item.name, + }); + dialog_items.grid.refresh(); + } }); - dialog_items.grid.refresh(); + + data = dialog.fields_dict.items.df.data; + if (!data.length) { + frappe.msgprint(__("All items in this document already have a linked Quality Inspection.")); + } else { + dialog.show(); + } } }); - - data = dialog.fields_dict.items.df.data; - if (!data.length) { - frappe.msgprint(__("All items in this document already have a linked Quality Inspection.")); - } else { - dialog.show(); - } } has_inspection_required(item) {