fix: ignore `Non-Stock Item` while calculating `% Picked` in Sales Order
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 353fa9b..d3c2347 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -415,10 +415,17 @@
def update_picking_status(self):
total_picked_qty = 0.0
total_qty = 0.0
+ per_picked = 0.0
+
for so_item in self.items:
- total_picked_qty += flt(so_item.picked_qty)
- total_qty += flt(so_item.stock_qty)
- per_picked = total_picked_qty / total_qty * 100
+ if cint(
+ frappe.get_cached_value("Item", so_item.item_code, "is_stock_item")
+ ) or self.has_product_bundle(so_item.item_code):
+ total_picked_qty += flt(so_item.picked_qty)
+ total_qty += flt(so_item.stock_qty)
+
+ if total_picked_qty and total_qty:
+ per_picked = total_picked_qty / total_qty * 100
self.db_set("per_picked", flt(per_picked), update_modified=False)