Merge pull request #37838 from ruthra-kumar/pass_limits_to_je_and_pe_queries

refactor: pass limits to JE and PE queries in reconciliation tool
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index b9c7a0b..20444f9 100755
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -718,6 +718,7 @@
 		query = (
 			qb.from_(ple)
 			.select(
+				ple.name,
 				ple.account,
 				ple.voucher_type,
 				ple.voucher_no,
@@ -731,13 +732,15 @@
 				ple.account_currency,
 				ple.amount,
 				ple.amount_in_account_currency,
-				ple.remarks,
 			)
 			.where(ple.delinked == 0)
 			.where(Criterion.all(self.qb_selection_filter))
 			.where(Criterion.any(self.or_filters))
 		)
 
+		if self.filters.get("show_remarks"):
+			query = query.select(ple.remarks)
+
 		if self.filters.get("group_by_party"):
 			query = query.orderby(self.ple.party, self.ple.posting_date)
 		else:
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js
index 37d0659..c0b4f59 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.js
+++ b/erpnext/accounts/report/general_ledger/general_ledger.js
@@ -193,7 +193,13 @@
 			"fieldname": "add_values_in_transaction_currency",
 			"label": __("Add Columns in Transaction Currency"),
 			"fieldtype": "Check"
+		},
+		{
+			"fieldname": "show_remarks",
+			"label": __("Show Remarks"),
+			"fieldtype": "Check"
 		}
+
 	]
 }
 
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index 79bfd78..5e484cf 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -163,6 +163,9 @@
 	select_fields = """, debit, credit, debit_in_account_currency,
 		credit_in_account_currency """
 
+	if filters.get("show_remarks"):
+		select_fields += """,remarks"""
+
 	order_by_statement = "order by posting_date, account, creation"
 
 	if filters.get("include_dimensions"):
@@ -195,7 +198,7 @@
 			voucher_type, voucher_no, {dimension_fields}
 			cost_center, project, {transaction_currency_fields}
 			against_voucher_type, against_voucher, account_currency,
-			remarks, against, is_opening, creation {select_fields}
+			against, is_opening, creation {select_fields}
 		from `tabGL Entry`
 		where company=%(company)s {conditions}
 		{order_by_statement}
@@ -631,8 +634,10 @@
 				"width": 100,
 			},
 			{"label": _("Supplier Invoice No"), "fieldname": "bill_no", "fieldtype": "Data", "width": 100},
-			{"label": _("Remarks"), "fieldname": "remarks", "width": 400},
 		]
 	)
 
+	if filters.get("show_remarks"):
+		columns.extend([{"label": _("Remarks"), "fieldname": "remarks", "width": 400}])
+
 	return columns
diff --git a/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py b/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py
index eac5426..e842d2e 100644
--- a/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py
+++ b/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py
@@ -47,6 +47,7 @@
 	out = []
 	for name, details in gle_map.items():
 		tax_amount, total_amount, grand_total, base_total = 0, 0, 0, 0
+		bill_no, bill_date = "", ""
 		tax_withholding_category = tax_category_map.get(name)
 		rate = tax_rate_map.get(tax_withholding_category)
 
@@ -70,7 +71,10 @@
 			if net_total_map.get(name):
 				if voucher_type == "Journal Entry" and tax_amount and rate:
 					# back calcalute total amount from rate and tax_amount
-					total_amount = grand_total = base_total = tax_amount / (rate / 100)
+					if rate:
+						total_amount = grand_total = base_total = tax_amount / (rate / 100)
+				elif voucher_type == "Purchase Invoice":
+					total_amount, grand_total, base_total, bill_no, bill_date = net_total_map.get(name)
 				else:
 					total_amount, grand_total, base_total = net_total_map.get(name)
 			else:
@@ -96,7 +100,7 @@
 
 			row.update(
 				{
-					"section_code": tax_withholding_category,
+					"section_code": tax_withholding_category or "",
 					"entity_type": party_map.get(party, {}).get(party_type),
 					"rate": rate,
 					"total_amount": total_amount,
@@ -106,10 +110,14 @@
 					"transaction_date": posting_date,
 					"transaction_type": voucher_type,
 					"ref_no": name,
+					"supplier_invoice_no": bill_no,
+					"supplier_invoice_date": bill_date,
 				}
 			)
 			out.append(row)
 
+	out.sort(key=lambda x: x["section_code"])
+
 	return out
 
 
@@ -157,14 +165,14 @@
 def get_columns(filters):
 	pan = "pan" if frappe.db.has_column(filters.party_type, "pan") else "tax_id"
 	columns = [
-		{"label": _(frappe.unscrub(pan)), "fieldname": pan, "fieldtype": "Data", "width": 60},
 		{
-			"label": _(filters.get("party_type")),
-			"fieldname": "party",
-			"fieldtype": "Dynamic Link",
-			"options": "party_type",
-			"width": 180,
+			"label": _("Section Code"),
+			"options": "Tax Withholding Category",
+			"fieldname": "section_code",
+			"fieldtype": "Link",
+			"width": 90,
 		},
+		{"label": _(frappe.unscrub(pan)), "fieldname": pan, "fieldtype": "Data", "width": 60},
 	]
 
 	if filters.naming_series == "Naming Series":
@@ -179,51 +187,60 @@
 
 	columns.extend(
 		[
-			{
-				"label": _("Date of Transaction"),
-				"fieldname": "transaction_date",
-				"fieldtype": "Date",
-				"width": 100,
-			},
-			{
-				"label": _("Section Code"),
-				"options": "Tax Withholding Category",
-				"fieldname": "section_code",
-				"fieldtype": "Link",
-				"width": 90,
-			},
 			{"label": _("Entity Type"), "fieldname": "entity_type", "fieldtype": "Data", "width": 100},
-			{
-				"label": _("Total Amount"),
-				"fieldname": "total_amount",
-				"fieldtype": "Float",
-				"width": 90,
-			},
+		]
+	)
+	if filters.party_type == "Supplier":
+		columns.extend(
+			[
+				{
+					"label": _("Supplier Invoice No"),
+					"fieldname": "supplier_invoice_no",
+					"fieldtype": "Data",
+					"width": 120,
+				},
+				{
+					"label": _("Supplier Invoice Date"),
+					"fieldname": "supplier_invoice_date",
+					"fieldtype": "Date",
+					"width": 120,
+				},
+			]
+		)
+
+	columns.extend(
+		[
 			{
 				"label": _("TDS Rate %") if filters.get("party_type") == "Supplier" else _("TCS Rate %"),
 				"fieldname": "rate",
 				"fieldtype": "Percent",
-				"width": 90,
+				"width": 60,
 			},
 			{
-				"label": _("Tax Amount"),
-				"fieldname": "tax_amount",
+				"label": _("Total Amount"),
+				"fieldname": "total_amount",
 				"fieldtype": "Float",
-				"width": 90,
-			},
-			{
-				"label": _("Grand Total"),
-				"fieldname": "grand_total",
-				"fieldtype": "Float",
-				"width": 90,
+				"width": 120,
 			},
 			{
 				"label": _("Base Total"),
 				"fieldname": "base_total",
 				"fieldtype": "Float",
-				"width": 90,
+				"width": 120,
 			},
-			{"label": _("Transaction Type"), "fieldname": "transaction_type", "width": 100},
+			{
+				"label": _("Tax Amount"),
+				"fieldname": "tax_amount",
+				"fieldtype": "Float",
+				"width": 120,
+			},
+			{
+				"label": _("Grand Total"),
+				"fieldname": "grand_total",
+				"fieldtype": "Float",
+				"width": 120,
+			},
+			{"label": _("Transaction Type"), "fieldname": "transaction_type", "width": 130},
 			{
 				"label": _("Reference No."),
 				"fieldname": "ref_no",
@@ -231,6 +248,12 @@
 				"options": "transaction_type",
 				"width": 180,
 			},
+			{
+				"label": _("Date of Transaction"),
+				"fieldname": "transaction_date",
+				"fieldtype": "Date",
+				"width": 100,
+			},
 		]
 	)
 
@@ -253,27 +276,7 @@
 		"Tax Withholding Account", {"company": filters.get("company")}, pluck="account"
 	)
 
-	query_filters = {
-		"account": ("in", tds_accounts),
-		"posting_date": ("between", [filters.get("from_date"), filters.get("to_date")]),
-		"is_cancelled": 0,
-		"against": ("not in", bank_accounts),
-	}
-
-	party = frappe.get_all(filters.get("party_type"), pluck="name")
-	or_filters.update({"against": ("in", party), "voucher_type": "Journal Entry"})
-
-	if filters.get("party"):
-		del query_filters["account"]
-		del query_filters["against"]
-		or_filters = {"against": filters.get("party"), "party": filters.get("party")}
-
-	tds_docs = frappe.get_all(
-		"GL Entry",
-		filters=query_filters,
-		or_filters=or_filters,
-		fields=["voucher_no", "voucher_type", "against", "party"],
-	)
+	tds_docs = get_tds_docs_query(filters, bank_accounts, tds_accounts).run(as_dict=True)
 
 	for d in tds_docs:
 		if d.voucher_type == "Purchase Invoice":
@@ -309,6 +312,47 @@
 	)
 
 
