Merge branch 'develop' into fix_test_for_pr_tool
diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py
index 6bb4cfc..b556d99 100644
--- a/erpnext/manufacturing/doctype/work_order/test_work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py
@@ -1243,7 +1243,7 @@
 		ste_doc.insert()
 		ste_doc.submit()
 
-		batch_list = [row.batch_no for row in ste_doc.items]
+		batch_list = sorted([row.batch_no for row in ste_doc.items])
 
 		wo_doc = make_wo_order_test_record(production_item=fg_item, qty=4)
 		transferred_ste_doc = frappe.get_doc(
diff --git a/erpnext/startup/boot.py b/erpnext/startup/boot.py
index c3445ab..bb120ea 100644
--- a/erpnext/startup/boot.py
+++ b/erpnext/startup/boot.py
@@ -14,7 +14,6 @@
 	if frappe.session["user"] != "Guest":
 		update_page_info(bootinfo)
 
-		load_country_and_currency(bootinfo)
 		bootinfo.sysdefaults.territory = frappe.db.get_single_value("Selling Settings", "territory")
 		bootinfo.sysdefaults.customer_group = frappe.db.get_single_value(
 			"Selling Settings", "customer_group"
@@ -53,20 +52,6 @@
 		bootinfo.party_account_types = frappe._dict(party_account_types)
 
 
-def load_country_and_currency(bootinfo):
-	country = frappe.db.get_default("country")
-	if country and frappe.db.exists("Country", country):
-		bootinfo.docs += [frappe.get_doc("Country", country)]
-
-	bootinfo.docs += frappe.db.sql(
-		"""select name, fraction, fraction_units,
-		number_format, smallest_currency_fraction_value, symbol from tabCurrency
-		where enabled=1""",
-		as_dict=1,
-		update={"doctype": ":Currency"},
-	)
-
-
 def update_page_info(bootinfo):
 	bootinfo.page_info.update(
 		{
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index fcf0cd1..704e1fc 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -511,6 +511,7 @@
 				and not d.is_fixed_asset
 				and flt(d.qty)
 				and provisional_accounting_for_non_stock_items
+				and d.get("provisional_expense_account")
 			):
 				self.add_provisional_gl_entry(
 					d, gl_entries, self.posting_date, d.get("provisional_expense_account")
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 4b2850e..46a1e70 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -1661,7 +1661,8 @@
 				qty = frappe.utils.ceil(qty)
 
 			if row.batch_details:
-				for batch_no, batch_qty in row.batch_details.items():
+				batches = sorted(row.batch_details.items(), key=lambda x: x[0])
+				for batch_no, batch_qty in batches:
 					if qty <= 0 or batch_qty <= 0:
 						continue