diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index 6e7d2b3..bf07728 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -349,7 +349,7 @@
 	def warn_about_bypassing_with_role(self, item, qty_or_amount, role):
 		action = _("Over Receipt/Delivery") if qty_or_amount == "qty" else _("Overbilling")
 
-		msg = _("{} of {} {} ignored for item {} because you have {} role.").format(
+		msg = _("{0} of {1} {2} ignored for item {3} because you have {4} role.").format(
 			action,
 			_(item["target_ref_field"].title()),
 			frappe.bold(item["reduce_by"]),
diff --git a/erpnext/manufacturing/report/production_planning_report/production_planning_report.py b/erpnext/manufacturing/report/production_planning_report/production_planning_report.py
index 16c25ce..109d9ab 100644
--- a/erpnext/manufacturing/report/production_planning_report/production_planning_report.py
+++ b/erpnext/manufacturing/report/production_planning_report/production_planning_report.py
@@ -49,7 +49,7 @@
 					parent.bom_no,
 					parent.fg_warehouse.as_("warehouse"),
 				)
-				.where(parent.status.notin(["Completed", "Stopped"]))
+				.where(parent.status.notin(["Completed", "Stopped", "Closed"]))
 			)
 
 			if order_by == "Planned Start Date":
@@ -79,10 +79,11 @@
 				query = query.where(child.parent.isin(self.filters.docnames))
 
 			if doctype == "Sales Order":
-				query = query.select(
-					child.delivery_date,
-					parent.base_grand_total,
-				).where((child.stock_qty > child.produced_qty) & (parent.per_delivered < 100.0))
+				query = query.select(child.delivery_date, parent.base_grand_total,).where(
+					(child.stock_qty > child.produced_qty)
+					& (parent.per_delivered < 100.0)
+					& (parent.status.notin(["Completed", "Closed"]))
+				)
 
 				if order_by == "Delivery Date":
 					query = query.orderby(child.delivery_date, order=Order.asc)
@@ -91,7 +92,9 @@
 
 			elif doctype == "Material Request":
 				query = query.select(child.schedule_date,).where(
-					(parent.per_ordered < 100) & (parent.material_request_type == "Manufacture")
+					(parent.per_ordered < 100)
+					& (parent.material_request_type == "Manufacture")
+					& (parent.status != "Stopped")
 				)
 
 				if order_by == "Required Date":
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index d0eb377..60c3356 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -6,7 +6,7 @@
 
 import frappe
 import frappe.defaults