+def get_tds_docs_query(filters, bank_accounts, tds_accounts):
+	if not tds_accounts:
+		frappe.throw(
+			_("No {0} Accounts found for this company.").format(frappe.bold("Tax Withholding")),
+			title="Accounts Missing Error",
+		)
+	gle = frappe.qb.DocType("GL Entry")
+	query = (
+		frappe.qb.from_(gle)
+		.select("voucher_no", "voucher_type", "against", "party")
+		.where((gle.is_cancelled == 0))
+	)
+
+	if filters.get("from_date"):
+		query = query.where(gle.posting_date >= filters.get("from_date"))
+	if filters.get("to_date"):
+		query = query.where(gle.posting_date <= filters.get("to_date"))
+
+	if bank_accounts:
+		query = query.where(gle.against.notin(bank_accounts))
+
+	if filters.get("party"):
+		party = [filters.get("party")]
+		query = query.where(
+			((gle.account.isin(tds_accounts) & gle.against.isin(party)))
+			| ((gle.voucher_type == "Journal Entry") & (gle.party == filters.get("party")))
+			| gle.party.isin(party)
+		)
+	else:
+		party = frappe.get_all(filters.get("party_type"), pluck="name")
+		query = query.where(
+			((gle.account.isin(tds_accounts) & gle.against.isin(party)))
+			| (
+				(gle.voucher_type == "Journal Entry")
+				& ((gle.party_type == filters.get("party_type")) | (gle.party_type == ""))
+			)
+			| gle.party.isin(party)
+		)
+	return query
+
+
 def get_journal_entry_party_map(journal_entries):
 	journal_entry_party_map = {}
 	for d in frappe.db.get_all(
@@ -335,6 +379,8 @@
 			"base_tax_withholding_net_total",
 			"grand_total",
 			"base_total",
+			"bill_no",
+			"bill_date",
 		],
 		"Sales Invoice": ["base_net_total", "grand_total", "base_total"],
 		"Payment Entry": [
@@ -353,7 +399,13 @@
 	for entry in entries:
 		tax_category_map.update({entry.name: entry.tax_withholding_category})
 		if doctype == "Purchase Invoice":
-			value = [entry.base_tax_withholding_net_total, entry.grand_total, entry.base_total]
+			value = [
+				entry.base_tax_withholding_net_total,
+				entry.grand_total,
+				entry.base_total,
+				entry.bill_no,
+				entry.bill_date,
+			]
 		elif doctype == "Sales Invoice":
 			value = [entry.base_net_total, entry.grand_total, entry.base_total]
 		elif doctype == "Payment Entry":
diff --git a/erpnext/assets/doctype/asset_maintenance/test_asset_maintenance.py b/erpnext/assets/doctype/asset_maintenance/test_asset_maintenance.py
index 23088c9..a33acfd 100644
--- a/erpnext/assets/doctype/asset_maintenance/test_asset_maintenance.py
+++ b/erpnext/assets/doctype/asset_maintenance/test_asset_maintenance.py
@@ -13,25 +13,22 @@
 class TestAssetMaintenance(unittest.TestCase):
 	def setUp(self):
 		set_depreciation_settings_in_company()
-		create_asset_data()
-		create_maintenance_team()
-
-	def test_create_asset_maintenance(self):
-		pr = make_purchase_receipt(
+		self.pr = make_purchase_receipt(
 			item_code="Photocopier", qty=1, rate=100000.0, location="Test Location"
 		)
+		self.asset_name = frappe.db.get_value("Asset", {"purchase_receipt": self.pr.name}, "name")
+		self.asset_doc = frappe.get_doc("Asset", self.asset_name)
 
-		asset_name = frappe.db.get_value("Asset", {"purchase_receipt": pr.name}, "name")
-		asset_doc = frappe.get_doc("Asset", asset_name)
+	def test_create_asset_maintenance_with_log(self):
 		month_end_date = get_last_day(nowdate())
 
 		purchase_date = nowdate() if nowdate() != month_end_date else add_days(nowdate(), -15)
 
-		asset_doc.available_for_use_date = purchase_date
-		asset_doc.purchase_date = purchase_date
+		self.asset_doc.available_for_use_date = purchase_date
+		self.asset_doc.purchase_date = purchase_date
 
-		asset_doc.calculate_depreciation = 1
-		asset_doc.append(
+		self.asset_doc.calculate_depreciation = 1
+		self.asset_doc.append(
 			"finance_books",
 			{
 				"expected_value_after_useful_life": 200,
@@ -42,97 +39,40 @@
 			},
 		)
 
-		asset_doc.save()
+		self.asset_doc.save()
 
-		if not frappe.db.exists("Asset Maintenance", "Photocopier"):
-			asset_maintenance = frappe.get_doc(
-				{
-					"doctype": "Asset Maintenance",
-					"asset_name": "Photocopier",
-					"maintenance_team": "Team Awesome",
-					"company": "_Test Company",
-					"asset_maintenance_tasks": get_maintenance_tasks(),
-				}
-			).insert()
+		asset_maintenance = frappe.get_doc(
+			{
+				"doctype": "Asset Maintenance",
+				"asset_name": self.asset_name,
+				"maintenance_team": "Team Awesome",
+				"company": "_Test Company",
+				"asset_maintenance_tasks": get_maintenance_tasks(),
+			}
+		).insert()
 
-			next_due_date = calculate_next_due_date(nowdate(), "Monthly")
-			self.assertEqual(asset_maintenance.asset_maintenance_tasks[0].next_due_date, next_due_date)
-
-	def test_create_asset_maintenance_log(self):
-		if not frappe.db.exists("Asset Maintenance Log", "Photocopier"):
-			asset_maintenance_log = frappe.get_doc(
-				{
-					"doctype": "Asset Maintenance Log",
-					"asset_maintenance": "Photocopier",
-					"task": "Change Oil",
-					"completion_date": add_days(nowdate(), 2),
-					"maintenance_status": "Completed",
-				}
-			).insert()
-		asset_maintenance = frappe.get_doc("Asset Maintenance", "Photocopier")
-		next_due_date = calculate_next_due_date(asset_maintenance_log.completion_date, "Monthly")
+		next_due_date = calculate_next_due_date(nowdate(), "Monthly")
 		self.assertEqual(asset_maintenance.asset_maintenance_tasks[0].next_due_date, next_due_date)
 
+		asset_maintenance_log = frappe.db.get_value(
+			"Asset Maintenance Log",
+			{"asset_maintenance": asset_maintenance.name, "task_name": "Change Oil"},
+			"name",
+		)
 
-def create_asset_data():
-	if not frappe.db.exists("Asset Category", "Equipment"):
-		create_asset_category()
-
-	if not frappe.db.exists("Location", "Test Location"):
-		frappe.get_doc({"doctype": "Location", "location_name": "Test Location"}).insert()
-
-	if not frappe.db.exists("Item", "Photocopier"):
-		meta = frappe.get_meta("Asset")
-		naming_series = meta.get_field("naming_series").options
-		frappe.get_doc(
+		asset_maintenance_log_doc = frappe.get_doc("Asset Maintenance Log", asset_maintenance_log)
+		asset_maintenance_log_doc.update(
 			{
-				"doctype": "Item",
-				"item_code": "Photocopier",
-				"item_name": "Photocopier",
-				"item_group": "All Item Groups",
-				"company": "_Test Company",
-				"is_fixed_asset": 1,
-				"is_stock_item": 0,
-				"asset_category": "Equipment",
-				"auto_create_assets": 1,
-				"asset_naming_series": naming_series,
+				"completion_date": add_days(nowdate(), 2),
+				"maintenance_status": "Completed",
 			}
-		).insert()
+		)
 
+		asset_maintenance_log_doc.save()
+		next_due_date = calculate_next_due_date(asset_maintenance_log_doc.completion_date, "Monthly")
 
-def create_maintenance_team():
-	user_list = ["marcus@abc.com", "thalia@abc.com", "mathias@abc.com"]
-	if not frappe.db.exists("Role", "Technician"):
-		frappe.get_doc({"doctype": "Role", "role_name": "Technician"}).insert()
-	for user in user_list:
-		if not frappe.db.get_value("User", user):
-			frappe.get_doc(
-				{
-					"doctype": "User",
-					"email": user,
-					"first_name": user,
-					"new_password": "password",
-					"roles": [{"doctype": "Has Role", "role": "Technician"}],
-				}
-			).insert()
-
-	if not frappe.db.exists("Asset Maintenance Team", "Team Awesome"):
-		frappe.get_doc(
-			{
-				"doctype": "Asset Maintenance Team",
-				"maintenance_manager": "marcus@abc.com",
-				"maintenance_team_name": "Team Awesome",
-				"company": "_Test Company",
-				"maintenance_team_members": get_maintenance_team(user_list),
-			}
-		).insert()
-
-
-def get_maintenance_team(user_list):
-	return [
-		{"team_member": user, "full_name": user, "maintenance_role": "Technician"}
-		for user in user_list[1:]
-	]
+		asset_maintenance.reload()
+		self.assertEqual(asset_maintenance.asset_maintenance_tasks[0].next_due_date, next_due_date)
 
 
 def get_maintenance_tasks():
@@ -156,23 +96,6 @@
 	]
 
 
-def create_asset_category():
-	asset_category = frappe.new_doc("Asset Category")
-	asset_category.asset_category_name = "Equipment"
-	asset_category.total_number_of_depreciations = 3
-	asset_category.frequency_of_depreciation = 3
-	asset_category.append(
-		"accounts",
-		{
-			"company_name": "_Test Company",
-			"fixed_asset_account": "_Test Fixed Asset - _TC",
-			"accumulated_depreciation_account": "_Test Accumulated Depreciations - _TC",
-			"depreciation_expense_account": "_Test Depreciations - _TC",
-		},
-	)
-	asset_category.insert()
-
-
 def set_depreciation_settings_in_company():
 	company = frappe.get_doc("Company", "_Test Company")
 	company.accumulated_depreciation_account = "_Test Accumulated Depreciations - _TC"
diff --git a/erpnext/assets/doctype/asset_maintenance/test_records.json b/erpnext/assets/doctype/asset_maintenance/test_records.json
new file mode 100644
index 0000000..8306fad
--- /dev/null
+++ b/erpnext/assets/doctype/asset_maintenance/test_records.json
@@ -0,0 +1,68 @@
+[
+  {
+     "doctype": "Asset Category",
+     "asset_category_name": "Equipment",
+     "total_number_of_depreciations": 3,
+     "frequency_of_depreciation": 3,
+     "accounts": [
+        {
+	  "company_name": "_Test Company",
+	  "fixed_asset_account": "_Test Fixed Asset - _TC",
+	  "accumulated_depreciation_account": "_Test Accumulated Depreciations - _TC",
+	  "depreciation_expense_account": "_Test Depreciations - _TC"
+	}
+     ]
+  },
+  {
+     "doctype": "Location",
+     "location_name": "Test Location"
+  },
+  {
+     "doctype": "Role",
+     "role_name": "Technician"
+  },
+  {
+    "doctype": "User",
+    "email": "marcus@abc.com",
+    "first_name": "marcus@abc.com",
+    "new_password": "password",
+    "roles": [{"doctype": "Has Role", "role": "Technician"}]
+  },
+  {
+    "doctype": "User",
+    "email": "thalia@abc.com",
+    "first_name": "thalia@abc.com",
+    "new_password": "password",
+    "roles": [{"doctype": "Has Role", "role": "Technician"}]
+  },
+  {
+    "doctype": "User",
+    "email": "mathias@abc.com",
+    "first_name": "mathias@abc.com",
+    "new_password": "password",
+    "roles": [{"doctype": "Has Role", "role": "Technician"}]
+  },
+  {
+    "doctype": "Asset Maintenance Team",
+    "maintenance_manager": "marcus@abc.com",
+    "maintenance_team_name": "Team Awesome",
+    "company": "_Test Company",
+    "maintenance_team_members": [
+      {"team_member": "marcus@abc.com", "full_name": "marcus@abc.com", "maintenance_role": "Technician"},
+      {"team_member": "thalia@abc.com", "full_name": "thalia@abc.com", "maintenance_role": "Technician"},
+      {"team_member": "mathias@abc.com", "full_name": "mathias@abc.com", "maintenance_role": "Technician"}
+    ]
+  },
+  {
+    "doctype": "Item",
+    "item_code": "Photocopier",
+    "item_name": "Photocopier",
+    "item_group": "All Item Groups",
+    "company": "_Test Company",
+    "is_fixed_asset": 1,
+    "is_stock_item": 0,
+    "asset_category": "Equipment",
+    "auto_create_assets": 1,
+    "asset_naming_series": "ABC.###"
+  }
+]
diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json
index f37db5f..60dd54c 100644
--- a/erpnext/buying/doctype/supplier/supplier.json
+++ b/erpnext/buying/doctype/supplier/supplier.json
@@ -174,7 +174,7 @@
    "fieldname": "supplier_type",
    "fieldtype": "Select",
    "label": "Supplier Type",
-   "options": "Company\nIndividual",
+   "options": "Company\nIndividual\nProprietorship\nPartnership",
    "reqd": 1
   },
   {
@@ -485,7 +485,7 @@
    "link_fieldname": "party"
   }
  ],
- "modified": "2023-09-25 12:48:21.869563",
+ "modified": "2023-10-19 16:55:15.148325",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Supplier",
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index 73a248f..d09001c 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -47,15 +47,15 @@
 		],
 		[
 			"To Bill",
-			"eval:(self.per_delivered == 100 or self.skip_delivery_note) and self.per_billed < 100 and self.docstatus == 1",
+			"eval:(self.per_delivered >= 100 or self.skip_delivery_note) and self.per_billed < 100 and self.docstatus == 1",
 		],
 		[
 			"To Deliver",
-			"eval:self.per_delivered < 100 and self.per_billed == 100 and self.docstatus == 1 and not self.skip_delivery_note",
+			"eval:self.per_delivered < 100 and self.per_billed >= 100 and self.docstatus == 1 and not self.skip_delivery_note",
 		],
 		[
 			"Completed",
-			"eval:(self.per_delivered == 100 or self.skip_delivery_note) and self.per_billed == 100 and self.docstatus == 1",
+			"eval:(self.per_delivered >= 100 or self.skip_delivery_note) and self.per_billed >= 100 and self.docstatus == 1",
 		],
 		["Cancelled", "eval:self.docstatus==2"],
 		["Closed", "eval:self.status=='Closed' and self.docstatus != 2"],
diff --git a/erpnext/erpnext_integrations/workspace/erpnext_integrations/erpnext_integrations.json b/erpnext/erpnext_integrations/workspace/erpnext_integrations/erpnext_integrations.json
index 510317f..dfef223 100644
--- a/erpnext/erpnext_integrations/workspace/erpnext_integrations/erpnext_integrations.json
+++ b/erpnext/erpnext_integrations/workspace/erpnext_integrations/erpnext_integrations.json
@@ -195,26 +195,6 @@
   {
    "hidden": 0,
    "is_query_report": 0,
-   "label": "GoCardless Settings",
-   "link_count": 0,
-   "link_to": "GoCardless Settings",
-   "link_type": "DocType",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
-   "hidden": 0,
-   "is_query_report": 0,
-   "label": "Mpesa Settings",
-   "link_count": 0,
-   "link_to": "Mpesa Settings",
-   "link_type": "DocType",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
-   "hidden": 0,
-   "is_query_report": 0,
    "label": "Plaid Settings",
    "link_count": 0,
    "link_to": "Plaid Settings",
@@ -223,7 +203,7 @@
    "type": "Link"
   }
  ],
- "modified": "2023-08-29 15:48:59.010704",
+ "modified": "2023-10-31 19:57:32.748726",
  "modified_by": "Administrator",
  "module": "ERPNext Integrations",
  "name": "ERPNext Integrations",
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py
index ddd9375..1850d1e 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.py
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py
@@ -1735,7 +1735,10 @@
 			if not item.conversion_factor and item.purchase_uom:
 				item.conversion_factor = get_uom_conversion_factor(item.item_code, item.purchase_uom)
 
-			item_details.setdefault(item.get("item_code"), item)
+			if details := item_details.get(item.get("item_code")):
+				details.qty += item.get("qty")
+			else:
+				item_details.setdefault(item.get("item_code"), item)
 
 	return item_details
 
diff --git a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
index 6ab9232..d414988 100644
--- a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
+++ b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
@@ -1332,6 +1332,33 @@
 				self.assertTrue(row.warehouse == mrp_warhouse)
 				self.assertEqual(row.quantity, 12)
 
