Merge branch 'develop' into patch-7
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 73276f3..477ad6a 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -1322,6 +1322,7 @@
 	date_fieldname = "delivery_date" if child_doctype == "Sales Order Item" else "schedule_date"
 	child_item.update({date_fieldname: trans_item.get(date_fieldname) or p_doc.get(date_fieldname)})
 	child_item.uom = trans_item.get("uom") or item.stock_uom
+	child_item.warehouse = get_item_warehouse(item, p_doc, overwrite_warehouse=True)
 	conversion_factor = flt(get_conversion_factor(item.item_code, child_item.uom).get("conversion_factor"))
 	child_item.conversion_factor = flt(trans_item.get('conversion_factor')) or conversion_factor
 	if child_doctype == "Purchase Order Item":
@@ -1360,6 +1361,17 @@
 
 		d.cancel()
 		d.delete()
+		
+		from erpnext.stock.stock_balance import update_bin_qty, get_reserved_qty, get_ordered_qty
+		# updating both will be time consuming, update it based on the doctype. reserved qty if sales order, otherwise ordered qty
+		if parent.doctype == "Sales Order":
+			update_bin_qty(d.item_code, d.warehouse, {
+				"reserved_qty": get_reserved_qty(d.item_code, d.warehouse)
+			}) 
+		else:
+			update_bin_qty(d.item_code, d.warehouse, {
+				"ordered_qty": get_ordered_qty(d.item_code, d.warehouse)
+			}) 
 
 @frappe.whitelist()
 def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name, child_docname="items"):