29 lines
		
	
	
		
			615 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			615 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| import frappe
 | |
| 
 | |
| from erpnext.stock.utils import get_bin
 | |
| 
 | |
| 
 | |
| def execute():
 | |
| 
 | |
| 	wo = frappe.qb.DocType("Work Order")
 | |
| 	wo_item = frappe.qb.DocType("Work Order Item")
 | |
| 
 | |
| 	incorrect_item_wh = (
 | |
| 		frappe.qb
 | |
| 			.from_(wo)
 | |
| 			.join(wo_item).on(wo.name == wo_item.parent)
 | |
| 			.select(wo_item.item_code, wo.source_warehouse).distinct()
 | |
| 			.where(
 | |
| 				(wo.status == "Closed")
 | |
| 				& (wo.docstatus == 1)
 | |
| 				& (wo.source_warehouse.notnull())
 | |
| 			)
 | |
| 	).run()
 | |
| 
 | |
| 	for item_code, warehouse in incorrect_item_wh:
 | |
| 		if not (item_code and warehouse):
 | |
| 			continue
 | |
| 
 | |
| 		bin = get_bin(item_code, warehouse)
 | |
| 		bin.update_reserved_qty_for_production()
 |