+	def test_mr_qty_for_same_rm_with_different_sub_assemblies(self):
+		from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom
+
+		bom_tree = {
+			"Fininshed Goods2 For SUB Test": {
+				"SubAssembly2 For SUB Test": {"ChildPart2 For SUB Test": {}},
+				"SubAssembly3 For SUB Test": {"ChildPart2 For SUB Test": {}},
+			}
+		}
+
+		parent_bom = create_nested_bom(bom_tree, prefix="")
+		plan = create_production_plan(
+			item_code=parent_bom.item,
+			planned_qty=1,
+			ignore_existing_ordered_qty=1,
+			do_not_submit=1,
+			skip_available_sub_assembly_item=1,
+			warehouse="_Test Warehouse - _TC",
+		)
+
+		plan.get_sub_assembly_items()
+		plan.make_material_request()
+
+		for row in plan.mr_items:
+			if row.item_code == "ChildPart2 For SUB Test":
+				self.assertEqual(row.quantity, 2)
+
 
 def create_production_plan(**args):
 	"""
diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py
index c828c87..0ae7657 100644
--- a/erpnext/manufacturing/doctype/work_order/test_work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py
@@ -494,6 +494,7 @@
 						"from_time": row.from_time,
 						"to_time": row.to_time,
 						"time_in_mins": row.time_in_mins,
+						"completed_qty": 0,
 					},
 				)
 
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index d7f33ad..78d2c2c 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -343,5 +343,7 @@
 erpnext.patches.v15_0.update_sre_from_voucher_details
 erpnext.patches.v14_0.rename_over_order_allowance_field
 erpnext.patches.v14_0.migrate_delivery_stop_lock_field
+execute:frappe.db.set_single_value("Payment Reconciliation", "invoice_limit", 50)
+execute:frappe.db.set_single_value("Payment Reconciliation", "payment_limit", 50)
 # below migration patch should always run last
 erpnext.patches.v14_0.migrate_gl_to_payment_ledger
diff --git a/erpnext/projects/report/billing_summary.py b/erpnext/projects/report/billing_summary.py
deleted file mode 100644
index ac1524a..0000000
--- a/erpnext/projects/report/billing_summary.py
+++ /dev/null
@@ -1,155 +0,0 @@
-# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
-# For license information, please see license.txt
-
-
-import frappe
-from frappe import _
-from frappe.utils import flt, time_diff_in_hours
-
-
-def get_columns():
-	return [
-		{
-			"label": _("Employee ID"),
-			"fieldtype": "Link",
-			"fieldname": "employee",
-			"options": "Employee",
-			"width": 300,
-		},
-		{
-			"label": _("Employee Name"),
-			"fieldtype": "data",
-			"fieldname": "employee_name",
-			"hidden": 1,
-			"width": 200,
-		},
-		{
-			"label": _("Timesheet"),
-			"fieldtype": "Link",
-			"fieldname": "timesheet",
-			"options": "Timesheet",
-			"width": 150,
-		},
-		{"label": _("Working Hours"), "fieldtype": "Float", "fieldname": "total_hours", "width": 150},
-		{
-			"label": _("Billable Hours"),
-			"fieldtype": "Float",
-			"fieldname": "total_billable_hours",
-			"width": 150,
-		},
-		{"label": _("Billing Amount"), "fieldtype": "Currency", "fieldname": "amount", "width": 150},
-	]
-
-
-def get_data(filters):
-	data = []
-	if filters.from_date > filters.to_date:
-		frappe.msgprint(_("From Date can not be greater than To Date"))
-		return data
-
-	timesheets = get_timesheets(filters)
-
-	filters.from_date = frappe.utils.get_datetime(filters.from_date)
-	filters.to_date = frappe.utils.add_to_date(
-		frappe.utils.get_datetime(filters.to_date), days=1, seconds=-1
-	)
-
-	timesheet_details = get_timesheet_details(filters, timesheets.keys())
-
-	for ts, ts_details in timesheet_details.items():
-		total_hours = 0
-		total_billing_hours = 0
-		total_amount = 0
-
-		for row in ts_details:
-			from_time, to_time = filters.from_date, filters.to_date
-
-			if row.to_time < from_time or row.from_time > to_time:
-				continue
-
-			if row.from_time > from_time:
-				from_time = row.from_time
-
-			if row.to_time < to_time:
-				to_time = row.to_time
-
-			activity_duration, billing_duration = get_billable_and_total_duration(row, from_time, to_time)
-
-			total_hours += activity_duration
-			total_billing_hours += billing_duration
-			total_amount += billing_duration * flt(row.billing_rate)
-
-		if total_hours:
-			data.append(
-				{
-					"employee": timesheets.get(ts).employee,
-					"employee_name": timesheets.get(ts).employee_name,
-					"timesheet": ts,
-					"total_billable_hours": total_billing_hours,
-					"total_hours": total_hours,
-					"amount": total_amount,
-				}
-			)
-
-	return data
-
-
-def get_timesheets(filters):
-	record_filters = [
-		["start_date", "<=", filters.to_date],
-		["end_date", ">=", filters.from_date],
-	]
-	if not filters.get("include_draft_timesheets"):
-		record_filters.append(["docstatus", "=", 1])
-	else:
-		record_filters.append(["docstatus", "!=", 2])
-	if "employee" in filters:
-		record_filters.append(["employee", "=", filters.employee])
-
-	timesheets = frappe.get_all(
-		"Timesheet", filters=record_filters, fields=["employee", "employee_name", "name"]
-	)
-	timesheet_map = frappe._dict()
-	for d in timesheets:
-		timesheet_map.setdefault(d.name, d)
-
-	return timesheet_map
-
-
-def get_timesheet_details(filters, timesheet_list):
-	timesheet_details_filter = {"parent": ["in", timesheet_list]}
-
-	if "project" in filters:
-		timesheet_details_filter["project"] = filters.project
-
-	timesheet_details = frappe.get_all(
-		"Timesheet Detail",
-		filters=timesheet_details_filter,
-		fields=[
-			"from_time",
-			"to_time",
-			"hours",
-			"is_billable",
-			"billing_hours",
-			"billing_rate",
-			"parent",
-		],
-	)
-
-	timesheet_details_map = frappe._dict()
-	for d in timesheet_details:
-		timesheet_details_map.setdefault(d.parent, []).append(d)
-
-	return timesheet_details_map
-
-
-def get_billable_and_total_duration(activity, start_time, end_time):
-	precision = frappe.get_precision("Timesheet Detail", "hours")
-	activity_duration = time_diff_in_hours(end_time, start_time)
-	billing_duration = 0.0
-	if activity.is_billable:
-		billing_duration = activity.billing_hours
-		if activity_duration != activity.billing_hours:
-			billing_duration = activity_duration * activity.billing_hours / activity.hours
-
-	return flt(activity_duration, precision), flt(billing_duration, precision)
diff --git a/erpnext/projects/report/employee_billing_summary/__init__.py b/erpnext/projects/report/employee_billing_summary/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/projects/report/employee_billing_summary/__init__.py
+++ /dev/null
diff --git a/erpnext/projects/report/employee_billing_summary/employee_billing_summary.js b/erpnext/projects/report/employee_billing_summary/employee_billing_summary.js
deleted file mode 100644
index 2c25465..0000000
--- a/erpnext/projects/report/employee_billing_summary/employee_billing_summary.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-
-
-frappe.query_reports["Employee Billing Summary"] = {
-	"filters": [
-		{
-			fieldname: "employee",
-			label: __("Employee"),
-			fieldtype: "Link",
-			options: "Employee",
-			reqd: 1
-		},
-		{
-			fieldname:"from_date",
-			label: __("From Date"),
-			fieldtype: "Date",
-			default: frappe.datetime.add_months(frappe.datetime.month_start(), -1),
-			reqd: 1
-		},
-		{
-			fieldname:"to_date",
-			label: __("To Date"),
-			fieldtype: "Date",
-			default: frappe.datetime.add_days(frappe.datetime.month_start(), -1),
-			reqd: 1
-		},
-		{
-			fieldname:"include_draft_timesheets",
-			label: __("Include Timesheets in Draft Status"),
-			fieldtype: "Check",
-		},
-	]
-}
diff --git a/erpnext/projects/report/employee_billing_summary/employee_billing_summary.py b/erpnext/projects/report/employee_billing_summary/employee_billing_summary.py
deleted file mode 100644
index a2f7378..0000000
--- a/erpnext/projects/report/employee_billing_summary/employee_billing_summary.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
-# For license information, please see license.txt
-
-
-import frappe
-
-from erpnext.projects.report.billing_summary import get_columns, get_data
-
-
-def execute(filters=None):
-	filters = frappe._dict(filters or {})
-	columns = get_columns()
-
-	data = get_data(filters)
-	return columns, data
diff --git a/erpnext/projects/report/project_billing_summary/project_billing_summary.js b/erpnext/projects/report/project_billing_summary/project_billing_summary.js
deleted file mode 100644
index fce0c68..0000000
--- a/erpnext/projects/report/project_billing_summary/project_billing_summary.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-
-
-frappe.query_reports["Project Billing Summary"] = {
-	"filters": [
-		{
-			fieldname: "project",
-			label: __("Project"),
-			fieldtype: "Link",
-			options: "Project",
-			reqd: 1
-		},
-		{
-			fieldname:"from_date",
-			label: __("From Date"),
-			fieldtype: "Date",
-			default: frappe.datetime.add_months(frappe.datetime.month_start(), -1),
-			reqd: 1
-		},
-		{
-			fieldname:"to_date",
-			label: __("To Date"),
-			fieldtype: "Date",
-			default: frappe.datetime.add_days(frappe.datetime.month_start(),-1),
-			reqd: 1
-		},
-		{
-			fieldname:"include_draft_timesheets",
-			label: __("Include Timesheets in Draft Status"),
-			fieldtype: "Check",
-		},
-	]
-}
diff --git a/erpnext/projects/report/project_billing_summary/project_billing_summary.json b/erpnext/projects/report/project_billing_summary/project_billing_summary.json
deleted file mode 100644
index 817d0cd..0000000
--- a/erpnext/projects/report/project_billing_summary/project_billing_summary.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "add_total_row": 1,
- "creation": "2019-03-11 16:22:39.460524",
- "disable_prepared_report": 0,
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Report",
- "idx": 0,
- "is_standard": "Yes",
- "modified": "2019-06-13 15:54:55.255947",
- "modified_by": "Administrator",
- "module": "Projects",
- "name": "Project Billing Summary",
- "owner": "Administrator",
- "prepared_report": 0,
- "ref_doctype": "Timesheet",
- "report_name": "Project Billing Summary",
- "report_type": "Script Report",
- "roles": [
-  {
-   "role": "Projects User"
-  },
-  {
-   "role": "HR User"
-  },
-  {
-   "role": "Manufacturing User"
-  },
-  {
-   "role": "Employee"
-  },
-  {
-   "role": "Accounts User"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/projects/report/project_billing_summary/project_billing_summary.py b/erpnext/projects/report/project_billing_summary/project_billing_summary.py
deleted file mode 100644
index a2f7378..0000000
--- a/erpnext/projects/report/project_billing_summary/project_billing_summary.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
-# For license information, please see license.txt
-
-
-import frappe
-
-from erpnext.projects.report.billing_summary import get_columns, get_data
-
-
-def execute(filters=None):
-	filters = frappe._dict(filters or {})
-	columns = get_columns()
-
-	data = get_data(filters)
-	return columns, data
diff --git a/erpnext/projects/report/project_billing_summary/__init__.py b/erpnext/projects/report/timesheet_billing_summary/__init__.py
similarity index 100%
rename from erpnext/projects/report/project_billing_summary/__init__.py
rename to erpnext/projects/report/timesheet_billing_summary/__init__.py
diff --git a/erpnext/projects/report/timesheet_billing_summary/timesheet_billing_summary.js b/erpnext/projects/report/timesheet_billing_summary/timesheet_billing_summary.js
new file mode 100644
index 0000000..1efd0c6
--- /dev/null
+++ b/erpnext/projects/report/timesheet_billing_summary/timesheet_billing_summary.js
@@ -0,0 +1,67 @@
+// Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.query_reports["Timesheet Billing Summary"] = {
+	tree: true,
+	initial_depth: 0,
+	filters: [
+		{
+			fieldname: "employee",
+			label: __("Employee"),
+			fieldtype: "Link",
+			options: "Employee",
+			on_change: function (report) {
+				unset_group_by(report, "employee");
+			},
+		},
+		{
+			fieldname: "project",
+			label: __("Project"),
+			fieldtype: "Link",
+			options: "Project",
+			on_change: function (report) {
+				unset_group_by(report, "project");
+			},
+		},
+		{
+			fieldname: "from_date",
+			label: __("From Date"),
+			fieldtype: "Date",
+			default: frappe.datetime.add_months(
+				frappe.datetime.month_start(),
+				-1
+			),
+		},
+		{
+			fieldname: "to_date",
+			label: __("To Date"),
+			fieldtype: "Date",
+			default: frappe.datetime.add_days(
+				frappe.datetime.month_start(),
+				-1
+			),
+		},
+		{  // NOTE: `update_group_by_options` expects this filter to be the fifth in the list
+			fieldname: "group_by",
+			label: __("Group By"),
+			fieldtype: "Select",
+			options: [
+				"",
+				{ value: "employee", label: __("Employee") },
+				{ value: "project", label: __("Project") },
+				{ value: "date", label: __("Start Date") },
+			],
+		},
+		{
+			fieldname: "include_draft_timesheets",
+			label: __("Include Timesheets in Draft Status"),
+			fieldtype: "Check",
+		},
+	],
+};
+
+function unset_group_by(report, fieldname) {
+	if (report.get_filter_value(fieldname) && report.get_filter_value("group_by") == fieldname) {
+		report.set_filter_value("group_by", "");
+	}
+}
diff --git a/erpnext/projects/report/employee_billing_summary/employee_billing_summary.json b/erpnext/projects/report/timesheet_billing_summary/timesheet_billing_summary.json
similarity index 61%
rename from erpnext/projects/report/employee_billing_summary/employee_billing_summary.json
rename to erpnext/projects/report/timesheet_billing_summary/timesheet_billing_summary.json
index e5626a0..0f070cb 100644
--- a/erpnext/projects/report/employee_billing_summary/employee_billing_summary.json
+++ b/erpnext/projects/report/timesheet_billing_summary/timesheet_billing_summary.json
@@ -1,36 +1,42 @@
 {
  "add_total_row": 1,
- "creation": "2019-03-08 15:08:19.929728",
- "disable_prepared_report": 0,
+ "columns": [],
+ "creation": "2023-10-10 23:53:43.692067",
  "disabled": 0,
  "docstatus": 0,
  "doctype": "Report",
+ "filters": [],
  "idx": 0,
  "is_standard": "Yes",
- "modified": "2019-06-13 15:54:49.213973",
+ "letter_head": "ALYF GmbH",
+ "letterhead": null,
+ "modified": "2023-10-11 00:58:30.639078",
  "modified_by": "Administrator",
  "module": "Projects",
- "name": "Employee Billing Summary",
+ "name": "Timesheet Billing Summary",
  "owner": "Administrator",
  "prepared_report": 0,
  "ref_doctype": "Timesheet",
- "report_name": "Employee Billing Summary",
+ "report_name": "Timesheet Billing Summary",
  "report_type": "Script Report",
  "roles": [
   {
    "role": "Projects User"
   },
   {
-   "role": "HR User"
+   "role": "Employee"
+  },
+  {
+   "role": "Accounts User"
   },
   {
    "role": "Manufacturing User"
   },
   {
-   "role": "Employee"
+   "role": "HR User"
   },
   {
-   "role": "Accounts User"
+   "role": "Employee Self Service"
   }
  ]
 }
\ No newline at end of file
diff --git a/erpnext/projects/report/timesheet_billing_summary/timesheet_billing_summary.py b/erpnext/projects/report/timesheet_billing_summary/timesheet_billing_summary.py
new file mode 100644
index 0000000..a6e7150
--- /dev/null
+++ b/erpnext/projects/report/timesheet_billing_summary/timesheet_billing_summary.py
@@ -0,0 +1,146 @@
+import frappe
+from frappe import _
+from frappe.model.docstatus import DocStatus
+
+
+def execute(filters=None):
+	group_fieldname = filters.pop("group_by", None)
+
+	filters = frappe._dict(filters or {})
+	columns = get_columns(filters, group_fieldname)
+
+	data = get_data(filters, group_fieldname)
+	return columns, data
+
+
+def get_columns(filters, group_fieldname=None):
+	group_columns = {
+		"date": {
+			"label": _("Date"),
+			"fieldtype": "Date",
+			"fieldname": "date",
+			"width": 150,
+		},
+		"project": {
+			"label": _("Project"),
+			"fieldtype": "Link",
+			"fieldname": "project",
+			"options": "Project",
+			"width": 200,
+			"hidden": int(bool(filters.get("project"))),
+		},
+		"employee": {
+			"label": _("Employee ID"),
+			"fieldtype": "Link",
+			"fieldname": "employee",
+			"options": "Employee",
+			"width": 200,
+			"hidden": int(bool(filters.get("employee"))),
+		},
+	}
+	columns = []
+	if group_fieldname:
+		columns.append(group_columns.get(group_fieldname))
+		columns.extend(
+			column for column in group_columns.values() if column.get("fieldname") != group_fieldname
+		)
+	else:
+		columns.extend(group_columns.values())
+
+	columns.extend(
+		[
+			{
+				"label": _("Employee Name"),
+				"fieldtype": "data",
+				"fieldname": "employee_name",
+				"hidden": 1,
+			},
+			{
+				"label": _("Timesheet"),
+				"fieldtype": "Link",
+				"fieldname": "timesheet",
+				"options": "Timesheet",
+				"width": 150,
+			},
+			{"label": _("Working Hours"), "fieldtype": "Float", "fieldname": "hours", "width": 150},
+			{
+				"label": _("Billing Hours"),
+				"fieldtype": "Float",
+				"fieldname": "billing_hours",
+				"width": 150,
+			},
+			{
+				"label": _("Billing Amount"),
+				"fieldtype": "Currency",
+				"fieldname": "billing_amount",
+				"width": 150,
+			},
+		]
+	)
+
+	return columns
+
+
+def get_data(filters, group_fieldname=None):
+	_filters = []
+	if filters.get("employee"):
+		_filters.append(("employee", "=", filters.get("employee")))
+	if filters.get("project"):
+		_filters.append(("Timesheet Detail", "project", "=", filters.get("project")))
+	if filters.get("from_date"):
+		_filters.append(("Timesheet Detail", "from_time", ">=", filters.get("from_date")))
+	if filters.get("to_date"):
+		_filters.append(("Timesheet Detail", "to_time", "<=", filters.get("to_date")))
+	if not filters.get("include_draft_timesheets"):
+		_filters.append(("docstatus", "=", DocStatus.submitted()))
+	else:
+		_filters.append(("docstatus", "in", (DocStatus.submitted(), DocStatus.draft())))
+
+	data = frappe.get_list(
+		"Timesheet",
+		fields=[
+			"name as timesheet",
+			"`tabTimesheet`.employee",
+			"`tabTimesheet`.employee_name",
+			"`tabTimesheet Detail`.from_time as date",
+			"`tabTimesheet Detail`.project",
+			"`tabTimesheet Detail`.hours",
+			"`tabTimesheet Detail`.billing_hours",
+			"`tabTimesheet Detail`.billing_amount",
+		],
+		filters=_filters,
+		order_by="`tabTimesheet Detail`.from_time",
+	)
+
+	return group_by(data, group_fieldname) if group_fieldname else data
+
+
+def group_by(data, fieldname):
+	groups = {row.get(fieldname) for row in data}
+	grouped_data = []
+	for group in sorted(groups):
+		group_row = {
+			fieldname: group,
+			"hours": sum(row.get("hours") for row in data if row.get(fieldname) == group),
+			"billing_hours": sum(row.get("billing_hours") for row in data if row.get(fieldname) == group),
+			"billing_amount": sum(row.get("billing_amount") for row in data if row.get(fieldname) == group),
+			"indent": 0,
+			"is_group": 1,
+		}
+		if fieldname == "employee":
+			group_row["employee_name"] = next(
+				row.get("employee_name") for row in data if row.get(fieldname) == group
+			)
+
+		grouped_data.append(group_row)
+		for row in data:
+			if row.get(fieldname) != group:
+				continue
+
+			_row = row.copy()
+			_row[fieldname] = None
+			_row["indent"] = 1
+			_row["is_group"] = 0
+			grouped_data.append(_row)
+
+	return grouped_data
diff --git a/erpnext/projects/workspace/projects/projects.json b/erpnext/projects/workspace/projects/projects.json
index 94ae9c0..e6bead9 100644
--- a/erpnext/projects/workspace/projects/projects.json
+++ b/erpnext/projects/workspace/projects/projects.json
@@ -155,9 +155,9 @@
    "dependencies": "Project",
    "hidden": 0,
    "is_query_report": 1,
-   "label": "Project Billing Summary",
+   "label": "Timesheet Billing Summary",
    "link_count": 0,
-   "link_to": "Project Billing Summary",
+   "link_to": "Timesheet Billing Summary",
    "link_type": "Report",
    "onboard": 0,
    "type": "Link"
@@ -192,7 +192,7 @@
    "type": "Link"
   }
  ],
- "modified": "2023-07-04 14:39:08.935853",
+ "modified": "2023-10-10 23:54:33.082108",
  "modified_by": "Administrator",
  "module": "Projects",
  "name": "Projects",
@@ -234,8 +234,8 @@
    "type": "DocType"
   },
   {
-   "label": "Project Billing Summary",
-   "link_to": "Project Billing Summary",
+   "label": "Timesheet Billing Summary",
+   "link_to": "Timesheet Billing Summary",
    "type": "Report"
   },
   {
diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json
index 40cab9f..3b97123 100644
--- a/erpnext/selling/doctype/customer/customer.json
+++ b/erpnext/selling/doctype/customer/customer.json
@@ -134,7 +134,7 @@
    "label": "Customer Type",
    "oldfieldname": "customer_type",
    "oldfieldtype": "Select",
-   "options": "Company\nIndividual",
+   "options": "Company\nIndividual\nProprietorship\nPartnership",
    "reqd": 1
   },
   {
@@ -584,7 +584,7 @@
    "link_fieldname": "party"
   }
  ],
- "modified": "2023-09-21 12:23:20.706020",
+ "modified": "2023-10-19 16:56:27.327035",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Customer",
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 2f6578e..e4f1a28 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -217,7 +217,15 @@
 
 	def validate_with_previous_doc(self):
 		super(SalesOrder, self).validate_with_previous_doc(
-			{"Quotation": {"ref_dn_field": "prevdoc_docname", "compare_fields": [["company", "="]]}}
+			{
+				"Quotation": {"ref_dn_field": "prevdoc_docname", "compare_fields": [["company", "="]]},
+				"Quotation Item": {
+					"ref_dn_field": "quotation_item",
+					"compare_fields": [["item_code", "="], ["uom", "="], ["conversion_factor", "="]],
+					"is_child_table": True,
+					"allow_duplicate_prev_row_id": True,
+				},
+			}
 		)
 
 		if cint(frappe.db.get_single_value("Selling Settings", "maintain_same_sales_rate")):
@@ -759,6 +767,8 @@
 		if target.company_address:
 			target.update(get_fetch_values("Delivery Note", "company_address", target.company_address))
 
+		# set target items names to ensure proper linking with packed_items
+		target.set_new_name()
 		make_packing_list(target)
 
 	def condition(doc):
diff --git a/erpnext/setup/doctype/company/company.js b/erpnext/setup/doctype/company/company.js
index 23b93dc..1bd469b 100644
--- a/erpnext/setup/doctype/company/company.js
+++ b/erpnext/setup/doctype/company/company.js
@@ -40,7 +40,7 @@
 				filters:{
 					'warehouse_type' : 'Transit',
 					'is_group': 0,
-					'company': frm.doc.company
+					'company': frm.doc.company_name
 				}
 			};
 		});
diff --git a/erpnext/stock/doctype/bin/bin.json b/erpnext/stock/doctype/bin/bin.json
index a115727..02684a7 100644
--- a/erpnext/stock/doctype/bin/bin.json
+++ b/erpnext/stock/doctype/bin/bin.json
@@ -5,20 +5,23 @@
  "doctype": "DocType",
  "engine": "InnoDB",
  "field_order": [
-  "warehouse",
   "item_code",
-  "reserved_qty",
+  "column_break_yreo",
+  "warehouse",
+  "section_break_stag",
   "actual_qty",
-  "ordered_qty",
-  "indented_qty",
   "planned_qty",
-  "projected_qty",
+  "indented_qty",
+  "ordered_qty",
+  "column_break_xn5j",
+  "reserved_qty",
   "reserved_qty_for_production",
   "reserved_qty_for_sub_contract",
   "reserved_qty_for_production_plan",
-  "ma_rate",
+  "projected_qty",
+  "section_break_pmrs",
   "stock_uom",
-  "fcfs_rate",
+  "column_break_0slj",
   "valuation_rate",
   "stock_value"
  ],
@@ -56,7 +59,7 @@
    "fieldname": "reserved_qty",
    "fieldtype": "Float",
    "in_list_view": 1,
-   "label": "Reserved Quantity",
+   "label": "Reserved Qty",
    "oldfieldname": "reserved_qty",
    "oldfieldtype": "Currency",
    "read_only": 1
@@ -67,7 +70,7 @@
    "fieldtype": "Float",
    "in_filter": 1,
    "in_list_view": 1,
-   "label": "Actual Quantity",
+   "label": "Actual Qty",
    "oldfieldname": "actual_qty",
    "oldfieldtype": "Currency",
    "read_only": 1
@@ -77,7 +80,7 @@
    "fieldname": "ordered_qty",
    "fieldtype": "Float",
    "in_list_view": 1,
-   "label": "Ordered Quantity",
+   "label": "Ordered Qty",
    "oldfieldname": "ordered_qty",
    "oldfieldtype": "Currency",
    "read_only": 1
@@ -86,7 +89,7 @@
    "default": "0.00",
    "fieldname": "indented_qty",
    "fieldtype": "Float",
-   "label": "Requested Quantity",
+   "label": "Requested Qty",
    "oldfieldname": "indented_qty",
    "oldfieldtype": "Currency",
    "read_only": 1
@@ -116,21 +119,10 @@
   {
    "fieldname": "reserved_qty_for_sub_contract",
    "fieldtype": "Float",
-   "label": "Reserved Qty for sub contract",
+   "label": "Reserved Qty for Subcontract",
    "read_only": 1
   },
   {
-   "fieldname": "ma_rate",
-   "fieldtype": "Float",
-   "hidden": 1,
-   "label": "Moving Average Rate",
-   "oldfieldname": "ma_rate",
-   "oldfieldtype": "Currency",
-   "print_hide": 1,
-   "read_only": 1,
-   "report_hide": 1
-  },
-  {
    "fieldname": "stock_uom",
    "fieldtype": "Link",
    "in_filter": 1,
@@ -141,17 +133,6 @@
    "read_only": 1
   },
   {
-   "fieldname": "fcfs_rate",
-   "fieldtype": "Float",
-   "hidden": 1,
-   "label": "FCFS Rate",
-   "oldfieldname": "fcfs_rate",
-   "oldfieldtype": "Currency",
-   "print_hide": 1,
-   "read_only": 1,
-   "report_hide": 1
-  },
-  {
    "fieldname": "valuation_rate",
    "fieldtype": "Float",
    "label": "Valuation Rate",
@@ -172,13 +153,33 @@
    "fieldtype": "Float",
    "label": "Reserved Qty for Production Plan",
    "read_only": 1
+  },
+  {
+   "fieldname": "section_break_stag",
+   "fieldtype": "Section Break"
+  },
+  {
+   "fieldname": "column_break_yreo",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "column_break_xn5j",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "section_break_pmrs",
+   "fieldtype": "Section Break"
+  },
+  {
+   "fieldname": "column_break_0slj",
+   "fieldtype": "Column Break"
   }
  ],
  "hide_toolbar": 1,
  "idx": 1,
  "in_create": 1,
  "links": [],
- "modified": "2023-05-02 23:26:21.806965",
+ "modified": "2023-11-01 15:35:51.722534",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Bin",
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
index 7f0dc2d..8bbc660 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
@@ -205,7 +205,11 @@
 				)
 				docs = frappe.db.get_all(
 					"Asset",
-					filters={receipt_document_type: item.receipt_document, "item_code": item.item_code},
+					filters={
+						receipt_document_type: item.receipt_document,
+						"item_code": item.item_code,
+						"docstatus": ["!=", 2],
+					},
 					fields=["name", "docstatus"],
 				)
 				if not docs or len(docs) != item.qty:
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 2a4b6f3..cbc1693 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -600,11 +600,10 @@
 					make_rate_difference_entry(d)
 					make_sub_contracting_gl_entries(d)
 					make_divisional_loss_gl_entry(d, outgoing_amount)
-			elif (
-				d.warehouse not in warehouse_with_no_account
-				or d.rejected_warehouse not in warehouse_with_no_account
+			elif (d.warehouse and d.warehouse not in warehouse_with_no_account) or (
+				d.rejected_warehouse and d.rejected_warehouse not in warehouse_with_no_account
 			):
-				warehouse_with_no_account.append(d.warehouse)
+				warehouse_with_no_account.append(d.warehouse or d.rejected_warehouse)
 
 			if d.is_fixed_asset:
 				self.update_assets(d, d.valuation_rate)
diff --git a/erpnext/stock/doctype/quality_inspection_template/test_records.json b/erpnext/stock/doctype/quality_inspection_template/test_records.json
index 980f49a..2da99f6 100644
--- a/erpnext/stock/doctype/quality_inspection_template/test_records.json
+++ b/erpnext/stock/doctype/quality_inspection_template/test_records.json
@@ -1,5 +1,9 @@
 [
  {
+     "doctype": "Quality Inspection Parameter",
+     "parameter" : "_Test Param"
+ },
+ {
      "quality_inspection_template_name" : "_Test Quality Inspection Template",
      "doctype": "Quality Inspection Template",
      "item_quality_inspection_parameter" : [
diff --git a/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py
index 1853f45..623e8fa 100644
--- a/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py
+++ b/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py
@@ -137,8 +137,6 @@
 			item_code="_Test Item",
 			warehouse="_Test Warehouse - _TC",
 			based_on="Item and Warehouse",
-			voucher_type="Sales Invoice",
-			voucher_no="SI-1",
 			posting_date="2021-01-02",
 			posting_time="00:01:00",
 		)
@@ -148,8 +146,6 @@
 		riv1.flags.dont_run_in_test = True
 		riv1.submit()
 		_assert_status(riv1, "Queued")
-		self.assertEqual(riv1.voucher_type, "Sales Invoice")  # traceability
-		self.assertEqual(riv1.voucher_no, "SI-1")
 
 		# newer than existing duplicate - riv1
 		riv2 = frappe.get_doc(riv_args.update({"posting_date": "2021-01-03"}))
diff --git a/erpnext/stock/page/stock_balance/stock_balance.js b/erpnext/stock/page/stock_balance/stock_balance.js
index f00dd3e..90b8d45 100644
--- a/erpnext/stock/page/stock_balance/stock_balance.js
+++ b/erpnext/stock/page/stock_balance/stock_balance.js
@@ -11,6 +11,7 @@
 		label: __('Warehouse'),
 		fieldtype:'Link',
 		options:'Warehouse',
+		default: frappe.route_options && frappe.route_options.warehouse,
 		change: function() {
 			page.item_dashboard.start = 0;
 			page.item_dashboard.refresh();
@@ -22,6 +23,7 @@
 		label: __('Item'),
 		fieldtype:'Link',
 		options:'Item',
+		default: frappe.route_options && frappe.route_options.item_code,
 		change: function() {
 			page.item_dashboard.start = 0;
 			page.item_dashboard.refresh();
@@ -33,6 +35,7 @@
 		label: __('Item Group'),
 		fieldtype:'Link',
 		options:'Item Group',
+		default: frappe.route_options && frappe.route_options.item_group,
 		change: function() {
 			page.item_dashboard.start = 0;
 			page.item_dashboard.refresh();
diff --git a/erpnext/templates/pages/projects.html b/erpnext/templates/pages/projects.html
index 9fe4338..3b8698f 100644
--- a/erpnext/templates/pages/projects.html
+++ b/erpnext/templates/pages/projects.html
@@ -14,18 +14,16 @@
 
 {% block style %}
   <style>
-    {
-      % include "templates/includes/projects.css"%
-    }
+    {% include "templates/includes/projects.css" %}
   </style>
 {% endblock %}
 
 {% block page_content %}
   <div class="web-list-item transaction-list-item">
     <div class="row align-items-center">
-      <div class="col-sm-4 "><b>Status: {{ doc.status }}</b></div>
-      <div class="col-sm-4 "><b>Progress: {{ doc.percent_complete }}%</b></div>
-      <div class="col-sm-4 "><b>Hours Spent: {{ doc.actual_time | round }}</b></div>
+      <div class="col-sm-4 "><b>{{ _("Status") }}: {{ _(doc.status) }}</b></div>
+      <div class="col-sm-4 "><b>{{ _("Progress") }}: {{ doc.get_formatted("percent_complete") }}</b></div>
+      <div class="col-sm-4 "><b>{{ _("Hours Spent") }}: {{ doc.get_formatted("actual_time") }}</b></div>
     </div>
   </div>
 
@@ -34,7 +32,7 @@
   <hr>
 
   <div class="row align-items-center">
-    <div class="col-sm-6 my-account-header"> <h4>Tasks</h4></div>
+    <div class="col-sm-6 my-account-header"> <h4>{{ _("Tasks") }}</h4></div>
     <div class="col-sm-6 text-right">
       <a class="btn btn-secondary btn-light btn-sm" href='/tasks/new?project={{ doc.project_name }}'>{{ _("New task") }}</a>
     </div>
@@ -44,39 +42,39 @@
     <div class="result">
       <div class="web-list-item transaction-list-item">
         <div class="row align-items-center">
-          <div class="col-sm-4"><b>Tasks</b></div>
-          <div class="col-sm-2"><b>Status</b></div>
-          <div class="col-sm-2"><b>End Date</b></div>
-          <div class="col-sm-2"><b>Assignment</b></div>
-          <div class="col-sm-2"><b>Modified On</b></div>
+          <div class="col-sm-4"><b>{{ _("Tasks") }}</b></div>
+          <div class="col-sm-2"><b>{{ _("Status") }}</b></div>
+          <div class="col-sm-2"><b>{{ _("End Date") }}</b></div>
+          <div class="col-sm-2"><b>{{ _("Assignment") }}</b></div>
+          <div class="col-sm-2"><b>{{ _("Modified On") }}</b></div>
         </div>
       </div>
       {% include "erpnext/templates/includes/projects/project_tasks.html" %}
     </div>
   </div>
   {% else %}
-    {{ empty_state('Task')}}
+    {{ empty_state(_("Task")) }}
   {% endif %}
 
-  <h4 class="my-account-header">Timesheets</h4>
+  <h4 class="my-account-header">{{ _("Timesheets") }}</h4>
   {% if doc.timesheets %}
     <div class="website-list">
       <div class="result">
         <div class="web-list-item transaction-list-item">
           <div class="row align-items-center">
-            <div class="col-xs-2"><b>Timesheet</b></div>
-            <div class="col-xs-2"><b>Status</b></div>
-            <div class="col-xs-2"><b>From</b></div>
-            <div class="col-xs-2"><b>To</b></div>
-            <div class="col-xs-2"><b>Modified By</b></div>
-            <div class="col-xs-2"><b>Modified On</b></div>
+            <div class="col-xs-2"><b>{{ _("Timesheet") }}</b></div>
+            <div class="col-xs-2"><b>{{ _("Status") }}</b></div>
+            <div class="col-xs-2"><b>{{ _("From") }}</b></div>
+            <div class="col-xs-2"><b>{{ _("To") }}</b></div>
+            <div class="col-xs-2"><b>{{ _("Modified By") }}</b></div>
+            <div class="col-xs-2"><b>{{ _("Modified On") }}</b></div>
           </div>
         </div>
       {% include "erpnext/templates/includes/projects/project_timesheets.html" %}
       </div>
     </div>
   {% else %}
-    {{ empty_state('Timesheet')}}
+    {{ empty_state(_("Timesheet")) }}
   {% endif %}
 
   {% if doc.attachments %}
@@ -113,7 +111,7 @@
 
 {% macro progress_bar(percent_complete) %}
 {% if percent_complete %}
-  <span class="small py-2">Project Progress:</span>
+  <span class="small py-2">{{ _("Project Progress:") }}</span>
   <div class="progress progress-hg" style="height: 15px;">
     <div
       class="progress-bar progress-bar-{{ 'warning' if percent_complete|round < 100 else 'success' }} active"\
@@ -133,7 +131,7 @@
         <div>
           <img src="/assets/frappe/images/ui-states/list-empty-state.svg" alt="Generic Empty State" class="null-state">
         </div>
-        <p>You haven't created a {{ section_name }} yet</p>
+        <p>{{ _("You haven't created a {0} yet").format(section_name) }}</p>
       </div>
     </div>
   </div>
diff --git a/erpnext/translations/af.csv b/erpnext/translations/af.csv
index d4b823d..f457314 100644
--- a/erpnext/translations/af.csv
+++ b/erpnext/translations/af.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garantie Periode (in dae),
 Auto re-order,Outo herbestel,
 Reorder level based on Warehouse,Herbestel vlak gebaseer op Warehouse,
-Will also apply for variants unless overrridden,Sal ook aansoek doen vir variante tensy dit oortree word,
+Will also apply for variants unless overridden,Sal ook aansoek doen vir variante tensy dit oortree word,
 Units of Measure,Eenhede van maatreël,
 Will also apply for variants,Sal ook aansoek doen vir variante,
 Serial Nos and Batches,Serial Nos and Batches,
diff --git a/erpnext/translations/am.csv b/erpnext/translations/am.csv
index 764868d..0453d5d 100644
--- a/erpnext/translations/am.csv
+++ b/erpnext/translations/am.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),(ቀናት ውስጥ) የዋስትና ክፍለ ጊዜ,
 Auto re-order,ራስ-ዳግም-ትዕዛዝ,
 Reorder level based on Warehouse,መጋዘን ላይ የተመሠረተ አስይዝ ደረጃ,
-Will also apply for variants unless overrridden,overrridden በስተቀር ደግሞ ተለዋጮች ማመልከት ይሆን,
+Will also apply for variants unless overridden,overridden በስተቀር ደግሞ ተለዋጮች ማመልከት ይሆን,
 Units of Measure,ይለኩ አሃዶች,
 Will also apply for variants,በተጨማሪም ተለዋጮች ማመልከት ይሆን,
 Serial Nos and Batches,ተከታታይ ቁጥሮች እና ቡድኖች,
diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv
index 4e03a18..67b409e 100644
--- a/erpnext/translations/ar.csv
+++ b/erpnext/translations/ar.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),فترة الضمان (بالأيام),
 Auto re-order,إعادة ترتيب تلقائي,
 Reorder level based on Warehouse,مستوى إعادة الطلب بناء على مستودع,
-Will also apply for variants unless overrridden,سوف تطبق أيضا على المتغيرات الا اذا تم التغير فوقها,
+Will also apply for variants unless overridden,سوف تطبق أيضا على المتغيرات الا اذا تم التغير فوقها,
 Units of Measure,وحدات القياس,
 Will also apply for variants,سوف تطبق أيضا على المتغيرات,
 Serial Nos and Batches,الرقم التسلسلي ودفعات,
diff --git a/erpnext/translations/bg.csv b/erpnext/translations/bg.csv
index 8dff755..787f81e 100644
--- a/erpnext/translations/bg.csv
+++ b/erpnext/translations/bg.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Гаранционен срок (в дни),
 Auto re-order,Автоматична повторна поръчка,
 Reorder level based on Warehouse,Пренареждане равнище въз основа на Warehouse,
-Will also apply for variants unless overrridden,"Ще се прилага и за варианти, освен ако overrridden",
+Will also apply for variants unless overridden,"Ще се прилага и за варианти, освен ако overridden",
 Units of Measure,Мерни единици за измерване,
 Will also apply for variants,Ще се прилага и за варианти,
 Serial Nos and Batches,Серийни номера и партиди,
diff --git a/erpnext/translations/bn.csv b/erpnext/translations/bn.csv
index 8a698df..69fd08c 100644
--- a/erpnext/translations/bn.csv
+++ b/erpnext/translations/bn.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),(দিন) ওয়্যারেন্টি সময়কাল,
 Auto re-order,অটো পুনরায় আদেশ,
 Reorder level based on Warehouse,গুদাম উপর ভিত্তি রেকর্ডার স্তর,
-Will also apply for variants unless overrridden,Overrridden তবে এছাড়াও ভিন্নতা জন্য আবেদন করতে হবে,
+Will also apply for variants unless overridden,Overrridden তবে এছাড়াও ভিন্নতা জন্য আবেদন করতে হবে,
 Units of Measure,পরিমাপ ইউনিট,
 Will also apply for variants,এছাড়াও ভিন্নতা জন্য আবেদন করতে হবে,
 Serial Nos and Batches,সিরিয়াল আমরা এবং ব্যাচ,
diff --git a/erpnext/translations/bs.csv b/erpnext/translations/bs.csv
index 7ba4a88..ef680a3 100644
--- a/erpnext/translations/bs.csv
+++ b/erpnext/translations/bs.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Jamstveni period (u danima),
 Auto re-order,Autorefiniš reda,
 Reorder level based on Warehouse,Nivo Ponovno red zasnovan na Skladište,
-Will also apply for variants unless overrridden,Primjenjivat će se i za varijante osim overrridden,
+Will also apply for variants unless overridden,Primjenjivat će se i za varijante osim overridden,
 Units of Measure,Jedinice mjere,
 Will also apply for variants,Primjenjivat će se i za varijante,
 Serial Nos and Batches,Serijski brojevi i Paketi,
diff --git a/erpnext/translations/ca.csv b/erpnext/translations/ca.csv
index cce1f3a..fa545a4 100644
--- a/erpnext/translations/ca.csv
+++ b/erpnext/translations/ca.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Període de garantia (en dies),
 Auto re-order,Acte reordenar,
 Reorder level based on Warehouse,Nivell de comanda basat en Magatzem,
-Will also apply for variants unless overrridden,També s'aplicarà per a les variants menys overrridden,
+Will also apply for variants unless overridden,També s'aplicarà per a les variants menys overridden,
 Units of Measure,Unitats de mesura,
 Will also apply for variants,També s'aplicarà per a les variants,
 Serial Nos and Batches,Nº de sèrie i lots,
diff --git a/erpnext/translations/cs.csv b/erpnext/translations/cs.csv
index 1072ed3..7fb1679 100644
--- a/erpnext/translations/cs.csv
+++ b/erpnext/translations/cs.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Záruční doba (ve dnech),
 Auto re-order,Automatické znovuobjednání,
 Reorder level based on Warehouse,Úroveň Změna pořadí na základě Warehouse,
-Will also apply for variants unless overrridden,"Bude platit i pro varianty, pokud nebude přepsáno",
+Will also apply for variants unless overridden,"Bude platit i pro varianty, pokud nebude přepsáno",
 Units of Measure,Jednotky měření,
 Will also apply for variants,Bude platit i pro varianty,
 Serial Nos and Batches,Sériové čísla a dávky,
diff --git a/erpnext/translations/cz.csv b/erpnext/translations/cz.csv
index 270a710..96de062 100644
--- a/erpnext/translations/cz.csv
+++ b/erpnext/translations/cz.csv
@@ -1991,7 +1991,7 @@
 Actual End Date,Skutečné datum ukončen$1,
 Applicable To (Role),Vztahující se na (Role)
 Purpose,Účel,
-Will also apply for variants unless overrridden,"Bude platit i pro varianty, pokud nebude přepsáno"
+Will also apply for variants unless overridden,"Bude platit i pro varianty, pokud nebude přepsáno"
 Advances,Zálohy,
 Approving User cannot be same as user the rule is Applicable To,Schválení Uživatel nemůže být stejná jako uživatel pravidlo se vztahuje na,
 No of Requested SMS,Počet žádaným SMS,
diff --git a/erpnext/translations/da.csv b/erpnext/translations/da.csv
index 138da5d..4eb3960 100644
--- a/erpnext/translations/da.csv
+++ b/erpnext/translations/da.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garantiperiode (i dage),
 Auto re-order,Auto genbestil,
 Reorder level based on Warehouse,Genbestil niveau baseret på Warehouse,
-Will also apply for variants unless overrridden,"Vil også gælde for varianter, medmindre overrridden",
+Will also apply for variants unless overridden,"Vil også gælde for varianter, medmindre overridden",
 Units of Measure,Måleenheder,
 Will also apply for variants,Vil også gælde for varianter,
 Serial Nos and Batches,Serienummer og partier,
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv
index 79b9574..c627f81 100644
--- a/erpnext/translations/de.csv
+++ b/erpnext/translations/de.csv
@@ -3340,7 +3340,7 @@
 Cannot Optimize Route as Driver Address is Missing.,"Route kann nicht optimiert werden, da die Fahreradresse fehlt.",
 Cannot complete task {0} as its dependant task {1} are not ccompleted / cancelled.,"Aufgabe {0} kann nicht abgeschlossen werden, da die abhängige Aufgabe {1} nicht abgeschlossen / abgebrochen wurde.",
 Cannot find a matching Item. Please select some other value for {0}.,Ein passender Artikel kann nicht gefunden werden. Bitte einen anderen Wert für {0} auswählen.,
-"Cannot overbill for Item {0} in row {1} more than {2}. To allow over-billing, please set allowance in Accounts Settings","Artikel {0} in Zeile {1} kann nicht mehr als {2} in Rechnung gestellt werden. Um eine Überberechnung zuzulassen, legen Sie die Überberechnung in den Kontoeinstellungen fest",
+"Cannot overbill for Item {0} in row {1} more than {2}. To allow over-billing, please set allowance in Accounts Settings","Für Artikel {0} in Zeile {1} kann nicht mehr als {2} zusätzlich in Rechnung gestellt werden. Um diese Überfakturierung zuzulassen, passen Sie bitte die Grenzwerte in den Buchhaltungseinstellungen an.",
 "Capacity Planning Error, planned start time can not be same as end time","Kapazitätsplanungsfehler, die geplante Startzeit darf nicht mit der Endzeit übereinstimmen",
 Categories,Kategorien,
 Changes in {0},Änderungen in {0},
@@ -3746,7 +3746,7 @@
 This page keeps track of your items in which buyers have showed some interest.,"Diese Seite verfolgt Ihre Artikel, an denen Käufer Interesse gezeigt haben.",
 Thursday,Donnerstag,
 Title,Bezeichnung,
-"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","Aktualisieren Sie &quot;Over Billing Allowance&quot; in den Kontoeinstellungen oder im Artikel, um eine Überberechnung zuzulassen.",
+"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","Aktualisieren Sie &quot;Over Billing Allowance&quot; in den Buchhaltungseinstellungen oder im Artikel, um eine Überberechnung zuzulassen.",
 "To allow over receipt / delivery, update ""Over Receipt/Delivery Allowance"" in Stock Settings or the Item.","Um eine Überbestätigung / Überlieferung zu ermöglichen, aktualisieren Sie &quot;Überbestätigung / Überlieferung&quot; in den Lagereinstellungen oder im Artikel.",
 Total,Summe,
 Total Payment Request amount cannot be greater than {0} amount,Der Gesamtbetrag der Zahlungsanforderung darf nicht größer als {0} sein,
@@ -4113,8 +4113,8 @@
 Accounting Period,Abrechnungszeitraum,
 Period Name,Zeitraumname,
 Closed Documents,Geschlossene Dokumente,
-Accounts Settings,Konteneinstellungen,
-Settings for Accounts,Konteneinstellungen,
+Accounts Settings,Buchhaltungseinstellungen,
+Settings for Accounts,Einstellungen für die Buchhaltung,
 Make Accounting Entry For Every Stock Movement,Eine Buchung für jede Lagerbewegung erstellen,
 Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts,Benutzer mit dieser Rolle sind berechtigt Konten zu sperren und  Buchungen zu gesperrten Konten zu erstellen/verändern,
 Determine Address Tax Category From,Adresssteuerkategorie bestimmen von,
@@ -7074,7 +7074,7 @@
 Warranty Period (in days),Garantiefrist (in Tagen),
 Auto re-order,Automatische Nachbestellung,
 Reorder level based on Warehouse,Meldebestand auf Basis des Lagers,
-Will also apply for variants unless overrridden,"Gilt auch für Varianten, sofern nicht außer Kraft gesetzt",
+Will also apply for variants unless overridden,"Gilt auch für Varianten, sofern nicht außer Kraft gesetzt",
 Units of Measure,Maßeinheiten,
 Will also apply for variants,Gilt auch für Varianten,
 Serial Nos and Batches,Seriennummern und Chargen,
@@ -7617,7 +7617,7 @@
 Journal Entry Type,Buchungssatz-Typ,
 Journal Entry Template Account,Buchungssatzvorlagenkonto,
 Process Deferred Accounting,Aufgeschobene Buchhaltung verarbeiten,
-Manual entry cannot be created! Disable automatic entry for deferred accounting in accounts settings and try again,Manuelle Eingabe kann nicht erstellt werden! Deaktivieren Sie die automatische Eingabe für die verzögerte Buchhaltung in den Konteneinstellungen und versuchen Sie es erneut,
+Manual entry cannot be created! Disable automatic entry for deferred accounting in accounts settings and try again,Manuelle Eingabe kann nicht erstellt werden! Deaktivieren Sie die automatische Eingabe für die verzögerte Buchhaltung in den Buchhaltungseinstellungen und versuchen Sie es erneut,
 End date cannot be before start date,Das Enddatum darf nicht vor dem Startdatum liegen,
 Total Counts Targeted,Gesamtzahl der anvisierten Zählungen,
 Total Counts Completed,Gesamtzahl der abgeschlossenen Zählungen,
@@ -8826,5 +8826,32 @@
 Is Mandatory,Ist obligatorisch,
 WhatsApp,WhatsApp,
 Make a call,Einen Anruf tätigen,
+Enable Automatic Party Matching,Automatisches Zuordnen von Parteien aktivieren,
+Auto match and set the Party in Bank Transactions,"Partei automatisch anhand der Kontonummer bzw. IBAN zuordnen",
+Enable Fuzzy Matching,Fuzzy Matching aktivieren,
+Approximately match the description/party name against parties,"Partei automatisch anhand grober Übereinstimmung des Namens zuordnen"
+Accounts Closing,Kontenabschluss,
+Period Closing Settings,Periodenabschlusseinstellungen,
+Ignore Account Closing Balance,Saldo des Kontos zum Periodenabschluss ignorieren,
+Financial reports will be generated using GL Entry doctypes (should be enabled if Period Closing Voucher is not posted for all years sequentially or missing),"Finanzberichte werden anhand des Hauptbuchs erstellt (sollte aktiviert sein, wenn Periodenabschlüsse fehlen oder nicht sequentiell für alle Jahre gebucht werden)",
+Asset Settings,Vermögenswerteinstellungen,
+POS Setting,POS-Einstellungen,
+Create Ledger Entries for Change Amount,Buchungssätze für Wechselgeld erstellen,
+"If enabled, ledger entries will be posted for change amount in POS transactions","Wenn aktiviert, werden Buchungssätze für Wechselgeld in POS-Transaktionen erstellt",
+Credit Limit Settings,Kreditlimit-Einstellungen,
+Role Allowed to Over Bill,
+Users with this role are allowed to over bill above the allowance percentage,"Roll, die mehr als den erlaubten Prozentsatz zusätzlich abrechnen darf",
+Role allowed to bypass Credit Limit,"Rolle, die das Kreditlimit umgehen darf",
+Invoice Cancellation,Rechnungsstornierung,
+Delete Accounting and Stock Ledger Entries on deletion of Transaction,Beim Löschen einer Transaktion auch die entsprechenden Buchungs- und Lagerbuchungssätze löschen,
+Enable Common Party Accounting,Verknüpfung von Kunden und Liefeanten erlauben,
+Allow multi-currency invoices against single party account,Rechnungsbeträge in Fremdwährungen dürfen umgerechnet und in der Hauptwährung gebucht werden,
+Enabling this will allow creation of multi-currency invoices against single party account in company currency,Bei Aktivierung können Rechnungen in Fremdwährungen gegen ein Konto in der Hauptwährung gebucht werden,
+Payment Terms from orders will be fetched into the invoices as is,Zahlungsbedingungen aus Aufträgen werden eins zu eins in Rechnungen übernommen,
+Automatically Fetch Payment Terms from Order,Zahlungsbedingungen aus Auftrag in die Rechnung übernehmen,
+Enable Custom Cash Flow Format,Individuelles Cashflow-Format aktivieren,
+Tax Settings,Umsatzsteuer-Einstellungen,
+Book Tax Loss on Early Payment Discount,Umsatzsteueranteil bei Skonto berücksichtigen,
+Split Early Payment Discount Loss into Income and Tax Loss,"Skontobetrag in Aufwand und Umsatzsteuerkorrektur aufteilen",
 Approve,Genehmigen,
 Reject,Ablehnen,
diff --git a/erpnext/translations/el.csv b/erpnext/translations/el.csv
index 7a83cc5..21fb435 100644
--- a/erpnext/translations/el.csv
+++ b/erpnext/translations/el.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Περίοδος εγγύησης (σε ημέρες),
 Auto re-order,Αυτόματη εκ νέου προκειμένου,
 Reorder level based on Warehouse,Αναδιάταξη επίπεδο με βάση Αποθήκης,
-Will also apply for variants unless overrridden,Θα ισχύουν επίσης για τις παραλλαγές εκτός αν υπάρχει υπέρβαση,
+Will also apply for variants unless overridden,Θα ισχύουν επίσης για τις παραλλαγές εκτός αν υπάρχει υπέρβαση,
 Units of Measure,Μονάδες μέτρησης,
 Will also apply for variants,Θα ισχύουν επίσης για τις παραλλαγές,
 Serial Nos and Batches,Σειριακοί αριθμοί και παρτίδες,
diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv
index fadf7a7..2abe418 100644
--- a/erpnext/translations/es.csv
+++ b/erpnext/translations/es.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Período de garantía (en días),
 Auto re-order,Ordenar Automáticamente,
 Reorder level based on Warehouse,Nivel de reabastecimiento basado en almacén,
-Will also apply for variants unless overrridden,También se aplicará para las variantes menos que se sobre escriba,
+Will also apply for variants unless overridden,También se aplicará para las variantes menos que se sobre escriba,
 Units of Measure,Unidades de medida,
 Will also apply for variants,También se aplicará para las variantes,
 Serial Nos and Batches,Números de serie y lotes,
diff --git a/erpnext/translations/et.csv b/erpnext/translations/et.csv
index 4e26a82..a4a8736 100644
--- a/erpnext/translations/et.csv
+++ b/erpnext/translations/et.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garantii Periood (päeva),
 Auto re-order,Auto ümber korraldada,
 Reorder level based on Warehouse,Reorder tasandil põhineb Warehouse,
-Will also apply for variants unless overrridden,"Kehtib ka variante, kui overrridden",
+Will also apply for variants unless overridden,"Kehtib ka variante, kui overridden",
 Units of Measure,Mõõtühikud,
 Will also apply for variants,Kehtib ka variandid,
 Serial Nos and Batches,Serial Nos ning partiid,
diff --git a/erpnext/translations/fa.csv b/erpnext/translations/fa.csv
index 530965d..bd40c8b 100644
--- a/erpnext/translations/fa.csv
+++ b/erpnext/translations/fa.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),دوره گارانتی (در روز),
 Auto re-order,خودکار دوباره سفارش,
 Reorder level based on Warehouse,سطح تغییر مجدد ترتیب بر اساس انبار,
-Will also apply for variants unless overrridden,همچنین برای انواع اعمال می شود مگر اینکه overrridden,
+Will also apply for variants unless overridden,همچنین برای انواع اعمال می شود مگر اینکه overridden,
 Units of Measure,واحدهای اندازه گیری,
 Will also apply for variants,همچنین برای انواع اعمال می شود,
 Serial Nos and Batches,سریال شماره و دسته,
diff --git a/erpnext/translations/fi.csv b/erpnext/translations/fi.csv
index 6e9380c..33cf157 100644
--- a/erpnext/translations/fi.csv
+++ b/erpnext/translations/fi.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Takuuaika (päivinä),
 Auto re-order,Auto re-order,
 Reorder level based on Warehouse,Varastoon perustuva täydennystilaustaso,
-Will also apply for variants unless overrridden,"Sovelletaan myös tuotemalleissa, ellei kumota",
+Will also apply for variants unless overridden,"Sovelletaan myös tuotemalleissa, ellei kumota",
 Units of Measure,Mittayksiköt,
 Will also apply for variants,Sovelletaan myös tuotemalleissa,
 Serial Nos and Batches,Sarjanumerot ja Erät,
diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv
index d3875c1..d15af74 100644
--- a/erpnext/translations/fr.csv
+++ b/erpnext/translations/fr.csv
@@ -6650,7 +6650,7 @@
 Warranty Period (in days),Période de Garantie (en jours),
 Auto re-order,Re-commande auto,
 Reorder level based on Warehouse,Niveau de réapprovisionnement basé sur l’Entrepôt,
-Will also apply for variants unless overrridden,S'appliquera également pour des variantes sauf si remplacé,
+Will also apply for variants unless overridden,S'appliquera également pour des variantes sauf si remplacé,
 Units of Measure,Unités de Mesure,
 Will also apply for variants,S'appliquera également pour les variantes,
 Serial Nos and Batches,N° de Série et Lots,
diff --git a/erpnext/translations/gu.csv b/erpnext/translations/gu.csv
index e2de8ce..06a3cc6 100644
--- a/erpnext/translations/gu.csv
+++ b/erpnext/translations/gu.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),(દિવસોમાં) વોરંટી સમયગાળા,
 Auto re-order,ઓટો ફરી ઓર્ડર,
 Reorder level based on Warehouse,વેરહાઉસ પર આધારિત પુનઃક્રમાંકિત કરો સ્તર,
-Will also apply for variants unless overrridden,Overrridden સિવાય પણ ચલો માટે લાગુ પડશે,
+Will also apply for variants unless overridden,Overrridden સિવાય પણ ચલો માટે લાગુ પડશે,
 Units of Measure,માપવા એકમો,
 Will also apply for variants,પણ ચલો માટે લાગુ પડશે,
 Serial Nos and Batches,સીરીયલ સંખ્યા અને બૅચેસ,
diff --git a/erpnext/translations/he.csv b/erpnext/translations/he.csv
index 6cd900a..d5fcab6 100644
--- a/erpnext/translations/he.csv
+++ b/erpnext/translations/he.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),תקופת אחריות (בימים),
 Auto re-order,רכב מחדש כדי,
 Reorder level based on Warehouse,רמת הזמנה חוזרת המבוסס על מחסן,
-Will also apply for variants unless overrridden,תחול גם לגרסות אלא אם overrridden,
+Will also apply for variants unless overridden,תחול גם לגרסות אלא אם overridden,
 Units of Measure,יחידות מידה,
 Will also apply for variants,תחול גם לגרסות,
 Serial Nos and Batches,מספרים וסידורים סדרתיים,
diff --git a/erpnext/translations/hi.csv b/erpnext/translations/hi.csv
index 388b502..a5caa66 100644
--- a/erpnext/translations/hi.csv
+++ b/erpnext/translations/hi.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),वारंटी अवधि (दिनों में),
 Auto re-order,ऑटो पुनः आदेश,
 Reorder level based on Warehouse,गोदाम के आधार पर पुन: व्यवस्थित स्तर,
-Will also apply for variants unless overrridden,Overrridden जब तक भी वेरिएंट के लिए लागू होगी,
+Will also apply for variants unless overridden,Overrridden जब तक भी वेरिएंट के लिए लागू होगी,
 Units of Measure,मापन की इकाई,
 Will also apply for variants,यह भी वेरिएंट के लिए लागू होगी,
 Serial Nos and Batches,सीरियल नंबर और बैचों,
diff --git a/erpnext/translations/hr.csv b/erpnext/translations/hr.csv
index b44babc..2834602 100644
--- a/erpnext/translations/hr.csv
+++ b/erpnext/translations/hr.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Jamstveni period (u danima),
 Auto re-order,Automatski reorganiziraj,
 Reorder level based on Warehouse,Razina redoslijeda na temelju Skladište,
-Will also apply for variants unless overrridden,Također će zatražiti varijante osim overrridden,
+Will also apply for variants unless overridden,Također će zatražiti varijante osim overridden,
 Units of Measure,Mjerne jedinice,
 Will also apply for variants,Također će podnijeti zahtjev za varijante,
 Serial Nos and Batches,Serijski brojevi i serije,
diff --git a/erpnext/translations/hu.csv b/erpnext/translations/hu.csv
index 4ea5b9a..a262c8a 100644
--- a/erpnext/translations/hu.csv
+++ b/erpnext/translations/hu.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garancia hossza (napokban),
 Auto re-order,Auto újra-rendelés,
 Reorder level based on Warehouse,Raktárkészleten alapuló újrerendelési szint,
-Will also apply for variants unless overrridden,"Változatokra is alkalmazni fogja, hacsak nem kerül fellülírásra",
+Will also apply for variants unless overridden,"Változatokra is alkalmazni fogja, hacsak nem kerül fellülírásra",
 Units of Measure,Mértékegységek,
 Will also apply for variants,Változatokra is alkalmazni fogja,
 Serial Nos and Batches,Sorszámok és kötegek,
diff --git a/erpnext/translations/id.csv b/erpnext/translations/id.csv
index d84c3fd..c4e50fd 100644
--- a/erpnext/translations/id.csv
+++ b/erpnext/translations/id.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Masa Garansi (dalam hari),
 Auto re-order,Auto re-order,
 Reorder level based on Warehouse,Tingkat Re-Order berdasarkan Gudang,
-Will also apply for variants unless overrridden,Juga akan berlaku untuk varian kecuali tertimpa,
+Will also apply for variants unless overridden,Juga akan berlaku untuk varian kecuali tertimpa,
 Units of Measure,Satuan ukur,
 Will also apply for variants,Juga akan berlaku untuk varian,
 Serial Nos and Batches,Nomor Seri dan Partai,
diff --git a/erpnext/translations/is.csv b/erpnext/translations/is.csv
index 7687e4a..50c06ec 100644
--- a/erpnext/translations/is.csv
+++ b/erpnext/translations/is.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Ábyrgðartímabilið (í dögum),
 Auto re-order,Auto endurraða,
 Reorder level based on Warehouse,Uppröðun stigi byggist á Lager,
-Will also apply for variants unless overrridden,Mun einnig gilda um afbrigði nema overrridden,
+Will also apply for variants unless overridden,Mun einnig gilda um afbrigði nema overridden,
 Units of Measure,Mælieiningar,
 Will also apply for variants,Mun einnig gilda fyrir afbrigði,
 Serial Nos and Batches,Raðnúmer og lotur,
diff --git a/erpnext/translations/it.csv b/erpnext/translations/it.csv
index b88cada..3760895 100644
--- a/erpnext/translations/it.csv
+++ b/erpnext/translations/it.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Periodo di garanzia (in giorni),
 Auto re-order,Auto riordino,
 Reorder level based on Warehouse,Livello di riordino sulla base di Magazzino,
-Will also apply for variants unless overrridden,Si applica anche per le varianti meno overrridden,
+Will also apply for variants unless overridden,Si applica anche per le varianti meno overridden,
 Units of Measure,Unità di misura,
 Will also apply for variants,Si applica anche per le varianti,
 Serial Nos and Batches,Numero e lotti seriali,
diff --git a/erpnext/translations/ja.csv b/erpnext/translations/ja.csv
index 11455bd..888ec80 100644
--- a/erpnext/translations/ja.csv
+++ b/erpnext/translations/ja.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),保証期間(日数),
 Auto re-order,自動再注文,
 Reorder level based on Warehouse,倉庫ごとの再注文レベル,
-Will also apply for variants unless overrridden,上書きされない限り、バリエーションについても適用されます,
+Will also apply for variants unless overridden,上書きされない限り、バリエーションについても適用されます,
 Units of Measure,測定の単位,
 Will also apply for variants,バリエーションについても適用されます,
 Serial Nos and Batches,シリアル番号とバッチ,
diff --git a/erpnext/translations/km.csv b/erpnext/translations/km.csv
index 46dcaba..d2003c0 100644
--- a/erpnext/translations/km.csv
+++ b/erpnext/translations/km.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),ការធានារយៈពេល (នៅក្នុងថ្ងៃ),
 Auto re-order,ការបញ្ជាទិញជាថ្មីម្តងទៀតដោយស្វ័យប្រវត្តិ,
 Reorder level based on Warehouse,កម្រិតនៃការរៀបចំដែលមានមូលដ្ឋានលើឃ្លាំង,
-Will also apply for variants unless overrridden,ក៏នឹងអនុវត្តសម្រាប់វ៉ារ្យ៉ង់បានទេលុះត្រាតែ overrridden,
+Will also apply for variants unless overridden,ក៏នឹងអនុវត្តសម្រាប់វ៉ារ្យ៉ង់បានទេលុះត្រាតែ overridden,
 Units of Measure,ឯកតារង្វាស់,
 Will also apply for variants,ក៏នឹងអនុវត្តសម្រាប់វ៉ារ្យ៉ង់,
 Serial Nos and Batches,សៀរៀល nos និងជំនាន់,
diff --git a/erpnext/translations/kn.csv b/erpnext/translations/kn.csv
index 18e44a1..7206671 100644
--- a/erpnext/translations/kn.csv
+++ b/erpnext/translations/kn.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),( ದಿನಗಳಲ್ಲಿ ) ಖಾತರಿ ಅವಧಿಯ,
 Auto re-order,ಆಟೋ ಪುನಃ ಸಲುವಾಗಿ,
 Reorder level based on Warehouse,ವೇರ್ಹೌಸ್ ಆಧರಿಸಿ ಮರುಕ್ರಮಗೊಳಿಸಿ ಮಟ್ಟದ,
-Will also apply for variants unless overrridden,Overrridden ಹೊರತು ಸಹ ರೂಪಾಂತರಗಳು ಅನ್ವಯವಾಗುವುದು,
+Will also apply for variants unless overridden,Overrridden ಹೊರತು ಸಹ ರೂಪಾಂತರಗಳು ಅನ್ವಯವಾಗುವುದು,
 Units of Measure,ಮಾಪನದ ಘಟಕಗಳಿಗೆ,
 Will also apply for variants,ಸಹ ರೂಪಾಂತರಗಳು ಅನ್ವಯವಾಗುವುದು,
 Serial Nos and Batches,ಸೀರಿಯಲ್ ಸೂಲ ಮತ್ತು ಬ್ಯಾಚ್,
diff --git a/erpnext/translations/ko.csv b/erpnext/translations/ko.csv
index 788655c..9911925 100644
--- a/erpnext/translations/ko.csv
+++ b/erpnext/translations/ko.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),(일) 보증 기간,
 Auto re-order,자동 재 주문,
 Reorder level based on Warehouse,웨어 하우스를 기반으로 재정렬 수준,
-Will also apply for variants unless overrridden,overrridden가 아니면 변형 적용됩니다,
+Will also apply for variants unless overridden,overridden가 아니면 변형 적용됩니다,
 Units of Measure,측정 단위,
 Will also apply for variants,또한 변형 적용됩니다,
 Serial Nos and Batches,일련 번호 및 배치,
diff --git a/erpnext/translations/ku.csv b/erpnext/translations/ku.csv
index a7fcf4e..8fec059 100644
--- a/erpnext/translations/ku.csv
+++ b/erpnext/translations/ku.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Period Warranty (di rojên),
 Auto re-order,Auto re-da,
 Reorder level based on Warehouse,asta DIRTYHERTZ li ser Warehouse,
-Will also apply for variants unless overrridden,jî wê ji bo Guhertoyên serî heta overrridden,
+Will also apply for variants unless overridden,jî wê ji bo Guhertoyên serî heta overridden,
 Units of Measure,Yekîneyên Measure,
 Will also apply for variants,jî wê ji bo Guhertoyên serî,
 Serial Nos and Batches,Serial Nos û lekerên,
diff --git a/erpnext/translations/lo.csv b/erpnext/translations/lo.csv
index 9b74f65..0831788 100644
--- a/erpnext/translations/lo.csv
+++ b/erpnext/translations/lo.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),ໄລຍະເວລາຮັບປະກັນ (ໃນວັນເວລາ),
 Auto re-order,Auto Re: ຄໍາສັ່ງ,
 Reorder level based on Warehouse,ລະດັບລໍາດັບຂຶ້ນຢູ່ກັບຄັງສິນຄ້າ,
-Will also apply for variants unless overrridden,ຍັງຈະນໍາໃຊ້ສໍາລັບການ variants ເວັ້ນເສຍແຕ່ວ່າ overrridden,
+Will also apply for variants unless overridden,ຍັງຈະນໍາໃຊ້ສໍາລັບການ variants ເວັ້ນເສຍແຕ່ວ່າ overridden,
 Units of Measure,ຫົວຫນ່ວຍວັດແທກ,
 Will also apply for variants,ຍັງຈະນໍາໃຊ້ສໍາລັບການ variants,
 Serial Nos and Batches,Serial Nos ແລະສໍາຫລັບຂະບວນ,
diff --git a/erpnext/translations/lt.csv b/erpnext/translations/lt.csv
index 2c87256..8215275 100644
--- a/erpnext/translations/lt.csv
+++ b/erpnext/translations/lt.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garantinis laikotarpis (dienomis),
 Auto re-order,Auto naujo užsakymas,
 Reorder level based on Warehouse,Pertvarkyti lygį remiantis Warehouse,
-Will also apply for variants unless overrridden,Bus taikoma variantų nebent overrridden,
+Will also apply for variants unless overridden,Bus taikoma variantų nebent overridden,
 Units of Measure,Matavimo vienetai,
 Will also apply for variants,Bus taikoma variantų,
 Serial Nos and Batches,Eilės Nr ir Partijos,
diff --git a/erpnext/translations/lv.csv b/erpnext/translations/lv.csv
index 2cfa130..8c4526c 100644
--- a/erpnext/translations/lv.csv
+++ b/erpnext/translations/lv.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garantijas periods (dienās),
 Auto re-order,Auto re-pasūtīt,
 Reorder level based on Warehouse,Pārkārtot līmenis balstās uz Noliktava,
-Will also apply for variants unless overrridden,"Attieksies arī uz variantiem, ja vien overrridden",
+Will also apply for variants unless overridden,"Attieksies arī uz variantiem, ja vien overridden",
 Units of Measure,Mērvienību,
 Will also apply for variants,Attieksies arī uz variantiem,
 Serial Nos and Batches,Sērijas Nr un Partijām,
diff --git a/erpnext/translations/mk.csv b/erpnext/translations/mk.csv
index f01b1b0..a622524 100644
--- a/erpnext/translations/mk.csv
+++ b/erpnext/translations/mk.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Гарантниот период (во денови),
 Auto re-order,Автоматско повторно цел,
 Reorder level based on Warehouse,Ниво врз основа на промените редоследот Магацински,
-Will also apply for variants unless overrridden,"Ќе се казни и варијанти, освен ако overrridden",
+Will also apply for variants unless overridden,"Ќе се казни и варијанти, освен ако overridden",
 Units of Measure,На мерните единици,
 Will also apply for variants,Ќе се применуваат и за варијанти,
 Serial Nos and Batches,Сериски броеви и Пакетите,
diff --git a/erpnext/translations/ml.csv b/erpnext/translations/ml.csv
index 59d3160..777d5c6 100644
--- a/erpnext/translations/ml.csv
+++ b/erpnext/translations/ml.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),(ദിവസങ്ങളിൽ) വാറന്റി കാലാവധി,
 Auto re-order,ഓട്ടോ റീ-ഓർഡർ,
 Reorder level based on Warehouse,വെയർഹൗസ് അടിസ്ഥാനമാക്കിയുള്ള പുനഃക്രമീകരിക്കുക തലത്തിൽ,
-Will also apply for variants unless overrridden,കൂടാതെ overrridden അവയൊഴിച്ച് മോഡലുകൾക്കാണ് ബാധകമാകും,
+Will also apply for variants unless overridden,കൂടാതെ overridden അവയൊഴിച്ച് മോഡലുകൾക്കാണ് ബാധകമാകും,
 Units of Measure,അളവിന്റെ യൂണിറ്റുകൾ,
 Will also apply for variants,കൂടാതെ മോഡലുകൾക്കാണ് ബാധകമാകും,
 Serial Nos and Batches,സീരിയൽ എണ്ണം ബാച്ചുകളും,
diff --git a/erpnext/translations/mr.csv b/erpnext/translations/mr.csv
index ff339b6..624f1ab 100644
--- a/erpnext/translations/mr.csv
+++ b/erpnext/translations/mr.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),(दिवस मध्ये) वॉरंटी कालावधी,
 Auto re-order,ऑटो पुन्हा आदेश,
 Reorder level based on Warehouse,वखारवर  आधारित पुन्हा क्रमवारी लावा पातळी,
-Will also apply for variants unless overrridden,Overrridden आहेत तोपर्यंत देखील रूपे लागू राहील,
+Will also apply for variants unless overridden,Overrridden आहेत तोपर्यंत देखील रूपे लागू राहील,
 Units of Measure,माप युनिट,
 Will also apply for variants,तसेच रूपे लागू राहील,
 Serial Nos and Batches,सिरियल क्र आणि बॅच,
diff --git a/erpnext/translations/ms.csv b/erpnext/translations/ms.csv
index 2258a18..75e150a 100644
--- a/erpnext/translations/ms.csv
+++ b/erpnext/translations/ms.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Tempoh jaminan (dalam hari),
 Auto re-order,Auto semula perintah,
 Reorder level based on Warehouse,Tahap pesanan semula berdasarkan Warehouse,
-Will also apply for variants unless overrridden,Juga akan memohon varian kecuali overrridden,
+Will also apply for variants unless overridden,Juga akan memohon varian kecuali overridden,
 Units of Measure,Unit ukuran,
 Will also apply for variants,Juga akan memohon varian,
 Serial Nos and Batches,Serial Nos dan Kelompok,
diff --git a/erpnext/translations/my.csv b/erpnext/translations/my.csv
index dc5ab12..36cd874 100644
--- a/erpnext/translations/my.csv
+++ b/erpnext/translations/my.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),(ရက်) ကိုအာမခံကာလ,
 Auto re-order,မော်တော်ကားပြန်လည်အမိန့်,
 Reorder level based on Warehouse,ဂိုဒေါင်အပေါ်အခြေခံပြီး reorder level ကို,
-Will also apply for variants unless overrridden,စ overrridden မဟုတ်လျှင်မျိုးကွဲလျှောက်ထားလိမ့်မည်ဟု,
+Will also apply for variants unless overridden,စ overridden မဟုတ်လျှင်မျိုးကွဲလျှောက်ထားလိမ့်မည်ဟု,
 Units of Measure,တိုင်း၏ယူနစ်,
 Will also apply for variants,စမျိုးကွဲလျှောက်ထားလိမ့်မည်ဟု,
 Serial Nos and Batches,serial Nos နှင့် batch,
diff --git a/erpnext/translations/nl.csv b/erpnext/translations/nl.csv
index ad11eae..5859833 100644
--- a/erpnext/translations/nl.csv
+++ b/erpnext/translations/nl.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garantieperiode (in dagen),
 Auto re-order,Auto re-order,
 Reorder level based on Warehouse,Bestelniveau gebaseerd op Warehouse,
-Will also apply for variants unless overrridden,Geldt ook voor varianten tenzij overrridden,
+Will also apply for variants unless overridden,Geldt ook voor varianten tenzij overridden,
 Units of Measure,Meeteenheden,
 Will also apply for variants,Geldt ook voor varianten,
 Serial Nos and Batches,Serienummers en batches,
diff --git a/erpnext/translations/no.csv b/erpnext/translations/no.csv
index b136e97..a3236ac 100644
--- a/erpnext/translations/no.csv
+++ b/erpnext/translations/no.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garantiperioden (i dager),
 Auto re-order,Auto re-order,
 Reorder level based on Warehouse,Omgjøre nivå basert på Warehouse,
-Will also apply for variants unless overrridden,Vil også gjelde for varianter med mindre overrridden,
+Will also apply for variants unless overridden,Vil også gjelde for varianter med mindre overridden,
 Units of Measure,Måleenheter,
 Will also apply for variants,Vil også gjelde for varianter,
 Serial Nos and Batches,Serienummer og partier,
diff --git a/erpnext/translations/pl.csv b/erpnext/translations/pl.csv
index 9be56f3..df41e39 100644
--- a/erpnext/translations/pl.csv
+++ b/erpnext/translations/pl.csv
@@ -6987,7 +6987,7 @@
 Warranty Period (in days),Okres gwarancji (w dniach),
 Auto re-order,Automatyczne ponowne zamówienie,
 Reorder level based on Warehouse,Zmiana kolejności w oparciu o poziom Magazynu,
-Will also apply for variants unless overrridden,"Również zostanie zastosowany do wariantów, chyba że zostanie nadpisany",
+Will also apply for variants unless overridden,"Również zostanie zastosowany do wariantów, chyba że zostanie nadpisany",
 Units of Measure,Jednostki miary,
 Will also apply for variants,Również zastosowanie do wariantów,
 Serial Nos and Batches,Numery seryjne i partie,
diff --git a/erpnext/translations/ps.csv b/erpnext/translations/ps.csv
index 8033752..5a0b2a5 100644
--- a/erpnext/translations/ps.csv
+++ b/erpnext/translations/ps.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),ګرنټی د دورې (په ورځو),
 Auto re-order,د موټرونو د بيا نظم,
 Reorder level based on Warehouse,ترمیمي په کچه د پر بنسټ د ګدام,
-Will also apply for variants unless overrridden,مګر overrridden به د بېرغونو هم تر غوږو,
+Will also apply for variants unless overridden,مګر overridden به د بېرغونو هم تر غوږو,
 Units of Measure,د اندازه کولو واحدونه,
 Will also apply for variants,به هم د بېرغونو درخواست,
 Serial Nos and Batches,سریال وځيري او دستو,
diff --git a/erpnext/translations/pt-BR.csv b/erpnext/translations/pt-BR.csv
index 9823470..bc5b616 100644
--- a/erpnext/translations/pt-BR.csv
+++ b/erpnext/translations/pt-BR.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Período de Garantia (em dias),
 Auto re-order,Reposição Automática,
 Reorder level based on Warehouse,Nível de reposição baseado no Armazén,
-Will also apply for variants unless overrridden,Também se aplica a variantes a não ser que seja sobrescrito,
+Will also apply for variants unless overridden,Também se aplica a variantes a não ser que seja sobrescrito,
 Units of Measure,Unidades de Medida,
 Will also apply for variants,Também se aplica às variantes,
 Serial Nos and Batches,Números de Série e Lotes,
diff --git a/erpnext/translations/pt.csv b/erpnext/translations/pt.csv
index c2afe32..e6846c6 100644
--- a/erpnext/translations/pt.csv
+++ b/erpnext/translations/pt.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Período de Garantia (em dias),
 Auto re-order,Voltar a Pedir Autom.,
 Reorder level based on Warehouse,Nível de reencomenda no Armazém,
-Will also apply for variants unless overrridden,Também se aplica para as variantes a menos que seja anulado,
+Will also apply for variants unless overridden,Também se aplica para as variantes a menos que seja anulado,
 Units of Measure,Unidades de medida,
 Will also apply for variants,Também se aplicará para as variantes,
 Serial Nos and Batches,Números de série e lotes,
diff --git a/erpnext/translations/ro.csv b/erpnext/translations/ro.csv
index 0cb3f84..ac7e598 100644
--- a/erpnext/translations/ro.csv
+++ b/erpnext/translations/ro.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Perioada de garanție (în zile),
 Auto re-order,Re-comandă automată,
 Reorder level based on Warehouse,Nivel pentru re-comanda bazat pe Magazie,
-Will also apply for variants unless overrridden,Se va aplica și pentru variantele cu excepția cazului în overrridden,
+Will also apply for variants unless overridden,Se va aplica și pentru variantele cu excepția cazului în overridden,
 Units of Measure,Unitati de masura,
 Will also apply for variants,"Va aplică, de asemenea pentru variante",
 Serial Nos and Batches,Numere și loturi seriale,
diff --git a/erpnext/translations/ru.csv b/erpnext/translations/ru.csv
index da4e1be..52c2998 100644
--- a/erpnext/translations/ru.csv
+++ b/erpnext/translations/ru.csv
@@ -6985,7 +6985,7 @@
 Warranty Period (in days),Гарантийный период (дней),
 Auto re-order,Автоматический перезаказ,
 Reorder level based on Warehouse,Уровень переупорядочивания на основе склада,
-Will also apply for variants unless overrridden,"Будет также применяться для модификаций, если не отменено",
+Will also apply for variants unless overridden,"Будет также применяться для модификаций, если не отменено",
 Units of Measure,Единицы измерения,
 Will also apply for variants,Также применять к модификациям,
 Serial Nos and Batches,Серийные номера и партии,
diff --git a/erpnext/translations/rw.csv b/erpnext/translations/rw.csv
index ae0cb3a..f035d57 100644
--- a/erpnext/translations/rw.csv
+++ b/erpnext/translations/rw.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Igihe cya garanti (muminsi),
 Auto re-order,Ongera utumire,
 Reorder level based on Warehouse,Urwego rwo kwisubiramo rushingiye kububiko,
-Will also apply for variants unless overrridden,Uzasaba kandi kubitandukanye keretse birenze,
+Will also apply for variants unless overridden,Uzasaba kandi kubitandukanye keretse birenze,
 Units of Measure,Ibipimo,
 Will also apply for variants,Uzasaba kandi kubitandukanye,
 Serial Nos and Batches,Urutonde Nomero,
diff --git a/erpnext/translations/si.csv b/erpnext/translations/si.csv
index fa6fbf0..4047263 100644
--- a/erpnext/translations/si.csv
+++ b/erpnext/translations/si.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),වගකීම් කාලය (දින තුළ),
 Auto re-order,වාහන නැවත අනුපිළිවෙලට,
 Reorder level based on Warehouse,ගබඩාව මත පදනම් මොහොත මට්ටමේ,
-Will also apply for variants unless overrridden,ද overrridden මිස ප්රභේද සඳහා අයදුම් කරනු ඇත,
+Will also apply for variants unless overridden,ද overridden මිස ප්රභේද සඳහා අයදුම් කරනු ඇත,
 Units of Measure,නු ඒකක,
 Will also apply for variants,ද ප්රභේද සඳහා අයදුම් කරනු ඇත,
 Serial Nos and Batches,අනුක්රමික අංක සහ කාණ්ඩ,
diff --git a/erpnext/translations/sk.csv b/erpnext/translations/sk.csv
index 0e51158..98e1663 100644
--- a/erpnext/translations/sk.csv
+++ b/erpnext/translations/sk.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Záruční doba (ve dnech),
 Auto re-order,Auto re-order,
 Reorder level based on Warehouse,Úroveň Zmena poradia na základe Warehouse,
-Will also apply for variants unless overrridden,"Bude platiť aj pre varianty, pokiaľ nebude prepísané",
+Will also apply for variants unless overridden,"Bude platiť aj pre varianty, pokiaľ nebude prepísané",
 Units of Measure,merné jednotky,
 Will also apply for variants,Bude platiť aj pre varianty,
 Serial Nos and Batches,Sériové čísla a dávky,
diff --git a/erpnext/translations/sl.csv b/erpnext/translations/sl.csv
index 7c4e11b..5380714 100644
--- a/erpnext/translations/sl.csv
+++ b/erpnext/translations/sl.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garancijski rok (v dnevih),
 Auto re-order,Auto re-order,
 Reorder level based on Warehouse,Raven Preureditev temelji na Warehouse,
-Will also apply for variants unless overrridden,Bo veljalo tudi za variante razen overrridden,
+Will also apply for variants unless overridden,Bo veljalo tudi za variante razen overridden,
 Units of Measure,Merske enote,
 Will also apply for variants,Bo veljalo tudi za variante,
 Serial Nos and Batches,Serijska št in Serije,
diff --git a/erpnext/translations/sq.csv b/erpnext/translations/sq.csv
index 0f10795..2a893d2 100644
--- a/erpnext/translations/sq.csv
+++ b/erpnext/translations/sq.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garanci Periudha (në ditë),
 Auto re-order,Auto ri-qëllim,
 Reorder level based on Warehouse,Niveli Reorder bazuar në Magazina,
-Will also apply for variants unless overrridden,Gjithashtu do të aplikojë për variantet nëse overrridden,
+Will also apply for variants unless overridden,Gjithashtu do të aplikojë për variantet nëse overridden,
 Units of Measure,Njësitë e masës,
 Will also apply for variants,Gjithashtu do të aplikojë për variantet,
 Serial Nos and Batches,Serial Nr dhe Batches,
diff --git a/erpnext/translations/sr.csv b/erpnext/translations/sr.csv
index 38116ec..c1e5eb0 100644
--- a/erpnext/translations/sr.csv
+++ b/erpnext/translations/sr.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Гарантни период (у данима),
 Auto re-order,Ауто поново реда,
 Reorder level based on Warehouse,Промени редослед ниво на основу Варехоусе,
-Will also apply for variants unless overrridden,Ће конкурисати и за варијанте осим оверрридден,
+Will also apply for variants unless overridden,Ће конкурисати и за варијанте осим оверрридден,
 Units of Measure,Мерних јединица,
 Will also apply for variants,Ће конкурисати и за варијанте,
 Serial Nos and Batches,Сериал Нос анд Пакети,
diff --git a/erpnext/translations/sv.csv b/erpnext/translations/sv.csv
index c4d46ea..8b4ab06 100644
--- a/erpnext/translations/sv.csv
+++ b/erpnext/translations/sv.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Garantitiden (i dagar),
 Auto re-order,Auto återbeställning,
 Reorder level based on Warehouse,Beställningsnivå baserat på Warehouse,
-Will also apply for variants unless overrridden,Kommer också att ansöka om varianter såvida inte överskriden,
+Will also apply for variants unless overridden,Kommer också att ansöka om varianter såvida inte överskriden,
 Units of Measure,Måttenheter,
 Will also apply for variants,Kommer också att ansöka om varianter,
 Serial Nos and Batches,Serienummer och partier,
diff --git a/erpnext/translations/sw.csv b/erpnext/translations/sw.csv
index ad144f0..fa2287c 100644
--- a/erpnext/translations/sw.csv
+++ b/erpnext/translations/sw.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Kipindi cha udhamini (katika siku),
 Auto re-order,Rejesha upya,
 Reorder level based on Warehouse,Weka upya ngazi kulingana na Ghala,
-Will also apply for variants unless overrridden,Pia itatumika kwa vipengee isipokuwa imeingizwa,
+Will also apply for variants unless overridden,Pia itatumika kwa vipengee isipokuwa imeingizwa,
 Units of Measure,Units of Measure,
 Will also apply for variants,Pia itatumika kwa vipengee,
 Serial Nos and Batches,Serial Nos na Batches,
diff --git a/erpnext/translations/ta.csv b/erpnext/translations/ta.csv
index 5ccabc0..6eaae34 100644
--- a/erpnext/translations/ta.csv
+++ b/erpnext/translations/ta.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),உத்தரவாதத்தை காலம் (நாட்கள்),
 Auto re-order,வாகன மறு ஒழுங்கு,
 Reorder level based on Warehouse,கிடங்கில் அடிப்படையில் மறுவரிசைப்படுத்துக நிலை,
-Will also apply for variants unless overrridden,Overrridden வரை கூட வகைகளில் விண்ணப்பிக்க,
+Will also apply for variants unless overridden,Overrridden வரை கூட வகைகளில் விண்ணப்பிக்க,
 Units of Measure,அளவின் அலகுகள்,
 Will also apply for variants,கூட வகைகளில் விண்ணப்பிக்க,
 Serial Nos and Batches,சீரியல் எண்கள் மற்றும் தொகுப்புகளும்,
diff --git a/erpnext/translations/te.csv b/erpnext/translations/te.csv
index 8472163..d3f739a 100644
--- a/erpnext/translations/te.csv
+++ b/erpnext/translations/te.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),(రోజుల్లో) వారంటీ వ్యవధి,
 Auto re-order,ఆటో క్రమాన్ని,
 Reorder level based on Warehouse,వేర్హౌస్ ఆధారంగా క్రమాన్ని స్థాయి,
-Will also apply for variants unless overrridden,Overrridden తప్ప కూడా రూపాంతరాలు వర్తిస్తాయని,
+Will also apply for variants unless overridden,Overrridden తప్ప కూడా రూపాంతరాలు వర్తిస్తాయని,
 Units of Measure,యూనిట్స్ ఆఫ్ మెజర్,
 Will also apply for variants,కూడా రూపాంతరాలు వర్తిస్తాయని,
 Serial Nos and Batches,సీరియల్ Nos మరియు ఇస్తున్న,
diff --git a/erpnext/translations/th.csv b/erpnext/translations/th.csv
index dcd632b..a065595 100644
--- a/erpnext/translations/th.csv
+++ b/erpnext/translations/th.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),ระยะเวลารับประกัน (วัน),
 Auto re-order,Auto สั่งซื้อใหม่,
 Reorder level based on Warehouse,ระดับสั่งซื้อใหม่บนพื้นฐานของคลังสินค้า,
-Will also apply for variants unless overrridden,นอกจากนี้ยังจะใช้สำหรับสายพันธุ์เว้นแต่ overrridden,
+Will also apply for variants unless overridden,นอกจากนี้ยังจะใช้สำหรับสายพันธุ์เว้นแต่ overridden,
 Units of Measure,หน่วยวัด,
 Will also apply for variants,นอกจากนี้ยังจะใช้สำหรับสายพันธุ์,
 Serial Nos and Batches,หมายเลขและชุดเลขที่ผลิตภัณฑ์,
diff --git a/erpnext/translations/tr.csv b/erpnext/translations/tr.csv
index 3708246..9e916f0 100644
--- a/erpnext/translations/tr.csv
+++ b/erpnext/translations/tr.csv
@@ -7051,7 +7051,7 @@
 Warranty Period (in days),Garanti Süresi (gün),
 Auto re-order,Otomatik Yeniden Sipariş,
 Reorder level based on Warehouse,Depo bazlı Yeniden sipariş seviyesi,
-Will also apply for variants unless overrridden,Geçersiz kılınmadığı sürece varyantlar için de geçerli olacaktır.,
+Will also apply for variants unless overridden,Geçersiz kılınmadığı sürece varyantlar için de geçerli olacaktır.,
 Units of Measure,Ölçü Birimleri,
 Will also apply for variants,Varyantlar için de geçerli olacak,
 Serial Nos and Batches,Seri No ve Batches (Parti),
diff --git a/erpnext/translations/uk.csv b/erpnext/translations/uk.csv
index 1752330..8d1fb04 100644
--- a/erpnext/translations/uk.csv
+++ b/erpnext/translations/uk.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Гарантійний термін (в днях),
 Auto re-order,Авто-дозамовлення,
 Reorder level based on Warehouse,Рівень перезамовлення по складу,
-Will also apply for variants unless overrridden,"Буде також застосовуватися для варіантів, якщо не перевказано",
+Will also apply for variants unless overridden,"Буде також застосовуватися для варіантів, якщо не перевказано",
 Units of Measure,одиниці виміру,
 Will also apply for variants,Буде також застосовуватися для варіантів,
 Serial Nos and Batches,Серійні номери і Порції,
diff --git a/erpnext/translations/ur.csv b/erpnext/translations/ur.csv
index 504cc8d..649c1c7 100644
--- a/erpnext/translations/ur.csv
+++ b/erpnext/translations/ur.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),(دن میں) وارنٹی مدت,
 Auto re-order,آٹو دوبارہ آرڈر,
 Reorder level based on Warehouse,گودام کی بنیاد پر ترتیب کی سطح کو منتخب,
-Will also apply for variants unless overrridden,overrridden جب تک بھی مختلف حالتوں کے لئے لاگو ہوں گے,
+Will also apply for variants unless overridden,overridden جب تک بھی مختلف حالتوں کے لئے لاگو ہوں گے,
 Units of Measure,پیمائش کی اکائیوں,
 Will also apply for variants,بھی مختلف حالتوں کے لئے لاگو ہوں گے,
 Serial Nos and Batches,سیریل نمبر اور بیچوں,
diff --git a/erpnext/translations/uz.csv b/erpnext/translations/uz.csv
index 6b25e7b..5ca51cc 100644
--- a/erpnext/translations/uz.csv
+++ b/erpnext/translations/uz.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Kafolat muddati (kunlar),
 Auto re-order,Avtomatik buyurtma,
 Reorder level based on Warehouse,Qoidalarga asoslangan qayta tartiblash,
-Will also apply for variants unless overrridden,"Variantlar uchun ham qo&#39;llanilmaydi, agar bekor qilinsa",
+Will also apply for variants unless overridden,"Variantlar uchun ham qo&#39;llanilmaydi, agar bekor qilinsa",
 Units of Measure,O&#39;lchov birliklari,
 Will also apply for variants,"Shuningdek, variantlar uchun ham qo&#39;llaniladi",
 Serial Nos and Batches,Seriya nos va paketlar,
diff --git a/erpnext/translations/vi.csv b/erpnext/translations/vi.csv
index e576ef7..7a005fa 100644
--- a/erpnext/translations/vi.csv
+++ b/erpnext/translations/vi.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),Thời gian bảo hành (trong...ngày),
 Auto re-order,Auto lại trật tự,
 Reorder level based on Warehouse,mức đèn đỏ mua vật tư (phải bổ xung hoặc đặt mua thêm),
-Will also apply for variants unless overrridden,Cũng sẽ được áp dụng cho các biến thể trừ phần bị ghi đèn,
+Will also apply for variants unless overridden,Cũng sẽ được áp dụng cho các biến thể trừ phần bị ghi đèn,
 Units of Measure,Đơn vị đo lường,
 Will also apply for variants,Cũng sẽ được áp dụng cho các biến thể,
 Serial Nos and Batches,Số hàng loạt và hàng loạt,
diff --git a/erpnext/translations/zh-TW.csv b/erpnext/translations/zh-TW.csv
index 699d802..0f76e97 100644
--- a/erpnext/translations/zh-TW.csv
+++ b/erpnext/translations/zh-TW.csv
@@ -2964,7 +2964,7 @@
 Code {0} already exist,代碼{0}已經存在
 Sales orders are not available for production,銷售訂單不可用於生產
 Fixed Asset Depreciation Settings,固定資產折舊設置
-Will also apply for variants unless overrridden,同時將申請變種,除非overrridden,
+Will also apply for variants unless overridden,同時將申請變種,除非overridden,
 Advances,進展
 Manufacture against Material Request,對製造材料要求
 Assessment Group: ,評估組:
diff --git a/erpnext/translations/zh.csv b/erpnext/translations/zh.csv
index 70ec81a..cf89dc6 100644
--- a/erpnext/translations/zh.csv
+++ b/erpnext/translations/zh.csv
@@ -7052,7 +7052,7 @@
 Warranty Period (in days),保修期限(天数),
 Auto re-order,自动重订货,
 Reorder level based on Warehouse,根据仓库订货点水平,
-Will also apply for variants unless overrridden,除非手动指定,否则会同时应用于变体,
+Will also apply for variants unless overridden,除非手动指定,否则会同时应用于变体,
 Units of Measure,计量单位,
 Will also apply for variants,会同时应用于变体,
 Serial Nos and Batches,序列号和批号,
@@ -8743,3 +8743,4 @@
 Make a call,打个电话,
 Approve,同意,
 Reject,拒绝,
+Stock,库存,
diff --git a/erpnext/translations/zh_tw.csv b/erpnext/translations/zh_tw.csv
index 75157f0..8ecbaaa 100644
--- a/erpnext/translations/zh_tw.csv
+++ b/erpnext/translations/zh_tw.csv
@@ -7485,7 +7485,7 @@
 Warranty Period (in days),保修期限(天數),
 Auto re-order,自動重新排序,
 Reorder level based on Warehouse,根據倉庫訂貨點水平,
-Will also apply for variants unless overrridden,同時將申請變種,除非overrridden,
+Will also apply for variants unless overridden,同時將申請變種,除非overridden,
 Units of Measure,測量的單位,
 Will also apply for variants,同時將申請變種,
 Serial Nos and Batches,序列號和批號,