-from frappe import _, msgprint
+from frappe import _, msgprint, qb
 from frappe.contacts.address_and_contact import (
 	delete_contact_and_address,
 	load_address_and_contact,
@@ -732,12 +732,15 @@
 @frappe.validate_and_sanitize_search_inputs
 def get_customer_primary_contact(doctype, txt, searchfield, start, page_len, filters):
 	customer = filters.get("customer")
-	return frappe.db.sql(
-		"""
-		select `tabContact`.name from `tabContact`, `tabDynamic Link`
-			where `tabContact`.name = `tabDynamic Link`.parent and `tabDynamic Link`.link_name = %(customer)s
-			and `tabDynamic Link`.link_doctype = 'Customer'
-			and `tabContact`.name like %(txt)s
-		""",
-		{"customer": customer, "txt": "%%%s%%" % txt},
+
+	con = qb.DocType("Contact")
+	dlink = qb.DocType("Dynamic Link")
+
+	return (
+		qb.from_(con)
+		.join(dlink)
+		.on(con.name == dlink.parent)
+		.select(con.name, con.full_name, con.email_id)
+		.where((dlink.link_name == customer) & (con.name.like(f"%{txt}%")))
+		.run()
 	)
diff --git a/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py b/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py
index 8170009..d364b57 100644
--- a/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py
+++ b/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py
@@ -45,7 +45,7 @@
 	return frappe.get_all(
 		"Warehouse",
 		fields=["name", "parent_warehouse", "is_group"],
-		filters={"company": report_filters.company, "disabled": 0},
+		filters={"company": report_filters.company},
 		order_by="lft",
 	)
 
@@ -55,9 +55,10 @@
 	warehouses = get_warehouses(filters)
 
 	for warehouse in warehouses:
-		warehouse["stock_balance"] = warehouse_balance.get(warehouse.name, 0)
+		warehouse.stock_balance = warehouse_balance.get(warehouse.name, 0) or 0.0
 
 	update_indent(warehouses)
+	set_balance_in_parent(warehouses)
 
 	return warehouses
 
@@ -69,13 +70,26 @@
 			warehouse.indent = indent
 			for child in warehouses:
 				if child.parent_warehouse == warehouse.name:
-					warehouse.stock_balance += child.stock_balance
 					add_indent(child, indent + 1)
 
 		if warehouse.is_group:
 			add_indent(warehouse, warehouse.indent or 0)
 
 
+def set_balance_in_parent(warehouses):
+	# sort warehouses by indent in descending order
+	warehouses = sorted(warehouses, key=lambda x: x.get("indent", 0), reverse=1)
+
+	for warehouse in warehouses:
+
+		def update_balance(warehouse, balance):
+			for parent in warehouses:
+				if warehouse.parent_warehouse == parent.name:
+					parent.stock_balance += balance
+
+		update_balance(warehouse, warehouse.stock_balance)
+
+
 def get_columns():
 	return [
 		{
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv
index 0fdd3c9..f1d8302 100644
--- a/erpnext/translations/de.csv
+++ b/erpnext/translations/de.csv
@@ -9914,3 +9914,4 @@
 Delivered at Place,Geliefert benannter Ort,
 Delivered at Place Unloaded,Geliefert benannter Ort entladen,
 Delivered Duty Paid,Geliefert verzollt,
+{0} of {1} {2} ignored for item {3} because you have {4} role,"{0} von Artikel {3} mit {1} {2} wurde ignoriert, weil Sie die Rolle {4} haben."
diff --git a/erpnext/translations/zh.csv b/erpnext/translations/zh.csv
index 716f1f2..d1f1b07 100644
--- a/erpnext/translations/zh.csv
+++ b/erpnext/translations/zh.csv
@@ -453,11 +453,11 @@
 Cancel the journal entry {0} first,首先取消日记条目{0},
 Canceled,取消,
 "Cannot Submit, Employees left to mark attendance",无法提交，不能为已离职员工登记考勤,
-Cannot be a fixed asset item as Stock Ledger is created.,不能成为股票分类账创建的固定资产项目。,
+Cannot be a fixed asset item as Stock Ledger is created.,不能成为库存分类账创建的固定资产项目。,
 Cannot cancel because submitted Stock Entry {0} exists,不能取消，因为提交的仓储记录{0}已经存在,
 Cannot cancel transaction for Completed Work Order.,无法取消已完成工单的交易。,
 Cannot cancel {0} {1} because Serial No {2} does not belong to the warehouse {3},无法取消{0} {1}，因为序列号{2}不属于仓库{3},
-Cannot change Attributes after stock transaction. Make a new Item and transfer stock to the new Item,股票交易后不能更改属性。创建一个新项目并将库存转移到新项目,
+Cannot change Attributes after stock transaction. Make a new Item and transfer stock to the new Item,库存交易后不能更改属性。创建一个新项目并将库存转移到新项目,
 Cannot change Fiscal Year Start Date and Fiscal Year End Date once the Fiscal Year is saved.,财年保存后便不能更改财年开始日期和结束日期,
 Cannot change Service Stop Date for item in row {0},无法更改行{0}中项目的服务停止日期,
 Cannot change Variant properties after stock transaction. You will have to make a new Item to do this.,存货业务发生后不能更改变体物料的属性。需要新建新物料。,
@@ -2309,7 +2309,7 @@
 Received,收到,
 Received On,收到的,
 Received Quantity,收到的数量,
-Received Stock Entries,收到的股票条目,
+Received Stock Entries,收到的库存条目,
 Receiver List is empty. Please create Receiver List,接收人列表为空。请创建接收人列表,
 Recipients,收件人,
 Reconcile,核消（对帐）,
@@ -2783,7 +2783,7 @@
 State/UT Tax,州/ UT税,
 Statement of Account,对账单,
 Status must be one of {0},状态必须是{0}中的一个,
-Stock,股票,
+Stock,库存,
 Stock Adjustment,库存调整,
 Stock Analytics,库存分析,
 Stock Assets,库存资产,
@@ -2963,7 +2963,7 @@
 The holiday on {0} is not between From Date and To Date,在{0}这个节日之间没有从日期和结束日期,
 The name of the institute for which you are setting up this system.,对于要为其建立这个系统的该机构的名称。,
 The name of your company for which you are setting up this system.,贵公司的名称,
-The number of shares and the share numbers are inconsistent,股份数量和股票数量不一致,
+The number of shares and the share numbers are inconsistent,股份数量和库存数量不一致,
 The payment gateway account in plan {0} is different from the payment gateway account in this payment request,计划{0}中的支付网关帐户与此付款请求中的支付网关帐户不同,
 The selected BOMs are not for the same item,所选物料清单不能用于同一个物料,
 The selected item cannot have Batch,所选物料不能有批次,
@@ -3514,7 +3514,7 @@
 Ageing Range 4,老化范围4,
 Allocated amount cannot be greater than unadjusted amount,分配的金额不能大于未调整的金额,
 Allocated amount cannot be negative,分配数量不能为负数,
-"Difference Account must be a Asset/Liability type account, since this Stock Entry is an Opening Entry",差异账户必须是资产/负债类型账户，因为此股票分录是开仓分录,
+"Difference Account must be a Asset/Liability type account, since this Stock Entry is an Opening Entry",差异账户必须是资产/负债类型账户，因为此库存分录是开仓分录,
 Error in some rows,某些行出错,
 Import Successful,导入成功,
 Please save first,请先保存,
@@ -3531,7 +3531,7 @@
 Invalid GSTIN! The input you've entered doesn't match the GSTIN format for UIN Holders or Non-Resident OIDAR Service Providers,GSTIN无效！您输入的输入与UIN持有人或非居民OIDAR服务提供商的GSTIN格式不符,
 Invoice Grand Total,发票总计,
 Last carbon check date cannot be a future date,最后的碳检查日期不能是未来的日期,
-Make Stock Entry,进入股票,
+Make Stock Entry,进入库存,
 Quality Feedback,质量反馈,
 Quality Feedback Template,质量反馈模板,
 Rules for applying different promotional schemes.,适用不同促销计划的规则。,
@@ -3626,7 +3626,7 @@
 BOM Comparison Tool,BOM比较工具,
 BOM recursion: {0} cannot be child of {1},BOM递归：{0}不能是{1}的子代,
 BOM recursion: {0} cannot be parent or child of {1},BOM递归：{0}不能是{1}的父级或子级,
-Back to Home,回到家,
+Back to Home,回到主页,
 Back to Messages,回到消息,
 Bank Data mapper doesn't exist,银行数据映射器不存在,
 Bank Details,银行明细,
@@ -3786,7 +3786,7 @@
 Help Article,帮助文章,
 "Helps you keep tracks of Contracts based on Supplier, Customer and Employee",帮助您根据供应商，客户和员工记录合同,
 Helps you manage appointments with your leads,帮助您管理潜在客户的约会,
-Home,家,
+Home,主页,
 IBAN is not valid,IBAN无效,
 Import Data from CSV / Excel files.,从CSV / Excel文件导入数据。,
 In Progress,进行中,
@@ -4064,8 +4064,8 @@
 Status,状态,
 Status must be Cancelled or Completed,状态必须已取消或已完成,
 Stock Balance Report,库存余额报告,
-Stock Entry has been already created against this Pick List,已经根据此选择列表创建了股票输入,
-Stock Ledger ID,股票分类帐编号,
+Stock Entry has been already created against this Pick List,已经根据此选择列表创建了库存输入,
+Stock Ledger ID,库存分类帐编号,
 Stock Value ({0}) and Account Balance ({1}) are out of sync for account {2} and it's linked warehouses.,库存值（{0}）和帐户余额（{1}）与帐户{2}及其链接的仓库不同步。,
 Stores - {0},商店-{0},
 Student with email {0} does not exist,电子邮件{0}的学生不存在,
@@ -6127,7 +6127,7 @@
 Procedure Prescription,程序处方,
 Service Unit,服务单位,
 Consumables,耗材,
-Consume Stock,消费股票,
+Consume Stock,消费库存,
 Invoice Consumables Separately,发票耗材分开,
 Consumption Invoiced,消费发票,
 Consumable Total Amount,耗材总量,
@@ -8285,8 +8285,8 @@
 Warranty Period (Days),保修期限（天数）,
 Serial No Details,序列号信息,
 MAT-STE-.YYYY.-,MAT-STE-.YYYY.-,
-Stock Entry Type,股票进入类型,
-Stock Entry (Outward GIT),股票进入（外向GIT）,
+Stock Entry Type,库存进入类型,
+Stock Entry (Outward GIT),库存进入（外向GIT）,
 Material Consumption for Manufacture,生产所需的材料消耗,
 Repack,包装,
 Send to Subcontractor,发送给分包商,
@@ -8318,8 +8318,8 @@
 BOM No. for a Finished Good Item,成品物料的物料清单编号,
 Material Request used to make this Stock Entry,创建此手工库存移动的材料申请,
 Subcontracted Item,外包物料,
-Against Stock Entry,反对股票进入,
-Stock Entry Child,股票入境儿童,
+Against Stock Entry,反对库存进入,
+Stock Entry Child,库存入境儿童,
 PO Supplied Item,PO提供的物品,
 Reference Purchase Receipt,参考购买收据,
 Stock Ledger Entry,库存分类帐分录,
@@ -8571,7 +8571,7 @@
 Serial No Status,序列号状态,
 Serial No Warranty Expiry,序列号/保修到期,
 Stock Ageing,库存账龄,
-Stock and Account Value Comparison,股票和账户价值比较,
+Stock and Account Value Comparison,库存和账户价值比较,
 Stock Projected Qty,预期可用库存,
 Student and Guardian Contact Details,学生和监护人联系方式,
 Student Batch-Wise Attendance,学生按批考勤,
@@ -9655,7 +9655,7 @@
 Notify by Email on Creation of Automatic Material Request,通过电子邮件通知创建自动物料请求,
 Allow Material Transfer from Delivery Note to Sales Invoice,允许物料从交货单转移到销售发票,
 Allow Material Transfer from Purchase Receipt to Purchase Invoice,允许从收货到采购发票的物料转移,
-Freeze Stocks Older Than (Days),冻结大于（天）的股票,
+Freeze Stocks Older Than (Days),冻结大于（天）的库存,
 Role Allowed to Edit Frozen Stock,允许角色编辑冻结库存,
 The unallocated amount of Payment Entry {0} is greater than the Bank Transaction's unallocated amount,付款条目{0}的未分配金额大于银行交易的未分配金额,
 Payment Received,已收到付款,
@@ -9698,7 +9698,7 @@
 Item {0} {1},项目{0} {1},
 Last Stock Transaction for item {0} under warehouse {1} was on {2}.,仓库{1}下项目{0}的上次库存交易在{2}上。,
 Stock Transactions for Item {0} under warehouse {1} cannot be posted before this time.,在此之前，不能过帐仓库{1}下物料{0}的库存交易。,
-Posting future stock transactions are not allowed due to Immutable Ledger,由于总帐不可变，不允许过帐未来的股票交易,
+Posting future stock transactions are not allowed due to Immutable Ledger,由于总帐不可变，不允许过帐未来的库存交易,
 A BOM with name {0} already exists for item {1}.,项目{1}的名称为{0}的BOM已存在。,
 {0}{1} Did you rename the item? Please contact Administrator / Tech support,{0} {1}您是否重命名了该项目？请联系管理员/技术支持,
 At row #{0}: the sequence id {1} cannot be less than previous row sequence id {2},在第{0}行：序列ID {1}不能小于上一行的序列ID {2},
