Merge pull request #40431 from FHenry/dev_fix_opportunity_type_translatable

fix: Opportunity Type Doctype must be translatable
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
index 5258214..41af06f 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
@@ -261,14 +261,16 @@
 
 
 def get_checks_for_pl_and_bs_accounts():
-	dimensions = frappe.db.sql(
-		"""SELECT p.label, p.disabled, p.fieldname, c.default_dimension, c.company, c.mandatory_for_pl, c.mandatory_for_bs
-		FROM `tabAccounting Dimension`p ,`tabAccounting Dimension Detail` c
-		WHERE p.name = c.parent""",
-		as_dict=1,
-	)
+	if frappe.flags.accounting_dimensions_details is None:
+		# nosemgrep
+		frappe.flags.accounting_dimensions_details = frappe.db.sql(
+			"""SELECT p.label, p.disabled, p.fieldname, c.default_dimension, c.company, c.mandatory_for_pl, c.mandatory_for_bs
+			FROM `tabAccounting Dimension`p ,`tabAccounting Dimension Detail` c
+			WHERE p.name = c.parent""",
+			as_dict=1,
+		)
 
-	return dimensions
+	return frappe.flags.accounting_dimensions_details
 
 
 def get_dimension_with_children(doctype, dimensions):
diff --git a/erpnext/accounts/doctype/accounting_dimension/test_accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/test_accounting_dimension.py
index cb7f5f5..10dbe3b 100644
--- a/erpnext/accounts/doctype/accounting_dimension/test_accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/test_accounting_dimension.py
@@ -78,6 +78,8 @@
 
 	def tearDown(self):
 		disable_dimension()
+		frappe.flags.accounting_dimensions_details = None
+		frappe.flags.dimension_filter_map = None
 
 
 def create_dimension():
diff --git a/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py b/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py
index 01f6e60..2179a4d 100644
--- a/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py
+++ b/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py
@@ -66,37 +66,39 @@
 
 
 def get_dimension_filter_map():
-	filters = frappe.db.sql(
-		"""
-		SELECT
-			a.applicable_on_account, d.dimension_value, p.accounting_dimension,
-			p.allow_or_restrict, a.is_mandatory
-		FROM
-			`tabApplicable On Account` a,
-			`tabAccounting Dimension Filter` p
-		LEFT JOIN `tabAllowed Dimension` d ON d.parent = p.name
-		WHERE
-			p.name = a.parent
-			AND p.disabled = 0
-	""",
-		as_dict=1,
-	)
-
-	dimension_filter_map = {}
-
-	for f in filters:
-		f.fieldname = scrub(f.accounting_dimension)
-
-		build_map(
-			dimension_filter_map,
-			f.fieldname,
-			f.applicable_on_account,
-			f.dimension_value,
-			f.allow_or_restrict,
-			f.is_mandatory,
+	if not frappe.flags.get("dimension_filter_map"):
+		filters = frappe.db.sql(
+			"""
+			SELECT
+				a.applicable_on_account, d.dimension_value, p.accounting_dimension,
+				p.allow_or_restrict, a.is_mandatory
+			FROM
+				`tabApplicable On Account` a,
+				`tabAccounting Dimension Filter` p
+			LEFT JOIN `tabAllowed Dimension` d ON d.parent = p.name
+			WHERE
+				p.name = a.parent
+				AND p.disabled = 0
+		""",
+			as_dict=1,
 		)
 
-	return dimension_filter_map
+		dimension_filter_map = {}
+
+		for f in filters:
+			f.fieldname = scrub(f.accounting_dimension)
+
+			build_map(
+				dimension_filter_map,
+				f.fieldname,
+				f.applicable_on_account,
+				f.dimension_value,
+				f.allow_or_restrict,
+				f.is_mandatory,
+			)
+		frappe.flags.dimension_filter_map = dimension_filter_map
+
+	return frappe.flags.dimension_filter_map
 
 
 def build_map(map_object, dimension, account, filter_value, allow_or_restrict, is_mandatory):
diff --git a/erpnext/accounts/doctype/accounting_dimension_filter/test_accounting_dimension_filter.py b/erpnext/accounts/doctype/accounting_dimension_filter/test_accounting_dimension_filter.py
index 6aba2ab..3a7bf80 100644
--- a/erpnext/accounts/doctype/accounting_dimension_filter/test_accounting_dimension_filter.py
+++ b/erpnext/accounts/doctype/accounting_dimension_filter/test_accounting_dimension_filter.py
@@ -47,6 +47,8 @@
 	def tearDown(self):
 		disable_dimension_filter()
 		disable_dimension()
+		frappe.flags.accounting_dimensions_details = None
+		frappe.flags.dimension_filter_map = None
 
 		for si in self.invoice_list:
 			si.load_from_db()
diff --git a/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.py b/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.py
index 30e564c..6728fea 100644
--- a/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.py
+++ b/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.py
@@ -149,6 +149,9 @@
 	import_file = ImportFile("Bank Transaction", file=file, import_type="Insert New Records")
 
 	data = parse_data_from_template(import_file.raw_data)
+	# Importer expects 'Data Import' class, which has 'payload_count' attribute
+	if not data_import.get("payload_count"):
+		data_import.payload_count = len(data) - 1
 
 	if import_file_path:
 		add_bank_account(data, bank_account)
diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py
index 5e17881..4246ba5 100644
--- a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py
+++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py
@@ -56,17 +56,17 @@
 		Bank Transaction should be on the same currency as the Bank Account.
 		"""
 		if self.currency and self.bank_account:
-			account = frappe.get_cached_value("Bank Account", self.bank_account, "account")
-			account_currency = frappe.get_cached_value("Account", account, "account_currency")
+			if account := frappe.get_cached_value("Bank Account", self.bank_account, "account"):
+				account_currency = frappe.get_cached_value("Account", account, "account_currency")
 
-			if self.currency != account_currency:
-				frappe.throw(
-					_(
-						"Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2}"
-					).format(
-						frappe.bold(self.currency), frappe.bold(self.bank_account), frappe.bold(account_currency)
+				if self.currency != account_currency:
+					frappe.throw(
+						_(
+							"Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2}"
+						).format(
+							frappe.bold(self.currency), frappe.bold(self.bank_account), frappe.bold(account_currency)
+						)
 					)
-				)
 
 	def set_status(self):
 		if self.docstatus == 2:
diff --git a/erpnext/accounts/doctype/budget/budget.py b/erpnext/accounts/doctype/budget/budget.py
index 2cf9d97..aa77af6 100644
--- a/erpnext/accounts/doctype/budget/budget.py
+++ b/erpnext/accounts/doctype/budget/budget.py
@@ -139,6 +139,8 @@
 
 def validate_expense_against_budget(args, expense_amount=0):
 	args = frappe._dict(args)
+	if not frappe.get_all("Budget", limit=1):
+		return
 
 	if args.get("company") and not args.fiscal_year:
 		args.fiscal_year = get_fiscal_year(args.get("posting_date"), company=args.get("company"))[0]
@@ -146,6 +148,11 @@
 			"Company", args.get("company"), "exception_budget_approver_role"
 		)
 
+	if not frappe.get_cached_value(
+		"Budget", {"fiscal_year": args.fiscal_year, "company": args.company}
+	):  # nosec
+		return
+
 	if not args.account:
 		args.account = args.get("expense_account")
 
@@ -172,13 +179,13 @@
 		if (
 			args.get(budget_against)
 			and args.account
-			and frappe.db.get_value("Account", {"name": args.account, "root_type": "Expense"})
+			and (frappe.get_cached_value("Account", args.account, "root_type") == "Expense")
 		):
 
 			doctype = dimension.get("document_type")
 
 			if frappe.get_cached_value("DocType", doctype, "is_tree"):
-				lft, rgt = frappe.db.get_value(doctype, args.get(budget_against), ["lft", "rgt"])
+				lft, rgt = frappe.get_cached_value(doctype, args.get(budget_against), ["lft", "rgt"])
 				condition = """and exists(select name from `tab%s`
 					where lft<=%s and rgt>=%s and name=b.%s)""" % (
 					doctype,
diff --git a/erpnext/accounts/doctype/budget_account/budget_account.json b/erpnext/accounts/doctype/budget_account/budget_account.json
index ead0761..c7d8726 100644
--- a/erpnext/accounts/doctype/budget_account/budget_account.json
+++ b/erpnext/accounts/doctype/budget_account/budget_account.json
@@ -1,94 +1,42 @@
 {
- "allow_copy": 0, 
- "allow_import": 0, 
- "allow_rename": 0, 
- "beta": 0, 
- "creation": "2016-05-16 11:54:09.286135", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "", 
- "editable_grid": 1, 
- "engine": "InnoDB", 
+ "actions": [],
+ "creation": "2016-05-16 11:54:09.286135",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "account",
+  "budget_amount"
+ ],
  "fields": [
   {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "account", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Account", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Account", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "account",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Account",
+   "options": "Account",
+   "reqd": 1,
+   "search_index": 1
+  },
   {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "budget_amount", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Budget Amount", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
+   "fieldname": "budget_amount",
+   "fieldtype": "Currency",
+   "in_list_view": 1,
+   "label": "Budget Amount",
+   "options": "Company:company:default_currency",
+   "reqd": 1
   }
- ], 
- "hide_heading": 0, 
- "hide_toolbar": 0, 
- "idx": 0, 
- "image_view": 0, 
- "in_create": 0, 
-
- "is_submittable": 0, 
- "issingle": 0, 
- "istable": 1, 
- "max_attachments": 0, 
- "modified": "2017-01-02 17:02:53.339420", 
- "modified_by": "Administrator", 
- "module": "Accounts", 
- "name": "Budget Account", 
- "name_case": "", 
- "owner": "Administrator", 
- "permissions": [], 
- "quick_entry": 1, 
- "read_only": 0, 
- "read_only_onload": 0, 
- "sort_field": "modified", 
- "sort_order": "DESC", 
- "track_seen": 0
+ ],
+ "istable": 1,
+ "links": [],
+ "modified": "2024-03-04 15:43:27.016947",
+ "modified_by": "Administrator",
+ "module": "Accounts",
+ "name": "Budget Account",
+ "owner": "Administrator",
+ "permissions": [],
+ "quick_entry": 1,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "states": []
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.js b/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.js
index d931f62..ad68352 100644
--- a/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.js
+++ b/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.js
@@ -3,22 +3,36 @@
 
 frappe.ui.form.on("Currency Exchange Settings", {
 	service_provider: function (frm) {
-		if (frm.doc.service_provider == "exchangerate.host") {
-			let result = ["result"];
-			let params = {
-				date: "{transaction_date}",
-				from: "{from_currency}",
-				to: "{to_currency}",
-			};
-			add_param(frm, "https://api.exchangerate.host/convert", params, result);
-		} else if (frm.doc.service_provider == "frankfurter.app") {
-			let result = ["rates", "{to_currency}"];
-			let params = {
-				base: "{from_currency}",
-				symbols: "{to_currency}",
-			};
-			add_param(frm, "https://frankfurter.app/{transaction_date}", params, result);
-		}
+		frm.call({
+			method: "erpnext.accounts.doctype.currency_exchange_settings.currency_exchange_settings.get_api_endpoint",
+			args: {
+				service_provider: frm.doc.service_provider,
+				use_http: frm.doc.use_http,
+			},
+			callback: function (r) {
+				if (r && r.message) {
+					if (frm.doc.service_provider == "exchangerate.host") {
+						let result = ["result"];
+						let params = {
+							date: "{transaction_date}",
+							from: "{from_currency}",
+							to: "{to_currency}",
+						};
+						add_param(frm, r.message, params, result);
+					} else if (frm.doc.service_provider == "frankfurter.app") {
+						let result = ["rates", "{to_currency}"];
+						let params = {
+							base: "{from_currency}",
+							symbols: "{to_currency}",
+						};
+						add_param(frm, r.message, params, result);
+					}
+				}
+			},
+		});
+	},
+	use_http: function (frm) {
+		frm.trigger("service_provider");
 	},
 });
 
diff --git a/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.json b/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.json
index df232a5..bd90b8a 100644
--- a/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.json
+++ b/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.json
@@ -9,6 +9,7 @@
   "disabled",
   "service_provider",
   "api_endpoint",
+  "use_http",
   "access_key",
   "url",
   "column_break_3",
@@ -91,12 +92,19 @@
    "fieldname": "access_key",
    "fieldtype": "Data",
    "label": "Access Key"
+  },
+  {
+   "default": "0",
+   "depends_on": "eval: doc.service_provider != \"Custom\"",
+   "fieldname": "use_http",
+   "fieldtype": "Check",
+   "label": "Use HTTP Protocol"
   }
  ],
  "index_web_pages_for_search": 1,
  "issingle": 1,
  "links": [],
- "modified": "2023-10-04 15:30:25.333860",
+ "modified": "2024-03-18 08:32:26.895076",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Currency Exchange Settings",
diff --git a/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py b/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py
index 3393d41..b8817c6 100644
--- a/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py
+++ b/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py
@@ -31,6 +31,7 @@
 		result_key: DF.Table[CurrencyExchangeSettingsResult]
 		service_provider: DF.Literal["frankfurter.app", "exchangerate.host", "Custom"]
 		url: DF.Data | None
+		use_http: DF.Check
 	# end: auto-generated types
 
 	def validate(self):
@@ -53,7 +54,7 @@
 			self.set("result_key", [])
 			self.set("req_params", [])
 
-			self.api_endpoint = "https://api.exchangerate.host/convert"
+			self.api_endpoint = get_api_endpoint(self.service_provider, self.use_http)
 			self.append("result_key", {"key": "result"})
 			self.append("req_params", {"key": "access_key", "value": self.access_key})
 			self.append("req_params", {"key": "amount", "value": "1"})
@@ -64,7 +65,7 @@
 			self.set("result_key", [])
 			self.set("req_params", [])
 
-			self.api_endpoint = "https://frankfurter.app/{transaction_date}"
+			self.api_endpoint = get_api_endpoint(self.service_provider, self.use_http)
 			self.append("result_key", {"key": "rates"})
 			self.append("result_key", {"key": "{to_currency}"})
 			self.append("req_params", {"key": "base", "value": "{from_currency}"})
@@ -103,3 +104,19 @@
 			frappe.throw(_("Returned exchange rate is neither integer not float."))
 
 		self.url = response.url
+
+
+@frappe.whitelist()
+def get_api_endpoint(service_provider: str = None, use_http: bool = False):
+	if service_provider and service_provider in ["exchangerate.host", "frankfurter.app"]:
+		if service_provider == "exchangerate.host":
+			api = "api.exchangerate.host/convert"
+		elif service_provider == "frankfurter.app":
+			api = "frankfurter.app/{transaction_date}"
+
+		protocol = "https://"
+		if use_http:
+			protocol = "http://"
+
+		return protocol + api
+	return None
diff --git a/erpnext/accounts/doctype/dunning/dunning.json b/erpnext/accounts/doctype/dunning/dunning.json
index b7e8aea..3273462 100644
--- a/erpnext/accounts/doctype/dunning/dunning.json
+++ b/erpnext/accounts/doctype/dunning/dunning.json
@@ -185,7 +185,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Address",
    "read_only": 1
   },
@@ -204,7 +204,7 @@
   },
   {
    "fieldname": "company_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Company Address Display",
    "read_only": 1
   },
@@ -381,7 +381,7 @@
  ],
  "is_submittable": 1,
  "links": [],
- "modified": "2023-06-15 15:46:53.865712",
+ "modified": "2024-03-22 16:01:13.231067",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Dunning",
diff --git a/erpnext/accounts/doctype/dunning/dunning.py b/erpnext/accounts/doctype/dunning/dunning.py
index e3897bf..f7c4d90 100644
--- a/erpnext/accounts/doctype/dunning/dunning.py
+++ b/erpnext/accounts/doctype/dunning/dunning.py
@@ -32,14 +32,14 @@
 
 		from erpnext.accounts.doctype.overdue_payment.overdue_payment import OverduePayment
 
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		base_dunning_amount: DF.Currency
 		body_text: DF.TextEditor | None
 		closing_text: DF.TextEditor | None
 		company: DF.Link
 		company_address: DF.Link | None
-		company_address_display: DF.SmallText | None
+		company_address_display: DF.TextEditor | None
 		contact_display: DF.SmallText | None
 		contact_email: DF.Data | None
 		contact_mobile: DF.SmallText | None
diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js
index 741039a..7d467cb 100644
--- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js
+++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js
@@ -57,13 +57,13 @@
 	get_entries: function (frm, account) {
 		frappe.call({
 			method: "get_accounts_data",
-			doc: cur_frm.doc,
+			doc: frm.doc,
 			account: account,
 			callback: function (r) {
 				frappe.model.clear_table(frm.doc, "accounts");
 				if (r.message) {
 					r.message.forEach((d) => {
-						cur_frm.add_child("accounts", d);
+						frm.add_child("accounts", d);
 					});
 					frm.events.get_total_gain_loss(frm);
 					refresh_field("accounts");
diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
index 8be09db..29732ef 100644
--- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
+++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
@@ -628,21 +628,21 @@
 	if account_balance and (
 		account_balance[0].balance or account_balance[0].balance_in_account_currency
 	):
-		account_with_new_balance = ExchangeRateRevaluation.calculate_new_account_balance(
+		if account_with_new_balance := ExchangeRateRevaluation.calculate_new_account_balance(
 			company, posting_date, account_balance
-		)
-		row = account_with_new_balance[0]
-		account_details.update(
-			{
-				"balance_in_base_currency": row["balance_in_base_currency"],
-				"balance_in_account_currency": row["balance_in_account_currency"],
-				"current_exchange_rate": row["current_exchange_rate"],
-				"new_exchange_rate": row["new_exchange_rate"],
-				"new_balance_in_base_currency": row["new_balance_in_base_currency"],
-				"new_balance_in_account_currency": row["new_balance_in_account_currency"],
-				"zero_balance": row["zero_balance"],
-				"gain_loss": row["gain_loss"],
-			}
-		)
+		):
+			row = account_with_new_balance[0]
+			account_details.update(
+				{
+					"balance_in_base_currency": row["balance_in_base_currency"],
+					"balance_in_account_currency": row["balance_in_account_currency"],
+					"current_exchange_rate": row["current_exchange_rate"],
+					"new_exchange_rate": row["new_exchange_rate"],
+					"new_balance_in_base_currency": row["new_balance_in_base_currency"],
+					"new_balance_in_account_currency": row["new_balance_in_account_currency"],
+					"zero_balance": row["zero_balance"],
+					"gain_loss": row["gain_loss"],
+				}
+			)
 
 	return account_details
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.json b/erpnext/accounts/doctype/gl_entry/gl_entry.json
index c071193..991a08b 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.json
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.json
@@ -179,7 +179,8 @@
    "fieldname": "voucher_detail_no",
    "fieldtype": "Data",
    "label": "Voucher Detail No",
-   "read_only": 1
+   "read_only": 1,
+   "search_index": 1
   },
   {
    "fieldname": "project",
@@ -290,7 +291,7 @@
  "idx": 1,
  "in_create": 1,
  "links": [],
- "modified": "2023-09-26 12:03:23.031733",
+ "modified": "2024-03-19 18:43:42.235373",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "GL Entry",
@@ -325,4 +326,4 @@
  "sort_field": "modified",
  "sort_order": "DESC",
  "states": []
-}
+}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index def2838..a6f6d4e 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -32,8 +32,6 @@
 		account: DF.Link | None
 		account_currency: DF.Link | None
 		against: DF.Text | None
-		against_link: DF.DynamicLink | None
-		against_type: DF.Link | None
 		against_voucher: DF.DynamicLink | None
 		against_voucher_type: DF.Link | None
 		company: DF.Link | None
@@ -323,7 +321,7 @@
 		party_condition = ""
 
 	if against_voucher_type == "Sales Invoice":
-		party_account = frappe.db.get_value(against_voucher_type, against_voucher, "debit_to")
+		party_account = frappe.get_cached_value(against_voucher_type, against_voucher, "debit_to")
 		account_condition = "and account in ({0}, {1})".format(
 			frappe.db.escape(account), frappe.db.escape(party_account)
 		)
@@ -391,8 +389,8 @@
 def validate_frozen_account(account, adv_adj=None):
 	frozen_account = frappe.get_cached_value("Account", account, "freeze_account")
 	if frozen_account == "Yes" and not adv_adj:
-		frozen_accounts_modifier = frappe.db.get_single_value(
-			"Accounts Settings", "frozen_accounts_modifier"
+		frozen_accounts_modifier = frappe.get_cached_value(
+			"Accounts Settings", None, "frozen_accounts_modifier"
 		)
 
 		if not frozen_accounts_modifier:
diff --git a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js
index 6d90c26..f65f0c2 100644
--- a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js
+++ b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js
@@ -189,7 +189,7 @@
 
 	show_general_ledger: (frm) => {
 		if (frm.doc.docstatus > 0) {
-			cur_frm.add_custom_button(
+			frm.add_custom_button(
 				__("Accounting Ledger"),
 				function () {
 					frappe.route_options = {
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index f6d35fe..ed134ba 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -196,7 +196,7 @@
 			!(frm.doc.accounts || []).length ||
 			((frm.doc.accounts || []).length === 1 && !frm.doc.accounts[0].account)
 		) {
-			if (in_list(["Bank Entry", "Cash Entry"], frm.doc.voucher_type)) {
+			if (["Bank Entry", "Cash Entry"].includes(frm.doc.voucher_type)) {
 				return frappe.call({
 					type: "GET",
 					method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_default_bank_cash_account",
@@ -255,7 +255,7 @@
 	}
 
 	onload_post_render() {
-		cur_frm.get_field("accounts").grid.set_multiple_add("account");
+		this.frm.get_field("accounts").grid.set_multiple_add("account");
 	}
 
 	load_defaults() {
@@ -308,7 +308,7 @@
 				filters: [[jvd.reference_type, "docstatus", "=", 1]],
 			};
 
-			if (in_list(["Sales Invoice", "Purchase Invoice"], jvd.reference_type)) {
+			if (["Sales Invoice", "Purchase Invoice"].includes(jvd.reference_type)) {
 				out.filters.push([jvd.reference_type, "outstanding_amount", "!=", 0]);
 				// Filter by cost center
 				if (jvd.cost_center) {
@@ -320,7 +320,7 @@
 				out.filters.push([jvd.reference_type, party_account_field, "=", jvd.account]);
 			}
 
-			if (in_list(["Sales Order", "Purchase Order"], jvd.reference_type)) {
+			if (["Sales Order", "Purchase Order"].includes(jvd.reference_type)) {
 				// party_type and party mandatory
 				frappe.model.validate_missing(jvd, "party_type");
 				frappe.model.validate_missing(jvd, "party");
@@ -402,7 +402,7 @@
 				row.debit = -doc.difference;
 			}
 		}
-		cur_frm.cscript.update_totals(doc);
+		this.frm.cscript.update_totals(doc);
 
 		erpnext.accounts.dimensions.copy_dimension_from_first_row(this.frm, cdt, cdn, "accounts");
 	}
@@ -469,11 +469,11 @@
 	},
 
 	debit: function (frm, dt, dn) {
-		cur_frm.cscript.update_totals(frm.doc);
+		frm.cscript.update_totals(frm.doc);
 	},
 
 	credit: function (frm, dt, dn) {
-		cur_frm.cscript.update_totals(frm.doc);
+		frm.cscript.update_totals(frm.doc);
 	},
 
 	exchange_rate: function (frm, cdt, cdn) {
@@ -489,7 +489,7 @@
 });
 
 frappe.ui.form.on("Journal Entry Account", "accounts_remove", function (frm) {
-	cur_frm.cscript.update_totals(frm.doc);
+	frm.cscript.update_totals(frm.doc);
 });
 
 $.extend(erpnext.journal_entry, {
@@ -531,7 +531,7 @@
 			flt(flt(row.credit_in_account_currency) * row.exchange_rate, precision("credit", row))
 		);
 
-		cur_frm.cscript.update_totals(frm.doc);
+		frm.cscript.update_totals(frm.doc);
 	},
 
 	set_exchange_rate: function (frm, cdt, cdn) {
@@ -673,10 +673,10 @@
 		return { filters: filters };
 	},
 
-	reverse_journal_entry: function () {
+	reverse_journal_entry: function (frm) {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.accounts.doctype.journal_entry.journal_entry.make_reverse_journal_entry",
-			frm: cur_frm,
+			frm: frm,
 		});
 	},
 });
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index ab50c38..781d9f5 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -32,7 +32,7 @@
 		frm.set_query("paid_from", function () {
 			frm.events.validate_company(frm);
 
-			var account_types = in_list(["Pay", "Internal Transfer"], frm.doc.payment_type)
+			var account_types = ["Pay", "Internal Transfer"].includes(frm.doc.payment_type)
 				? ["Bank", "Cash"]
 				: [frappe.boot.party_account_types[frm.doc.party_type]];
 			return {
@@ -87,7 +87,7 @@
 		frm.set_query("paid_to", function () {
 			frm.events.validate_company(frm);
 
-			var account_types = in_list(["Receive", "Internal Transfer"], frm.doc.payment_type)
+			var account_types = ["Receive", "Internal Transfer"].includes(frm.doc.payment_type)
 				? ["Bank", "Cash"]
 				: [frappe.boot.party_account_types[frm.doc.party_type]];
 			return {
@@ -134,7 +134,7 @@
 		frm.set_query("payment_term", "references", function (frm, cdt, cdn) {
 			const child = locals[cdt][cdn];
 			if (
-				in_list(["Purchase Invoice", "Sales Invoice"], child.reference_doctype) &&
+				["Purchase Invoice", "Sales Invoice"].includes(child.reference_doctype) &&
 				child.reference_name
 			) {
 				return {
@@ -322,13 +322,13 @@
 			"references"
 		);
 
-		cur_frm.set_df_property(
+		frm.set_df_property(
 			"source_exchange_rate",
 			"description",
 			"1 " + frm.doc.paid_from_account_currency + " = [?] " + company_currency
 		);
 
-		cur_frm.set_df_property(
+		frm.set_df_property(
 			"target_exchange_rate",
 			"description",
 			"1 " + frm.doc.paid_to_account_currency + " = [?] " + company_currency
@@ -395,10 +395,6 @@
 				return {
 					query: "erpnext.controllers.queries.employee_query",
 				};
-			} else if (frm.doc.party_type == "Customer") {
-				return {
-					query: "erpnext.controllers.queries.customer_query",
-				};
 			}
 		});
 
@@ -627,7 +623,7 @@
 		if (frm.doc.paid_from_account_currency == company_currency) {
 			frm.set_value("source_exchange_rate", 1);
 		} else if (frm.doc.paid_from) {
-			if (in_list(["Internal Transfer", "Pay"], frm.doc.payment_type)) {
+			if (["Internal Transfer", "Pay"].includes(frm.doc.payment_type)) {
 				let company_currency = frappe.get_doc(":Company", frm.doc.company).default_currency;
 				frappe.call({
 					method: "erpnext.setup.utils.get_exchange_rate",
@@ -1046,7 +1042,7 @@
 			}
 
 			var allocated_positive_outstanding = paid_amount + allocated_negative_outstanding;
-		} else if (in_list(["Customer", "Supplier"], frm.doc.party_type)) {
+		} else if (["Customer", "Supplier"].includes(frm.doc.party_type)) {
 			total_negative_outstanding = flt(total_negative_outstanding, precision("outstanding_amount"));
 			if (paid_amount > total_negative_outstanding) {
 				if (total_negative_outstanding == 0) {
@@ -1217,7 +1213,7 @@
 
 			if (
 				frm.doc.party_type == "Customer" &&
-				!in_list(["Sales Order", "Sales Invoice", "Journal Entry", "Dunning"], row.reference_doctype)
+				!["Sales Order", "Sales Invoice", "Journal Entry", "Dunning"].includes(row.reference_doctype)
 			) {
 				frappe.model.set_value(row.doctype, row.name, "reference_doctype", null);
 				frappe.msgprint(
@@ -1231,7 +1227,7 @@
 
 			if (
 				frm.doc.party_type == "Supplier" &&
-				!in_list(["Purchase Order", "Purchase Invoice", "Journal Entry"], row.reference_doctype)
+				!["Purchase Order", "Purchase Invoice", "Journal Entry"].includes(row.reference_doctype)
 			) {
 				frappe.model.set_value(row.doctype, row.name, "against_voucher_type", null);
 				frappe.msgprint(
@@ -1327,7 +1323,7 @@
 
 	bank_account: function (frm) {
 		const field = frm.doc.payment_type == "Pay" ? "paid_from" : "paid_to";
-		if (frm.doc.bank_account && in_list(["Pay", "Receive"], frm.doc.payment_type)) {
+		if (frm.doc.bank_account && ["Pay", "Receive"].includes(frm.doc.payment_type)) {
 			frappe.call({
 				method: "erpnext.accounts.doctype.bank_account.bank_account.get_bank_account_details",
 				args: {
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index 95bb188..4684aab 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -30,7 +30,7 @@
 	make_reverse_gl_entries,
 	process_gl_map,
 )
-from erpnext.accounts.party import get_party_account, set_contact_details
+from erpnext.accounts.party import complete_contact_details, get_party_account, set_contact_details
 from erpnext.accounts.utils import (
 	cancel_exchange_gain_loss_journal,
 	get_account_currency,
@@ -446,6 +446,8 @@
 		if self.party:
 			if not self.contact_person:
 				set_contact_details(self, party=frappe._dict({"name": self.party}), party_type=self.party_type)
+			else:
+				complete_contact_details(self)
 			if not self.party_balance:
 				self.party_balance = get_balance_on(
 					party_type=self.party_type, party=self.party, date=self.posting_date, company=self.company
@@ -489,7 +491,9 @@
 				ref_details = get_reference_details(
 					d.reference_doctype, d.reference_name, self.party_account_currency
 				)
-				if ref_exchange_rate:
+
+				# Only update exchange rate when the reference is Journal Entry
+				if ref_exchange_rate and d.reference_doctype == "Journal Entry":
 					ref_details.update({"exchange_rate": ref_exchange_rate})
 
 				for field, value in ref_details.items():
@@ -611,9 +615,9 @@
 
 	def get_valid_reference_doctypes(self):
 		if self.party_type == "Customer":
-			return ("Sales Order", "Sales Invoice", "Journal Entry", "Dunning")
+			return ("Sales Order", "Sales Invoice", "Journal Entry", "Dunning", "Payment Entry")
 		elif self.party_type == "Supplier":
-			return ("Purchase Order", "Purchase Invoice", "Journal Entry")
+			return ("Purchase Order", "Purchase Invoice", "Journal Entry", "Payment Entry")
 		elif self.party_type == "Shareholder":
 			return ("Journal Entry",)
 		elif self.party_type == "Employee":
@@ -1279,6 +1283,7 @@
 					"Journal Entry",
 					"Sales Order",
 					"Purchase Order",
+					"Payment Entry",
 				):
 					self.add_advance_gl_for_reference(gl_entries, ref)
 
@@ -1301,7 +1306,9 @@
 		if getdate(posting_date) < getdate(self.posting_date):
 			posting_date = self.posting_date
 
-		dr_or_cr = "credit" if invoice.reference_doctype in ["Sales Invoice", "Sales Order"] else "debit"
+		dr_or_cr = (
+			"credit" if invoice.reference_doctype in ["Sales Invoice", "Payment Entry"] else "debit"
+		)
 		args_dict["account"] = invoice.account
 		args_dict[dr_or_cr] = invoice.allocated_amount
 		args_dict[dr_or_cr + "_in_account_currency"] = invoice.allocated_amount
@@ -1751,7 +1758,7 @@
 		outstanding_invoices = get_outstanding_invoices(
 			args.get("party_type"),
 			args.get("party"),
-			party_account,
+			[party_account],
 			common_filter=common_filter,
 			posting_date=posting_and_due_date,
 			min_outstanding=args.get("outstanding_amt_greater_than"),
@@ -2290,7 +2297,7 @@
 	pe.party_type = party_type
 	pe.party = doc.get(scrub(party_type))
 	pe.contact_person = doc.get("contact_person")
-	pe.contact_email = doc.get("contact_email")
+	complete_contact_details(pe)
 	pe.ensure_supplier_is_not_blocked()
 
 	pe.paid_from = party_account if payment_type == "Receive" else bank.account
diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
index 5a014b8..6323e4c 100644
--- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
@@ -1514,6 +1514,168 @@
 			for field in ["account", "debit", "credit"]:
 				self.assertEqual(self.expected_gle[row][field], gl_entries[row][field])
 
+	def test_reverse_payment_reconciliation(self):
+		customer = create_customer(frappe.generate_hash(length=10), "INR")
+		pe = create_payment_entry(
+			party_type="Customer",
+			party=customer,
+			payment_type="Receive",
+			paid_from="Debtors - _TC",
+			paid_to="_Test Cash - _TC",
+		)
+		pe.submit()
+
+		reverse_pe = create_payment_entry(
+			party_type="Customer",
+			party=customer,
+			payment_type="Pay",
+			paid_from="_Test Cash - _TC",
+			paid_to="Debtors - _TC",
+		)
+		reverse_pe.submit()
+
+		pr = frappe.get_doc("Payment Reconciliation")
+		pr.company = "_Test Company"
+		pr.party_type = "Customer"
+		pr.party = customer
+		pr.receivable_payable_account = "Debtors - _TC"
+		pr.get_unreconciled_entries()
+		self.assertEqual(len(pr.invoices), 1)
+		self.assertEqual(len(pr.payments), 1)
+
+		self.assertEqual(reverse_pe.name, pr.invoices[0].invoice_number)
+		self.assertEqual(pe.name, pr.payments[0].reference_name)
+
+		invoices = [x.as_dict() for x in pr.invoices]
+		payments = [pr.payments[0].as_dict()]
+		pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments}))
+		pr.reconcile()
+		self.assertEqual(len(pr.invoices), 0)
+		self.assertEqual(len(pr.payments), 0)
+
+	def test_advance_reverse_payment_reconciliation(self):
+		from erpnext.accounts.doctype.account.test_account import create_account
+
+		company = "_Test Company"
+		customer = create_customer(frappe.generate_hash(length=10), "INR")
+		advance_account = create_account(
+			parent_account="Current Assets - _TC",
+			account_name="Advances Received",
+			company=company,
+			account_type="Receivable",
+		)
+
+		frappe.db.set_value(
+			"Company",
+			company,
+			{
+				"book_advance_payments_in_separate_party_account": 1,
+				"default_advance_received_account": advance_account,
+			},
+		)
+		# Reverse Payment(essentially an Invoice)
+		reverse_pe = create_payment_entry(
+			party_type="Customer",
+			party=customer,
+			payment_type="Pay",
+			paid_from="_Test Cash - _TC",
+			paid_to=advance_account,
+		)
+		reverse_pe.save()  # use save() to trigger set_liability_account()
+		reverse_pe.submit()
+
+		# Advance Payment
+		pe = create_payment_entry(
+			party_type="Customer",
+			party=customer,
+			payment_type="Receive",
+			paid_from=advance_account,
+			paid_to="_Test Cash - _TC",
+		)
+		pe.save()  # use save() to trigger set_liability_account()
+		pe.submit()
+
+		# Partially reconcile advance against invoice
+		pr = frappe.get_doc("Payment Reconciliation")
+		pr.company = company
+		pr.party_type = "Customer"
+		pr.party = customer
+		pr.receivable_payable_account = "Debtors - _TC"
+		pr.default_advance_account = advance_account
+		pr.get_unreconciled_entries()
+
+		self.assertEqual(len(pr.invoices), 1)
+		self.assertEqual(len(pr.payments), 1)
+
+		invoices = [x.as_dict() for x in pr.get("invoices")]
+		payments = [x.as_dict() for x in pr.get("payments")]
+		pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments}))
+		pr.allocation[0].allocated_amount = 400
+		pr.reconcile()
+
+		# assert General and Payment Ledger entries post partial reconciliation
+		self.expected_gle = [
+			{"account": "Debtors - _TC", "debit": 0.0, "credit": 400.0},
+			{"account": advance_account, "debit": 400.0, "credit": 0.0},
+			{"account": advance_account, "debit": 0.0, "credit": 1000.0},
+			{"account": "_Test Cash - _TC", "debit": 1000.0, "credit": 0.0},
+		]
+		self.expected_ple = [
+			{
+				"account": advance_account,
+				"voucher_no": pe.name,
+				"against_voucher_no": pe.name,
+				"amount": -1000.0,
+			},
+			{
+				"account": "Debtors - _TC",
+				"voucher_no": pe.name,
+				"against_voucher_no": reverse_pe.name,
+				"amount": -400.0,
+			},
+			{
+				"account": advance_account,
+				"voucher_no": pe.name,
+				"against_voucher_no": pe.name,
+				"amount": 400.0,
+			},
+		]
+		self.voucher_no = pe.name
+		self.check_gl_entries()
+		self.check_pl_entries()
+
+		# Unreconcile
+		unrecon = (
+			frappe.get_doc(
+				{
+					"doctype": "Unreconcile Payment",
+					"company": company,
+					"voucher_type": pe.doctype,
+					"voucher_no": pe.name,
+					"allocations": [{"reference_doctype": reverse_pe.doctype, "reference_name": reverse_pe.name}],
+				}
+			)
+			.save()
+			.submit()
+		)
+
+		# assert General and Payment Ledger entries post unreconciliation
+		self.expected_gle = [
+			{"account": advance_account, "debit": 0.0, "credit": 1000.0},
+			{"account": "_Test Cash - _TC", "debit": 1000.0, "credit": 0.0},
+		]
+		self.expected_ple = [
+			{
+				"account": advance_account,
+				"voucher_no": pe.name,
+				"against_voucher_no": pe.name,
+				"amount": -1000.0,
+			},
+		]
+		self.voucher_no = pe.name
+		self.check_gl_entries()
+		self.check_pl_entries()
+
 
 def create_payment_entry(**args):
 	payment_entry = frappe.new_doc("Payment Entry")
diff --git a/erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py b/erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py
index e8dfda2..3fea325 100644
--- a/erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py
+++ b/erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py
@@ -161,11 +161,12 @@
 	def on_update(self):
 		adv_adj = self.flags.adv_adj
 		if not self.flags.from_repost:
-			self.validate_account_details()
-			self.validate_dimensions_for_pl_and_bs()
-			self.validate_allowed_dimensions()
-			validate_balance_type(self.account, adv_adj)
 			validate_frozen_account(self.account, adv_adj)
+			if not self.delinked:
+				self.validate_account_details()
+				self.validate_dimensions_for_pl_and_bs()
+				self.validate_allowed_dimensions()
+				validate_balance_type(self.account, adv_adj)
 
 		# update outstanding amount
 		if (
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
index 972ce26..dcb1a16 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
@@ -340,10 +340,15 @@
 
 		self.build_qb_filter_conditions(get_invoices=True)
 
+		accounts = [self.receivable_payable_account]
+
+		if self.default_advance_account:
+			accounts.append(self.default_advance_account)
+
 		non_reconciled_invoices = get_outstanding_invoices(
 			self.party_type,
 			self.party,
-			self.receivable_payable_account,
+			accounts,
 			common_filter=self.common_filter_conditions,
 			posting_date=self.ple_posting_date_filter,
 			min_outstanding=self.minimum_invoice_amount if self.minimum_invoice_amount else None,
diff --git a/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py
index 301e6ef..1d20a5b 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py
+++ b/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py
@@ -1130,6 +1130,17 @@
 		self.assertEqual(pr.allocation[0].allocated_amount, 85)
 		self.assertEqual(pr.allocation[0].difference_amount, 0)
 
+		pr.reconcile()
+		si.reload()
+		self.assertEqual(si.outstanding_amount, 0)
+		# No Exchange Gain/Loss journal should be generated
+		exc_gain_loss_journals = frappe.db.get_all(
+			"Journal Entry Account",
+			filters={"reference_type": si.doctype, "reference_name": si.name, "docstatus": 1},
+			fields=["parent"],
+		)
+		self.assertEqual(exc_gain_loss_journals, [])
+
 	def test_reconciliation_purchase_invoice_against_return(self):
 		self.supplier = "_Test Supplier USD"
 		pi = self.create_purchase_invoice(qty=5, rate=50, do_not_submit=True)
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.js b/erpnext/accounts/doctype/payment_request/payment_request.js
index d07f824..f12facf 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.js
+++ b/erpnext/accounts/doctype/payment_request/payment_request.js
@@ -32,7 +32,7 @@
 	if (
 		frm.doc.payment_request_type == "Inward" &&
 		frm.doc.payment_channel !== "Phone" &&
-		!in_list(["Initiated", "Paid"], frm.doc.status) &&
+		!["Initiated", "Paid"].includes(frm.doc.status) &&
 		!frm.doc.__islocal &&
 		frm.doc.docstatus == 1
 	) {
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
index 2a84d97..76c0a09 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
@@ -141,7 +141,8 @@
 		previous_fiscal_year = get_fiscal_year(last_year_closing, company=self.company, boolean=True)
 
 		if previous_fiscal_year and not frappe.db.exists(
-			"GL Entry", {"posting_date": ("<=", last_year_closing), "company": self.company}
+			"GL Entry",
+			{"posting_date": ("<=", last_year_closing), "company": self.company, "is_cancelled": 0},
 		):
 			return
 
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js
index a6e8bfa..52c7706 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js
@@ -193,7 +193,7 @@
 	make_sales_return() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.accounts.doctype.pos_invoice.pos_invoice.make_sales_return",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 };
@@ -293,7 +293,7 @@
 									});
 								} else if (frappe.dom.freeze_count != 0) {
 									frappe.dom.unfreeze();
-									cur_frm.reload_doc();
+									frm.reload_doc();
 									cur_pos.payment.events.submit_invoice();
 
 									frappe.show_alert({
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
index 955b66a..467ea54 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
@@ -420,7 +420,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Address",
    "read_only": 1
   },
@@ -475,7 +475,7 @@
   },
   {
    "fieldname": "shipping_address",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Shipping Address",
    "print_hide": 1,
    "read_only": 1
@@ -489,7 +489,7 @@
   },
   {
    "fieldname": "company_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hidden": 1,
    "label": "Company Address",
    "print_hide": 1,
@@ -775,7 +775,7 @@
   },
   {
    "fieldname": "other_charges_calculation",
-   "fieldtype": "Long Text",
+   "fieldtype": "Text Editor",
    "label": "Taxes and Charges Calculation",
    "no_copy": 1,
    "oldfieldtype": "HTML",
@@ -1563,7 +1563,7 @@
  "icon": "fa fa-file-text",
  "is_submittable": 1,
  "links": [],
- "modified": "2023-11-20 12:27:12.848149",
+ "modified": "2024-03-22 16:15:08.561034",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "POS Invoice",
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
index 1a7eef6..8052c4c 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
@@ -47,7 +47,7 @@
 
 		account_for_change_amount: DF.Link | None
 		additional_discount_percentage: DF.Float
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		advances: DF.Table[SalesInvoiceAdvance]
 		against_income_account: DF.SmallText | None
 		allocate_advances_automatically: DF.Check
@@ -72,7 +72,7 @@
 		commission_rate: DF.Float
 		company: DF.Link
 		company_address: DF.Link | None
-		company_address_display: DF.SmallText | None
+		company_address_display: DF.TextEditor | None
 		consolidated_invoice: DF.Link | None
 		contact_display: DF.SmallText | None
 		contact_email: DF.Data | None
@@ -109,7 +109,7 @@
 		loyalty_redemption_cost_center: DF.Link | None
 		naming_series: DF.Literal["ACC-PSINV-.YYYY.-"]
 		net_total: DF.Currency
-		other_charges_calculation: DF.LongText | None
+		other_charges_calculation: DF.TextEditor | None
 		outstanding_amount: DF.Currency
 		packed_items: DF.Table[PackedItem]
 		paid_amount: DF.Currency
@@ -138,7 +138,7 @@
 		selling_price_list: DF.Link
 		set_posting_time: DF.Check
 		set_warehouse: DF.Link | None
-		shipping_address: DF.SmallText | None
+		shipping_address: DF.TextEditor | None
 		shipping_address_name: DF.Link | None
 		shipping_rule: DF.Link | None
 		source: DF.Link | None
diff --git a/erpnext/accounts/doctype/pricing_rule/utils.py b/erpnext/accounts/doctype/pricing_rule/utils.py
index 17293ad..73c5d59 100644
--- a/erpnext/accounts/doctype/pricing_rule/utils.py
+++ b/erpnext/accounts/doctype/pricing_rule/utils.py
@@ -736,7 +736,6 @@
 
 def validate_coupon_code(coupon_name):
 	coupon = frappe.get_doc("Coupon Code", coupon_name)
-
 	if coupon.valid_from:
 		if coupon.valid_from > getdate(today()):
 			frappe.throw(_("Sorry, this coupon code's validity has not started"))
diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html
index 5307ccb..81ebf97 100644
--- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html
+++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html
@@ -89,10 +89,11 @@
 	<table class="table table-bordered">
 		<thead>
 			<tr>
-				<th style="width: 25%">30 Days</th>
-				<th style="width: 25%">60 Days</th>
-				<th style="width: 25%">90 Days</th>
-				<th style="width: 25%">120 Days</th>
+				<th style="width: 20%">0 - 30 Days</th>
+				<th style="width: 20%">30 - 60 Days</th>
+				<th style="width: 20%">60 - 90 Days</th>
+				<th style="width: 20%">90 - 120 Days</th>
+				<th style="width: 20%">Above 120 Days</th>
 			</tr>
 		</thead>
 		<tbody>
@@ -101,6 +102,7 @@
 				<td>{{ frappe.utils.fmt_money(ageing.range2, currency=filters.presentation_currency) }}</td>
 				<td>{{ frappe.utils.fmt_money(ageing.range3, currency=filters.presentation_currency) }}</td>
 				<td>{{ frappe.utils.fmt_money(ageing.range4, currency=filters.presentation_currency) }}</td>
+				<td>{{ frappe.utils.fmt_money(ageing.range5, currency=filters.presentation_currency) }}</td>
 			</tr>
 		</tbody>
 	</table>
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index d6455b2..2bd39a5 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -3,6 +3,8 @@
 
 frappe.provide("erpnext.accounts");
 
+cur_frm.cscript.tax_table = "Purchase Taxes and Charges";
+
 erpnext.accounts.payment_triggers.setup("Purchase Invoice");
 erpnext.accounts.taxes.setup_tax_filters("Purchase Taxes and Charges");
 erpnext.accounts.taxes.setup_tax_validations("Purchase Invoice");
@@ -129,17 +131,17 @@
 
 		if (doc.docstatus == 1 && doc.outstanding_amount != 0 && !doc.on_hold) {
 			this.frm.add_custom_button(__("Payment"), () => this.make_payment_entry(), __("Create"));
-			cur_frm.page.set_inner_btn_group_as_primary(__("Create"));
+			this.frm.page.set_inner_btn_group_as_primary(__("Create"));
 		}
 
 		if (!doc.is_return && doc.docstatus == 1) {
 			if (doc.outstanding_amount >= 0 || Math.abs(flt(doc.outstanding_amount)) < flt(doc.grand_total)) {
-				cur_frm.add_custom_button(__("Return / Debit Note"), this.make_debit_note, __("Create"));
+				this.frm.add_custom_button(__("Return / Debit Note"), this.make_debit_note, __("Create"));
 			}
 		}
 
 		if (doc.outstanding_amount > 0 && !cint(doc.is_return) && !doc.on_hold) {
-			cur_frm.add_custom_button(
+			this.frm.add_custom_button(
 				__("Payment Request"),
 				function () {
 					me.make_payment_request();
@@ -460,7 +462,7 @@
 	make_debit_note() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.accounts.doctype.purchase_invoice.purchase_invoice.make_debit_note",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 };
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index 22f2d13..01a3746 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -443,7 +443,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Address",
    "read_only": 1
   },
@@ -489,7 +489,7 @@
   },
   {
    "fieldname": "shipping_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Shipping Address",
    "print_hide": 1,
    "read_only": 1
@@ -760,7 +760,7 @@
   },
   {
    "fieldname": "other_charges_calculation",
-   "fieldtype": "Long Text",
+   "fieldtype": "Text Editor",
    "label": "Taxes and Charges Calculation",
    "no_copy": 1,
    "oldfieldtype": "HTML",
@@ -1363,7 +1363,7 @@
   },
   {
    "fieldname": "billing_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Billing Address",
    "read_only": 1
   },
@@ -1638,7 +1638,7 @@
  "idx": 204,
  "is_submittable": 1,
  "links": [],
- "modified": "2024-03-11 14:46:30.298184",
+ "modified": "2024-03-22 16:15:09.099187",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Purchase Invoice",
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 28d4a5e..4b5b456 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -3,7 +3,7 @@
 
 
 import frappe
-from frappe import _, throw
+from frappe import _, qb, throw
 from frappe.model.mapper import get_mapped_doc
 from frappe.query_builder.functions import Sum
 from frappe.utils import cint, cstr, flt, formatdate, get_link_to_form, getdate, nowdate
@@ -82,7 +82,7 @@
 		)
 
 		additional_discount_percentage: DF.Float
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		advance_tax: DF.Table[AdvanceTax]
 		advances: DF.Table[PurchaseInvoiceAdvance]
 		against_expense_account: DF.SmallText | None
@@ -107,7 +107,7 @@
 		bill_date: DF.Date | None
 		bill_no: DF.Data | None
 		billing_address: DF.Link | None
-		billing_address_display: DF.SmallText | None
+		billing_address_display: DF.TextEditor | None
 		buying_price_list: DF.Link | None
 		cash_bank_account: DF.Link | None
 		clearance_date: DF.Date | None
@@ -147,7 +147,7 @@
 		net_total: DF.Currency
 		on_hold: DF.Check
 		only_include_allocated_payments: DF.Check
-		other_charges_calculation: DF.LongText | None
+		other_charges_calculation: DF.TextEditor | None
 		outstanding_amount: DF.Currency
 		paid_amount: DF.Currency
 		party_account_currency: DF.Link | None
@@ -174,7 +174,7 @@
 		set_posting_time: DF.Check
 		set_warehouse: DF.Link | None
 		shipping_address: DF.Link | None
-		shipping_address_display: DF.SmallText | None
+		shipping_address_display: DF.TextEditor | None
 		shipping_rule: DF.Link | None
 		status: DF.Literal[
 			"",
@@ -742,13 +742,12 @@
 				self.db_set("repost_required", self.needs_repost)
 
 	def make_gl_entries(self, gl_entries=None, from_repost=False):
-		if not gl_entries:
-			gl_entries = self.get_gl_entries()
+		update_outstanding = "No" if (cint(self.is_paid) or self.write_off_account) else "Yes"
+		if self.docstatus == 1:
+			if not gl_entries:
+				gl_entries = self.get_gl_entries()
 
-		if gl_entries:
-			update_outstanding = "No" if (cint(self.is_paid) or self.write_off_account) else "Yes"
-
-			if self.docstatus == 1:
+			if gl_entries:
 				make_gl_entries(
 					gl_entries,
 					update_outstanding=update_outstanding,
@@ -756,29 +755,43 @@
 					from_repost=from_repost,
 				)
 				self.make_exchange_gain_loss_journal()
-			elif self.docstatus == 2:
-				provisional_entries = [a for a in gl_entries if a.voucher_type == "Purchase Receipt"]
-				make_reverse_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
-				if provisional_entries:
-					for entry in provisional_entries:
-						frappe.db.set_value(
-							"GL Entry",
-							{"voucher_type": "Purchase Receipt", "voucher_detail_no": entry.voucher_detail_no},
-							"is_cancelled",
-							1,
-						)
-
-			if update_outstanding == "No":
-				update_outstanding_amt(
-					self.credit_to,
-					"Supplier",
-					self.supplier,
-					self.doctype,
-					self.return_against if cint(self.is_return) and self.return_against else self.name,
-				)
-
-		elif self.docstatus == 2 and cint(self.update_stock) and self.auto_accounting_for_stock:
+		elif self.docstatus == 2:
 			make_reverse_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
+			self.cancel_provisional_entries()
+
+		self.update_supplier_outstanding(update_outstanding)
+
+	def cancel_provisional_entries(self):
+		rows = set()
+		purchase_receipts = set()
+		for d in self.items:
+			if d.purchase_receipt:
+				purchase_receipts.add(d.purchase_receipt)
+				rows.add(d.name)
+
+		if rows:
+			# cancel gl entries
+			gle = qb.DocType("GL Entry")
+			gle_update_query = (
+				qb.update(gle)
+				.set(gle.is_cancelled, 1)
+				.where(
+					(gle.voucher_type == "Purchase Receipt")
+					& (gle.voucher_no.isin(purchase_receipts))
+					& (gle.voucher_detail_no.isin(rows))
+				)
+			)
+			gle_update_query.run()
+
+	def update_supplier_outstanding(self, update_outstanding):
+		if update_outstanding == "No":
+			update_outstanding_amt(
+				self.credit_to,
+				"Supplier",
+				self.supplier,
+				self.doctype,
+				self.return_against if cint(self.is_return) and self.return_against else self.name,
+			)
 
 	def get_gl_entries(self, warehouse_account=None):
 		self.auto_accounting_for_stock = erpnext.is_perpetual_inventory_enabled(self.company)
@@ -891,8 +904,8 @@
 				"Company", self.company, "enable_provisional_accounting_for_non_stock_items"
 			)
 		)
-
-		purchase_receipt_doc_map = {}
+		if provisional_accounting_for_non_stock_items:
+			self.get_provisional_accounts()
 
 		for item in self.get("items"):
 			if flt(item.base_net_amount):
@@ -1029,44 +1042,7 @@
 					dummy, amount = self.get_amount_and_base_amount(item, None)
 
 					if provisional_accounting_for_non_stock_items:
-						if item.purchase_receipt:
-							provisional_account, pr_qty, pr_base_rate = frappe.get_cached_value(
-								"Purchase Receipt Item",
-								item.pr_detail,
-								["provisional_expense_account", "qty", "base_rate"],
-							)
-							provisional_account = provisional_account or self.get_company_default(
-								"default_provisional_account"
-							)
-							purchase_receipt_doc = purchase_receipt_doc_map.get(item.purchase_receipt)
-
-							if not purchase_receipt_doc:
-								purchase_receipt_doc = frappe.get_doc("Purchase Receipt", item.purchase_receipt)
-								purchase_receipt_doc_map[item.purchase_receipt] = purchase_receipt_doc
-
-							# Post reverse entry for Stock-Received-But-Not-Billed if it is booked in Purchase Receipt
-							expense_booked_in_pr = frappe.db.get_value(
-								"GL Entry",
-								{
-									"is_cancelled": 0,
-									"voucher_type": "Purchase Receipt",
-									"voucher_no": item.purchase_receipt,
-									"voucher_detail_no": item.pr_detail,
-									"account": provisional_account,
-								},
-								"name",
-							)
-
-							if expense_booked_in_pr:
-								# Intentionally passing purchase invoice item to handle partial billing
-								purchase_receipt_doc.add_provisional_gl_entry(
-									item,
-									gl_entries,
-									self.posting_date,
-									provisional_account,
-									reverse=1,
-									item_amount=(min(item.qty, pr_qty) * pr_base_rate),
-								)
+						self.make_provisional_gl_entry(gl_entries, item)
 
 					if not self.is_internal_transfer():
 						gl_entries.append(
@@ -1163,6 +1139,57 @@
 			if item.is_fixed_asset and item.landed_cost_voucher_amount:
 				self.update_gross_purchase_amount_for_linked_assets(item)
 
+	def get_provisional_accounts(self):
+		self.provisional_accounts = frappe._dict()
+		linked_purchase_receipts = set([d.purchase_receipt for d in self.items if d.purchase_receipt])
+		pr_items = frappe.get_all(
+			"Purchase Receipt Item",
+			filters={"parent": ("in", linked_purchase_receipts)},
+			fields=["name", "provisional_expense_account", "qty", "base_rate"],
+		)
+		default_provisional_account = self.get_company_default("default_provisional_account")
+		provisional_accounts = set(
+			[
+				d.provisional_expense_account if d.provisional_expense_account else default_provisional_account
+				for d in pr_items
+			]
+		)
+
+		provisional_gl_entries = frappe.get_all(
+			"GL Entry",
+			filters={
+				"voucher_type": "Purchase Receipt",
+				"voucher_no": ("in", linked_purchase_receipts),
+				"account": ("in", provisional_accounts),
+				"is_cancelled": 0,
+			},
+			fields=["voucher_detail_no"],
+		)
+		rows_with_provisional_entries = [d.voucher_detail_no for d in provisional_gl_entries]
+		for item in pr_items:
+			self.provisional_accounts[item.name] = {
+				"provisional_account": item.provisional_expense_account or default_provisional_account,
+				"qty": item.qty,
+				"base_rate": item.base_rate,
+				"has_provisional_entry": item.name in rows_with_provisional_entries,
+			}
+
+	def make_provisional_gl_entry(self, gl_entries, item):
+		if item.purchase_receipt:
+			pr_item = self.provisional_accounts.get(item.pr_detail, {})
+			if pr_item.get("has_provisional_entry"):
+				purchase_receipt_doc = frappe.get_cached_doc("Purchase Receipt", item.purchase_receipt)
+
+				# Intentionally passing purchase invoice item to handle partial billing
+				purchase_receipt_doc.add_provisional_gl_entry(
+					item,
+					gl_entries,
+					self.posting_date,
+					pr_item.get("provisional_account"),
+					reverse=1,
+					item_amount=(min(item.qty, pr_item.get("qty")) * pr_item.get("base_rate")),
+				)
+
 	def update_gross_purchase_amount_for_linked_assets(self, item):
 		assets = frappe.db.get_all(
 			"Asset",
diff --git a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
index 3ee4214..66df76a 100644
--- a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
+++ b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
@@ -745,6 +745,7 @@
    "fieldtype": "Currency",
    "label": "Landed Cost Voucher Amount",
    "no_copy": 1,
+   "options": "Company:company:default_currency",
    "print_hide": 1,
    "read_only": 1
   },
@@ -938,7 +939,7 @@
  "idx": 1,
  "istable": 1,
  "links": [],
- "modified": "2024-02-04 14:11:52.742228",
+ "modified": "2024-03-19 19:09:47.210965",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Purchase Invoice Item",
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js b/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js
index 66a9cbe..4c94503 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js
@@ -1,6 +1,7 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+cur_frm.cscript.tax_table = "Purchase Taxes and Charges";
 erpnext.accounts.taxes.setup_tax_validations("Purchase Taxes and Charges Template");
 erpnext.accounts.taxes.setup_tax_filters("Purchase Taxes and Charges");
 
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 17101cd..cf01bdd 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -3,6 +3,8 @@
 
 frappe.provide("erpnext.accounts");
 
+cur_frm.cscript.tax_table = "Sales Taxes and Charges";
+
 erpnext.accounts.taxes.setup_tax_validations("Sales Invoice");
 erpnext.accounts.payment_triggers.setup("Sales Invoice");
 erpnext.accounts.pos.setup("Sales Invoice");
@@ -59,9 +61,9 @@
 	refresh(doc, dt, dn) {
 		const me = this;
 		super.refresh();
-		if (cur_frm.msgbox && cur_frm.msgbox.$wrapper.is(":visible")) {
+		if (this.frm.msgbox && this.frm.msgbox.$wrapper.is(":visible")) {
 			// hide new msgbox
-			cur_frm.msgbox.hide();
+			this.frm.msgbox.hide();
 		}
 
 		this.frm.toggle_reqd("due_date", !this.frm.doc.is_return);
@@ -111,33 +113,33 @@
 		if (doc.docstatus == 1 && !doc.is_return) {
 			var is_delivered_by_supplier = false;
 
-			is_delivered_by_supplier = cur_frm.doc.items.some(function (item) {
+			is_delivered_by_supplier = this.frm.doc.items.some(function (item) {
 				return item.is_delivered_by_supplier ? true : false;
 			});
 
 			if (doc.outstanding_amount >= 0 || Math.abs(flt(doc.outstanding_amount)) < flt(doc.grand_total)) {
-				cur_frm.add_custom_button(__("Return / Credit Note"), this.make_sales_return, __("Create"));
-				cur_frm.page.set_inner_btn_group_as_primary(__("Create"));
+				this.frm.add_custom_button(__("Return / Credit Note"), this.make_sales_return, __("Create"));
+				this.frm.page.set_inner_btn_group_as_primary(__("Create"));
 			}
 
 			if (cint(doc.update_stock) != 1) {
 				// show Make Delivery Note button only if Sales Invoice is not created from Delivery Note
 				var from_delivery_note = false;
-				from_delivery_note = cur_frm.doc.items.some(function (item) {
+				from_delivery_note = this.frm.doc.items.some(function (item) {
 					return item.delivery_note ? true : false;
 				});
 
 				if (!from_delivery_note && !is_delivered_by_supplier) {
-					cur_frm.add_custom_button(
+					this.frm.add_custom_button(
 						__("Delivery"),
-						cur_frm.cscript["Make Delivery Note"],
+						this.frm.cscript["Make Delivery Note"],
 						__("Create")
 					);
 				}
 			}
 
 			if (doc.outstanding_amount > 0) {
-				cur_frm.add_custom_button(
+				this.frm.add_custom_button(
 					__("Payment Request"),
 					function () {
 						me.make_payment_request();
@@ -145,10 +147,10 @@
 					__("Create")
 				);
 
-				cur_frm.add_custom_button(
+				this.frm.add_custom_button(
 					__("Invoice Discounting"),
 					function () {
-						cur_frm.events.create_invoice_discounting(cur_frm);
+						this.frm.events.create_invoice_discounting(this.frm);
 					},
 					__("Create")
 				);
@@ -169,10 +171,10 @@
 			}
 
 			if (doc.docstatus === 1) {
-				cur_frm.add_custom_button(
+				this.frm.add_custom_button(
 					__("Maintenance Schedule"),
 					function () {
-						cur_frm.cscript.make_maintenance_schedule();
+						this.frm.cscript.make_maintenance_schedule();
 					},
 					__("Create")
 				);
@@ -180,7 +182,7 @@
 		}
 
 		// Show buttons only when pos view is active
-		if (cint(doc.docstatus == 0) && cur_frm.page.current_view_name !== "pos" && !doc.is_return) {
+		if (cint(doc.docstatus == 0) && this.frm.page.current_view_name !== "pos" && !doc.is_return) {
 			this.frm.cscript.sales_order_btn();
 			this.frm.cscript.delivery_note_btn();
 			this.frm.cscript.quotation_btn();
@@ -211,7 +213,7 @@
 	make_maintenance_schedule() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.make_maintenance_schedule",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 
@@ -230,28 +232,27 @@
 
 	set_default_print_format() {
 		// set default print format to POS type or Credit Note
-		if (cur_frm.doc.is_pos) {
-			if (cur_frm.pos_print_format) {
-				cur_frm.meta._default_print_format = cur_frm.meta.default_print_format;
-				cur_frm.meta.default_print_format = cur_frm.pos_print_format;
+		if (this.frm.doc.is_pos) {
+			if (this.frm.pos_print_format) {
+				this.frm.meta._default_print_format = this.frm.meta.default_print_format;
+				this.frm.meta.default_print_format = this.frm.pos_print_format;
 			}
-		} else if (cur_frm.doc.is_return && !cur_frm.meta.default_print_format) {
-			if (cur_frm.return_print_format) {
-				cur_frm.meta._default_print_format = cur_frm.meta.default_print_format;
-				cur_frm.meta.default_print_format = cur_frm.return_print_format;
+		} else if (this.frm.doc.is_return && !this.frm.meta.default_print_format) {
+			if (this.frm.return_print_format) {
+				this.frm.meta._default_print_format = this.frm.meta.default_print_format;
+				this.frm.meta.default_print_format = this.frm.return_print_format;
 			}
 		} else {
-			if (cur_frm.meta._default_print_format) {
-				cur_frm.meta.default_print_format = cur_frm.meta._default_print_format;
-				cur_frm.meta._default_print_format = null;
+			if (this.frm.meta._default_print_format) {
+				this.frm.meta.default_print_format = this.frm.meta._default_print_format;
+				this.frm.meta._default_print_format = null;
 			} else if (
-				in_list(
-					[cur_frm.pos_print_format, cur_frm.return_print_format],
-					cur_frm.meta.default_print_format
+				[this.frm.pos_print_format, this.frm.return_print_format].includes(
+					this.frm.meta.default_print_format
 				)
 			) {
-				cur_frm.meta.default_print_format = null;
-				cur_frm.meta._default_print_format = null;
+				this.frm.meta.default_print_format = null;
+				this.frm.meta._default_print_format = null;
 			}
 		}
 	}
@@ -463,7 +464,7 @@
 	make_sales_return() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.make_sales_return",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
index ac14d98..436f510 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
@@ -90,6 +90,7 @@
   "section_break_49",
   "apply_discount_on",
   "base_discount_amount",
+  "coupon_code",
   "is_cash_or_non_trade_discount",
   "additional_discount_account",
   "column_break_51",
@@ -494,7 +495,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Address",
@@ -565,7 +566,7 @@
   },
   {
    "fieldname": "shipping_address",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Shipping Address",
@@ -583,7 +584,7 @@
   },
   {
    "fieldname": "company_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Company Address",
@@ -946,7 +947,7 @@
   },
   {
    "fieldname": "other_charges_calculation",
-   "fieldtype": "Long Text",
+   "fieldtype": "Text Editor",
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Taxes and Charges Calculation",
@@ -1998,7 +1999,7 @@
   {
    "allow_on_submit": 1,
    "fieldname": "dispatch_address",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Dispatch Address",
    "read_only": 1
   },
@@ -2174,12 +2175,20 @@
    "no_copy": 1
   },
   {
+   "fieldname": "coupon_code",
+   "fieldtype": "Link",
+   "label": "Coupon Code",
+   "options": "Coupon Code"
+  },
+  {
    "default": "1",
    "depends_on": "eval: doc.is_return && doc.return_against",
    "description": "Credit Note will update it's own outstanding amount, even if \"Return Against\" is specified.",
    "fieldname": "update_outstanding_for_self",
    "fieldtype": "Check",
-   "label": "Update Outstanding for Self"
+   "label": "Update Outstanding for Self",
+   "no_copy": 1,
+   "print_hide": 1
   }
  ],
  "icon": "fa fa-file-text",
@@ -2192,7 +2201,7 @@
    "link_fieldname": "consolidated_invoice"
   }
  ],
- "modified": "2024-03-11 14:20:34.874192",
+ "modified": "2024-03-22 17:50:34.395602",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Sales Invoice",
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index bf50e77..a35c6b6 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -16,6 +16,10 @@
 	get_loyalty_program_details_with_points,
 	validate_loyalty_points,
 )
+from erpnext.accounts.doctype.pricing_rule.utils import (
+	update_coupon_code_count,
+	validate_coupon_code,
+)
 from erpnext.accounts.doctype.repost_accounting_ledger.repost_accounting_ledger import (
 	validate_docs_for_deferred_accounting,
 	validate_docs_for_voucher_types,
@@ -73,7 +77,7 @@
 		account_for_change_amount: DF.Link | None
 		additional_discount_account: DF.Link | None
 		additional_discount_percentage: DF.Float
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		advances: DF.Table[SalesInvoiceAdvance]
 		against_income_account: DF.SmallText | None
 		allocate_advances_automatically: DF.Check
@@ -98,7 +102,7 @@
 		commission_rate: DF.Float
 		company: DF.Link
 		company_address: DF.Link | None
-		company_address_display: DF.SmallText | None
+		company_address_display: DF.TextEditor | None
 		company_tax_id: DF.Data | None
 		contact_display: DF.SmallText | None
 		contact_email: DF.Data | None
@@ -106,6 +110,7 @@
 		contact_person: DF.Link | None
 		conversion_rate: DF.Float
 		cost_center: DF.Link | None
+		coupon_code: DF.Link | None
 		currency: DF.Link
 		customer: DF.Link | None
 		customer_address: DF.Link | None
@@ -114,7 +119,7 @@
 		debit_to: DF.Link
 		disable_rounded_total: DF.Check
 		discount_amount: DF.Currency
-		dispatch_address: DF.SmallText | None
+		dispatch_address: DF.TextEditor | None
 		dispatch_address_name: DF.Link | None
 		dont_create_loyalty_points: DF.Check
 		due_date: DF.Date | None
@@ -146,7 +151,7 @@
 		naming_series: DF.Literal["ACC-SINV-.YYYY.-", "ACC-SINV-RET-.YYYY.-"]
 		net_total: DF.Currency
 		only_include_allocated_payments: DF.Check
-		other_charges_calculation: DF.LongText | None
+		other_charges_calculation: DF.TextEditor | None
 		outstanding_amount: DF.Currency
 		packed_items: DF.Table[PackedItem]
 		paid_amount: DF.Currency
@@ -178,7 +183,7 @@
 		set_posting_time: DF.Check
 		set_target_warehouse: DF.Link | None
 		set_warehouse: DF.Link | None
-		shipping_address: DF.SmallText | None
+		shipping_address: DF.TextEditor | None
 		shipping_address_name: DF.Link | None
 		shipping_rule: DF.Link | None
 		source: DF.Link | None
@@ -294,6 +299,10 @@
 			self.doctype, self.customer, self.company, self.inter_company_invoice_reference
 		)
 
+		# Validating coupon code
+		if self.coupon_code:
+			validate_coupon_code(self.coupon_code)
+
 		if cint(self.is_pos):
 			self.validate_pos()
 
@@ -473,6 +482,9 @@
 			self.update_project()
 		update_linked_doc(self.doctype, self.name, self.inter_company_invoice_reference)
 
+		if self.coupon_code:
+			update_coupon_code_count(self.coupon_code, "used")
+
 		# create the loyalty point ledger entry if the customer is enrolled in any loyalty program
 		if (
 			not self.is_return
@@ -563,6 +575,9 @@
 		self.db_set("status", "Cancelled")
 		self.db_set("repost_required", 0)
 
+		if self.coupon_code:
+			update_coupon_code_count(self.coupon_code, "cancelled")
+
 		if (
 			frappe.db.get_single_value("Selling Settings", "sales_update_frequency") == "Each Transaction"
 		):
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index c8a35eb..7e3eec5 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -1588,6 +1588,12 @@
 		self.assertEqual(frappe.db.get_value("Sales Invoice", si1.name, "outstanding_amount"), -1000)
 		self.assertEqual(frappe.db.get_value("Sales Invoice", si.name, "outstanding_amount"), 2500)
 
+	def test_zero_qty_return_invoice_with_stock_effect(self):
+		cr_note = create_sales_invoice(qty=-1, rate=300, is_return=1, do_not_submit=True)
+		cr_note.update_stock = True
+		cr_note.items[0].qty = 0
+		self.assertRaises(frappe.ValidationError, cr_note.save)
+
 	def test_return_invoice_with_account_mismatch(self):
 		debtors2 = create_account(
 			parent_account="Accounts Receivable - _TC",
@@ -3945,7 +3951,6 @@
 		)
 
 		supplier.append("companies", {"company": allowed_to_interact_with})
-
 		supplier.insert()
 		supplier_name = supplier.name
 	else:
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js
index 91d4d04..c42623a 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js
@@ -1,5 +1,6 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+cur_frm.cscript.tax_table = "Sales Taxes and Charges";
 erpnext.accounts.taxes.setup_tax_validations("Sales Taxes and Charges Template");
 erpnext.accounts.taxes.setup_tax_filters("Sales Taxes and Charges");
diff --git a/erpnext/accounts/doctype/transaction_deletion_record_details/__init__.py b/erpnext/accounts/doctype/transaction_deletion_record_details/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/accounts/doctype/transaction_deletion_record_details/__init__.py
diff --git a/erpnext/accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.json b/erpnext/accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.json
new file mode 100644
index 0000000..fe4b085
--- /dev/null
+++ b/erpnext/accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.json
@@ -0,0 +1,58 @@
+{
+ "actions": [],
+ "allow_rename": 1,
+ "creation": "2024-02-04 10:53:32.307930",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "doctype_name",
+  "docfield_name",
+  "no_of_docs",
+  "done"
+ ],
+ "fields": [
+  {
+   "fieldname": "doctype_name",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "DocType",
+   "options": "DocType",
+   "read_only": 1,
+   "reqd": 1
+  },
+  {
+   "fieldname": "docfield_name",
+   "fieldtype": "Data",
+   "label": "DocField",
+   "read_only": 1
+  },
+  {
+   "fieldname": "no_of_docs",
+   "fieldtype": "Int",
+   "in_list_view": 1,
+   "label": "No of Docs",
+   "read_only": 1
+  },
+  {
+   "default": "0",
+   "fieldname": "done",
+   "fieldtype": "Check",
+   "in_list_view": 1,
+   "label": "Done",
+   "read_only": 1
+  }
+ ],
+ "index_web_pages_for_search": 1,
+ "istable": 1,
+ "links": [],
+ "modified": "2024-02-05 17:35:09.556054",
+ "modified_by": "Administrator",
+ "module": "Accounts",
+ "name": "Transaction Deletion Record Details",
+ "owner": "Administrator",
+ "permissions": [],
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "states": []
+}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.py b/erpnext/accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.py
new file mode 100644
index 0000000..bc5b5c4
--- /dev/null
+++ b/erpnext/accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.py
@@ -0,0 +1,26 @@
+# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+# import frappe
+from frappe.model.document import Document
+
+
+class TransactionDeletionRecordDetails(Document):
+	# begin: auto-generated types
+	# This code is auto-generated. Do not modify anything in this block.
+
+	from typing import TYPE_CHECKING
+
+	if TYPE_CHECKING:
+		from frappe.types import DF
+
+		docfield_name: DF.Data | None
+		doctype_name: DF.Link
+		done: DF.Check
+		no_of_docs: DF.Int
+		parent: DF.Data
+		parentfield: DF.Data
+		parenttype: DF.Data
+	# end: auto-generated types
+
+	pass
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index 2e82886..825a01e 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -7,7 +7,7 @@
 import frappe
 from frappe import _
 from frappe.model.meta import get_field_precision
-from frappe.utils import cint, cstr, flt, formatdate, getdate, now
+from frappe.utils import cint, flt, formatdate, getdate, now
 
 import erpnext
 from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
@@ -234,11 +234,13 @@
 def merge_similar_entries(gl_map, precision=None):
 	merged_gl_map = []
 	accounting_dimensions = get_accounting_dimensions()
+	merge_properties = get_merge_properties(accounting_dimensions)
 
 	for entry in gl_map:
+		entry.merge_key = get_merge_key(entry, merge_properties)
 		# if there is already an entry in this account then just add it
 		# to that entry
-		same_head = check_if_in_list(entry, merged_gl_map, accounting_dimensions)
+		same_head = check_if_in_list(entry, merged_gl_map)
 		if same_head:
 			same_head.debit = flt(same_head.debit) + flt(entry.debit)
 			same_head.debit_in_account_currency = flt(same_head.debit_in_account_currency) + flt(
@@ -273,34 +275,35 @@
 	return merged_gl_map
 
 
-def check_if_in_list(gle, gl_map, dimensions=None):
-	account_head_fieldnames = [
-		"voucher_detail_no",
-		"party",
-		"against_voucher",
+def get_merge_properties(dimensions=None):
+	merge_properties = [
+		"account",
 		"cost_center",
-		"against_voucher_type",
+		"party",
 		"party_type",
+		"voucher_detail_no",
+		"against_voucher",
+		"against_voucher_type",
 		"project",
 		"finance_book",
 		"voucher_no",
 	]
-
 	if dimensions:
-		account_head_fieldnames = account_head_fieldnames + dimensions
+		merge_properties.extend(dimensions)
+	return merge_properties
 
+
+def get_merge_key(entry, merge_properties):
+	merge_key = []
+	for fieldname in merge_properties:
+		merge_key.append(entry.get(fieldname, ""))
+
+	return tuple(merge_key)
+
+
+def check_if_in_list(gle, gl_map):
 	for e in gl_map:
-		same_head = True
-		if e.account != gle.account:
-			same_head = False
-			continue
-
-		for fieldname in account_head_fieldnames:
-			if cstr(e.get(fieldname)) != cstr(gle.get(fieldname)):
-				same_head = False
-				break
-
-		if same_head:
+		if e.merge_key == gle.merge_key:
 			return e
 
 
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index d8ae2a4..4b3f0c8 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -282,9 +282,7 @@
 	pass
 
 
-def set_contact_details(party_details, party, party_type):
-	party_details.contact_person = get_default_contact(party_type, party.name)
-
+def complete_contact_details(party_details):
 	if not party_details.contact_person:
 		party_details.update(
 			{
@@ -315,6 +313,11 @@
 		party_details.update(contact_details)
 
 
+def set_contact_details(party_details, party, party_type):
+	party_details.contact_person = get_default_contact(party_type, party.name)
+	complete_contact_details(party_details)
+
+
 def set_other_values(party_details, party, party_type):
 	# copy
 	if party_type == "Customer":
diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
index a0f8af5..de49139 100644
--- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
@@ -182,8 +182,10 @@
 		}
 
 		# check invoice grand total and invoiced column's value for 3 payment terms
-		si = self.create_sales_invoice(no_payment_schedule=True)
-		name = si.name
+		si = self.create_sales_invoice(no_payment_schedule=True, do_not_submit=True)
+		si.set_posting_time = True
+		si.posting_date = add_days(today(), -1)
+		si.save().submit()
 
 		report = execute(filters)
 
@@ -207,30 +209,42 @@
 
 		# check invoice grand total, invoiced, paid and outstanding column's value after credit note
 		cr_note = self.create_credit_note(si.name, do_not_submit=True)
-		cr_note.posting_date = add_days(today(), 1)
 		cr_note.update_outstanding_for_self = True
 		cr_note.save().submit()
 		report = execute(filters)
 
 		expected_data_after_credit_note = [
-			[100.0, 100.0, 40.0, 0.0, 60.0, self.debit_to],
-			[0, 0, 100.0, 0.0, -100.0, self.debit_to],
+			[100.0, 100.0, 40.0, 0.0, 60.0, si.name],
+			[0, 0, 100.0, 0.0, -100.0, cr_note.name],
 		]
 		self.assertEqual(len(report[1]), 2)
-		for i in range(2):
-			row = report[1][i - 1]
-			# row = report[1][0]
-			self.assertEqual(
-				expected_data_after_credit_note[i - 1],
-				[
-					row.invoice_grand_total,
-					row.invoiced,
-					row.paid,
-					row.credit_note,
-					row.outstanding,
-					row.party_account,
-				],
-			)
+		si_row = [
+			[
+				row.invoice_grand_total,
+				row.invoiced,
+				row.paid,
+				row.credit_note,
+				row.outstanding,
+				row.voucher_no,
+			]
+			for row in report[1]
+			if row.voucher_no == si.name
+		][0]
+
+		cr_note_row = [
+			[
+				row.invoice_grand_total,
+				row.invoiced,
+				row.paid,
+				row.credit_note,
+				row.outstanding,
+				row.voucher_no,
+			]
+			for row in report[1]
+			if row.voucher_no == cr_note.name
+		][0]
+		self.assertEqual(expected_data_after_credit_note[0], si_row)
+		self.assertEqual(expected_data_after_credit_note[1], cr_note_row)
 
 	def test_payment_againt_po_in_receivable_report(self):
 		"""
diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py
index 7162aef..25958692 100644
--- a/erpnext/accounts/report/gross_profit/gross_profit.py
+++ b/erpnext/accounts/report/gross_profit/gross_profit.py
@@ -669,20 +669,20 @@
 			elif row.sales_order and row.so_detail:
 				incoming_amount = self.get_buying_amount_from_so_dn(row.sales_order, row.so_detail, item_code)
 				if incoming_amount:
-					return incoming_amount
+					return flt(row.qty) * incoming_amount
 			else:
 				return flt(row.qty) * self.get_average_buying_rate(row, item_code)
 
 		return flt(row.qty) * self.get_average_buying_rate(row, item_code)
 
 	def get_buying_amount_from_so_dn(self, sales_order, so_detail, item_code):
-		from frappe.query_builder.functions import Sum
+		from frappe.query_builder.functions import Avg
 
 		delivery_note_item = frappe.qb.DocType("Delivery Note Item")
 
 		query = (
 			frappe.qb.from_(delivery_note_item)
-			.select(Sum(delivery_note_item.incoming_rate * delivery_note_item.stock_qty))
+			.select(Avg(delivery_note_item.incoming_rate))
 			.where(delivery_note_item.docstatus == 1)
 			.where(delivery_note_item.item_code == item_code)
 			.where(delivery_note_item.against_sales_order == sales_order)
diff --git a/erpnext/accounts/report/gross_profit/test_gross_profit.py b/erpnext/accounts/report/gross_profit/test_gross_profit.py
index 82fe1a0..aa820aa 100644
--- a/erpnext/accounts/report/gross_profit/test_gross_profit.py
+++ b/erpnext/accounts/report/gross_profit/test_gross_profit.py
@@ -460,3 +460,95 @@
 		}
 		gp_entry = [x for x in data if x.parent_invoice == sinv.name]
 		self.assertDictContainsSubset(expected_entry, gp_entry[0])
+
+	def test_different_rates_in_si_and_dn(self):
+		from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
+
+		"""
+			Test gp calculation when invoice and delivery note differ in qty and aren't connected
+			SO -- INV
+			|
+			DN
+		"""
+		se = make_stock_entry(
+			company=self.company,
+			item_code=self.item,
+			target=self.warehouse,
+			qty=3,
+			basic_rate=700,
+			do_not_submit=True,
+		)
+		item = se.items[0]
+		se.append(
+			"items",
+			{
+				"item_code": item.item_code,
+				"s_warehouse": item.s_warehouse,
+				"t_warehouse": item.t_warehouse,
+				"qty": 10,
+				"basic_rate": 700,
+				"conversion_factor": item.conversion_factor or 1.0,
+				"transfer_qty": flt(item.qty) * (flt(item.conversion_factor) or 1.0),
+				"serial_no": item.serial_no,
+				"batch_no": item.batch_no,
+				"cost_center": item.cost_center,
+				"expense_account": item.expense_account,
+			},
+		)
+		se = se.save().submit()
+
+		so = make_sales_order(
+			customer=self.customer,
+			company=self.company,
+			warehouse=self.warehouse,
+			item=self.item,
+			rate=800,
+			qty=10,
+			do_not_save=False,
+			do_not_submit=False,
+		)
+
+		from erpnext.selling.doctype.sales_order.sales_order import (
+			make_delivery_note,
+			make_sales_invoice,
+		)
+
+		dn1 = make_delivery_note(so.name)
+		dn1.items[0].qty = 4
+		dn1.items[0].rate = 800
+		dn1.save().submit()
+
+		dn2 = make_delivery_note(so.name)
+		dn2.items[0].qty = 6
+		dn2.items[0].rate = 800
+		dn2.save().submit()
+
+		sinv = make_sales_invoice(so.name)
+		sinv.items[0].qty = 4
+		sinv.items[0].rate = 800
+		sinv.save().submit()
+
+		filters = frappe._dict(
+			company=self.company, from_date=nowdate(), to_date=nowdate(), group_by="Invoice"
+		)
+
+		columns, data = execute(filters=filters)
+		expected_entry = {
+			"parent_invoice": sinv.name,
+			"currency": "INR",
+			"sales_invoice": self.item,
+			"customer": self.customer,
+			"posting_date": frappe.utils.datetime.date.fromisoformat(nowdate()),
+			"item_code": self.item,
+			"item_name": self.item,
+			"warehouse": "Stores - _GP",
+			"qty": 4.0,
+			"avg._selling_rate": 800.0,
+			"valuation_rate": 700.0,
+			"selling_amount": 3200.0,
+			"buying_amount": 2800.0,
+			"gross_profit": 400.0,
+			"gross_profit_%": 12.5,
+		}
+		gp_entry = [x for x in data if x.parent_invoice == sinv.name]
+		self.assertDictContainsSubset(expected_entry, gp_entry[0])
diff --git a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js
index 2ffd3b3..98c6656 100644
--- a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js
+++ b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js
@@ -24,3 +24,10 @@
 	fieldtype: "Check",
 	default: 1,
 });
+
+frappe.query_reports["Profit and Loss Statement"]["filters"].push({
+	fieldname: "include_default_book_entries",
+	label: __("Include Default FB Entries"),
+	fieldtype: "Check",
+	default: 1,
+});
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 0755f2e..02012ad 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -1027,7 +1027,7 @@
 
 	if account:
 		root_type, account_type = frappe.get_cached_value(
-			"Account", account, ["root_type", "account_type"]
+			"Account", account[0], ["root_type", "account_type"]
 		)
 		party_account_type = "Receivable" if root_type == "Asset" else "Payable"
 		party_account_type = account_type or party_account_type
@@ -1038,7 +1038,7 @@
 
 	common_filter = common_filter or []
 	common_filter.append(ple.account_type == party_account_type)
-	common_filter.append(ple.account == account)
+	common_filter.append(ple.account.isin(account))
 	common_filter.append(ple.party_type == party_type)
 	common_filter.append(ple.party == party)
 
diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js
index 6dbb53a..b4fd739 100644
--- a/erpnext/assets/doctype/asset/asset.js
+++ b/erpnext/assets/doctype/asset/asset.js
@@ -48,7 +48,7 @@
 					method: "erpnext.assets.doctype.asset.asset.make_asset_movement",
 					freeze: true,
 					args: {
-						assets: [{ name: cur_frm.doc.name }],
+						assets: [{ name: frm.doc.name }],
 					},
 					callback: function (r) {
 						if (r.message) {
@@ -79,7 +79,7 @@
 		frm.toggle_display("next_depreciation_date", frm.doc.docstatus < 1);
 
 		if (frm.doc.docstatus == 1) {
-			if (in_list(["Submitted", "Partially Depreciated", "Fully Depreciated"], frm.doc.status)) {
+			if (["Submitted", "Partially Depreciated", "Fully Depreciated"].includes(frm.doc.status)) {
 				frm.add_custom_button(
 					__("Transfer Asset"),
 					function () {
@@ -365,7 +365,7 @@
 				if (v.journal_entry) {
 					asset_values.push(asset_value);
 				} else {
-					if (in_list(["Scrapped", "Sold"], frm.doc.status)) {
+					if (["Scrapped", "Sold"].includes(frm.doc.status)) {
 						asset_values.push(null);
 					} else {
 						asset_values.push(asset_value);
@@ -400,7 +400,7 @@
 			});
 		}
 
-		if (in_list(["Scrapped", "Sold"], frm.doc.status)) {
+		if (["Scrapped", "Sold"].includes(frm.doc.status)) {
 			x_intervals.push(frappe.format(frm.doc.disposal_date, { fieldtype: "Date" }));
 			asset_values.push(0);
 		}
@@ -791,9 +791,7 @@
 				asset_name: frm.doc.name,
 			},
 			method: "erpnext.assets.doctype.asset.depreciation.scrap_asset",
-			callback: function (r) {
-				cur_frm.reload_doc();
-			},
+			callback: (r) => frm.reload_doc(),
 		});
 	});
 };
@@ -805,19 +803,17 @@
 				asset_name: frm.doc.name,
 			},
 			method: "erpnext.assets.doctype.asset.depreciation.restore_asset",
-			callback: function (r) {
-				cur_frm.reload_doc();
-			},
+			callback: (r) => frm.reload_doc(),
 		});
 	});
 };
 
-erpnext.asset.transfer_asset = function () {
+erpnext.asset.transfer_asset = function (frm) {
 	frappe.call({
 		method: "erpnext.assets.doctype.asset.asset.make_asset_movement",
 		freeze: true,
 		args: {
-			assets: [{ name: cur_frm.doc.name }],
+			assets: [{ name: frm.doc.name }],
 			purpose: "Transfer",
 		},
 		callback: function (r) {
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index 7875646..c3a155a 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -4,6 +4,8 @@
 frappe.provide("erpnext.buying");
 frappe.provide("erpnext.accounts.dimensions");
 
+cur_frm.cscript.tax_table = "Purchase Taxes and Charges";
+
 erpnext.accounts.taxes.setup_tax_filters("Purchase Taxes and Charges");
 erpnext.accounts.taxes.setup_tax_validations("Purchase Order");
 erpnext.buying.setup_buying_controller();
@@ -84,7 +86,7 @@
 						args: {
 							subcontract_order: frm.doc.name,
 							rm_details: po_details,
-							order_doctype: cur_frm.doc.doctype,
+							order_doctype: frm.doc.doctype,
 						},
 						callback: function (r) {
 							if (r && r.message) {
@@ -268,8 +270,8 @@
 		var allow_receipt = false;
 		var is_drop_ship = false;
 
-		for (var i in cur_frm.doc.items) {
-			var item = cur_frm.doc.items[i];
+		for (var i in this.frm.doc.items) {
+			var item = this.frm.doc.items[i];
 			if (item.delivered_by_supplier !== 1) {
 				allow_receipt = true;
 			} else {
@@ -289,7 +291,7 @@
 				this.frm.fields_dict.items_section.wrapper.removeClass("hide-border");
 			}
 
-			if (!in_list(["Closed", "Delivered"], doc.status)) {
+			if (!["Closed", "Delivered"].includes(doc.status)) {
 				if (
 					this.frm.doc.status !== "Closed" &&
 					flt(this.frm.doc.per_received, 2) < 100 &&
@@ -334,7 +336,7 @@
 
 					this.frm.page.set_inner_btn_group_as_primary(__("Status"));
 				}
-			} else if (in_list(["Closed", "Delivered"], doc.status)) {
+			} else if (["Closed", "Delivered"].includes(doc.status)) {
 				if (this.frm.has_perm("submit")) {
 					this.frm.add_custom_button(
 						__("Re-open"),
@@ -346,7 +348,7 @@
 			if (doc.status != "Closed") {
 				if (doc.status != "On Hold") {
 					if (flt(doc.per_received, 2) < 100 && allow_receipt) {
-						cur_frm.add_custom_button(
+						this.frm.add_custom_button(
 							__("Purchase Receipt"),
 							this.make_purchase_receipt,
 							__("Create")
@@ -354,7 +356,7 @@
 						if (doc.is_subcontracted) {
 							if (doc.is_old_subcontracting_flow) {
 								if (me.has_unsupplied_items()) {
-									cur_frm.add_custom_button(
+									this.frm.add_custom_button(
 										__("Material to Supplier"),
 										function () {
 											me.make_stock_entry();
@@ -363,7 +365,7 @@
 									);
 								}
 							} else {
-								cur_frm.add_custom_button(
+								this.frm.add_custom_button(
 									__("Subcontracting Order"),
 									this.make_subcontracting_order,
 									__("Create")
@@ -372,7 +374,7 @@
 						}
 					}
 					if (flt(doc.per_billed, 2) < 100)
-						cur_frm.add_custom_button(
+						this.frm.add_custom_button(
 							__("Purchase Invoice"),
 							this.make_purchase_invoice,
 							__("Create")
@@ -416,10 +418,10 @@
 					}
 				}
 
-				cur_frm.page.set_inner_btn_group_as_primary(__("Create"));
+				this.frm.page.set_inner_btn_group_as_primary(__("Create"));
 			}
 		} else if (doc.docstatus === 0) {
-			cur_frm.cscript.add_from_mappers();
+			this.frm.cscript.add_from_mappers();
 		}
 	}
 
@@ -456,8 +458,8 @@
 		frappe.call({
 			method: "erpnext.controllers.subcontracting_controller.make_rm_stock_entry",
 			args: {
-				subcontract_order: cur_frm.doc.name,
-				order_doctype: cur_frm.doc.doctype,
+				subcontract_order: this.frm.doc.name,
+				order_doctype: this.frm.doc.doctype,
 			},
 			callback: function (r) {
 				var doclist = frappe.model.sync(r.message);
@@ -476,7 +478,7 @@
 	make_purchase_receipt() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_receipt",
-			frm: cur_frm,
+			frm: this.frm,
 			freeze_message: __("Creating Purchase Receipt ..."),
 		});
 	}
@@ -484,14 +486,14 @@
 	make_purchase_invoice() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_invoice",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 
 	make_subcontracting_order() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.buying.doctype.purchase_order.purchase_order.make_subcontracting_order",
-			frm: cur_frm,
+			frm: this.frm,
 			freeze_message: __("Creating Subcontracting Order ..."),
 		});
 	}
@@ -507,7 +509,6 @@
 					target: me.frm,
 					setters: {
 						schedule_date: undefined,
-						status: undefined,
 					},
 					get_query_filters: {
 						material_request_type: "Purchase",
@@ -651,7 +652,7 @@
 	}
 
 	unhold_purchase_order() {
-		cur_frm.cscript.update_status("Resume", "Draft");
+		this.frm.cscript.update_status("Resume", "Draft");
 	}
 
 	hold_purchase_order() {
@@ -691,15 +692,15 @@
 	}
 
 	unclose_purchase_order() {
-		cur_frm.cscript.update_status("Re-open", "Submitted");
+		this.frm.cscript.update_status("Re-open", "Submitted");
 	}
 
 	close_purchase_order() {
-		cur_frm.cscript.update_status("Close", "Closed");
+		this.frm.cscript.update_status("Close", "Closed");
 	}
 
 	delivered_by_supplier() {
-		cur_frm.cscript.update_status("Deliver", "Delivered");
+		this.frm.cscript.update_status("Deliver", "Delivered");
 	}
 
 	items_on_form_rendered() {
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index 9da49a7..1ee9794 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -355,7 +355,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Supplier Address Details",
    "read_only": 1
   },
@@ -394,7 +394,7 @@
   },
   {
    "fieldname": "shipping_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Shipping Address Details",
    "print_hide": 1,
    "read_only": 1
@@ -642,7 +642,7 @@
   },
   {
    "fieldname": "other_charges_calculation",
-   "fieldtype": "Long Text",
+   "fieldtype": "Text Editor",
    "label": "Taxes and Charges Calculation",
    "no_copy": 1,
    "oldfieldtype": "HTML",
@@ -1098,7 +1098,7 @@
   },
   {
    "fieldname": "billing_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Billing Address Details",
    "read_only": 1
   },
@@ -1288,7 +1288,7 @@
  "idx": 105,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-10-10 13:37:40.158761",
+ "modified": "2024-03-22 16:15:09.674963",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Purchase Order",
@@ -1343,4 +1343,4 @@
  "timeline_field": "supplier",
  "title_field": "supplier_name",
  "track_changes": 1
-}
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 4d94868..e462820 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -55,8 +55,9 @@
 		)
 
 		additional_discount_percentage: DF.Float
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		advance_paid: DF.Currency
+		advance_payment_status: DF.Literal["Not Initiated", "Initiated", "Partially Paid", "Fully Paid"]
 		amended_from: DF.Link | None
 		apply_discount_on: DF.Literal["", "Grand Total", "Net Total"]
 		apply_tds: DF.Check
@@ -73,7 +74,7 @@
 		base_total: DF.Currency
 		base_total_taxes_and_charges: DF.Currency
 		billing_address: DF.Link | None
-		billing_address_display: DF.SmallText | None
+		billing_address_display: DF.TextEditor | None
 		buying_price_list: DF.Link | None
 		company: DF.Link
 		contact_display: DF.SmallText | None
@@ -109,7 +110,7 @@
 		net_total: DF.Currency
 		order_confirmation_date: DF.Date | None
 		order_confirmation_no: DF.Data | None
-		other_charges_calculation: DF.LongText | None
+		other_charges_calculation: DF.TextEditor | None
 		party_account_currency: DF.Link | None
 		payment_schedule: DF.Table[PaymentSchedule]
 		payment_terms_template: DF.Link | None
@@ -130,7 +131,7 @@
 		set_reserve_warehouse: DF.Link | None
 		set_warehouse: DF.Link | None
 		shipping_address: DF.Link | None
-		shipping_address_display: DF.SmallText | None
+		shipping_address_display: DF.TextEditor | None
 		shipping_rule: DF.Link | None
 		status: DF.Literal[
 			"",
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index 272d077..6b10df8 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -518,16 +518,15 @@
 						callback: load_suppliers,
 					});
 				} else if (args.supplier_group) {
-					return frappe.call({
-						method: "frappe.client.get_list",
-						args: {
-							doctype: "Supplier",
+					frappe.db
+						.get_list("Supplier", {
+							filters: { supplier_group: args.supplier_group },
+							limit: 100,
 							order_by: "name",
-							fields: ["name"],
-							filters: [["Supplier", "supplier_group", "=", args.supplier_group]],
-						},
-						callback: load_suppliers,
-					});
+						})
+						.then((r) => {
+							load_suppliers({ message: r });
+						});
 				}
 			},
 		});
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
index fd73f77..f386b64 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
@@ -303,7 +303,7 @@
   },
   {
    "fieldname": "billing_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Billing Address Details",
    "read_only": 1
   }
@@ -312,7 +312,7 @@
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-11-06 12:45:28.898706",
+ "modified": "2024-03-22 16:01:19.097788",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Request for Quotation",
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index f261773..fb4dc6a 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -40,7 +40,7 @@
 
 		amended_from: DF.Link | None
 		billing_address: DF.Link | None
-		billing_address_display: DF.SmallText | None
+		billing_address_display: DF.TextEditor | None
 		company: DF.Link
 		email_template: DF.Link | None
 		incoterm: DF.Link | None
diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json
index 60dd54c..3dae044 100644
--- a/erpnext/buying/doctype/supplier/supplier.json
+++ b/erpnext/buying/doctype/supplier/supplier.json
@@ -485,7 +485,7 @@
    "link_fieldname": "party"
   }
  ],
- "modified": "2023-10-19 16:55:15.148325",
+ "modified": "2024-03-13 11:14:06.516519",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Supplier",
@@ -544,7 +544,7 @@
   }
  ],
  "quick_entry": 1,
- "search_fields": "supplier_name, supplier_group",
+ "search_fields": "supplier_group",
  "show_name_in_global_search": 1,
  "sort_field": "modified",
  "sort_order": "ASC",
diff --git a/erpnext/buying/doctype/supplier/test_supplier.py b/erpnext/buying/doctype/supplier/test_supplier.py
index 350a25f..55974ea 100644
--- a/erpnext/buying/doctype/supplier/test_supplier.py
+++ b/erpnext/buying/doctype/supplier/test_supplier.py
@@ -154,44 +154,6 @@
 		# Rollback
 		address.delete()
 
-	def test_serach_fields_for_supplier(self):
-		from erpnext.controllers.queries import supplier_query
-
-		frappe.db.set_single_value("Buying Settings", "supp_master_name", "Naming Series")
-
-		supplier_name = create_supplier(supplier_name="Test Supplier 1").name
-
-		make_property_setter(
-			"Supplier", None, "search_fields", "supplier_group", "Data", for_doctype="Doctype"
-		)
-
-		data = supplier_query(
-			"Supplier", supplier_name, "name", 0, 20, filters={"name": supplier_name}, as_dict=True
-		)
-
-		self.assertEqual(data[0].name, supplier_name)
-		self.assertEqual(data[0].supplier_group, "Services")
-		self.assertTrue("supplier_type" not in data[0])
-
-		make_property_setter(
-			"Supplier",
-			None,
-			"search_fields",
-			"supplier_group, supplier_type",
-			"Data",
-			for_doctype="Doctype",
-		)
-		data = supplier_query(
-			"Supplier", supplier_name, "name", 0, 20, filters={"name": supplier_name}, as_dict=True
-		)
-
-		self.assertEqual(data[0].name, supplier_name)
-		self.assertEqual(data[0].supplier_group, "Services")
-		self.assertEqual(data[0].supplier_type, "Company")
-		self.assertTrue("supplier_type" in data[0])
-
-		frappe.db.set_single_value("Buying Settings", "supp_master_name", "Supplier Name")
-
 
 def create_supplier(**args):
 	args = frappe._dict(args)
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
index c169871..abb5702 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -22,9 +22,9 @@
 			this.frm.set_value("valid_till", frappe.datetime.add_months(this.frm.doc.transaction_date, 1));
 		}
 		if (this.frm.doc.docstatus === 1) {
-			cur_frm.add_custom_button(__("Purchase Order"), this.make_purchase_order, __("Create"));
-			cur_frm.page.set_inner_btn_group_as_primary(__("Create"));
-			cur_frm.add_custom_button(__("Quotation"), this.make_quotation, __("Create"));
+			this.frm.add_custom_button(__("Purchase Order"), this.make_purchase_order, __("Create"));
+			this.frm.page.set_inner_btn_group_as_primary(__("Create"));
+			this.frm.add_custom_button(__("Quotation"), this.make_quotation, __("Create"));
 		} else if (this.frm.doc.docstatus === 0) {
 			this.frm.add_custom_button(
 				__("Material Request"),
@@ -87,13 +87,13 @@
 	make_purchase_order() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.buying.doctype.supplier_quotation.supplier_quotation.make_purchase_order",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 	make_quotation() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.buying.doctype.supplier_quotation.supplier_quotation.make_quotation",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 };
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
index 1891261..993cde0 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
@@ -228,7 +228,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Address",
    "read_only": 1
   },
@@ -462,7 +462,7 @@
   },
   {
    "fieldname": "other_charges_calculation",
-   "fieldtype": "Long Text",
+   "fieldtype": "Markdown Editor",
    "label": "Taxes and Charges Calculation",
    "no_copy": 1,
    "oldfieldtype": "HTML",
@@ -865,7 +865,7 @@
   },
   {
    "fieldname": "shipping_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Shipping Address Details",
    "print_hide": 1,
    "read_only": 1
@@ -897,7 +897,7 @@
   },
   {
    "fieldname": "billing_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Billing Address Details",
    "read_only": 1
   },
@@ -928,7 +928,7 @@
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-11-17 12:34:30.083077",
+ "modified": "2024-03-22 16:15:10.122197",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Supplier Quotation",
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index e2b737b..52bd83b 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -31,7 +31,7 @@
 		)
 
 		additional_discount_percentage: DF.Float
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		apply_discount_on: DF.Literal["", "Grand Total", "Net Total"]
 		auto_repeat: DF.Link | None
@@ -46,7 +46,7 @@
 		base_total: DF.Currency
 		base_total_taxes_and_charges: DF.Currency
 		billing_address: DF.Link | None
-		billing_address_display: DF.SmallText | None
+		billing_address_display: DF.TextEditor | None
 		buying_price_list: DF.Link | None
 		company: DF.Link
 		contact_display: DF.SmallText | None
@@ -71,7 +71,7 @@
 		naming_series: DF.Literal["PUR-SQTN-.YYYY.-"]
 		net_total: DF.Currency
 		opportunity: DF.Link | None
-		other_charges_calculation: DF.LongText | None
+		other_charges_calculation: DF.MarkdownEditor | None
 		plc_conversion_rate: DF.Float
 		price_list_currency: DF.Link | None
 		pricing_rules: DF.Table[PricingRuleDetail]
@@ -81,7 +81,7 @@
 		rounding_adjustment: DF.Currency
 		select_print_heading: DF.Link | None
 		shipping_address: DF.Link | None
-		shipping_address_display: DF.SmallText | None
+		shipping_address_display: DF.TextEditor | None
 		shipping_rule: DF.Link | None
 		status: DF.Literal["", "Draft", "Submitted", "Stopped", "Cancelled", "Expired"]
 		supplier: DF.Link
diff --git a/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js b/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js
index c109abd..f7d0d94 100644
--- a/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js
+++ b/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js
@@ -77,7 +77,10 @@
 			fieldname: "group_by",
 			label: __("Group by"),
 			fieldtype: "Select",
-			options: [__("Group by Supplier"), __("Group by Item")],
+			options: [
+				{ label: __("Group by Supplier"), value: "Group by Supplier" },
+				{ label: __("Group by Item"), value: "Group by Item" },
+			],
 			default: __("Group by Supplier"),
 		},
 		{
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 250f21b..3b83c7c 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -89,6 +89,7 @@
 	"weight_per_unit",
 	"weight_uom",
 	"total_weight",
+	"valuation_rate",
 )
 
 
@@ -168,6 +169,13 @@
 		if not self.get("is_return") and not self.get("is_debit_note"):
 			self.validate_qty_is_not_zero()
 
+		if (
+			self.doctype in ["Sales Invoice", "Purchase Invoice"]
+			and self.get("is_return")
+			and self.get("update_stock")
+		):
+			self.validate_zero_qty_for_return_invoices_with_stock()
+
 		if self.get("_action") and self._action != "update_after_submit":
 			self.set_missing_values(for_validate=True)
 
@@ -372,6 +380,12 @@
 		for bundle in bundles:
 			frappe.delete_doc("Serial and Batch Bundle", bundle.name)
 
+		batches = frappe.get_all(
+			"Batch", filters={"reference_doctype": self.doctype, "reference_name": self.name}
+		)
+		for row in batches:
+			frappe.delete_doc("Batch", row.name)
+
 	def validate_return_against_account(self):
 		if (
 			self.doctype in ["Sales Invoice", "Purchase Invoice"] and self.is_return and self.return_against
@@ -602,23 +616,31 @@
 				)
 
 	def validate_due_date(self):
-		if self.get("is_pos"):
+		if self.get("is_pos") or self.doctype not in ["Sales Invoice", "Purchase Invoice"]:
 			return
 
 		from erpnext.accounts.party import validate_due_date
 
-		if self.doctype == "Sales Invoice":
+		posting_date = (
+			self.posting_date if self.doctype == "Sales Invoice" else (self.bill_date or self.posting_date)
+		)
+
+		# skip due date validation for records via Data Import
+		if frappe.flags.in_import and getdate(self.due_date) < getdate(posting_date):
+			self.due_date = posting_date
+
+		elif self.doctype == "Sales Invoice":
 			if not self.due_date:
 				frappe.throw(_("Due Date is mandatory"))
 
 			validate_due_date(
-				self.posting_date,
+				posting_date,
 				self.due_date,
 				self.payment_terms_template,
 			)
 		elif self.doctype == "Purchase Invoice":
 			validate_due_date(
-				self.bill_date or self.posting_date,
+				posting_date,
 				self.due_date,
 				self.bill_date,
 				self.payment_terms_template,
@@ -1044,6 +1066,18 @@
 		else:
 			return flt(args.get(field, 0) / self.get("conversion_rate", 1))
 
+	def validate_zero_qty_for_return_invoices_with_stock(self):
+		rows = []
+		for item in self.items:
+			if not flt(item.qty):
+				rows.append(item)
+		if rows:
+			frappe.throw(
+				_(
+					"For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}"
+				).format(frappe.bold(comma_and(["#" + str(x.idx) for x in rows])))
+			)
+
 	def validate_qty_is_not_zero(self):
 		for item in self.items:
 			if self.doctype == "Purchase Receipt" and item.rejected_qty:
@@ -1615,52 +1649,30 @@
 		return amount, base_amount
 
 	def make_discount_gl_entries(self, gl_entries):
-		if self.doctype == "Purchase Invoice":
-			enable_discount_accounting = cint(
-				frappe.db.get_single_value("Buying Settings", "enable_discount_accounting")
-			)
-		elif self.doctype == "Sales Invoice":
-			enable_discount_accounting = cint(
-				frappe.db.get_single_value("Selling Settings", "enable_discount_accounting")
-			)
-
-		if self.doctype == "Purchase Invoice":
-			dr_or_cr = "credit"
-			rev_dr_cr = "debit"
-			supplier_or_customer = self.supplier
-
-		else:
-			dr_or_cr = "debit"
-			rev_dr_cr = "credit"
-			supplier_or_customer = self.customer
+		enable_discount_accounting = cint(
+			frappe.db.get_single_value("Selling Settings", "enable_discount_accounting")
+		)
 
 		if enable_discount_accounting:
 			for item in self.get("items"):
 				if item.get("discount_amount") and item.get("discount_account"):
 					discount_amount = item.discount_amount * item.qty
-					if self.doctype == "Purchase Invoice":
-						income_or_expense_account = (
-							item.expense_account
-							if (not item.enable_deferred_expense or self.is_return)
-							else item.deferred_expense_account
-						)
-					else:
-						income_or_expense_account = (
-							item.income_account
-							if (not item.enable_deferred_revenue or self.is_return)
-							else item.deferred_revenue_account
-						)
+					income_account = (
+						item.income_account
+						if (not item.enable_deferred_revenue or self.is_return)
+						else item.deferred_revenue_account
+					)
 
 					account_currency = get_account_currency(item.discount_account)
 					gl_entries.append(
 						self.get_gl_dict(
 							{
 								"account": item.discount_account,
-								"against": supplier_or_customer,
-								dr_or_cr: flt(
+								"against": self.customer,
+								"debit": flt(
 									discount_amount * self.get("conversion_rate"), item.precision("discount_amount")
 								),
-								dr_or_cr + "_in_account_currency": flt(discount_amount, item.precision("discount_amount")),
+								"debit_in_account_currency": flt(discount_amount, item.precision("discount_amount")),
 								"cost_center": item.cost_center,
 								"project": item.project,
 							},
@@ -1669,17 +1681,16 @@
 						)
 					)
 
-					account_currency = get_account_currency(income_or_expense_account)
+					account_currency = get_account_currency(income_account)
 					gl_entries.append(
 						self.get_gl_dict(
 							{
-								"account": income_or_expense_account,
-								"against": supplier_or_customer,
-								rev_dr_cr: flt(
+								"account": income_account,
+								"against": self.customer,
+								"credit": flt(
 									discount_amount * self.get("conversion_rate"), item.precision("discount_amount")
 								),
-								rev_dr_cr
-								+ "_in_account_currency": flt(discount_amount, item.precision("discount_amount")),
+								"credit_in_account_currency": flt(discount_amount, item.precision("discount_amount")),
 								"cost_center": item.cost_center,
 								"project": item.project or self.project,
 							},
@@ -1697,8 +1708,8 @@
 				self.get_gl_dict(
 					{
 						"account": self.additional_discount_account,
-						"against": supplier_or_customer,
-						dr_or_cr: self.base_discount_amount,
+						"against": self.customer,
+						"debit": self.base_discount_amount,
 						"cost_center": self.cost_center or erpnext.get_default_cost_center(self.company),
 					},
 					item=self,
@@ -1711,8 +1722,8 @@
 		item_allowance = {}
 		global_qty_allowance, global_amount_allowance = None, None
 
-		role_allowed_to_over_bill = frappe.db.get_single_value(
-			"Accounts Settings", "role_allowed_to_over_bill"
+		role_allowed_to_over_bill = frappe.get_cached_value(
+			"Accounts Settings", None, "role_allowed_to_over_bill"
 		)
 		user_roles = frappe.get_roles()
 
@@ -2708,14 +2719,20 @@
 	else:
 		q = q.where(journal_acc.debit_in_account_currency > 0)
 
+	reference_or_condition = []
+
 	if include_unallocated:
-		q = q.where((journal_acc.reference_name.isnull()) | (journal_acc.reference_name == ""))
+		reference_or_condition.append(journal_acc.reference_name.isnull())
+		reference_or_condition.append(journal_acc.reference_name == "")
 
 	if order_list:
-		q = q.where(
+		reference_or_condition.append(
 			(journal_acc.reference_type == order_doctype) & ((journal_acc.reference_name).isin(order_list))
 		)
 
+	if reference_or_condition:
+		q = q.where(Criterion.any(reference_or_condition))
+
 	q = q.orderby(journal_entry.posting_date)
 
 	journal_entries = q.run(as_dict=True)
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 8211857..c530727 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -513,6 +513,14 @@
 						(not cint(self.is_return) and self.docstatus == 1)
 						or (cint(self.is_return) and self.docstatus == 2)
 					):
+						serial_and_batch_bundle = d.get("serial_and_batch_bundle")
+						if self.is_internal_transfer() and self.is_return and self.docstatus == 2:
+							serial_and_batch_bundle = frappe.db.get_value(
+								"Stock Ledger Entry",
+								{"voucher_detail_no": d.name, "warehouse": d.from_warehouse},
+								"serial_and_batch_bundle",
+							)
+
 						from_warehouse_sle = self.get_sl_entries(
 							d,
 							{
@@ -521,19 +529,24 @@
 								"outgoing_rate": d.rate,
 								"recalculate_rate": 1,
 								"dependant_sle_voucher_detail_no": d.name,
+								"serial_and_batch_bundle": serial_and_batch_bundle,
 							},
 						)
 
 						sl_entries.append(from_warehouse_sle)
 
+					type_of_transaction = "Inward"
+					if self.docstatus == 2:
+						type_of_transaction = "Outward"
+
 					sle = self.get_sl_entries(
 						d,
 						{
 							"actual_qty": flt(pr_qty),
 							"serial_and_batch_bundle": (
 								d.serial_and_batch_bundle
-								if not self.is_internal_transfer()
-								else self.get_package_for_target_warehouse(d)
+								if not self.is_internal_transfer() or self.is_return
+								else self.get_package_for_target_warehouse(d, type_of_transaction=type_of_transaction)
 							),
 						},
 					)
@@ -570,7 +583,17 @@
 						or (cint(self.is_return) and self.docstatus == 1)
 					):
 						from_warehouse_sle = self.get_sl_entries(
-							d, {"actual_qty": -1 * pr_qty, "warehouse": d.from_warehouse, "recalculate_rate": 1}
+							d,
+							{
+								"actual_qty": -1 * pr_qty,
+								"warehouse": d.from_warehouse,
+								"recalculate_rate": 1,
+								"serial_and_batch_bundle": (
+									self.get_package_for_target_warehouse(d, d.from_warehouse, "Inward")
+									if self.is_internal_transfer() and self.is_return
+									else None
+								),
+							},
 						)
 
 						sl_entries.append(from_warehouse_sle)
@@ -597,13 +620,15 @@
 			via_landed_cost_voucher=via_landed_cost_voucher,
 		)
 
-	def get_package_for_target_warehouse(self, item) -> str:
+	def get_package_for_target_warehouse(self, item, warehouse=None, type_of_transaction=None) -> str:
 		if not item.serial_and_batch_bundle:
 			return ""
 
+		if not warehouse:
+			warehouse = item.warehouse
+
 		return self.make_package_for_transfer(
-			item.serial_and_batch_bundle,
-			item.warehouse,
+			item.serial_and_batch_bundle, warehouse, type_of_transaction=type_of_transaction
 		)
 
 	def update_ordered_and_reserved_qty(self):
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index bb1ed35..0de75d4 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -85,79 +85,6 @@
 		{"txt": "%%%s%%" % txt, "_txt": txt.replace("%", ""), "start": start, "page_len": page_len},
 	)
 
-	# searches for customer
-
-
-@frappe.whitelist()
-@frappe.validate_and_sanitize_search_inputs
-def customer_query(doctype, txt, searchfield, start, page_len, filters, as_dict=False):
-	doctype = "Customer"
-	conditions = []
-	cust_master_name = frappe.defaults.get_user_default("cust_master_name")
-
-	fields = ["name"]
-	if cust_master_name != "Customer Name":
-		fields.append("customer_name")
-
-	fields = get_fields(doctype, fields)
-	searchfields = frappe.get_meta(doctype).get_search_fields()
-	searchfields = " or ".join(field + " like %(txt)s" for field in searchfields)
-
-	return frappe.db.sql(
-		"""select {fields} from `tabCustomer`
-		where docstatus < 2
-			and ({scond}) and disabled=0
-			{fcond} {mcond}
-		order by
-			(case when locate(%(_txt)s, name) > 0 then locate(%(_txt)s, name) else 99999 end),
-			(case when locate(%(_txt)s, customer_name) > 0 then locate(%(_txt)s, customer_name) else 99999 end),
-			idx desc,
-			name, customer_name
-		limit %(page_len)s offset %(start)s""".format(
-			**{
-				"fields": ", ".join(fields),
-				"scond": searchfields,
-				"mcond": get_match_cond(doctype),
-				"fcond": get_filters_cond(doctype, filters, conditions).replace("%", "%%"),
-			}
-		),
-		{"txt": "%%%s%%" % txt, "_txt": txt.replace("%", ""), "start": start, "page_len": page_len},
-		as_dict=as_dict,
-	)
-
-
-# searches for supplier
-@frappe.whitelist()
-@frappe.validate_and_sanitize_search_inputs
-def supplier_query(doctype, txt, searchfield, start, page_len, filters, as_dict=False):
-	doctype = "Supplier"
-	supp_master_name = frappe.defaults.get_user_default("supp_master_name")
-
-	fields = ["name"]
-	if supp_master_name != "Supplier Name":
-		fields.append("supplier_name")
-
-	fields = get_fields(doctype, fields)
-
-	return frappe.db.sql(
-		"""select {field} from `tabSupplier`
-		where docstatus < 2
-			and ({key} like %(txt)s
-			or supplier_name like %(txt)s) and disabled=0
-			and (on_hold = 0 or (on_hold = 1 and CURRENT_DATE > release_date))
-			{mcond}
-		order by
-			(case when locate(%(_txt)s, name) > 0 then locate(%(_txt)s, name) else 99999 end),
-			(case when locate(%(_txt)s, supplier_name) > 0 then locate(%(_txt)s, supplier_name) else 99999 end),
-			idx desc,
-			name, supplier_name
-		limit %(page_len)s offset %(start)s""".format(
-			**{"field": ", ".join(fields), "key": searchfield, "mcond": get_match_cond(doctype)}
-		),
-		{"txt": "%%%s%%" % txt, "_txt": txt.replace("%", ""), "start": start, "page_len": page_len},
-		as_dict=as_dict,
-	)
-
 
 @frappe.whitelist()
 @frappe.validate_and_sanitize_search_inputs
diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py
index 1ddcaa7..5594816 100644
--- a/erpnext/controllers/sales_and_purchase_return.py
+++ b/erpnext/controllers/sales_and_purchase_return.py
@@ -423,6 +423,15 @@
 			]:
 				type_of_transaction = "Outward"
 
+			warehouse = source_doc.warehouse if qty_field == "stock_qty" else source_doc.rejected_warehouse
+			if source_parent.doctype in [
+				"Sales Invoice",
+				"POS Invoice",
+				"Delivery Note",
+			] and source_parent.get("is_internal_customer"):
+				type_of_transaction = "Outward"
+				warehouse = source_doc.target_warehouse
+
 			cls_obj = SerialBatchCreation(
 				{
 					"type_of_transaction": type_of_transaction,
@@ -432,7 +441,7 @@
 					"returned_serial_nos": returned_serial_nos,
 					"voucher_type": source_parent.doctype,
 					"do_not_submit": True,
-					"warehouse": source_doc.warehouse,
+					"warehouse": warehouse,
 					"has_serial_no": item_details.has_serial_no,
 					"has_batch_no": item_details.has_batch_no,
 				}
@@ -575,11 +584,14 @@
 			if not item_details.has_batch_no and not item_details.has_serial_no:
 				return
 
-			for qty_field in ["stock_qty", "rejected_qty"]:
-				if target_doc.get(qty_field) and not target_doc.get("use_serial_batch_fields"):
+			if not target_doc.get("use_serial_batch_fields"):
+				for qty_field in ["stock_qty", "rejected_qty"]:
+					if not target_doc.get(qty_field):
+						continue
+
 					update_serial_batch_no(source_doc, target_doc, source_parent, item_details, qty_field)
-				elif target_doc.get(qty_field) and target_doc.get("use_serial_batch_fields"):
-					update_non_bundled_serial_nos(source_doc, target_doc, source_parent)
+			elif target_doc.get("use_serial_batch_fields"):
+				update_non_bundled_serial_nos(source_doc, target_doc, source_parent)
 
 	def update_non_bundled_serial_nos(source_doc, target_doc, source_parent):
 		from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 359d721..9d86cb2 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -439,8 +439,10 @@
 				# Get incoming rate based on original item cost based on valuation method
 				qty = flt(d.get("stock_qty") or d.get("actual_qty"))
 
-				if not d.incoming_rate or (
-					get_valuation_method(d.item_code) == "Moving Average" and self.get("is_return")
+				if (
+					not d.incoming_rate
+					or self.is_internal_transfer()
+					or (get_valuation_method(d.item_code) == "Moving Average" and self.get("is_return"))
 				):
 					d.incoming_rate = get_incoming_rate(
 						{
@@ -455,6 +457,8 @@
 							"voucher_no": self.name,
 							"voucher_detail_no": d.name,
 							"allow_zero_valuation": d.get("allow_zero_valuation"),
+							"batch_no": d.batch_no,
+							"serial_no": d.serial_no,
 						},
 						raise_error_if_no_rate=False,
 					)
@@ -527,13 +531,26 @@
 		self.make_sl_entries(sl_entries)
 
 	def get_sle_for_source_warehouse(self, item_row):
+		serial_and_batch_bundle = item_row.serial_and_batch_bundle
+		if serial_and_batch_bundle and self.is_internal_transfer() and self.is_return:
+			if self.docstatus == 1:
+				serial_and_batch_bundle = self.make_package_for_transfer(
+					serial_and_batch_bundle, item_row.warehouse, type_of_transaction="Inward"
+				)
+			else:
+				serial_and_batch_bundle = frappe.db.get_value(
+					"Stock Ledger Entry",
+					{"voucher_detail_no": item_row.name, "warehouse": item_row.warehouse},
+					"serial_and_batch_bundle",
+				)
+
 		sle = self.get_sl_entries(
 			item_row,
 			{
 				"actual_qty": -1 * flt(item_row.qty),
 				"incoming_rate": item_row.incoming_rate,
 				"recalculate_rate": cint(self.is_return),
-				"serial_and_batch_bundle": item_row.serial_and_batch_bundle,
+				"serial_and_batch_bundle": serial_and_batch_bundle,
 			},
 		)
 		if item_row.target_warehouse and not cint(self.is_return):
@@ -554,9 +571,15 @@
 				if item_row.warehouse:
 					sle.dependant_sle_voucher_detail_no = item_row.name
 
-			if item_row.serial_and_batch_bundle:
+			if item_row.serial_and_batch_bundle and not cint(self.is_return):
+				type_of_transaction = "Inward"
+				if cint(self.is_return):
+					type_of_transaction = "Outward"
+
 				sle["serial_and_batch_bundle"] = self.make_package_for_transfer(
-					item_row.serial_and_batch_bundle, item_row.target_warehouse
+					item_row.serial_and_batch_bundle,
+					item_row.target_warehouse,
+					type_of_transaction=type_of_transaction,
 				)
 
 		return sle
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index e5f341f..fcbec22 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -577,6 +577,7 @@
 			ref_doc.set_status(update=True)
 
 
+@frappe.request_cache
 def get_allowance_for(
 	item_code,
 	item_allowance=None,
@@ -606,20 +607,20 @@
 				global_amount_allowance,
 			)
 
-	qty_allowance, over_billing_allowance = frappe.db.get_value(
+	qty_allowance, over_billing_allowance = frappe.get_cached_value(
 		"Item", item_code, ["over_delivery_receipt_allowance", "over_billing_allowance"]
 	)
 
 	if qty_or_amount == "qty" and not qty_allowance:
 		if global_qty_allowance == None:
 			global_qty_allowance = flt(
-				frappe.db.get_single_value("Stock Settings", "over_delivery_receipt_allowance")
+				frappe.get_cached_value("Stock Settings", None, "over_delivery_receipt_allowance")
 			)
 		qty_allowance = global_qty_allowance
 	elif qty_or_amount == "amount" and not over_billing_allowance:
 		if global_amount_allowance == None:
 			global_amount_allowance = flt(
-				frappe.db.get_single_value("Accounts Settings", "over_billing_allowance")
+				frappe.get_cached_value("Accounts Settings", None, "over_billing_allowance")
 			)
 		over_billing_allowance = global_amount_allowance
 
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index a3fbdda..a1946e8 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -48,7 +48,9 @@
 		super(StockController, self).validate()
 
 		if self.docstatus == 0:
-			self.validate_duplicate_serial_and_batch_bundle()
+			for table_name in ["items", "packed_items", "supplied_items"]:
+				self.validate_duplicate_serial_and_batch_bundle(table_name)
+
 		if not self.get("is_return"):
 			self.validate_inspection()
 		self.validate_serialized_batch()
@@ -58,12 +60,19 @@
 		self.validate_internal_transfer()
 		self.validate_putaway_capacity()
 
-	def validate_duplicate_serial_and_batch_bundle(self):
-		if sbb_list := [
-			item.get("serial_and_batch_bundle")
-			for item in self.items
-			if item.get("serial_and_batch_bundle")
-		]:
+	def validate_duplicate_serial_and_batch_bundle(self, table_name):
+		if not self.get(table_name):
+			return
+
+		sbb_list = []
+		for item in self.get(table_name):
+			if item.get("serial_and_batch_bundle"):
+				sbb_list.append(item.get("serial_and_batch_bundle"))
+
+			if item.get("rejected_serial_and_batch_bundle"):
+				sbb_list.append(item.get("rejected_serial_and_batch_bundle"))
+
+		if sbb_list:
 			SLE = frappe.qb.DocType("Stock Ledger Entry")
 			data = (
 				frappe.qb.from_(SLE)
@@ -188,7 +197,7 @@
 				not row.serial_and_batch_bundle and not row.get("rejected_serial_and_batch_bundle")
 			):
 				bundle_details = {
-					"item_code": row.item_code,
+					"item_code": row.get("rm_item_code") or row.item_code,
 					"posting_date": self.posting_date,
 					"posting_time": self.posting_time,
 					"voucher_type": self.doctype,
@@ -200,7 +209,7 @@
 					"do_not_submit": True,
 				}
 
-				if row.qty:
+				if row.get("qty") or row.get("consumed_qty"):
 					self.update_bundle_details(bundle_details, table_name, row)
 					self.create_serial_batch_bundle(bundle_details, row)
 
@@ -219,6 +228,12 @@
 			type_of_transaction = "Inward"
 			if not self.is_return:
 				type_of_transaction = "Outward"
+		elif table_name == "supplied_items":
+			qty = row.consumed_qty
+			warehouse = self.supplier_warehouse
+			type_of_transaction = "Outward"
+			if self.is_return:
+				type_of_transaction = "Inward"
 		else:
 			type_of_transaction = get_type_of_transaction(self, row)
 
@@ -236,6 +251,14 @@
 			qty = row.get("rejected_qty")
 			warehouse = row.get("rejected_warehouse")
 
+		if (
+			self.is_internal_transfer()
+			and self.doctype in ["Sales Invoice", "Delivery Note"]
+			and self.is_return
+		):
+			warehouse = row.get("target_warehouse") or row.get("warehouse")
+			type_of_transaction = "Outward"
+
 		bundle_details.update(
 			{
 				"qty": qty,
@@ -542,13 +565,30 @@
 				)
 
 	def delete_auto_created_batches(self):
-		for row in self.items:
-			if row.serial_and_batch_bundle:
-				frappe.db.set_value(
-					"Serial and Batch Bundle", row.serial_and_batch_bundle, {"is_cancelled": 1}
-				)
+		for table_name in ["items", "packed_items", "supplied_items"]:
+			if not self.get(table_name):
+				continue
 
-				row.db_set("serial_and_batch_bundle", None)
+			for row in self.get(table_name):
+				update_values = {}
+				if row.get("batch_no"):
+					update_values["batch_no"] = None
+
+				if row.serial_and_batch_bundle:
+					update_values["serial_and_batch_bundle"] = None
+					frappe.db.set_value(
+						"Serial and Batch Bundle", row.serial_and_batch_bundle, {"is_cancelled": 1}
+					)
+
+				if update_values:
+					row.db_set(update_values)
+
+				if table_name == "items" and row.get("rejected_serial_and_batch_bundle"):
+					frappe.db.set_value(
+						"Serial and Batch Bundle", row.rejected_serial_and_batch_bundle, {"is_cancelled": 1}
+					)
+
+					row.db_set("rejected_serial_and_batch_bundle", None)
 
 	def set_serial_and_batch_bundle(self, table_name=None, ignore_validate=False):
 		if not table_name:
@@ -579,7 +619,7 @@
 		bundle_doc.warehouse = warehouse
 		bundle_doc.type_of_transaction = type_of_transaction
 		bundle_doc.voucher_type = self.doctype
-		bundle_doc.voucher_no = self.name
+		bundle_doc.voucher_no = "" if self.is_new() or self.docstatus == 2 else self.name
 		bundle_doc.is_cancelled = 0
 
 		for row in bundle_doc.entries:
@@ -595,6 +635,7 @@
 
 		bundle_doc.calculate_qty_and_amount()
 		bundle_doc.flags.ignore_permissions = True
+		bundle_doc.flags.ignore_validate = True
 		bundle_doc.save(ignore_permissions=True)
 
 		return bundle_doc.name
diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py
index e66fe8b..ffc7f91 100644
--- a/erpnext/controllers/subcontracting_controller.py
+++ b/erpnext/controllers/subcontracting_controller.py
@@ -379,10 +379,10 @@
 			if row.serial_no:
 				details.serial_no.extend(get_serial_nos(row.serial_no))
 
-			if row.batch_no:
+			elif row.batch_no:
 				details.batch_no[row.batch_no] += row.qty
 
-			if voucher_bundle_data:
+			elif voucher_bundle_data:
 				bundle_key = (row.rm_item_code, row.main_item_code, row.t_warehouse, row.voucher_no)
 
 				bundle_data = voucher_bundle_data.get(bundle_key, frappe._dict())
@@ -392,6 +392,9 @@
 
 				if bundle_data.batch_nos:
 					for batch_no, qty in bundle_data.batch_nos.items():
+						if qty < 0:
+							qty = abs(qty)
+
 						if qty > 0:
 							details.batch_no[batch_no] += qty
 							bundle_data.batch_nos[batch_no] -= qty
@@ -545,17 +548,24 @@
 
 		rm_obj.reference_name = item_row.name
 
+		use_serial_batch_fields = frappe.db.get_single_value("Stock Settings", "use_serial_batch_fields")
+
 		if self.doctype == self.subcontract_data.order_doctype:
 			rm_obj.required_qty = qty
 			rm_obj.amount = rm_obj.required_qty * rm_obj.rate
 		else:
 			rm_obj.consumed_qty = qty
 			rm_obj.required_qty = bom_item.required_qty or qty
+			rm_obj.serial_and_batch_bundle = None
 			setattr(
 				rm_obj, self.subcontract_data.order_field, item_row.get(self.subcontract_data.order_field)
 			)
 
-		if self.doctype == "Subcontracting Receipt":
+			if use_serial_batch_fields:
+				rm_obj.use_serial_batch_fields = 1
+				self.__set_batch_nos(bom_item, item_row, rm_obj, qty)
+
+		if self.doctype == "Subcontracting Receipt" and not use_serial_batch_fields:
 			args = frappe._dict(
 				{
 					"item_code": rm_obj.rm_item_code,
@@ -581,6 +591,68 @@
 
 			rm_obj.rate = get_incoming_rate(args)
 
+	def __set_batch_nos(self, bom_item, item_row, rm_obj, qty):
+		key = (rm_obj.rm_item_code, item_row.item_code, item_row.get(self.subcontract_data.order_field))
+
+		if self.available_materials.get(key) and self.available_materials[key]["batch_no"]:
+			new_rm_obj = None
+			for batch_no, batch_qty in self.available_materials[key]["batch_no"].items():
+				if batch_qty >= qty or (
+					rm_obj.consumed_qty == 0
+					and self.backflush_based_on == "BOM"
+					and len(self.available_materials[key]["batch_no"]) == 1
+				):
+					if rm_obj.consumed_qty == 0:
+						self.__set_consumed_qty(rm_obj, qty)
+
+					self.__set_batch_no_as_per_qty(item_row, rm_obj, batch_no, qty)
+					self.available_materials[key]["batch_no"][batch_no] -= qty
+					return
+
+				elif qty > 0 and batch_qty > 0:
+					qty -= batch_qty
+					new_rm_obj = self.append(self.raw_material_table, bom_item)
+					new_rm_obj.serial_and_batch_bundle = None
+					new_rm_obj.use_serial_batch_fields = 1
+					new_rm_obj.reference_name = item_row.name
+					self.__set_batch_no_as_per_qty(item_row, new_rm_obj, batch_no, batch_qty)
+					self.available_materials[key]["batch_no"][batch_no] = 0
+
+			if new_rm_obj:
+				self.remove(rm_obj)
+			elif abs(qty) > 0:
+				self.__set_consumed_qty(rm_obj, qty)
+
+		else:
+			self.__set_consumed_qty(rm_obj, qty, bom_item.required_qty or qty)
+			self.__set_serial_nos(item_row, rm_obj)
+
+	def __set_consumed_qty(self, rm_obj, consumed_qty, required_qty=0):
+		rm_obj.required_qty = required_qty
+		rm_obj.consumed_qty = consumed_qty
+
+	def __set_serial_nos(self, item_row, rm_obj):
+		key = (rm_obj.rm_item_code, item_row.item_code, item_row.get(self.subcontract_data.order_field))
+		if self.available_materials.get(key) and self.available_materials[key]["serial_no"]:
+			used_serial_nos = self.available_materials[key]["serial_no"][0 : cint(rm_obj.consumed_qty)]
+			rm_obj.serial_no = "\n".join(used_serial_nos)
+
+			# Removed the used serial nos from the list
+			for sn in used_serial_nos:
+				self.available_materials[key]["serial_no"].remove(sn)
+
+	def __set_batch_no_as_per_qty(self, item_row, rm_obj, batch_no, qty):
+		rm_obj.update(
+			{
+				"consumed_qty": qty,
+				"batch_no": batch_no,
+				"required_qty": qty,
+				self.subcontract_data.order_field: item_row.get(self.subcontract_data.order_field),
+			}
+		)
+
+		self.__set_serial_nos(item_row, rm_obj)
+
 	def __get_qty_based_on_material_transfer(self, item_row, transfer_item):
 		key = (item_row.item_code, item_row.get(self.subcontract_data.order_field))
 
@@ -1076,6 +1148,9 @@
 								"serial_and_batch_bundle": rm_item.get("serial_and_batch_bundle"),
 								"main_item_code": fg_item_code,
 								"allow_alternative_item": item_wh.get(rm_item_code, {}).get("allow_alternative_item"),
+								"use_serial_batch_fields": rm_item.get("use_serial_batch_fields"),
+								"serial_no": rm_item.get("serial_no") if rm_item.get("use_serial_batch_fields") else None,
+								"batch_no": rm_item.get("batch_no") if rm_item.get("use_serial_batch_fields") else None,
 							}
 						}
 
diff --git a/erpnext/controllers/tests/test_queries.py b/erpnext/controllers/tests/test_queries.py
index 3a3bc1c..c536d1c 100644
--- a/erpnext/controllers/tests/test_queries.py
+++ b/erpnext/controllers/tests/test_queries.py
@@ -31,18 +31,6 @@
 		self.assertGreaterEqual(len(query(txt="_Test Lead")), 4)
 		self.assertEqual(len(query(txt="_Test Lead 4")), 1)
 
-	def test_customer_query(self):
-		query = add_default_params(queries.customer_query, "Customer")
-
-		self.assertGreaterEqual(len(query(txt="_Test Customer")), 7)
-		self.assertGreaterEqual(len(query(txt="_Test Customer USD")), 1)
-
-	def test_supplier_query(self):
-		query = add_default_params(queries.supplier_query, "Supplier")
-
-		self.assertGreaterEqual(len(query(txt="_Test Supplier")), 7)
-		self.assertGreaterEqual(len(query(txt="_Test Supplier USD")), 1)
-
 	def test_item_query(self):
 		query = add_default_params(queries.item_query, "Item")
 
diff --git a/erpnext/controllers/tests/test_subcontracting_controller.py b/erpnext/controllers/tests/test_subcontracting_controller.py
index 95a7bcb..7374e1e 100644
--- a/erpnext/controllers/tests/test_subcontracting_controller.py
+++ b/erpnext/controllers/tests/test_subcontracting_controller.py
@@ -140,6 +140,7 @@
 		- Create partial SCR against the SCO and check serial nos and batch no.
 		"""
 
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0)
 		set_backflush_based_on("Material Transferred for Subcontract")
 		service_items = [
 			{
@@ -202,6 +203,8 @@
 				if value.get(field):
 					self.assertEqual(value.get(field), transferred_detais.get(field))
 
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
+
 	def test_subcontracting_with_same_components_different_fg(self):
 		"""
 		- Set backflush based on Material Transfer.
@@ -211,6 +214,7 @@
 		- Create partial SCR against the SCO and check serial nos.
 		"""
 
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0)
 		set_backflush_based_on("Material Transferred for Subcontract")
 		service_items = [
 			{
@@ -278,6 +282,8 @@
 			self.assertEqual(value.qty, 6)
 			self.assertEqual(sorted(value.serial_no), sorted(transferred_detais.get("serial_no")[6:12]))
 
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
+
 	def test_return_non_consumed_materials(self):
 		"""
 		- Set backflush based on Material Transfer.
@@ -288,6 +294,7 @@
 		- After that return the non consumed material back to the store from supplier's warehouse.
 		"""
 
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0)
 		set_backflush_based_on("Material Transferred for Subcontract")
 		service_items = [
 			{
@@ -333,6 +340,7 @@
 			get_serial_nos(doc.items[0].serial_no),
 			itemwise_details.get(doc.items[0].item_code)["serial_no"][5:6],
 		)
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
 
 	def test_item_with_batch_based_on_bom(self):
 		"""
@@ -578,6 +586,7 @@
 		- Create SCR for remaining qty against the SCO and change the qty manually.
 		"""
 
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0)
 		set_backflush_based_on("Material Transferred for Subcontract")
 		service_items = [
 			{
@@ -643,6 +652,8 @@
 			self.assertEqual(value.qty, details.qty)
 			self.assertEqual(sorted(value.serial_no), sorted(details.serial_no))
 
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
+
 	def test_incorrect_serial_no_components_based_on_material_transfer(self):
 		"""
 		- Set backflush based on Material Transferred for Subcontract.
@@ -652,6 +663,7 @@
 		- System should throw the error and not allowed to save the SCR.
 		"""
 
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0)
 		serial_no = "ABC"
 		if not frappe.db.exists("Serial No", serial_no):
 			frappe.get_doc(
@@ -712,6 +724,7 @@
 		scr1.save()
 		self.delete_bundle_from_scr(scr1)
 		scr1.delete()
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
 
 	@staticmethod
 	def delete_bundle_from_scr(scr):
@@ -844,6 +857,223 @@
 		for item in sco.get("supplied_items"):
 			self.assertEqual(item.supplied_qty, 0.0)
 
+	def test_sco_with_material_transfer_with_use_serial_batch_fields(self):
+		"""
+		- Set backflush based on Material Transfer.
+		- Create SCO for the item Subcontracted Item SA1 and Subcontracted Item SA5.
+		- Transfer the components from Stores to Supplier warehouse with batch no and serial nos.
+		- Transfer extra item Subcontracted SRM Item 4 for the subcontract item Subcontracted Item SA5.
+		- Create partial SCR against the SCO and check serial nos and batch no.
+		"""
+
+		set_backflush_based_on("Material Transferred for Subcontract")
+		service_items = [
+			{
+				"warehouse": "_Test Warehouse - _TC",
+				"item_code": "Subcontracted Service Item 1",
+				"qty": 5,
+				"rate": 100,
+				"fg_item": "Subcontracted Item SA1",
+				"fg_item_qty": 5,
+			},
+			{
+				"warehouse": "_Test Warehouse - _TC",
+				"item_code": "Subcontracted Service Item 5",
+				"qty": 6,
+				"rate": 100,
+				"fg_item": "Subcontracted Item SA5",
+				"fg_item_qty": 6,
+			},
+		]
+		sco = get_subcontracting_order(service_items=service_items)
+		rm_items = get_rm_items(sco.supplied_items)
+		rm_items.append(
+			{
+				"main_item_code": "Subcontracted Item SA5",
+				"item_code": "Subcontracted SRM Item 4",
+				"qty": 6,
+			}
+		)
+		itemwise_details = make_stock_in_entry(rm_items=rm_items)
+
+		for item in rm_items:
+			item["sco_rm_detail"] = sco.items[0].name if item.get("qty") == 5 else sco.items[1].name
+
+		make_stock_transfer_entry(
+			sco_no=sco.name,
+			rm_items=rm_items,
+			itemwise_details=copy.deepcopy(itemwise_details),
+		)
+
+		scr1 = make_subcontracting_receipt(sco.name)
+		scr1.remove(scr1.items[1])
+		scr1.save()
+		scr1.submit()
+
+		for key, value in get_supplied_items(scr1).items():
+			transferred_detais = itemwise_details.get(key)
+
+			for field in ["qty", "serial_no", "batch_no"]:
+				if value.get(field):
+					data = value.get(field)
+					if field == "serial_no":
+						data = sorted(data)
+
+					self.assertEqual(data, transferred_detais.get(field))
+
+		scr2 = make_subcontracting_receipt(sco.name)
+		scr2.save()
+		scr2.submit()
+
+		for key, value in get_supplied_items(scr2).items():
+			transferred_detais = itemwise_details.get(key)
+
+			for field in ["qty", "serial_no", "batch_no"]:
+				if value.get(field):
+					data = value.get(field)
+					if field == "serial_no":
+						data = sorted(data)
+
+					self.assertEqual(data, transferred_detais.get(field))
+
+	def test_subcontracting_with_same_components_different_fg_with_serial_batch_fields(self):
+		"""
+		- Set backflush based on Material Transfer.
+		- Create SCO for the item Subcontracted Item SA2 and Subcontracted Item SA3.
+		- Transfer the components from Stores to Supplier warehouse with serial nos.
+		- Transfer extra qty of components for the item Subcontracted Item SA2.
+		- Create partial SCR against the SCO and check serial nos.
+		"""
+
+		set_backflush_based_on("Material Transferred for Subcontract")
+		service_items = [
+			{
+				"warehouse": "_Test Warehouse - _TC",
+				"item_code": "Subcontracted Service Item 2",
+				"qty": 5,
+				"rate": 100,
+				"fg_item": "Subcontracted Item SA2",
+				"fg_item_qty": 5,
+			},
+			{
+				"warehouse": "_Test Warehouse - _TC",
+				"item_code": "Subcontracted Service Item 3",
+				"qty": 6,
+				"rate": 100,
+				"fg_item": "Subcontracted Item SA3",
+				"fg_item_qty": 6,
+			},
+		]
+		sco = get_subcontracting_order(service_items=service_items)
+		rm_items = get_rm_items(sco.supplied_items)
+		rm_items[0]["qty"] += 1
+		itemwise_details = make_stock_in_entry(rm_items=rm_items)
+
+		for item in rm_items:
+			item["sco_rm_detail"] = sco.items[0].name if item.get("qty") == 5 else sco.items[1].name
+			item["use_serial_batch_fields"] = 1
+
+		make_stock_transfer_entry(
+			sco_no=sco.name,
+			rm_items=rm_items,
+			itemwise_details=copy.deepcopy(itemwise_details),
+		)
+
+		scr1 = make_subcontracting_receipt(sco.name)
+		scr1.items[0].qty = 3
+		scr1.remove(scr1.items[1])
+		scr1.save()
+		scr1.submit()
+
+		for key, value in get_supplied_items(scr1).items():
+			transferred_detais = itemwise_details.get(key)
+
+			self.assertEqual(value.qty, 4)
+			self.assertEqual(sorted(value.serial_no), sorted(transferred_detais.get("serial_no")[0:4]))
+
+		scr2 = make_subcontracting_receipt(sco.name)
+		scr2.items[0].qty = 2
+		scr2.remove(scr2.items[1])
+		scr2.save()
+		scr2.submit()
+
+		for key, value in get_supplied_items(scr2).items():
+			transferred_detais = itemwise_details.get(key)
+
+			self.assertEqual(value.qty, 2)
+			self.assertEqual(sorted(value.serial_no), sorted(transferred_detais.get("serial_no")[4:6]))
+
+		scr3 = make_subcontracting_receipt(sco.name)
+		scr3.save()
+		scr3.submit()
+
+		for key, value in get_supplied_items(scr3).items():
+			transferred_detais = itemwise_details.get(key)
+
+			self.assertEqual(value.qty, 6)
+			self.assertEqual(sorted(value.serial_no), sorted(transferred_detais.get("serial_no")[6:12]))
+
+	def test_return_non_consumed_materials_with_serial_batch_fields(self):
+		"""
+		- Set backflush based on Material Transfer.
+		- Create SCO for item Subcontracted Item SA2.
+		- Transfer the components from Stores to Supplier warehouse with serial nos.
+		- Transfer extra qty of component for the subcontracted item Subcontracted Item SA2.
+		- Create SCR for full qty against the SCO and change the qty of raw material.
+		- After that return the non consumed material back to the store from supplier's warehouse.
+		"""
+
+		set_backflush_based_on("Material Transferred for Subcontract")
+		service_items = [
+			{
+				"warehouse": "_Test Warehouse - _TC",
+				"item_code": "Subcontracted Service Item 2",
+				"qty": 5,
+				"rate": 100,
+				"fg_item": "Subcontracted Item SA2",
+				"fg_item_qty": 5,
+			},
+		]
+		sco = get_subcontracting_order(service_items=service_items)
+		rm_items = get_rm_items(sco.supplied_items)
+		rm_items[0]["qty"] += 1
+		itemwise_details = make_stock_in_entry(rm_items=rm_items)
+
+		for item in rm_items:
+			item["use_serial_batch_fields"] = 1
+			item["sco_rm_detail"] = sco.items[0].name
+
+		make_stock_transfer_entry(
+			sco_no=sco.name,
+			rm_items=rm_items,
+			itemwise_details=copy.deepcopy(itemwise_details),
+		)
+
+		scr1 = make_subcontracting_receipt(sco.name)
+		scr1.save()
+		scr1.supplied_items[0].consumed_qty = 5
+		scr1.supplied_items[0].serial_no = "\n".join(
+			sorted(itemwise_details.get("Subcontracted SRM Item 2").get("serial_no")[0:5])
+		)
+		scr1.submit()
+
+		for key, value in get_supplied_items(scr1).items():
+			transferred_detais = itemwise_details.get(key)
+			self.assertTrue(value.use_serial_batch_fields)
+			self.assertEqual(value.qty, 5)
+			self.assertEqual(sorted(value.serial_no), sorted(transferred_detais.get("serial_no")[0:5]))
+
+		sco.load_from_db()
+		self.assertEqual(sco.supplied_items[0].consumed_qty, 5)
+		doc = get_materials_from_supplier(sco.name, [d.name for d in sco.supplied_items])
+		self.assertEqual(doc.items[0].qty, 1)
+		self.assertEqual(doc.items[0].s_warehouse, "_Test Warehouse 1 - _TC")
+		self.assertEqual(doc.items[0].t_warehouse, "_Test Warehouse - _TC")
+		self.assertEqual(
+			get_serial_nos(doc.items[0].serial_no),
+			itemwise_details.get(doc.items[0].item_code)["serial_no"][5:6],
+		)
+
 
 def add_second_row_in_scr(scr):
 	item_dict = {}
@@ -914,6 +1144,7 @@
 		else child_row.get("consumed_qty")
 	)
 
+	details.use_serial_batch_fields = child_row.get("use_serial_batch_fields")
 	if child_row.serial_and_batch_bundle:
 		doc = frappe.get_doc("Serial and Batch Bundle", child_row.serial_and_batch_bundle)
 		for row in doc.get("entries"):
@@ -945,6 +1176,7 @@
 			"rate": row.rate or 100,
 			"stock_uom": row.stock_uom or "Nos",
 			"warehouse": row.warehouse or "_Test Warehouse - _TC",
+			"use_serial_batch_fields": row.get("use_serial_batch_fields"),
 		}
 
 		item_details = args.itemwise_details.get(row.item_code)
@@ -960,9 +1192,12 @@
 				if batch_qty >= row.qty:
 					batches[batch_no] = row.qty
 					item_details.batch_no[batch_no] -= row.qty
+					if row.get("use_serial_batch_fields"):
+						item["batch_no"] = batch_no
+
 					break
 
-		if serial_nos or batches:
+		if not row.get("use_serial_batch_fields") and (serial_nos or batches):
 			item["serial_and_batch_bundle"] = make_serial_batch_bundle(
 				frappe._dict(
 					{
@@ -978,6 +1213,9 @@
 				)
 			).name
 
+		if serial_nos and row.get("use_serial_batch_fields"):
+			item["serial_no"] = "\n".join(serial_nos)
+
 		items.append(item)
 
 	ste_dict = make_rm_stock_entry(args.sco_no, items)
@@ -1132,6 +1370,7 @@
 				"rate": item.rate,
 				"stock_uom": item.stock_uom,
 				"warehouse": item.reserve_warehouse,
+				"use_serial_batch_fields": 0,
 			}
 		)
 
diff --git a/erpnext/crm/doctype/campaign/campaign.js b/erpnext/crm/doctype/campaign/campaign.js
index 9e4a0a9..219e8cf 100644
--- a/erpnext/crm/doctype/campaign/campaign.js
+++ b/erpnext/crm/doctype/campaign/campaign.js
@@ -11,7 +11,7 @@
 				frappe.boot.sysdefaults.campaign_naming_by == "Naming Series"
 			);
 		} else {
-			cur_frm.add_custom_button(
+			frm.add_custom_button(
 				__("View Leads"),
 				function () {
 					frappe.route_options = { source: "Campaign", campaign_name: frm.doc.name };
diff --git a/erpnext/crm/doctype/lead/lead.js b/erpnext/crm/doctype/lead/lead.js
index 0b6cdf2..848d697 100644
--- a/erpnext/crm/doctype/lead/lead.js
+++ b/erpnext/crm/doctype/lead/lead.js
@@ -17,10 +17,6 @@
 	}
 
 	onload() {
-		this.frm.set_query("customer", function (doc, cdt, cdn) {
-			return { query: "erpnext.controllers.queries.customer_query" };
-		});
-
 		this.frm.set_query("lead_owner", function (doc, cdt, cdn) {
 			return { query: "frappe.core.doctype.user.user.user_query" };
 		});
@@ -93,32 +89,33 @@
 	make_customer() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.crm.doctype.lead.lead.make_customer",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 
 	make_quotation() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.crm.doctype.lead.lead.make_quotation",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 
 	make_prospect() {
+		const me = this;
 		frappe.model.with_doctype("Prospect", function () {
 			let prospect = frappe.model.get_new_doc("Prospect");
-			prospect.company_name = cur_frm.doc.company_name;
-			prospect.no_of_employees = cur_frm.doc.no_of_employees;
-			prospect.industry = cur_frm.doc.industry;
-			prospect.market_segment = cur_frm.doc.market_segment;
-			prospect.territory = cur_frm.doc.territory;
-			prospect.fax = cur_frm.doc.fax;
-			prospect.website = cur_frm.doc.website;
-			prospect.prospect_owner = cur_frm.doc.lead_owner;
-			prospect.notes = cur_frm.doc.notes;
+			prospect.company_name = me.frm.doc.company_name;
+			prospect.no_of_employees = me.frm.doc.no_of_employees;
+			prospect.industry = me.frm.doc.industry;
+			prospect.market_segment = me.frm.doc.market_segment;
+			prospect.territory = me.frm.doc.territory;
+			prospect.fax = me.frm.doc.fax;
+			prospect.website = me.frm.doc.website;
+			prospect.prospect_owner = me.frm.doc.lead_owner;
+			prospect.notes = me.frm.doc.notes;
 
 			let leads_row = frappe.model.add_child(prospect, "leads");
-			leads_row.lead = cur_frm.doc.name;
+			leads_row.lead = me.frm.doc.name;
 
 			frappe.set_route("Form", "Prospect", prospect.name);
 		});
diff --git a/erpnext/crm/doctype/opportunity/opportunity.js b/erpnext/crm/doctype/opportunity/opportunity.js
index 1c8a80a..c706357 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.js
+++ b/erpnext/crm/doctype/opportunity/opportunity.js
@@ -318,14 +318,14 @@
 	create_quotation() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.crm.doctype.opportunity.opportunity.make_quotation",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 
 	make_customer() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.crm.doctype.opportunity.opportunity.make_customer",
-			frm: cur_frm,
+			frm: this.frm,
 		});
 	}
 
diff --git a/erpnext/crm/doctype/opportunity/opportunity.json b/erpnext/crm/doctype/opportunity/opportunity.json
index 07641d2..e6f7bfc 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.json
+++ b/erpnext/crm/doctype/opportunity/opportunity.json
@@ -250,7 +250,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hidden": 1,
    "label": "Address",
    "oldfieldname": "address",
@@ -622,7 +622,7 @@
  "icon": "fa fa-info-sign",
  "idx": 195,
  "links": [],
- "modified": "2022-10-13 12:42:21.545636",
+ "modified": "2024-03-22 16:01:10.721453",
  "modified_by": "Administrator",
  "module": "CRM",
  "name": "Opportunity",
diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py
index 72e26de..7abbb63 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.py
+++ b/erpnext/crm/doctype/opportunity/opportunity.py
@@ -40,7 +40,7 @@
 			OpportunityLostReasonDetail,
 		)
 
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		annual_revenue: DF.Currency
 		base_opportunity_amount: DF.Currency
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 308e6ca..0d70476 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -282,9 +282,6 @@
 
 before_tests = "erpnext.setup.utils.before_tests"
 
-standard_queries = {
-	"Customer": "erpnext.controllers.queries.customer_query",
-}
 
 period_closing_doctypes = [
 	"Sales Invoice",
@@ -309,7 +306,10 @@
 
 doc_events = {
 	"*": {
-		"validate": "erpnext.support.doctype.service_level_agreement.service_level_agreement.apply",
+		"validate": [
+			"erpnext.support.doctype.service_level_agreement.service_level_agreement.apply",
+			"erpnext.setup.doctype.transaction_deletion_record.transaction_deletion_record.check_for_running_deletion_job",
+		],
 	},
 	tuple(period_closing_doctypes): {
 		"validate": "erpnext.accounts.doctype.accounting_period.accounting_period.validate_accounting_period_on_doc_save",
diff --git a/erpnext/locale/main.pot b/erpnext/locale/main.pot
index 3409014..61208a6 100644
--- a/erpnext/locale/main.pot
+++ b/erpnext/locale/main.pot
@@ -7,8 +7,8 @@
 msgstr ""
 "Project-Id-Version: ERPNext VERSION\n"
 "Report-Msgid-Bugs-To: info@erpnext.com\n"
-"POT-Creation-Date: 2024-01-29 18:13+0053\n"
-"PO-Revision-Date: 2024-01-29 18:13+0053\n"
+"POT-Creation-Date: 2024-03-24 09:35+0000\n"
+"PO-Revision-Date: 2024-03-24 09:35+0000\n"
 "Last-Translator: info@erpnext.com\n"
 "Language-Team: info@erpnext.com\n"
 "MIME-Version: 1.0\n"
@@ -16,21 +16,17 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.13.1\n"
 
-#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:85
-msgid " "
-msgstr ""
-
 #. Label of a Column Break field in DocType 'Email Digest'
 #: setup/doctype/email_digest/email_digest.json
 msgctxt "Email Digest"
 msgid "  "
 msgstr ""
 
-#: selling/doctype/quotation/quotation.js:76
+#: selling/doctype/quotation/quotation.js:77
 msgid " Address"
 msgstr ""
 
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:612
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:618
 msgid " Amount"
 msgstr ""
 
@@ -40,29 +36,16 @@
 msgid " Is Child Table"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:186
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:184
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:107
 #: selling/report/sales_analytics/sales_analytics.py:66
 msgid " Name"
 msgstr ""
 
-#: public/js/bom_configurator/bom_configurator.bundle.js:108
-msgid " Qty"
-msgstr ""
-
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:603
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:609
 msgid " Rate"
 msgstr ""
 
-#: public/js/bom_configurator/bom_configurator.bundle.js:116
-msgid " Raw Material"
-msgstr ""
-
-#: public/js/bom_configurator/bom_configurator.bundle.js:127
-#: public/js/bom_configurator/bom_configurator.bundle.js:157
-msgid " Sub Assembly"
-msgstr ""
-
 #: projects/doctype/project_update/project_update.py:110
 msgid " Summary"
 msgstr ""
@@ -79,6 +62,10 @@
 msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item"
 msgstr ""
 
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:132
+msgid "#"
+msgstr ""
+
 #. Description of the Onboarding Step 'Accounts Settings'
 #: accounts/onboarding_step/accounts_settings/accounts_settings.json
 msgid ""
@@ -624,7 +611,7 @@
 msgid "% Completed"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:755
+#: manufacturing/doctype/bom/bom.js:788
 #, python-format
 msgid "% Finished Item Quantity"
 msgstr ""
@@ -636,6 +623,7 @@
 msgstr ""
 
 #: stock/page/warehouse_capacity_summary/warehouse_capacity_summary.js:70
+#: stock/page/warehouse_capacity_summary/warehouse_capacity_summary_header.html:16
 msgid "% Occupied"
 msgstr ""
 
@@ -725,11 +713,11 @@
 msgid "% of materials delivered against this Sales Order"
 msgstr ""
 
-#: controllers/accounts_controller.py:1899
+#: controllers/accounts_controller.py:1991
 msgid "'Account' in the Accounting section of Customer {0}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:263
+#: selling/doctype/sales_order/sales_order.py:266
 msgid "'Allow Multiple Sales Orders Against a Customer's Purchase Order'"
 msgstr ""
 
@@ -737,7 +725,7 @@
 msgid "'Based On' and 'Group By' can not be same"
 msgstr ""
 
-#: stock/report/product_bundle_balance/product_bundle_balance.py:232
+#: stock/report/product_bundle_balance/product_bundle_balance.py:230
 msgid "'Date' is required"
 msgstr ""
 
@@ -745,11 +733,11 @@
 msgid "'Days Since Last Order' must be greater than or equal to zero"
 msgstr ""
 
-#: controllers/accounts_controller.py:1904
+#: controllers/accounts_controller.py:1996
 msgid "'Default {0} Account' in Company {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1048
+#: accounts/doctype/journal_entry/journal_entry.py:1075
 msgid "'Entries' cannot be empty"
 msgstr ""
 
@@ -767,10 +755,26 @@
 msgid "'Has Serial No' can not be 'Yes' for non-stock item"
 msgstr ""
 
-#: stock/report/stock_ledger/stock_ledger.py:436
+#: stock/report/stock_ledger/stock_ledger.py:538
 msgid "'Opening'"
 msgstr ""
 
+#: stock/doctype/delivery_note/delivery_note.py:388
+msgid "'Sales Invoice Item' reference ({1}) is missing in row {0}"
+msgstr ""
+
+#: stock/doctype/delivery_note/delivery_note.py:381
+msgid "'Sales Invoice' reference ({1}) is missing in row {0}"
+msgstr ""
+
+#: stock/doctype/delivery_note/delivery_note.py:364
+msgid "'Sales Order Item' reference ({1}) is missing in row {0}"
+msgstr ""
+
+#: stock/doctype/delivery_note/delivery_note.py:357
+msgid "'Sales Order' reference ({1}) is missing in row {0}"
+msgstr ""
+
 #: stock/report/batch_item_expiry_status/batch_item_expiry_status.py:27
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.py:101
 #: stock/report/stock_analytics/stock_analytics.py:326
@@ -785,10 +789,18 @@
 msgid "'Update Stock' can not be checked because items are not delivered via {0}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:369
+#: accounts/doctype/sales_invoice/sales_invoice.py:380
 msgid "'Update Stock' cannot be checked for fixed asset sale"
 msgstr ""
 
+#: accounts/doctype/bank_account/bank_account.py:64
+msgid "'{0}' account is already used by {1}. Use another account."
+msgstr ""
+
+#: controllers/accounts_controller.py:392
+msgid "'{0}' account: '{1}' should match the Return Against Invoice"
+msgstr ""
+
 #: stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:175
 #: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:180
 #: stock/report/stock_ledger_variance/stock_ledger_variance.py:104
@@ -880,7 +892,7 @@
 msgid "* Will be calculated in the transaction."
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:130
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:140
 msgid ", with the inventory {0}: {1}"
 msgstr ""
 
@@ -1113,7 +1125,7 @@
 msgid "<div class=\"text-muted text-center\">No Matching Bank Transactions Found</div>"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/dialog_manager.js:258
+#: public/js/bank_reconciliation_tool/dialog_manager.js:262
 msgid "<div class=\"text-muted text-center\">{0}</div>"
 msgstr ""
 
@@ -1351,11 +1363,11 @@
 msgid "A BOM with name {0} already exists for item {1}."
 msgstr ""
 
-#: selling/doctype/customer/customer.py:297
+#: selling/doctype/customer/customer.py:309
 msgid "A Customer Group exists with same name please change the Customer name or rename the Customer Group"
 msgstr ""
 
-#: manufacturing/doctype/workstation/workstation.js:47
+#: manufacturing/doctype/workstation/workstation.js:73
 msgid "A Holiday List can be added to exclude counting these days for the Workstation."
 msgstr ""
 
@@ -1367,7 +1379,17 @@
 msgid "A Packing Slip can only be created for Draft Delivery Note."
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:530
+#. Description of a DocType
+#: stock/doctype/price_list/price_list.json
+msgid "A Price List is a collection of Item Prices either Selling, Buying, or both"
+msgstr ""
+
+#. Description of a DocType
+#: stock/doctype/item/item.json
+msgid "A Product or a Service that is bought, sold or kept in stock."
+msgstr ""
+
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:535
 msgid "A Reconciliation Job {0} is running for the same filters. Cannot reconcile now"
 msgstr ""
 
@@ -1379,12 +1401,13 @@
 "Sales Order at the heart of your sales and purchase transactions. Sales Orders are linked in Delivery Note, Sales Invoices, Material Request, and Maintenance transactions. Through Sales Order, you can track fulfillment of the overall deal towards the customer."
 msgstr ""
 
-#: setup/doctype/company/company.py:937
-msgid "A Transaction Deletion Job is triggered for {0}"
+#: setup/doctype/company/company.py:916
+msgid "A Transaction Deletion Document: {0} is triggered for {0}"
 msgstr ""
 
-#: setup/doctype/company/company.py:914
-msgid "A Transaction Deletion Job: {0} is already running for {1}"
+#. Description of a DocType
+#: accounts/doctype/shipping_rule_condition/shipping_rule_condition.json
+msgid "A condition for a Shipping Rule"
 msgstr ""
 
 #. Description of the 'Send To Primary Contact' (Check) field in DocType
@@ -1402,6 +1425,11 @@
 msgid "A driver must be set to submit."
 msgstr ""
 
+#. Description of a DocType
+#: stock/doctype/warehouse/warehouse.json
+msgid "A logical Warehouse against which stock entries are made."
+msgstr ""
+
 #: templates/emails/confirm_appointment.html:2
 msgid "A new appointment has been created for you with {0}"
 msgstr ""
@@ -1410,6 +1438,11 @@
 msgid "A template with tax category {0} already exists. Only one template is allowed with each tax category"
 msgstr ""
 
+#. Description of a DocType
+#: setup/doctype/sales_partner/sales_partner.json
+msgid "A third party distributor / dealer / commission agent / affiliate / reseller who sells the companies products for a commission."
+msgstr ""
+
 #. Option for the 'Blood Group' (Select) field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
@@ -1608,11 +1641,11 @@
 msgid "Abbreviation"
 msgstr ""
 
-#: setup/doctype/company/company.py:164
+#: setup/doctype/company/company.py:163
 msgid "Abbreviation already used for another company"
 msgstr ""
 
-#: setup/doctype/company/company.py:159
+#: setup/doctype/company/company.py:158
 msgid "Abbreviation is mandatory"
 msgstr ""
 
@@ -1626,15 +1659,15 @@
 msgid "About Us Settings"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:39
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:37
 msgid "About {0} minute remaining"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:40
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:38
 msgid "About {0} minutes remaining"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:37
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:35
 msgid "About {0} seconds remaining"
 msgstr ""
 
@@ -1702,7 +1735,7 @@
 msgid "Accepted Qty in Stock UOM"
 msgstr ""
 
-#: public/js/controllers/transaction.js:2124
+#: public/js/controllers/transaction.js:2167
 msgid "Accepted Quantity"
 msgstr ""
 
@@ -1754,7 +1787,7 @@
 msgid "Access Key"
 msgstr ""
 
-#: accounts/doctype/currency_exchange_settings/currency_exchange_settings.py:48
+#: accounts/doctype/currency_exchange_settings/currency_exchange_settings.py:49
 msgid "Access Key is required for Service Provider: {0}"
 msgstr ""
 
@@ -1776,13 +1809,13 @@
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.js:30
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:193
 #: accounts/report/general_ledger/general_ledger.js:38
-#: accounts/report/general_ledger/general_ledger.py:565
-#: accounts/report/payment_ledger/payment_ledger.js:31
+#: accounts/report/general_ledger/general_ledger.py:578
+#: accounts/report/payment_ledger/payment_ledger.js:30
 #: accounts/report/payment_ledger/payment_ledger.py:145
 #: accounts/report/trial_balance/trial_balance.py:415
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.js:70
-#: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.js:16
-#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:16
+#: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.js:15
+#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:15
 msgid "Account"
 msgstr ""
 
@@ -1935,12 +1968,6 @@
 msgid "Account Balance"
 msgstr ""
 
-#. Label of a Currency field in DocType 'Journal Entry Account'
-#: accounts/doctype/journal_entry_account/journal_entry_account.json
-msgctxt "Journal Entry Account"
-msgid "Account Balance"
-msgstr ""
-
 #. Label of a Currency field in DocType 'Payment Entry'
 #: accounts/doctype/payment_entry/payment_entry.json
 msgctxt "Payment Entry"
@@ -2084,8 +2111,8 @@
 msgid "Account Manager"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:867
-#: controllers/accounts_controller.py:1908
+#: accounts/doctype/sales_invoice/sales_invoice.py:884
+#: controllers/accounts_controller.py:2000
 msgid "Account Missing"
 msgstr ""
 
@@ -2113,11 +2140,11 @@
 msgid "Account Name"
 msgstr ""
 
-#: accounts/doctype/account/account.py:306
+#: accounts/doctype/account/account.py:325
 msgid "Account Not Found"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:108
+#: accounts/doctype/account/account_tree.js:131
 msgid "Account Number"
 msgstr ""
 
@@ -2127,7 +2154,7 @@
 msgid "Account Number"
 msgstr ""
 
-#: accounts/doctype/account/account.py:458
+#: accounts/doctype/account/account.py:477
 msgid "Account Number {0} already used in account {1}"
 msgstr ""
 
@@ -2165,8 +2192,8 @@
 msgid "Account Subtype"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:115
-#: accounts/report/account_balance/account_balance.js:35
+#: accounts/doctype/account/account_tree.js:152
+#: accounts/report/account_balance/account_balance.js:34
 msgid "Account Type"
 msgstr ""
 
@@ -2210,11 +2237,11 @@
 msgid "Account Value"
 msgstr ""
 
-#: accounts/doctype/account/account.py:279
+#: accounts/doctype/account/account.py:298
 msgid "Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'"
 msgstr ""
 
-#: accounts/doctype/account/account.py:273
+#: accounts/doctype/account/account.py:292
 msgid "Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'"
 msgstr ""
 
@@ -2236,7 +2263,7 @@
 msgid "Account for Change Amount"
 msgstr ""
 
-#: accounts/doctype/bank_clearance/bank_clearance.py:44
+#: accounts/doctype/bank_clearance/bank_clearance.py:46
 msgid "Account is mandatory to get payment entries"
 msgstr ""
 
@@ -2244,28 +2271,28 @@
 msgid "Account is not set for the dashboard chart {0}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:677
+#: assets/doctype/asset/asset.py:679
 msgid "Account not Found"
 msgstr ""
 
-#: accounts/doctype/account/account.py:360
+#: accounts/doctype/account/account.py:379
 msgid "Account with child nodes cannot be converted to ledger"
 msgstr ""
 
-#: accounts/doctype/account/account.py:252
+#: accounts/doctype/account/account.py:271
 msgid "Account with child nodes cannot be set as ledger"
 msgstr ""
 
-#: accounts/doctype/account/account.py:371
+#: accounts/doctype/account/account.py:390
 msgid "Account with existing transaction can not be converted to group."
 msgstr ""
 
-#: accounts/doctype/account/account.py:400
+#: accounts/doctype/account/account.py:419
 msgid "Account with existing transaction can not be deleted"
 msgstr ""
 
-#: accounts/doctype/account/account.py:247
-#: accounts/doctype/account/account.py:362
+#: accounts/doctype/account/account.py:266
+#: accounts/doctype/account/account.py:381
 msgid "Account with existing transaction cannot be converted to ledger"
 msgstr ""
 
@@ -2273,7 +2300,7 @@
 msgid "Account {0} added multiple times"
 msgstr ""
 
-#: setup/doctype/company/company.py:187
+#: setup/doctype/company/company.py:186
 msgid "Account {0} does not belong to company: {1}"
 msgstr ""
 
@@ -2281,7 +2308,7 @@
 msgid "Account {0} does not belongs to company {1}"
 msgstr ""
 
-#: accounts/doctype/account/account.py:532
+#: accounts/doctype/account/account.py:551
 msgid "Account {0} does not exist"
 msgstr ""
 
@@ -2297,7 +2324,7 @@
 msgid "Account {0} does not match with Company {1} in Mode of Account: {2}"
 msgstr ""
 
-#: accounts/doctype/account/account.py:490
+#: accounts/doctype/account/account.py:509
 msgid "Account {0} exists in parent company {1}."
 msgstr ""
 
@@ -2305,51 +2332,51 @@
 msgid "Account {0} has been entered multiple times"
 msgstr ""
 
-#: accounts/doctype/account/account.py:344
+#: accounts/doctype/account/account.py:363
 msgid "Account {0} is added in the child company {1}"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:443
+#: accounts/doctype/gl_entry/gl_entry.py:397
 msgid "Account {0} is frozen"
 msgstr ""
 
-#: controllers/accounts_controller.py:1032
+#: controllers/accounts_controller.py:1096
 msgid "Account {0} is invalid. Account Currency must be {1}"
 msgstr ""
 
-#: accounts/doctype/account/account.py:150
+#: accounts/doctype/account/account.py:151
 msgid "Account {0}: Parent account {1} can not be a ledger"
 msgstr ""
 
-#: accounts/doctype/account/account.py:156
+#: accounts/doctype/account/account.py:157
 msgid "Account {0}: Parent account {1} does not belong to company: {2}"
 msgstr ""
 
-#: accounts/doctype/account/account.py:144
+#: accounts/doctype/account/account.py:145
 msgid "Account {0}: Parent account {1} does not exist"
 msgstr ""
 
-#: accounts/doctype/account/account.py:147
+#: accounts/doctype/account/account.py:148
 msgid "Account {0}: You can not assign itself as parent account"
 msgstr ""
 
-#: accounts/general_ledger.py:403
+#: accounts/general_ledger.py:412
 msgid "Account: <b>{0}</b> is capital Work in progress and can not be updated by Journal Entry"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:243
+#: accounts/doctype/journal_entry/journal_entry.py:259
 msgid "Account: {0} can only be updated via Stock Transactions"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:325
+#: accounts/report/general_ledger/general_ledger.py:338
 msgid "Account: {0} does not exist"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:2098
+#: accounts/doctype/payment_entry/payment_entry.py:2117
 msgid "Account: {0} is not permitted under Payment Entry"
 msgstr ""
 
-#: controllers/accounts_controller.py:2591
+#: controllers/accounts_controller.py:2676
 msgid "Account: {0} with currency: {1} can not be selected"
 msgstr ""
 
@@ -2509,12 +2536,12 @@
 msgid "Accounting Dimension"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:206
+#: accounts/doctype/gl_entry/gl_entry.py:196
 #: accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:153
 msgid "Accounting Dimension <b>{0}</b> is required for 'Balance Sheet' account {1}."
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:193
+#: accounts/doctype/gl_entry/gl_entry.py:183
 #: accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:140
 msgid "Accounting Dimension <b>{0}</b> is required for 'Profit and Loss' account {1}."
 msgstr ""
@@ -2830,53 +2857,54 @@
 msgid "Accounting Entries"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.js:82
+#: accounts/doctype/sales_invoice/sales_invoice.js:86
 msgid "Accounting Entries are reposted"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:79
+#: accounts/doctype/journal_entry/journal_entry.js:42
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:95
 msgid "Accounting Entries are reposted."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:709 assets/doctype/asset/asset.py:724
-#: assets/doctype/asset_capitalization/asset_capitalization.py:572
+#: assets/doctype/asset/asset.py:713 assets/doctype/asset/asset.py:728
+#: assets/doctype/asset_capitalization/asset_capitalization.py:578
 msgid "Accounting Entry for Asset"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:738
+#: stock/doctype/purchase_receipt/purchase_receipt.py:737
 msgid "Accounting Entry for Service"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:906
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:926
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:942
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:959
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:978
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:999
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1126
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1266
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1284
-#: controllers/stock_controller.py:168 controllers/stock_controller.py:183
-#: stock/doctype/purchase_receipt/purchase_receipt.py:839
-#: stock/doctype/stock_entry/stock_entry.py:1464
-#: stock/doctype/stock_entry/stock_entry.py:1478
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:519
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:934
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:954
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:970
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:987
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1006
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1027
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1127
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1318
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1336
+#: controllers/stock_controller.py:350 controllers/stock_controller.py:365
+#: stock/doctype/purchase_receipt/purchase_receipt.py:841
+#: stock/doctype/stock_entry/stock_entry.py:1473
+#: stock/doctype/stock_entry/stock_entry.py:1487
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:520
 msgid "Accounting Entry for Stock"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:658
+#: stock/doctype/purchase_receipt/purchase_receipt.py:659
 msgid "Accounting Entry for {0}"
 msgstr ""
 
-#: controllers/accounts_controller.py:1950
+#: controllers/accounts_controller.py:2042
 msgid "Accounting Entry for {0}: {1} can only be made in currency: {2}"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting.js:192
+#: accounts/doctype/invoice_discounting/invoice_discounting.js:193
 #: buying/doctype/supplier/supplier.js:85
-#: public/js/controllers/stock_controller.js:72
-#: public/js/utils/ledger_preview.js:7 selling/doctype/customer/customer.js:159
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:43
+#: public/js/controllers/stock_controller.js:84
+#: public/js/utils/ledger_preview.js:8 selling/doctype/customer/customer.js:164
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:48
 msgid "Accounting Ledger"
 msgstr ""
 
@@ -2907,15 +2935,19 @@
 msgid "Accounting entries are frozen up to this date. Nobody can create or modify entries except users with the role specified below"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:69
+#: accounts/doctype/journal_entry/journal_entry.js:30
+msgid "Accounting entries for this Journal Entry need to be reposted. Please click on 'Repost' button to update."
+msgstr ""
+
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:82
 msgid "Accounting entries for this invoice need to be reposted. Please click on 'Repost' button to update."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.js:72
+#: accounts/doctype/sales_invoice/sales_invoice.js:73
 msgid "Accounting entries for this invoice needs to be reposted. Please click on 'Repost' button to update."
 msgstr ""
 
-#: setup/doctype/company/company.py:317
+#: setup/doctype/company/company.py:316
 msgid "Accounts"
 msgstr ""
 
@@ -3090,7 +3122,7 @@
 msgid "Accounts Manager"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:343
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:341
 msgid "Accounts Missing Error"
 msgstr ""
 
@@ -3100,9 +3132,9 @@
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:85
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:117
 #: accounts/report/accounts_payable/accounts_payable.json
-#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:122
+#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:125
 #: accounts/workspace/payables/payables.json
-#: buying/doctype/supplier/supplier.js:90
+#: buying/doctype/supplier/supplier.js:97
 msgid "Accounts Payable"
 msgstr ""
 
@@ -3115,7 +3147,7 @@
 
 #. Name of a report
 #. Label of a Link in the Payables Workspace
-#: accounts/report/accounts_payable/accounts_payable.js:175
+#: accounts/report/accounts_payable/accounts_payable.js:176
 #: accounts/report/accounts_payable_summary/accounts_payable_summary.json
 #: accounts/workspace/payables/payables.json
 msgid "Accounts Payable Summary"
@@ -3128,10 +3160,10 @@
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:12
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:12
 #: accounts/report/accounts_receivable/accounts_receivable.json
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:150
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:153
 #: accounts/workspace/accounting/accounting.json
 #: accounts/workspace/receivables/receivables.json
-#: selling/doctype/customer/customer.js:155
+#: selling/doctype/customer/customer.js:153
 msgid "Accounts Receivable"
 msgstr ""
 
@@ -3290,7 +3322,7 @@
 msgid "Accounts User"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1153
+#: accounts/doctype/journal_entry/journal_entry.py:1180
 msgid "Accounts table cannot be blank."
 msgstr ""
 
@@ -3307,7 +3339,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:33
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:46
-#: accounts/report/account_balance/account_balance.js:38
+#: accounts/report/account_balance/account_balance.js:37
 msgid "Accumulated Depreciation"
 msgstr ""
 
@@ -3330,7 +3362,7 @@
 msgstr ""
 
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:155
-#: assets/doctype/asset/asset.js:242
+#: assets/doctype/asset/asset.js:277
 msgid "Accumulated Depreciation Amount"
 msgstr ""
 
@@ -3345,17 +3377,17 @@
 msgid "Accumulated Depreciation as on"
 msgstr ""
 
-#: accounts/doctype/budget/budget.py:243
+#: accounts/doctype/budget/budget.py:250
 msgid "Accumulated Monthly"
 msgstr ""
 
-#: accounts/report/balance_sheet/balance_sheet.js:27
-#: accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js:13
-#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:28
+#: accounts/report/balance_sheet/balance_sheet.js:22
+#: accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js:8
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:23
 msgid "Accumulated Values"
 msgstr ""
 
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:101
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:125
 msgid "Accumulated Values in Group Company"
 msgstr ""
 
@@ -3370,7 +3402,7 @@
 msgstr ""
 
 #: crm/doctype/lead/lead.js:42
-#: public/js/bank_reconciliation_tool/dialog_manager.js:171
+#: public/js/bank_reconciliation_tool/dialog_manager.js:175
 msgid "Action"
 msgstr ""
 
@@ -3392,7 +3424,7 @@
 msgid "Action If Same Rate is Not Maintained"
 msgstr ""
 
-#: quality_management/doctype/quality_review/quality_review_list.js:9
+#: quality_management/doctype/quality_review/quality_review_list.js:7
 msgid "Action Initialised"
 msgstr ""
 
@@ -3438,23 +3470,24 @@
 msgid "Action if Same Rate is Not Maintained Throughout Sales Cycle"
 msgstr ""
 
-#: accounts/doctype/account/account.js:55
-#: accounts/doctype/account/account.js:62
-#: accounts/doctype/account/account.js:91
-#: accounts/doctype/account/account.js:116
-#: accounts/doctype/journal_entry/journal_entry.js:35
-#: accounts/doctype/payment_entry/payment_entry.js:160
+#: accounts/doctype/account/account.js:50
+#: accounts/doctype/account/account.js:57
+#: accounts/doctype/account/account.js:89
+#: accounts/doctype/account/account.js:117
+#: accounts/doctype/journal_entry/journal_entry.js:77
+#: accounts/doctype/payment_entry/payment_entry.js:190
 #: accounts/doctype/subscription/subscription.js:38
 #: accounts/doctype/subscription/subscription.js:44
 #: accounts/doctype/subscription/subscription.js:50
-#: buying/doctype/supplier/supplier.js:104
-#: buying/doctype/supplier/supplier.js:109
-#: projects/doctype/project/project.js:69
-#: projects/doctype/project/project.js:73
-#: projects/doctype/project/project.js:134
-#: public/js/bank_reconciliation_tool/data_table_manager.js:93
-#: public/js/utils/unreconcile.js:22 selling/doctype/customer/customer.js:170
-#: selling/doctype/customer/customer.js:175 stock/doctype/item/item.js:419
+#: buying/doctype/supplier/supplier.js:128
+#: buying/doctype/supplier/supplier.js:137
+#: projects/doctype/project/project.js:78
+#: projects/doctype/project/project.js:86
+#: projects/doctype/project/project.js:160
+#: public/js/bank_reconciliation_tool/data_table_manager.js:88
+#: public/js/bank_reconciliation_tool/data_table_manager.js:121
+#: public/js/utils/unreconcile.js:28 selling/doctype/customer/customer.js:184
+#: selling/doctype/customer/customer.js:193 stock/doctype/item/item.js:486
 #: templates/pages/order.html:20
 msgid "Actions"
 msgstr ""
@@ -3491,7 +3524,7 @@
 msgstr ""
 
 #: accounts/doctype/subscription/subscription_list.js:6
-#: manufacturing/doctype/bom/bom_list.js:9 stock/doctype/batch/batch_list.js:11
+#: manufacturing/doctype/bom/bom_list.js:9 stock/doctype/batch/batch_list.js:18
 #: stock/doctype/putaway_rule/putaway_rule_list.js:7
 msgid "Active"
 msgstr ""
@@ -3537,6 +3570,12 @@
 msgid "Active Leads"
 msgstr ""
 
+#. Label of a Attach Image field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Active Status"
+msgstr ""
+
 #. Label of a Tab Break field in DocType 'Lead'
 #: crm/doctype/lead/lead.json
 msgctxt "Lead"
@@ -3581,14 +3620,14 @@
 msgid "Activity Cost exists for Employee {0} against Activity Type - {1}"
 msgstr ""
 
-#: projects/doctype/activity_type/activity_type.js:7
+#: projects/doctype/activity_type/activity_type.js:10
 msgid "Activity Cost per Employee"
 msgstr ""
 
 #. Name of a DocType
 #: projects/doctype/activity_type/activity_type.json
 #: projects/report/daily_timesheet_summary/daily_timesheet_summary.py:32
-#: public/js/projects/timer.js:8
+#: public/js/projects/timer.js:9 templates/pages/timelog_info.html:25
 msgid "Activity Type"
 msgstr ""
 
@@ -3728,6 +3767,7 @@
 msgid "Actual Posting"
 msgstr ""
 
+#: manufacturing/doctype/plant_floor/stock_summary_template.html:21
 #: stock/report/product_bundle_balance/product_bundle_balance.py:96
 #: stock/report/stock_projected_qty/stock_projected_qty.py:136
 msgid "Actual Qty"
@@ -3781,10 +3821,19 @@
 msgid "Actual Qty in Warehouse"
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:185
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:196
 msgid "Actual Qty is mandatory"
 msgstr ""
 
+#: manufacturing/doctype/plant_floor/stock_summary_template.html:37
+#: stock/dashboard/item_dashboard_list.html:28
+msgid "Actual Qty {0} / Waiting Qty {1}"
+msgstr ""
+
+#: manufacturing/doctype/production_plan/production_plan.js:150
+msgid "Actual Qty: Quantity available in the warehouse."
+msgstr ""
+
 #: stock/report/item_shortage_report/item_shortage_report.py:95
 msgid "Actual Quantity"
 msgstr ""
@@ -3851,18 +3900,20 @@
 msgid "Actual qty in stock"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1223
+#: accounts/doctype/payment_entry/payment_entry.js:1470
 #: public/js/controllers/accounts.js:176
 msgid "Actual type tax cannot be included in Item rate in row {0}"
 msgstr ""
 
-#: crm/doctype/lead/lead.js:82
-#: public/js/bom_configurator/bom_configurator.bundle.js:225
-#: public/js/bom_configurator/bom_configurator.bundle.js:237
-#: public/js/bom_configurator/bom_configurator.bundle.js:291
-#: public/js/utils/crm_activities.js:168
+#: crm/doctype/lead/lead.js:85
+#: manufacturing/doctype/plant_floor/stock_summary_template.html:55
+#: public/js/bom_configurator/bom_configurator.bundle.js:231
+#: public/js/bom_configurator/bom_configurator.bundle.js:244
+#: public/js/bom_configurator/bom_configurator.bundle.js:329
+#: public/js/utils/crm_activities.js:170
 #: public/js/utils/serial_no_batch_selector.js:17
-#: public/js/utils/serial_no_batch_selector.js:180
+#: public/js/utils/serial_no_batch_selector.js:182
+#: stock/dashboard/item_dashboard_list.html:59
 msgid "Add"
 msgstr ""
 
@@ -3880,11 +3931,11 @@
 msgid "Add"
 msgstr ""
 
-#: stock/doctype/item/item.js:417 stock/doctype/price_list/price_list.js:7
+#: stock/doctype/item/item.js:482 stock/doctype/price_list/price_list.js:8
 msgid "Add / Edit Prices"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:176
+#: accounts/doctype/account/account_tree.js:256
 msgid "Add Child"
 msgstr ""
 
@@ -3892,27 +3943,36 @@
 msgid "Add Columns in Transaction Currency"
 msgstr ""
 
+#: templates/pages/task_info.html:94 templates/pages/task_info.html:96
+msgid "Add Comment"
+msgstr ""
+
 #. Label of a Check field in DocType 'Manufacturing Settings'
 #: manufacturing/doctype/manufacturing_settings/manufacturing_settings.json
 msgctxt "Manufacturing Settings"
 msgid "Add Corrective Operation Cost in Finished Good Valuation"
 msgstr ""
 
-#: public/js/event.js:19
+#: public/js/event.js:24
 msgid "Add Customers"
 msgstr ""
 
-#: public/js/event.js:27
+#: selling/page/point_of_sale/pos_item_cart.js:92
+#: selling/page/point_of_sale/pos_item_cart.js:411
+msgid "Add Discount"
+msgstr ""
+
+#: public/js/event.js:40
 msgid "Add Employees"
 msgstr ""
 
-#: public/js/bom_configurator/bom_configurator.bundle.js:224
-#: selling/doctype/sales_order/sales_order.js:207
-#: stock/dashboard/item_dashboard.js:205
+#: public/js/bom_configurator/bom_configurator.bundle.js:230
+#: selling/doctype/sales_order/sales_order.js:228
+#: stock/dashboard/item_dashboard.js:212
 msgid "Add Item"
 msgstr ""
 
-#: public/js/utils/item_selector.js:20 public/js/utils/item_selector.js:33
+#: public/js/utils/item_selector.js:20 public/js/utils/item_selector.js:35
 msgid "Add Items"
 msgstr ""
 
@@ -3920,11 +3980,11 @@
 msgid "Add Items in the Purpose Table"
 msgstr ""
 
-#: crm/doctype/lead/lead.js:82
+#: crm/doctype/lead/lead.js:84
 msgid "Add Lead to Prospect"
 msgstr ""
 
-#: public/js/event.js:15
+#: public/js/event.js:16
 msgid "Add Leads"
 msgstr ""
 
@@ -3954,12 +4014,12 @@
 msgid "Add Or Deduct"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:269
+#: selling/page/point_of_sale/pos_item_cart.js:267
 msgid "Add Order Discount"
 msgstr ""
 
-#: public/js/event.js:17 public/js/event.js:21 public/js/event.js:25
-#: public/js/event.js:29 public/js/event.js:33
+#: public/js/event.js:20 public/js/event.js:28 public/js/event.js:36
+#: public/js/event.js:44 public/js/event.js:52
 msgid "Add Participants"
 msgstr ""
 
@@ -3969,7 +4029,7 @@
 msgid "Add Quote"
 msgstr ""
 
-#: public/js/event.js:31
+#: public/js/event.js:48
 msgid "Add Sales Partners"
 msgstr ""
 
@@ -4003,17 +4063,21 @@
 msgid "Add Serial / Batch No (Rejected Qty)"
 msgstr ""
 
-#: public/js/utils.js:61
+#: public/js/utils.js:71
 msgid "Add Serial No"
 msgstr ""
 
-#: public/js/bom_configurator/bom_configurator.bundle.js:231
-#: public/js/bom_configurator/bom_configurator.bundle.js:280
+#: manufacturing/doctype/plant_floor/plant_floor.js:172
+msgid "Add Stock"
+msgstr ""
+
+#: public/js/bom_configurator/bom_configurator.bundle.js:238
+#: public/js/bom_configurator/bom_configurator.bundle.js:318
 msgid "Add Sub Assembly"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:433
-#: public/js/event.js:23
+#: buying/doctype/request_for_quotation/request_for_quotation.js:472
+#: public/js/event.js:32
 msgid "Add Suppliers"
 msgstr ""
 
@@ -4033,7 +4097,7 @@
 msgid "Add Weekly Holidays"
 msgstr ""
 
-#: public/js/utils/crm_activities.js:140
+#: public/js/utils/crm_activities.js:142
 msgid "Add a Note"
 msgstr ""
 
@@ -4052,7 +4116,7 @@
 msgstr ""
 
 #: stock/doctype/pick_list/pick_list.js:71
-#: stock/doctype/pick_list/pick_list.py:614
+#: stock/doctype/pick_list/pick_list.py:654
 msgid "Add items in the Item Locations table"
 msgstr ""
 
@@ -4088,10 +4152,14 @@
 msgid "Add to Transit"
 msgstr ""
 
-#: accounts/doctype/coupon_code/coupon_code.js:39
+#: accounts/doctype/coupon_code/coupon_code.js:36
 msgid "Add/Edit Coupon Conditions"
 msgstr ""
 
+#: templates/includes/footer/footer_extension.html:26
+msgid "Added"
+msgstr ""
+
 #. Label of a Link field in DocType 'CRM Note'
 #: crm/doctype/crm_note/crm_note.json
 msgctxt "CRM Note"
@@ -4108,7 +4176,7 @@
 msgid "Added Supplier Role to User {0}."
 msgstr ""
 
-#: public/js/utils/item_selector.js:66 public/js/utils/item_selector.js:80
+#: public/js/utils/item_selector.js:70 public/js/utils/item_selector.js:86
 msgid "Added {0} ({1})"
 msgstr ""
 
@@ -4116,10 +4184,14 @@
 msgid "Added {1} Role to User {0}."
 msgstr ""
 
-#: crm/doctype/lead/lead.js:80
+#: crm/doctype/lead/lead.js:81
 msgid "Adding Lead to Prospect..."
 msgstr ""
 
+#: selling/page/point_of_sale/pos_item_cart.js:433
+msgid "Additional"
+msgstr ""
+
 #. Label of a Currency field in DocType 'Asset'
 #: assets/doctype/asset/asset.json
 msgctxt "Asset"
@@ -4447,6 +4519,10 @@
 msgid "Additional Info"
 msgstr ""
 
+#: selling/page/point_of_sale/pos_payment.js:19
+msgid "Additional Information"
+msgstr ""
+
 #. Label of a Section Break field in DocType 'Lead'
 #: crm/doctype/lead/lead.json
 msgctxt "Lead"
@@ -4771,7 +4847,7 @@
 msgid "Address HTML"
 msgstr ""
 
-#: public/js/utils/contact_address_quick_entry.js:58
+#: public/js/utils/contact_address_quick_entry.js:61
 msgid "Address Line 1"
 msgstr ""
 
@@ -4781,7 +4857,7 @@
 msgid "Address Line 1"
 msgstr ""
 
-#: public/js/utils/contact_address_quick_entry.js:63
+#: public/js/utils/contact_address_quick_entry.js:66
 msgid "Address Line 2"
 msgstr ""
 
@@ -4880,15 +4956,15 @@
 msgid "Addresses"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:116
+#: assets/doctype/asset/asset.js:144
 msgid "Adjust Asset Value"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.js:996
+#: accounts/doctype/sales_invoice/sales_invoice.js:1072
 msgid "Adjustment Against"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:581
+#: stock/doctype/purchase_receipt/purchase_receipt.py:582
 msgid "Adjustment based on Purchase Invoice rate"
 msgstr ""
 
@@ -4905,7 +4981,7 @@
 #: accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.json
 #: accounts/doctype/pos_opening_entry/pos_opening_entry.json
 #: accounts/doctype/repost_accounting_ledger_settings/repost_accounting_ledger_settings.json
-#: stock/reorder_item.py:303
+#: stock/reorder_item.py:388
 msgid "Administrator"
 msgstr ""
 
@@ -4937,8 +5013,8 @@
 msgid "Advance Paid"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:47
-#: selling/doctype/sales_order/sales_order_list.js:61
+#: buying/doctype/purchase_order/purchase_order_list.js:65
+#: selling/doctype/sales_order/sales_order_list.js:105
 msgid "Advance Payment"
 msgstr ""
 
@@ -4954,7 +5030,7 @@
 msgid "Advance Payment Status"
 msgstr ""
 
-#: controllers/accounts_controller.py:214
+#: controllers/accounts_controller.py:224
 msgid "Advance Payments"
 msgstr ""
 
@@ -5010,11 +5086,11 @@
 msgid "Advance amount"
 msgstr ""
 
-#: controllers/taxes_and_totals.py:743
+#: controllers/taxes_and_totals.py:744
 msgid "Advance amount cannot be greater than {0} {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:741
+#: accounts/doctype/journal_entry/journal_entry.py:768
 msgid "Advance paid against {0} {1} cannot be greater than Grand Total {2}"
 msgstr ""
 
@@ -5062,6 +5138,10 @@
 msgid "Affected Transactions"
 msgstr ""
 
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:23
+msgid "Against"
+msgstr ""
+
 #. Label of a Text field in DocType 'GL Entry'
 #: accounts/doctype/gl_entry/gl_entry.json
 msgctxt "GL Entry"
@@ -5070,7 +5150,7 @@
 
 #: accounts/report/bank_clearance_summary/bank_clearance_summary.py:39
 #: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:94
-#: accounts/report/general_ledger/general_ledger.py:631
+#: accounts/report/general_ledger/general_ledger.py:644
 msgid "Against Account"
 msgstr ""
 
@@ -5104,11 +5184,11 @@
 msgid "Against Blanket Order"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:945
+#: accounts/doctype/sales_invoice/sales_invoice.py:962
 msgid "Against Customer Order {0} dated {1}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:967
+#: selling/doctype/sales_order/sales_order.js:1127
 msgid "Against Default Supplier"
 msgstr ""
 
@@ -5166,12 +5246,12 @@
 msgid "Against Income Account"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:609
-#: accounts/doctype/payment_entry/payment_entry.py:669
+#: accounts/doctype/journal_entry/journal_entry.py:636
+#: accounts/doctype/payment_entry/payment_entry.py:678
 msgid "Against Journal Entry {0} does not have any unmatched {1} entry"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:410
+#: accounts/doctype/gl_entry/gl_entry.py:364
 msgid "Against Journal Entry {0} is already adjusted against some other voucher"
 msgstr ""
 
@@ -5205,11 +5285,11 @@
 msgid "Against Stock Entry"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:329
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:333
 msgid "Against Supplier Invoice {0} dated {1}"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:650
+#: accounts/report/general_ledger/general_ledger.py:663
 msgid "Against Voucher"
 msgstr ""
 
@@ -5220,7 +5300,7 @@
 msgstr ""
 
 #: accounts/report/general_ledger/general_ledger.js:57
-#: accounts/report/payment_ledger/payment_ledger.js:71
+#: accounts/report/payment_ledger/payment_ledger.js:70
 #: accounts/report/payment_ledger/payment_ledger.py:185
 msgid "Against Voucher No"
 msgstr ""
@@ -5231,7 +5311,7 @@
 msgid "Against Voucher No"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:648
+#: accounts/report/general_ledger/general_ledger.py:661
 #: accounts/report/payment_ledger/payment_ledger.py:176
 msgid "Against Voucher Type"
 msgstr ""
@@ -5249,14 +5329,15 @@
 msgstr ""
 
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:117
-#: manufacturing/report/work_order_summary/work_order_summary.js:59
+#: manufacturing/report/work_order_summary/work_order_summary.js:58
 #: manufacturing/report/work_order_summary/work_order_summary.py:259
 #: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py:96
 msgid "Age"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:151
-#: accounts/report/accounts_receivable/accounts_receivable.py:1134
+#: accounts/report/accounts_receivable/accounts_receivable.html:133
+#: accounts/report/accounts_receivable/accounts_receivable.py:1142
 msgid "Age (Days)"
 msgstr ""
 
@@ -5266,7 +5347,7 @@
 
 #: accounts/report/accounts_payable/accounts_payable.js:58
 #: accounts/report/accounts_payable_summary/accounts_payable_summary.js:21
-#: accounts/report/accounts_receivable/accounts_receivable.js:83
+#: accounts/report/accounts_receivable/accounts_receivable.js:86
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:21
 msgid "Ageing Based On"
 msgstr ""
@@ -5279,7 +5360,7 @@
 
 #: accounts/report/accounts_payable/accounts_payable.js:65
 #: accounts/report/accounts_payable_summary/accounts_payable_summary.js:28
-#: accounts/report/accounts_receivable/accounts_receivable.js:90
+#: accounts/report/accounts_receivable/accounts_receivable.js:93
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:28
 #: stock/report/stock_ageing/stock_ageing.js:49
 msgid "Ageing Range 1"
@@ -5287,7 +5368,7 @@
 
 #: accounts/report/accounts_payable/accounts_payable.js:72
 #: accounts/report/accounts_payable_summary/accounts_payable_summary.js:35
-#: accounts/report/accounts_receivable/accounts_receivable.js:97
+#: accounts/report/accounts_receivable/accounts_receivable.js:100
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:35
 #: stock/report/stock_ageing/stock_ageing.js:56
 msgid "Ageing Range 2"
@@ -5295,7 +5376,7 @@
 
 #: accounts/report/accounts_payable/accounts_payable.js:79
 #: accounts/report/accounts_payable_summary/accounts_payable_summary.js:42
-#: accounts/report/accounts_receivable/accounts_receivable.js:104
+#: accounts/report/accounts_receivable/accounts_receivable.js:107
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:42
 #: stock/report/stock_ageing/stock_ageing.js:63
 msgid "Ageing Range 3"
@@ -5303,7 +5384,7 @@
 
 #: accounts/report/accounts_payable/accounts_payable.js:86
 #: accounts/report/accounts_payable_summary/accounts_payable_summary.js:49
-#: accounts/report/accounts_receivable/accounts_receivable.js:111
+#: accounts/report/accounts_receivable/accounts_receivable.js:114
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:49
 msgid "Ageing Range 4"
 msgstr ""
@@ -5367,6 +5448,11 @@
 msgid "Agents"
 msgstr ""
 
+#. Description of a DocType
+#: selling/doctype/product_bundle/product_bundle.json
+msgid "Aggregate a group of Items into another Item. This is useful if you are maintaining the stock of the packed items and not the bundled item"
+msgstr ""
+
 #. Name of a role
 #: assets/doctype/location/location.json
 msgid "Agriculture Manager"
@@ -5398,10 +5484,10 @@
 msgid "All"
 msgstr ""
 
-#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:148
-#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:168
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:165
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:185
 #: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py:166
-#: accounts/utils.py:1324 public/js/setup_wizard.js:163
+#: accounts/utils.py:1293 public/js/setup_wizard.js:174
 msgid "All Accounts"
 msgstr ""
 
@@ -5475,14 +5561,14 @@
 #: patches/v11_0/update_department_lft_rgt.py:9
 #: patches/v11_0/update_department_lft_rgt.py:11
 #: patches/v11_0/update_department_lft_rgt.py:17
-#: setup/doctype/company/company.py:310 setup/doctype/company/company.py:313
-#: setup/doctype/company/company.py:318 setup/doctype/company/company.py:324
-#: setup/doctype/company/company.py:330 setup/doctype/company/company.py:336
-#: setup/doctype/company/company.py:342 setup/doctype/company/company.py:348
-#: setup/doctype/company/company.py:354 setup/doctype/company/company.py:360
-#: setup/doctype/company/company.py:366 setup/doctype/company/company.py:372
-#: setup/doctype/company/company.py:378 setup/doctype/company/company.py:384
-#: setup/doctype/company/company.py:390
+#: setup/doctype/company/company.py:309 setup/doctype/company/company.py:312
+#: setup/doctype/company/company.py:317 setup/doctype/company/company.py:323
+#: setup/doctype/company/company.py:329 setup/doctype/company/company.py:335
+#: setup/doctype/company/company.py:341 setup/doctype/company/company.py:347
+#: setup/doctype/company/company.py:353 setup/doctype/company/company.py:359
+#: setup/doctype/company/company.py:365 setup/doctype/company/company.py:371
+#: setup/doctype/company/company.py:377 setup/doctype/company/company.py:383
+#: setup/doctype/company/company.py:389
 msgid "All Departments"
 msgstr ""
 
@@ -5503,6 +5589,10 @@
 msgid "All Item Groups"
 msgstr ""
 
+#: selling/page/point_of_sale/pos_item_selector.js:25
+msgid "All Items"
+msgstr ""
+
 #. Option for the 'Send To' (Select) field in DocType 'SMS Center'
 #: selling/doctype/sms_center/sms_center.json
 msgctxt "SMS Center"
@@ -5521,6 +5611,11 @@
 msgid "All Sales Person"
 msgstr ""
 
+#. Description of a DocType
+#: setup/doctype/sales_person/sales_person.json
+msgid "All Sales Transactions can be tagged against multiple Sales Persons so that you can set and monitor targets."
+msgstr ""
+
 #. Option for the 'Send To' (Select) field in DocType 'SMS Center'
 #: selling/doctype/sms_center/sms_center.json
 msgctxt "SMS Center"
@@ -5550,7 +5645,7 @@
 msgid "All Territories"
 msgstr ""
 
-#: setup/doctype/company/company.py:259 setup/doctype/company/company.py:275
+#: setup/doctype/company/company.py:258 setup/doctype/company/company.py:274
 msgid "All Warehouses"
 msgstr ""
 
@@ -5561,19 +5656,19 @@
 msgid "All allocations have been successfully reconciled"
 msgstr ""
 
-#: support/doctype/issue/issue.js:97
+#: support/doctype/issue/issue.js:107
 msgid "All communications including and above this shall be moved into the new Issue"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:1170
+#: stock/doctype/purchase_receipt/purchase_receipt.py:1172
 msgid "All items have already been Invoiced/Returned"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2191
+#: stock/doctype/stock_entry/stock_entry.py:2222
 msgid "All items have already been transferred for this Work Order."
 msgstr ""
 
-#: public/js/controllers/transaction.js:2210
+#: public/js/controllers/transaction.js:2253
 msgid "All items in this document already have a linked Quality Inspection."
 msgstr ""
 
@@ -5584,17 +5679,17 @@
 msgid "All the Comments and Emails will be copied from one document to another newly created document(Lead -> Opportunity -> Quotation) throughout the CRM documents."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:847
+#: manufacturing/doctype/work_order/work_order.js:916
 msgid "All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table."
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:899
+#: stock/doctype/delivery_note/delivery_note.py:960
 msgid "All these items have already been Invoiced/Returned"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:83
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:86
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:95
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:84
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:85
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:92
 msgid "Allocate"
 msgstr ""
 
@@ -5610,7 +5705,7 @@
 msgid "Allocate Advances Automatically (FIFO)"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:679
+#: accounts/doctype/payment_entry/payment_entry.js:831
 msgid "Allocate Payment Amount"
 msgstr ""
 
@@ -5633,7 +5728,7 @@
 msgstr ""
 
 #: accounts/report/gross_profit/gross_profit.py:314
-#: public/js/utils/unreconcile.js:62
+#: public/js/utils/unreconcile.js:86
 msgid "Allocated Amount"
 msgstr ""
 
@@ -5692,21 +5787,25 @@
 msgid "Allocated Entries"
 msgstr ""
 
+#: public/js/templates/crm_activities.html:49
+msgid "Allocated To:"
+msgstr ""
+
 #. Label of a Currency field in DocType 'Sales Invoice Advance'
 #: accounts/doctype/sales_invoice_advance/sales_invoice_advance.json
 msgctxt "Sales Invoice Advance"
 msgid "Allocated amount"
 msgstr ""
 
-#: accounts/utils.py:614
+#: accounts/utils.py:623
 msgid "Allocated amount cannot be greater than unadjusted amount"
 msgstr ""
 
-#: accounts/utils.py:612
+#: accounts/utils.py:621
 msgid "Allocated amount cannot be negative"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:258
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:262
 msgid "Allocation"
 msgstr ""
 
@@ -5716,7 +5815,7 @@
 msgid "Allocation"
 msgstr ""
 
-#: public/js/utils/unreconcile.js:67
+#: public/js/utils/unreconcile.js:97
 msgid "Allocations"
 msgstr ""
 
@@ -5745,7 +5844,7 @@
 msgid "Allow"
 msgstr ""
 
-#: accounts/doctype/account/account.py:488
+#: accounts/doctype/account/account.py:507
 #: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py:68
 msgid "Allow Account Creation Against Child Company"
 msgstr ""
@@ -5850,7 +5949,7 @@
 msgid "Allow Material Transfer from Purchase Receipt to Purchase Invoice"
 msgstr ""
 
-#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:10
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:9
 msgid "Allow Multiple Material Consumption"
 msgstr ""
 
@@ -6127,7 +6226,7 @@
 msgid "Allows to keep aside a specific quantity of inventory for a particular order."
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:721
+#: stock/doctype/pick_list/pick_list.py:792
 msgid "Already Picked"
 msgstr ""
 
@@ -6139,9 +6238,9 @@
 msgid "Already set default in pos profile {0} for user {1}, kindly disabled default"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:141
-#: manufacturing/doctype/work_order/work_order.js:162 public/js/utils.js:466
-#: stock/doctype/stock_entry/stock_entry.js:224
+#: manufacturing/doctype/bom/bom.js:152
+#: manufacturing/doctype/work_order/work_order.js:169 public/js/utils.js:519
+#: stock/doctype/stock_entry/stock_entry.js:245
 msgid "Alternate Item"
 msgstr ""
 
@@ -6157,6 +6256,10 @@
 msgid "Alternative Item Name"
 msgstr ""
 
+#: selling/doctype/quotation/quotation.js:360
+msgid "Alternative Items"
+msgstr ""
+
 #: stock/doctype/item_alternative/item_alternative.py:37
 msgid "Alternative item must not be same as item code"
 msgstr ""
@@ -6627,7 +6730,7 @@
 msgid "Amended From"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:529
+#: accounts/doctype/journal_entry/journal_entry.js:579
 #: accounts/doctype/pos_closing_entry/closing_voucher_details.html:41
 #: accounts/doctype/pos_closing_entry/closing_voucher_details.html:67
 #: accounts/print_format/payment_receipt_voucher/payment_receipt_voucher.html:10
@@ -6641,16 +6744,20 @@
 #: accounts/report/share_balance/share_balance.py:61
 #: accounts/report/share_ledger/share_ledger.py:57
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:239
-#: selling/doctype/quotation/quotation.js:286
+#: selling/doctype/quotation/quotation.js:298
+#: selling/page/point_of_sale/pos_item_cart.js:46
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:52
 #: selling/report/sales_order_analysis/sales_order_analysis.py:290
 #: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.py:46
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:69
 #: selling/report/sales_person_commission_summary/sales_person_commission_summary.py:67
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:108
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:109
 #: stock/report/delayed_item_report/delayed_item_report.py:152
 #: stock/report/delayed_order_report/delayed_order_report.py:71
-#: templates/pages/order.html:92 templates/pages/rfq.html:46
+#: templates/form_grid/bank_reconciliation_grid.html:4
+#: templates/form_grid/item_grid.html:9
+#: templates/form_grid/stock_entry_grid.html:11 templates/pages/order.html:104
+#: templates/pages/rfq.html:46
 msgid "Amount"
 msgstr ""
 
@@ -7168,19 +7275,19 @@
 msgid "Amount in customer's currency"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1119
+#: accounts/doctype/payment_entry/payment_entry.py:1128
 msgid "Amount {0} {1} against {2} {3}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1127
+#: accounts/doctype/payment_entry/payment_entry.py:1136
 msgid "Amount {0} {1} deducted against {2}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1095
+#: accounts/doctype/payment_entry/payment_entry.py:1104
 msgid "Amount {0} {1} transferred from {2} to {3}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1102
+#: accounts/doctype/payment_entry/payment_entry.py:1111
 msgid "Amount {0} {1} {2} {3}"
 msgstr ""
 
@@ -7189,7 +7296,12 @@
 msgid "Amt"
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.py:393
+#. Description of a DocType
+#: setup/doctype/item_group/item_group.json
+msgid "An Item Group is a way to classify items based on types."
+msgstr ""
+
+#: stock/doctype/repost_item_valuation/repost_item_valuation.py:408
 msgid "An error has been appeared while reposting item valuation via {0}"
 msgstr ""
 
@@ -7198,19 +7310,19 @@
 msgid "An error has occurred during {0}. Check {1} for more details"
 msgstr ""
 
-#: public/js/controllers/buying.js:297 public/js/utils/sales_common.js:364
+#: public/js/controllers/buying.js:292 public/js/utils/sales_common.js:408
 msgid "An error occurred during the update process"
 msgstr ""
 
-#: stock/reorder_item.py:287
+#: stock/reorder_item.py:372
 msgid "An error occurred for certain Items while creating Material Requests based on Re-order level. Please rectify these issues :"
 msgstr ""
 
-#: accounts/doctype/budget/budget.py:232
+#: accounts/doctype/budget/budget.py:239
 msgid "Annual"
 msgstr ""
 
-#: public/js/utils.js:103
+#: public/js/utils.js:120
 msgid "Annual Billing: {0}"
 msgstr ""
 
@@ -7282,6 +7394,10 @@
 msgid "Applicable Dimension"
 msgstr ""
 
+#: accounts/doctype/promotional_scheme/promotional_scheme.py:221
+msgid "Applicable For"
+msgstr ""
+
 #. Label of a Tab Break field in DocType 'Inventory Dimension'
 #: stock/doctype/inventory_dimension/inventory_dimension.json
 msgctxt "Inventory Dimension"
@@ -7562,6 +7678,12 @@
 msgid "Apply Recursion Over (As Per Transaction UOM)"
 msgstr ""
 
+#. Label of a Float field in DocType 'Promotional Scheme Product Discount'
+#: accounts/doctype/promotional_scheme_product_discount/promotional_scheme_product_discount.json
+msgctxt "Promotional Scheme Product Discount"
+msgid "Apply Recursion Over (As Per Transaction UOM)"
+msgstr ""
+
 #. Label of a Table field in DocType 'Pricing Rule'
 #: accounts/doctype/pricing_rule/pricing_rule.json
 msgctxt "Pricing Rule"
@@ -7677,7 +7799,7 @@
 msgid "Appointment Confirmation"
 msgstr ""
 
-#: www/book_appointment/index.js:229
+#: www/book_appointment/index.js:237
 msgid "Appointment Created Successfully"
 msgstr ""
 
@@ -7742,11 +7864,11 @@
 msgid "Are you sure you want to clear all demo data?"
 msgstr ""
 
-#: public/js/bom_configurator/bom_configurator.bundle.js:325
+#: public/js/bom_configurator/bom_configurator.bundle.js:363
 msgid "Are you sure you want to delete this Item?"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.js:70
+#: accounts/doctype/subscription/subscription.js:69
 msgid "Are you sure you want to restart this subscription?"
 msgstr ""
 
@@ -7766,13 +7888,13 @@
 msgid "Arrival Quantity"
 msgstr ""
 
-#: stock/report/serial_no_ledger/serial_no_ledger.js:58
+#: stock/report/serial_no_ledger/serial_no_ledger.js:57
 #: stock/report/stock_ageing/stock_ageing.js:16
-#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:31
+#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:30
 msgid "As On Date"
 msgstr ""
 
-#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.js:16
+#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.js:15
 msgid "As on Date"
 msgstr ""
 
@@ -7795,20 +7917,24 @@
 msgid "As there are existing submitted transactions against item {0}, you can not change the value of {1}."
 msgstr ""
 
-#: stock/doctype/stock_settings/stock_settings.py:195
+#: stock/doctype/stock_settings/stock_settings.py:198
 msgid "As there are negative stock, you can not enable {0}."
 msgstr ""
 
-#: stock/doctype/stock_settings/stock_settings.py:209
+#: stock/doctype/stock_settings/stock_settings.py:212
 msgid "As there are reserved stock, you cannot disable {0}."
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:1600
+#: manufacturing/doctype/production_plan/production_plan.py:915
+msgid "As there are sufficient Sub Assembly Items, Work Order is not required for Warehouse {0}."
+msgstr ""
+
+#: manufacturing/doctype/production_plan/production_plan.py:1620
 msgid "As there are sufficient raw materials, Material Request is not required for Warehouse {0}."
 msgstr ""
 
-#: stock/doctype/stock_settings/stock_settings.py:164
-#: stock/doctype/stock_settings/stock_settings.py:178
+#: stock/doctype/stock_settings/stock_settings.py:167
+#: stock/doctype/stock_settings/stock_settings.py:181
 msgid "As {0} is enabled, you can not enable {1}."
 msgstr ""
 
@@ -7819,13 +7945,13 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/report/account_balance/account_balance.js:26
+#: accounts/report/account_balance/account_balance.js:25
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js:30
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:124
 #: accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.js:44
 #: accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.py:365
 #: assets/doctype/asset/asset.json
-#: stock/doctype/purchase_receipt/purchase_receipt.js:177
+#: stock/doctype/purchase_receipt/purchase_receipt.js:200
 msgid "Asset"
 msgstr ""
 
@@ -7975,7 +8101,7 @@
 #: accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.js:37
 #: accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.py:355
 #: assets/doctype/asset_category/asset_category.json
-#: assets/report/fixed_asset_register/fixed_asset_register.js:24
+#: assets/report/fixed_asset_register/fixed_asset_register.js:23
 #: assets/report/fixed_asset_register/fixed_asset_register.py:418
 msgid "Asset Category"
 msgstr ""
@@ -8072,8 +8198,8 @@
 msgid "Asset Depreciation Schedule for Asset {0} and Finance Book {1} is not using shift based depreciation"
 msgstr ""
 
-#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:898
-#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:944
+#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:893
+#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:939
 #: assets/doctype/asset_shift_allocation/asset_shift_allocation.py:83
 msgid "Asset Depreciation Schedule not found for Asset {0} and Finance Book {1}"
 msgstr ""
@@ -8086,7 +8212,7 @@
 msgid "Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:144 assets/doctype/asset/asset.py:181
+#: assets/doctype/asset/asset.py:144 assets/doctype/asset/asset.py:183
 msgid "Asset Depreciation Schedules created:<br>{0}<br><br>Please check, edit if needed, and submit the Asset."
 msgstr ""
 
@@ -8181,7 +8307,7 @@
 
 #. Name of a DocType
 #: assets/doctype/asset_movement/asset_movement.json
-#: stock/doctype/purchase_receipt/purchase_receipt.js:184
+#: stock/doctype/purchase_receipt/purchase_receipt.js:211
 msgid "Asset Movement"
 msgstr ""
 
@@ -8196,7 +8322,7 @@
 msgid "Asset Movement Item"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:901
+#: assets/doctype/asset/asset.py:905
 msgid "Asset Movement record {0} created"
 msgstr ""
 
@@ -8272,7 +8398,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:91
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:127
-#: accounts/report/account_balance/account_balance.js:39
+#: accounts/report/account_balance/account_balance.js:38
 msgid "Asset Received But Not Billed"
 msgstr ""
 
@@ -8382,35 +8508,35 @@
 msgid "Asset Value Analytics"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:172
+#: assets/doctype/asset/asset.py:174
 msgid "Asset cancelled"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:506
+#: assets/doctype/asset/asset.py:508
 msgid "Asset cannot be cancelled, as it is already {0}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:687
+#: assets/doctype/asset_capitalization/asset_capitalization.py:693
 msgid "Asset capitalized after Asset Capitalization {0} was submitted"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:194
+#: assets/doctype/asset/asset.py:196
 msgid "Asset created"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:633
+#: assets/doctype/asset_capitalization/asset_capitalization.py:639
 msgid "Asset created after Asset Capitalization {0} was submitted"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1156
+#: assets/doctype/asset/asset.py:1160
 msgid "Asset created after being split from Asset {0}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:695
+#: assets/doctype/asset_capitalization/asset_capitalization.py:701
 msgid "Asset decapitalized after Asset Capitalization {0} was submitted"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:197
+#: assets/doctype/asset/asset.py:199
 msgid "Asset deleted"
 msgstr ""
 
@@ -8426,31 +8552,31 @@
 msgid "Asset received at Location {0} and issued to Employee {1}"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:509
+#: assets/doctype/asset/depreciation.py:507
 msgid "Asset restored"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:703
+#: assets/doctype/asset_capitalization/asset_capitalization.py:709
 msgid "Asset restored after Asset Capitalization {0} was cancelled"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1320
+#: accounts/doctype/sales_invoice/sales_invoice.py:1331
 msgid "Asset returned"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:483
+#: assets/doctype/asset/depreciation.py:481
 msgid "Asset scrapped"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:485
+#: assets/doctype/asset/depreciation.py:483
 msgid "Asset scrapped via Journal Entry {0}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1354
+#: accounts/doctype/sales_invoice/sales_invoice.py:1365
 msgid "Asset sold"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:160
+#: assets/doctype/asset/asset.py:161
 msgid "Asset submitted"
 msgstr ""
 
@@ -8458,7 +8584,7 @@
 msgid "Asset transferred to Location {0}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1080
+#: assets/doctype/asset/asset.py:1084
 msgid "Asset updated after being split into Asset {0}"
 msgstr ""
 
@@ -8474,11 +8600,11 @@
 msgid "Asset {0} cannot be received at a location and given to an employee in a single movement"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:449
+#: assets/doctype/asset/depreciation.py:447
 msgid "Asset {0} cannot be scrapped, as it is already {1}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:237
+#: assets/doctype/asset_capitalization/asset_capitalization.py:243
 msgid "Asset {0} does not belong to Item {1}"
 msgstr ""
 
@@ -8494,20 +8620,20 @@
 msgid "Asset {0} does not belongs to the location {1}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:759
-#: assets/doctype/asset_capitalization/asset_capitalization.py:859
+#: assets/doctype/asset_capitalization/asset_capitalization.py:765
+#: assets/doctype/asset_capitalization/asset_capitalization.py:865
 msgid "Asset {0} does not exist"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:639
+#: assets/doctype/asset_capitalization/asset_capitalization.py:645
 msgid "Asset {0} has been created. Please set the depreciation details if any and submit it."
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:661
+#: assets/doctype/asset_capitalization/asset_capitalization.py:667
 msgid "Asset {0} has been updated. Please set the depreciation details if any and submit it."
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:446
+#: assets/doctype/asset/depreciation.py:444
 msgid "Asset {0} must be submitted"
 msgstr ""
 
@@ -8549,7 +8675,7 @@
 msgid "Assets"
 msgstr ""
 
-#: controllers/buying_controller.py:732
+#: controllers/buying_controller.py:757
 msgid "Assets not created for {0}. You will have to create asset manually."
 msgstr ""
 
@@ -8558,11 +8684,11 @@
 msgid "Assets, Depreciations, Repairs, and more."
 msgstr ""
 
-#: controllers/buying_controller.py:720
+#: controllers/buying_controller.py:745
 msgid "Asset{} {assets_link} created for {}"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:249
+#: manufacturing/doctype/job_card/job_card.js:281
 msgid "Assign Job to Employee"
 msgstr ""
 
@@ -8584,9 +8710,9 @@
 msgid "Assign to Name"
 msgstr ""
 
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:33
-#: support/report/issue_analytics/issue_analytics.js:82
-#: support/report/issue_summary/issue_summary.js:70
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:32
+#: support/report/issue_analytics/issue_analytics.js:81
+#: support/report/issue_summary/issue_summary.js:69
 msgid "Assigned To"
 msgstr ""
 
@@ -8600,7 +8726,7 @@
 msgid "Assignment Conditions"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1011
+#: assets/doctype/asset/asset.py:1015
 msgid "At least one asset has to be selected."
 msgstr ""
 
@@ -8613,7 +8739,7 @@
 msgstr ""
 
 #: accounts/doctype/pos_invoice/pos_invoice.py:405
-#: accounts/doctype/sales_invoice/sales_invoice.py:509
+#: accounts/doctype/sales_invoice/sales_invoice.py:522
 msgid "At least one mode of payment is required for POS invoice."
 msgstr ""
 
@@ -8625,7 +8751,7 @@
 msgid "At least one of the Selling or Buying must be selected"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:643
+#: stock/doctype/stock_entry/stock_entry.py:598
 msgid "At least one warehouse is mandatory"
 msgstr ""
 
@@ -8633,22 +8759,26 @@
 msgid "At row #{0}: the sequence id {1} cannot be less than previous row sequence id {2}"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:582
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:577
 msgid "At row {0}: Batch No is mandatory for Item {1}"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:574
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:569
 msgid "At row {0}: Serial No is mandatory for Item {1}"
 msgstr ""
 
+#: controllers/stock_controller.py:301
+msgid "At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields."
+msgstr ""
+
 #. Description of the 'File to Rename' (Attach) field in DocType 'Rename Tool'
 #: utilities/doctype/rename_tool/rename_tool.json
 msgctxt "Rename Tool"
 msgid "Attach .csv file with two columns, one for the old name and one for the new name"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:246
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:66
+#: public/js/utils/serial_no_batch_selector.js:250
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:69
 msgid "Attach CSV File"
 msgstr ""
 
@@ -8664,7 +8794,7 @@
 msgid "Attachment"
 msgstr ""
 
-#: templates/pages/order.html:125 templates/pages/projects.html:83
+#: templates/pages/order.html:137 templates/pages/projects.html:83
 msgid "Attachments"
 msgstr ""
 
@@ -8844,7 +8974,7 @@
 msgid "Auto Email Report"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:316
+#: public/js/utils/serial_no_batch_selector.js:322
 msgid "Auto Fetch"
 msgstr ""
 
@@ -8860,7 +8990,7 @@
 msgid "Auto Material Request"
 msgstr ""
 
-#: stock/reorder_item.py:242
+#: stock/reorder_item.py:327
 msgid "Auto Material Requests Generated"
 msgstr ""
 
@@ -8884,7 +9014,7 @@
 msgid "Auto Opt In (For all customers)"
 msgstr ""
 
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js:67
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js:61
 msgid "Auto Reconcile"
 msgstr ""
 
@@ -8894,7 +9024,7 @@
 msgid "Auto Reconcile Payments"
 msgstr ""
 
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:414
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:413
 msgid "Auto Reconciliation"
 msgstr ""
 
@@ -9018,7 +9148,7 @@
 msgid "Auto re-order"
 msgstr ""
 
-#: public/js/controllers/buying.js:295 public/js/utils/sales_common.js:362
+#: public/js/controllers/buying.js:290 public/js/utils/sales_common.js:403
 msgid "Auto repeat document updated"
 msgstr ""
 
@@ -9103,7 +9233,7 @@
 msgstr ""
 
 #: manufacturing/report/bom_stock_calculated/bom_stock_calculated.py:82
-#: public/js/utils.js:522 stock/report/stock_ageing/stock_ageing.py:156
+#: public/js/utils.js:579 stock/report/stock_ageing/stock_ageing.py:156
 msgid "Available Qty"
 msgstr ""
 
@@ -9194,15 +9324,15 @@
 msgid "Available Stock for Packing Items"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:270
+#: assets/doctype/asset/asset.py:272
 msgid "Available for use date is required"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:772
+#: stock/doctype/stock_entry/stock_entry.py:727
 msgid "Available quantity is {0}, you need {1}"
 msgstr ""
 
-#: stock/dashboard/item_dashboard.js:239
+#: stock/dashboard/item_dashboard.js:247
 msgid "Available {0}"
 msgstr ""
 
@@ -9212,13 +9342,13 @@
 msgid "Available-for-use Date"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:355
+#: assets/doctype/asset/asset.py:357
 msgid "Available-for-use Date should be after purchase date"
 msgstr ""
 
 #: stock/report/stock_ageing/stock_ageing.py:157
 #: stock/report/stock_ageing/stock_ageing.py:191
-#: stock/report/stock_balance/stock_balance.py:477
+#: stock/report/stock_balance/stock_balance.py:485
 msgid "Average Age"
 msgstr ""
 
@@ -9258,7 +9388,7 @@
 msgid "Avg Rate"
 msgstr ""
 
-#: stock/report/stock_ledger/stock_ledger.py:197
+#: stock/report/stock_ledger/stock_ledger.py:270
 msgid "Avg Rate (Balance Stock)"
 msgstr ""
 
@@ -9301,14 +9431,14 @@
 
 #. Name of a DocType
 #: manufacturing/doctype/bom/bom.json manufacturing/doctype/bom/bom_tree.js:8
-#: manufacturing/report/bom_explorer/bom_explorer.js:9
+#: manufacturing/report/bom_explorer/bom_explorer.js:8
 #: manufacturing/report/bom_explorer/bom_explorer.py:56
-#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.js:9
+#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.js:8
 #: manufacturing/report/bom_stock_report/bom_stock_report.js:5
 #: manufacturing/report/work_order_stock_report/work_order_stock_report.py:109
-#: selling/doctype/sales_order/sales_order.js:810
-#: stock/doctype/material_request/material_request.js:243
-#: stock/doctype/stock_entry/stock_entry.js:545
+#: selling/doctype/sales_order/sales_order.js:941
+#: stock/doctype/material_request/material_request.js:300
+#: stock/doctype/stock_entry/stock_entry.js:617
 #: stock/report/bom_search/bom_search.py:38
 msgid "BOM"
 msgstr ""
@@ -9379,7 +9509,7 @@
 msgid "BOM 1"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1348
+#: manufacturing/doctype/bom/bom.py:1347
 msgid "BOM 1 {0} and BOM 2 {1} should not be same"
 msgstr ""
 
@@ -9461,7 +9591,7 @@
 msgid "BOM Explosion Item"
 msgstr ""
 
-#: manufacturing/report/bom_operations_time/bom_operations_time.js:21
+#: manufacturing/report/bom_operations_time/bom_operations_time.js:20
 #: manufacturing/report/bom_operations_time/bom_operations_time.py:101
 msgid "BOM ID"
 msgstr ""
@@ -9482,7 +9612,7 @@
 msgid "BOM Level"
 msgstr ""
 
-#: manufacturing/report/bom_variance_report/bom_variance_report.js:9
+#: manufacturing/report/bom_variance_report/bom_variance_report.js:8
 #: manufacturing/report/bom_variance_report/bom_variance_report.py:31
 msgid "BOM No"
 msgstr ""
@@ -9593,6 +9723,7 @@
 #. Name of a report
 #. Label of a Link in the Manufacturing Workspace
 #. Label of a shortcut in the Manufacturing Workspace
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:1
 #: manufacturing/report/bom_stock_report/bom_stock_report.json
 #: manufacturing/workspace/manufacturing/manufacturing.json
 msgid "BOM Stock Report"
@@ -9613,7 +9744,7 @@
 msgid "BOM Update Batch"
 msgstr ""
 
-#: manufacturing/doctype/bom_update_tool/bom_update_tool.js:82
+#: manufacturing/doctype/bom_update_tool/bom_update_tool.js:84
 msgid "BOM Update Initiated"
 msgstr ""
 
@@ -9633,6 +9764,11 @@
 msgid "BOM Update Tool"
 msgstr ""
 
+#. Description of a DocType
+#: manufacturing/doctype/bom_update_log/bom_update_log.json
+msgid "BOM Update Tool Log with job status maintained"
+msgstr ""
+
 #: manufacturing/doctype/bom_update_log/bom_update_log.py:99
 msgid "BOM Updation already in progress. Please wait until {0} is complete."
 msgstr ""
@@ -9656,12 +9792,12 @@
 msgid "BOM Website Operation"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.js:1000
+#: stock/doctype/stock_entry/stock_entry.js:1145
 msgid "BOM and Manufacturing Quantity are required"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:264
-#: stock/doctype/stock_entry/stock_entry.js:581
+#: stock/doctype/material_request/material_request.js:332
+#: stock/doctype/stock_entry/stock_entry.js:669
 msgid "BOM does not contain any stock item"
 msgstr ""
 
@@ -9673,15 +9809,15 @@
 msgid "BOM recursion: {1} cannot be parent or child of {0}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1223
+#: manufacturing/doctype/bom/bom.py:1222
 msgid "BOM {0} does not belong to Item {1}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1205
+#: manufacturing/doctype/bom/bom.py:1204
 msgid "BOM {0} must be active"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1208
+#: manufacturing/doctype/bom/bom.py:1207
 msgid "BOM {0} must be submitted"
 msgstr ""
 
@@ -9703,11 +9839,11 @@
 msgid "BOMs creation has been enqueued, kindly check the status after some time"
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:323
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:334
 msgid "Backdated Stock Entry"
 msgstr ""
 
-#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:15
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:16
 msgid "Backflush Raw Materials"
 msgstr ""
 
@@ -9737,10 +9873,11 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:41
+#: accounts/report/general_ledger/general_ledger.html:32
 msgid "Balance (Dr - Cr)"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:584
+#: accounts/report/general_ledger/general_ledger.py:597
 msgid "Balance ({0})"
 msgstr ""
 
@@ -9757,8 +9894,8 @@
 msgstr ""
 
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.py:82
-#: stock/report/stock_balance/stock_balance.py:405
-#: stock/report/stock_ledger/stock_ledger.py:153
+#: stock/report/stock_balance/stock_balance.py:413
+#: stock/report/stock_ledger/stock_ledger.py:226
 msgid "Balance Qty"
 msgstr ""
 
@@ -9766,10 +9903,6 @@
 msgid "Balance Qty (Stock)"
 msgstr ""
 
-#: stock/report/stock_ledger/stock_ledger.py:259
-msgid "Balance Serial No"
-msgstr ""
-
 #. Name of a report
 #. Label of a Link in the Financial Reports Workspace
 #: accounts/report/balance_sheet/balance_sheet.json
@@ -9802,18 +9935,22 @@
 msgid "Balance Sheet Summary"
 msgstr ""
 
+#: stock/page/warehouse_capacity_summary/warehouse_capacity_summary_header.html:13
+msgid "Balance Stock Qty"
+msgstr ""
+
 #. Label of a Currency field in DocType 'Stock Ledger Entry'
 #: stock/doctype/stock_ledger_entry/stock_ledger_entry.json
 msgctxt "Stock Ledger Entry"
 msgid "Balance Stock Value"
 msgstr ""
 
-#: stock/report/stock_balance/stock_balance.py:412
-#: stock/report/stock_ledger/stock_ledger.py:217
+#: stock/report/stock_balance/stock_balance.py:420
+#: stock/report/stock_ledger/stock_ledger.py:290
 msgid "Balance Value"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:355
+#: accounts/doctype/gl_entry/gl_entry.py:309
 msgid "Balance for Account {0} must always be {1}"
 msgstr ""
 
@@ -9825,7 +9962,7 @@
 
 #. Name of a DocType
 #: accounts/doctype/bank/bank.json
-#: accounts/report/account_balance/account_balance.js:40
+#: accounts/report/account_balance/account_balance.js:39
 msgid "Bank"
 msgstr ""
 
@@ -9905,7 +10042,7 @@
 #: accounts/doctype/bank_account/bank_account.json
 #: accounts/report/bank_clearance_summary/bank_clearance_summary.js:21
 #: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js:16
-#: buying/doctype/supplier/supplier.js:94
+#: buying/doctype/supplier/supplier.js:108
 #: setup/setup_wizard/operations/install_fixtures.py:492
 msgid "Bank Account"
 msgstr ""
@@ -10147,6 +10284,7 @@
 
 #. Name of a report
 #. Label of a Link in the Accounting Workspace
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:4
 #: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.json
 #: accounts/workspace/accounting/accounting.json
 msgid "Bank Reconciliation Statement"
@@ -10205,23 +10343,23 @@
 msgid "Bank Transaction Payments"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/dialog_manager.js:496
+#: public/js/bank_reconciliation_tool/dialog_manager.js:485
 msgid "Bank Transaction {0} Matched"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/dialog_manager.js:544
+#: public/js/bank_reconciliation_tool/dialog_manager.js:533
 msgid "Bank Transaction {0} added as Journal Entry"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/dialog_manager.js:520
+#: public/js/bank_reconciliation_tool/dialog_manager.js:508
 msgid "Bank Transaction {0} added as Payment Entry"
 msgstr ""
 
-#: accounts/doctype/bank_transaction/bank_transaction.py:124
+#: accounts/doctype/bank_transaction/bank_transaction.py:127
 msgid "Bank Transaction {0} is already fully reconciled"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/dialog_manager.js:563
+#: public/js/bank_reconciliation_tool/dialog_manager.js:553
 msgid "Bank Transaction {0} updated"
 msgstr ""
 
@@ -10229,15 +10367,15 @@
 msgid "Bank account cannot be named as {0}"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:130
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:146
 msgid "Bank account {0} already exists and could not be created again"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:134
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:153
 msgid "Bank accounts added"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:297
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:313
 msgid "Bank transaction creation error"
 msgstr ""
 
@@ -10262,7 +10400,7 @@
 msgid "Banking"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:273
+#: public/js/utils/barcode_scanner.js:282
 msgid "Barcode"
 msgstr ""
 
@@ -10389,7 +10527,7 @@
 msgid "Base Tax Withholding Net Total"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:241
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:239
 msgid "Base Total"
 msgstr ""
 
@@ -10417,18 +10555,18 @@
 msgid "Base URL"
 msgstr ""
 
-#: accounts/report/inactive_sales_items/inactive_sales_items.js:28
+#: accounts/report/inactive_sales_items/inactive_sales_items.js:27
 #: accounts/report/profitability_analysis/profitability_analysis.js:16
-#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:9
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:45
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:39
-#: manufacturing/report/production_planning_report/production_planning_report.js:17
-#: manufacturing/report/work_order_summary/work_order_summary.js:16
+#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:8
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:44
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:38
+#: manufacturing/report/production_planning_report/production_planning_report.js:16
+#: manufacturing/report/work_order_summary/work_order_summary.js:15
 #: public/js/purchase_trends_filters.js:45 public/js/sales_trends_filters.js:20
-#: stock/report/delayed_item_report/delayed_item_report.js:55
-#: stock/report/delayed_order_report/delayed_order_report.js:55
-#: support/report/issue_analytics/issue_analytics.js:17
-#: support/report/issue_summary/issue_summary.js:17
+#: stock/report/delayed_item_report/delayed_item_report.js:54
+#: stock/report/delayed_order_report/delayed_order_report.js:54
+#: support/report/issue_analytics/issue_analytics.js:16
+#: support/report/issue_summary/issue_summary.js:16
 msgid "Based On"
 msgstr ""
 
@@ -10444,18 +10582,18 @@
 msgid "Based On"
 msgstr ""
 
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:47
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:46
 msgid "Based On Data ( in years )"
 msgstr ""
 
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:31
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:30
 msgid "Based On Document"
 msgstr ""
 
-#: accounts/report/accounts_payable/accounts_payable.js:134
-#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:111
-#: accounts/report/accounts_receivable/accounts_receivable.js:156
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:129
+#: accounts/report/accounts_payable/accounts_payable.js:137
+#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:114
+#: accounts/report/accounts_receivable/accounts_receivable.js:159
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:132
 msgid "Based On Payment Terms"
 msgstr ""
 
@@ -10527,7 +10665,7 @@
 #: stock/report/batch_item_expiry_status/batch_item_expiry_status.py:34
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.py:78
 #: stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:159
-#: stock/report/stock_ledger/stock_ledger.py:239
+#: stock/report/stock_ledger/stock_ledger.py:312
 #: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:148
 #: stock/report/stock_ledger_variance/stock_ledger_variance.py:78
 msgid "Batch"
@@ -10568,11 +10706,11 @@
 msgid "Batch Item Expiry Status"
 msgstr ""
 
-#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:88
+#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:89
 #: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:117
-#: public/js/controllers/transaction.js:2150
-#: public/js/utils/barcode_scanner.js:251
-#: public/js/utils/serial_no_batch_selector.js:367
+#: public/js/controllers/transaction.js:2193
+#: public/js/utils/barcode_scanner.js:260
+#: public/js/utils/serial_no_batch_selector.js:372
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.js:59
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:80
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:156
@@ -10700,15 +10838,15 @@
 msgid "Batch No"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:585
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:580
 msgid "Batch No is mandatory"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2118
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2137
 msgid "Batch No {0} does not exists"
 msgstr ""
 
-#: stock/utils.py:643
+#: stock/utils.py:638
 msgid "Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead."
 msgstr ""
 
@@ -10718,13 +10856,13 @@
 msgid "Batch No."
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:15
-#: public/js/utils/serial_no_batch_selector.js:178
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:48
+#: public/js/utils/serial_no_batch_selector.js:16
+#: public/js/utils/serial_no_batch_selector.js:181
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:46
 msgid "Batch Nos"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1113
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1120
 msgid "Batch Nos are created successfully"
 msgstr ""
 
@@ -10744,7 +10882,7 @@
 msgid "Batch Quantity"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:256
+#: manufacturing/doctype/work_order/work_order.js:271
 msgid "Batch Size"
 msgstr ""
 
@@ -10784,7 +10922,7 @@
 msgid "Batch and Serial No"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:485
+#: manufacturing/doctype/work_order/work_order.py:496
 msgid "Batch not created for item {} since it does not have a batch series."
 msgstr ""
 
@@ -10792,12 +10930,12 @@
 msgid "Batch {0} and Warehouse"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2345
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:272
+#: stock/doctype/stock_entry/stock_entry.py:2379
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:283
 msgid "Batch {0} of Item {1} has expired."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2347
+#: stock/doctype/stock_entry/stock_entry.py:2381
 msgid "Batch {0} of Item {1} is disabled."
 msgstr ""
 
@@ -10837,7 +10975,7 @@
 msgid "Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0}"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1061
+#: accounts/report/accounts_receivable/accounts_receivable.py:1069
 #: accounts/report/purchase_register/purchase_register.py:214
 msgid "Bill Date"
 msgstr ""
@@ -10854,7 +10992,7 @@
 msgid "Bill Date"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1060
+#: accounts/report/accounts_receivable/accounts_receivable.py:1068
 #: accounts/report/purchase_register/purchase_register.py:213
 msgid "Bill No"
 msgstr ""
@@ -10879,11 +11017,11 @@
 
 #. Title of an Onboarding Step
 #. Label of a Card Break in the Manufacturing Workspace
-#: manufacturing/doctype/bom/bom.py:1089
+#: manufacturing/doctype/bom/bom.py:1088
 #: manufacturing/onboarding_step/create_bom/create_bom.json
 #: manufacturing/workspace/manufacturing/manufacturing.json
 #: stock/doctype/material_request/material_request.js:99
-#: stock/doctype/stock_entry/stock_entry.js:533
+#: stock/doctype/stock_entry/stock_entry.js:599
 msgid "Bill of Materials"
 msgstr ""
 
@@ -11287,8 +11425,8 @@
 msgid "Blanket Order Rate"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:101
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:228
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:123
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:265
 msgid "Block Invoice"
 msgstr ""
 
@@ -11427,7 +11565,7 @@
 msgid "Booking stock value across multiple accounts will make it harder to track stock and account value."
 msgstr ""
 
-#: accounts/general_ledger.py:685
+#: accounts/general_ledger.py:694
 msgid "Books have been closed till the period ending on {0}"
 msgstr ""
 
@@ -11493,11 +11631,11 @@
 #: accounts/report/gross_profit/gross_profit.py:243
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.js:47
 #: accounts/report/sales_register/sales_register.js:64
-#: public/js/stock_analytics.js:41 public/js/stock_analytics.js:62
-#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:48
+#: public/js/stock_analytics.js:58 public/js/stock_analytics.js:93
+#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:47
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:61
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js:47
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:100
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:101
 #: setup/doctype/brand/brand.json
 #: stock/report/item_price_stock/item_price_stock.py:25
 #: stock/report/item_prices/item_prices.py:53
@@ -11507,10 +11645,10 @@
 #: stock/report/product_bundle_balance/product_bundle_balance.py:107
 #: stock/report/stock_ageing/stock_ageing.js:43
 #: stock/report/stock_ageing/stock_ageing.py:135
-#: stock/report/stock_analytics/stock_analytics.js:35
+#: stock/report/stock_analytics/stock_analytics.js:34
 #: stock/report/stock_analytics/stock_analytics.py:45
-#: stock/report/stock_ledger/stock_ledger.js:65
-#: stock/report/stock_ledger/stock_ledger.py:181
+#: stock/report/stock_ledger/stock_ledger.js:73
+#: stock/report/stock_ledger/stock_ledger.py:254
 #: stock/report/stock_projected_qty/stock_projected_qty.js:45
 #: stock/report/stock_projected_qty/stock_projected_qty.py:115
 msgid "Brand"
@@ -11669,16 +11807,16 @@
 msgid "Breakdown"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:103
+#: manufacturing/doctype/bom/bom.js:102
 msgid "Browse BOM"
 msgstr ""
 
 #. Name of a DocType
 #: accounts/doctype/budget/budget.json
-#: accounts/doctype/cost_center/cost_center.js:44
-#: accounts/doctype/cost_center/cost_center_tree.js:42
-#: accounts/doctype/cost_center/cost_center_tree.js:46
-#: accounts/doctype/cost_center/cost_center_tree.js:50
+#: accounts/doctype/cost_center/cost_center.js:45
+#: accounts/doctype/cost_center/cost_center_tree.js:65
+#: accounts/doctype/cost_center/cost_center_tree.js:73
+#: accounts/doctype/cost_center/cost_center_tree.js:81
 #: accounts/report/budget_variance_report/budget_variance_report.py:99
 #: accounts/report/budget_variance_report/budget_variance_report.py:109
 #: accounts/report/budget_variance_report/budget_variance_report.py:386
@@ -11702,7 +11840,7 @@
 msgid "Budget Accounts"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:82
+#: accounts/report/budget_variance_report/budget_variance_report.js:80
 msgid "Budget Against"
 msgstr ""
 
@@ -11724,17 +11862,17 @@
 msgid "Budget Detail"
 msgstr ""
 
-#: accounts/doctype/budget/budget.py:278 accounts/doctype/budget/budget.py:280
+#: accounts/doctype/budget/budget.py:285 accounts/doctype/budget/budget.py:287
 msgid "Budget Exceeded"
 msgstr ""
 
-#: accounts/doctype/cost_center/cost_center_tree.js:40
+#: accounts/doctype/cost_center/cost_center_tree.js:61
 msgid "Budget List"
 msgstr ""
 
 #. Name of a report
 #. Label of a Link in the Accounting Workspace
-#: accounts/doctype/cost_center/cost_center_tree.js:48
+#: accounts/doctype/cost_center/cost_center_tree.js:77
 #: accounts/report/budget_variance_report/budget_variance_report.json
 #: accounts/workspace/accounting/accounting.json
 msgid "Budget Variance Report"
@@ -11807,6 +11945,11 @@
 msgid "Buy"
 msgstr ""
 
+#. Description of a DocType
+#: selling/doctype/customer/customer.json
+msgid "Buyer of Goods and Services."
+msgstr ""
+
 #. Name of a Workspace
 #. Label of a Card Break in the Buying Workspace
 #: buying/workspace/buying/buying.json
@@ -11905,7 +12048,7 @@
 msgid "Buying must be checked, if Applicable For is selected as {0}"
 msgstr ""
 
-#: buying/doctype/buying_settings/buying_settings.js:14
+#: buying/doctype/buying_settings/buying_settings.js:13
 msgid "By default, the Supplier Name is set as per the Supplier Name entered. If you want Suppliers to be named by a <a href='https://docs.erpnext.com/docs/user/manual/en/setting-up/settings/naming-series' target='_blank'>Naming Series</a> choose the 'Naming Series' option."
 msgstr ""
 
@@ -12099,12 +12242,12 @@
 msgid "Call Routing"
 msgstr ""
 
-#: telephony/doctype/incoming_call_settings/incoming_call_settings.js:57
+#: telephony/doctype/incoming_call_settings/incoming_call_settings.js:58
 #: telephony/doctype/incoming_call_settings/incoming_call_settings.py:49
 msgid "Call Schedule Row {0}: To time slot should always be ahead of From time slot."
 msgstr ""
 
-#: public/js/call_popup/call_popup.js:153
+#: public/js/call_popup/call_popup.js:164
 #: telephony/doctype/call_log/call_log.py:135
 msgid "Call Summary"
 msgstr ""
@@ -12115,6 +12258,10 @@
 msgid "Call Summary"
 msgstr ""
 
+#: public/js/call_popup/call_popup.js:186
+msgid "Call Summary Saved"
+msgstr ""
+
 #. Label of a Data field in DocType 'Telephony Call Type'
 #: telephony/doctype/telephony_call_type/telephony_call_type.json
 msgctxt "Telephony Call Type"
@@ -12261,7 +12408,7 @@
 msgid "Can be approved by {0}"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:1451
+#: manufacturing/doctype/work_order/work_order.py:1465
 msgid "Can not close Work Order. Since {0} Job Cards are in Work In Progress state."
 msgstr ""
 
@@ -12289,20 +12436,24 @@
 msgid "Can not filter based on Voucher No, if grouped by Voucher"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1226
-#: accounts/doctype/payment_entry/payment_entry.py:2229
+#: accounts/doctype/journal_entry/journal_entry.py:1240
+#: accounts/doctype/payment_entry/payment_entry.py:2254
 msgid "Can only make payment against unbilled {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1199
-#: controllers/accounts_controller.py:2500 public/js/controllers/accounts.js:90
+#: accounts/doctype/payment_entry/payment_entry.js:1438
+#: controllers/accounts_controller.py:2585 public/js/controllers/accounts.js:90
 msgid "Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total'"
 msgstr ""
 
-#: stock/doctype/stock_settings/stock_settings.py:133
+#: stock/doctype/stock_settings/stock_settings.py:136
 msgid "Can't change the valuation method, as there are transactions against some items which do not have its own valuation method"
 msgstr ""
 
+#: templates/pages/task_info.html:24
+msgid "Cancel"
+msgstr ""
+
 #. Label of a Check field in DocType 'Subscription'
 #: accounts/doctype/subscription/subscription.json
 msgctxt "Subscription"
@@ -12333,8 +12484,8 @@
 msgid "Cancelation Date"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting_list.js:18
-#: stock/doctype/stock_entry/stock_entry_list.js:19
+#: accounts/doctype/invoice_discounting/invoice_discounting_list.js:13
+#: stock/doctype/stock_entry/stock_entry_list.js:25
 msgid "Canceled"
 msgstr ""
 
@@ -12351,11 +12502,12 @@
 msgstr ""
 
 #: accounts/doctype/bank_transaction/bank_transaction_list.js:8
-#: accounts/doctype/payment_request/payment_request_list.js:20
+#: accounts/doctype/payment_request/payment_request_list.js:18
 #: accounts/doctype/subscription/subscription_list.js:14
 #: assets/doctype/asset_repair/asset_repair_list.js:9
 #: manufacturing/doctype/bom_creator/bom_creator_list.js:11
 #: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle_list.js:8
+#: templates/pages/task_info.html:77
 msgid "Cancelled"
 msgstr ""
 
@@ -12610,6 +12762,13 @@
 msgid "Cancelled"
 msgstr ""
 
+#. Option for the 'Status' (Select) field in DocType 'Transaction Deletion
+#. Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Cancelled"
+msgstr ""
+
 #. Option for the 'Status' (Select) field in DocType 'Warranty Claim'
 #: support/doctype/warranty_claim/warranty_claim.json
 msgctxt "Warranty Claim"
@@ -12622,7 +12781,7 @@
 msgid "Cancelled"
 msgstr ""
 
-#: stock/doctype/delivery_trip/delivery_trip.js:76
+#: stock/doctype/delivery_trip/delivery_trip.js:89
 #: stock/doctype/delivery_trip/delivery_trip.py:189
 msgid "Cannot Calculate Arrival Time as Driver Address is Missing."
 msgstr ""
@@ -12632,7 +12791,7 @@
 msgid "Cannot Merge"
 msgstr ""
 
-#: stock/doctype/delivery_trip/delivery_trip.js:105
+#: stock/doctype/delivery_trip/delivery_trip.js:122
 msgid "Cannot Optimize Route as Driver Address is Missing."
 msgstr ""
 
@@ -12648,7 +12807,7 @@
 msgid "Cannot amend {0} {1}, please create a new one instead."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:257
+#: accounts/doctype/journal_entry/journal_entry.py:273
 msgid "Cannot apply TDS against multiple parties in one entry"
 msgstr ""
 
@@ -12656,23 +12815,23 @@
 msgid "Cannot be a fixed asset item as Stock Ledger is created."
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.py:222
+#: stock/doctype/repost_item_valuation/repost_item_valuation.py:217
 msgid "Cannot cancel as processing of cancelled documents is pending."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:641
+#: manufacturing/doctype/work_order/work_order.py:655
 msgid "Cannot cancel because submitted Stock Entry {0} exists"
 msgstr ""
 
-#: stock/stock_ledger.py:196
+#: stock/stock_ledger.py:198
 msgid "Cannot cancel the transaction. Reposting of item valuation on submission is not completed yet."
 msgstr ""
 
-#: controllers/buying_controller.py:811
+#: controllers/buying_controller.py:836
 msgid "Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:365
+#: stock/doctype/stock_entry/stock_entry.py:320
 msgid "Cannot cancel transaction for Completed Work Order."
 msgstr ""
 
@@ -12684,7 +12843,7 @@
 msgid "Cannot change Fiscal Year Start Date and Fiscal Year End Date once the Fiscal Year is saved."
 msgstr ""
 
-#: accounts/doctype/accounting_dimension/accounting_dimension.py:66
+#: accounts/doctype/accounting_dimension/accounting_dimension.py:70
 msgid "Cannot change Reference Document Type."
 msgstr ""
 
@@ -12696,7 +12855,7 @@
 msgid "Cannot change Variant properties after stock transaction. You will have to make a new Item to do this."
 msgstr ""
 
-#: setup/doctype/company/company.py:209
+#: setup/doctype/company/company.py:208
 msgid "Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency."
 msgstr ""
 
@@ -12708,32 +12867,32 @@
 msgid "Cannot convert Cost Center to ledger as it has child nodes"
 msgstr ""
 
-#: projects/doctype/task/task.js:48
+#: projects/doctype/task/task.js:50
 msgid "Cannot convert Task to non-group because the following child Tasks exist: {0}."
 msgstr ""
 
-#: accounts/doctype/account/account.py:373
+#: accounts/doctype/account/account.py:392
 msgid "Cannot convert to Group because Account Type is selected."
 msgstr ""
 
-#: accounts/doctype/account/account.py:250
+#: accounts/doctype/account/account.py:269
 msgid "Cannot covert to Group because Account Type is selected."
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:914
+#: stock/doctype/purchase_receipt/purchase_receipt.py:916
 msgid "Cannot create Stock Reservation Entries for future dated Purchase Receipts."
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note_list.js:25
+#: stock/doctype/delivery_note/delivery_note_list.js:35
 msgid "Cannot create a Delivery Trip from Draft documents."
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:1576
-#: stock/doctype/pick_list/pick_list.py:104
+#: selling/doctype/sales_order/sales_order.py:1599
+#: stock/doctype/pick_list/pick_list.py:108
 msgid "Cannot create a pick list for Sales Order {0} because it has reserved stock. Please unreserve the stock in order to create a pick list."
 msgstr ""
 
-#: accounts/general_ledger.py:127
+#: accounts/general_ledger.py:131
 msgid "Cannot create accounting entries against disabled accounts: {0}"
 msgstr ""
 
@@ -12754,32 +12913,40 @@
 msgid "Cannot delete Serial No {0}, as it is used in stock transactions"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:638
-#: selling/doctype/sales_order/sales_order.py:661
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.py:101
+msgid "Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1}"
+msgstr ""
+
+#: selling/doctype/sales_order/sales_order.py:644
+#: selling/doctype/sales_order/sales_order.py:667
 msgid "Cannot ensure delivery by Serial No as Item {0} is added with and without Ensure Delivery by Serial No."
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:51
+#: public/js/utils/barcode_scanner.js:54
 msgid "Cannot find Item with this Barcode"
 msgstr ""
 
-#: controllers/accounts_controller.py:3023
+#: controllers/accounts_controller.py:3114
 msgid "Cannot find {} for item {}. Please set the same in Item Master or Stock Settings."
 msgstr ""
 
-#: controllers/accounts_controller.py:1774
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.py:506
+msgid "Cannot make any transactions until the deletion job is completed"
+msgstr ""
+
+#: controllers/accounts_controller.py:1863
 msgid "Cannot overbill for Item {0} in row {1} more than {2}. To allow over-billing, please set allowance in Accounts Settings"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:292
+#: manufacturing/doctype/work_order/work_order.py:296
 msgid "Cannot produce more Item {0} than Sales Order quantity {1}"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:962
+#: manufacturing/doctype/work_order/work_order.py:976
 msgid "Cannot produce more item for {0}"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:966
+#: manufacturing/doctype/work_order/work_order.py:980
 msgid "Cannot produce more than {0} items for {1}"
 msgstr ""
 
@@ -12787,8 +12954,8 @@
 msgid "Cannot receive from customer against negative outstanding"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1209
-#: controllers/accounts_controller.py:2515
+#: accounts/doctype/payment_entry/payment_entry.js:1455
+#: controllers/accounts_controller.py:2600
 #: public/js/controllers/accounts.js:100
 msgid "Cannot refer row number greater than or equal to current row number for this Charge type"
 msgstr ""
@@ -12797,14 +12964,14 @@
 msgid "Cannot retrieve link token for update. Check Error Log for more information"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:60
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:63
 msgid "Cannot retrieve link token. Check Error Log for more information"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1203
-#: accounts/doctype/payment_entry/payment_entry.js:1374
-#: accounts/doctype/payment_entry/payment_entry.py:1579
-#: controllers/accounts_controller.py:2505 public/js/controllers/accounts.js:94
+#: accounts/doctype/payment_entry/payment_entry.js:1447
+#: accounts/doctype/payment_entry/payment_entry.js:1626
+#: accounts/doctype/payment_entry/payment_entry.py:1598
+#: controllers/accounts_controller.py:2590 public/js/controllers/accounts.js:94
 #: public/js/controllers/taxes_and_totals.js:453
 msgid "Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row"
 msgstr ""
@@ -12821,11 +12988,11 @@
 msgid "Cannot set multiple Item Defaults for a company."
 msgstr ""
 
-#: controllers/accounts_controller.py:3173
+#: controllers/accounts_controller.py:3264
 msgid "Cannot set quantity less than delivered quantity"
 msgstr ""
 
-#: controllers/accounts_controller.py:3178
+#: controllers/accounts_controller.py:3269
 msgid "Cannot set quantity less than received quantity"
 msgstr ""
 
@@ -12833,7 +13000,7 @@
 msgid "Cannot set the field <b>{0}</b> for copying in variants"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:876
+#: accounts/doctype/payment_entry/payment_entry.js:1050
 msgid "Cannot {0} {1} {2} without any negative outstanding invoice"
 msgstr ""
 
@@ -12853,7 +13020,7 @@
 msgid "Capacity Planning"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:627
+#: manufacturing/doctype/work_order/work_order.py:641
 msgid "Capacity Planning Error, planned start time can not be same as end time"
 msgstr ""
 
@@ -12895,7 +13062,7 @@
 msgid "Capital Work In Progress Account"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:43
+#: accounts/report/account_balance/account_balance.js:42
 msgid "Capital Work in Progress"
 msgstr ""
 
@@ -12917,7 +13084,7 @@
 msgid "Capitalization Method"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:155
+#: assets/doctype/asset/asset.js:194
 msgid "Capitalize Asset"
 msgstr ""
 
@@ -12959,7 +13126,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:14
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:18
-#: accounts/report/account_balance/account_balance.js:41
+#: accounts/report/account_balance/account_balance.js:40
 #: setup/setup_wizard/operations/install_fixtures.py:208
 msgid "Cash"
 msgstr ""
@@ -13023,7 +13190,7 @@
 msgid "Cash In Hand"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:318
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:322
 msgid "Cash or Bank Account is mandatory for making payment entry"
 msgstr ""
 
@@ -13045,7 +13212,7 @@
 msgid "Cash/Bank Account"
 msgstr ""
 
-#: accounts/report/pos_register/pos_register.js:39
+#: accounts/report/pos_register/pos_register.js:38
 #: accounts/report/pos_register/pos_register.py:126
 #: accounts/report/pos_register/pos_register.py:200
 msgid "Cashier"
@@ -13107,7 +13274,7 @@
 msgid "Category-wise Asset Value"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:313
+#: buying/doctype/purchase_order/purchase_order.py:314
 #: buying/doctype/request_for_quotation/request_for_quotation.py:99
 msgid "Caution"
 msgstr ""
@@ -13152,7 +13319,7 @@
 msgid "Certificate Required"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:545
+#: selling/page/point_of_sale/pos_payment.js:587
 msgid "Change"
 msgstr ""
 
@@ -13168,7 +13335,7 @@
 msgid "Change Amount"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:90
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:108
 msgid "Change Release Date"
 msgstr ""
 
@@ -13188,7 +13355,7 @@
 msgid "Change in Stock Value"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:885
+#: accounts/doctype/sales_invoice/sales_invoice.py:902
 msgid "Change the account type to Receivable or select a different account."
 msgstr ""
 
@@ -13209,7 +13376,11 @@
 msgid "Changes"
 msgstr ""
 
-#: stock/doctype/item/item.js:235
+#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:155
+msgid "Changes in {0}"
+msgstr ""
+
+#: stock/doctype/item/item.js:277
 msgid "Changing Customer Group for the selected Customer is not allowed."
 msgstr ""
 
@@ -13219,12 +13390,12 @@
 msgid "Channel Partner"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1634
-#: controllers/accounts_controller.py:2568
+#: accounts/doctype/payment_entry/payment_entry.py:1653
+#: controllers/accounts_controller.py:2653
 msgid "Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:42
+#: accounts/report/account_balance/account_balance.js:41
 msgid "Chargeable"
 msgstr ""
 
@@ -13240,7 +13411,15 @@
 msgid "Charges Incurred"
 msgstr ""
 
-#: selling/page/sales_funnel/sales_funnel.js:41
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.js:38
+msgid "Charges are updated in Purchase Receipt against each item"
+msgstr ""
+
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.js:38
+msgid "Charges will be distributed proportionately based on item qty or amount, as per your selection"
+msgstr ""
+
+#: selling/page/sales_funnel/sales_funnel.js:45
 msgid "Chart"
 msgstr ""
 
@@ -13268,10 +13447,10 @@
 msgid "Chart Tree"
 msgstr ""
 
-#: accounts/doctype/account/account.js:75
+#: accounts/doctype/account/account.js:70
 #: accounts/doctype/account/account_tree.js:5
-#: accounts/doctype/cost_center/cost_center_tree.js:35
-#: public/js/setup_wizard.js:36 setup/doctype/company/company.js:92
+#: accounts/doctype/cost_center/cost_center_tree.js:52
+#: public/js/setup_wizard.js:37 setup/doctype/company/company.js:96
 msgid "Chart of Accounts"
 msgstr ""
 
@@ -13307,7 +13486,7 @@
 msgid "Chart of Accounts Importer"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:133
+#: accounts/doctype/account/account_tree.js:181
 #: accounts/doctype/cost_center/cost_center.js:41
 msgid "Chart of Cost Centers"
 msgstr ""
@@ -13318,7 +13497,7 @@
 msgid "Chart of Cost Centers"
 msgstr ""
 
-#: manufacturing/report/work_order_summary/work_order_summary.js:65
+#: manufacturing/report/work_order_summary/work_order_summary.js:64
 msgid "Charts Based On"
 msgstr ""
 
@@ -13396,7 +13575,12 @@
 msgid "Checking this will round off the tax amount to the nearest integer"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:252
+#: selling/page/point_of_sale/pos_item_cart.js:92
+#: selling/page/point_of_sale/pos_item_cart.js:148
+msgid "Checkout"
+msgstr ""
+
+#: selling/page/point_of_sale/pos_item_cart.js:250
 msgid "Checkout Order / Submit Order / New Order"
 msgstr ""
 
@@ -13445,7 +13629,7 @@
 msgid "Cheque Width"
 msgstr ""
 
-#: public/js/controllers/transaction.js:2061
+#: public/js/controllers/transaction.js:2104
 msgid "Cheque/Reference Date"
 msgstr ""
 
@@ -13466,6 +13650,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:131
+#: accounts/report/accounts_receivable/accounts_receivable.html:113
 msgid "Cheques Required"
 msgstr ""
 
@@ -13483,7 +13668,7 @@
 msgid "Child Task exists for this Task. You can not delete this Task."
 msgstr ""
 
-#: stock/doctype/warehouse/warehouse_tree.js:17
+#: stock/doctype/warehouse/warehouse_tree.js:21
 msgid "Child nodes can be only created under 'Group' type nodes"
 msgstr ""
 
@@ -13502,7 +13687,7 @@
 msgid "Circular Reference Error"
 msgstr ""
 
-#: public/js/utils/contact_address_quick_entry.js:76
+#: public/js/utils/contact_address_quick_entry.js:79
 msgid "City"
 msgstr ""
 
@@ -13530,12 +13715,27 @@
 msgid "Class / Percentage"
 msgstr ""
 
+#. Description of a DocType
+#: setup/doctype/territory/territory.json
+msgid "Classification of Customers by region"
+msgstr ""
+
 #. Label of a Text Editor field in DocType 'Bank Guarantee'
 #: accounts/doctype/bank_guarantee/bank_guarantee.json
 msgctxt "Bank Guarantee"
 msgid "Clauses and Conditions"
 msgstr ""
 
+#: public/js/utils/demo.js:11
+msgid "Clear Demo Data"
+msgstr ""
+
+#. Label of a Check field in DocType 'Transaction Deletion Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Clear Notifications"
+msgstr ""
+
 #. Label of a Button field in DocType 'Holiday List'
 #: setup/doctype/holiday_list/holiday_list.json
 msgctxt "Holiday List"
@@ -13543,7 +13743,9 @@
 msgstr ""
 
 #: accounts/report/bank_clearance_summary/bank_clearance_summary.py:37
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:31
 #: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:101
+#: templates/form_grid/bank_reconciliation_grid.html:7
 msgid "Clearance Date"
 msgstr ""
 
@@ -13583,11 +13785,11 @@
 msgid "Clearance Date"
 msgstr ""
 
-#: accounts/doctype/bank_clearance/bank_clearance.py:115
+#: accounts/doctype/bank_clearance/bank_clearance.py:117
 msgid "Clearance Date not mentioned"
 msgstr ""
 
-#: accounts/doctype/bank_clearance/bank_clearance.py:113
+#: accounts/doctype/bank_clearance/bank_clearance.py:115
 msgid "Clearance Date updated"
 msgstr ""
 
@@ -13595,7 +13797,7 @@
 msgid "Clearing Demo Data..."
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:535
+#: manufacturing/doctype/production_plan/production_plan.js:577
 msgid "Click on 'Get Finished Goods for Manufacture' to fetch the items from the above Sales Orders. Items only for which a BOM is present will be fetched."
 msgstr ""
 
@@ -13603,7 +13805,7 @@
 msgid "Click on Add to Holidays. This will populate the holidays table with all the dates that fall on the selected weekly off. Repeat the process for populating the dates for all your weekly holidays"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:530
+#: manufacturing/doctype/production_plan/production_plan.js:572
 msgid "Click on Get Sales Orders to fetch sales orders based on the above filters."
 msgstr ""
 
@@ -13618,6 +13820,10 @@
 msgid "Click on the link below to verify your email and confirm the appointment"
 msgstr ""
 
+#: selling/page/point_of_sale/pos_item_cart.js:468
+msgid "Click to add email / phone"
+msgstr ""
+
 #. Option for the 'Lead Type' (Select) field in DocType 'Lead'
 #: crm/doctype/lead/lead.json
 msgctxt "Lead"
@@ -13636,19 +13842,19 @@
 msgid "Client Secret"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:292
-#: buying/doctype/purchase_order/purchase_order_list.js:30
-#: crm/doctype/opportunity/opportunity.js:108
-#: manufacturing/doctype/production_plan/production_plan.js:101
-#: manufacturing/doctype/work_order/work_order.js:559
-#: quality_management/doctype/quality_meeting/quality_meeting_list.js:8
-#: selling/doctype/sales_order/sales_order.js:521
-#: selling/doctype/sales_order/sales_order.js:541
-#: selling/doctype/sales_order/sales_order_list.js:45
-#: stock/doctype/delivery_note/delivery_note.js:209
-#: stock/doctype/purchase_receipt/purchase_receipt.js:222
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:108
-#: support/doctype/issue/issue.js:17
+#: buying/doctype/purchase_order/purchase_order.js:327
+#: buying/doctype/purchase_order/purchase_order_list.js:49
+#: crm/doctype/opportunity/opportunity.js:118
+#: manufacturing/doctype/production_plan/production_plan.js:111
+#: manufacturing/doctype/work_order/work_order.js:589
+#: quality_management/doctype/quality_meeting/quality_meeting_list.js:7
+#: selling/doctype/sales_order/sales_order.js:558
+#: selling/doctype/sales_order/sales_order.js:588
+#: selling/doctype/sales_order/sales_order_list.js:58
+#: stock/doctype/delivery_note/delivery_note.js:248
+#: stock/doctype/purchase_receipt/purchase_receipt.js:255
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:112
+#: support/doctype/issue/issue.js:21
 msgid "Close"
 msgstr ""
 
@@ -13658,7 +13864,7 @@
 msgid "Close Issue After Days"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting.js:67
+#: accounts/doctype/invoice_discounting/invoice_discounting.js:69
 msgid "Close Loan"
 msgstr ""
 
@@ -13668,17 +13874,18 @@
 msgid "Close Replied Opportunity After Days"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:178
+#: selling/page/point_of_sale/pos_controller.js:200
 msgid "Close the POS"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:6
-#: selling/doctype/sales_order/sales_order_list.js:7
-#: stock/doctype/delivery_note/delivery_note_list.js:8
-#: stock/doctype/purchase_receipt/purchase_receipt_list.js:8
-#: support/report/issue_analytics/issue_analytics.js:59
-#: support/report/issue_summary/issue_summary.js:47
+#: buying/doctype/purchase_order/purchase_order_list.js:15
+#: selling/doctype/sales_order/sales_order_list.js:18
+#: stock/doctype/delivery_note/delivery_note_list.js:18
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:17
+#: support/report/issue_analytics/issue_analytics.js:58
+#: support/report/issue_summary/issue_summary.js:46
 #: support/report/issue_summary/issue_summary.py:372
+#: templates/pages/task_info.html:76
 msgid "Closed"
 msgstr ""
 
@@ -13785,11 +13992,11 @@
 msgid "Closed Documents"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:1395
+#: manufacturing/doctype/work_order/work_order.py:1409
 msgid "Closed Work Order can not be stopped or Re-opened"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:420
+#: selling/doctype/sales_order/sales_order.py:423
 msgid "Closed order cannot be cancelled. Unclose to cancel."
 msgstr ""
 
@@ -13894,7 +14101,7 @@
 msgid "Code"
 msgstr ""
 
-#: public/js/setup_wizard.js:174
+#: public/js/setup_wizard.js:190
 msgid "Collapse All"
 msgstr ""
 
@@ -13962,10 +14169,15 @@
 msgid "Column in Bank File"
 msgstr ""
 
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:389
+msgid "Column {0}"
+msgstr ""
+
 #: accounts/doctype/payment_terms_template/payment_terms_template.py:40
 msgid "Combined invoice portion must equal 100%"
 msgstr ""
 
+#: templates/pages/task_info.html:86
 #: utilities/report/youtube_interactions/youtube_interactions.py:28
 msgid "Comments"
 msgstr ""
@@ -14117,7 +14329,7 @@
 msgid "Communication Medium Type"
 msgstr ""
 
-#: setup/install.py:111
+#: setup/install.py:92
 msgid "Compact Item Print"
 msgstr ""
 
@@ -14130,10 +14342,10 @@
 #. Name of a DocType
 #: accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.js:8
 #: accounts/doctype/account/account_tree.js:12
-#: accounts/doctype/account/account_tree.js:149
-#: accounts/doctype/cost_center/cost_center_tree.js:8
-#: accounts/doctype/journal_entry/journal_entry.js:72
-#: accounts/report/account_balance/account_balance.js:9
+#: accounts/doctype/account/account_tree.js:212
+#: accounts/doctype/cost_center/cost_center_tree.js:9
+#: accounts/doctype/journal_entry/journal_entry.js:128
+#: accounts/report/account_balance/account_balance.js:8
 #: accounts/report/accounts_payable/accounts_payable.js:8
 #: accounts/report/accounts_payable_summary/accounts_payable_summary.js:8
 #: accounts/report/accounts_receivable/accounts_receivable.js:10
@@ -14141,13 +14353,13 @@
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js:8
 #: accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.js:8
 #: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js:8
-#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.js:8
-#: accounts/report/budget_variance_report/budget_variance_report.js:74
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:9
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:9
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:9
+#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.js:7
+#: accounts/report/budget_variance_report/budget_variance_report.js:72
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:8
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:8
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:8
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:80
-#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:9
+#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:8
 #: accounts/report/financial_ratios/financial_ratios.js:9
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.js:8
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:183
@@ -14158,9 +14370,9 @@
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:227
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.js:28
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:272
-#: accounts/report/payment_ledger/payment_ledger.js:9
+#: accounts/report/payment_ledger/payment_ledger.js:8
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:8
-#: accounts/report/pos_register/pos_register.js:9
+#: accounts/report/pos_register/pos_register.js:8
 #: accounts/report/pos_register/pos_register.py:110
 #: accounts/report/profitability_analysis/profitability_analysis.js:8
 #: accounts/report/purchase_register/purchase_register.js:33
@@ -14168,78 +14380,79 @@
 #: accounts/report/sales_payment_summary/sales_payment_summary.js:22
 #: accounts/report/sales_register/sales_register.js:33
 #: accounts/report/share_ledger/share_ledger.py:58
-#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:9
-#: accounts/report/tax_withholding_details/tax_withholding_details.js:9
-#: accounts/report/tds_computation_summary/tds_computation_summary.js:9
+#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:8
+#: accounts/report/tax_withholding_details/tax_withholding_details.js:8
+#: accounts/report/tds_computation_summary/tds_computation_summary.js:8
 #: accounts/report/trial_balance/trial_balance.js:8
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.js:8
-#: accounts/report/voucher_wise_balance/voucher_wise_balance.js:9
-#: assets/report/fixed_asset_register/fixed_asset_register.js:9
-#: buying/report/procurement_tracker/procurement_tracker.js:9
-#: buying/report/purchase_analytics/purchase_analytics.js:50
-#: buying/report/purchase_order_analysis/purchase_order_analysis.js:9
+#: accounts/report/voucher_wise_balance/voucher_wise_balance.js:8
+#: assets/report/fixed_asset_register/fixed_asset_register.js:8
+#: buying/report/procurement_tracker/procurement_tracker.js:8
+#: buying/report/purchase_analytics/purchase_analytics.js:49
+#: buying/report/purchase_order_analysis/purchase_order_analysis.js:8
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:278
-#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:9
+#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:8
 #: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:268
-#: buying/report/subcontract_order_summary/subcontract_order_summary.js:8
+#: buying/report/subcontract_order_summary/subcontract_order_summary.js:7
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:8
-#: crm/report/lead_details/lead_details.js:9
+#: crm/report/lead_details/lead_details.js:8
 #: crm/report/lead_details/lead_details.py:52
-#: crm/report/lost_opportunity/lost_opportunity.js:9
-#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:59
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:52
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:119
-#: manufacturing/doctype/bom_creator/bom_creator.js:52
-#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:8
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:9
-#: manufacturing/report/job_card_summary/job_card_summary.js:8
-#: manufacturing/report/process_loss_report/process_loss_report.js:8
-#: manufacturing/report/production_analytics/production_analytics.js:9
-#: manufacturing/report/production_planning_report/production_planning_report.js:9
-#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:8
-#: manufacturing/report/work_order_summary/work_order_summary.js:8
-#: projects/report/project_summary/project_summary.js:9
+#: crm/report/lost_opportunity/lost_opportunity.js:8
+#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:57
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:51
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:128
+#: manufacturing/doctype/bom_creator/bom_creator.js:51
+#: manufacturing/notification/material_request_receipt_notification/material_request_receipt_notification.html:2
+#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:7
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:8
+#: manufacturing/report/job_card_summary/job_card_summary.js:7
+#: manufacturing/report/process_loss_report/process_loss_report.js:7
+#: manufacturing/report/production_analytics/production_analytics.js:8
+#: manufacturing/report/production_planning_report/production_planning_report.js:8
+#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:7
+#: manufacturing/report/work_order_summary/work_order_summary.js:7
+#: projects/report/project_summary/project_summary.js:8
 #: projects/report/project_wise_stock_tracking/project_wise_stock_tracking.py:44
 #: public/js/financial_statements.js:153 public/js/purchase_trends_filters.js:8
-#: public/js/sales_trends_filters.js:55
-#: regional/report/electronic_invoice_register/electronic_invoice_register.js:28
+#: public/js/sales_trends_filters.js:51
+#: regional/report/electronic_invoice_register/electronic_invoice_register.js:27
 #: regional/report/irs_1099/irs_1099.js:8
-#: regional/report/uae_vat_201/uae_vat_201.js:9
-#: regional/report/vat_audit_report/vat_audit_report.js:9
-#: selling/page/point_of_sale/pos_controller.js:64
-#: selling/page/sales_funnel/sales_funnel.js:30
+#: regional/report/uae_vat_201/uae_vat_201.js:8
+#: regional/report/vat_audit_report/vat_audit_report.js:8
+#: selling/page/point_of_sale/pos_controller.js:72
+#: selling/page/sales_funnel/sales_funnel.js:33
 #: selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.js:16
 #: selling/report/customer_credit_balance/customer_credit_balance.js:8
-#: selling/report/item_wise_sales_history/item_wise_sales_history.js:9
+#: selling/report/item_wise_sales_history/item_wise_sales_history.js:8
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:114
 #: selling/report/lost_quotations/lost_quotations.js:8
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:9
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:8
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:46
-#: selling/report/sales_analytics/sales_analytics.js:50
-#: selling/report/sales_order_analysis/sales_order_analysis.js:9
+#: selling/report/sales_analytics/sales_analytics.js:57
+#: selling/report/sales_order_analysis/sales_order_analysis.js:8
 #: selling/report/sales_order_analysis/sales_order_analysis.py:343
-#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:35
-#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:9
-#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:34
-#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:35
-#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:9
+#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:33
+#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:8
+#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:33
+#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:33
+#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:8
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js:33
-#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:9
-#: selling/report/territory_wise_sales/territory_wise_sales.js:17
+#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:8
+#: selling/report/territory_wise_sales/territory_wise_sales.js:18
 #: setup/doctype/company/company.json setup/doctype/company/company_tree.js:10
 #: setup/doctype/department/department_tree.js:10
 #: setup/doctype/employee/employee_tree.js:8
 #: stock/dashboard_chart_source/warehouse_wise_stock_value/warehouse_wise_stock_value.js:8
-#: stock/doctype/warehouse/warehouse_tree.js:10
+#: stock/doctype/warehouse/warehouse_tree.js:11
 #: stock/page/warehouse_capacity_summary/warehouse_capacity_summary.js:12
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.js:8
-#: stock/report/cogs_by_item_group/cogs_by_item_group.js:9
-#: stock/report/delayed_item_report/delayed_item_report.js:9
-#: stock/report/delayed_order_report/delayed_order_report.js:9
-#: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.js:8
+#: stock/report/cogs_by_item_group/cogs_by_item_group.js:7
+#: stock/report/delayed_item_report/delayed_item_report.js:8
+#: stock/report/delayed_order_report/delayed_order_report.js:8
+#: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.js:7
 #: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:116
-#: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.js:8
-#: stock/report/item_shortage_report/item_shortage_report.js:9
+#: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.js:7
+#: stock/report/item_shortage_report/item_shortage_report.js:8
 #: stock/report/item_shortage_report/item_shortage_report.py:137
 #: stock/report/product_bundle_balance/product_bundle_balance.py:115
 #: stock/report/reserved_stock/reserved_stock.js:8
@@ -14248,20 +14461,20 @@
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:73
 #: stock/report/serial_no_ledger/serial_no_ledger.py:37
 #: stock/report/stock_ageing/stock_ageing.js:8
-#: stock/report/stock_analytics/stock_analytics.js:42
-#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:8
+#: stock/report/stock_analytics/stock_analytics.js:41
+#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:7
 #: stock/report/stock_balance/stock_balance.js:8
-#: stock/report/stock_balance/stock_balance.py:466
+#: stock/report/stock_balance/stock_balance.py:474
 #: stock/report/stock_ledger/stock_ledger.js:8
-#: stock/report/stock_ledger/stock_ledger.py:268
+#: stock/report/stock_ledger/stock_ledger.py:340
 #: stock/report/stock_ledger_variance/stock_ledger_variance.js:18
 #: stock/report/stock_projected_qty/stock_projected_qty.js:8
-#: stock/report/stock_qty_vs_serial_no_count/stock_qty_vs_serial_no_count.js:9
-#: stock/report/total_stock_summary/total_stock_summary.js:18
+#: stock/report/stock_qty_vs_serial_no_count/stock_qty_vs_serial_no_count.js:8
+#: stock/report/total_stock_summary/total_stock_summary.js:17
 #: stock/report/total_stock_summary/total_stock_summary.py:30
-#: stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.js:9
-#: support/report/issue_analytics/issue_analytics.js:9
-#: support/report/issue_summary/issue_summary.js:9
+#: stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.js:8
+#: support/report/issue_analytics/issue_analytics.js:8
+#: support/report/issue_summary/issue_summary.js:8
 msgid "Company"
 msgstr ""
 
@@ -14719,6 +14932,12 @@
 msgid "Company"
 msgstr ""
 
+#. Label of a Link field in DocType 'Plant Floor'
+#: manufacturing/doctype/plant_floor/plant_floor.json
+msgctxt "Plant Floor"
+msgid "Company"
+msgstr ""
+
 #. Label of a Link field in DocType 'Pricing Rule'
 #: accounts/doctype/pricing_rule/pricing_rule.json
 msgctxt "Pricing Rule"
@@ -15013,7 +15232,7 @@
 msgid "Company Abbreviation"
 msgstr ""
 
-#: public/js/setup_wizard.js:155
+#: public/js/setup_wizard.js:164
 msgid "Company Abbreviation cannot have more than 5 characters"
 msgstr ""
 
@@ -15197,7 +15416,7 @@
 msgid "Company Name as per Imported Tally Data"
 msgstr ""
 
-#: public/js/setup_wizard.js:63
+#: public/js/setup_wizard.js:67
 msgid "Company Name cannot be Company"
 msgstr ""
 
@@ -15239,28 +15458,28 @@
 msgid "Company and Posting Date is mandatory"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2203
+#: accounts/doctype/sales_invoice/sales_invoice.py:2172
 msgid "Company currencies of both the companies should match for Inter Company Transactions."
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:258
-#: stock/doctype/stock_entry/stock_entry.js:575
+#: stock/doctype/material_request/material_request.js:326
+#: stock/doctype/stock_entry/stock_entry.js:663
 msgid "Company field is required"
 msgstr ""
 
-#: accounts/doctype/bank_account/bank_account.py:58
+#: accounts/doctype/bank_account/bank_account.py:72
 msgid "Company is mandatory for company account"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:413
-msgid "Company is mandatory was generating invoice. Please set default company in Global Defaults."
+#: accounts/doctype/subscription/subscription.py:412
+msgid "Company is mandatory for generating an invoice. Please set a default company in Global Defaults."
 msgstr ""
 
-#: setup/doctype/company/company.js:161
+#: setup/doctype/company/company.js:191
 msgid "Company name not same"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:206
+#: assets/doctype/asset/asset.py:208
 msgid "Company of asset {0} and purchase document {1} doesn't matches."
 msgstr ""
 
@@ -15291,15 +15510,15 @@
 msgid "Company which internal supplier represents"
 msgstr ""
 
-#: erpnext_integrations/doctype/tally_migration/tally_migration.js:80
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:85
 msgid "Company {0} already exists. Continuing will overwrite the Company and Chart of Accounts"
 msgstr ""
 
-#: accounts/doctype/account/account.py:443
+#: accounts/doctype/account/account.py:462
 msgid "Company {0} does not exist"
 msgstr ""
 
-#: accounts/doctype/accounting_dimension/accounting_dimension.py:76
+#: accounts/doctype/accounting_dimension/accounting_dimension.py:80
 msgid "Company {0} is added more than once"
 msgstr ""
 
@@ -15340,7 +15559,7 @@
 msgid "Competitor Name"
 msgstr ""
 
-#: public/js/utils/sales_common.js:417
+#: public/js/utils/sales_common.js:476
 msgid "Competitors"
 msgstr ""
 
@@ -15356,7 +15575,9 @@
 msgid "Competitors"
 msgstr ""
 
-#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:61
+#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:67
+#: manufacturing/doctype/workstation/workstation_job_card.html:68
+#: public/js/projects/timer.js:32
 msgid "Complete"
 msgstr ""
 
@@ -15372,23 +15593,26 @@
 msgid "Complete"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:263
+#: manufacturing/doctype/job_card/job_card.js:296
 msgid "Complete Job"
 msgstr ""
 
+#: selling/page/point_of_sale/pos_payment.js:19
+msgid "Complete Order"
+msgstr ""
+
 #: accounts/doctype/subscription/subscription_list.js:8
 #: assets/doctype/asset_repair/asset_repair_list.js:7
-#: buying/doctype/purchase_order/purchase_order_list.js:24
+#: buying/doctype/purchase_order/purchase_order_list.js:43
 #: manufacturing/doctype/bom_creator/bom_creator_list.js:9
 #: manufacturing/report/job_card_summary/job_card_summary.py:93
 #: manufacturing/report/work_order_summary/work_order_summary.py:151
 #: projects/doctype/timesheet/timesheet_list.js:13
 #: projects/report/project_summary/project_summary.py:95
-#: selling/doctype/sales_order/sales_order_list.js:12
-#: setup/doctype/transaction_deletion_record/transaction_deletion_record_list.js:9
-#: stock/doctype/delivery_note/delivery_note_list.js:14
+#: selling/doctype/sales_order/sales_order_list.js:23
+#: stock/doctype/delivery_note/delivery_note_list.js:24
 #: stock/doctype/material_request/material_request_list.js:13
-#: stock/doctype/purchase_receipt/purchase_receipt_list.js:16
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:25
 msgid "Completed"
 msgstr ""
 
@@ -15647,11 +15871,12 @@
 msgid "Completed Qty"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:885
+#: manufacturing/doctype/work_order/work_order.py:899
 msgid "Completed Qty cannot be greater than 'Qty to Manufacture'"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:277
+#: manufacturing/doctype/job_card/job_card.js:313
+#: manufacturing/doctype/workstation/workstation.js:199
 msgid "Completed Quantity"
 msgstr ""
 
@@ -15786,7 +16011,7 @@
 msgid "Configure the action to stop the transaction or just warn if the same rate is not maintained."
 msgstr ""
 
-#: buying/doctype/buying_settings/buying_settings.js:19
+#: buying/doctype/buying_settings/buying_settings.js:20
 msgid "Configure the default Price List when creating a new Purchase transaction. Item prices will be fetched from this Price List."
 msgstr ""
 
@@ -15796,12 +16021,12 @@
 msgid "Confirmation Date"
 msgstr ""
 
-#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:37
-#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:45
+#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:43
+#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:51
 msgid "Connect to Quickbooks"
 msgstr ""
 
-#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:59
+#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:65
 msgid "Connected to QuickBooks"
 msgstr ""
 
@@ -15811,7 +16036,7 @@
 msgid "Connected to QuickBooks"
 msgstr ""
 
-#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:58
+#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:64
 msgid "Connecting to QuickBooks"
 msgstr ""
 
@@ -15917,6 +16142,12 @@
 msgid "Connections"
 msgstr ""
 
+#. Label of a Tab Break field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Connections"
+msgstr ""
+
 #: accounts/report/general_ledger/general_ledger.js:172
 msgid "Consider Accounting Dimensions"
 msgstr ""
@@ -15933,6 +16164,12 @@
 msgid "Consider Minimum Order Qty"
 msgstr ""
 
+#. Label of a Check field in DocType 'Pick List'
+#: stock/doctype/pick_list/pick_list.json
+msgctxt "Pick List"
+msgid "Consider Rejected Warehouses"
+msgstr ""
+
 #. Label of a Select field in DocType 'Purchase Taxes and Charges'
 #: accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.json
 msgctxt "Purchase Taxes and Charges"
@@ -16030,7 +16267,7 @@
 msgid "Consumed Amount"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:318
+#: assets/doctype/asset_capitalization/asset_capitalization.py:324
 msgid "Consumed Asset Items is mandatory for Decapitalization"
 msgstr ""
 
@@ -16101,7 +16338,7 @@
 msgid "Consumed Stock Items"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:321
+#: assets/doctype/asset_capitalization/asset_capitalization.py:327
 msgid "Consumed Stock Items or Consumed Asset Items is mandatory for Capitalization"
 msgstr ""
 
@@ -16636,9 +16873,9 @@
 msgid "Content Type"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:136
-#: public/js/controllers/transaction.js:2074
-#: selling/doctype/quotation/quotation.js:344
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:157
+#: public/js/controllers/transaction.js:2117
+#: selling/doctype/quotation/quotation.js:356
 msgid "Continue"
 msgstr ""
 
@@ -16724,7 +16961,7 @@
 msgstr ""
 
 #: selling/report/sales_person_commission_summary/sales_person_commission_summary.py:76
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:121
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:122
 msgid "Contribution %"
 msgstr ""
 
@@ -16735,10 +16972,14 @@
 msgstr ""
 
 #: selling/report/sales_person_commission_summary/sales_person_commission_summary.py:88
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:123
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:130
 msgid "Contribution Amount"
 msgstr ""
 
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:124
+msgid "Contribution Qty"
+msgstr ""
+
 #. Label of a Currency field in DocType 'Sales Team'
 #: selling/doctype/sales_team/sales_team.json
 msgctxt "Sales Team"
@@ -16757,7 +16998,7 @@
 msgid "Control Historical Stock Transactions"
 msgstr ""
 
-#: public/js/utils.js:684
+#: public/js/utils.js:749
 msgid "Conversion Factor"
 msgstr ""
 
@@ -16857,7 +17098,7 @@
 msgid "Conversion Factor"
 msgstr ""
 
-#: manufacturing/doctype/bom_creator/bom_creator.js:86
+#: manufacturing/doctype/bom_creator/bom_creator.js:85
 msgid "Conversion Rate"
 msgstr ""
 
@@ -16883,7 +17124,7 @@
 msgid "Conversion factor for default Unit of Measure must be 1 in row {0}"
 msgstr ""
 
-#: controllers/accounts_controller.py:2384
+#: controllers/accounts_controller.py:2476
 msgid "Conversion rate cannot be 0 or 1"
 msgstr ""
 
@@ -16893,12 +17134,12 @@
 msgid "Convert Item Description to Clean HTML in Transactions"
 msgstr ""
 
-#: accounts/doctype/account/account.js:106
-#: accounts/doctype/cost_center/cost_center.js:119
+#: accounts/doctype/account/account.js:107
+#: accounts/doctype/cost_center/cost_center.js:123
 msgid "Convert to Group"
 msgstr ""
 
-#: stock/doctype/warehouse/warehouse.js:61
+#: stock/doctype/warehouse/warehouse.js:58
 msgctxt "Warehouse"
 msgid "Convert to Group"
 msgstr ""
@@ -16907,17 +17148,17 @@
 msgid "Convert to Item Based Reposting"
 msgstr ""
 
-#: stock/doctype/warehouse/warehouse.js:60
+#: stock/doctype/warehouse/warehouse.js:57
 msgctxt "Warehouse"
 msgid "Convert to Ledger"
 msgstr ""
 
-#: accounts/doctype/account/account.js:83
-#: accounts/doctype/cost_center/cost_center.js:116
+#: accounts/doctype/account/account.js:79
+#: accounts/doctype/cost_center/cost_center.js:121
 msgid "Convert to Non-Group"
 msgstr ""
 
-#: crm/report/lead_details/lead_details.js:41
+#: crm/report/lead_details/lead_details.js:40
 #: selling/page/sales_funnel/sales_funnel.py:58
 msgid "Converted"
 msgstr ""
@@ -16964,11 +17205,11 @@
 msgid "Corrective Action"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:146
+#: manufacturing/doctype/job_card/job_card.js:155
 msgid "Corrective Job Card"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:151
+#: manufacturing/doctype/job_card/job_card.js:162
 msgid "Corrective Operation"
 msgstr ""
 
@@ -17001,23 +17242,23 @@
 #: accounts/report/accounts_payable/accounts_payable.js:28
 #: accounts/report/accounts_payable_summary/accounts_payable_summary.js:62
 #: accounts/report/accounts_receivable/accounts_receivable.js:30
-#: accounts/report/accounts_receivable/accounts_receivable.py:1047
+#: accounts/report/accounts_receivable/accounts_receivable.py:1055
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:62
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js:42
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:181
 #: accounts/report/general_ledger/general_ledger.js:152
-#: accounts/report/general_ledger/general_ledger.py:643
+#: accounts/report/general_ledger/general_ledger.py:656
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:300
 #: accounts/report/purchase_register/purchase_register.js:46
 #: accounts/report/sales_payment_summary/sales_payment_summary.py:29
 #: accounts/report/sales_register/sales_register.js:52
 #: accounts/report/sales_register/sales_register.py:250
 #: accounts/report/trial_balance/trial_balance.js:49
-#: assets/report/fixed_asset_register/fixed_asset_register.js:30
+#: assets/report/fixed_asset_register/fixed_asset_register.js:29
 #: assets/report/fixed_asset_register/fixed_asset_register.py:461
-#: buying/report/procurement_tracker/procurement_tracker.js:16
+#: buying/report/procurement_tracker/procurement_tracker.js:15
 #: buying/report/procurement_tracker/procurement_tracker.py:32
-#: public/js/financial_statements.js:237
+#: public/js/financial_statements.js:246
 msgid "Cost Center"
 msgstr ""
 
@@ -17393,7 +17634,7 @@
 msgid "Cost Center Allocation Percentages"
 msgstr ""
 
-#: public/js/utils/sales_common.js:383
+#: public/js/utils/sales_common.js:435
 msgid "Cost Center For Item with Item Code {0} has been Changed to {1}"
 msgstr ""
 
@@ -17403,7 +17644,7 @@
 msgid "Cost Center Name"
 msgstr ""
 
-#: accounts/doctype/cost_center/cost_center_tree.js:25
+#: accounts/doctype/cost_center/cost_center_tree.js:38
 msgid "Cost Center Number"
 msgstr ""
 
@@ -17422,8 +17663,8 @@
 msgid "Cost Center is a part of Cost Center Allocation, hence cannot be converted to a group"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1235
-#: stock/doctype/purchase_receipt/purchase_receipt.py:788
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1287
+#: stock/doctype/purchase_receipt/purchase_receipt.py:790
 msgid "Cost Center is required in row {0} in Taxes table for type {1}"
 msgstr ""
 
@@ -17443,11 +17684,11 @@
 msgid "Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:246
+#: assets/doctype/asset/asset.py:248
 msgid "Cost Center {} doesn't belong to Company {}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:253
+#: assets/doctype/asset/asset.py:255
 msgid "Cost Center {} is a group cost center and group cost centers cannot be used in transactions"
 msgstr ""
 
@@ -17487,7 +17728,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:45
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:64
-#: accounts/report/account_balance/account_balance.js:44
+#: accounts/report/account_balance/account_balance.js:43
 msgid "Cost of Goods Sold"
 msgstr ""
 
@@ -17599,11 +17840,11 @@
 msgid "Could not auto update shifts. Shift with shift factor {0} needed."
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:737
+#: stock/doctype/delivery_note/delivery_note.py:798
 msgid "Could not create Credit Note automatically, please uncheck 'Issue Credit Note' and submit again"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:339
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:355
 msgid "Could not detect the Company for updating Bank Accounts"
 msgstr ""
 
@@ -17625,10 +17866,6 @@
 msgid "Could not solve weighted score function. Make sure the formula is valid."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1030
-msgid "Could not update stock, invoice contains drop shipping item."
-msgstr ""
-
 #. Label of a Int field in DocType 'Shipment Parcel'
 #: stock/doctype/shipment_parcel/shipment_parcel.json
 msgctxt "Shipment Parcel"
@@ -17636,7 +17873,7 @@
 msgstr ""
 
 #: crm/report/lead_details/lead_details.py:63
-#: public/js/utils/contact_address_quick_entry.js:86
+#: public/js/utils/contact_address_quick_entry.js:89
 msgid "Country"
 msgstr ""
 
@@ -17735,6 +17972,12 @@
 msgid "Coupon Code"
 msgstr ""
 
+#. Label of a Link field in DocType 'Sales Invoice'
+#: accounts/doctype/sales_invoice/sales_invoice.json
+msgctxt "Sales Invoice"
+msgid "Coupon Code"
+msgstr ""
+
 #. Label of a Link field in DocType 'Sales Order'
 #: selling/doctype/sales_order/sales_order.json
 msgctxt "Sales Order"
@@ -17765,147 +18008,149 @@
 msgid "Coupon Type"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:80
-#: accounts/doctype/bank_clearance/bank_clearance.py:79
-#: accounts/doctype/journal_entry/journal_entry.js:298
+#: accounts/doctype/account/account_tree.js:84
+#: accounts/doctype/bank_clearance/bank_clearance.py:81
+#: templates/form_grid/bank_reconciliation_grid.html:16
 msgid "Cr"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:148
-#: accounts/doctype/account/account_tree.js:151
-#: accounts/doctype/dunning/dunning.js:54
-#: accounts/doctype/dunning/dunning.js:56
-#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:31
-#: accounts/doctype/journal_entry/journal_entry.js:85
-#: accounts/doctype/pos_invoice/pos_invoice.js:50
-#: accounts/doctype/pos_invoice/pos_invoice.js:51
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:97
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:103
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:112
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:114
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:120
+#: accounts/doctype/account/account_tree.js:209
+#: accounts/doctype/account/account_tree.js:216
+#: accounts/doctype/dunning/dunning.js:55
+#: accounts/doctype/dunning/dunning.js:57
+#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:34
+#: accounts/doctype/journal_entry/journal_entry.js:139
+#: accounts/doctype/pos_invoice/pos_invoice.js:54
+#: accounts/doctype/pos_invoice/pos_invoice.js:55
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:119
 #: accounts/doctype/purchase_invoice/purchase_invoice.js:127
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:189
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:609
-#: accounts/doctype/sales_invoice/sales_invoice.js:106
-#: accounts/doctype/sales_invoice/sales_invoice.js:108
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:133
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:134
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:139
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:149
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:225
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:654
+#: accounts/doctype/sales_invoice/sales_invoice.js:109
+#: accounts/doctype/sales_invoice/sales_invoice.js:110
 #: accounts/doctype/sales_invoice/sales_invoice.js:121
 #: accounts/doctype/sales_invoice/sales_invoice.js:122
-#: accounts/doctype/sales_invoice/sales_invoice.js:135
-#: accounts/doctype/sales_invoice/sales_invoice.js:142
-#: accounts/doctype/sales_invoice/sales_invoice.js:146
-#: accounts/doctype/sales_invoice/sales_invoice.js:157
-#: accounts/doctype/sales_invoice/sales_invoice.js:164
-#: accounts/doctype/sales_invoice/sales_invoice.js:184
-#: buying/doctype/purchase_order/purchase_order.js:94
-#: buying/doctype/purchase_order/purchase_order.js:310
-#: buying/doctype/purchase_order/purchase_order.js:318
-#: buying/doctype/purchase_order/purchase_order.js:324
-#: buying/doctype/purchase_order/purchase_order.js:330
-#: buying/doctype/purchase_order/purchase_order.js:336
-#: buying/doctype/purchase_order/purchase_order.js:348
+#: accounts/doctype/sales_invoice/sales_invoice.js:136
+#: accounts/doctype/sales_invoice/sales_invoice.js:147
+#: accounts/doctype/sales_invoice/sales_invoice.js:155
+#: accounts/doctype/sales_invoice/sales_invoice.js:168
+#: accounts/doctype/sales_invoice/sales_invoice.js:179
+#: accounts/doctype/sales_invoice/sales_invoice.js:205
+#: buying/doctype/purchase_order/purchase_order.js:99
 #: buying/doctype/purchase_order/purchase_order.js:354
-#: buying/doctype/request_for_quotation/request_for_quotation.js:43
-#: buying/doctype/request_for_quotation/request_for_quotation.js:146
-#: buying/doctype/request_for_quotation/request_for_quotation.js:169
-#: buying/doctype/supplier/supplier.js:96
-#: buying/doctype/supplier/supplier.js:100
-#: buying/doctype/supplier_quotation/supplier_quotation.js:24
+#: buying/doctype/purchase_order/purchase_order.js:371
+#: buying/doctype/purchase_order/purchase_order.js:380
+#: buying/doctype/purchase_order/purchase_order.js:387
+#: buying/doctype/purchase_order/purchase_order.js:397
+#: buying/doctype/purchase_order/purchase_order.js:415
+#: buying/doctype/purchase_order/purchase_order.js:421
+#: buying/doctype/request_for_quotation/request_for_quotation.js:49
+#: buying/doctype/request_for_quotation/request_for_quotation.js:156
+#: buying/doctype/request_for_quotation/request_for_quotation.js:187
+#: buying/doctype/supplier/supplier.js:112
+#: buying/doctype/supplier/supplier.js:120
 #: buying/doctype/supplier_quotation/supplier_quotation.js:25
+#: buying/doctype/supplier_quotation/supplier_quotation.js:26
 #: buying/doctype/supplier_quotation/supplier_quotation.js:27
-#: crm/doctype/lead/lead.js:35 crm/doctype/lead/lead.js:38
+#: crm/doctype/lead/lead.js:31 crm/doctype/lead/lead.js:37
 #: crm/doctype/lead/lead.js:39 crm/doctype/lead/lead.js:41
-#: crm/doctype/lead/lead.js:220 crm/doctype/opportunity/opportunity.js:85
-#: crm/doctype/opportunity/opportunity.js:90
-#: crm/doctype/opportunity/opportunity.js:97
+#: crm/doctype/lead/lead.js:230 crm/doctype/opportunity/opportunity.js:85
+#: crm/doctype/opportunity/opportunity.js:93
 #: crm/doctype/opportunity/opportunity.js:103
-#: crm/doctype/prospect/prospect.js:12 crm/doctype/prospect/prospect.js:20
-#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:151
-#: manufacturing/doctype/blanket_order/blanket_order.js:31
-#: manufacturing/doctype/blanket_order/blanket_order.js:41
-#: manufacturing/doctype/blanket_order/blanket_order.js:53
-#: manufacturing/doctype/bom/bom.js:121 manufacturing/doctype/bom/bom.js:126
-#: manufacturing/doctype/bom/bom.js:132 manufacturing/doctype/bom/bom.js:135
-#: manufacturing/doctype/bom/bom.js:344
-#: manufacturing/doctype/bom_creator/bom_creator.js:93
-#: manufacturing/doctype/production_plan/production_plan.js:109
-#: manufacturing/doctype/production_plan/production_plan.js:115
-#: manufacturing/doctype/production_plan/production_plan.js:121
-#: manufacturing/doctype/work_order/work_order.js:283
-#: manufacturing/doctype/work_order/work_order.js:726
-#: projects/doctype/task/task_tree.js:77 public/js/communication.js:16
-#: public/js/communication.js:24 public/js/communication.js:30
-#: public/js/controllers/transaction.js:300
-#: public/js/controllers/transaction.js:301
-#: public/js/controllers/transaction.js:2188
-#: selling/doctype/customer/customer.js:165
-#: selling/doctype/quotation/quotation.js:119
-#: selling/doctype/quotation/quotation.js:129
-#: selling/doctype/sales_order/sales_order.js:548
-#: selling/doctype/sales_order/sales_order.js:559
-#: selling/doctype/sales_order/sales_order.js:560
-#: selling/doctype/sales_order/sales_order.js:565
-#: selling/doctype/sales_order/sales_order.js:570
-#: selling/doctype/sales_order/sales_order.js:571
-#: selling/doctype/sales_order/sales_order.js:576
-#: selling/doctype/sales_order/sales_order.js:581
-#: selling/doctype/sales_order/sales_order.js:582
-#: selling/doctype/sales_order/sales_order.js:587
-#: selling/doctype/sales_order/sales_order.js:599
-#: selling/doctype/sales_order/sales_order.js:605
-#: selling/doctype/sales_order/sales_order.js:606
-#: selling/doctype/sales_order/sales_order.js:608
-#: selling/doctype/sales_order/sales_order.js:739
-#: selling/doctype/sales_order/sales_order.js:847
-#: stock/doctype/delivery_note/delivery_note.js:89
-#: stock/doctype/delivery_note/delivery_note.js:90
-#: stock/doctype/delivery_note/delivery_note.js:104
-#: stock/doctype/delivery_note/delivery_note.js:167
-#: stock/doctype/delivery_note/delivery_note.js:172
-#: stock/doctype/delivery_note/delivery_note.js:176
-#: stock/doctype/delivery_note/delivery_note.js:181
-#: stock/doctype/delivery_note/delivery_note.js:190
-#: stock/doctype/delivery_note/delivery_note.js:196
-#: stock/doctype/delivery_note/delivery_note.js:223
-#: stock/doctype/item/item.js:105 stock/doctype/item/item.js:108
-#: stock/doctype/item/item.js:112 stock/doctype/item/item.js:449
-#: stock/doctype/item/item.js:651
-#: stock/doctype/material_request/material_request.js:114
-#: stock/doctype/material_request/material_request.js:120
-#: stock/doctype/material_request/material_request.js:123
-#: stock/doctype/material_request/material_request.js:128
-#: stock/doctype/material_request/material_request.js:133
-#: stock/doctype/material_request/material_request.js:138
-#: stock/doctype/material_request/material_request.js:143
+#: crm/doctype/opportunity/opportunity.js:112
+#: crm/doctype/prospect/prospect.js:15 crm/doctype/prospect/prospect.js:27
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:127
+#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:159
+#: manufacturing/doctype/blanket_order/blanket_order.js:34
+#: manufacturing/doctype/blanket_order/blanket_order.js:48
+#: manufacturing/doctype/blanket_order/blanket_order.js:64
+#: manufacturing/doctype/bom/bom.js:123 manufacturing/doctype/bom/bom.js:132
+#: manufacturing/doctype/bom/bom.js:142 manufacturing/doctype/bom/bom.js:146
+#: manufacturing/doctype/bom/bom.js:360
+#: manufacturing/doctype/bom_creator/bom_creator.js:92
+#: manufacturing/doctype/plant_floor/plant_floor.js:240
+#: manufacturing/doctype/production_plan/production_plan.js:125
+#: manufacturing/doctype/production_plan/production_plan.js:139
+#: manufacturing/doctype/production_plan/production_plan.js:146
+#: manufacturing/doctype/work_order/work_order.js:301
+#: manufacturing/doctype/work_order/work_order.js:782
+#: projects/doctype/task/task_tree.js:81 public/js/communication.js:19
+#: public/js/communication.js:31 public/js/communication.js:41
+#: public/js/controllers/transaction.js:326
+#: public/js/controllers/transaction.js:327
+#: public/js/controllers/transaction.js:2231
+#: selling/doctype/customer/customer.js:176
+#: selling/doctype/quotation/quotation.js:125
+#: selling/doctype/quotation/quotation.js:134
+#: selling/doctype/sales_order/sales_order.js:601
+#: selling/doctype/sales_order/sales_order.js:621
+#: selling/doctype/sales_order/sales_order.js:626
+#: selling/doctype/sales_order/sales_order.js:635
+#: selling/doctype/sales_order/sales_order.js:647
+#: selling/doctype/sales_order/sales_order.js:652
+#: selling/doctype/sales_order/sales_order.js:661
+#: selling/doctype/sales_order/sales_order.js:670
+#: selling/doctype/sales_order/sales_order.js:675
+#: selling/doctype/sales_order/sales_order.js:681
+#: selling/doctype/sales_order/sales_order.js:698
+#: selling/doctype/sales_order/sales_order.js:711
+#: selling/doctype/sales_order/sales_order.js:713
+#: selling/doctype/sales_order/sales_order.js:715
+#: selling/doctype/sales_order/sales_order.js:853
+#: selling/doctype/sales_order/sales_order.js:992
+#: stock/doctype/delivery_note/delivery_note.js:91
+#: stock/doctype/delivery_note/delivery_note.js:93
+#: stock/doctype/delivery_note/delivery_note.js:112
+#: stock/doctype/delivery_note/delivery_note.js:185
+#: stock/doctype/delivery_note/delivery_note.js:195
+#: stock/doctype/delivery_note/delivery_note.js:204
+#: stock/doctype/delivery_note/delivery_note.js:214
+#: stock/doctype/delivery_note/delivery_note.js:228
+#: stock/doctype/delivery_note/delivery_note.js:234
+#: stock/doctype/delivery_note/delivery_note.js:270
+#: stock/doctype/item/item.js:135 stock/doctype/item/item.js:142
+#: stock/doctype/item/item.js:150 stock/doctype/item/item.js:517
+#: stock/doctype/item/item.js:725
+#: stock/doctype/material_request/material_request.js:117
+#: stock/doctype/material_request/material_request.js:126
+#: stock/doctype/material_request/material_request.js:132
+#: stock/doctype/material_request/material_request.js:140
 #: stock/doctype/material_request/material_request.js:148
-#: stock/doctype/material_request/material_request.js:153
 #: stock/doctype/material_request/material_request.js:156
-#: stock/doctype/material_request/material_request.js:314
-#: stock/doctype/pick_list/pick_list.js:102
-#: stock/doctype/pick_list/pick_list.js:104
-#: stock/doctype/purchase_receipt/purchase_receipt.js:78
-#: stock/doctype/purchase_receipt/purchase_receipt.js:79
-#: stock/doctype/purchase_receipt/purchase_receipt.js:88
-#: stock/doctype/purchase_receipt/purchase_receipt.js:225
-#: stock/doctype/purchase_receipt/purchase_receipt.js:227
-#: stock/doctype/purchase_receipt/purchase_receipt.js:230
-#: stock/doctype/purchase_receipt/purchase_receipt.js:232
-#: stock/doctype/purchase_receipt/purchase_receipt.js:234
-#: stock/doctype/stock_entry/stock_entry.js:146
-#: stock/doctype/stock_entry/stock_entry.js:147
-#: stock/doctype/stock_entry/stock_entry.js:217
-#: stock/doctype/stock_entry/stock_entry.js:1065
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:159
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:188
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:193
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:63
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:73
+#: stock/doctype/material_request/material_request.js:164
+#: stock/doctype/material_request/material_request.js:172
+#: stock/doctype/material_request/material_request.js:180
+#: stock/doctype/material_request/material_request.js:184
+#: stock/doctype/material_request/material_request.js:384
+#: stock/doctype/pick_list/pick_list.js:112
+#: stock/doctype/pick_list/pick_list.js:118
+#: stock/doctype/purchase_receipt/purchase_receipt.js:83
+#: stock/doctype/purchase_receipt/purchase_receipt.js:85
+#: stock/doctype/purchase_receipt/purchase_receipt.js:97
+#: stock/doctype/purchase_receipt/purchase_receipt.js:258
+#: stock/doctype/purchase_receipt/purchase_receipt.js:263
+#: stock/doctype/purchase_receipt/purchase_receipt.js:270
+#: stock/doctype/purchase_receipt/purchase_receipt.js:276
+#: stock/doctype/purchase_receipt/purchase_receipt.js:279
+#: stock/doctype/stock_entry/stock_entry.js:162
+#: stock/doctype/stock_entry/stock_entry.js:164
+#: stock/doctype/stock_entry/stock_entry.js:237
+#: stock/doctype/stock_entry/stock_entry.js:1220
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:169
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:202
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:212
 #: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:74
-#: support/doctype/issue/issue.js:27
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:88
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:90
+#: support/doctype/issue/issue.js:34
 msgid "Create"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:179
+#: manufacturing/doctype/work_order/work_order.js:190
 msgid "Create BOM"
 msgstr ""
 
@@ -17915,14 +18160,18 @@
 msgid "Create Chart Of Accounts Based On"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note_list.js:59
+#: stock/doctype/delivery_note/delivery_note_list.js:68
 msgid "Create Delivery Trip"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:122
+#: assets/doctype/asset/asset.js:154
 msgid "Create Depreciation Entry"
 msgstr ""
 
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:316
+msgid "Create Document"
+msgstr ""
+
 #: utilities/activation.py:138
 msgid "Create Employee"
 msgstr ""
@@ -17941,15 +18190,15 @@
 msgid "Create Grouped Asset"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:48
+#: accounts/doctype/journal_entry/journal_entry.js:96
 msgid "Create Inter Company Journal Entry"
 msgstr ""
 
-#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js:45
+#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js:49
 msgid "Create Invoices"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:152
+#: manufacturing/doctype/work_order/work_order.js:159
 msgid "Create Job Card"
 msgstr ""
 
@@ -17959,7 +18208,7 @@
 msgid "Create Job Card based on Batch Size"
 msgstr ""
 
-#: accounts/doctype/share_transfer/share_transfer.js:20
+#: accounts/doctype/share_transfer/share_transfer.js:18
 msgid "Create Journal Entry"
 msgstr ""
 
@@ -17978,8 +18227,8 @@
 msgid "Create Ledger Entries for Change Amount"
 msgstr ""
 
-#: buying/doctype/supplier/supplier.js:191
-#: selling/doctype/customer/customer.js:236
+#: buying/doctype/supplier/supplier.js:224
+#: selling/doctype/customer/customer.js:257
 msgid "Create Link"
 msgstr ""
 
@@ -17989,45 +18238,45 @@
 msgid "Create Missing Party"
 msgstr ""
 
-#: manufacturing/doctype/bom_creator/bom_creator.js:150
+#: manufacturing/doctype/bom_creator/bom_creator.js:146
 msgid "Create Multi-level BOM"
 msgstr ""
 
-#: public/js/call_popup/call_popup.js:119
+#: public/js/call_popup/call_popup.js:122
 msgid "Create New Contact"
 msgstr ""
 
-#: public/js/call_popup/call_popup.js:124
+#: public/js/call_popup/call_popup.js:128
 msgid "Create New Customer"
 msgstr ""
 
-#: public/js/call_popup/call_popup.js:129
+#: public/js/call_popup/call_popup.js:134
 msgid "Create New Lead"
 msgstr ""
 
 #. Title of an Onboarding Step
-#: crm/doctype/lead/lead.js:198
+#: crm/doctype/lead/lead.js:208
 #: crm/onboarding_step/create_opportunity/create_opportunity.json
 msgid "Create Opportunity"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:60
+#: selling/page/point_of_sale/pos_controller.js:67
 msgid "Create POS Opening Entry"
 msgstr ""
 
-#: accounts/doctype/payment_order/payment_order.js:31
+#: accounts/doctype/payment_order/payment_order.js:39
 msgid "Create Payment Entries"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.js:46
+#: accounts/doctype/payment_request/payment_request.js:58
 msgid "Create Payment Entry"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:588
+#: manufacturing/doctype/work_order/work_order.js:627
 msgid "Create Pick List"
 msgstr ""
 
-#: accounts/doctype/cheque_print_template/cheque_print_template.js:9
+#: accounts/doctype/cheque_print_template/cheque_print_template.js:10
 msgid "Create Print Format"
 msgstr ""
 
@@ -18058,18 +18307,18 @@
 msgid "Create Receiver List"
 msgstr ""
 
-#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:45
-#: stock/report/stock_ledger_variance/stock_ledger_variance.js:81
+#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:44
+#: stock/report/stock_ledger_variance/stock_ledger_variance.js:76
 msgid "Create Reposting Entries"
 msgstr ""
 
-#: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js:53
+#: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js:52
 msgid "Create Reposting Entry"
 msgstr ""
 
 #: projects/doctype/timesheet/timesheet.js:54
-#: projects/doctype/timesheet/timesheet.js:203
-#: projects/doctype/timesheet/timesheet.js:207
+#: projects/doctype/timesheet/timesheet.js:230
+#: projects/doctype/timesheet/timesheet.js:234
 msgid "Create Sales Invoice"
 msgstr ""
 
@@ -18083,24 +18332,24 @@
 msgid "Create Sales Orders to help you plan your work and deliver on-time"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.js:346
+#: stock/doctype/stock_entry/stock_entry.js:399
 msgid "Create Sample Retention Stock Entry"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:220
+#: public/js/utils/serial_no_batch_selector.js:223
 msgid "Create Serial Nos"
 msgstr ""
 
-#: stock/dashboard/item_dashboard.js:271
-#: stock/doctype/material_request/material_request.js:376
+#: stock/dashboard/item_dashboard.js:279
+#: stock/doctype/material_request/material_request.js:446
 msgid "Create Stock Entry"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:153
+#: buying/doctype/request_for_quotation/request_for_quotation.js:163
 msgid "Create Supplier Quotation"
 msgstr ""
 
-#: setup/doctype/company/company.js:110
+#: setup/doctype/company/company.js:130
 msgid "Create Tax Template"
 msgstr ""
 
@@ -18128,11 +18377,11 @@
 msgid "Create Users"
 msgstr ""
 
-#: stock/doctype/item/item.js:647
+#: stock/doctype/item/item.js:721
 msgid "Create Variant"
 msgstr ""
 
-#: stock/doctype/item/item.js:495 stock/doctype/item/item.js:530
+#: stock/doctype/item/item.js:563 stock/doctype/item/item.js:597
 msgid "Create Variants"
 msgstr ""
 
@@ -18239,7 +18488,7 @@
 msgid "Create an Item"
 msgstr ""
 
-#: stock/stock_ledger.py:1684
+#: stock/stock_ledger.py:1704
 msgid "Create an incoming stock transaction for the Item."
 msgstr ""
 
@@ -18296,7 +18545,7 @@
 msgid "Created {0} scorecards for {1} between:"
 msgstr ""
 
-#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:126
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:140
 msgid "Creating Accounts..."
 msgstr ""
 
@@ -18304,11 +18553,11 @@
 msgid "Creating Company and Importing Chart of Accounts"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:912
+#: selling/doctype/sales_order/sales_order.js:1069
 msgid "Creating Delivery Note ..."
 msgstr ""
 
-#: accounts/doctype/accounting_dimension/accounting_dimension.py:137
+#: accounts/doctype/accounting_dimension/accounting_dimension.py:143
 msgid "Creating Dimensions..."
 msgstr ""
 
@@ -18316,34 +18565,34 @@
 msgid "Creating Packing Slip ..."
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:1026
+#: selling/doctype/sales_order/sales_order.js:1194
 msgid "Creating Purchase Order ..."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:659
-#: buying/doctype/purchase_order/purchase_order.js:414
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:61
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:709
+#: buying/doctype/purchase_order/purchase_order.js:482
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:71
 msgid "Creating Purchase Receipt ..."
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:81
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:146
+#: buying/doctype/purchase_order/purchase_order.js:85
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:155
 msgid "Creating Stock Entry"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:429
+#: buying/doctype/purchase_order/purchase_order.js:497
 msgid "Creating Subcontracting Order ..."
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:226
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:247
 msgid "Creating Subcontracting Receipt ..."
 msgstr ""
 
-#: setup/doctype/employee/employee.js:85
+#: setup/doctype/employee/employee.js:87
 msgid "Creating User..."
 msgstr ""
 
-#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js:52
+#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js:56
 msgid "Creating {0} Invoice"
 msgstr ""
 
@@ -18363,24 +18612,26 @@
 msgid "Creation Document No"
 msgstr ""
 
-#: utilities/bulk_transaction.py:173
+#: utilities/bulk_transaction.py:185
 msgid "Creation of <b><a href='/app/{0}'>{1}(s)</a></b> successful"
 msgstr ""
 
-#: utilities/bulk_transaction.py:190
+#: utilities/bulk_transaction.py:202
 msgid ""
 "Creation of {0} failed.\n"
 "\t\t\t\tCheck <b><a href=\"/app/bulk-transaction-log\">Bulk Transaction Log</a></b>"
 msgstr ""
 
-#: utilities/bulk_transaction.py:181
+#: utilities/bulk_transaction.py:193
 msgid ""
 "Creation of {0} partially successful.\n"
 "\t\t\t\tCheck <b><a href=\"/app/bulk-transaction-log\">Bulk Transaction Log</a></b>"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:40
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:14
 #: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:87
+#: accounts/report/general_ledger/general_ledger.html:31
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:115
 #: accounts/report/purchase_register/purchase_register.py:241
 #: accounts/report/sales_register/sales_register.py:275
@@ -18402,15 +18653,15 @@
 msgid "Credit"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:601
+#: accounts/report/general_ledger/general_ledger.py:614
 msgid "Credit (Transaction)"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:578
+#: accounts/report/general_ledger/general_ledger.py:591
 msgid "Credit ({0})"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:536
+#: accounts/doctype/journal_entry/journal_entry.js:593
 msgid "Credit Account"
 msgstr ""
 
@@ -18478,6 +18729,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:49
+#: accounts/report/accounts_receivable/accounts_receivable.html:36
 #: selling/report/customer_credit_balance/customer_credit_balance.py:65
 msgid "Credit Limit"
 msgstr ""
@@ -18512,7 +18764,7 @@
 msgid "Credit Limit"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:546
+#: selling/doctype/customer/customer.py:558
 msgid "Credit Limit Crossed"
 msgstr ""
 
@@ -18553,7 +18805,8 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:173
-#: accounts/report/accounts_receivable/accounts_receivable.py:1070
+#: accounts/report/accounts_receivable/accounts_receivable.html:147
+#: accounts/report/accounts_receivable/accounts_receivable.py:1078
 #: controllers/sales_and_purchase_return.py:328
 #: setup/setup_wizard/operations/install_fixtures.py:256
 #: stock/doctype/delivery_note/delivery_note.js:84
@@ -18580,10 +18833,11 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:200
+#: accounts/report/accounts_receivable/accounts_receivable.html:162
 msgid "Credit Note Amount"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:254
+#: accounts/doctype/sales_invoice/sales_invoice.py:259
 msgid "Credit Note Issued"
 msgstr ""
 
@@ -18599,7 +18853,14 @@
 msgid "Credit Note Issued"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:734
+#. Description of the 'Update Outstanding for Self' (Check) field in DocType
+#. 'Sales Invoice'
+#: accounts/doctype/sales_invoice/sales_invoice.json
+msgctxt "Sales Invoice"
+msgid "Credit Note will update it's own outstanding amount, even if \"Return Against\" is specified."
+msgstr ""
+
+#: stock/doctype/delivery_note/delivery_note.py:795
 msgid "Credit Note {0} has been created automatically"
 msgstr ""
 
@@ -18615,16 +18876,16 @@
 msgid "Credit in Company Currency"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:512
-#: selling/doctype/customer/customer.py:566
+#: selling/doctype/customer/customer.py:524
+#: selling/doctype/customer/customer.py:579
 msgid "Credit limit has been crossed for customer {0} ({1}/{2})"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:328
+#: selling/doctype/customer/customer.py:340
 msgid "Credit limit is already defined for the Company {0}"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:565
+#: selling/doctype/customer/customer.py:578
 msgid "Credit limit reached for customer {0}"
 msgstr ""
 
@@ -18693,25 +18954,31 @@
 msgid "Criteria weights must add up to 100%"
 msgstr ""
 
+#. Description of a DocType
+#: setup/doctype/website_item_group/website_item_group.json
+msgid "Cross Listing of Item in multiple groups"
+msgstr ""
+
 #. Label of a Float field in DocType 'Tax Withholding Rate'
 #: accounts/doctype/tax_withholding_rate/tax_withholding_rate.json
 msgctxt "Tax Withholding Rate"
 msgid "Cumulative Transaction Threshold"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:121
+#: accounts/doctype/account/account_tree.js:166
 #: accounts/report/account_balance/account_balance.py:28
-#: accounts/report/accounts_receivable/accounts_receivable.py:1079
+#: accounts/report/accounts_receivable/accounts_receivable.py:1087
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:208
 #: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:104
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:94
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:118
 #: accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:298
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.py:147
 #: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py:212
+#: accounts/report/financial_statements.html:29
 #: accounts/report/financial_statements.py:631
 #: accounts/report/general_ledger/general_ledger.js:146
 #: accounts/report/gross_profit/gross_profit.py:363
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:644
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:650
 #: accounts/report/payment_ledger/payment_ledger.py:213
 #: accounts/report/profitability_analysis/profitability_analysis.py:175
 #: accounts/report/purchase_register/purchase_register.py:229
@@ -18720,12 +18987,12 @@
 #: accounts/report/trial_balance/trial_balance.py:422
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.py:228
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:218
-#: manufacturing/doctype/bom_creator/bom_creator.js:77
-#: public/js/financial_statements.js:231 public/js/utils/unreconcile.js:63
+#: manufacturing/doctype/bom_creator/bom_creator.js:76
+#: public/js/financial_statements.js:240 public/js/utils/unreconcile.js:93
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:121
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:72
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:85
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:130
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:137
 msgid "Currency"
 msgstr ""
 
@@ -19013,12 +19280,12 @@
 msgid "Currency and Price List"
 msgstr ""
 
-#: accounts/doctype/account/account.py:295
+#: accounts/doctype/account/account.py:314
 msgid "Currency can not be changed after making entries using some other currency"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1360
-#: accounts/doctype/payment_entry/payment_entry.py:1422 accounts/utils.py:2091
+#: accounts/doctype/payment_entry/payment_entry.py:1379
+#: accounts/doctype/payment_entry/payment_entry.py:1441 accounts/utils.py:2059
 msgid "Currency for {0} must be {1}"
 msgstr ""
 
@@ -19231,57 +19498,57 @@
 
 #. Name of a DocType
 #. Name of a role
-#: accounts/doctype/sales_invoice/sales_invoice.js:265
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:38
+#: accounts/doctype/sales_invoice/sales_invoice.js:296
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:37
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:28
 #: accounts/report/gross_profit/gross_profit.py:321
 #: accounts/report/inactive_sales_items/inactive_sales_items.py:37
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.js:22
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:221
-#: accounts/report/pos_register/pos_register.js:45
+#: accounts/report/pos_register/pos_register.js:44
 #: accounts/report/pos_register/pos_register.py:123
 #: accounts/report/pos_register/pos_register.py:186
 #: accounts/report/sales_register/sales_register.js:21
 #: accounts/report/sales_register/sales_register.py:185
-#: buying/doctype/supplier/supplier.js:162 crm/doctype/lead/lead.js:35
-#: crm/doctype/opportunity/opportunity.js:94 crm/doctype/prospect/prospect.js:7
+#: buying/doctype/supplier/supplier.js:192 crm/doctype/lead/lead.js:31
+#: crm/doctype/opportunity/opportunity.js:99 crm/doctype/prospect/prospect.js:8
 #: crm/report/lead_conversion_time/lead_conversion_time.py:54
-#: projects/doctype/timesheet/timesheet.js:195
+#: projects/doctype/timesheet/timesheet.js:222
 #: projects/report/project_wise_stock_tracking/project_wise_stock_tracking.py:45
-#: public/js/sales_trends_filters.js:25 public/js/sales_trends_filters.js:42
-#: regional/report/electronic_invoice_register/electronic_invoice_register.js:22
+#: public/js/sales_trends_filters.js:25 public/js/sales_trends_filters.js:39
+#: regional/report/electronic_invoice_register/electronic_invoice_register.js:21
 #: selling/doctype/customer/customer.json
 #: selling/doctype/sales_order/sales_order_calendar.js:18
-#: selling/page/point_of_sale/pos_item_cart.js:309
+#: selling/page/point_of_sale/pos_item_cart.js:307
 #: selling/report/customer_credit_balance/customer_credit_balance.js:16
 #: selling/report/customer_credit_balance/customer_credit_balance.py:64
-#: selling/report/customer_wise_item_price/customer_wise_item_price.js:8
+#: selling/report/customer_wise_item_price/customer_wise_item_price.js:7
 #: selling/report/inactive_customers/inactive_customers.py:78
-#: selling/report/item_wise_sales_history/item_wise_sales_history.js:48
+#: selling/report/item_wise_sales_history/item_wise_sales_history.js:47
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:72
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:38
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:37
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:19
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:41
 #: selling/report/sales_order_analysis/sales_order_analysis.py:230
-#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:42
+#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:40
 #: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.py:32
-#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:54
+#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:53
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:32
-#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:42
+#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:40
 #: selling/report/sales_person_commission_summary/sales_person_commission_summary.py:53
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js:53
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:64
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:65
 #: setup/doctype/customer_group/customer_group.json
 #: setup/doctype/territory/territory.json
-#: stock/doctype/delivery_note/delivery_note.js:359
-#: stock/doctype/stock_entry/stock_entry.js:300
-#: stock/report/delayed_item_report/delayed_item_report.js:37
+#: stock/doctype/delivery_note/delivery_note.js:405
+#: stock/doctype/stock_entry/stock_entry.js:342
+#: stock/report/delayed_item_report/delayed_item_report.js:36
 #: stock/report/delayed_item_report/delayed_item_report.py:117
-#: stock/report/delayed_order_report/delayed_order_report.js:37
+#: stock/report/delayed_order_report/delayed_order_report.js:36
 #: stock/report/delayed_order_report/delayed_order_report.py:46
-#: support/report/issue_analytics/issue_analytics.js:70
+#: support/report/issue_analytics/issue_analytics.js:69
 #: support/report/issue_analytics/issue_analytics.py:37
-#: support/report/issue_summary/issue_summary.js:58
+#: support/report/issue_summary/issue_summary.js:57
 #: support/report/issue_summary/issue_summary.py:34
 msgid "Customer"
 msgstr ""
@@ -19650,7 +19917,7 @@
 msgid "Customer Code"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1027
+#: accounts/report/accounts_receivable/accounts_receivable.py:1035
 msgid "Customer Contact"
 msgstr ""
 
@@ -19730,11 +19997,11 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/report/accounts_receivable/accounts_receivable.js:118
-#: accounts/report/accounts_receivable/accounts_receivable.py:1097
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:99
+#: accounts/report/accounts_receivable/accounts_receivable.js:121
+#: accounts/report/accounts_receivable/accounts_receivable.py:1105
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:102
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:188
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:56
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:55
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.py:166
 #: accounts/report/gross_profit/gross_profit.py:328
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:208
@@ -19743,10 +20010,10 @@
 #: public/js/sales_trends_filters.js:26
 #: selling/report/inactive_customers/inactive_customers.py:81
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:80
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:31
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:30
 #: setup/doctype/customer_group/customer_group.json
-#: stock/report/delayed_item_report/delayed_item_report.js:43
-#: stock/report/delayed_order_report/delayed_order_report.js:43
+#: stock/report/delayed_item_report/delayed_item_report.js:42
+#: stock/report/delayed_order_report/delayed_order_report.js:42
 msgid "Customer Group"
 msgstr ""
 
@@ -19909,7 +20176,7 @@
 msgid "Customer Group Name"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1197
+#: accounts/report/accounts_receivable/accounts_receivable.py:1205
 msgid "Customer Group: {0} does not exist"
 msgstr ""
 
@@ -19930,11 +20197,12 @@
 msgid "Customer Items"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1088
+#: accounts/report/accounts_receivable/accounts_receivable.py:1096
 msgid "Customer LPO"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:182
+#: accounts/report/accounts_receivable/accounts_receivable.html:152
 msgid "Customer LPO No."
 msgstr ""
 
@@ -19951,9 +20219,9 @@
 msgid "Customer Mobile No"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1034
+#: accounts/report/accounts_receivable/accounts_receivable.py:1042
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:160
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:92
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:91
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:34
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:227
 #: accounts/report/sales_register/sales_register.py:191
@@ -20105,7 +20373,7 @@
 msgid "Customer PO Details"
 msgstr ""
 
-#: public/js/utils/contact_address_quick_entry.js:92
+#: public/js/utils/contact_address_quick_entry.js:95
 msgid "Customer POS Id"
 msgstr ""
 
@@ -20152,7 +20420,7 @@
 msgid "Customer Provided"
 msgstr ""
 
-#: setup/doctype/company/company.py:359
+#: setup/doctype/company/company.py:358
 msgid "Customer Service"
 msgstr ""
 
@@ -20180,7 +20448,7 @@
 msgid "Customer Warehouse (Optional)"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:924
+#: selling/page/point_of_sale/pos_item_cart.js:956
 msgid "Customer contact updated successfully."
 msgstr ""
 
@@ -20203,9 +20471,9 @@
 msgid "Customer required for 'Customerwise Discount'"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:986
-#: selling/doctype/sales_order/sales_order.py:335
-#: stock/doctype/delivery_note/delivery_note.py:354
+#: accounts/doctype/sales_invoice/sales_invoice.py:1003
+#: selling/doctype/sales_order/sales_order.py:338
+#: stock/doctype/delivery_note/delivery_note.py:408
 msgid "Customer {0} does not belong to project {1}"
 msgstr ""
 
@@ -20367,7 +20635,7 @@
 msgid "DUNN-.MM.-.YY.-"
 msgstr ""
 
-#: public/js/stock_analytics.js:51
+#: public/js/stock_analytics.js:81
 msgid "Daily"
 msgstr ""
 
@@ -20476,7 +20744,7 @@
 msgid "Dashboard"
 msgstr ""
 
-#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:16
+#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:15
 msgid "Data Based On"
 msgstr ""
 
@@ -20497,17 +20765,19 @@
 msgid "Data exported from Tally that consists of the Chart of Accounts, Customers, Suppliers, Addresses, Items and UOMs"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:542
+#: accounts/doctype/journal_entry/journal_entry.js:603
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:36
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:150
-#: accounts/report/account_balance/account_balance.js:16
-#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js:37
+#: accounts/report/account_balance/account_balance.js:15
+#: accounts/report/accounts_receivable/accounts_receivable.html:132
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js:38
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:26
+#: accounts/report/general_ledger/general_ledger.html:27
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:26
 #: accounts/report/sales_payment_summary/sales_payment_summary.py:22
 #: accounts/report/sales_payment_summary/sales_payment_summary.py:38
-#: accounts/report/share_balance/share_balance.js:10
-#: accounts/report/share_ledger/share_ledger.js:10
+#: accounts/report/share_balance/share_balance.js:9
+#: accounts/report/share_ledger/share_ledger.js:9
 #: accounts/report/share_ledger/share_ledger.py:52
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:164
 #: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:192
@@ -20515,12 +20785,12 @@
 #: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.py:28
 #: crm/report/first_response_time_for_opportunity/first_response_time_for_opportunity.py:11
 #: projects/report/timesheet_billing_summary/timesheet_billing_summary.py:19
-#: public/js/bank_reconciliation_tool/data_table_manager.js:40
+#: public/js/bank_reconciliation_tool/data_table_manager.js:39
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:34
 #: selling/report/sales_order_analysis/sales_order_analysis.py:220
 #: stock/report/product_bundle_balance/product_bundle_balance.js:8
 #: stock/report/reserved_stock/reserved_stock.py:89
-#: stock/report/stock_ledger/stock_ledger.py:107
+#: stock/report/stock_ledger/stock_ledger.py:180
 #: support/report/first_response_time_for_issues/first_response_time_for_issues.py:11
 #: support/report/support_hour_distribution/support_hour_distribution.py:68
 msgid "Date"
@@ -20700,7 +20970,7 @@
 msgid "Date "
 msgstr ""
 
-#: assets/report/fixed_asset_register/fixed_asset_register.js:98
+#: assets/report/fixed_asset_register/fixed_asset_register.js:97
 msgid "Date Based On"
 msgstr ""
 
@@ -20737,7 +21007,7 @@
 msgid "Date of Commencement"
 msgstr ""
 
-#: setup/doctype/company/company.js:70
+#: setup/doctype/company/company.js:69
 msgid "Date of Commencement should be greater than Date of Incorporation"
 msgstr ""
 
@@ -20765,7 +21035,7 @@
 msgid "Date of Joining"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:267
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:265
 msgid "Date of Transaction"
 msgstr ""
 
@@ -20870,7 +21140,7 @@
 msgid "Days Since Last Order"
 msgstr ""
 
-#: accounts/report/inactive_sales_items/inactive_sales_items.js:35
+#: accounts/report/inactive_sales_items/inactive_sales_items.js:34
 msgid "Days Since Last order"
 msgstr ""
 
@@ -20903,12 +21173,14 @@
 msgid "Dear"
 msgstr ""
 
-#: stock/reorder_item.py:285
+#: stock/reorder_item.py:370
 msgid "Dear System Manager,"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:39
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:13
 #: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:80
+#: accounts/report/general_ledger/general_ledger.html:30
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:114
 #: accounts/report/purchase_register/purchase_register.py:240
 #: accounts/report/sales_register/sales_register.py:274
@@ -20930,15 +21202,15 @@
 msgid "Debit"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:594
+#: accounts/report/general_ledger/general_ledger.py:607
 msgid "Debit (Transaction)"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:572
+#: accounts/report/general_ledger/general_ledger.py:585
 msgid "Debit ({0})"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:530
+#: accounts/doctype/journal_entry/journal_entry.js:583
 msgid "Debit Account"
 msgstr ""
 
@@ -20973,10 +21245,11 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:175
-#: accounts/report/accounts_receivable/accounts_receivable.py:1073
+#: accounts/report/accounts_receivable/accounts_receivable.html:147
+#: accounts/report/accounts_receivable/accounts_receivable.py:1081
 #: controllers/sales_and_purchase_return.py:332
 #: setup/setup_wizard/operations/install_fixtures.py:257
-#: stock/doctype/purchase_receipt/purchase_receipt.js:73
+#: stock/doctype/purchase_receipt/purchase_receipt.js:76
 msgid "Debit Note"
 msgstr ""
 
@@ -20994,6 +21267,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:202
+#: accounts/report/accounts_receivable/accounts_receivable.html:162
 msgid "Debit Note Amount"
 msgstr ""
 
@@ -21003,6 +21277,13 @@
 msgid "Debit Note Issued"
 msgstr ""
 
+#. Description of the 'Update Outstanding for Self' (Check) field in DocType
+#. 'Purchase Invoice'
+#: accounts/doctype/purchase_invoice/purchase_invoice.json
+msgctxt "Purchase Invoice"
+msgid "Debit Note will update it's own outstanding amount, even if \"Return Against\" is specified."
+msgstr ""
+
 #. Label of a Link field in DocType 'POS Invoice'
 #: accounts/doctype/pos_invoice/pos_invoice.json
 msgctxt "POS Invoice"
@@ -21015,11 +21296,11 @@
 msgid "Debit To"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:867
+#: accounts/doctype/sales_invoice/sales_invoice.py:884
 msgid "Debit To is required"
 msgstr ""
 
-#: accounts/general_ledger.py:465
+#: accounts/general_ledger.py:474
 msgid "Debit and Credit not equal for {0} #{1}. Difference is {2}."
 msgstr ""
 
@@ -21059,7 +21340,7 @@
 msgid "Decapitalized"
 msgstr ""
 
-#: public/js/utils/sales_common.js:444
+#: public/js/utils/sales_common.js:503
 msgid "Declare Lost"
 msgstr ""
 
@@ -21191,15 +21472,15 @@
 msgid "Default BOM ({0}) must be active for this item or its template"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:1234
+#: manufacturing/doctype/work_order/work_order.py:1248
 msgid "Default BOM for {0} not found"
 msgstr ""
 
-#: controllers/accounts_controller.py:3216
+#: controllers/accounts_controller.py:3307
 msgid "Default BOM not found for FG Item {0}"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:1231
+#: manufacturing/doctype/work_order/work_order.py:1245
 msgid "Default BOM not found for Item {0} and Project {1}"
 msgstr ""
 
@@ -21657,11 +21938,11 @@
 msgid "Default Unit of Measure"
 msgstr ""
 
-#: stock/doctype/item/item.py:1233
+#: stock/doctype/item/item.py:1234
 msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item."
 msgstr ""
 
-#: stock/doctype/item/item.py:1216
+#: stock/doctype/item/item.py:1217
 msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM."
 msgstr ""
 
@@ -21748,7 +22029,12 @@
 msgid "Default account will be automatically updated in POS Invoice when this mode is selected."
 msgstr ""
 
-#: setup/doctype/company/company.js:133
+#. Description of a DocType
+#: stock/doctype/stock_settings/stock_settings.json
+msgid "Default settings for your stock-related transactions"
+msgstr ""
+
+#: setup/doctype/company/company.js:160
 msgid "Default tax templates for sales, purchase and items are created."
 msgstr ""
 
@@ -21929,7 +22215,7 @@
 msgid "Delayed Tasks Summary"
 msgstr ""
 
-#: setup/doctype/company/company.js:176
+#: setup/doctype/company/company.js:207
 msgid "Delete"
 msgstr ""
 
@@ -21939,21 +22225,39 @@
 msgid "Delete Accounting and Stock Ledger Entries on deletion of Transaction"
 msgstr ""
 
+#. Label of a Check field in DocType 'Transaction Deletion Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Delete Bins"
+msgstr ""
+
 #. Label of a Check field in DocType 'Repost Accounting Ledger'
 #: accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.json
 msgctxt "Repost Accounting Ledger"
 msgid "Delete Cancelled Ledger Entries"
 msgstr ""
 
-#: stock/doctype/inventory_dimension/inventory_dimension.js:50
+#: stock/doctype/inventory_dimension/inventory_dimension.js:66
 msgid "Delete Dimension"
 msgstr ""
 
-#: setup/doctype/company/company.js:117
+#. Label of a Check field in DocType 'Transaction Deletion Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Delete Leads and Addresses"
+msgstr ""
+
+#: setup/doctype/company/company.js:141
 msgid "Delete Transactions"
 msgstr ""
 
-#: setup/doctype/company/company.js:176
+#. Label of a Check field in DocType 'Transaction Deletion Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Delete Transactions"
+msgstr ""
+
+#: setup/doctype/company/company.js:206
 msgid "Delete all the Transactions for this Company"
 msgstr ""
 
@@ -21963,12 +22267,16 @@
 msgid "Deleted Documents"
 msgstr ""
 
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.py:489
+msgid "Deletion in Progress!"
+msgstr ""
+
 #: regional/__init__.py:14
 msgid "Deletion is not permitted for country {0}"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:297
-#: buying/doctype/purchase_order/purchase_order_list.js:10
+#: buying/doctype/purchase_order/purchase_order.js:335
+#: buying/doctype/purchase_order/purchase_order_list.js:19
 #: controllers/website_list_for_contact.py:211
 #: stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py:63
 msgid "Delivered"
@@ -22081,7 +22389,7 @@
 msgid "Delivery"
 msgstr ""
 
-#: public/js/utils.js:678
+#: public/js/utils.js:742 selling/doctype/sales_order/sales_order.js:1012
 #: selling/report/sales_order_analysis/sales_order_analysis.py:321
 msgid "Delivery Date"
 msgstr ""
@@ -22114,17 +22422,17 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/sales_invoice/sales_invoice.js:281
-#: accounts/doctype/sales_invoice/sales_invoice_list.js:27
+#: accounts/doctype/sales_invoice/sales_invoice.js:316
+#: accounts/doctype/sales_invoice/sales_invoice_list.js:35
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:20
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:286
 #: accounts/report/sales_register/sales_register.py:243
-#: selling/doctype/sales_order/sales_order.js:559
-#: selling/doctype/sales_order/sales_order_list.js:57
+#: selling/doctype/sales_order/sales_order.js:619
+#: selling/doctype/sales_order/sales_order_list.js:70
 #: stock/doctype/delivery_note/delivery_note.json
-#: stock/doctype/delivery_trip/delivery_trip.js:51
-#: stock/doctype/pick_list/pick_list.js:102
-#: stock/doctype/purchase_receipt/purchase_receipt.js:83
+#: stock/doctype/delivery_trip/delivery_trip.js:52
+#: stock/doctype/pick_list/pick_list.js:110
+#: stock/doctype/purchase_receipt/purchase_receipt.js:90
 msgid "Delivery Note"
 msgstr ""
 
@@ -22240,16 +22548,16 @@
 msgid "Delivery Note Trends"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1148
+#: accounts/doctype/sales_invoice/sales_invoice.py:1155
 msgid "Delivery Note {0} is not submitted"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:885
+#: stock/doctype/pick_list/pick_list.py:1005
 msgid "Delivery Note(s) created for the Pick List"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1092
-#: stock/doctype/delivery_trip/delivery_trip.js:67
+#: accounts/report/accounts_receivable/accounts_receivable.py:1100
+#: stock/doctype/delivery_trip/delivery_trip.js:72
 msgid "Delivery Notes"
 msgstr ""
 
@@ -22296,7 +22604,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: stock/doctype/delivery_note/delivery_note.js:180
+#: stock/doctype/delivery_note/delivery_note.js:210
 #: stock/doctype/delivery_trip/delivery_trip.json
 msgid "Delivery Trip"
 msgstr ""
@@ -22328,7 +22636,7 @@
 msgid "Delivery to"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:351
+#: selling/doctype/sales_order/sales_order.py:354
 msgid "Delivery warehouse required for stock item {0}"
 msgstr ""
 
@@ -22447,7 +22755,7 @@
 msgid "Depends on Tasks"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/data_table_manager.js:61
+#: public/js/bank_reconciliation_tool/data_table_manager.js:60
 msgid "Deposit"
 msgstr ""
 
@@ -22489,7 +22797,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:56
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:81
-#: accounts/report/account_balance/account_balance.js:45
+#: accounts/report/account_balance/account_balance.js:44
 #: accounts/report/cash_flow/cash_flow.py:129
 msgid "Depreciation"
 msgstr ""
@@ -22508,7 +22816,7 @@
 msgstr ""
 
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:149
-#: assets/doctype/asset/asset.js:241
+#: assets/doctype/asset/asset.js:276
 msgid "Depreciation Amount"
 msgstr ""
 
@@ -22571,7 +22879,7 @@
 msgid "Depreciation Expense Account"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:390
+#: assets/doctype/asset/depreciation.py:388
 msgid "Depreciation Expense Account should be an Income or Expense Account."
 msgstr ""
 
@@ -22605,19 +22913,19 @@
 msgid "Depreciation Posting Date"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:661
+#: assets/doctype/asset/asset.js:780
 msgid "Depreciation Posting Date should not be equal to Available for Use Date."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:491
+#: assets/doctype/asset/asset.py:493
 msgid "Depreciation Row {0}: Expected value after useful life must be greater than or equal to {1}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:460
+#: assets/doctype/asset/asset.py:462
 msgid "Depreciation Row {0}: Next Depreciation Date cannot be before Available-for-use Date"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:451
+#: assets/doctype/asset/asset.py:453
 msgid "Depreciation Row {0}: Next Depreciation Date cannot be before Purchase Date"
 msgstr ""
 
@@ -22652,7 +22960,7 @@
 msgid "Depreciation Schedule View"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:347
+#: assets/doctype/asset/asset.py:349
 msgid "Depreciation cannot be calculated for fully depreciated assets"
 msgstr ""
 
@@ -22662,12 +22970,15 @@
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:192
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:71
 #: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:207
+#: manufacturing/doctype/bom/bom_item_preview.html:12
 #: manufacturing/report/bom_stock_calculated/bom_stock_calculated.py:58
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:10
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:20
 #: manufacturing/report/bom_stock_report/bom_stock_report.py:26
 #: manufacturing/report/work_order_stock_report/work_order_stock_report.py:112
-#: public/js/bank_reconciliation_tool/data_table_manager.js:56
-#: public/js/controllers/transaction.js:2138
-#: selling/doctype/quotation/quotation.js:279
+#: public/js/bank_reconciliation_tool/data_table_manager.js:55
+#: public/js/controllers/transaction.js:2181
+#: selling/doctype/quotation/quotation.js:291
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:41
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:35
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:26
@@ -22678,7 +22989,7 @@
 #: stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py:59
 #: stock/report/product_bundle_balance/product_bundle_balance.py:112
 #: stock/report/stock_ageing/stock_ageing.py:126
-#: stock/report/stock_ledger/stock_ledger.py:187
+#: stock/report/stock_ledger/stock_ledger.py:260
 #: stock/report/stock_projected_qty/stock_projected_qty.py:106
 #: stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py:60
 #: stock/report/total_stock_summary/total_stock_summary.py:23
@@ -23244,7 +23555,7 @@
 msgid "Desk User"
 msgstr ""
 
-#: public/js/utils/sales_common.js:423
+#: public/js/utils/sales_common.js:482
 msgid "Detailed Reason"
 msgstr ""
 
@@ -23260,6 +23571,10 @@
 msgid "Detailed Reason"
 msgstr ""
 
+#: templates/pages/task_info.html:49
+msgid "Details"
+msgstr ""
+
 #. Label of a Long Text field in DocType 'Appointment'
 #: crm/doctype/appointment/appointment.json
 msgctxt "Appointment"
@@ -23320,6 +23635,12 @@
 msgid "Details"
 msgstr ""
 
+#. Label of a Tab Break field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Details"
+msgstr ""
+
 #. Label of a Select field in DocType 'Accounts Settings'
 #: accounts/doctype/accounts_settings/accounts_settings.json
 msgctxt "Accounts Settings"
@@ -23333,7 +23654,7 @@
 msgstr ""
 
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:175
-#: public/js/bank_reconciliation_tool/number_card.js:31
+#: public/js/bank_reconciliation_tool/number_card.js:30
 #: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.py:130
 #: stock/report/stock_qty_vs_serial_no_count/stock_qty_vs_serial_no_count.py:35
 msgid "Difference"
@@ -23363,7 +23684,7 @@
 msgid "Difference (Dr - Cr)"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:287
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:294
 msgid "Difference Account"
 msgstr ""
 
@@ -23392,15 +23713,15 @@
 msgid "Difference Account"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:573
+#: stock/doctype/stock_entry/stock_entry.py:528
 msgid "Difference Account must be a Asset/Liability type account, since this Stock Entry is an Opening Entry"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:714
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:768
 msgid "Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:301
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:309
 msgid "Difference Amount"
 msgstr ""
 
@@ -23464,7 +23785,7 @@
 msgid "Difference Value"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.js:366
+#: stock/doctype/delivery_note/delivery_note.js:414
 msgid "Different 'Source Warehouse' and 'Target Warehouse' can be set for each row."
 msgstr ""
 
@@ -23484,7 +23805,7 @@
 msgid "Dimension Details"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:94
+#: accounts/report/budget_variance_report/budget_variance_report.js:92
 msgid "Dimension Filter"
 msgstr ""
 
@@ -23654,7 +23975,7 @@
 msgstr ""
 
 #: selling/report/customer_credit_balance/customer_credit_balance.py:70
-#: stock/doctype/batch/batch_list.js:5 stock/doctype/item/item_list.js:8
+#: stock/doctype/batch/batch_list.js:5 stock/doctype/item/item_list.js:16
 #: stock/doctype/putaway_rule/putaway_rule_list.js:5
 msgid "Disabled"
 msgstr ""
@@ -23803,19 +24124,19 @@
 msgid "Disabled"
 msgstr ""
 
-#: accounts/general_ledger.py:128
+#: accounts/general_ledger.py:132
 msgid "Disabled Account Selected"
 msgstr ""
 
-#: stock/utils.py:454
+#: stock/utils.py:449
 msgid "Disabled Warehouse {0} cannot be used for this transaction."
 msgstr ""
 
-#: controllers/accounts_controller.py:550
+#: controllers/accounts_controller.py:594
 msgid "Disabled pricing rules since this {} is an internal transfer"
 msgstr ""
 
-#: controllers/accounts_controller.py:564
+#: controllers/accounts_controller.py:608
 msgid "Disabled tax included prices since this {} is an internal transfer"
 msgstr ""
 
@@ -23830,11 +24151,11 @@
 msgid "Disables auto-fetching of existing quantity"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting.js:62
+#: accounts/doctype/invoice_discounting/invoice_discounting.js:64
 msgid "Disburse Loan"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting_list.js:12
+#: accounts/doctype/invoice_discounting/invoice_discounting_list.js:9
 msgid "Disbursed"
 msgstr ""
 
@@ -23844,7 +24165,8 @@
 msgid "Disbursed"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:380
+#: selling/page/point_of_sale/pos_item_cart.js:387
+#: templates/form_grid/item_grid.html:71
 msgid "Discount"
 msgstr ""
 
@@ -24110,7 +24432,7 @@
 msgid "Discount and Margin"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:761
+#: selling/page/point_of_sale/pos_item_cart.js:791
 msgid "Discount cannot be greater than 100%"
 msgstr ""
 
@@ -24118,7 +24440,7 @@
 msgid "Discount must be less than 100"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:2532
+#: accounts/doctype/payment_entry/payment_entry.py:2561
 msgid "Discount of {} applied as per Payment Term"
 msgstr ""
 
@@ -24204,7 +24526,7 @@
 msgid "Dislikes"
 msgstr ""
 
-#: setup/doctype/company/company.py:353
+#: setup/doctype/company/company.py:352
 msgid "Dispatch"
 msgstr ""
 
@@ -24312,6 +24634,11 @@
 msgid "Distinct Item and Warehouse"
 msgstr ""
 
+#. Description of a DocType
+#: stock/doctype/serial_no/serial_no.json
+msgid "Distinct unit of an Item"
+msgstr ""
+
 #. Label of a Select field in DocType 'Subcontracting Order'
 #: subcontracting/doctype/subcontracting_order/subcontracting_order.json
 msgctxt "Subcontracting Order"
@@ -24358,7 +24685,7 @@
 msgid "Divorced"
 msgstr ""
 
-#: crm/report/lead_details/lead_details.js:42
+#: crm/report/lead_details/lead_details.js:41
 msgid "Do Not Contact"
 msgstr ""
 
@@ -24380,6 +24707,12 @@
 msgid "Do Not Explode"
 msgstr ""
 
+#. Label of a Check field in DocType 'Stock Settings'
+#: stock/doctype/stock_settings/stock_settings.json
+msgctxt "Stock Settings"
+msgid "Do Not Update Serial / Batch on Creation of Auto Bundle"
+msgstr ""
+
 #. Description of the 'Hide Currency Symbol' (Select) field in DocType 'Global
 #. Defaults'
 #: setup/doctype/global_defaults/global_defaults.json
@@ -24393,29 +24726,49 @@
 msgid "Do not update variants on save"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:683
+#: assets/doctype/asset/asset.js:800
 msgid "Do you really want to restore this scrapped asset?"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:669
+#: assets/doctype/asset/asset.js:788
 msgid "Do you really want to scrap this asset?"
 msgstr ""
 
-#: stock/doctype/delivery_trip/delivery_trip.js:134
+#: public/js/controllers/transaction.js:978
+msgid "Do you want to clear the selected {0}?"
+msgstr ""
+
+#: stock/doctype/delivery_trip/delivery_trip.js:155
 msgid "Do you want to notify all the customers by email?"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:196
+#: manufacturing/doctype/production_plan/production_plan.js:221
 msgid "Do you want to submit the material request"
 msgstr ""
 
+#. Label of a Data field in DocType 'Transaction Deletion Record Details'
+#: accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.json
+msgctxt "Transaction Deletion Record Details"
+msgid "DocField"
+msgstr ""
+
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:132
+msgid "DocType"
+msgstr ""
+
+#. Label of a Link field in DocType 'Transaction Deletion Record Details'
+#: accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.json
+msgctxt "Transaction Deletion Record Details"
+msgid "DocType"
+msgstr ""
+
 #. Label of a Link field in DocType 'Transaction Deletion Record Item'
 #: setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.json
 msgctxt "Transaction Deletion Record Item"
 msgid "DocType"
 msgstr ""
 
-#: setup/doctype/transaction_deletion_record/transaction_deletion_record.py:45
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.py:69
 msgid "DocTypes should not be added manually to the 'Excluded DocTypes' table. You are only allowed to remove entries from it."
 msgstr ""
 
@@ -24434,9 +24787,9 @@
 msgstr ""
 
 #: manufacturing/report/production_plan_summary/production_plan_summary.py:141
-#: manufacturing/report/production_planning_report/production_planning_report.js:43
+#: manufacturing/report/production_planning_report/production_planning_report.js:42
 #: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:102
-#: public/js/bank_reconciliation_tool/dialog_manager.js:104
+#: public/js/bank_reconciliation_tool/dialog_manager.js:111
 msgid "Document Name"
 msgstr ""
 
@@ -24454,15 +24807,15 @@
 
 #: manufacturing/report/production_plan_summary/production_plan_summary.py:134
 #: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:100
-#: public/js/bank_reconciliation_tool/dialog_manager.js:99
-#: public/js/bank_reconciliation_tool/dialog_manager.js:182
-#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:16
-#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:23
-#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:15
-#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:16
-#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:23
+#: public/js/bank_reconciliation_tool/dialog_manager.js:106
+#: public/js/bank_reconciliation_tool/dialog_manager.js:186
+#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:14
+#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:22
+#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:14
+#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:14
+#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:22
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js:14
-#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:23
+#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:22
 msgid "Document Type"
 msgstr ""
 
@@ -24508,11 +24861,11 @@
 msgid "Document Type "
 msgstr ""
 
-#: accounts/doctype/accounting_dimension/accounting_dimension.py:56
+#: accounts/doctype/accounting_dimension/accounting_dimension.py:60
 msgid "Document Type already used as a dimension"
 msgstr ""
 
-#: accounts/doctype/bank_transaction/bank_transaction.js:64
+#: accounts/doctype/bank_transaction/bank_transaction.js:59
 msgid "Document {0} successfully uncleared"
 msgstr ""
 
@@ -24522,7 +24875,7 @@
 msgid "Documents"
 msgstr ""
 
-#: accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py:200
+#: accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py:202
 msgid "Documents: {0} have deferred revenue/expense enabled for them. Cannot repost."
 msgstr ""
 
@@ -24559,7 +24912,13 @@
 #: erpnext_integrations/doctype/tally_migration/tally_migration.py:322
 #: erpnext_integrations/doctype/tally_migration/tally_migration.py:407
 #: erpnext_integrations/doctype/tally_migration/tally_migration.py:583
-#: public/js/utils/crm_activities.js:211
+#: public/js/utils/crm_activities.js:212
+msgid "Done"
+msgstr ""
+
+#. Label of a Check field in DocType 'Transaction Deletion Record Details'
+#: accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.json
+msgctxt "Transaction Deletion Record Details"
 msgid "Done"
 msgstr ""
 
@@ -24595,8 +24954,8 @@
 msgid "Double Declining Balance"
 msgstr ""
 
-#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:84
-#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:28
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:93
+#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:27
 msgid "Download"
 msgstr ""
 
@@ -24605,7 +24964,7 @@
 msgid "Download Backups"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:237
+#: public/js/utils/serial_no_batch_selector.js:241
 msgid "Download CSV Template"
 msgstr ""
 
@@ -24621,11 +24980,11 @@
 msgid "Download Materials Request Plan Section"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:60
+#: buying/doctype/request_for_quotation/request_for_quotation.js:70
 msgid "Download PDF"
 msgstr ""
 
-#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:28
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:31
 msgid "Download Template"
 msgstr ""
 
@@ -24681,18 +25040,17 @@
 msgid "Downtime Reason"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:80
-#: accounts/doctype/bank_clearance/bank_clearance.py:79
-#: accounts/doctype/journal_entry/journal_entry.js:298
+#: accounts/doctype/account/account_tree.js:84
+#: accounts/doctype/bank_clearance/bank_clearance.py:81
+#: templates/form_grid/bank_reconciliation_grid.html:16
 msgid "Dr"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting_list.js:6
+#: accounts/doctype/invoice_discounting/invoice_discounting_list.js:5
 #: accounts/doctype/payment_request/payment_request_list.js:5
-#: assets/doctype/asset/asset_list.js:35
+#: assets/doctype/asset/asset_list.js:25
 #: manufacturing/doctype/bom_creator/bom_creator_list.js:5
-#: setup/doctype/transaction_deletion_record/transaction_deletion_record_list.js:7
-#: stock/doctype/stock_entry/stock_entry_list.js:10
+#: stock/doctype/stock_entry/stock_entry_list.js:18
 msgid "Draft"
 msgstr ""
 
@@ -24889,13 +25247,6 @@
 msgid "Draft"
 msgstr ""
 
-#. Option for the 'Status' (Select) field in DocType 'Transaction Deletion
-#. Record'
-#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
-msgctxt "Transaction Deletion Record"
-msgid "Draft"
-msgstr ""
-
 #. Option for the 'Status' (Select) field in DocType 'Work Order'
 #: manufacturing/doctype/work_order/work_order.json
 msgctxt "Work Order"
@@ -24994,7 +25345,7 @@
 msgid "Due / Reference Date cannot be after {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:649
+#: accounts/doctype/payment_entry/payment_entry.js:795
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:40
 msgid "Due Date"
 msgstr ""
@@ -25076,14 +25427,14 @@
 msgid "Due Date cannot be before Posting / Supplier Invoice Date"
 msgstr ""
 
-#: controllers/accounts_controller.py:576
+#: controllers/accounts_controller.py:628
 msgid "Due Date is mandatory"
 msgstr ""
 
 #. Name of a DocType
 #. Label of a Card Break in the Receivables Workspace
 #: accounts/doctype/dunning/dunning.json
-#: accounts/doctype/sales_invoice/sales_invoice.js:155
+#: accounts/doctype/sales_invoice/sales_invoice.js:164
 #: accounts/workspace/receivables/receivables.json
 msgid "Dunning"
 msgstr ""
@@ -25160,7 +25511,7 @@
 msgid "Dunning Type"
 msgstr ""
 
-#: stock/doctype/item/item.js:135 stock/doctype/putaway_rule/putaway_rule.py:55
+#: stock/doctype/item/item.js:178 stock/doctype/putaway_rule/putaway_rule.py:55
 msgid "Duplicate"
 msgstr ""
 
@@ -25176,7 +25527,7 @@
 msgid "Duplicate Entry. Please check Authorization Rule {0}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:301
+#: assets/doctype/asset/asset.py:303
 msgid "Duplicate Finance Book"
 msgstr ""
 
@@ -25189,7 +25540,7 @@
 msgid "Duplicate POS Invoices found"
 msgstr ""
 
-#: projects/doctype/project/project.js:67
+#: projects/doctype/project/project.js:74
 msgid "Duplicate Project with Tasks"
 msgstr ""
 
@@ -25205,7 +25556,7 @@
 msgid "Duplicate item group found in the item group table"
 msgstr ""
 
-#: projects/doctype/project/project.js:146
+#: projects/doctype/project/project.js:174
 msgid "Duplicate project has been created"
 msgstr ""
 
@@ -25306,7 +25657,7 @@
 msgid "Earliest"
 msgstr ""
 
-#: stock/report/stock_balance/stock_balance.py:478
+#: stock/report/stock_balance/stock_balance.py:486
 msgid "Earliest Age"
 msgstr ""
 
@@ -25320,6 +25671,14 @@
 msgid "Edit"
 msgstr ""
 
+#: stock/page/warehouse_capacity_summary/warehouse_capacity_summary.html:37
+msgid "Edit Capacity"
+msgstr ""
+
+#: selling/page/point_of_sale/pos_item_cart.js:92
+msgid "Edit Cart"
+msgstr ""
+
 #: public/js/utils/serial_no_batch_selector.js:30
 msgid "Edit Full Form"
 msgstr ""
@@ -25328,11 +25687,11 @@
 msgid "Edit Not Allowed"
 msgstr ""
 
-#: public/js/utils/crm_activities.js:182
+#: public/js/utils/crm_activities.js:184
 msgid "Edit Note"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.js:370
+#: stock/doctype/delivery_note/delivery_note.js:418
 msgid "Edit Posting Date and Time"
 msgstr ""
 
@@ -25390,15 +25749,15 @@
 msgid "Edit Posting Date and Time"
 msgstr ""
 
-#: public/js/bom_configurator/bom_configurator.bundle.js:366
+#: public/js/bom_configurator/bom_configurator.bundle.js:405
 msgid "Edit Qty"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_past_order_summary.js:238
+#: selling/page/point_of_sale/pos_past_order_summary.js:247
 msgid "Edit Receipt"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:717
+#: selling/page/point_of_sale/pos_item_cart.js:745
 msgid "Editing {0} is not allowed as per POS Profile settings"
 msgstr ""
 
@@ -25414,7 +25773,7 @@
 msgid "Educational Qualification"
 msgstr ""
 
-#: accounts/doctype/promotional_scheme/promotional_scheme.py:141
+#: accounts/doctype/promotional_scheme/promotional_scheme.py:143
 msgid "Either 'Selling' or 'Buying' must be selected"
 msgstr ""
 
@@ -25468,9 +25827,9 @@
 msgid "Electronic Invoice Register"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:231
+#: buying/doctype/request_for_quotation/request_for_quotation.js:249
 #: crm/report/lead_details/lead_details.py:41
-#: selling/page/point_of_sale/pos_item_cart.js:874
+#: selling/page/point_of_sale/pos_item_cart.js:904
 msgid "Email"
 msgstr ""
 
@@ -25624,7 +25983,7 @@
 msgid "Email Group"
 msgstr ""
 
-#: public/js/utils/contact_address_quick_entry.js:39
+#: public/js/utils/contact_address_quick_entry.js:42
 msgid "Email Id"
 msgstr ""
 
@@ -25652,7 +26011,7 @@
 msgid "Email Sent"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.py:289
+#: buying/doctype/request_for_quotation/request_for_quotation.py:313
 msgid "Email Sent to Supplier {0}"
 msgstr ""
 
@@ -25680,15 +26039,15 @@
 msgid "Email Template"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_past_order_summary.js:269
+#: selling/page/point_of_sale/pos_past_order_summary.js:278
 msgid "Email not sent to {0} (unsubscribed / disabled)"
 msgstr ""
 
-#: stock/doctype/shipment/shipment.js:153
+#: stock/doctype/shipment/shipment.js:174
 msgid "Email or Phone/Mobile of the Contact are mandatory to continue."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_past_order_summary.js:273
+#: selling/page/point_of_sale/pos_past_order_summary.js:283
 msgid "Email sent successfully."
 msgstr ""
 
@@ -25738,7 +26097,7 @@
 #: projects/doctype/timesheet/timesheet_calendar.js:28
 #: projects/report/daily_timesheet_summary/daily_timesheet_summary.py:27
 #: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:10
-#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:50
+#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:45
 #: quality_management/doctype/non_conformance/non_conformance.json
 #: setup/doctype/company/company.json setup/doctype/employee/employee.json
 #: setup/doctype/sales_person/sales_person_tree.js:7
@@ -25941,7 +26300,7 @@
 msgid "Empty"
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1042
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1044
 msgid "Enable Allow Partial Reservation in the Stock Settings to reserve partial stock."
 msgstr ""
 
@@ -25979,6 +26338,12 @@
 msgid "Enable Common Party Accounting"
 msgstr ""
 
+#. Label of a Check field in DocType 'Selling Settings'
+#: selling/doctype/selling_settings/selling_settings.json
+msgctxt "Selling Settings"
+msgid "Enable Cut-Off Date on Bulk Delivery Note Creation"
+msgstr ""
+
 #. Label of a Check field in DocType 'Item'
 #: stock/doctype/item/item.json
 msgctxt "Item"
@@ -26051,6 +26416,13 @@
 msgid "Enable YouTube Tracking"
 msgstr ""
 
+#. Description of the 'Consider Rejected Warehouses' (Check) field in DocType
+#. 'Pick List'
+#: stock/doctype/pick_list/pick_list.json
+msgctxt "Pick List"
+msgid "Enable it if users want to consider rejected materials to dispatch."
+msgstr ""
+
 #: support/doctype/service_level_agreement/service_level_agreement.js:34
 msgid "Enable to apply SLA on every {0}"
 msgstr ""
@@ -26130,14 +26502,14 @@
 msgid "Encashment Date"
 msgstr ""
 
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:41
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:41
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:49
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:49
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.js:23
-#: accounts/report/payment_ledger/payment_ledger.js:24
-#: assets/report/fixed_asset_register/fixed_asset_register.js:75
+#: accounts/report/payment_ledger/payment_ledger.js:23
+#: assets/report/fixed_asset_register/fixed_asset_register.js:74
 #: projects/report/project_summary/project_summary.py:74
-#: public/js/financial_statements.js:191 public/js/setup_wizard.js:42
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:24
+#: public/js/financial_statements.js:200 public/js/setup_wizard.js:44
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:23
 #: templates/pages/projects.html:47
 msgid "End Date"
 msgstr ""
@@ -26206,6 +26578,10 @@
 msgid "End Date cannot be before Start Date."
 msgstr ""
 
+#: manufacturing/doctype/workstation/workstation.js:206
+msgid "End Time"
+msgstr ""
+
 #. Label of a Datetime field in DocType 'Call Log'
 #: telephony/doctype/call_log/call_log.json
 msgctxt "Call Log"
@@ -26230,15 +26606,15 @@
 msgid "End Time"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.js:241
+#: stock/doctype/stock_entry/stock_entry.js:268
 msgid "End Transit"
 msgstr ""
 
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:64
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:56
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:80
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:64
 #: accounts/report/financial_ratios/financial_ratios.js:25
-#: assets/report/fixed_asset_register/fixed_asset_register.js:90
-#: public/js/financial_statements.js:206
+#: assets/report/fixed_asset_register/fixed_asset_register.js:89
+#: public/js/financial_statements.js:215
 msgid "End Year"
 msgstr ""
 
@@ -26246,7 +26622,7 @@
 msgid "End Year cannot be before Start Year"
 msgstr ""
 
-#: accounts/doctype/process_deferred_accounting/process_deferred_accounting.js:43
+#: accounts/doctype/process_deferred_accounting/process_deferred_accounting.js:48
 #: accounts/doctype/process_deferred_accounting/process_deferred_accounting.py:37
 msgid "End date cannot be before start date"
 msgstr ""
@@ -26270,6 +26646,8 @@
 msgid "End of the current subscription period"
 msgstr ""
 
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:13
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:23
 #: manufacturing/report/bom_stock_report/bom_stock_report.py:31
 msgid "Enough Parts to Build"
 msgstr ""
@@ -26284,27 +26662,29 @@
 msgid "Enter API key in Google Settings."
 msgstr ""
 
-#: setup/doctype/employee/employee.js:102
+#: setup/doctype/employee/employee.js:103
 msgid "Enter First and Last name of Employee, based on Which Full Name will be updated. IN transactions, it will be Full Name which will be fetched."
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:208
+#: public/js/utils/serial_no_batch_selector.js:211
 msgid "Enter Serial Nos"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:313
+#: stock/doctype/material_request/material_request.js:383
 msgid "Enter Supplier"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:280
+#: manufacturing/doctype/job_card/job_card.js:320
+#: manufacturing/doctype/workstation/workstation.js:189
+#: manufacturing/doctype/workstation/workstation.js:236
 msgid "Enter Value"
 msgstr ""
 
-#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:91
+#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:96
 msgid "Enter Visit Details"
 msgstr ""
 
-#: manufacturing/doctype/routing/routing.js:77
+#: manufacturing/doctype/routing/routing.js:78
 msgid "Enter a name for Routing."
 msgstr ""
 
@@ -26316,31 +26696,31 @@
 msgid "Enter a name for this Holiday List."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:499
+#: selling/page/point_of_sale/pos_payment.js:527
 msgid "Enter amount to be redeemed."
 msgstr ""
 
-#: stock/doctype/item/item.js:804
+#: stock/doctype/item/item.js:882
 msgid "Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:877
+#: selling/page/point_of_sale/pos_item_cart.js:907
 msgid "Enter customer's email"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:882
+#: selling/page/point_of_sale/pos_item_cart.js:913
 msgid "Enter customer's phone number"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:345
+#: assets/doctype/asset/asset.py:347
 msgid "Enter depreciation details"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:382
+#: selling/page/point_of_sale/pos_item_cart.js:389
 msgid "Enter discount percentage."
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:211
+#: public/js/utils/serial_no_batch_selector.js:214
 msgid "Enter each serial no in a new line"
 msgstr ""
 
@@ -26354,7 +26734,7 @@
 msgid "Enter the Bank Guarantee Number before submitting."
 msgstr ""
 
-#: manufacturing/doctype/routing/routing.js:82
+#: manufacturing/doctype/routing/routing.js:83
 msgid ""
 "Enter the Operation, the table will fetch the Operation details like Hourly Rate, Workstation automatically.\n"
 "\n"
@@ -26369,19 +26749,19 @@
 msgid "Enter the name of the bank or lending institution before submitting."
 msgstr ""
 
-#: stock/doctype/item/item.js:824
+#: stock/doctype/item/item.js:908
 msgid "Enter the opening stock units."
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:730
+#: manufacturing/doctype/bom/bom.js:761
 msgid "Enter the quantity of the Item that will be manufactured from this Bill of Materials."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:817
+#: manufacturing/doctype/work_order/work_order.js:878
 msgid "Enter the quantity to manufacture. Raw material Items will be fetched only when this is set."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:392
+#: selling/page/point_of_sale/pos_payment.js:411
 msgid "Enter {0} amount."
 msgstr ""
 
@@ -26396,7 +26776,7 @@
 msgid "Entity"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:205
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:203
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:123
 msgid "Entity Type"
 msgstr ""
@@ -26421,8 +26801,8 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:102
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:150
-#: accounts/report/account_balance/account_balance.js:30
-#: accounts/report/account_balance/account_balance.js:46
+#: accounts/report/account_balance/account_balance.js:29
+#: accounts/report/account_balance/account_balance.js:45
 #: accounts/report/balance_sheet/balance_sheet.py:242
 #: setup/setup_wizard/operations/install_fixtures.py:259
 msgid "Equity"
@@ -26447,8 +26827,8 @@
 msgid "Equity/Liability Account"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:410
-#: manufacturing/doctype/job_card/job_card.py:773
+#: accounts/doctype/payment_request/payment_request.py:413
+#: manufacturing/doctype/job_card/job_card.py:780
 #: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:197
 msgid "Error"
 msgstr ""
@@ -26513,6 +26893,16 @@
 msgid "Error Log"
 msgstr ""
 
+#. Label of a Long Text field in DocType 'Transaction Deletion Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Error Log"
+msgstr ""
+
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:127
+msgid "Error Message"
+msgstr ""
+
 #. Label of a Text field in DocType 'Period Closing Voucher'
 #: accounts/doctype/period_closing_voucher/period_closing_voucher.json
 msgctxt "Period Closing Voucher"
@@ -26535,7 +26925,7 @@
 msgid "Error occurred while parsing Chart of Accounts: Please make sure that no two accounts have the same name"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:406
+#: assets/doctype/asset/depreciation.py:404
 msgid "Error while posting depreciation entries"
 msgstr ""
 
@@ -26543,11 +26933,15 @@
 msgid "Error while processing deferred accounting for {0}"
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.py:389
+#: stock/doctype/repost_item_valuation/repost_item_valuation.py:404
 msgid "Error while reposting item valuation"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:720
+#: templates/includes/footer/footer_extension.html:29
+msgid "Error: Not a valid id?"
+msgstr ""
+
+#: accounts/doctype/payment_entry/payment_entry.js:883
 msgid "Error: {0} is mandatory field"
 msgstr ""
 
@@ -26616,7 +27010,7 @@
 msgid "Example: ABCD.#####. If series is set and Batch No is not mentioned in transactions, then automatic batch number will be created based on this series. If you always want to explicitly mention Batch No for this item, leave this blank. Note: this setting will take priority over the Naming Series Prefix in Stock Settings."
 msgstr ""
 
-#: stock/stock_ledger.py:1976
+#: stock/stock_ledger.py:1983
 msgid "Example: Serial No {0} reserved in {1}."
 msgstr ""
 
@@ -26626,11 +27020,11 @@
 msgid "Exception Budget Approver Role"
 msgstr ""
 
-#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:56
+#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:55
 msgid "Excess Materials Consumed"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:869
+#: manufacturing/doctype/job_card/job_card.py:876
 msgid "Excess Transfer"
 msgstr ""
 
@@ -26654,7 +27048,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:73
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:97
-#: setup/doctype/company/company.py:517
+#: setup/doctype/company/company.py:516
 msgid "Exchange Gain/Loss"
 msgstr ""
 
@@ -26676,8 +27070,8 @@
 msgid "Exchange Gain/Loss"
 msgstr ""
 
-#: controllers/accounts_controller.py:1313
-#: controllers/accounts_controller.py:1394
+#: controllers/accounts_controller.py:1382
+#: controllers/accounts_controller.py:1463
 msgid "Exchange Gain/Loss amount has been booked through {0}"
 msgstr ""
 
@@ -26861,7 +27255,7 @@
 msgid "Excise Entry"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.js:1060
+#: stock/doctype/stock_entry/stock_entry.js:1213
 msgid "Excise Invoice"
 msgstr ""
 
@@ -26910,9 +27304,9 @@
 msgid "Exit Interview Held On"
 msgstr ""
 
-#: public/js/bom_configurator/bom_configurator.bundle.js:138
-#: public/js/bom_configurator/bom_configurator.bundle.js:179
-#: public/js/setup_wizard.js:168
+#: public/js/bom_configurator/bom_configurator.bundle.js:140
+#: public/js/bom_configurator/bom_configurator.bundle.js:183
+#: public/js/setup_wizard.js:181
 msgid "Expand All"
 msgstr ""
 
@@ -26970,11 +27364,13 @@
 msgid "Expected Delivery Date"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:316
+#: selling/doctype/sales_order/sales_order.py:319
 msgid "Expected Delivery Date should be after Sales Order Date"
 msgstr ""
 
+#: manufacturing/doctype/workstation/workstation_job_card.html:44
 #: projects/report/delayed_tasks_summary/delayed_tasks_summary.py:104
+#: templates/pages/task_info.html:64
 msgid "Expected End Date"
 msgstr ""
 
@@ -27000,7 +27396,7 @@
 msgid "Expected End Date should be less than or equal to parent task's Expected End Date {0}."
 msgstr ""
 
-#: public/js/projects/timer.js:12
+#: public/js/projects/timer.js:16
 msgid "Expected Hrs"
 msgstr ""
 
@@ -27010,7 +27406,9 @@
 msgid "Expected Hrs"
 msgstr ""
 
+#: manufacturing/doctype/workstation/workstation_job_card.html:40
 #: projects/report/delayed_tasks_summary/delayed_tasks_summary.py:98
+#: templates/pages/task_info.html:59
 msgid "Expected Start Date"
 msgstr ""
 
@@ -27060,8 +27458,8 @@
 msgid "Expected Value After Useful Life"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:29
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:81
+#: accounts/report/account_balance/account_balance.js:28
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:89
 #: accounts/report/profit_and_loss_statement/profit_and_loss_statement.py:174
 #: accounts/report/profitability_analysis/profitability_analysis.py:189
 msgid "Expense"
@@ -27092,11 +27490,11 @@
 msgid "Expense"
 msgstr ""
 
-#: controllers/stock_controller.py:359
+#: controllers/stock_controller.py:541
 msgid "Expense / Difference account ({0}) must be a 'Profit or Loss' account"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:47
+#: accounts/report/account_balance/account_balance.js:46
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:248
 msgid "Expense Account"
 msgstr ""
@@ -27179,7 +27577,7 @@
 msgid "Expense Account"
 msgstr ""
 
-#: controllers/stock_controller.py:339
+#: controllers/stock_controller.py:521
 msgid "Expense Account Missing"
 msgstr ""
 
@@ -27196,13 +27594,13 @@
 msgid "Expense Head"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:490
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:510
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:528
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:494
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:514
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:532
 msgid "Expense Head Changed"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:552
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:556
 msgid "Expense account is mandatory for item {0}"
 msgstr ""
 
@@ -27213,7 +27611,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:46
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:65
-#: accounts/report/account_balance/account_balance.js:48
+#: accounts/report/account_balance/account_balance.js:49
 msgid "Expenses Included In Asset Valuation"
 msgstr ""
 
@@ -27225,7 +27623,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:49
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:69
-#: accounts/report/account_balance/account_balance.js:49
+#: accounts/report/account_balance/account_balance.js:51
 msgid "Expenses Included In Valuation"
 msgstr ""
 
@@ -27236,8 +27634,8 @@
 msgstr ""
 
 #: buying/doctype/supplier_quotation/supplier_quotation_list.js:9
-#: selling/doctype/quotation/quotation_list.js:35
-#: stock/doctype/batch/batch_list.js:9 stock/doctype/item/item_list.js:10
+#: selling/doctype/quotation/quotation_list.js:34
+#: stock/doctype/batch/batch_list.js:13 stock/doctype/item/item_list.js:18
 msgid "Expired"
 msgstr ""
 
@@ -27259,7 +27657,7 @@
 msgid "Expired"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.js:316
+#: stock/doctype/stock_entry/stock_entry.js:362
 msgid "Expired Batches"
 msgstr ""
 
@@ -27329,11 +27727,11 @@
 msgid "Export Data"
 msgstr ""
 
-#: regional/report/electronic_invoice_register/electronic_invoice_register.js:35
+#: regional/report/electronic_invoice_register/electronic_invoice_register.js:34
 msgid "Export E-Invoices"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:106
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:93
 msgid "Export Errored Rows"
 msgstr ""
 
@@ -27425,7 +27823,7 @@
 msgid "FIFO Stock Queue (qty, rate)"
 msgstr ""
 
-#. Label of a Text field in DocType 'Stock Ledger Entry'
+#. Label of a Long Text field in DocType 'Stock Ledger Entry'
 #: stock/doctype/stock_ledger_entry/stock_ledger_entry.json
 msgctxt "Stock Ledger Entry"
 msgid "FIFO Stock Queue (qty, rate)"
@@ -27437,7 +27835,8 @@
 msgid "FIFO/LIFO Queue"
 msgstr ""
 
-#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:62
+#: accounts/doctype/payment_request/payment_request_list.js:16
+#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:68
 #: manufacturing/doctype/bom_creator/bom_creator_list.js:13
 msgid "Failed"
 msgstr ""
@@ -27550,7 +27949,14 @@
 msgid "Failed"
 msgstr ""
 
-#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js:9
+#. Option for the 'Status' (Select) field in DocType 'Transaction Deletion
+#. Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Failed"
+msgstr ""
+
+#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js:17
 msgid "Failed Entries"
 msgstr ""
 
@@ -27585,11 +27991,11 @@
 msgid "Failed to setup defaults"
 msgstr ""
 
-#: setup/doctype/company/company.py:699
+#: setup/doctype/company/company.py:698
 msgid "Failed to setup defaults for country {0}. Please contact support."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:513
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:467
 msgid "Failure"
 msgstr ""
 
@@ -27605,6 +28011,10 @@
 msgid "Failure Description"
 msgstr ""
 
+#: accounts/doctype/payment_request/payment_request.js:29
+msgid "Failure: {0}"
+msgstr ""
+
 #. Label of a Small Text field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
@@ -27666,7 +28076,7 @@
 msgid "Fees"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:332
+#: public/js/utils/serial_no_batch_selector.js:338
 msgid "Fetch Based On"
 msgstr ""
 
@@ -27676,7 +28086,7 @@
 msgid "Fetch Customers"
 msgstr ""
 
-#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:50
+#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:56
 msgid "Fetch Data"
 msgstr ""
 
@@ -27684,7 +28094,7 @@
 msgid "Fetch Items from Warehouse"
 msgstr ""
 
-#: accounts/doctype/dunning/dunning.js:60
+#: accounts/doctype/dunning/dunning.js:61
 msgid "Fetch Overdue Payments"
 msgstr ""
 
@@ -27692,8 +28102,8 @@
 msgid "Fetch Subscription Updates"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.js:952
-#: accounts/doctype/sales_invoice/sales_invoice.js:954
+#: accounts/doctype/sales_invoice/sales_invoice.js:1028
+#: accounts/doctype/sales_invoice/sales_invoice.js:1030
 msgid "Fetch Timesheet"
 msgstr ""
 
@@ -27703,8 +28113,8 @@
 msgid "Fetch Value From"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:252
-#: stock/doctype/stock_entry/stock_entry.js:554
+#: stock/doctype/material_request/material_request.js:318
+#: stock/doctype/stock_entry/stock_entry.js:640
 msgid "Fetch exploded BOM (including sub-assemblies)"
 msgstr ""
 
@@ -27715,11 +28125,20 @@
 msgid "Fetch items based on Default Supplier."
 msgstr ""
 
-#: accounts/doctype/dunning/dunning.js:131
-#: public/js/controllers/transaction.js:1083
+#: accounts/doctype/dunning/dunning.js:135
+#: public/js/controllers/transaction.js:1138
 msgid "Fetching exchange rates ..."
 msgstr ""
 
+#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:72
+msgid "Fetching..."
+msgstr ""
+
+#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:106
+#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:155
+msgid "Field"
+msgstr ""
+
 #. Label of a Select field in DocType 'POS Search Fields'
 #: accounts/doctype/pos_search_fields/pos_search_fields.json
 msgctxt "POS Search Fields"
@@ -27793,8 +28212,8 @@
 msgid "File to Rename"
 msgstr ""
 
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:17
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:17
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:16
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:16
 #: public/js/financial_statements.js:167
 msgid "Filter Based On"
 msgstr ""
@@ -27805,7 +28224,7 @@
 msgid "Filter Duration (Months)"
 msgstr ""
 
-#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:46
+#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:45
 msgid "Filter Total Zero Qty"
 msgstr ""
 
@@ -27831,8 +28250,8 @@
 msgid "Filter on Payment"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:696
-#: public/js/bank_reconciliation_tool/dialog_manager.js:192
+#: accounts/doctype/payment_entry/payment_entry.js:858
+#: public/js/bank_reconciliation_tool/dialog_manager.js:196
 msgid "Filters"
 msgstr ""
 
@@ -27891,13 +28310,13 @@
 #: accounts/report/accounts_receivable/accounts_receivable.js:24
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:56
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js:48
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:80
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:32
-#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:52
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:104
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:31
+#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:51
 #: accounts/report/general_ledger/general_ledger.js:16
-#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:32
+#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:31
 #: accounts/report/trial_balance/trial_balance.js:70
-#: assets/report/fixed_asset_register/fixed_asset_register.js:49
+#: assets/report/fixed_asset_register/fixed_asset_register.js:48
 #: public/js/financial_statements.js:161
 msgid "Finance Book"
 msgstr ""
@@ -28023,14 +28442,14 @@
 
 #. Title of an Onboarding Step
 #. Label of a Card Break in the Financial Reports Workspace
-#: accounts/doctype/account/account_tree.js:158
+#: accounts/doctype/account/account_tree.js:234
 #: accounts/onboarding_step/financial_statements/financial_statements.json
 #: accounts/workspace/financial_reports/financial_reports.json
 #: public/js/financial_statements.js:129
 msgid "Financial Statements"
 msgstr ""
 
-#: public/js/setup_wizard.js:40
+#: public/js/setup_wizard.js:42
 msgid "Financial Year Begins On"
 msgstr ""
 
@@ -28041,13 +28460,13 @@
 msgid "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) "
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:627
-#: manufacturing/doctype/work_order/work_order.js:642
-#: manufacturing/doctype/work_order/work_order.js:651
+#: manufacturing/doctype/work_order/work_order.js:675
+#: manufacturing/doctype/work_order/work_order.js:690
+#: manufacturing/doctype/work_order/work_order.js:699
 msgid "Finish"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:176
+#: buying/doctype/purchase_order/purchase_order.js:182
 #: manufacturing/report/bom_variance_report/bom_variance_report.py:43
 #: manufacturing/report/production_plan_summary/production_plan_summary.py:119
 msgid "Finished Good"
@@ -28083,7 +28502,7 @@
 msgid "Finished Good BOM"
 msgstr ""
 
-#: public/js/utils.js:698
+#: public/js/utils.js:768
 msgid "Finished Good Item"
 msgstr ""
 
@@ -28097,7 +28516,7 @@
 msgid "Finished Good Item Code"
 msgstr ""
 
-#: public/js/utils.js:715
+#: public/js/utils.js:786
 msgid "Finished Good Item Qty"
 msgstr ""
 
@@ -28107,15 +28526,15 @@
 msgid "Finished Good Item Quantity"
 msgstr ""
 
-#: controllers/accounts_controller.py:3204
+#: controllers/accounts_controller.py:3295
 msgid "Finished Good Item is not specified for service item {0}"
 msgstr ""
 
-#: controllers/accounts_controller.py:3219
+#: controllers/accounts_controller.py:3310
 msgid "Finished Good Item {0} Qty can not be zero"
 msgstr ""
 
-#: controllers/accounts_controller.py:3213
+#: controllers/accounts_controller.py:3304
 msgid "Finished Good Item {0} must be a sub-contracted item"
 msgstr ""
 
@@ -28159,15 +28578,15 @@
 msgid "Finished Good {0} must be a sub-contracted item."
 msgstr ""
 
-#: setup/doctype/company/company.py:262
+#: setup/doctype/company/company.py:261
 msgid "Finished Goods"
 msgstr ""
 
-#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:25
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:30
 msgid "Finished Goods Warehouse"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1264
+#: stock/doctype/stock_entry/stock_entry.py:1273
 msgid "Finished Item {0} does not match with Work Order {1}"
 msgstr ""
 
@@ -28254,16 +28673,17 @@
 
 #. Name of a DocType
 #: accounts/doctype/fiscal_year/fiscal_year.json
-#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:17
+#: accounts/notification/notification_for_new_fiscal_year/notification_for_new_fiscal_year.html:1
+#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:16
 #: accounts/report/profitability_analysis/profitability_analysis.js:38
 #: accounts/report/trial_balance/trial_balance.js:16
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.js:16
-#: manufacturing/report/job_card_summary/job_card_summary.js:17
-#: public/js/purchase_trends_filters.js:28 public/js/sales_trends_filters.js:48
+#: manufacturing/report/job_card_summary/job_card_summary.js:16
+#: public/js/purchase_trends_filters.js:28 public/js/sales_trends_filters.js:44
 #: regional/report/irs_1099/irs_1099.js:17
-#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:16
-#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:16
-#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:16
+#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:15
+#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:15
+#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:15
 msgid "Fiscal Year"
 msgstr ""
 
@@ -28341,7 +28761,7 @@
 msgid "Fixed"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:50
+#: accounts/report/account_balance/account_balance.js:52
 msgid "Fixed Asset"
 msgstr ""
 
@@ -28415,11 +28835,23 @@
 msgid "Fleet Manager"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_selector.js:303
+#. Label of a Tab Break field in DocType 'Plant Floor'
+#: manufacturing/doctype/plant_floor/plant_floor.json
+msgctxt "Plant Floor"
+msgid "Floor"
+msgstr ""
+
+#. Label of a Data field in DocType 'Plant Floor'
+#: manufacturing/doctype/plant_floor/plant_floor.json
+msgctxt "Plant Floor"
+msgid "Floor Name"
+msgstr ""
+
+#: selling/page/point_of_sale/pos_item_selector.js:300
 msgid "Focus on Item Group filter"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_selector.js:294
+#: selling/page/point_of_sale/pos_item_selector.js:291
 msgid "Focus on search input"
 msgstr ""
 
@@ -28439,15 +28871,15 @@
 msgid "Following Material Requests have been raised automatically based on Item's re-order level"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:740
+#: selling/doctype/customer/customer.py:751
 msgid "Following fields are mandatory to create address:"
 msgstr ""
 
-#: controllers/buying_controller.py:906
+#: controllers/buying_controller.py:932
 msgid "Following item {0} is not marked as {1} item. You can enable them as {1} item from its Item master"
 msgstr ""
 
-#: controllers/buying_controller.py:902
+#: controllers/buying_controller.py:928
 msgid "Following items {0} are not marked as {1} item. You can enable them as {1} item from its Item master"
 msgstr ""
 
@@ -28455,7 +28887,7 @@
 msgid "For"
 msgstr ""
 
-#: public/js/utils/sales_common.js:274
+#: public/js/utils/sales_common.js:309
 msgid "For 'Product Bundle' items, Warehouse, Serial No and Batch No will be considered from the 'Packing List' table. If Warehouse and Batch No are same for all packing items for any 'Product Bundle' item, those values can be entered in the main Item table, values will be copied to 'Packing List' table."
 msgstr ""
 
@@ -28471,11 +28903,16 @@
 msgid "For Company"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:293
+#: stock/doctype/material_request/material_request.js:361
 msgid "For Default Supplier (Optional)"
 msgstr ""
 
-#: controllers/stock_controller.py:770
+#: manufacturing/doctype/plant_floor/plant_floor.js:159
+#: manufacturing/doctype/plant_floor/plant_floor.js:183
+msgid "For Item"
+msgstr ""
+
+#: controllers/stock_controller.py:953
 msgid "For Item {0} cannot be received more than {1} qty against the {2} {3}"
 msgstr ""
 
@@ -28485,7 +28922,7 @@
 msgid "For Job Card"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:160
+#: manufacturing/doctype/job_card/job_card.js:175
 msgid "For Operation"
 msgstr ""
 
@@ -28510,23 +28947,28 @@
 msgid "For Production"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:657
+#: stock/doctype/stock_entry/stock_entry.py:612
 msgid "For Quantity (Manufactured Qty) is mandatory"
 msgstr ""
 
+#: controllers/accounts_controller.py:1070
+msgid "For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}"
+msgstr ""
+
 #. Label of a Check field in DocType 'Currency Exchange'
 #: setup/doctype/currency_exchange/currency_exchange.json
 msgctxt "Currency Exchange"
 msgid "For Selling"
 msgstr ""
 
-#: accounts/doctype/payment_order/payment_order.js:98
+#: accounts/doctype/payment_order/payment_order.js:106
 msgid "For Supplier"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:331
-#: selling/doctype/sales_order/sales_order.js:808
-#: stock/doctype/material_request/material_request.js:247
+#: manufacturing/doctype/production_plan/production_plan.js:358
+#: selling/doctype/sales_order/sales_order.js:933
+#: stock/doctype/material_request/material_request.js:310
+#: templates/form_grid/material_request_grid.html:36
 msgid "For Warehouse"
 msgstr ""
 
@@ -28536,11 +28978,11 @@
 msgid "For Warehouse"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:427
+#: manufacturing/doctype/work_order/work_order.py:438
 msgid "For Warehouse is required before Submit"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:116
+#: public/js/utils/serial_no_batch_selector.js:119
 msgid "For Work Order"
 msgstr ""
 
@@ -28582,15 +29024,15 @@
 msgid "For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:384
+#: stock/doctype/stock_entry/stock_entry.py:339
 msgid "For job card {0}, you can only make the 'Material Transfer for Manufacture' type stock entry"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:1523
+#: manufacturing/doctype/work_order/work_order.py:1537
 msgid "For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1302
+#: stock/doctype/stock_entry/stock_entry.py:1311
 msgid "For quantity {0} should not be greater than allowed quantity {1}"
 msgstr ""
 
@@ -28600,12 +29042,12 @@
 msgid "For reference"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1229
+#: accounts/doctype/payment_entry/payment_entry.js:1477
 #: public/js/controllers/accounts.js:182
 msgid "For row {0} in {1}. To include {2} in Item rate, rows {3} must also be included"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:1498
+#: manufacturing/doctype/production_plan/production_plan.py:1520
 msgid "For row {0}: Enter Planned Qty"
 msgstr ""
 
@@ -28613,6 +29055,11 @@
 msgid "For the 'Apply Rule On Other' condition the field {0} is mandatory"
 msgstr ""
 
+#. Description of a DocType
+#: stock/doctype/item_customer_detail/item_customer_detail.json
+msgid "For the convenience of customers, these codes can be used in print formats like Invoices and Delivery Notes"
+msgstr ""
+
 #. Label of a shortcut in the Manufacturing Workspace
 #: manufacturing/workspace/manufacturing/manufacturing.json
 msgid "Forecasting"
@@ -28795,7 +29242,7 @@
 msgid "Friday"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.js:957
+#: accounts/doctype/sales_invoice/sales_invoice.js:1033
 #: templates/pages/projects.html:67
 msgid "From"
 msgstr ""
@@ -28847,13 +29294,13 @@
 msgid "From Customer"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:645
-#: accounts/doctype/payment_entry/payment_entry.js:650
+#: accounts/doctype/payment_entry/payment_entry.js:789
+#: accounts/doctype/payment_entry/payment_entry.js:796
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js:16
 #: accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.js:16
 #: accounts/report/bank_clearance_summary/bank_clearance_summary.js:8
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:16
-#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:38
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:15
+#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:37
 #: accounts/report/financial_ratios/financial_ratios.js:41
 #: accounts/report/general_ledger/general_ledger.js:22
 #: accounts/report/general_ledger/general_ledger.py:66
@@ -28861,77 +29308,77 @@
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:8
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.js:8
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:16
-#: accounts/report/pos_register/pos_register.js:17
+#: accounts/report/pos_register/pos_register.js:16
 #: accounts/report/pos_register/pos_register.py:114
 #: accounts/report/profitability_analysis/profitability_analysis.js:59
 #: accounts/report/purchase_register/purchase_register.js:8
 #: accounts/report/sales_payment_summary/sales_payment_summary.js:7
 #: accounts/report/sales_register/sales_register.js:8
-#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:16
-#: accounts/report/tax_withholding_details/tax_withholding_details.js:47
-#: accounts/report/tds_computation_summary/tds_computation_summary.js:47
+#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:15
+#: accounts/report/tax_withholding_details/tax_withholding_details.js:46
+#: accounts/report/tds_computation_summary/tds_computation_summary.js:46
 #: accounts/report/trial_balance/trial_balance.js:37
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.js:37
-#: accounts/report/voucher_wise_balance/voucher_wise_balance.js:15
-#: buying/report/procurement_tracker/procurement_tracker.js:28
-#: buying/report/purchase_analytics/purchase_analytics.js:36
-#: buying/report/purchase_order_analysis/purchase_order_analysis.js:18
-#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:18
-#: buying/report/subcontract_order_summary/subcontract_order_summary.js:16
-#: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js:23
-#: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js:23
+#: accounts/report/voucher_wise_balance/voucher_wise_balance.js:14
+#: buying/report/procurement_tracker/procurement_tracker.js:27
+#: buying/report/purchase_analytics/purchase_analytics.js:35
+#: buying/report/purchase_order_analysis/purchase_order_analysis.js:17
+#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:17
+#: buying/report/subcontract_order_summary/subcontract_order_summary.js:15
+#: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js:22
+#: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js:22
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:16
 #: crm/report/campaign_efficiency/campaign_efficiency.js:7
-#: crm/report/first_response_time_for_opportunity/first_response_time_for_opportunity.js:9
-#: crm/report/lead_conversion_time/lead_conversion_time.js:9
-#: crm/report/lead_details/lead_details.js:17
+#: crm/report/first_response_time_for_opportunity/first_response_time_for_opportunity.js:8
+#: crm/report/lead_conversion_time/lead_conversion_time.js:8
+#: crm/report/lead_details/lead_details.js:16
 #: crm/report/lead_owner_efficiency/lead_owner_efficiency.js:7
-#: crm/report/lost_opportunity/lost_opportunity.js:17
-#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:23
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:16
-#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:16
-#: manufacturing/report/downtime_analysis/downtime_analysis.js:8
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:17
-#: manufacturing/report/process_loss_report/process_loss_report.js:30
-#: manufacturing/report/production_analytics/production_analytics.js:17
-#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.js:8
-#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:16
+#: crm/report/lost_opportunity/lost_opportunity.js:16
+#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:22
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:15
+#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:15
+#: manufacturing/report/downtime_analysis/downtime_analysis.js:7
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:16
+#: manufacturing/report/process_loss_report/process_loss_report.js:29
+#: manufacturing/report/production_analytics/production_analytics.js:16
+#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.js:7
+#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:15
 #: projects/report/daily_timesheet_summary/daily_timesheet_summary.js:8
-#: projects/report/delayed_tasks_summary/delayed_tasks_summary.js:9
+#: projects/report/delayed_tasks_summary/delayed_tasks_summary.js:8
 #: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:28
-#: public/js/stock_analytics.js:47
-#: regional/report/electronic_invoice_register/electronic_invoice_register.js:9
-#: regional/report/uae_vat_201/uae_vat_201.js:17
-#: regional/report/vat_audit_report/vat_audit_report.js:17
-#: selling/page/sales_funnel/sales_funnel.js:39
+#: public/js/stock_analytics.js:74
+#: regional/report/electronic_invoice_register/electronic_invoice_register.js:8
+#: regional/report/uae_vat_201/uae_vat_201.js:16
+#: regional/report/vat_audit_report/vat_audit_report.js:16
+#: selling/page/sales_funnel/sales_funnel.js:43
 #: selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.js:24
-#: selling/report/item_wise_sales_history/item_wise_sales_history.js:18
-#: selling/report/sales_analytics/sales_analytics.js:36
-#: selling/report/sales_order_analysis/sales_order_analysis.js:18
-#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:23
-#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:22
-#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:23
+#: selling/report/item_wise_sales_history/item_wise_sales_history.js:17
+#: selling/report/sales_analytics/sales_analytics.js:43
+#: selling/report/sales_order_analysis/sales_order_analysis.js:17
+#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:21
+#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:21
+#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:21
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js:21
 #: stock/report/batch_item_expiry_status/batch_item_expiry_status.js:8
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.js:16
-#: stock/report/cogs_by_item_group/cogs_by_item_group.js:17
-#: stock/report/delayed_item_report/delayed_item_report.js:17
-#: stock/report/delayed_order_report/delayed_order_report.js:17
-#: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.js:21
-#: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.js:31
+#: stock/report/cogs_by_item_group/cogs_by_item_group.js:15
+#: stock/report/delayed_item_report/delayed_item_report.js:16
+#: stock/report/delayed_order_report/delayed_order_report.js:16
+#: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.js:20
+#: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.js:30
 #: stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.js:8
 #: stock/report/reserved_stock/reserved_stock.js:16
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:16
-#: stock/report/stock_analytics/stock_analytics.js:63
+#: stock/report/stock_analytics/stock_analytics.js:62
 #: stock/report/stock_balance/stock_balance.js:16
 #: stock/report/stock_ledger/stock_ledger.js:16
 #: stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.js:15
-#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:9
-#: support/report/first_response_time_for_issues/first_response_time_for_issues.js:9
-#: support/report/issue_analytics/issue_analytics.js:25
-#: support/report/issue_summary/issue_summary.js:25
-#: support/report/support_hour_distribution/support_hour_distribution.js:8
-#: utilities/report/youtube_interactions/youtube_interactions.js:9
+#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:8
+#: support/report/first_response_time_for_issues/first_response_time_for_issues.js:8
+#: support/report/issue_analytics/issue_analytics.js:24
+#: support/report/issue_summary/issue_summary.js:24
+#: support/report/support_hour_distribution/support_hour_distribution.js:7
+#: utilities/report/youtube_interactions/youtube_interactions.js:8
 msgid "From Date"
 msgstr ""
 
@@ -29037,7 +29484,7 @@
 msgid "From Date"
 msgstr ""
 
-#: accounts/doctype/bank_clearance/bank_clearance.py:41
+#: accounts/doctype/bank_clearance/bank_clearance.py:43
 msgid "From Date and To Date are Mandatory"
 msgstr ""
 
@@ -29083,7 +29530,7 @@
 msgid "From Delivery Date"
 msgstr ""
 
-#: selling/doctype/installation_note/installation_note.js:58
+#: selling/doctype/installation_note/installation_note.js:59
 msgid "From Delivery Note"
 msgstr ""
 
@@ -29093,7 +29540,7 @@
 msgid "From Doctype"
 msgstr ""
 
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:80
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:78
 msgid "From Due Date"
 msgstr ""
 
@@ -29103,7 +29550,7 @@
 msgid "From Employee"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:45
+#: accounts/report/budget_variance_report/budget_variance_report.js:43
 msgid "From Fiscal Year"
 msgstr ""
 
@@ -29167,8 +29614,8 @@
 msgid "From Payment Date"
 msgstr ""
 
-#: manufacturing/report/job_card_summary/job_card_summary.js:37
-#: manufacturing/report/work_order_summary/work_order_summary.js:23
+#: manufacturing/report/job_card_summary/job_card_summary.js:36
+#: manufacturing/report/work_order_summary/work_order_summary.js:22
 msgid "From Posting Date"
 msgstr ""
 
@@ -29214,6 +29661,7 @@
 
 #: manufacturing/report/downtime_analysis/downtime_analysis.py:91
 #: manufacturing/report/job_card_summary/job_card_summary.py:179
+#: templates/pages/timelog_info.html:31
 msgid "From Time"
 msgstr ""
 
@@ -29299,7 +29747,7 @@
 msgid "From Voucher Detail No"
 msgstr ""
 
-#: stock/report/reserved_stock/reserved_stock.js:106
+#: stock/report/reserved_stock/reserved_stock.js:103
 #: stock/report/reserved_stock/reserved_stock.py:164
 msgid "From Voucher No"
 msgstr ""
@@ -29310,7 +29758,7 @@
 msgid "From Voucher No"
 msgstr ""
 
-#: stock/report/reserved_stock/reserved_stock.js:95
+#: stock/report/reserved_stock/reserved_stock.js:92
 #: stock/report/reserved_stock/reserved_stock.py:158
 msgid "From Voucher Type"
 msgstr ""
@@ -29361,7 +29809,7 @@
 msgid "From and To dates are required"
 msgstr ""
 
-#: manufacturing/doctype/blanket_order/blanket_order.py:47
+#: manufacturing/doctype/blanket_order/blanket_order.py:48
 msgid "From date cannot be greater than To date"
 msgstr ""
 
@@ -29549,30 +29997,33 @@
 msgid "Furniture and Fixtures"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:111
+#: accounts/doctype/account/account_tree.js:138
 msgid "Further accounts can be made under Groups, but entries can be made against non-Groups"
 msgstr ""
 
-#: accounts/doctype/cost_center/cost_center_tree.js:24
+#: accounts/doctype/cost_center/cost_center_tree.js:31
 msgid "Further cost centers can be made under Groups but entries can be made against non-Groups"
 msgstr ""
 
-#: setup/doctype/sales_person/sales_person_tree.js:10
+#: setup/doctype/sales_person/sales_person_tree.js:15
 msgid "Further nodes can be only created under 'Group' type nodes"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:185
-#: accounts/report/accounts_receivable/accounts_receivable.py:1084
+#: accounts/report/accounts_receivable/accounts_receivable.html:155
+#: accounts/report/accounts_receivable/accounts_receivable.py:1092
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:180
 msgid "Future Payment Amount"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:184
-#: accounts/report/accounts_receivable/accounts_receivable.py:1083
+#: accounts/report/accounts_receivable/accounts_receivable.html:154
+#: accounts/report/accounts_receivable/accounts_receivable.py:1091
 msgid "Future Payment Ref"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:120
+#: accounts/report/accounts_receivable/accounts_receivable.html:102
 msgid "Future Payments"
 msgstr ""
 
@@ -29588,7 +30039,7 @@
 
 #. Name of a DocType
 #: accounts/doctype/gl_entry/gl_entry.json
-#: accounts/report/general_ledger/general_ledger.py:557
+#: accounts/report/general_ledger/general_ledger.py:570
 msgid "GL Entry"
 msgstr ""
 
@@ -29649,11 +30100,11 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:74
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:98
-#: setup/doctype/company/company.py:525
+#: setup/doctype/company/company.py:524
 msgid "Gain/Loss on Asset Disposal"
 msgstr ""
 
-#: projects/doctype/project/project.js:79
+#: projects/doctype/project/project.js:93
 msgid "Gantt Chart"
 msgstr ""
 
@@ -29689,7 +30140,7 @@
 #. Name of a report
 #. Label of a shortcut in the Accounting Workspace
 #. Label of a Link in the Financial Reports Workspace
-#: accounts/doctype/account/account.js:95
+#: accounts/doctype/account/account.js:93
 #: accounts/onboarding_step/financial_statements/financial_statements.json
 #: accounts/report/general_ledger/general_ledger.json
 #: accounts/workspace/accounting/accounting.json
@@ -29710,7 +30161,7 @@
 msgid "General Ledger"
 msgstr ""
 
-#: stock/doctype/warehouse/warehouse.js:74
+#: stock/doctype/warehouse/warehouse.js:68
 msgctxt "Warehouse"
 msgid "General Ledger"
 msgstr ""
@@ -29730,7 +30181,7 @@
 msgid "Generate Closing Stock Balance"
 msgstr ""
 
-#: public/js/setup_wizard.js:46
+#: public/js/setup_wizard.js:48
 msgid "Generate Demo Data for Exploration"
 msgstr ""
 
@@ -29756,6 +30207,11 @@
 msgid "Generate Schedule"
 msgstr ""
 
+#. Description of a DocType
+#: stock/doctype/packing_slip/packing_slip.json
+msgid "Generate packing slips for packages to be delivered. Used to notify package number, package contents and its weight."
+msgstr ""
+
 #. Label of a Check field in DocType 'Bisect Nodes'
 #: accounts/doctype/bisect_nodes/bisect_nodes.json
 msgctxt "Bisect Nodes"
@@ -29802,7 +30258,7 @@
 msgid "Get Current Stock"
 msgstr ""
 
-#: selling/doctype/customer/customer.js:168
+#: selling/doctype/customer/customer.js:180
 msgid "Get Customer Group Details"
 msgstr ""
 
@@ -29818,12 +30274,12 @@
 msgid "Get Finished Goods for Manufacture"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting.js:55
-#: accounts/doctype/invoice_discounting/invoice_discounting.js:157
+#: accounts/doctype/invoice_discounting/invoice_discounting.js:57
+#: accounts/doctype/invoice_discounting/invoice_discounting.js:159
 msgid "Get Invoices"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting.js:102
+#: accounts/doctype/invoice_discounting/invoice_discounting.js:104
 msgid "Get Invoices based on Filters"
 msgstr ""
 
@@ -29833,11 +30289,11 @@
 msgid "Get Item Locations"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:351
-#: manufacturing/doctype/production_plan/production_plan.js:342
-#: stock/doctype/pick_list/pick_list.js:161
-#: stock/doctype/pick_list/pick_list.js:202
-#: stock/doctype/stock_reconciliation/stock_reconciliation.js:160
+#: buying/doctype/request_for_quotation/request_for_quotation.js:377
+#: manufacturing/doctype/production_plan/production_plan.js:369
+#: stock/doctype/pick_list/pick_list.js:193
+#: stock/doctype/pick_list/pick_list.js:236
+#: stock/doctype/stock_reconciliation/stock_reconciliation.js:163
 msgid "Get Items"
 msgstr ""
 
@@ -29847,37 +30303,37 @@
 msgid "Get Items"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:147
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:165
-#: accounts/doctype/sales_invoice/sales_invoice.js:252
-#: accounts/doctype/sales_invoice/sales_invoice.js:276
-#: accounts/doctype/sales_invoice/sales_invoice.js:304
-#: buying/doctype/purchase_order/purchase_order.js:456
-#: buying/doctype/purchase_order/purchase_order.js:473
-#: buying/doctype/request_for_quotation/request_for_quotation.js:315
-#: buying/doctype/request_for_quotation/request_for_quotation.js:334
-#: buying/doctype/request_for_quotation/request_for_quotation.js:375
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:173
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:195
+#: accounts/doctype/sales_invoice/sales_invoice.js:280
+#: accounts/doctype/sales_invoice/sales_invoice.js:309
+#: accounts/doctype/sales_invoice/sales_invoice.js:340
+#: buying/doctype/purchase_order/purchase_order.js:525
+#: buying/doctype/purchase_order/purchase_order.js:545
+#: buying/doctype/request_for_quotation/request_for_quotation.js:335
+#: buying/doctype/request_for_quotation/request_for_quotation.js:357
+#: buying/doctype/request_for_quotation/request_for_quotation.js:402
 #: buying/doctype/supplier_quotation/supplier_quotation.js:49
-#: buying/doctype/supplier_quotation/supplier_quotation.js:76
-#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:78
-#: maintenance/doctype/maintenance_visit/maintenance_visit.js:96
-#: maintenance/doctype/maintenance_visit/maintenance_visit.js:112
-#: maintenance/doctype/maintenance_visit/maintenance_visit.js:132
-#: public/js/controllers/buying.js:267
-#: selling/doctype/quotation/quotation.js:160
-#: selling/doctype/sales_order/sales_order.js:132
-#: selling/doctype/sales_order/sales_order.js:643
-#: stock/doctype/delivery_note/delivery_note.js:160
-#: stock/doctype/material_request/material_request.js:100
-#: stock/doctype/material_request/material_request.js:162
-#: stock/doctype/purchase_receipt/purchase_receipt.js:130
-#: stock/doctype/purchase_receipt/purchase_receipt.js:217
-#: stock/doctype/stock_entry/stock_entry.js:275
-#: stock/doctype/stock_entry/stock_entry.js:312
-#: stock/doctype/stock_entry/stock_entry.js:336
-#: stock/doctype/stock_entry/stock_entry.js:387
-#: stock/doctype/stock_entry/stock_entry.js:535
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:100
+#: buying/doctype/supplier_quotation/supplier_quotation.js:82
+#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:80
+#: maintenance/doctype/maintenance_visit/maintenance_visit.js:100
+#: maintenance/doctype/maintenance_visit/maintenance_visit.js:119
+#: maintenance/doctype/maintenance_visit/maintenance_visit.js:142
+#: public/js/controllers/buying.js:262
+#: selling/doctype/quotation/quotation.js:167
+#: selling/doctype/sales_order/sales_order.js:158
+#: selling/doctype/sales_order/sales_order.js:743
+#: stock/doctype/delivery_note/delivery_note.js:173
+#: stock/doctype/material_request/material_request.js:101
+#: stock/doctype/material_request/material_request.js:192
+#: stock/doctype/purchase_receipt/purchase_receipt.js:145
+#: stock/doctype/purchase_receipt/purchase_receipt.js:249
+#: stock/doctype/stock_entry/stock_entry.js:309
+#: stock/doctype/stock_entry/stock_entry.js:356
+#: stock/doctype/stock_entry/stock_entry.js:384
+#: stock/doctype/stock_entry/stock_entry.js:443
+#: stock/doctype/stock_entry/stock_entry.js:603
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:119
 msgid "Get Items From"
 msgstr ""
 
@@ -29893,13 +30349,13 @@
 msgid "Get Items From Purchase Receipts"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:241
-#: stock/doctype/stock_entry/stock_entry.js:555
-#: stock/doctype/stock_entry/stock_entry.js:568
+#: stock/doctype/material_request/material_request.js:295
+#: stock/doctype/stock_entry/stock_entry.js:643
+#: stock/doctype/stock_entry/stock_entry.js:656
 msgid "Get Items from BOM"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:348
+#: buying/doctype/request_for_quotation/request_for_quotation.js:374
 msgid "Get Items from Material Requests against this Supplier"
 msgstr ""
 
@@ -29909,7 +30365,7 @@
 msgid "Get Items from Open Material Requests"
 msgstr ""
 
-#: public/js/controllers/buying.js:507
+#: public/js/controllers/buying.js:504
 msgid "Get Items from Product Bundle"
 msgstr ""
 
@@ -29943,18 +30399,24 @@
 msgid "Get Outstanding Orders"
 msgstr ""
 
+#: accounts/doctype/bank_clearance/bank_clearance.js:38
 #: accounts/doctype/bank_clearance/bank_clearance.js:40
-#: accounts/doctype/bank_clearance/bank_clearance.js:44
-#: accounts/doctype/bank_clearance/bank_clearance.js:56
-#: accounts/doctype/bank_clearance/bank_clearance.js:75
+#: accounts/doctype/bank_clearance/bank_clearance.js:52
+#: accounts/doctype/bank_clearance/bank_clearance.js:71
 msgid "Get Payment Entries"
 msgstr ""
 
-#: accounts/doctype/payment_order/payment_order.js:20
-#: accounts/doctype/payment_order/payment_order.js:24
+#: accounts/doctype/payment_order/payment_order.js:23
+#: accounts/doctype/payment_order/payment_order.js:31
 msgid "Get Payments from"
 msgstr ""
 
+#. Label of a Check field in DocType 'Manufacturing Settings'
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.json
+msgctxt "Manufacturing Settings"
+msgid "Get Raw Materials Cost from Consumption Entry"
+msgstr ""
+
 #. Label of a Button field in DocType 'Production Plan'
 #: manufacturing/doctype/production_plan/production_plan.json
 msgctxt "Production Plan"
@@ -29985,7 +30447,7 @@
 msgid "Get Started Sections"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:398
+#: manufacturing/doctype/production_plan/production_plan.js:432
 msgid "Get Stock"
 msgstr ""
 
@@ -29995,29 +30457,29 @@
 msgid "Get Sub Assembly Items"
 msgstr ""
 
-#: buying/doctype/supplier/supplier.js:102
+#: buying/doctype/supplier/supplier.js:124
 msgid "Get Supplier Group Details"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:384
-#: buying/doctype/request_for_quotation/request_for_quotation.js:402
+#: buying/doctype/request_for_quotation/request_for_quotation.js:416
+#: buying/doctype/request_for_quotation/request_for_quotation.js:436
 msgid "Get Suppliers"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:405
+#: buying/doctype/request_for_quotation/request_for_quotation.js:440
 msgid "Get Suppliers By"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.js:989
+#: accounts/doctype/sales_invoice/sales_invoice.js:1065
 msgid "Get Timesheets"
 msgstr ""
 
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js:81
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js:84
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:77
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:80
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:87
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:94
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js:75
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js:78
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:78
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:81
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:86
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:91
 msgid "Get Unreconciled Entries"
 msgstr ""
 
@@ -30025,11 +30487,11 @@
 msgid "Get Updates"
 msgstr ""
 
-#: stock/doctype/delivery_trip/delivery_trip.js:65
+#: stock/doctype/delivery_trip/delivery_trip.js:68
 msgid "Get stops from"
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:125
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:149
 msgid "Getting Scrap Items"
 msgstr ""
 
@@ -30046,6 +30508,13 @@
 msgid "Give free item for every N quantity"
 msgstr ""
 
+#. Description of the 'Recurse Every (As Per Transaction UOM)' (Float) field in
+#. DocType 'Promotional Scheme Product Discount'
+#: accounts/doctype/promotional_scheme_product_discount/promotional_scheme_product_discount.json
+msgctxt "Promotional Scheme Product Discount"
+msgid "Give free item for every N quantity"
+msgstr ""
+
 #. Name of a DocType
 #: setup/doctype/global_defaults/global_defaults.json
 msgid "Global Defaults"
@@ -30062,7 +30531,7 @@
 msgid "Go back"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:113
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:97
 msgid "Go to {0} List"
 msgstr ""
 
@@ -30101,16 +30570,16 @@
 msgid "Goods"
 msgstr ""
 
-#: setup/doctype/company/company.py:263
-#: stock/doctype/stock_entry/stock_entry_list.js:14
+#: setup/doctype/company/company.py:262
+#: stock/doctype/stock_entry/stock_entry_list.js:21
 msgid "Goods In Transit"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry_list.js:17
+#: stock/doctype/stock_entry/stock_entry_list.js:23
 msgid "Goods Transferred"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1618
+#: stock/doctype/stock_entry/stock_entry.py:1627
 msgid "Goods are already received against the outward entry {0}"
 msgstr ""
 
@@ -30134,7 +30603,12 @@
 #: accounts/report/pos_register/pos_register.py:207
 #: accounts/report/purchase_register/purchase_register.py:275
 #: accounts/report/sales_register/sales_register.py:303
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:253
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:251
+#: selling/page/point_of_sale/pos_item_cart.js:92
+#: selling/page/point_of_sale/pos_item_cart.js:531
+#: selling/page/point_of_sale/pos_item_cart.js:535
+#: selling/page/point_of_sale/pos_past_order_summary.js:154
+#: selling/page/point_of_sale/pos_payment.js:590
 #: templates/includes/order/order_taxes.html:105 templates/pages/rfq.html:58
 msgid "Grand Total"
 msgstr ""
@@ -30356,7 +30830,7 @@
 msgid "Grant Commission"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:654
+#: accounts/doctype/payment_entry/payment_entry.js:802
 msgid "Greater Than Amount"
 msgstr ""
 
@@ -30465,11 +30939,11 @@
 msgid "Gross Purchase Amount"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:317
+#: assets/doctype/asset/asset.py:319
 msgid "Gross Purchase Amount is mandatory"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:362
+#: assets/doctype/asset/asset.py:364
 msgid "Gross Purchase Amount should be <b>equal</b> to purchase amount of one single Asset."
 msgstr ""
 
@@ -30498,11 +30972,11 @@
 #: accounts/report/gross_profit/gross_profit.js:36
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:52
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.js:58
-#: assets/report/fixed_asset_register/fixed_asset_register.js:36
-#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:46
+#: assets/report/fixed_asset_register/fixed_asset_register.js:35
+#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:41
 #: public/js/purchase_trends_filters.js:61 public/js/sales_trends_filters.js:37
 #: selling/report/lost_quotations/lost_quotations.js:33
-#: stock/report/total_stock_summary/total_stock_summary.js:9
+#: stock/report/total_stock_summary/total_stock_summary.js:8
 msgid "Group By"
 msgstr ""
 
@@ -30512,15 +30986,15 @@
 msgid "Group By"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.js:151
+#: accounts/report/accounts_receivable/accounts_receivable.js:154
 msgid "Group By Customer"
 msgstr ""
 
-#: accounts/report/accounts_payable/accounts_payable.js:129
+#: accounts/report/accounts_payable/accounts_payable.js:132
 msgid "Group By Supplier"
 msgstr ""
 
-#: setup/doctype/sales_person/sales_person_tree.js:9
+#: setup/doctype/sales_person/sales_person_tree.js:14
 msgid "Group Node"
 msgstr ""
 
@@ -30530,12 +31004,12 @@
 msgid "Group Same Items"
 msgstr ""
 
-#: stock/doctype/stock_settings/stock_settings.py:112
+#: stock/doctype/stock_settings/stock_settings.py:115
 msgid "Group Warehouses cannot be used in transactions. Please change the value of {0}"
 msgstr ""
 
 #: accounts/report/general_ledger/general_ledger.js:115
-#: accounts/report/pos_register/pos_register.js:57
+#: accounts/report/pos_register/pos_register.js:56
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:78
 msgid "Group by"
 msgstr ""
@@ -30544,34 +31018,34 @@
 msgid "Group by Account"
 msgstr ""
 
-#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:80
+#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:82
 msgid "Group by Item"
 msgstr ""
 
-#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:62
+#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:61
 msgid "Group by Material Request"
 msgstr ""
 
 #: accounts/report/general_ledger/general_ledger.js:132
-#: accounts/report/payment_ledger/payment_ledger.js:83
+#: accounts/report/payment_ledger/payment_ledger.js:82
 msgid "Group by Party"
 msgstr ""
 
-#: buying/report/purchase_order_analysis/purchase_order_analysis.js:71
+#: buying/report/purchase_order_analysis/purchase_order_analysis.js:70
 msgid "Group by Purchase Order"
 msgstr ""
 
-#: selling/report/sales_order_analysis/sales_order_analysis.js:73
+#: selling/report/sales_order_analysis/sales_order_analysis.js:72
 msgid "Group by Sales Order"
 msgstr ""
 
-#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:80
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:81
+#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:84
 msgid "Group by Supplier"
 msgstr ""
 
-#: accounts/report/accounts_payable/accounts_payable.js:159
-#: accounts/report/accounts_receivable/accounts_receivable.js:191
+#: accounts/report/accounts_payable/accounts_payable.js:162
+#: accounts/report/accounts_receivable/accounts_receivable.js:194
 #: accounts/report/general_ledger/general_ledger.js:120
 msgid "Group by Voucher"
 msgstr ""
@@ -30594,7 +31068,7 @@
 msgid "Group by Voucher (Consolidated)"
 msgstr ""
 
-#: stock/utils.py:448
+#: stock/utils.py:443
 msgid "Group node warehouse is not allowed to select for transactions"
 msgstr ""
 
@@ -30656,8 +31130,8 @@
 msgid "Groups"
 msgstr ""
 
-#: accounts/report/balance_sheet/balance_sheet.js:18
-#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:18
+#: accounts/report/balance_sheet/balance_sheet.js:14
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:14
 msgid "Growth View"
 msgstr ""
 
@@ -30703,14 +31177,14 @@
 msgid "Half Yearly"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:66
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:69
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:60
-#: public/js/financial_statements.js:219
+#: accounts/report/budget_variance_report/budget_variance_report.js:64
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:77
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:59
+#: public/js/financial_statements.js:228
 #: public/js/purchase_trends_filters.js:21 public/js/sales_trends_filters.js:13
-#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:35
-#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:35
-#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:35
+#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:34
+#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:34
+#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:34
 msgid "Half-Yearly"
 msgstr ""
 
@@ -30869,6 +31343,11 @@
 msgid "Have Default Naming Series for Batch ID?"
 msgstr ""
 
+#. Description of a DocType
+#: accounts/doctype/account/account.json
+msgid "Heads (or groups) against which Accounting Entries are made and balances are maintained."
+msgstr ""
+
 #. Label of a Small Text field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
@@ -30893,7 +31372,7 @@
 msgid "Height (cm)"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:412
+#: assets/doctype/asset/depreciation.py:410
 msgid "Hello,"
 msgstr ""
 
@@ -30927,11 +31406,16 @@
 msgid "Help Text"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:419
+#. Description of a DocType
+#: accounts/doctype/monthly_distribution/monthly_distribution.json
+msgid "Helps you distribute the Budget/Target across months if you have seasonality in your business."
+msgstr ""
+
+#: assets/doctype/asset/depreciation.py:417
 msgid "Here are the error logs for the aforementioned failed depreciation entries: {0}"
 msgstr ""
 
-#: stock/stock_ledger.py:1669
+#: stock/stock_ledger.py:1689
 msgid "Here are the options to proceed:"
 msgstr ""
 
@@ -30948,15 +31432,15 @@
 msgid "Here you can maintain height, weight, allergies, medical concerns etc"
 msgstr ""
 
-#: setup/doctype/employee/employee.js:122
+#: setup/doctype/employee/employee.js:129
 msgid "Here, you can select a senior of this Employee. Based on this, Organization Chart will be populated."
 msgstr ""
 
-#: setup/doctype/holiday_list/holiday_list.js:75
+#: setup/doctype/holiday_list/holiday_list.js:77
 msgid "Here, your weekly offs are pre-populated based on the previous selections. You can add more rows to also add public and national holidays individually."
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.py:391
+#: stock/doctype/repost_item_valuation/repost_item_valuation.py:406
 msgid "Hi,"
 msgstr ""
 
@@ -31018,12 +31502,12 @@
 msgid "History In Company"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:288
-#: selling/doctype/sales_order/sales_order.js:539
+#: buying/doctype/purchase_order/purchase_order.js:315
+#: selling/doctype/sales_order/sales_order.js:582
 msgid "Hold"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:92
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:112
 msgid "Hold Invoice"
 msgstr ""
 
@@ -31129,6 +31613,13 @@
 msgstr ""
 
 #: projects/report/daily_timesheet_summary/daily_timesheet_summary.py:31
+#: templates/pages/timelog_info.html:37
+msgid "Hours"
+msgstr ""
+
+#. Label of a Float field in DocType 'Workstation Working Hour'
+#: manufacturing/doctype/workstation_working_hour/workstation_working_hour.json
+msgctxt "Workstation Working Hour"
 msgid "Hours"
 msgstr ""
 
@@ -31167,7 +31658,7 @@
 msgid "Hrs"
 msgstr ""
 
-#: setup/doctype/company/company.py:365
+#: setup/doctype/company/company.py:364
 msgid "Human Resources"
 msgstr ""
 
@@ -31205,8 +31696,8 @@
 msgid "IBAN"
 msgstr ""
 
-#: accounts/doctype/bank_account/bank_account.py:84
-#: accounts/doctype/bank_account/bank_account.py:87
+#: accounts/doctype/bank_account/bank_account.py:98
+#: accounts/doctype/bank_account/bank_account.py:101
 msgid "IBAN is not valid"
 msgstr ""
 
@@ -31281,6 +31772,12 @@
 msgid "Identifying Decision Makers"
 msgstr ""
 
+#. Option for the 'Status' (Select) field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Idle"
+msgstr ""
+
 #. Description of the 'Book Deferred Entries Based On' (Select) field in
 #. DocType 'Accounts Settings'
 #: accounts/doctype/accounts_settings/accounts_settings.json
@@ -31288,6 +31785,10 @@
 msgid "If \"Months\" is selected, a fixed amount will be booked as deferred revenue or expense for each month irrespective of the number of days in a month. It will be prorated if deferred revenue or expense is not booked for an entire month"
 msgstr ""
 
+#: accounts/doctype/loyalty_program/loyalty_program.js:14
+msgid "If Auto Opt In is checked, then the customers will be automatically linked with the concerned Loyalty Program (on save)"
+msgstr ""
+
 #. Description of the 'Cost Center' (Link) field in DocType 'Journal Entry
 #. Account'
 #: accounts/doctype/journal_entry_account/journal_entry_account.json
@@ -31295,7 +31796,7 @@
 msgid "If Income or Expense"
 msgstr ""
 
-#: manufacturing/doctype/operation/operation.js:30
+#: manufacturing/doctype/operation/operation.js:32
 msgid "If an operation is divided into sub operations, they can be added here."
 msgstr ""
 
@@ -31352,7 +31853,7 @@
 msgid "If checked, the tax amount will be considered as already included in the Print Rate / Print Amount"
 msgstr ""
 
-#: public/js/setup_wizard.js:48
+#: public/js/setup_wizard.js:50
 msgid "If checked, we will create demo data for you to explore the system. This demo data can be erased later."
 msgstr ""
 
@@ -31398,6 +31899,15 @@
 msgid "If enabled, all files attached to this document will be attached to each email"
 msgstr ""
 
+#. Description of the 'Do Not Update Serial / Batch on Creation of Auto Bundle'
+#. (Check) field in DocType 'Stock Settings'
+#: stock/doctype/stock_settings/stock_settings.json
+msgctxt "Stock Settings"
+msgid ""
+"If enabled, do not update serial / batch values in the stock transactions on creation of auto Serial \n"
+" / Batch Bundle. "
+msgstr ""
+
 #. Description of the 'Create Ledger Entries for Change Amount' (Check) field
 #. in DocType 'Accounts Settings'
 #: accounts/doctype/accounts_settings/accounts_settings.json
@@ -31438,7 +31948,7 @@
 msgid "If more than one package of the same type (for print)"
 msgstr ""
 
-#: stock/stock_ledger.py:1679
+#: stock/stock_ledger.py:1699
 msgid "If not, you can Cancel / Submit this entry"
 msgstr ""
 
@@ -31456,7 +31966,7 @@
 msgid "If subcontracted to a vendor"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:842
+#: manufacturing/doctype/work_order/work_order.js:911
 msgid "If the BOM results in Scrap material, the Scrap Warehouse needs to be selected."
 msgstr ""
 
@@ -31466,11 +31976,11 @@
 msgid "If the account is frozen, entries are allowed to restricted users."
 msgstr ""
 
-#: stock/stock_ledger.py:1672
+#: stock/stock_ledger.py:1692
 msgid "If the item is transacting as a Zero Valuation Rate item in this entry, please enable 'Allow Zero Valuation Rate' in the {0} Item table."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:857
+#: manufacturing/doctype/work_order/work_order.js:930
 msgid "If the selected BOM has Operations mentioned in it, the system will fetch all Operations from BOM, these values can be changed."
 msgstr ""
 
@@ -31516,7 +32026,7 @@
 msgid "If this is unchecked, direct GL entries will be created to book deferred revenue or expense"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:638
+#: accounts/doctype/payment_entry/payment_entry.py:647
 msgid "If this is undesirable please cancel the corresponding Payment Entry."
 msgstr ""
 
@@ -31526,23 +32036,34 @@
 msgid "If this item has variants, then it cannot be selected in sales orders etc."
 msgstr ""
 
-#: buying/doctype/buying_settings/buying_settings.js:24
+#: buying/doctype/buying_settings/buying_settings.js:27
 msgid "If this option is configured 'Yes', ERPNext will prevent you from creating a Purchase Invoice or Receipt without creating a Purchase Order first. This configuration can be overridden for a particular supplier by enabling the 'Allow Purchase Invoice Creation Without Purchase Order' checkbox in the Supplier master."
 msgstr ""
 
-#: buying/doctype/buying_settings/buying_settings.js:29
+#: buying/doctype/buying_settings/buying_settings.js:34
 msgid "If this option is configured 'Yes', ERPNext will prevent you from creating a Purchase Invoice without creating a Purchase Receipt first. This configuration can be overridden for a particular supplier by enabling the 'Allow Purchase Invoice Creation Without Purchase Receipt' checkbox in the Supplier master."
 msgstr ""
 
-#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:11
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:10
 msgid "If ticked, multiple materials can be used for a single Work Order. This is useful if one or more time consuming products are being manufactured."
 msgstr ""
 
-#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:31
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:36
 msgid "If ticked, the BOM cost will be automatically updated based on Valuation Rate / Price List Rate / last purchase rate of raw materials."
 msgstr ""
 
-#: stock/doctype/item/item.js:814
+#: accounts/doctype/loyalty_program/loyalty_program.js:14
+msgid "If unlimited expiry for the Loyalty Points, keep the Expiry Duration empty or 0."
+msgstr ""
+
+#. Description of the 'Is Rejected Warehouse' (Check) field in DocType
+#. 'Warehouse'
+#: stock/doctype/warehouse/warehouse.json
+msgctxt "Warehouse"
+msgid "If yes, then this warehouse will be used to store rejected materials"
+msgstr ""
+
+#: stock/doctype/item/item.js:894
 msgid "If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item."
 msgstr ""
 
@@ -31553,7 +32074,11 @@
 msgid "If you need to reconcile particular transactions against each other, then please select accordingly. If not, all the transactions will be allocated in FIFO order."
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:1605
+#: manufacturing/doctype/production_plan/production_plan.py:920
+msgid "If you still want to proceed, please disable 'Skip Available Sub Assembly Items' checkbox."
+msgstr ""
+
+#: manufacturing/doctype/production_plan/production_plan.py:1625
 msgid "If you still want to proceed, please enable {0}."
 msgstr ""
 
@@ -31620,17 +32145,21 @@
 msgid "Ignore Empty Stock"
 msgstr ""
 
+#: accounts/report/general_ledger/general_ledger.js:209
+msgid "Ignore Exchange Rate Revaluation Journals"
+msgstr ""
+
 #. Label of a Check field in DocType 'Process Statement Of Accounts'
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
 msgctxt "Process Statement Of Accounts"
 msgid "Ignore Exchange Rate Revaluation Journals"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:800
+#: selling/doctype/sales_order/sales_order.js:916
 msgid "Ignore Existing Ordered Qty"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:1597
+#: manufacturing/doctype/production_plan/production_plan.py:1617
 msgid "Ignore Existing Projected Quantity"
 msgstr ""
 
@@ -31694,7 +32223,7 @@
 msgid "Ignore Pricing Rule"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:187
+#: selling/page/point_of_sale/pos_payment.js:188
 msgid "Ignore Pricing Rule is enabled. Cannot apply coupon code."
 msgstr ""
 
@@ -32017,10 +32546,15 @@
 msgid "Image View"
 msgstr ""
 
-#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:118
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:132
 msgid "Import"
 msgstr ""
 
+#. Description of a DocType
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.json
+msgid "Import Chart of Accounts from a csv file"
+msgstr ""
+
 #. Label of a Link in the Home Workspace
 #. Label of a Link in the Settings Workspace
 #: setup/workspace/home/home.json setup/workspace/settings/settings.json
@@ -32033,7 +32567,7 @@
 msgid "Import Data from Spreadsheet"
 msgstr ""
 
-#: erpnext_integrations/doctype/tally_migration/tally_migration.js:66
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:71
 msgid "Import Day Book Data"
 msgstr ""
 
@@ -32073,7 +32607,7 @@
 msgid "Import Log Preview"
 msgstr ""
 
-#: erpnext_integrations/doctype/tally_migration/tally_migration.js:54
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:59
 msgid "Import Master Data"
 msgstr ""
 
@@ -32083,11 +32617,11 @@
 msgid "Import Preview"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:61
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:51
 msgid "Import Progress"
 msgstr ""
 
-#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:130
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:144
 msgid "Import Successful"
 msgstr ""
 
@@ -32108,8 +32642,8 @@
 msgid "Import Type"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:197
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:77
+#: public/js/utils/serial_no_batch_selector.js:200
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:80
 msgid "Import Using CSV file"
 msgstr ""
 
@@ -32125,7 +32659,7 @@
 msgid "Import from Google Sheets"
 msgstr ""
 
-#: stock/doctype/item_price/item_price.js:27
+#: stock/doctype/item_price/item_price.js:29
 msgid "Import in Bulk"
 msgstr ""
 
@@ -32137,7 +32671,7 @@
 msgid "Importing Parties and Addresses"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:47
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:45
 msgid "Importing {0} of {1}, {2}"
 msgstr ""
 
@@ -32148,7 +32682,7 @@
 msgid "In House"
 msgstr ""
 
-#: assets/doctype/asset/asset_list.js:20
+#: assets/doctype/asset/asset_list.js:15
 msgid "In Maintenance"
 msgstr ""
 
@@ -32176,8 +32710,8 @@
 msgid "In Minutes"
 msgstr ""
 
-#: accounts/report/accounts_payable/accounts_payable.js:149
-#: accounts/report/accounts_receivable/accounts_receivable.js:181
+#: accounts/report/accounts_payable/accounts_payable.js:152
+#: accounts/report/accounts_receivable/accounts_receivable.js:184
 msgid "In Party Currency"
 msgstr ""
 
@@ -32224,10 +32758,10 @@
 msgid "In Production"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:65
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:52
 #: accounts/doctype/ledger_merge/ledger_merge.js:19
-#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js:36
-#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:60
+#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js:40
+#: erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js:66
 #: manufacturing/doctype/bom_creator/bom_creator_list.js:7
 msgid "In Progress"
 msgstr ""
@@ -32288,11 +32822,17 @@
 msgstr ""
 
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.py:80
-#: stock/report/stock_balance/stock_balance.py:433
-#: stock/report/stock_ledger/stock_ledger.py:139
+#: stock/report/stock_balance/stock_balance.py:441
+#: stock/report/stock_ledger/stock_ledger.py:212
 msgid "In Qty"
 msgstr ""
 
+#: templates/form_grid/stock_entry_grid.html:26
+msgid "In Stock"
+msgstr ""
+
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:12
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:22
 #: manufacturing/report/bom_stock_report/bom_stock_report.py:30
 msgid "In Stock Qty"
 msgstr ""
@@ -32314,15 +32854,15 @@
 msgid "In Transit"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:375
+#: stock/doctype/material_request/material_request.js:445
 msgid "In Transit Transfer"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:344
+#: stock/doctype/material_request/material_request.js:414
 msgid "In Transit Warehouse"
 msgstr ""
 
-#: stock/report/stock_balance/stock_balance.py:439
+#: stock/report/stock_balance/stock_balance.py:447
 msgid "In Value"
 msgstr ""
 
@@ -32507,7 +33047,7 @@
 msgid "In minutes"
 msgstr ""
 
-#: crm/doctype/appointment_booking_settings/appointment_booking_settings.js:7
+#: crm/doctype/appointment_booking_settings/appointment_booking_settings.js:8
 msgid "In row {0} of Appointment Booking Slots: \"To Time\" must be later than \"From Time\"."
 msgstr ""
 
@@ -32522,7 +33062,11 @@
 msgid "In the case of 'Use Multi-Level BOM' in a work order, if the user wishes to add sub-assembly costs to Finished Goods items without using a job card as well the scrap items, then this option needs to be enable."
 msgstr ""
 
-#: stock/doctype/item/item.js:839
+#: accounts/doctype/loyalty_program/loyalty_program.js:12
+msgid "In the case of multi-tier program, Customers will be auto assigned to the concerned tier as per their spent"
+msgstr ""
+
+#: stock/doctype/item/item.js:927
 msgid "In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc."
 msgstr ""
 
@@ -32558,6 +33102,12 @@
 msgid "Inactive Sales Items"
 msgstr ""
 
+#. Label of a Attach Image field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Inactive Status"
+msgstr ""
+
 #: selling/report/sales_person_commission_summary/sales_person_commission_summary.py:93
 msgid "Incentives"
 msgstr ""
@@ -32568,7 +33118,7 @@
 msgid "Incentives"
 msgstr ""
 
-#: accounts/report/payment_ledger/payment_ledger.js:77
+#: accounts/report/payment_ledger/payment_ledger.js:76
 msgid "Include Account Currency"
 msgstr ""
 
@@ -32579,27 +33129,27 @@
 msgstr ""
 
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js:54
-#: assets/report/fixed_asset_register/fixed_asset_register.js:55
+#: assets/report/fixed_asset_register/fixed_asset_register.js:54
 msgid "Include Default FB Assets"
 msgstr ""
 
-#: accounts/report/balance_sheet/balance_sheet.js:34
-#: accounts/report/cash_flow/cash_flow.js:20
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:107
+#: accounts/report/balance_sheet/balance_sheet.js:29
+#: accounts/report/cash_flow/cash_flow.js:16
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:131
 #: accounts/report/general_ledger/general_ledger.js:183
-#: accounts/report/trial_balance/trial_balance.js:98
+#: accounts/report/trial_balance/trial_balance.js:104
 msgid "Include Default FB Entries"
 msgstr ""
 
-#: stock/report/stock_ledger_variance/stock_ledger_variance.js:60
+#: stock/report/stock_ledger_variance/stock_ledger_variance.js:55
 msgid "Include Disabled"
 msgstr ""
 
-#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:85
+#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:88
 msgid "Include Expired"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:798
+#: selling/doctype/sales_order/sales_order.js:912
 msgid "Include Exploded Items"
 msgstr ""
 
@@ -32669,7 +33219,7 @@
 msgid "Include Non Stock Items"
 msgstr ""
 
-#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js:44
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js:45
 msgid "Include POS Transactions"
 msgstr ""
 
@@ -32703,7 +33253,7 @@
 msgid "Include Safety Stock in Required Qty Calculation"
 msgstr ""
 
-#: manufacturing/report/production_planning_report/production_planning_report.js:88
+#: manufacturing/report/production_planning_report/production_planning_report.js:87
 msgid "Include Sub-assembly Raw Materials"
 msgstr ""
 
@@ -32713,12 +33263,12 @@
 msgid "Include Subcontracted Items"
 msgstr ""
 
-#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:57
+#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:52
 msgid "Include Timesheets in Draft Status"
 msgstr ""
 
 #: stock/report/stock_balance/stock_balance.js:84
-#: stock/report/stock_ledger/stock_ledger.js:82
+#: stock/report/stock_ledger/stock_ledger.js:90
 #: stock/report/stock_projected_qty/stock_projected_qty.js:51
 msgid "Include UOM"
 msgstr ""
@@ -32749,10 +33299,10 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:78
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:105
-#: accounts/report/account_balance/account_balance.js:28
+#: accounts/report/account_balance/account_balance.js:27
 #: accounts/report/profit_and_loss_statement/profit_and_loss_statement.py:172
 #: accounts/report/profitability_analysis/profitability_analysis.py:182
-#: public/js/financial_statements.js:35
+#: public/js/financial_statements.js:36
 msgid "Income"
 msgstr ""
 
@@ -32775,7 +33325,7 @@
 msgid "Income"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:51
+#: accounts/report/account_balance/account_balance.js:53
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.js:65
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:293
 msgid "Income Account"
@@ -32848,7 +33398,7 @@
 msgstr ""
 
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:163
-#: stock/report/stock_ledger/stock_ledger.py:189
+#: stock/report/stock_ledger/stock_ledger.py:262
 #: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:170
 #: stock/report/stock_ledger_variance/stock_ledger_variance.py:94
 msgid "Incoming Rate"
@@ -32872,12 +33422,6 @@
 msgid "Incoming Rate"
 msgstr ""
 
-#. Label of a Float field in DocType 'Serial and Batch Entry'
-#: stock/doctype/serial_and_batch_entry/serial_and_batch_entry.json
-msgctxt "Serial and Batch Entry"
-msgid "Incoming Rate"
-msgstr ""
-
 #. Label of a Currency field in DocType 'Stock Ledger Entry'
 #: stock/doctype/stock_ledger_entry/stock_ledger_entry.json
 msgctxt "Stock Ledger Entry"
@@ -32899,16 +33443,16 @@
 msgid "Incorrect Balance Qty After Transaction"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:710
+#: controllers/subcontracting_controller.py:714
 msgid "Incorrect Batch Consumed"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:278
+#: assets/doctype/asset/asset.py:280
 #: assets/doctype/asset_value_adjustment/asset_value_adjustment.py:74
 msgid "Incorrect Date"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:99
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:120
 msgid "Incorrect Invoice"
 msgstr ""
 
@@ -32921,12 +33465,16 @@
 msgid "Incorrect Payment Type"
 msgstr ""
 
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:93
+msgid "Incorrect Reference Document (Purchase Receipt Item)"
+msgstr ""
+
 #. Name of a report
 #: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.json
 msgid "Incorrect Serial No Valuation"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:723
+#: controllers/subcontracting_controller.py:727
 msgid "Incorrect Serial Number Consumed"
 msgstr ""
 
@@ -32935,15 +33483,15 @@
 msgid "Incorrect Stock Value Report"
 msgstr ""
 
-#: stock/serial_batch_bundle.py:95
+#: stock/serial_batch_bundle.py:96
 msgid "Incorrect Type of Transaction"
 msgstr ""
 
-#: stock/doctype/stock_settings/stock_settings.py:115
+#: stock/doctype/stock_settings/stock_settings.py:118
 msgid "Incorrect Warehouse"
 msgstr ""
 
-#: accounts/general_ledger.py:47
+#: accounts/general_ledger.py:51
 msgid "Incorrect number of General Ledger Entries found. You might have selected a wrong Account in the transaction."
 msgstr ""
 
@@ -33094,11 +33642,11 @@
 msgid "Individual"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:336
+#: accounts/doctype/gl_entry/gl_entry.py:290
 msgid "Individual GL Entry cannot be cancelled."
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:326
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:337
 msgid "Individual Stock Ledger Entry cannot be cancelled."
 msgstr ""
 
@@ -33143,7 +33691,13 @@
 msgid "Initial Email Notification Sent"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request_list.js:11
+#. Label of a Check field in DocType 'Transaction Deletion Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Initialize Summary Table"
+msgstr ""
+
+#: accounts/doctype/payment_request/payment_request_list.js:10
 msgid "Initiated"
 msgstr ""
 
@@ -33174,7 +33728,7 @@
 msgid "Insert New Records"
 msgstr ""
 
-#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.js:34
+#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.js:33
 #: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:109
 msgid "Inspected By"
 msgstr ""
@@ -33185,11 +33739,11 @@
 msgid "Inspected By"
 msgstr ""
 
-#: controllers/stock_controller.py:666
+#: controllers/stock_controller.py:849
 msgid "Inspection Rejected"
 msgstr ""
 
-#: controllers/stock_controller.py:636 controllers/stock_controller.py:638
+#: controllers/stock_controller.py:819 controllers/stock_controller.py:821
 msgid "Inspection Required"
 msgstr ""
 
@@ -33211,7 +33765,7 @@
 msgid "Inspection Required before Purchase"
 msgstr ""
 
-#: controllers/stock_controller.py:653
+#: controllers/stock_controller.py:836
 msgid "Inspection Submission"
 msgstr ""
 
@@ -33233,7 +33787,7 @@
 
 #. Name of a DocType
 #: selling/doctype/installation_note/installation_note.json
-#: stock/doctype/delivery_note/delivery_note.js:171
+#: stock/doctype/delivery_note/delivery_note.js:191
 msgid "Installation Note"
 msgstr ""
 
@@ -33250,7 +33804,7 @@
 msgid "Installation Note Item"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:688
+#: stock/doctype/delivery_note/delivery_note.py:749
 msgid "Installation Note {0} has already been submitted"
 msgstr ""
 
@@ -33315,19 +33869,19 @@
 msgid "Insufficient Capacity"
 msgstr ""
 
-#: controllers/accounts_controller.py:3130
-#: controllers/accounts_controller.py:3154
+#: controllers/accounts_controller.py:3221
+#: controllers/accounts_controller.py:3245
 msgid "Insufficient Permissions"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:705
-#: stock/doctype/stock_entry/stock_entry.py:776
-#: stock/serial_batch_bundle.py:880 stock/stock_ledger.py:1369
-#: stock/stock_ledger.py:1840
+#: stock/doctype/pick_list/pick_list.py:776
+#: stock/doctype/stock_entry/stock_entry.py:731
+#: stock/serial_batch_bundle.py:899 stock/stock_ledger.py:1395
+#: stock/stock_ledger.py:1847
 msgid "Insufficient Stock"
 msgstr ""
 
-#: stock/stock_ledger.py:1855
+#: stock/stock_ledger.py:1862
 msgid "Insufficient Stock for Batch"
 msgstr ""
 
@@ -33468,11 +34022,11 @@
 msgid "Interest"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:2339
+#: accounts/doctype/payment_entry/payment_entry.py:2364
 msgid "Interest and/or dunning fee"
 msgstr ""
 
-#: crm/report/lead_details/lead_details.js:40
+#: crm/report/lead_details/lead_details.js:39
 msgid "Interested"
 msgstr ""
 
@@ -33496,11 +34050,11 @@
 msgid "Internal Customer for company {0} already exists"
 msgstr ""
 
-#: controllers/accounts_controller.py:533
+#: controllers/accounts_controller.py:577
 msgid "Internal Sale or Delivery Reference missing."
 msgstr ""
 
-#: controllers/accounts_controller.py:535
+#: controllers/accounts_controller.py:579
 msgid "Internal Sales Reference Missing"
 msgstr ""
 
@@ -33549,7 +34103,7 @@
 msgid "Internal Transfer"
 msgstr ""
 
-#: controllers/accounts_controller.py:544
+#: controllers/accounts_controller.py:588
 msgid "Internal Transfer Reference Missing"
 msgstr ""
 
@@ -33563,7 +34117,7 @@
 msgid "Internal Work History"
 msgstr ""
 
-#: controllers/stock_controller.py:735
+#: controllers/stock_controller.py:918
 msgid "Internal transfers can only be done in company's default currency"
 msgstr ""
 
@@ -33598,14 +34152,14 @@
 msgid "Invalid"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:369
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:377
-#: accounts/doctype/sales_invoice/sales_invoice.py:876
-#: accounts/doctype/sales_invoice/sales_invoice.py:886
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:373
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:381
+#: accounts/doctype/sales_invoice/sales_invoice.py:893
+#: accounts/doctype/sales_invoice/sales_invoice.py:903
 #: assets/doctype/asset_category/asset_category.py:68
 #: assets/doctype/asset_category/asset_category.py:96
-#: controllers/accounts_controller.py:2531
-#: controllers/accounts_controller.py:2537
+#: controllers/accounts_controller.py:2616
+#: controllers/accounts_controller.py:2622
 msgid "Invalid Account"
 msgstr ""
 
@@ -33613,7 +34167,7 @@
 msgid "Invalid Attribute"
 msgstr ""
 
-#: controllers/accounts_controller.py:380
+#: controllers/accounts_controller.py:424
 msgid "Invalid Auto Repeat Date"
 msgstr ""
 
@@ -33621,7 +34175,7 @@
 msgid "Invalid Barcode. There is no Item attached to this barcode."
 msgstr ""
 
-#: public/js/controllers/transaction.js:2360
+#: public/js/controllers/transaction.js:2413
 msgid "Invalid Blanket Order for the selected Customer and Item"
 msgstr ""
 
@@ -33629,12 +34183,12 @@
 msgid "Invalid Child Procedure"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1977
+#: accounts/doctype/sales_invoice/sales_invoice.py:1946
 msgid "Invalid Company for Inter Company Transaction."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:249 assets/doctype/asset/asset.py:256
-#: controllers/accounts_controller.py:2552
+#: assets/doctype/asset/asset.py:251 assets/doctype/asset/asset.py:258
+#: controllers/accounts_controller.py:2637
 msgid "Invalid Cost Center"
 msgstr ""
 
@@ -33642,11 +34196,11 @@
 msgid "Invalid Credentials"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:318
+#: selling/doctype/sales_order/sales_order.py:321
 msgid "Invalid Delivery Date"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:88
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:109
 msgid "Invalid Document"
 msgstr ""
 
@@ -33659,7 +34213,7 @@
 msgid "Invalid Formula"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:367
+#: assets/doctype/asset/asset.py:369
 msgid "Invalid Gross Purchase Amount"
 msgstr ""
 
@@ -33671,12 +34225,12 @@
 msgid "Invalid Item"
 msgstr ""
 
-#: stock/doctype/item/item.py:1371
+#: stock/doctype/item/item.py:1372
 msgid "Invalid Item Defaults"
 msgstr ""
 
 #: accounts/doctype/pos_closing_entry/pos_closing_entry.py:59
-#: accounts/general_ledger.py:677
+#: accounts/general_ledger.py:686
 msgid "Invalid Opening Entry"
 msgstr ""
 
@@ -33684,11 +34238,11 @@
 msgid "Invalid POS Invoices"
 msgstr ""
 
-#: accounts/doctype/account/account.py:320
+#: accounts/doctype/account/account.py:339
 msgid "Invalid Parent Account"
 msgstr ""
 
-#: public/js/controllers/buying.js:338
+#: public/js/controllers/buying.js:333
 msgid "Invalid Part Number"
 msgstr ""
 
@@ -33708,24 +34262,24 @@
 msgid "Invalid Process Loss Configuration"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:599
+#: accounts/doctype/payment_entry/payment_entry.py:608
 msgid "Invalid Purchase Invoice"
 msgstr ""
 
-#: controllers/accounts_controller.py:3169
+#: controllers/accounts_controller.py:3260
 msgid "Invalid Qty"
 msgstr ""
 
-#: controllers/accounts_controller.py:1021
+#: controllers/accounts_controller.py:1085
 msgid "Invalid Quantity"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:411 assets/doctype/asset/asset.py:417
-#: assets/doctype/asset/asset.py:444
+#: assets/doctype/asset/asset.py:413 assets/doctype/asset/asset.py:419
+#: assets/doctype/asset/asset.py:446
 msgid "Invalid Schedule"
 msgstr ""
 
-#: controllers/selling_controller.py:225
+#: controllers/selling_controller.py:226
 msgid "Invalid Selling Price"
 msgstr ""
 
@@ -33758,22 +34312,21 @@
 msgid "Invalid reference {0} {1}"
 msgstr ""
 
-#: accounts/doctype/currency_exchange_settings/currency_exchange_settings.py:101
+#: accounts/doctype/currency_exchange_settings/currency_exchange_settings.py:102
 msgid "Invalid result key. Response:"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:229
-#: accounts/doctype/gl_entry/gl_entry.py:239
 #: accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:110
 #: accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:120
+#: accounts/general_ledger.py:731 accounts/general_ledger.py:741
 msgid "Invalid value {0} for {1} against account {2}"
 msgstr ""
 
-#: accounts/doctype/pricing_rule/utils.py:202 assets/doctype/asset/asset.js:569
+#: accounts/doctype/pricing_rule/utils.py:202 assets/doctype/asset/asset.js:642
 msgid "Invalid {0}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1975
+#: accounts/doctype/sales_invoice/sales_invoice.py:1944
 msgid "Invalid {0} for Inter Company Transaction."
 msgstr ""
 
@@ -33793,7 +34346,7 @@
 msgid "Inventory Dimension"
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:147
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:157
 msgid "Inventory Dimension Negative Stock"
 msgstr ""
 
@@ -33851,7 +34404,7 @@
 
 #. Name of a DocType
 #: accounts/doctype/invoice_discounting/invoice_discounting.json
-#: accounts/doctype/sales_invoice/sales_invoice.js:144
+#: accounts/doctype/sales_invoice/sales_invoice.js:151
 msgid "Invoice Discounting"
 msgstr ""
 
@@ -33862,7 +34415,7 @@
 msgid "Invoice Discounting"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1065
+#: accounts/report/accounts_receivable/accounts_receivable.py:1073
 msgid "Invoice Grand Total"
 msgstr ""
 
@@ -33939,7 +34492,8 @@
 msgid "Invoice Status"
 msgstr ""
 
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:77
+#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool_dashboard.html:7
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:85
 msgid "Invoice Type"
 msgstr ""
 
@@ -33974,7 +34528,7 @@
 msgid "Invoice Type"
 msgstr ""
 
-#: projects/doctype/timesheet/timesheet.py:376
+#: projects/doctype/timesheet/timesheet.py:386
 msgid "Invoice already created for all billing hours"
 msgstr ""
 
@@ -33984,12 +34538,13 @@
 msgid "Invoice and Billing"
 msgstr ""
 
-#: projects/doctype/timesheet/timesheet.py:373
+#: projects/doctype/timesheet/timesheet.py:383
 msgid "Invoice can't be made for zero billing hour"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:168
-#: accounts/report/accounts_receivable/accounts_receivable.py:1067
+#: accounts/report/accounts_receivable/accounts_receivable.html:144
+#: accounts/report/accounts_receivable/accounts_receivable.py:1075
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:168
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.py:104
 msgid "Invoiced Amount"
@@ -33999,7 +34554,7 @@
 msgid "Invoiced Qty"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2028
+#: accounts/doctype/sales_invoice/sales_invoice.py:1997
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:62
 msgid "Invoices"
 msgstr ""
@@ -34081,7 +34636,7 @@
 msgid "Is Account Payable"
 msgstr ""
 
-#: projects/report/project_summary/project_summary.js:17
+#: projects/report/project_summary/project_summary.js:16
 msgid "Is Active"
 msgstr ""
 
@@ -34140,7 +34695,7 @@
 msgid "Is Advance"
 msgstr ""
 
-#: selling/doctype/quotation/quotation.js:294
+#: selling/doctype/quotation/quotation.js:306
 msgid "Is Alternative"
 msgstr ""
 
@@ -34448,9 +35003,9 @@
 msgid "Is Fully Depreciated"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:110
-#: accounts/doctype/cost_center/cost_center_tree.js:23
-#: stock/doctype/warehouse/warehouse_tree.js:16
+#: accounts/doctype/account/account_tree.js:137
+#: accounts/doctype/cost_center/cost_center_tree.js:30
+#: stock/doctype/warehouse/warehouse_tree.js:20
 msgid "Is Group"
 msgstr ""
 
@@ -34724,7 +35279,13 @@
 msgid "Is Rejected"
 msgstr ""
 
-#: accounts/report/pos_register/pos_register.js:64
+#. Label of a Check field in DocType 'Warehouse'
+#: stock/doctype/warehouse/warehouse.json
+msgctxt "Warehouse"
+msgid "Is Rejected Warehouse"
+msgstr ""
+
+#: accounts/report/pos_register/pos_register.js:63
 #: accounts/report/pos_register/pos_register.py:226
 msgid "Is Return"
 msgstr ""
@@ -34874,7 +35435,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: assets/doctype/asset/asset_list.js:26 public/js/communication.js:12
+#: assets/doctype/asset/asset_list.js:19 public/js/communication.js:13
 #: support/doctype/issue/issue.json
 msgid "Issue"
 msgstr ""
@@ -34939,15 +35500,15 @@
 msgid "Issue Date"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:127
+#: stock/doctype/material_request/material_request.js:138
 msgid "Issue Material"
 msgstr ""
 
 #. Name of a DocType
 #: support/doctype/issue_priority/issue_priority.json
-#: support/report/issue_analytics/issue_analytics.js:64
+#: support/report/issue_analytics/issue_analytics.js:63
 #: support/report/issue_analytics/issue_analytics.py:64
-#: support/report/issue_summary/issue_summary.js:52
+#: support/report/issue_summary/issue_summary.js:51
 #: support/report/issue_summary/issue_summary.py:61
 msgid "Issue Priority"
 msgstr ""
@@ -34995,7 +35556,7 @@
 msgid "Issue a debit note with 0 qty against an existing Sales Invoice"
 msgstr ""
 
-#: stock/doctype/material_request/material_request_list.js:29
+#: stock/doctype/material_request/material_request_list.js:33
 msgid "Issued"
 msgstr ""
 
@@ -35047,70 +35608,79 @@
 msgid "It can take upto few hours for accurate stock values to be visible after merging items."
 msgstr ""
 
-#: public/js/controllers/transaction.js:1839
+#: public/js/controllers/transaction.js:1882
 msgid "It is needed to fetch Item Details."
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:135
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:156
 msgid "It's not possible to distribute charges equally when total amount is zero, please set 'Distribute Charges Based On' as 'Quantity'"
 msgstr ""
 
 #. Name of a DocType
-#: accounts/report/inactive_sales_items/inactive_sales_items.js:16
+#: accounts/report/inactive_sales_items/inactive_sales_items.js:15
 #: accounts/report/inactive_sales_items/inactive_sales_items.py:32
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:22
 #: buying/report/procurement_tracker/procurement_tracker.py:60
-#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:50
+#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:49
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:33
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:206
-#: controllers/taxes_and_totals.py:1018
+#: controllers/taxes_and_totals.py:1019
+#: manufacturing/doctype/plant_floor/plant_floor.js:81
+#: manufacturing/doctype/workstation/workstation_job_card.html:91
 #: manufacturing/report/bom_stock_calculated/bom_stock_calculated.py:51
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:9
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:19
 #: manufacturing/report/bom_stock_report/bom_stock_report.py:25
-#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:67
-#: manufacturing/report/process_loss_report/process_loss_report.js:16
+#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:68
+#: manufacturing/report/process_loss_report/process_loss_report.js:15
 #: manufacturing/report/process_loss_report/process_loss_report.py:75
-#: public/js/bom_configurator/bom_configurator.bundle.js:202
-#: public/js/bom_configurator/bom_configurator.bundle.js:270
+#: public/js/bom_configurator/bom_configurator.bundle.js:170
+#: public/js/bom_configurator/bom_configurator.bundle.js:208
+#: public/js/bom_configurator/bom_configurator.bundle.js:295
 #: public/js/purchase_trends_filters.js:48
-#: public/js/purchase_trends_filters.js:65 public/js/sales_trends_filters.js:23
-#: public/js/sales_trends_filters.js:41 public/js/stock_analytics.js:61
-#: selling/doctype/sales_order/sales_order.js:977
-#: selling/report/customer_wise_item_price/customer_wise_item_price.js:15
-#: selling/report/item_wise_sales_history/item_wise_sales_history.js:37
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:63
-#: stock/dashboard/item_dashboard.js:208 stock/doctype/item/item.json
+#: public/js/purchase_trends_filters.js:63 public/js/sales_trends_filters.js:23
+#: public/js/sales_trends_filters.js:39 public/js/stock_analytics.js:92
+#: selling/doctype/sales_order/sales_order.js:1139
+#: selling/page/point_of_sale/pos_item_cart.js:46
+#: selling/report/customer_wise_item_price/customer_wise_item_price.js:14
+#: selling/report/item_wise_sales_history/item_wise_sales_history.js:36
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:61
+#: stock/dashboard/item_dashboard.js:216 stock/doctype/item/item.json
 #: stock/doctype/putaway_rule/putaway_rule.py:313
 #: stock/page/stock_balance/stock_balance.js:23
 #: stock/page/warehouse_capacity_summary/warehouse_capacity_summary.js:36
+#: stock/page/warehouse_capacity_summary/warehouse_capacity_summary_header.html:7
 #: stock/report/batch_item_expiry_status/batch_item_expiry_status.js:24
 #: stock/report/batch_item_expiry_status/batch_item_expiry_status.py:32
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.py:74
-#: stock/report/item_price_stock/item_price_stock.js:9
+#: stock/report/item_price_stock/item_price_stock.js:8
 #: stock/report/item_prices/item_prices.py:50
 #: stock/report/item_shortage_report/item_shortage_report.py:88
-#: stock/report/item_variant_details/item_variant_details.js:11
+#: stock/report/item_variant_details/item_variant_details.js:10
 #: stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py:55
 #: stock/report/product_bundle_balance/product_bundle_balance.js:16
 #: stock/report/product_bundle_balance/product_bundle_balance.py:82
-#: stock/report/reserved_stock/reserved_stock.js:33
+#: stock/report/reserved_stock/reserved_stock.js:30
 #: stock/report/reserved_stock/reserved_stock.py:103
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:28
 #: stock/report/stock_ageing/stock_ageing.js:37
-#: stock/report/stock_analytics/stock_analytics.js:16
+#: stock/report/stock_analytics/stock_analytics.js:15
 #: stock/report/stock_analytics/stock_analytics.py:30
 #: stock/report/stock_balance/stock_balance.js:39
-#: stock/report/stock_balance/stock_balance.py:361
+#: stock/report/stock_balance/stock_balance.py:369
 #: stock/report/stock_ledger/stock_ledger.js:42
-#: stock/report/stock_ledger/stock_ledger.py:109
+#: stock/report/stock_ledger/stock_ledger.py:182
 #: stock/report/stock_ledger_variance/stock_ledger_variance.js:27
 #: stock/report/stock_ledger_variance/stock_ledger_variance.py:49
 #: stock/report/stock_projected_qty/stock_projected_qty.js:28
 #: stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py:58
 #: stock/report/total_stock_summary/total_stock_summary.py:22
-#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:32
+#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:31
 #: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py:92
-#: templates/emails/reorder_item.html:8 templates/generators/bom.html:19
-#: templates/pages/material_request_info.html:42 templates/pages/order.html:83
+#: templates/emails/reorder_item.html:8
+#: templates/form_grid/material_request_grid.html:6
+#: templates/form_grid/stock_entry_grid.html:8 templates/generators/bom.html:19
+#: templates/pages/material_request_info.html:42 templates/pages/order.html:95
 msgid "Item"
 msgstr ""
 
@@ -35304,6 +35874,10 @@
 msgid "Item Barcode"
 msgstr ""
 
+#: selling/page/point_of_sale/pos_item_cart.js:46
+msgid "Item Cart"
+msgstr ""
+
 #: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:69
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:36
 #: accounts/report/gross_profit/gross_profit.py:224
@@ -35313,40 +35887,41 @@
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:193
 #: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:200
 #: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.py:36
+#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:155
 #: manufacturing/report/bom_explorer/bom_explorer.py:49
-#: manufacturing/report/bom_operations_time/bom_operations_time.js:9
+#: manufacturing/report/bom_operations_time/bom_operations_time.js:8
 #: manufacturing/report/bom_operations_time/bom_operations_time.py:103
 #: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:102
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:76
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:75
 #: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.py:166
 #: manufacturing/report/production_planning_report/production_planning_report.py:349
-#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.js:28
+#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.js:27
 #: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:86
 #: manufacturing/report/work_order_stock_report/work_order_stock_report.py:119
-#: projects/doctype/timesheet/timesheet.js:187
-#: public/js/controllers/transaction.js:2112 public/js/utils.js:459
-#: public/js/utils.js:606 selling/doctype/quotation/quotation.js:268
-#: selling/doctype/sales_order/sales_order.js:291
-#: selling/doctype/sales_order/sales_order.js:392
-#: selling/doctype/sales_order/sales_order.js:682
-#: selling/doctype/sales_order/sales_order.js:806
+#: projects/doctype/timesheet/timesheet.js:213
+#: public/js/controllers/transaction.js:2155 public/js/utils.js:511
+#: public/js/utils.js:666 selling/doctype/quotation/quotation.js:280
+#: selling/doctype/sales_order/sales_order.js:318
+#: selling/doctype/sales_order/sales_order.js:422
+#: selling/doctype/sales_order/sales_order.js:784
+#: selling/doctype/sales_order/sales_order.js:926
 #: selling/report/customer_wise_item_price/customer_wise_item_price.py:29
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:27
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:19
 #: selling/report/sales_order_analysis/sales_order_analysis.py:241
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:47
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:86
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:87
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.js:32
 #: stock/report/delayed_item_report/delayed_item_report.py:143
 #: stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:120
-#: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.js:16
+#: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.js:15
 #: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.py:105
-#: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.js:8
+#: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.js:7
 #: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:146
 #: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.py:119
 #: stock/report/item_price_stock/item_price_stock.py:18
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:127
-#: stock/report/serial_no_ledger/serial_no_ledger.js:8
+#: stock/report/serial_no_ledger/serial_no_ledger.js:7
 #: stock/report/stock_ageing/stock_ageing.py:119
 #: stock/report/stock_projected_qty/stock_projected_qty.py:99
 #: stock/report/stock_qty_vs_serial_no_count/stock_qty_vs_serial_no_count.py:26
@@ -35738,7 +36313,7 @@
 msgid "Item Code"
 msgstr ""
 
-#: manufacturing/doctype/bom_creator/bom_creator.js:61
+#: manufacturing/doctype/bom_creator/bom_creator.js:60
 msgid "Item Code (Final Product)"
 msgstr ""
 
@@ -35746,12 +36321,12 @@
 msgid "Item Code cannot be changed for Serial No."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:444
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:448
 msgid "Item Code required at Row No {0}"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:672
-#: selling/page/point_of_sale/pos_item_details.js:251
+#: selling/page/point_of_sale/pos_controller.js:704
+#: selling/page/point_of_sale/pos_item_details.js:262
 msgid "Item Code: {0} is not available under warehouse {1}."
 msgstr ""
 
@@ -35819,6 +36394,10 @@
 msgid "Item Description"
 msgstr ""
 
+#: selling/page/point_of_sale/pos_item_details.js:28
+msgid "Item Details"
+msgstr ""
+
 #. Label of a Section Break field in DocType 'Production Plan Sub Assembly
 #. Item'
 #: manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json
@@ -35827,9 +36406,9 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/report/gross_profit/gross_profit.js:43
+#: accounts/report/gross_profit/gross_profit.js:44
 #: accounts/report/gross_profit/gross_profit.py:237
-#: accounts/report/inactive_sales_items/inactive_sales_items.js:22
+#: accounts/report/inactive_sales_items/inactive_sales_items.js:21
 #: accounts/report/inactive_sales_items/inactive_sales_items.py:28
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:28
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:164
@@ -35837,36 +36416,38 @@
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:181
 #: accounts/report/purchase_register/purchase_register.js:58
 #: accounts/report/sales_register/sales_register.js:70
+#: manufacturing/doctype/plant_floor/plant_floor.js:100
+#: manufacturing/doctype/workstation/workstation_job_card.html:94
 #: public/js/purchase_trends_filters.js:49 public/js/sales_trends_filters.js:24
-#: selling/page/point_of_sale/pos_item_selector.js:159
-#: selling/report/item_wise_sales_history/item_wise_sales_history.js:31
+#: selling/page/point_of_sale/pos_item_selector.js:156
+#: selling/report/item_wise_sales_history/item_wise_sales_history.js:30
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:35
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:55
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:54
 #: selling/report/sales_partner_target_variance_based_on_item_group/item_group_wise_sales_target_variance.py:89
-#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:42
+#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:41
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:54
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js:41
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:93
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:94
 #: setup/doctype/item_group/item_group.json
 #: stock/page/stock_balance/stock_balance.js:35
 #: stock/report/cogs_by_item_group/cogs_by_item_group.py:44
-#: stock/report/delayed_item_report/delayed_item_report.js:49
-#: stock/report/delayed_order_report/delayed_order_report.js:49
+#: stock/report/delayed_item_report/delayed_item_report.js:48
+#: stock/report/delayed_order_report/delayed_order_report.js:48
 #: stock/report/item_prices/item_prices.py:52
 #: stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.js:20
 #: stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py:57
 #: stock/report/product_bundle_balance/product_bundle_balance.js:29
 #: stock/report/product_bundle_balance/product_bundle_balance.py:100
 #: stock/report/stock_ageing/stock_ageing.py:128
-#: stock/report/stock_analytics/stock_analytics.js:9
+#: stock/report/stock_analytics/stock_analytics.js:8
 #: stock/report/stock_analytics/stock_analytics.py:39
 #: stock/report/stock_balance/stock_balance.js:32
-#: stock/report/stock_balance/stock_balance.py:369
+#: stock/report/stock_balance/stock_balance.py:377
 #: stock/report/stock_ledger/stock_ledger.js:53
-#: stock/report/stock_ledger/stock_ledger.py:174
+#: stock/report/stock_ledger/stock_ledger.py:247
 #: stock/report/stock_projected_qty/stock_projected_qty.js:39
 #: stock/report/stock_projected_qty/stock_projected_qty.py:108
-#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:25
+#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:24
 #: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py:94
 msgid "Item Group"
 msgstr ""
@@ -36086,7 +36667,7 @@
 msgid "Item Group Name"
 msgstr ""
 
-#: setup/doctype/item_group/item_group.js:65
+#: setup/doctype/item_group/item_group.js:82
 msgid "Item Group Tree"
 msgstr ""
 
@@ -36152,7 +36733,8 @@
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:173
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:70
 #: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:206
-#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:95
+#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:101
+#: manufacturing/notification/material_request_receipt_notification/material_request_receipt_notification.html:8
 #: manufacturing/report/bom_explorer/bom_explorer.py:55
 #: manufacturing/report/bom_operations_time/bom_operations_time.py:109
 #: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:108
@@ -36161,7 +36743,7 @@
 #: manufacturing/report/production_planning_report/production_planning_report.py:356
 #: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:92
 #: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:128
-#: public/js/controllers/transaction.js:2118
+#: public/js/controllers/transaction.js:2161
 #: selling/report/customer_wise_item_price/customer_wise_item_price.py:35
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:33
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:25
@@ -36175,8 +36757,8 @@
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:133
 #: stock/report/stock_ageing/stock_ageing.py:125
 #: stock/report/stock_analytics/stock_analytics.py:32
-#: stock/report/stock_balance/stock_balance.py:367
-#: stock/report/stock_ledger/stock_ledger.py:115
+#: stock/report/stock_balance/stock_balance.py:375
+#: stock/report/stock_ledger/stock_ledger.py:188
 #: stock/report/stock_projected_qty/stock_projected_qty.py:105
 #: stock/report/stock_qty_vs_serial_no_count/stock_qty_vs_serial_no_count.py:32
 #: stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py:59
@@ -36559,15 +37141,15 @@
 msgid "Item Price Stock"
 msgstr ""
 
-#: stock/get_item_details.py:878
+#: stock/get_item_details.py:889
 msgid "Item Price added for {0} in Price List {1}"
 msgstr ""
 
-#: stock/doctype/item_price/item_price.py:142
+#: stock/doctype/item_price/item_price.py:136
 msgid "Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, Batch, UOM, Qty, and Dates."
 msgstr ""
 
-#: stock/get_item_details.py:862
+#: stock/get_item_details.py:873
 msgid "Item Price updated for {0} in Price List {1}"
 msgstr ""
 
@@ -36611,7 +37193,7 @@
 msgid "Item Reorder"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:109
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:130
 msgid "Item Row {0}: {1} {2} does not exist in above '{1}' table"
 msgstr ""
 
@@ -36825,7 +37407,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: stock/doctype/item/item.js:94
+#: stock/doctype/item/item.js:114
 #: stock/doctype/item_variant_settings/item_variant_settings.json
 msgid "Item Variant Settings"
 msgstr ""
@@ -36836,7 +37418,7 @@
 msgid "Item Variant Settings"
 msgstr ""
 
-#: stock/doctype/item/item.js:667
+#: stock/doctype/item/item.js:744
 msgid "Item Variant {0} already exists with same attributes"
 msgstr ""
 
@@ -36931,7 +37513,7 @@
 msgid "Item and Warranty Details"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2325
+#: stock/doctype/stock_entry/stock_entry.py:2359
 msgid "Item for row {0} does not match Material Request"
 msgstr ""
 
@@ -36939,16 +37521,16 @@
 msgid "Item has variants."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_details.js:110
+#: selling/page/point_of_sale/pos_item_details.js:108
 msgid "Item is removed since no serial / batch no selected."
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:105
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:126
 msgid "Item must be added using 'Get Items from Purchase Receipts' button"
 msgstr ""
 
 #: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.py:42
-#: selling/doctype/sales_order/sales_order.js:984
+#: selling/doctype/sales_order/sales_order.js:1146
 msgid "Item name"
 msgstr ""
 
@@ -36958,11 +37540,11 @@
 msgid "Item operation"
 msgstr ""
 
-#: controllers/accounts_controller.py:3196
+#: controllers/accounts_controller.py:3287
 msgid "Item qty can not be updated as raw materials are already processed."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:857
+#: stock/doctype/stock_entry/stock_entry.py:813
 msgid "Item rate has been updated to zero as Allow Zero Valuation Rate is checked for item {0}"
 msgstr ""
 
@@ -36972,7 +37554,11 @@
 msgid "Item to be manufactured or repacked"
 msgstr ""
 
-#: stock/utils.py:564
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.js:38
+msgid "Item valuation rate is recalculated considering landed cost voucher amount"
+msgstr ""
+
+#: stock/utils.py:559
 msgid "Item valuation reposting in progress. Report might show incorrect item valuation."
 msgstr ""
 
@@ -36984,11 +37570,11 @@
 msgid "Item {0} cannot be added as a sub-assembly of itself"
 msgstr ""
 
-#: manufacturing/doctype/blanket_order/blanket_order.py:146
+#: manufacturing/doctype/blanket_order/blanket_order.py:189
 msgid "Item {0} cannot be ordered more than {1} against Blanket Order {2}."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:231 stock/doctype/item/item.py:603
+#: assets/doctype/asset/asset.py:233 stock/doctype/item/item.py:603
 msgid "Item {0} does not exist"
 msgstr ""
 
@@ -36996,7 +37582,7 @@
 msgid "Item {0} does not exist in the system or has expired"
 msgstr ""
 
-#: controllers/selling_controller.py:655
+#: controllers/selling_controller.py:679
 msgid "Item {0} entered multiple times."
 msgstr ""
 
@@ -37004,11 +37590,11 @@
 msgid "Item {0} has already been returned"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:233
+#: assets/doctype/asset/asset.py:235
 msgid "Item {0} has been disabled"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:645
+#: selling/doctype/sales_order/sales_order.py:651
 msgid "Item {0} has no Serial No. Only serialized items can have delivery based on Serial No"
 msgstr ""
 
@@ -37016,7 +37602,7 @@
 msgid "Item {0} has reached its end of life on {1}"
 msgstr ""
 
-#: stock/stock_ledger.py:111
+#: stock/stock_ledger.py:113
 msgid "Item {0} ignored since it is not a stock item"
 msgstr ""
 
@@ -37040,43 +37626,43 @@
 msgid "Item {0} is not a stock Item"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1538
+#: stock/doctype/stock_entry/stock_entry.py:1547
 msgid "Item {0} is not active or end of life has been reached"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:235
+#: assets/doctype/asset/asset.py:237
 msgid "Item {0} must be a Fixed Asset Item"
 msgstr ""
 
-#: stock/get_item_details.py:228
+#: stock/get_item_details.py:233
 msgid "Item {0} must be a Non-Stock Item"
 msgstr ""
 
-#: stock/get_item_details.py:225
+#: stock/get_item_details.py:230
 msgid "Item {0} must be a Sub-contracted Item"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:237
+#: assets/doctype/asset/asset.py:239
 msgid "Item {0} must be a non-stock item"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1086
+#: stock/doctype/stock_entry/stock_entry.py:1095
 msgid "Item {0} not found in 'Raw Materials Supplied' table in {1} {2}"
 msgstr ""
 
-#: stock/doctype/item_price/item_price.py:57
+#: stock/doctype/item_price/item_price.py:56
 msgid "Item {0} not found."
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:342
+#: buying/doctype/purchase_order/purchase_order.py:343
 msgid "Item {0}: Ordered qty {1} cannot be less than minimum order qty {2} (defined in Item)."
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:418
+#: manufacturing/doctype/production_plan/production_plan.js:453
 msgid "Item {0}: {1} qty produced. "
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1131
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1190
 msgid "Item {} does not exist."
 msgstr ""
 
@@ -37122,9 +37708,12 @@
 msgid "Item: {0} does not exist in the system"
 msgstr ""
 
-#: public/js/utils.js:442 setup/doctype/item_group/item_group.js:70
-#: stock/doctype/delivery_note/delivery_note.js:364
-#: templates/generators/bom.html:38 templates/pages/rfq.html:37
+#: public/js/utils.js:489
+#: selling/page/point_of_sale/pos_past_order_summary.js:18
+#: setup/doctype/item_group/item_group.js:87
+#: stock/doctype/delivery_note/delivery_note.js:410
+#: templates/form_grid/item_grid.html:6 templates/generators/bom.html:38
+#: templates/pages/rfq.html:37
 msgid "Items"
 msgstr ""
 
@@ -37295,8 +37884,8 @@
 msgid "Items Filter"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:1462
-#: selling/doctype/sales_order/sales_order.js:1018
+#: manufacturing/doctype/production_plan/production_plan.py:1484
+#: selling/doctype/sales_order/sales_order.js:1182
 msgid "Items Required"
 msgstr ""
 
@@ -37312,15 +37901,15 @@
 msgid "Items and Pricing"
 msgstr ""
 
-#: controllers/accounts_controller.py:3416
+#: controllers/accounts_controller.py:3507
 msgid "Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}."
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:824
+#: selling/doctype/sales_order/sales_order.js:962
 msgid "Items for Raw Material Request"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:853
+#: stock/doctype/stock_entry/stock_entry.py:809
 msgid "Items rate has been updated to zero as Allow Zero Valuation Rate is checked for the following items: {0}"
 msgstr ""
 
@@ -37330,7 +37919,7 @@
 msgid "Items to Be Repost"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:1461
+#: manufacturing/doctype/production_plan/production_plan.py:1483
 msgid "Items to Manufacture are required to pull the Raw Materials associated with it."
 msgstr ""
 
@@ -37339,11 +37928,11 @@
 msgid "Items to Order and Receive"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:252
+#: selling/doctype/sales_order/sales_order.js:278
 msgid "Items to Reserve"
 msgstr ""
 
-#. Description of the 'Parent Warehouse' (Link) field in DocType 'Pick List'
+#. Description of the 'Warehouse' (Link) field in DocType 'Pick List'
 #: stock/doctype/pick_list/pick_list.json
 msgctxt "Pick List"
 msgid "Items under this warehouse will be suggested"
@@ -37368,11 +37957,18 @@
 msgid "JAN"
 msgstr ""
 
+#. Label of a Int field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Job Capacity"
+msgstr ""
+
 #. Name of a DocType
 #: manufacturing/doctype/job_card/job_card.json
-#: manufacturing/doctype/job_card/job_card.py:765
-#: manufacturing/doctype/work_order/work_order.js:283
-#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:28
+#: manufacturing/doctype/job_card/job_card.py:772
+#: manufacturing/doctype/work_order/work_order.js:300
+#: manufacturing/doctype/workstation/workstation_job_card.html:23
+#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:29
 #: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:88
 msgid "Job Card"
 msgstr ""
@@ -37476,11 +38072,17 @@
 msgid "Job Card Time Log"
 msgstr ""
 
-#: accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js:94
+#. Label of a Tab Break field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Job Cards"
+msgstr ""
+
+#: accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js:95
 msgid "Job Paused"
 msgstr ""
 
-#: accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js:54
+#: accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js:53
 msgid "Job Started"
 msgstr ""
 
@@ -37502,11 +38104,11 @@
 msgid "Job Title"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:1562
+#: manufacturing/doctype/work_order/work_order.py:1576
 msgid "Job card {0} created"
 msgstr ""
 
-#: utilities/bulk_transaction.py:48
+#: utilities/bulk_transaction.py:52
 msgid "Job: {0} has been triggered for processing failed transactions"
 msgstr ""
 
@@ -37520,19 +38122,20 @@
 msgid "Joining"
 msgstr ""
 
-#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:29
+#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:30
 msgid "Journal Entries"
 msgstr ""
 
-#: accounts/utils.py:866
+#: accounts/utils.py:875
 msgid "Journal Entries {0} are un-linked"
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/account/account_tree.js:146
+#: accounts/doctype/account/account_tree.js:205
 #: accounts/doctype/journal_entry/journal_entry.json
 #: accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html:10
-#: assets/doctype/asset/asset.js:246 assets/doctype/asset/asset.js:249
+#: assets/doctype/asset/asset.js:282 assets/doctype/asset/asset.js:291
+#: templates/form_grid/bank_reconciliation_grid.html:3
 msgid "Journal Entry"
 msgstr ""
 
@@ -37617,7 +38220,7 @@
 msgid "Journal Entry Type"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:471
+#: accounts/doctype/journal_entry/journal_entry.py:487
 msgid "Journal Entry for Asset scrapping cannot be cancelled. Please restore the Asset."
 msgstr ""
 
@@ -37627,11 +38230,11 @@
 msgid "Journal Entry for Scrap"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:232
+#: accounts/doctype/journal_entry/journal_entry.py:248
 msgid "Journal Entry type should be set as Depreciation Entry for asset depreciation"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:597
+#: accounts/doctype/journal_entry/journal_entry.py:624
 msgid "Journal Entry {0} does not have account {1} or already matched against other voucher"
 msgstr ""
 
@@ -37641,14 +38244,19 @@
 msgid "Journals"
 msgstr ""
 
-#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:95
+#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:99
 msgid "Journals have been created"
 msgstr ""
 
-#: projects/doctype/project/project.js:86
+#: projects/doctype/project/project.js:104
 msgid "Kanban Board"
 msgstr ""
 
+#. Description of a DocType
+#: crm/doctype/campaign/campaign.json
+msgid "Keep Track of Sales Campaigns. Keep track of Leads, Quotations, Sales Order etc from Campaigns to gauge Return on Investment. "
+msgstr ""
+
 #. Label of a Data field in DocType 'Currency Exchange Settings Details'
 #: accounts/doctype/currency_exchange_settings_details/currency_exchange_settings_details.json
 msgctxt "Currency Exchange Settings Details"
@@ -37669,11 +38277,11 @@
 msgid "Key Reports"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:768
+#: manufacturing/doctype/job_card/job_card.py:775
 msgid "Kindly cancel the Manufacturing Entries first against the work order {0}."
 msgstr ""
 
-#: public/js/utils/party.js:221
+#: public/js/utils/party.js:264
 msgid "Kindly select the company first"
 msgstr ""
 
@@ -37813,7 +38421,7 @@
 msgid "Last Name"
 msgstr ""
 
-#: stock/doctype/shipment/shipment.js:247
+#: stock/doctype/shipment/shipment.js:275
 msgid "Last Name, Email or Phone/Mobile of the user are mandatory to continue."
 msgstr ""
 
@@ -37856,7 +38464,7 @@
 msgid "Last Purchase Rate"
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:313
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:324
 msgid "Last Stock Transaction for item {0} under warehouse {1} was on {2}."
 msgstr ""
 
@@ -37868,7 +38476,7 @@
 msgid "Latest"
 msgstr ""
 
-#: stock/report/stock_balance/stock_balance.py:479
+#: stock/report/stock_balance/stock_balance.py:487
 msgid "Latest Age"
 msgstr ""
 
@@ -37885,11 +38493,11 @@
 msgstr ""
 
 #. Name of a DocType
-#: crm/doctype/lead/lead.json crm/report/lead_details/lead_details.js:34
+#: crm/doctype/lead/lead.json crm/report/lead_details/lead_details.js:33
 #: crm/report/lead_details/lead_details.py:18
 #: crm/report/prospects_engaged_but_not_converted/prospects_engaged_but_not_converted.js:8
 #: crm/report/prospects_engaged_but_not_converted/prospects_engaged_but_not_converted.py:28
-#: public/js/communication.js:20
+#: public/js/communication.js:25
 msgid "Lead"
 msgstr ""
 
@@ -38155,9 +38763,9 @@
 msgid "Leave blank to use the standard Delivery Note format"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:18
-#: accounts/doctype/payment_entry/payment_entry.js:265
-#: accounts/doctype/period_closing_voucher/period_closing_voucher.js:24
+#: accounts/doctype/journal_entry/journal_entry.js:54
+#: accounts/doctype/payment_entry/payment_entry.js:343
+#: accounts/doctype/period_closing_voucher/period_closing_voucher.js:25
 msgid "Ledger"
 msgstr ""
 
@@ -38200,10 +38808,15 @@
 msgid "Left Index"
 msgstr ""
 
-#: setup/doctype/company/company.py:389
+#: setup/doctype/company/company.py:388
 msgid "Legal"
 msgstr ""
 
+#. Description of a DocType
+#: setup/doctype/company/company.json
+msgid "Legal Entity / Subsidiary with a separate Chart of Accounts belonging to the Organization."
+msgstr ""
+
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:59
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:84
 msgid "Legal Expenses"
@@ -38229,7 +38842,7 @@
 msgid "Length (cm)"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:657
+#: accounts/doctype/payment_entry/payment_entry.js:807
 msgid "Less Than Amount"
 msgstr ""
 
@@ -38550,7 +39163,7 @@
 msgid "Liabilities"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:27
+#: accounts/report/account_balance/account_balance.js:26
 msgid "Liability"
 msgstr ""
 
@@ -38647,20 +39260,20 @@
 msgid "Link existing Quality Procedure."
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:487
+#: buying/doctype/purchase_order/purchase_order.js:564
 msgid "Link to Material Request"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:378
-#: buying/doctype/supplier_quotation/supplier_quotation.js:52
+#: buying/doctype/request_for_quotation/request_for_quotation.js:407
+#: buying/doctype/supplier_quotation/supplier_quotation.js:54
 msgid "Link to Material Requests"
 msgstr ""
 
-#: buying/doctype/supplier/supplier.js:107
+#: buying/doctype/supplier/supplier.js:133
 msgid "Link with Customer"
 msgstr ""
 
-#: selling/doctype/customer/customer.js:173
+#: selling/doctype/customer/customer.js:189
 msgid "Link with Supplier"
 msgstr ""
 
@@ -38685,16 +39298,16 @@
 msgid "Linked with submitted documents"
 msgstr ""
 
-#: buying/doctype/supplier/supplier.js:185
-#: selling/doctype/customer/customer.js:230
+#: buying/doctype/supplier/supplier.js:218
+#: selling/doctype/customer/customer.js:251
 msgid "Linking Failed"
 msgstr ""
 
-#: buying/doctype/supplier/supplier.js:184
+#: buying/doctype/supplier/supplier.js:217
 msgid "Linking to Customer Failed. Please try again."
 msgstr ""
 
-#: selling/doctype/customer/customer.js:229
+#: selling/doctype/customer/customer.js:250
 msgid "Linking to Supplier Failed. Please try again."
 msgstr ""
 
@@ -38716,7 +39329,7 @@
 msgid "Load All Criteria"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:298
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:276
 msgid "Loading import file..."
 msgstr ""
 
@@ -38825,6 +39438,11 @@
 msgid "Log Entries"
 msgstr ""
 
+#. Description of a DocType
+#: stock/doctype/item_price/item_price.json
+msgid "Log the selling and buying rate of an Item"
+msgstr ""
+
 #. Label of a Attach Image field in DocType 'Manufacturer'
 #: stock/doctype/manufacturer/manufacturer.json
 msgctxt "Manufacturer"
@@ -38850,7 +39468,7 @@
 msgstr ""
 
 #: buying/doctype/supplier_quotation/supplier_quotation_list.js:7
-#: selling/doctype/quotation/quotation_list.js:33
+#: selling/doctype/quotation/quotation_list.js:32
 msgid "Lost"
 msgstr ""
 
@@ -38877,7 +39495,7 @@
 msgid "Lost Opportunity"
 msgstr ""
 
-#: crm/report/lead_details/lead_details.js:39
+#: crm/report/lead_details/lead_details.js:38
 msgid "Lost Quotation"
 msgstr ""
 
@@ -38897,7 +39515,7 @@
 msgid "Lost Quotations %"
 msgstr ""
 
-#: crm/report/lost_opportunity/lost_opportunity.js:31
+#: crm/report/lost_opportunity/lost_opportunity.js:30
 #: selling/report/lost_quotations/lost_quotations.py:24
 msgid "Lost Reason"
 msgstr ""
@@ -38914,7 +39532,7 @@
 msgstr ""
 
 #: crm/report/lost_opportunity/lost_opportunity.py:49
-#: public/js/utils/sales_common.js:410
+#: public/js/utils/sales_common.js:466
 msgid "Lost Reasons"
 msgstr ""
 
@@ -38932,7 +39550,7 @@
 msgid "Lost Reasons"
 msgstr ""
 
-#: crm/doctype/opportunity/opportunity.js:29
+#: crm/doctype/opportunity/opportunity.js:28
 msgid "Lost Reasons are required in case opportunity is Lost."
 msgstr ""
 
@@ -39010,7 +39628,7 @@
 msgid "Loyalty Point Entry Redemption"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:891
+#: selling/page/point_of_sale/pos_item_cart.js:924
 msgid "Loyalty Points"
 msgstr ""
 
@@ -39057,14 +39675,18 @@
 msgid "Loyalty Points Redemption"
 msgstr ""
 
-#: public/js/utils.js:109
+#: accounts/doctype/loyalty_program/loyalty_program.js:8
+msgid "Loyalty Points will be calculated from the spent done (via the Sales Invoice), based on collection factor mentioned."
+msgstr ""
+
+#: public/js/utils.js:136
 msgid "Loyalty Points: {0}"
 msgstr ""
 
 #. Name of a DocType
 #: accounts/doctype/loyalty_program/loyalty_program.json
-#: accounts/doctype/sales_invoice/sales_invoice.js:1041
-#: selling/page/point_of_sale/pos_item_cart.js:885
+#: accounts/doctype/sales_invoice/sales_invoice.js:1117
+#: selling/page/point_of_sale/pos_item_cart.js:917
 msgid "Loyalty Program"
 msgstr ""
 
@@ -39247,11 +39869,16 @@
 msgid "MFG-WO-.YYYY.-"
 msgstr ""
 
-#: manufacturing/report/downtime_analysis/downtime_analysis.js:22
+#: manufacturing/report/downtime_analysis/downtime_analysis.js:23
 #: manufacturing/report/downtime_analysis/downtime_analysis.py:78
+#: public/js/plant_floor_visual/visual_plant.js:86
 msgid "Machine"
 msgstr ""
 
+#: public/js/plant_floor_visual/visual_plant.js:70
+msgid "Machine Type"
+msgstr ""
+
 #. Option for the 'Stop Reason' (Select) field in DocType 'Downtime Entry'
 #: manufacturing/doctype/downtime_entry/downtime_entry.json
 msgctxt "Downtime Entry"
@@ -39264,8 +39891,8 @@
 msgid "Machine operator errors"
 msgstr ""
 
-#: setup/doctype/company/company.py:563 setup/doctype/company/company.py:578
-#: setup/doctype/company/company.py:579 setup/doctype/company/company.py:580
+#: setup/doctype/company/company.py:562 setup/doctype/company/company.py:577
+#: setup/doctype/company/company.py:578 setup/doctype/company/company.py:579
 msgid "Main"
 msgstr ""
 
@@ -39279,7 +39906,7 @@
 msgid "Main Cost Center {0} cannot be entered in the child table"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:102
+#: assets/doctype/asset/asset.js:118
 msgid "Maintain Asset"
 msgstr ""
 
@@ -39336,6 +39963,12 @@
 msgid "Maintenance"
 msgstr ""
 
+#. Option for the 'Status' (Select) field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Maintenance"
+msgstr ""
+
 #. Label of a Date field in DocType 'Maintenance Visit'
 #: maintenance/doctype/maintenance_visit/maintenance_visit.json
 msgctxt "Maintenance Visit"
@@ -39348,7 +39981,7 @@
 msgid "Maintenance Details"
 msgstr ""
 
-#: assets/doctype/asset_maintenance/asset_maintenance.js:43
+#: assets/doctype/asset_maintenance/asset_maintenance.js:41
 msgid "Maintenance Log"
 msgstr ""
 
@@ -39395,10 +40028,10 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/sales_invoice/sales_invoice.js:162
+#: accounts/doctype/sales_invoice/sales_invoice.js:175
 #: maintenance/doctype/maintenance_schedule/maintenance_schedule.json
-#: maintenance/doctype/maintenance_visit/maintenance_visit.js:78
-#: selling/doctype/sales_order/sales_order.js:582
+#: maintenance/doctype/maintenance_visit/maintenance_visit.js:81
+#: selling/doctype/sales_order/sales_order.js:673
 msgid "Maintenance Schedule"
 msgstr ""
 
@@ -39541,10 +40174,10 @@
 msgstr ""
 
 #. Name of a DocType
-#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:83
+#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:87
 #: maintenance/doctype/maintenance_visit/maintenance_visit.json
-#: selling/doctype/sales_order/sales_order.js:581
-#: support/doctype/warranty_claim/warranty_claim.js:50
+#: selling/doctype/sales_order/sales_order.js:668
+#: support/doctype/warranty_claim/warranty_claim.js:47
 msgid "Maintenance Visit"
 msgstr ""
 
@@ -39577,16 +40210,16 @@
 msgid "Major/Optional Subjects"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:51
-#: manufacturing/doctype/job_card/job_card.js:174
+#: accounts/doctype/journal_entry/journal_entry.js:100
+#: manufacturing/doctype/job_card/job_card.js:196
 msgid "Make"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:56
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:54
 msgid "Make "
 msgstr ""
 
-#: assets/doctype/asset/asset_list.js:39
+#: assets/doctype/asset/asset_list.js:29
 msgid "Make Asset Movement"
 msgstr ""
 
@@ -39616,7 +40249,7 @@
 msgid "Make Quotation"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.js:287
+#: stock/doctype/purchase_receipt/purchase_receipt.js:335
 msgid "Make Return Entry"
 msgstr ""
 
@@ -39632,7 +40265,7 @@
 msgid "Make Serial No / Batch from Work Order"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.js:227
+#: stock/doctype/purchase_receipt/purchase_receipt.js:261
 msgid "Make Stock Entry"
 msgstr ""
 
@@ -39640,20 +40273,20 @@
 msgid "Make project from a template."
 msgstr ""
 
-#: stock/doctype/item/item.js:502
+#: stock/doctype/item/item.js:569
 msgid "Make {0} Variant"
 msgstr ""
 
-#: stock/doctype/item/item.js:504
+#: stock/doctype/item/item.js:571
 msgid "Make {0} Variants"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:85 assets/doctype/asset/asset.js:89
-#: assets/doctype/asset/asset.js:93 assets/doctype/asset/asset.js:98
-#: assets/doctype/asset/asset.js:104 assets/doctype/asset/asset.js:109
-#: assets/doctype/asset/asset.js:113 assets/doctype/asset/asset.js:118
-#: assets/doctype/asset/asset.js:124 assets/doctype/asset/asset.js:136
-#: setup/doctype/company/company.js:112 setup/doctype/company/company.js:119
+#: assets/doctype/asset/asset.js:88 assets/doctype/asset/asset.js:96
+#: assets/doctype/asset/asset.js:104 assets/doctype/asset/asset.js:112
+#: assets/doctype/asset/asset.js:122 assets/doctype/asset/asset.js:131
+#: assets/doctype/asset/asset.js:139 assets/doctype/asset/asset.js:148
+#: assets/doctype/asset/asset.js:158 assets/doctype/asset/asset.js:174
+#: setup/doctype/company/company.js:134 setup/doctype/company/company.js:145
 msgid "Manage"
 msgstr ""
 
@@ -39677,22 +40310,22 @@
 msgid "Manage your orders"
 msgstr ""
 
-#: setup/doctype/company/company.py:371
+#: setup/doctype/company/company.py:370
 msgid "Management"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:168
-#: accounts/doctype/promotional_scheme/promotional_scheme.py:141
-#: buying/doctype/supplier_quotation/supplier_quotation.js:60
-#: manufacturing/doctype/bom/bom.js:71 manufacturing/doctype/bom/bom.js:482
+#: accounts/doctype/payment_entry/payment_entry.js:198
+#: accounts/doctype/promotional_scheme/promotional_scheme.py:143
+#: buying/doctype/supplier_quotation/supplier_quotation.js:65
+#: manufacturing/doctype/bom/bom.js:71 manufacturing/doctype/bom/bom.js:499
 #: manufacturing/doctype/bom/bom.py:245
 #: manufacturing/doctype/bom_update_log/bom_update_log.py:73
 #: public/js/controllers/accounts.js:249
-#: public/js/controllers/transaction.js:2484 public/js/utils/party.js:273
-#: stock/doctype/delivery_note/delivery_note.js:138
-#: stock/doctype/purchase_receipt/purchase_receipt.js:113
-#: stock/doctype/purchase_receipt/purchase_receipt.js:198
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:81
+#: public/js/controllers/transaction.js:2537 public/js/utils/party.js:317
+#: stock/doctype/delivery_note/delivery_note.js:150
+#: stock/doctype/purchase_receipt/purchase_receipt.js:127
+#: stock/doctype/purchase_receipt/purchase_receipt.js:229
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:99
 msgid "Mandatory"
 msgstr ""
 
@@ -39718,7 +40351,7 @@
 msgid "Mandatory Depends On"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1549
+#: accounts/doctype/sales_invoice/sales_invoice.py:1525
 msgid "Mandatory Field"
 msgstr ""
 
@@ -39738,11 +40371,11 @@
 msgid "Mandatory Missing"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:583
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:587
 msgid "Mandatory Purchase Order"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:605
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:609
 msgid "Mandatory Purchase Receipt"
 msgstr ""
 
@@ -39810,7 +40443,7 @@
 msgid "Manual Inspection"
 msgstr ""
 
-#: accounts/doctype/process_deferred_accounting/process_deferred_accounting.js:34
+#: accounts/doctype/process_deferred_accounting/process_deferred_accounting.js:36
 msgid "Manual entry cannot be created! Disable automatic entry for deferred accounting in accounts settings and try again"
 msgstr ""
 
@@ -39906,7 +40539,7 @@
 msgid "Manufacture against Material Request"
 msgstr ""
 
-#: stock/doctype/material_request/material_request_list.js:33
+#: stock/doctype/material_request/material_request_list.js:37
 msgid "Manufactured"
 msgstr ""
 
@@ -40038,10 +40671,15 @@
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: public/js/controllers/buying.js:337
+#: public/js/controllers/buying.js:332
 msgid "Manufacturer Part Number <b>{0}</b> is invalid"
 msgstr ""
 
+#. Description of a DocType
+#: stock/doctype/manufacturer/manufacturer.json
+msgid "Manufacturers used in Items"
+msgstr ""
+
 #. Name of a Workspace
 #: manufacturing/workspace/manufacturing/manufacturing.json
 #: selling/doctype/sales_order/sales_order_dashboard.py:26
@@ -40088,7 +40726,7 @@
 msgid "Manufacturing Manager"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1689
+#: stock/doctype/stock_entry/stock_entry.py:1698
 msgid "Manufacturing Quantity is mandatory"
 msgstr ""
 
@@ -40152,15 +40790,15 @@
 msgid "Manufacturing module is all set up!"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.js:148
+#: stock/doctype/purchase_receipt/purchase_receipt.js:168
 msgid "Mapping Purchase Receipt ..."
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:98
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:97
 msgid "Mapping Subcontracting Order ..."
 msgstr ""
 
-#: public/js/utils.js:843
+#: public/js/utils.js:913
 msgid "Mapping {0} ..."
 msgstr ""
 
@@ -40296,7 +40934,7 @@
 msgid "Margin Type"
 msgstr ""
 
-#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:19
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:15
 msgid "Margin View"
 msgstr ""
 
@@ -40306,6 +40944,15 @@
 msgid "Marital Status"
 msgstr ""
 
+#: public/js/templates/crm_activities.html:39
+#: public/js/templates/crm_activities.html:82
+msgid "Mark As Closed"
+msgstr ""
+
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:323
+msgid "Mark as unresolved"
+msgstr ""
+
 #. Name of a DocType
 #: crm/doctype/market_segment/market_segment.json
 msgid "Market Segment"
@@ -40341,7 +40988,7 @@
 msgid "Market Segment"
 msgstr ""
 
-#: setup/doctype/company/company.py:323
+#: setup/doctype/company/company.py:322
 msgid "Marketing"
 msgstr ""
 
@@ -40381,7 +41028,7 @@
 msgid "Material"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:613
+#: manufacturing/doctype/work_order/work_order.js:655
 msgid "Material Consumption"
 msgstr ""
 
@@ -40397,7 +41044,7 @@
 msgid "Material Consumption for Manufacture"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.js:420
+#: stock/doctype/stock_entry/stock_entry.js:480
 msgid "Material Consumption is not set in Manufacturing Settings."
 msgstr ""
 
@@ -40439,7 +41086,7 @@
 msgid "Material Issue"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:132
+#: stock/doctype/material_request/material_request.js:146
 msgid "Material Receipt"
 msgstr ""
 
@@ -40456,20 +41103,21 @@
 msgstr ""
 
 #. Name of a DocType
-#: buying/doctype/purchase_order/purchase_order.js:435
-#: buying/doctype/request_for_quotation/request_for_quotation.js:297
-#: buying/doctype/supplier_quotation/supplier_quotation.js:31
-#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:34
+#: buying/doctype/purchase_order/purchase_order.js:504
+#: buying/doctype/request_for_quotation/request_for_quotation.js:316
+#: buying/doctype/supplier_quotation/supplier_quotation.js:30
+#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:33
 #: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:186
-#: manufacturing/doctype/job_card/job_card.js:57
-#: manufacturing/doctype/production_plan/production_plan.js:113
-#: selling/doctype/sales_order/sales_order.js:570
+#: manufacturing/doctype/job_card/job_card.js:54
+#: manufacturing/doctype/production_plan/production_plan.js:135
+#: manufacturing/doctype/workstation/workstation_job_card.html:80
+#: selling/doctype/sales_order/sales_order.js:645
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:36
 #: stock/doctype/material_request/material_request.json
 #: stock/doctype/material_request/material_request.py:365
 #: stock/doctype/material_request/material_request.py:399
-#: stock/doctype/stock_entry/stock_entry.js:192
-#: stock/doctype/stock_entry/stock_entry.js:277
+#: stock/doctype/stock_entry/stock_entry.js:210
+#: stock/doctype/stock_entry/stock_entry.js:313
 msgid "Material Request"
 msgstr ""
 
@@ -40687,13 +41335,17 @@
 msgid "Material Request Planning"
 msgstr ""
 
+#: manufacturing/notification/material_request_receipt_notification/material_request_receipt_notification.html:1
+msgid "Material Request Type"
+msgstr ""
+
 #. Label of a Select field in DocType 'Item Reorder'
 #: stock/doctype/item_reorder/item_reorder.json
 msgctxt "Item Reorder"
 msgid "Material Request Type"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:1521
+#: selling/doctype/sales_order/sales_order.py:1544
 msgid "Material Request not created, as quantity for Raw Materials already available."
 msgstr ""
 
@@ -40708,11 +41360,11 @@
 msgid "Material Request used to make this Stock Entry"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:974
+#: controllers/subcontracting_controller.py:979
 msgid "Material Request {0} is cancelled or stopped"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:839
+#: selling/doctype/sales_order/sales_order.js:978
 msgid "Material Request {0} submitted."
 msgstr ""
 
@@ -40728,7 +41380,7 @@
 msgid "Material Requests"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:385
+#: manufacturing/doctype/production_plan/production_plan.py:391
 msgid "Material Requests Required"
 msgstr ""
 
@@ -40739,12 +41391,12 @@
 msgid "Material Requests for which Supplier Quotations are not created"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry_list.js:7
+#: stock/doctype/stock_entry/stock_entry_list.js:13
 msgid "Material Returned from WIP"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:67
-#: stock/doctype/material_request/material_request.js:119
+#: manufacturing/doctype/job_card/job_card.js:64
+#: stock/doctype/material_request/material_request.js:124
 msgid "Material Transfer"
 msgstr ""
 
@@ -40785,7 +41437,7 @@
 msgid "Material Transfer"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:122
+#: stock/doctype/material_request/material_request.js:130
 msgid "Material Transfer (In Transit)"
 msgstr ""
 
@@ -40839,8 +41491,8 @@
 msgid "Material Transferred for Subcontract"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:314
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:190
+#: buying/doctype/purchase_order/purchase_order.js:360
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:206
 msgid "Material to Supplier"
 msgstr ""
 
@@ -40850,11 +41502,11 @@
 msgid "Materials Required (Exploded)"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:1164
+#: controllers/subcontracting_controller.py:1169
 msgid "Materials are already received against the {0} {1}"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:636
+#: manufacturing/doctype/job_card/job_card.py:643
 msgid "Materials needs to be transferred to the work in progress warehouse for the job card {0}"
 msgstr ""
 
@@ -40934,8 +41586,8 @@
 msgid "Max discount allowed for item: {0} is {1}%"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:715
-#: stock/doctype/pick_list/pick_list.js:147
+#: manufacturing/doctype/work_order/work_order.js:768
+#: stock/doctype/pick_list/pick_list.js:176
 msgid "Max: {0}"
 msgstr ""
 
@@ -40957,11 +41609,11 @@
 msgid "Maximum Payment Amount"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2842
+#: stock/doctype/stock_entry/stock_entry.py:2878
 msgid "Maximum Samples - {0} can be retained for Batch {1} and Item {2}."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2833
+#: stock/doctype/stock_entry/stock_entry.py:2869
 msgid "Maximum Samples - {0} have already been retained for Batch {1} and Item {2} in Batch {3}."
 msgstr ""
 
@@ -40983,11 +41635,11 @@
 msgid "Maximum Value"
 msgstr ""
 
-#: controllers/selling_controller.py:194
+#: controllers/selling_controller.py:195
 msgid "Maximum discount for Item {0} is {1}%"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:94
+#: public/js/utils/barcode_scanner.js:99
 msgid "Maximum quantity scanned for item {0}."
 msgstr ""
 
@@ -41025,7 +41677,7 @@
 msgid "Meeting"
 msgstr ""
 
-#: stock/stock_ledger.py:1685
+#: stock/stock_ledger.py:1705
 msgid "Mention Valuation Rate in the Item master."
 msgstr ""
 
@@ -41053,11 +41705,11 @@
 msgid "Mention if non-standard receivable account applicable"
 msgstr ""
 
-#: accounts/doctype/account/account.js:151
+#: accounts/doctype/account/account.js:152
 msgid "Merge"
 msgstr ""
 
-#: accounts/doctype/account/account.js:51
+#: accounts/doctype/account/account.js:46
 msgid "Merge Account"
 msgstr ""
 
@@ -41077,15 +41729,15 @@
 msgid "Merge Similar Account Heads"
 msgstr ""
 
-#: public/js/utils.js:873
+#: public/js/utils.js:943
 msgid "Merge taxes from multiple documents"
 msgstr ""
 
-#: accounts/doctype/account/account.js:123
+#: accounts/doctype/account/account.js:124
 msgid "Merge with Existing Account"
 msgstr ""
 
-#: accounts/doctype/cost_center/cost_center.js:66
+#: accounts/doctype/cost_center/cost_center.js:68
 msgid "Merge with existing"
 msgstr ""
 
@@ -41095,7 +41747,7 @@
 msgid "Merged"
 msgstr ""
 
-#: accounts/doctype/account/account.py:546
+#: accounts/doctype/account/account.py:565
 msgid "Merging is only possible if following properties are same in both records. Is Group, Root Type, Company and Account Currency"
 msgstr ""
 
@@ -41103,6 +41755,10 @@
 msgid "Merging {0} of {1}"
 msgstr ""
 
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:491
+msgid "Message"
+msgstr ""
+
 #. Label of a Text field in DocType 'Payment Request'
 #: accounts/doctype/payment_request/payment_request.json
 msgctxt "Payment Request"
@@ -41133,7 +41789,7 @@
 msgid "Message Examples"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.js:38
+#: accounts/doctype/payment_request/payment_request.js:47
 #: setup/doctype/email_digest/email_digest.js:26
 msgid "Message Sent"
 msgstr ""
@@ -41162,6 +41818,10 @@
 msgid "Messages greater than 160 characters will be split into multiple messages"
 msgstr ""
 
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:123
+msgid "Meta Data"
+msgstr ""
+
 #: setup/setup_wizard/operations/install_fixtures.py:263
 #: setup/setup_wizard/operations/install_fixtures.py:379
 msgid "Middle Income"
@@ -41328,32 +41988,32 @@
 msgid "Mismatch"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1132
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1191
 msgid "Missing"
 msgstr ""
 
 #: accounts/doctype/pos_opening_entry/pos_opening_entry.py:69
 #: accounts/doctype/pos_profile/pos_profile.py:166
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:548
-#: accounts/doctype/sales_invoice/sales_invoice.py:2044
-#: accounts/doctype/sales_invoice/sales_invoice.py:2602
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:552
+#: accounts/doctype/sales_invoice/sales_invoice.py:2013
+#: accounts/doctype/sales_invoice/sales_invoice.py:2571
 #: assets/doctype/asset_category/asset_category.py:115
 msgid "Missing Account"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1403
+#: accounts/doctype/sales_invoice/sales_invoice.py:1414
 msgid "Missing Asset"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:179 assets/doctype/asset/asset.py:265
+#: accounts/doctype/gl_entry/gl_entry.py:169 assets/doctype/asset/asset.py:267
 msgid "Missing Cost Center"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:309
+#: assets/doctype/asset/asset.py:311
 msgid "Missing Finance Book"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1280
+#: stock/doctype/stock_entry/stock_entry.py:1289
 msgid "Missing Finished Good"
 msgstr ""
 
@@ -41373,7 +42033,7 @@
 msgid "Missing Serial No Bundle"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:743
+#: selling/doctype/customer/customer.py:754
 msgid "Missing Values Required"
 msgstr ""
 
@@ -41381,12 +42041,12 @@
 msgid "Missing Warehouse"
 msgstr ""
 
-#: stock/doctype/delivery_trip/delivery_trip.js:132
+#: stock/doctype/delivery_trip/delivery_trip.js:153
 msgid "Missing email template for dispatch. Please set one in Delivery Settings."
 msgstr ""
 
 #: manufacturing/doctype/bom/bom.py:957
-#: manufacturing/doctype/work_order/work_order.py:979
+#: manufacturing/doctype/work_order/work_order.py:993
 msgid "Missing value"
 msgstr ""
 
@@ -41526,7 +42186,7 @@
 msgid "Mobile No"
 msgstr ""
 
-#: public/js/utils/contact_address_quick_entry.js:48
+#: public/js/utils/contact_address_quick_entry.js:51
 msgid "Mobile Number"
 msgstr ""
 
@@ -41539,7 +42199,7 @@
 
 #. Name of a DocType
 #: accounts/doctype/mode_of_payment/mode_of_payment.json
-#: accounts/doctype/payment_order/payment_order.js:109
+#: accounts/doctype/payment_order/payment_order.js:124
 #: accounts/doctype/pos_closing_entry/closing_voucher_details.html:40
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:47
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.js:35
@@ -41779,21 +42439,21 @@
 msgid "Month(s) after the end of the invoice month"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:64
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:67
+#: accounts/report/budget_variance_report/budget_variance_report.js:62
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:75
 #: accounts/report/gross_profit/gross_profit.py:342
-#: buying/report/purchase_analytics/purchase_analytics.js:62
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:58
-#: manufacturing/report/production_analytics/production_analytics.js:35
-#: public/js/financial_statements.js:217
+#: buying/report/purchase_analytics/purchase_analytics.js:61
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:57
+#: manufacturing/report/production_analytics/production_analytics.js:34
+#: public/js/financial_statements.js:226
 #: public/js/purchase_trends_filters.js:19 public/js/sales_trends_filters.js:11
-#: public/js/stock_analytics.js:53
-#: selling/report/sales_analytics/sales_analytics.js:62
-#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:33
-#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:33
-#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:33
-#: stock/report/stock_analytics/stock_analytics.js:81
-#: support/report/issue_analytics/issue_analytics.js:43
+#: public/js/stock_analytics.js:83
+#: selling/report/sales_analytics/sales_analytics.js:69
+#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:32
+#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:32
+#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:32
+#: stock/report/stock_analytics/stock_analytics.js:80
+#: support/report/issue_analytics/issue_analytics.js:42
 msgid "Monthly"
 msgstr ""
 
@@ -41843,7 +42503,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/cost_center/cost_center_tree.js:44
+#: accounts/doctype/cost_center/cost_center_tree.js:69
 #: accounts/doctype/monthly_distribution/monthly_distribution.json
 msgid "Monthly Distribution"
 msgstr ""
@@ -42089,14 +42749,20 @@
 msgid "More columns found than expected. Please compare the uploaded file with standard template"
 msgstr ""
 
-#: stock/doctype/batch/batch.js:111 stock/doctype/batch/batch_dashboard.py:10
+#: manufacturing/doctype/plant_floor/stock_summary_template.html:58
+#: stock/dashboard/item_dashboard_list.html:52 stock/doctype/batch/batch.js:70
+#: stock/doctype/batch/batch.js:128 stock/doctype/batch/batch_dashboard.py:10
 msgid "Move"
 msgstr ""
 
-#: stock/dashboard/item_dashboard.js:205
+#: stock/dashboard/item_dashboard.js:212
 msgid "Move Item"
 msgstr ""
 
+#: manufacturing/doctype/plant_floor/plant_floor.js:211
+msgid "Move Stock"
+msgstr ""
+
 #: templates/includes/macros.html:169
 msgid "Move to Cart"
 msgstr ""
@@ -42139,11 +42805,11 @@
 msgid "Multi Currency"
 msgstr ""
 
-#: manufacturing/doctype/bom_creator/bom_creator.js:42
+#: manufacturing/doctype/bom_creator/bom_creator.js:41
 msgid "Multi-level BOM Creator"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:369
+#: selling/doctype/customer/customer.py:381
 msgid "Multiple Loyalty Programs found for Customer {}. Please select manually."
 msgstr ""
 
@@ -42158,7 +42824,7 @@
 msgid "Multiple Tier Program"
 msgstr ""
 
-#: stock/doctype/item/item.js:106
+#: stock/doctype/item/item.js:138
 msgid "Multiple Variants"
 msgstr ""
 
@@ -42166,11 +42832,11 @@
 msgid "Multiple Warehouse Accounts"
 msgstr ""
 
-#: controllers/accounts_controller.py:899
+#: controllers/accounts_controller.py:951
 msgid "Multiple fiscal years exist for the date {0}. Please set company in Fiscal Year"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1287
+#: stock/doctype/stock_entry/stock_entry.py:1296
 msgid "Multiple items cannot be marked as finished item"
 msgstr ""
 
@@ -42207,9 +42873,9 @@
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.py:86
 #: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py:357
 #: crm/report/prospects_engaged_but_not_converted/prospects_engaged_but_not_converted.py:29
-#: manufacturing/doctype/bom_creator/bom_creator.js:45
-#: public/js/utils/serial_no_batch_selector.js:404
-#: selling/doctype/quotation/quotation.js:261
+#: manufacturing/doctype/bom_creator/bom_creator.js:44
+#: public/js/utils/serial_no_batch_selector.js:413
+#: selling/doctype/quotation/quotation.js:273
 msgid "Name"
 msgstr ""
 
@@ -42267,7 +42933,7 @@
 msgid "Name of Beneficiary"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:107
+#: accounts/doctype/account/account_tree.js:124
 msgid "Name of new Account. Note: Please don't create accounts for Customers and Suppliers"
 msgstr ""
 
@@ -42446,11 +43112,11 @@
 msgid "Needs Analysis"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:377
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:431
 msgid "Negative Quantity is not allowed"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:381
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:435
 msgid "Negative Valuation Rate is not allowed"
 msgstr ""
 
@@ -42747,6 +43413,10 @@
 #: accounts/doctype/pos_closing_entry/closing_voucher_details.html:19
 #: accounts/report/purchase_register/purchase_register.py:253
 #: accounts/report/sales_register/sales_register.py:283
+#: selling/page/point_of_sale/pos_item_cart.js:92
+#: selling/page/point_of_sale/pos_item_cart.js:505
+#: selling/page/point_of_sale/pos_item_cart.js:509
+#: selling/page/point_of_sale/pos_past_order_summary.js:124
 #: templates/includes/order/order_taxes.html:5
 msgid "Net Total"
 msgstr ""
@@ -42934,15 +43604,15 @@
 msgid "Net Weight UOM"
 msgstr ""
 
-#: controllers/accounts_controller.py:1210
+#: controllers/accounts_controller.py:1277
 msgid "Net total calculation precision loss"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:164
+#: accounts/doctype/account/account_tree.js:241
 msgid "New"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:106
+#: accounts/doctype/account/account_tree.js:122
 msgid "New Account Name"
 msgstr ""
 
@@ -42956,7 +43626,7 @@
 msgid "New Assets (This Year)"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom_tree.js:56
+#: manufacturing/doctype/bom/bom_tree.js:55
 msgid "New BOM"
 msgstr ""
 
@@ -42984,21 +43654,21 @@
 msgid "New Balance In Base Currency"
 msgstr ""
 
-#: stock/doctype/batch/batch.js:127
+#: stock/doctype/batch/batch.js:146
 msgid "New Batch ID (Optional)"
 msgstr ""
 
-#: stock/doctype/batch/batch.js:121
+#: stock/doctype/batch/batch.js:140
 msgid "New Batch Qty"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:100
-#: accounts/doctype/cost_center/cost_center_tree.js:16
+#: accounts/doctype/account/account_tree.js:111
+#: accounts/doctype/cost_center/cost_center_tree.js:18
 #: setup/doctype/company/company_tree.js:23
 msgid "New Company"
 msgstr ""
 
-#: accounts/doctype/cost_center/cost_center_tree.js:22
+#: accounts/doctype/cost_center/cost_center_tree.js:26
 msgid "New Cost Center Name"
 msgstr ""
 
@@ -43018,7 +43688,8 @@
 msgid "New Employee"
 msgstr ""
 
-#: public/js/utils/crm_activities.js:81
+#: public/js/templates/crm_activities.html:14
+#: public/js/utils/crm_activities.js:85
 msgid "New Event"
 msgstr ""
 
@@ -43044,6 +43715,10 @@
 msgid "New Location"
 msgstr ""
 
+#: public/js/templates/crm_notes.html:7
+msgid "New Note"
+msgstr ""
+
 #. Label of a Check field in DocType 'Email Digest'
 #: setup/doctype/email_digest/email_digest.json
 msgctxt "Email Digest"
@@ -43078,7 +43753,7 @@
 msgid "New Sales Orders"
 msgstr ""
 
-#: setup/doctype/sales_person/sales_person_tree.js:5
+#: setup/doctype/sales_person/sales_person_tree.js:3
 msgid "New Sales Person Name"
 msgstr ""
 
@@ -43086,15 +43761,16 @@
 msgid "New Serial No cannot have Warehouse. Warehouse must be set by Stock Entry or Purchase Receipt"
 msgstr ""
 
-#: public/js/utils/crm_activities.js:63
+#: public/js/templates/crm_activities.html:8
+#: public/js/utils/crm_activities.js:67
 msgid "New Task"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:112
+#: manufacturing/doctype/bom/bom.js:111
 msgid "New Version"
 msgstr ""
 
-#: stock/doctype/warehouse/warehouse_tree.js:15
+#: stock/doctype/warehouse/warehouse_tree.js:16
 msgid "New Warehouse Name"
 msgstr ""
 
@@ -43104,10 +43780,14 @@
 msgid "New Workplace"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:338
+#: selling/doctype/customer/customer.py:350
 msgid "New credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0}"
 msgstr ""
 
+#: accounts/notification/notification_for_new_fiscal_year/notification_for_new_fiscal_year.html:3
+msgid "New fiscal year created :- "
+msgstr ""
+
 #. Description of the 'Generate New Invoices Past Due Date' (Check) field in
 #. DocType 'Subscription'
 #: accounts/doctype/subscription/subscription.json
@@ -43115,7 +43795,7 @@
 msgid "New invoices will be generated as per schedule even if current invoices are unpaid or past due date"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:218
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:255
 msgid "New release date should be in the future"
 msgstr ""
 
@@ -43123,7 +43803,7 @@
 msgid "New task"
 msgstr ""
 
-#: accounts/doctype/promotional_scheme/promotional_scheme.py:211
+#: accounts/doctype/promotional_scheme/promotional_scheme.py:213
 msgid "New {0} pricing rules are created"
 msgstr ""
 
@@ -43265,7 +43945,7 @@
 msgid "No Account matched these filters: {}"
 msgstr ""
 
-#: quality_management/doctype/quality_review/quality_review_list.js:6
+#: quality_management/doctype/quality_review/quality_review_list.js:5
 msgid "No Action"
 msgstr ""
 
@@ -43275,44 +43955,52 @@
 msgid "No Answer"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2146
+#: accounts/doctype/sales_invoice/sales_invoice.py:2115
 msgid "No Customer found for Inter Company Transactions which represents company {0}"
 msgstr ""
 
-#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:118
-#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:362
+#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:115
+#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:350
 msgid "No Customers found with selected options."
 msgstr ""
 
-#: selling/page/sales_funnel/sales_funnel.js:48
+#: selling/page/sales_funnel/sales_funnel.js:59
 msgid "No Data"
 msgstr ""
 
-#: stock/doctype/delivery_trip/delivery_trip.js:122
+#: stock/doctype/delivery_trip/delivery_trip.js:143
 msgid "No Delivery Note selected for Customer {}"
 msgstr ""
 
-#: stock/get_item_details.py:199
+#: stock/get_item_details.py:204
 msgid "No Item with Barcode {0}"
 msgstr ""
 
-#: stock/get_item_details.py:203
+#: stock/get_item_details.py:208
 msgid "No Item with Serial No {0}"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:1084
+#: controllers/subcontracting_controller.py:1089
 msgid "No Items selected for transfer."
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:668
+#: selling/doctype/sales_order/sales_order.js:769
 msgid "No Items with Bill of Materials to Manufacture"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:782
+#: selling/doctype/sales_order/sales_order.js:898
 msgid "No Items with Bill of Materials."
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:213
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js:15
+msgid "No Matching Bank Transactions Found"
+msgstr ""
+
+#: public/js/templates/crm_notes.html:44
+msgid "No Notes"
+msgstr ""
+
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:219
 msgid "No Outstanding Invoices found for this party"
 msgstr ""
 
@@ -43320,28 +44008,32 @@
 msgid "No POS Profile found. Please create a New POS Profile first"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1420
-#: accounts/doctype/journal_entry/journal_entry.py:1486
-#: accounts/doctype/journal_entry/journal_entry.py:1509
-#: stock/doctype/item/item.py:1332
+#: accounts/doctype/journal_entry/journal_entry.py:1432
+#: accounts/doctype/journal_entry/journal_entry.py:1498
+#: accounts/doctype/journal_entry/journal_entry.py:1514
+#: stock/doctype/item/item.py:1333
 msgid "No Permission"
 msgstr ""
 
-#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:23
-#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:38
+#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:22
+#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:39
 msgid "No Records for these settings."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:333
-#: accounts/doctype/sales_invoice/sales_invoice.py:949
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:337
+#: accounts/doctype/sales_invoice/sales_invoice.py:966
 msgid "No Remarks"
 msgstr ""
 
-#: stock/dashboard/item_dashboard.js:147
+#: stock/dashboard/item_dashboard.js:150
 msgid "No Stock Available Currently"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2130
+#: public/js/templates/call_link.html:30
+msgid "No Summary"
+msgstr ""
+
+#: accounts/doctype/sales_invoice/sales_invoice.py:2099
 msgid "No Supplier found for Inter Company Transactions which represents company {0}"
 msgstr ""
 
@@ -43353,32 +44045,32 @@
 msgid "No Terms"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:211
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:216
 msgid "No Unreconciled Invoices and Payments found for this party and account"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:215
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:221
 msgid "No Unreconciled Payments found for this party"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:682
+#: manufacturing/doctype/production_plan/production_plan.py:691
 msgid "No Work Orders were created"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:727
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:606
+#: stock/doctype/purchase_receipt/purchase_receipt.py:726
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:607
 msgid "No accounting entries for the following warehouses"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:651
+#: selling/doctype/sales_order/sales_order.py:657
 msgid "No active BOM found for item {0}. Delivery by Serial No cannot be ensured"
 msgstr ""
 
-#: stock/doctype/item_variant_settings/item_variant_settings.js:31
+#: stock/doctype/item_variant_settings/item_variant_settings.js:46
 msgid "No additional fields available"
 msgstr ""
 
-#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:429
+#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:417
 msgid "No billing email found for customer: {0}"
 msgstr ""
 
@@ -43386,7 +44078,7 @@
 msgid "No contacts with email IDs found."
 msgstr ""
 
-#: selling/page/sales_funnel/sales_funnel.js:115
+#: selling/page/sales_funnel/sales_funnel.js:130
 msgid "No data for this period"
 msgstr ""
 
@@ -43394,7 +44086,7 @@
 msgid "No data found. Seems like you uploaded a blank file"
 msgstr ""
 
-#: regional/report/electronic_invoice_register/electronic_invoice_register.js:38
+#: regional/report/electronic_invoice_register/electronic_invoice_register.js:37
 msgid "No data to export"
 msgstr ""
 
@@ -43406,11 +44098,15 @@
 msgid "No employee was scheduled for call popup"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1064
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:486
+msgid "No failed logs"
+msgstr ""
+
+#: accounts/doctype/payment_entry/payment_entry.js:1289
 msgid "No gain or loss in the exchange rate"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:1005
+#: controllers/subcontracting_controller.py:1010
 msgid "No item available for transfer."
 msgstr ""
 
@@ -43423,30 +44119,40 @@
 msgid "No items are available in the sales order {0} for production"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_selector.js:320
+#: selling/page/point_of_sale/pos_item_selector.js:317
 msgid "No items found. Scan barcode again."
 msgstr ""
 
+#: selling/page/point_of_sale/pos_item_cart.js:76
+msgid "No items in cart"
+msgstr ""
+
 #: setup/doctype/email_digest/email_digest.py:168
 msgid "No items to be received are overdue"
 msgstr ""
 
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:424
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:423
 msgid "No matches occurred via auto reconciliation"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:879
+#: manufacturing/doctype/production_plan/production_plan.py:888
 msgid "No material request created"
 msgstr ""
 
-#: accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py:198
+#: accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py:199
 msgid "No more children on Left"
 msgstr ""
 
-#: accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py:212
+#: accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py:213
 msgid "No more children on Right"
 msgstr ""
 
+#. Label of a Int field in DocType 'Transaction Deletion Record Details'
+#: accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.json
+msgctxt "Transaction Deletion Record Details"
+msgid "No of Docs"
+msgstr ""
+
 #. Label of a Select field in DocType 'Lead'
 #: crm/doctype/lead/lead.json
 msgctxt "Lead"
@@ -43498,6 +44204,14 @@
 msgid "No of Visits"
 msgstr ""
 
+#: public/js/templates/crm_activities.html:104
+msgid "No open event"
+msgstr ""
+
+#: public/js/templates/crm_activities.html:57
+msgid "No open task"
+msgstr ""
+
 #: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py:315
 msgid "No outstanding invoices found"
 msgstr ""
@@ -43506,15 +44220,15 @@
 msgid "No outstanding invoices require exchange rate revaluation"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1801
+#: accounts/doctype/payment_entry/payment_entry.py:1820
 msgid "No outstanding {0} found for the {1} {2} which qualify the filters you have specified."
 msgstr ""
 
-#: public/js/controllers/buying.js:439
+#: public/js/controllers/buying.js:436
 msgid "No pending Material Requests found to link for the given items."
 msgstr ""
 
-#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:436
+#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:424
 msgid "No primary email found for customer: {0}"
 msgstr ""
 
@@ -43528,15 +44242,15 @@
 msgid "No record found"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:677
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:687
 msgid "No records found in Allocation table"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:579
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:584
 msgid "No records found in the Invoices table"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:582
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:587
 msgid "No records found in the Payments table"
 msgstr ""
 
@@ -43547,7 +44261,7 @@
 msgid "No stock transactions can be created or modified before this date."
 msgstr ""
 
-#: controllers/accounts_controller.py:2435
+#: controllers/accounts_controller.py:2520
 msgid "No updates pending for reposting"
 msgstr ""
 
@@ -43555,15 +44269,15 @@
 msgid "No values"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:342
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:340
 msgid "No {0} Accounts found for this company."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2197
+#: accounts/doctype/sales_invoice/sales_invoice.py:2166
 msgid "No {0} found for Inter Company Transactions."
 msgstr ""
 
-#: assets/doctype/asset/asset.js:239
+#: assets/doctype/asset/asset.js:274
 msgid "No."
 msgstr ""
 
@@ -43573,7 +44287,7 @@
 msgid "No. of Employees"
 msgstr ""
 
-#: manufacturing/doctype/workstation/workstation.js:42
+#: manufacturing/doctype/workstation/workstation.js:66
 msgid "No. of parallel job cards which can be allowed on this workstation. Example: 2 would mean this workstation can process production for two Work Orders at a time."
 msgstr ""
 
@@ -43599,7 +44313,7 @@
 msgid "Non Profit"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1305
+#: manufacturing/doctype/bom/bom.py:1304
 msgid "Non stock items"
 msgstr ""
 
@@ -43610,7 +44324,7 @@
 msgid "None"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:315
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:369
 msgid "None of the items have any change in quantity or value."
 msgstr ""
 
@@ -43623,11 +44337,11 @@
 
 #: accounts/doctype/mode_of_payment/mode_of_payment.py:66
 #: accounts/doctype/pos_invoice/pos_invoice.py:254
-#: accounts/doctype/sales_invoice/sales_invoice.py:525
-#: assets/doctype/asset/asset.js:530 assets/doctype/asset/asset.js:547
+#: accounts/doctype/sales_invoice/sales_invoice.py:538
+#: assets/doctype/asset/asset.js:603 assets/doctype/asset/asset.js:620
 #: controllers/buying_controller.py:206
 #: selling/doctype/product_bundle/product_bundle.py:71
-#: setup/doctype/transaction_deletion_record/transaction_deletion_record.py:48
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.py:72
 msgid "Not Allowed"
 msgstr ""
 
@@ -43643,8 +44357,8 @@
 msgid "Not Applicable"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:671
-#: selling/page/point_of_sale/pos_controller.js:694
+#: selling/page/point_of_sale/pos_controller.js:703
+#: selling/page/point_of_sale/pos_controller.js:732
 msgid "Not Available"
 msgstr ""
 
@@ -43667,8 +44381,8 @@
 msgid "Not Initiated"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:744
-#: templates/pages/material_request_info.py:21 templates/pages/order.py:32
+#: buying/doctype/purchase_order/purchase_order.py:747
+#: templates/pages/material_request_info.py:21 templates/pages/order.py:34
 #: templates/pages/rfq.py:48
 msgid "Not Permitted"
 msgstr ""
@@ -43688,7 +44402,7 @@
 msgstr ""
 
 #: manufacturing/doctype/production_plan/production_plan_list.js:7
-#: manufacturing/doctype/work_order/work_order_list.js:7
+#: manufacturing/doctype/work_order/work_order_list.js:15
 #: stock/doctype/material_request/material_request_list.js:9
 msgid "Not Started"
 msgstr ""
@@ -43720,11 +44434,11 @@
 msgid "Not allow to set alternative item for the item {0}"
 msgstr ""
 
-#: accounts/doctype/accounting_dimension/accounting_dimension.py:48
+#: accounts/doctype/accounting_dimension/accounting_dimension.py:52
 msgid "Not allowed to create accounting dimension for {0}"
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:254
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:265
 msgid "Not allowed to update stock transactions older than {0}"
 msgstr ""
 
@@ -43732,31 +44446,37 @@
 msgid "Not authorized since {0} exceeds limits"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:445
+#: accounts/doctype/gl_entry/gl_entry.py:399
 msgid "Not authorized to edit frozen Account {0}"
 msgstr ""
 
+#: templates/form_grid/stock_entry_grid.html:26
+msgid "Not in Stock"
+msgstr ""
+
 #: templates/includes/products_as_grid.html:20
 msgid "Not in stock"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:667
-#: manufacturing/doctype/work_order/work_order.py:1256
-#: manufacturing/doctype/work_order/work_order.py:1390
-#: manufacturing/doctype/work_order/work_order.py:1440
-#: selling/doctype/sales_order/sales_order.py:755
-#: selling/doctype/sales_order/sales_order.py:1504
+#: buying/doctype/purchase_order/purchase_order.py:670
+#: manufacturing/doctype/work_order/work_order.py:1270
+#: manufacturing/doctype/work_order/work_order.py:1404
+#: manufacturing/doctype/work_order/work_order.py:1454
+#: selling/doctype/sales_order/sales_order.py:768
+#: selling/doctype/sales_order/sales_order.py:1527
 msgid "Not permitted"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:240
+#: buying/doctype/request_for_quotation/request_for_quotation.js:258
 #: manufacturing/doctype/bom_update_log/bom_update_log.py:100
-#: manufacturing/doctype/production_plan/production_plan.py:1607
-#: public/js/controllers/buying.js:440 selling/doctype/customer/customer.py:125
-#: selling/doctype/sales_order/sales_order.js:957
-#: stock/doctype/item/item.js:426 stock/doctype/item/item.py:539
-#: stock/doctype/stock_entry/stock_entry.py:1288
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:732
+#: manufacturing/doctype/production_plan/production_plan.py:924
+#: manufacturing/doctype/production_plan/production_plan.py:1627
+#: public/js/controllers/buying.js:437 selling/doctype/customer/customer.py:125
+#: selling/doctype/sales_order/sales_order.js:1116
+#: stock/doctype/item/item.js:494 stock/doctype/item/item.py:539
+#: stock/doctype/stock_entry/stock_entry.py:1297
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:786
+#: templates/pages/timelog_info.html:43
 msgid "Note"
 msgstr ""
 
@@ -43793,15 +44513,15 @@
 msgid "Note: Email will not be sent to disabled users"
 msgstr ""
 
-#: manufacturing/doctype/blanket_order/blanket_order.py:53
+#: manufacturing/doctype/blanket_order/blanket_order.py:91
 msgid "Note: Item {0} added multiple times"
 msgstr ""
 
-#: controllers/accounts_controller.py:450
+#: controllers/accounts_controller.py:494
 msgid "Note: Payment Entry will not be created since 'Cash or Bank Account' was not specified"
 msgstr ""
 
-#: accounts/doctype/cost_center/cost_center.js:32
+#: accounts/doctype/cost_center/cost_center.js:30
 msgid "Note: This Cost Center is a Group. Cannot make accounting entries against groups."
 msgstr ""
 
@@ -43809,10 +44529,12 @@
 msgid "Note: To merge the items, create a separate Stock Reconciliation for the old item {0}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:895
+#: accounts/doctype/journal_entry/journal_entry.py:922
 msgid "Note: {0}"
 msgstr ""
 
+#: accounts/doctype/loyalty_program/loyalty_program.js:8
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.js:38
 #: www/book_appointment/index.html:55
 msgid "Notes"
 msgstr ""
@@ -44004,12 +44726,6 @@
 msgid "Number of Depreciations Booked"
 msgstr ""
 
-#. Label of a Data field in DocType 'Transaction Deletion Record Item'
-#: setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.json
-msgctxt "Transaction Deletion Record Item"
-msgid "Number of Docs"
-msgstr ""
-
 #: crm/report/prospects_engaged_but_not_converted/prospects_engaged_but_not_converted.js:14
 msgid "Number of Interaction"
 msgstr ""
@@ -44044,11 +44760,11 @@
 msgid "Number of intervals for the interval field e.g if Interval is 'Days' and Billing Interval Count is 3, invoices will be generated every 3 days"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:109
+#: accounts/doctype/account/account_tree.js:132
 msgid "Number of new Account, it will be included in the account name as a prefix"
 msgstr ""
 
-#: accounts/doctype/cost_center/cost_center_tree.js:26
+#: accounts/doctype/cost_center/cost_center_tree.js:39
 msgid "Number of new Cost Center, it will be included in the cost center name as a prefix"
 msgstr ""
 
@@ -44123,6 +44839,12 @@
 msgid "Odometer Value (Last)"
 msgstr ""
 
+#. Option for the 'Status' (Select) field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Off"
+msgstr ""
+
 #. Label of a Date field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
@@ -44150,7 +44872,7 @@
 msgid "Offsetting Account"
 msgstr ""
 
-#: accounts/general_ledger.py:77
+#: accounts/general_ledger.py:81
 msgid "Offsetting for Accounting Dimension"
 msgstr ""
 
@@ -44200,11 +44922,11 @@
 msgid "On Converting Opportunity"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice_list.js:31
-#: buying/doctype/purchase_order/purchase_order_list.js:8
+#: accounts/doctype/purchase_invoice/purchase_invoice_list.js:27
+#: buying/doctype/purchase_order/purchase_order_list.js:17
 #: buying/doctype/supplier/supplier_list.js:5
-#: selling/doctype/sales_order/sales_order_list.js:10
-#: support/report/issue_summary/issue_summary.js:45
+#: selling/doctype/sales_order/sales_order_list.js:21
+#: support/report/issue_summary/issue_summary.js:44
 #: support/report/issue_summary/issue_summary.py:360
 msgid "On Hold"
 msgstr ""
@@ -44321,10 +45043,17 @@
 msgid "On Track"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:540
+#: manufacturing/doctype/production_plan/production_plan.js:584
 msgid "On expanding a row in the Items to Manufacture table, you'll see an option to 'Include Exploded Items'. Ticking this includes raw materials of the sub-assembly items in the production process."
 msgstr ""
 
+#. Description of the 'Use Serial / Batch Fields' (Check) field in DocType
+#. 'Stock Settings'
+#: stock/doctype/stock_settings/stock_settings.json
+msgctxt "Stock Settings"
+msgid "On submission of the stock transaction, system will auto create the Serial and Batch Bundle based on the Serial No / Batch fields."
+msgstr ""
+
 #: setup/default_energy_point_rules.py:43
 msgid "On {0} Creation"
 msgstr ""
@@ -44341,10 +45070,14 @@
 msgid "Once set, this invoice will be on hold till the set date"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:560
+#: manufacturing/doctype/work_order/work_order.js:591
 msgid "Once the Work Order is Closed. It can't be resumed."
 msgstr ""
 
+#: accounts/doctype/loyalty_program/loyalty_program.js:16
+msgid "One customer can be part of only single Loyalty Program."
+msgstr ""
+
 #: manufacturing/dashboard_fixtures.py:228
 msgid "Ongoing Job Cards"
 msgstr ""
@@ -44371,11 +45104,11 @@
 msgid "Only Include Allocated Payments"
 msgstr ""
 
-#: accounts/doctype/account/account.py:134
+#: accounts/doctype/account/account.py:135
 msgid "Only Parent can be of type {0}"
 msgstr ""
 
-#: assets/report/fixed_asset_register/fixed_asset_register.js:44
+#: assets/report/fixed_asset_register/fixed_asset_register.js:43
 msgid "Only existing assets"
 msgstr ""
 
@@ -44395,6 +45128,10 @@
 msgid "Only one Subcontracting Order can be created against a Purchase Order, cancel the existing Subcontracting Order to create a new one."
 msgstr ""
 
+#: stock/doctype/stock_entry/stock_entry.py:898
+msgid "Only one {0} entry can be created against the Work Order {1}"
+msgstr ""
+
 #. Description of the 'Customer Groups' (Table) field in DocType 'POS Profile'
 #: accounts/doctype/pos_profile/pos_profile.json
 msgctxt "POS Profile"
@@ -44420,13 +45157,14 @@
 msgid "Only {0} are supported"
 msgstr ""
 
-#: crm/report/lead_details/lead_details.js:35
+#: crm/report/lead_details/lead_details.js:34
 #: manufacturing/report/job_card_summary/job_card_summary.py:92
 #: quality_management/doctype/quality_meeting/quality_meeting_list.js:5
-#: selling/doctype/quotation/quotation_list.js:27
-#: support/report/issue_analytics/issue_analytics.js:56
-#: support/report/issue_summary/issue_summary.js:43
+#: selling/doctype/quotation/quotation_list.js:26
+#: support/report/issue_analytics/issue_analytics.js:55
+#: support/report/issue_summary/issue_summary.js:42
 #: support/report/issue_summary/issue_summary.py:348
+#: templates/pages/task_info.html:72
 msgid "Open"
 msgstr ""
 
@@ -44557,11 +45295,27 @@
 msgid "Open Activities HTML"
 msgstr ""
 
-#: public/js/call_popup/call_popup.js:114
+#: manufacturing/doctype/bom/bom_item_preview.html:21
+msgid "Open BOM {0}"
+msgstr ""
+
+#: public/js/templates/call_link.html:11
+msgid "Open Call Log"
+msgstr ""
+
+#: public/js/call_popup/call_popup.js:116
 msgid "Open Contact"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:172
+#: public/js/templates/crm_activities.html:76
+msgid "Open Event"
+msgstr ""
+
+#: public/js/templates/crm_activities.html:63
+msgid "Open Events"
+msgstr ""
+
+#: selling/page/point_of_sale/pos_controller.js:189
 msgid "Open Form View"
 msgstr ""
 
@@ -44575,6 +45329,11 @@
 msgid "Open Issues "
 msgstr ""
 
+#: manufacturing/doctype/bom/bom_item_preview.html:25
+#: manufacturing/doctype/work_order/work_order_preview.html:28
+msgid "Open Item {0}"
+msgstr ""
+
 #: setup/doctype/email_digest/templates/default.html:154
 msgid "Open Notifications"
 msgstr ""
@@ -44610,6 +45369,14 @@
 msgid "Open Sales Orders"
 msgstr ""
 
+#: public/js/templates/crm_activities.html:33
+msgid "Open Task"
+msgstr ""
+
+#: public/js/templates/crm_activities.html:21
+msgid "Open Tasks"
+msgstr ""
+
 #. Label of a Check field in DocType 'Email Digest'
 #: setup/doctype/email_digest/email_digest.json
 msgctxt "Email Digest"
@@ -44620,6 +45387,10 @@
 msgid "Open To Do "
 msgstr ""
 
+#: manufacturing/doctype/work_order/work_order_preview.html:24
+msgid "Open Work Order {0}"
+msgstr ""
+
 #. Name of a report
 #: manufacturing/report/open_work_orders/open_work_orders.json
 msgid "Open Work Orders"
@@ -44630,7 +45401,7 @@
 msgstr ""
 
 #: accounts/report/general_ledger/general_ledger.py:56
-#: public/js/stock_analytics.js:64
+#: public/js/stock_analytics.js:97
 msgid "Opening"
 msgstr ""
 
@@ -44668,7 +45439,7 @@
 msgid "Opening Accumulated Depreciation"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:428
+#: assets/doctype/asset/asset.py:430
 msgid "Opening Accumulated Depreciation must be less than or equal to {0}"
 msgstr ""
 
@@ -44718,7 +45489,7 @@
 msgid "Opening Entry"
 msgstr ""
 
-#: accounts/general_ledger.py:676
+#: accounts/general_ledger.py:685
 msgid "Opening Entry can not be created after Period Closing Voucher is created."
 msgstr ""
 
@@ -44727,7 +45498,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/account/account_tree.js:137
+#: accounts/doctype/account/account_tree.js:189
 #: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.json
 msgid "Opening Invoice Creation Tool"
 msgstr ""
@@ -44748,12 +45519,16 @@
 msgid "Opening Invoice Item"
 msgstr ""
 
-#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js:125
+#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool_dashboard.html:8
+msgid "Opening Invoices"
+msgstr ""
+
+#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js:128
 msgid "Opening Invoices Summary"
 msgstr ""
 
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.py:79
-#: stock/report/stock_balance/stock_balance.py:419
+#: stock/report/stock_balance/stock_balance.py:427
 msgid "Opening Qty"
 msgstr ""
 
@@ -44779,7 +45554,7 @@
 msgid "Opening Time"
 msgstr ""
 
-#: stock/report/stock_balance/stock_balance.py:426
+#: stock/report/stock_balance/stock_balance.py:434
 msgid "Opening Value"
 msgstr ""
 
@@ -44788,7 +45563,7 @@
 msgid "Opening and Closing"
 msgstr ""
 
-#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js:30
+#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js:31
 msgid "Opening {0} Invoices created"
 msgstr ""
 
@@ -44820,7 +45595,7 @@
 msgid "Operating Cost Per BOM Quantity"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1321
+#: manufacturing/doctype/bom/bom.py:1320
 msgid "Operating Cost as per Work Order / BOM"
 msgstr ""
 
@@ -44844,14 +45619,14 @@
 
 #. Name of a DocType
 #. Title of an Onboarding Step
-#: manufacturing/doctype/bom/bom.js:319
+#: manufacturing/doctype/bom/bom.js:332
 #: manufacturing/doctype/operation/operation.json
-#: manufacturing/doctype/work_order/work_order.js:225
+#: manufacturing/doctype/work_order/work_order.js:240
 #: manufacturing/onboarding_step/operation/operation.json
 #: manufacturing/report/bom_operations_time/bom_operations_time.py:112
-#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:48
+#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:49
 #: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:110
-#: manufacturing/report/job_card_summary/job_card_summary.js:79
+#: manufacturing/report/job_card_summary/job_card_summary.js:78
 #: manufacturing/report/job_card_summary/job_card_summary.py:167
 msgid "Operation"
 msgstr ""
@@ -44946,7 +45721,7 @@
 msgid "Operation ID"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:239
+#: manufacturing/doctype/work_order/work_order.js:254
 msgid "Operation Id"
 msgstr ""
 
@@ -44974,7 +45749,7 @@
 msgid "Operation Time "
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:985
+#: manufacturing/doctype/work_order/work_order.py:999
 msgid "Operation Time must be greater than 0 for Operation {0}"
 msgstr ""
 
@@ -44991,20 +45766,20 @@
 msgid "Operation time does not depend on quantity to produce"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:215
+#: manufacturing/doctype/job_card/job_card.js:238
 msgid "Operation {0} added multiple times in the work order {1}"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:975
+#: manufacturing/doctype/job_card/job_card.py:990
 msgid "Operation {0} does not belong to the work order {1}"
 msgstr ""
 
-#: manufacturing/doctype/workstation/workstation.py:179
+#: manufacturing/doctype/workstation/workstation.py:335
 msgid "Operation {0} longer than any available working hours in workstation {1}, break down the operation into multiple operations"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:220
-#: setup/doctype/company/company.py:341 templates/generators/bom.html:61
+#: manufacturing/doctype/work_order/work_order.js:235
+#: setup/doctype/company/company.py:340 templates/generators/bom.html:61
 msgid "Operations"
 msgstr ""
 
@@ -45034,6 +45809,7 @@
 msgid "Operations cannot be left blank"
 msgstr ""
 
+#: manufacturing/doctype/workstation/workstation.js:165
 #: manufacturing/report/downtime_analysis/downtime_analysis.py:85
 msgid "Operator"
 msgstr ""
@@ -45065,17 +45841,17 @@
 msgid "Opportunities"
 msgstr ""
 
-#: selling/page/sales_funnel/sales_funnel.js:43
+#: selling/page/sales_funnel/sales_funnel.js:48
 msgid "Opportunities by lead source"
 msgstr ""
 
 #. Name of a DocType
-#: buying/doctype/request_for_quotation/request_for_quotation.js:318
-#: crm/doctype/lead/lead.js:36 crm/doctype/opportunity/opportunity.json
-#: crm/doctype/prospect/prospect.js:15
-#: crm/report/lead_details/lead_details.js:37
+#: buying/doctype/request_for_quotation/request_for_quotation.js:340
+#: crm/doctype/lead/lead.js:33 crm/doctype/opportunity/opportunity.json
+#: crm/doctype/prospect/prospect.js:20
+#: crm/report/lead_details/lead_details.js:36
 #: crm/report/lost_opportunity/lost_opportunity.py:17
-#: public/js/communication.js:26 selling/doctype/quotation/quotation.js:133
+#: public/js/communication.js:35 selling/doctype/quotation/quotation.js:139
 msgid "Opportunity"
 msgstr ""
 
@@ -45144,7 +45920,7 @@
 msgid "Opportunity Date"
 msgstr ""
 
-#: crm/report/lost_opportunity/lost_opportunity.js:43
+#: crm/report/lost_opportunity/lost_opportunity.js:42
 #: crm/report/lost_opportunity/lost_opportunity.py:24
 msgid "Opportunity From"
 msgstr ""
@@ -45189,7 +45965,7 @@
 msgstr ""
 
 #: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.py:32
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.py:55
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.py:57
 msgid "Opportunity Owner"
 msgstr ""
 
@@ -45199,8 +45975,8 @@
 msgid "Opportunity Owner"
 msgstr ""
 
-#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:47
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:59
+#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:45
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:58
 msgid "Opportunity Source"
 msgstr ""
 
@@ -45217,9 +45993,9 @@
 #. Name of a DocType
 #: crm/doctype/opportunity_type/opportunity_type.json
 #: crm/report/lost_opportunity/lost_opportunity.py:44
-#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:53
+#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:51
 #: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.py:48
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:65
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:64
 msgid "Opportunity Type"
 msgstr ""
 
@@ -45235,7 +46011,7 @@
 msgid "Opportunity Value"
 msgstr ""
 
-#: public/js/communication.js:86
+#: public/js/communication.js:102
 msgid "Opportunity {0} created"
 msgstr ""
 
@@ -45245,11 +46021,11 @@
 msgid "Optimize Route"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:122
+#: accounts/doctype/account/account_tree.js:168
 msgid "Optional. Sets company's default currency, if not specified."
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:117
+#: accounts/doctype/account/account_tree.js:155
 msgid "Optional. This setting will be used to filter in various transactions."
 msgstr ""
 
@@ -45277,7 +46053,7 @@
 msgid "Order Amount"
 msgstr ""
 
-#: manufacturing/report/production_planning_report/production_planning_report.js:81
+#: manufacturing/report/production_planning_report/production_planning_report.js:80
 msgid "Order By"
 msgstr ""
 
@@ -45322,9 +46098,13 @@
 msgid "Order Status"
 msgstr ""
 
-#: buying/report/subcontract_order_summary/subcontract_order_summary.js:30
-#: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js:8
-#: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js:8
+#: manufacturing/notification/material_request_receipt_notification/material_request_receipt_notification.html:4
+msgid "Order Summary"
+msgstr ""
+
+#: buying/report/subcontract_order_summary/subcontract_order_summary.js:29
+#: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js:7
+#: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js:7
 msgid "Order Type"
 msgstr ""
 
@@ -45357,8 +46137,8 @@
 msgstr ""
 
 #: buying/doctype/supplier_quotation/supplier_quotation_list.js:5
-#: selling/doctype/quotation/quotation_list.js:31
-#: stock/doctype/material_request/material_request_list.js:25
+#: selling/doctype/quotation/quotation_list.js:30
+#: stock/doctype/material_request/material_request_list.js:29
 msgid "Ordered"
 msgstr ""
 
@@ -45411,6 +46191,10 @@
 msgid "Ordered Qty"
 msgstr ""
 
+#: manufacturing/doctype/production_plan/production_plan.js:150
+msgid "Ordered Qty: Quantity ordered for purchase, but not received."
+msgstr ""
+
 #: stock/report/item_shortage_report/item_shortage_report.py:102
 msgid "Ordered Quantity"
 msgstr ""
@@ -45423,7 +46207,7 @@
 
 #: buying/doctype/supplier/supplier_dashboard.py:14
 #: selling/doctype/customer/customer_dashboard.py:21
-#: selling/doctype/sales_order/sales_order.py:745
+#: selling/doctype/sales_order/sales_order.py:751
 #: setup/doctype/company/company_dashboard.py:23
 msgid "Orders"
 msgstr ""
@@ -45555,12 +46339,12 @@
 msgstr ""
 
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.py:81
-#: stock/report/stock_balance/stock_balance.py:441
-#: stock/report/stock_ledger/stock_ledger.py:146
+#: stock/report/stock_balance/stock_balance.py:449
+#: stock/report/stock_ledger/stock_ledger.py:219
 msgid "Out Qty"
 msgstr ""
 
-#: stock/report/stock_balance/stock_balance.py:447
+#: stock/report/stock_balance/stock_balance.py:455
 msgid "Out Value"
 msgstr ""
 
@@ -45577,7 +46361,7 @@
 msgid "Out of AMC"
 msgstr ""
 
-#: assets/doctype/asset/asset_list.js:23
+#: assets/doctype/asset/asset_list.js:17
 msgid "Out of Order"
 msgstr ""
 
@@ -45587,7 +46371,7 @@
 msgid "Out of Order"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:386
+#: stock/doctype/pick_list/pick_list.py:426
 msgid "Out of Stock"
 msgstr ""
 
@@ -45658,9 +46442,10 @@
 msgid "Outstanding"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:653
+#: accounts/doctype/payment_entry/payment_entry.js:799
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:179
-#: accounts/report/accounts_receivable/accounts_receivable.py:1074
+#: accounts/report/accounts_receivable/accounts_receivable.html:149
+#: accounts/report/accounts_receivable/accounts_receivable.py:1082
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:171
 #: accounts/report/purchase_register/purchase_register.py:289
 #: accounts/report/sales_register/sales_register.py:317
@@ -45717,7 +46502,7 @@
 msgid "Outstanding Cheques and Deposits to clear"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:422
+#: accounts/doctype/gl_entry/gl_entry.py:376
 msgid "Outstanding for {0} cannot be less than zero ({1})"
 msgstr ""
 
@@ -45766,7 +46551,7 @@
 msgid "Over Delivery/Receipt Allowance (%)"
 msgstr ""
 
-#: controllers/stock_controller.py:896
+#: controllers/stock_controller.py:1082
 msgid "Over Receipt"
 msgstr ""
 
@@ -45790,13 +46575,14 @@
 msgid "Overbilling of {0} {1} ignored for item {2} because you have {3} role."
 msgstr ""
 
-#: controllers/accounts_controller.py:1713
+#: controllers/accounts_controller.py:1802
 msgid "Overbilling of {} ignored because you have {} role."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:261
+#: accounts/doctype/sales_invoice/sales_invoice.py:266
 #: projects/report/project_summary/project_summary.py:94
-#: selling/doctype/sales_order/sales_order_list.js:18
+#: selling/doctype/sales_order/sales_order_list.js:29
+#: templates/pages/task_info.html:75
 msgid "Overdue"
 msgstr ""
 
@@ -46006,11 +46792,11 @@
 msgid "POS Closing Entry Taxes"
 msgstr ""
 
-#: accounts/doctype/pos_closing_entry/pos_closing_entry.js:30
+#: accounts/doctype/pos_closing_entry/pos_closing_entry.js:31
 msgid "POS Closing Failed"
 msgstr ""
 
-#: accounts/doctype/pos_closing_entry/pos_closing_entry.js:54
+#: accounts/doctype/pos_closing_entry/pos_closing_entry.js:55
 msgid "POS Closing failed while running in a background process. You can resolve the {0} and retry the process again."
 msgstr ""
 
@@ -46157,10 +46943,10 @@
 
 #. Name of a DocType
 #: accounts/doctype/pos_profile/pos_profile.json
-#: accounts/report/pos_register/pos_register.js:33
+#: accounts/report/pos_register/pos_register.js:32
 #: accounts/report/pos_register/pos_register.py:120
 #: accounts/report/pos_register/pos_register.py:193
-#: selling/page/point_of_sale/pos_controller.js:68
+#: selling/page/point_of_sale/pos_controller.js:80
 msgid "POS Profile"
 msgstr ""
 
@@ -46197,7 +46983,7 @@
 msgid "POS Profile doesn't matches {}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1119
+#: accounts/doctype/sales_invoice/sales_invoice.py:1135
 msgid "POS Profile required to make POS Entry"
 msgstr ""
 
@@ -46248,7 +47034,7 @@
 msgid "POS Transactions"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:363
+#: selling/page/point_of_sale/pos_controller.js:392
 msgid "POS invoice {0} created successfully"
 msgstr ""
 
@@ -46321,7 +47107,7 @@
 msgid "Package Weight Details"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note_list.js:65
+#: stock/doctype/delivery_note/delivery_note_list.js:74
 msgid "Packaging Slip From Delivery Note"
 msgstr ""
 
@@ -46354,7 +47140,7 @@
 msgid "Packed Items"
 msgstr ""
 
-#: controllers/stock_controller.py:739
+#: controllers/stock_controller.py:922
 msgid "Packed Items cannot be transferred internally"
 msgstr ""
 
@@ -46395,7 +47181,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: stock/doctype/delivery_note/delivery_note.js:186
+#: stock/doctype/delivery_note/delivery_note.js:221
 #: stock/doctype/packing_slip/packing_slip.json
 msgid "Packing Slip"
 msgstr ""
@@ -46411,7 +47197,7 @@
 msgid "Packing Slip Item"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:704
+#: stock/doctype/delivery_note/delivery_note.py:765
 msgid "Packing Slip(s) cancelled"
 msgstr ""
 
@@ -46521,8 +47307,8 @@
 msgid "Page {0} of {1}"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request_list.js:17
-#: accounts/doctype/sales_invoice/sales_invoice.py:267
+#: accounts/doctype/payment_request/payment_request_list.js:14
+#: accounts/doctype/sales_invoice/sales_invoice.py:272
 msgid "Paid"
 msgstr ""
 
@@ -46551,10 +47337,12 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:170
-#: accounts/report/accounts_receivable/accounts_receivable.py:1068
+#: accounts/report/accounts_receivable/accounts_receivable.html:146
+#: accounts/report/accounts_receivable/accounts_receivable.py:1076
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:169
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.py:111
 #: accounts/report/pos_register/pos_register.py:214
+#: selling/page/point_of_sale/pos_payment.js:590
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:56
 msgid "Paid Amount"
 msgstr ""
@@ -46631,7 +47419,7 @@
 msgid "Paid Amount After Tax (Company Currency)"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:881
+#: accounts/doctype/payment_entry/payment_entry.js:1059
 msgid "Paid Amount cannot be greater than total negative outstanding amount {0}"
 msgstr ""
 
@@ -46653,8 +47441,8 @@
 msgid "Paid To Account Type"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:324
-#: accounts/doctype/sales_invoice/sales_invoice.py:994
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:328
+#: accounts/doctype/sales_invoice/sales_invoice.py:1011
 msgid "Paid amount + Write Off Amount can not be greater than Grand Total"
 msgstr ""
 
@@ -46798,7 +47586,7 @@
 msgid "Parent Company"
 msgstr ""
 
-#: setup/doctype/company/company.py:460
+#: setup/doctype/company/company.py:459
 msgid "Parent Company must be a group company"
 msgstr ""
 
@@ -46908,12 +47696,6 @@
 msgid "Parent Warehouse"
 msgstr ""
 
-#. Label of a Link field in DocType 'Pick List'
-#: stock/doctype/pick_list/pick_list.json
-msgctxt "Pick List"
-msgid "Parent Warehouse"
-msgstr ""
-
 #. Label of a Link field in DocType 'Warehouse'
 #: stock/doctype/warehouse/warehouse.json
 msgctxt "Warehouse"
@@ -46926,7 +47708,7 @@
 msgid "Partial Material Transferred"
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1043
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1045
 msgid "Partial Stock Reservation"
 msgstr ""
 
@@ -46969,7 +47751,7 @@
 msgid "Partially Delivered"
 msgstr ""
 
-#: assets/doctype/asset/asset_list.js:8
+#: assets/doctype/asset/asset_list.js:7
 msgid "Partially Depreciated"
 msgstr ""
 
@@ -46985,7 +47767,7 @@
 msgid "Partially Fulfilled"
 msgstr ""
 
-#: selling/doctype/quotation/quotation_list.js:29
+#: selling/doctype/quotation/quotation_list.js:28
 msgid "Partially Ordered"
 msgstr ""
 
@@ -47001,7 +47783,7 @@
 msgid "Partially Ordered"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request_list.js:14
+#: accounts/doctype/payment_request/payment_request_list.js:12
 msgid "Partially Paid"
 msgstr ""
 
@@ -47025,7 +47807,7 @@
 msgid "Partially Paid"
 msgstr ""
 
-#: stock/doctype/material_request/material_request_list.js:21
+#: stock/doctype/material_request/material_request_list.js:25
 msgid "Partially Received"
 msgstr ""
 
@@ -47071,7 +47853,7 @@
 msgid "Parties"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt_list.js:14
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:23
 msgid "Partly Billed"
 msgstr ""
 
@@ -47129,30 +47911,38 @@
 msgid "Partnership"
 msgstr ""
 
+#. Label of a Float field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Parts Per Hour"
+msgstr ""
+
 #: accounts/doctype/bank_account/bank_account_dashboard.py:16
 #: accounts/doctype/payment_terms_template/payment_terms_template_dashboard.py:16
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:164
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:193
 #: accounts/doctype/tax_category/tax_category_dashboard.py:11
-#: accounts/report/accounts_payable/accounts_payable.js:109
-#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:86
-#: accounts/report/accounts_receivable/accounts_receivable.js:54
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:86
+#: accounts/report/accounts_payable/accounts_payable.js:112
+#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:89
+#: accounts/report/accounts_receivable/accounts_receivable.html:142
+#: accounts/report/accounts_receivable/accounts_receivable.html:159
+#: accounts/report/accounts_receivable/accounts_receivable.js:57
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:89
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:151
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:233
 #: accounts/report/general_ledger/general_ledger.js:74
-#: accounts/report/general_ledger/general_ledger.py:633
-#: accounts/report/payment_ledger/payment_ledger.js:52
+#: accounts/report/general_ledger/general_ledger.py:646
+#: accounts/report/payment_ledger/payment_ledger.js:51
 #: accounts/report/payment_ledger/payment_ledger.py:154
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:46
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:92
-#: accounts/report/tax_withholding_details/tax_withholding_details.js:27
-#: accounts/report/tds_computation_summary/tds_computation_summary.js:27
+#: accounts/report/tax_withholding_details/tax_withholding_details.js:26
+#: accounts/report/tds_computation_summary/tds_computation_summary.js:26
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.js:57
-#: crm/report/lost_opportunity/lost_opportunity.js:56
+#: crm/report/lost_opportunity/lost_opportunity.js:55
 #: crm/report/lost_opportunity/lost_opportunity.py:31
-#: public/js/bank_reconciliation_tool/data_table_manager.js:51
-#: public/js/bank_reconciliation_tool/dialog_manager.js:128
+#: public/js/bank_reconciliation_tool/data_table_manager.js:50
+#: public/js/bank_reconciliation_tool/dialog_manager.js:135
 msgid "Party"
 msgstr ""
 
@@ -47294,16 +48084,10 @@
 msgid "Party Account No. (Bank Statement)"
 msgstr ""
 
-#: controllers/accounts_controller.py:1983
+#: controllers/accounts_controller.py:2075
 msgid "Party Account {0} currency ({1}) and document currency ({2}) should be same"
 msgstr ""
 
-#. Label of a Currency field in DocType 'Journal Entry Account'
-#: accounts/doctype/journal_entry_account/journal_entry_account.json
-msgctxt "Journal Entry Account"
-msgid "Party Balance"
-msgstr ""
-
 #. Label of a Currency field in DocType 'Payment Entry'
 #: accounts/doctype/payment_entry/payment_entry.json
 msgctxt "Payment Entry"
@@ -47346,13 +48130,19 @@
 msgid "Party Information"
 msgstr ""
 
+#. Label of a Data field in DocType 'Blanket Order Item'
+#: manufacturing/doctype/blanket_order_item/blanket_order_item.json
+msgctxt "Blanket Order Item"
+msgid "Party Item Code"
+msgstr ""
+
 #. Name of a DocType
 #: accounts/doctype/party_link/party_link.json
 msgid "Party Link"
 msgstr ""
 
 #: accounts/report/general_ledger/general_ledger.js:109
-#: selling/report/address_and_contacts/address_and_contacts.js:23
+#: selling/report/address_and_contacts/address_and_contacts.js:22
 msgid "Party Name"
 msgstr ""
 
@@ -47405,16 +48195,16 @@
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:145
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:223
 #: accounts/report/general_ledger/general_ledger.js:65
-#: accounts/report/general_ledger/general_ledger.py:632
-#: accounts/report/payment_ledger/payment_ledger.js:42
+#: accounts/report/general_ledger/general_ledger.py:645
+#: accounts/report/payment_ledger/payment_ledger.js:41
 #: accounts/report/payment_ledger/payment_ledger.py:150
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:35
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:89
-#: accounts/report/tax_withholding_details/tax_withholding_details.js:16
-#: accounts/report/tds_computation_summary/tds_computation_summary.js:16
+#: accounts/report/tax_withholding_details/tax_withholding_details.js:15
+#: accounts/report/tds_computation_summary/tds_computation_summary.js:15
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.js:49
-#: public/js/bank_reconciliation_tool/data_table_manager.js:46
-#: selling/report/address_and_contacts/address_and_contacts.js:10
+#: public/js/bank_reconciliation_tool/data_table_manager.js:45
+#: selling/report/address_and_contacts/address_and_contacts.js:9
 #: setup/doctype/party_type/party_type.json
 msgid "Party Type"
 msgstr ""
@@ -47519,7 +48309,7 @@
 msgid "Party Type and Party is mandatory for {0} account"
 msgstr ""
 
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:162
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:161
 msgid "Party Type and Party is required for Receivable / Payable account {0}"
 msgstr ""
 
@@ -47533,7 +48323,7 @@
 msgid "Party User"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:308
+#: accounts/doctype/payment_entry/payment_entry.js:390
 msgid "Party can only be one of {0}"
 msgstr ""
 
@@ -47587,7 +48377,7 @@
 msgid "Path"
 msgstr ""
 
-#: accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js:84
+#: accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js:85
 msgid "Pause"
 msgstr ""
 
@@ -47597,7 +48387,7 @@
 msgid "Pause"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:259
+#: manufacturing/doctype/job_card/job_card.js:292
 msgid "Pause Job"
 msgstr ""
 
@@ -47620,6 +48410,10 @@
 msgid "Paused"
 msgstr ""
 
+#: templates/pages/order.html:43
+msgid "Pay"
+msgstr ""
+
 #. Option for the 'Payment Type' (Select) field in DocType 'Payment Entry'
 #: accounts/doctype/payment_entry/payment_entry.json
 msgctxt "Payment Entry"
@@ -47632,7 +48426,7 @@
 msgid "Pay To / Recd From"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:52
+#: accounts/report/account_balance/account_balance.js:54
 msgid "Payable"
 msgstr ""
 
@@ -47681,15 +48475,15 @@
 
 #: accounts/doctype/dunning/dunning.js:51
 #: accounts/doctype/invoice_discounting/invoice_discounting_dashboard.py:10
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:110
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:133
 #: accounts/doctype/purchase_invoice/purchase_invoice_dashboard.py:20
-#: accounts/doctype/purchase_invoice/purchase_invoice_list.js:65
-#: accounts/doctype/sales_invoice/sales_invoice.js:104
+#: accounts/doctype/purchase_invoice/purchase_invoice_list.js:52
+#: accounts/doctype/sales_invoice/sales_invoice.js:109
 #: accounts/doctype/sales_invoice/sales_invoice_dashboard.py:25
-#: accounts/doctype/sales_invoice/sales_invoice_list.js:31
-#: buying/doctype/purchase_order/purchase_order.js:328
+#: accounts/doctype/sales_invoice/sales_invoice_list.js:39
+#: buying/doctype/purchase_order/purchase_order.js:385
 #: buying/doctype/purchase_order/purchase_order_dashboard.py:20
-#: selling/doctype/sales_order/sales_order.js:606
+#: selling/doctype/sales_order/sales_order.js:713
 #: selling/doctype/sales_order/sales_order_dashboard.py:28
 msgid "Payment"
 msgstr ""
@@ -47797,15 +48591,16 @@
 msgid "Payment Entries"
 msgstr ""
 
-#: accounts/utils.py:937
+#: accounts/utils.py:946
 msgid "Payment Entries {0} are un-linked"
 msgstr ""
 
 #. Name of a DocType
 #: accounts/doctype/payment_entry/payment_entry.json
-#: accounts/doctype/payment_order/payment_order.js:22
+#: accounts/doctype/payment_order/payment_order.js:27
 #: accounts/print_format/bank_and_cash_payment_voucher/bank_and_cash_payment_voucher.html:12
 #: accounts/report/bank_clearance_summary/bank_clearance_summary.py:29
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:11
 msgid "Payment Entry"
 msgstr ""
 
@@ -47858,23 +48653,24 @@
 msgid "Payment Entry Reference"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:410
+#: accounts/doctype/payment_request/payment_request.py:413
 msgid "Payment Entry already exists"
 msgstr ""
 
-#: accounts/utils.py:604
+#: accounts/utils.py:613
 msgid "Payment Entry has been modified after you pulled it. Please pull it again."
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:568
+#: accounts/doctype/payment_request/payment_request.py:111
+#: accounts/doctype/payment_request/payment_request.py:460
 msgid "Payment Entry is already created"
 msgstr ""
 
-#: controllers/accounts_controller.py:1164
+#: controllers/accounts_controller.py:1231
 msgid "Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:261
+#: selling/page/point_of_sale/pos_payment.js:271
 msgid "Payment Failed"
 msgstr ""
 
@@ -47925,7 +48721,7 @@
 msgid "Payment Gateway Account"
 msgstr ""
 
-#: accounts/utils.py:1227
+#: accounts/utils.py:1196
 msgid "Payment Gateway Account not created, please create one manually."
 msgstr ""
 
@@ -47955,9 +48751,10 @@
 msgid "Payment Limit"
 msgstr ""
 
-#: accounts/report/pos_register/pos_register.js:51
+#: accounts/report/pos_register/pos_register.js:50
 #: accounts/report/pos_register/pos_register.py:129
 #: accounts/report/pos_register/pos_register.py:221
+#: selling/page/point_of_sale/pos_payment.js:19
 msgid "Payment Method"
 msgstr ""
 
@@ -48049,7 +48846,7 @@
 msgid "Payment Receipt Note"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:248
+#: selling/page/point_of_sale/pos_payment.js:252
 msgid "Payment Received"
 msgstr ""
 
@@ -48082,7 +48879,7 @@
 msgid "Payment Reconciliation Invoice"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:120
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:123
 msgid "Payment Reconciliation Job: {0} is running for this party. Can't reconcile now."
 msgstr ""
 
@@ -48110,12 +48907,12 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/payment_order/payment_order.js:18
+#: accounts/doctype/payment_order/payment_order.js:19
 #: accounts/doctype/payment_request/payment_request.json
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:125
-#: accounts/doctype/sales_invoice/sales_invoice.js:140
-#: buying/doctype/purchase_order/purchase_order.js:335
-#: selling/doctype/sales_order/sales_order.js:605
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:145
+#: accounts/doctype/sales_invoice/sales_invoice.js:143
+#: buying/doctype/purchase_order/purchase_order.js:393
+#: selling/doctype/sales_order/sales_order.js:709
 msgid "Payment Request"
 msgstr ""
 
@@ -48144,15 +48941,15 @@
 msgid "Payment Request Type"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:502
+#: accounts/doctype/payment_request/payment_request.py:507
 msgid "Payment Request for {0}"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.js:268
+#: accounts/doctype/pos_invoice/pos_invoice.js:289
 msgid "Payment Request took too long to respond. Please try requesting for payment again."
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:450
+#: accounts/doctype/payment_request/payment_request.py:453
 msgid "Payment Requests cannot be created against: {0}"
 msgstr ""
 
@@ -48203,13 +49000,9 @@
 msgid "Payment Schedule"
 msgstr ""
 
-#: public/js/controllers/transaction.js:925
-msgid "Payment Schedule Table"
-msgstr ""
-
 #. Name of a DocType
 #: accounts/doctype/payment_term/payment_term.json
-#: accounts/report/accounts_receivable/accounts_receivable.py:1064
+#: accounts/report/accounts_receivable/accounts_receivable.py:1072
 #: accounts/report/gross_profit/gross_profit.py:348
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:30
 msgid "Payment Term"
@@ -48252,6 +49045,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:44
+#: accounts/report/accounts_receivable/accounts_receivable.html:31
 msgid "Payment Terms"
 msgstr ""
 
@@ -48305,11 +49099,11 @@
 #. Name of a DocType
 #: accounts/doctype/payment_terms_template/payment_terms_template.json
 #: accounts/report/accounts_payable/accounts_payable.js:93
-#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:99
-#: accounts/report/accounts_receivable/accounts_receivable.js:127
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:105
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:62
-#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:62
+#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:102
+#: accounts/report/accounts_receivable/accounts_receivable.js:130
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:108
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:61
+#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:61
 msgid "Payment Terms Template"
 msgstr ""
 
@@ -48377,15 +49171,15 @@
 msgid "Payment Type"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:501
+#: accounts/doctype/payment_entry/payment_entry.py:510
 msgid "Payment Type must be one of Receive, Pay and Internal Transfer"
 msgstr ""
 
-#: accounts/utils.py:927
+#: accounts/utils.py:936
 msgid "Payment Unlink Error"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:764
+#: accounts/doctype/journal_entry/journal_entry.py:791
 msgid "Payment against {0} {1} cannot be greater than Outstanding Amount {2}"
 msgstr ""
 
@@ -48397,12 +49191,12 @@
 msgid "Payment methods are mandatory. Please add at least one payment method."
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.js:277
-#: selling/page/point_of_sale/pos_payment.js:252
+#: accounts/doctype/pos_invoice/pos_invoice.js:301
+#: selling/page/point_of_sale/pos_payment.js:259
 msgid "Payment of {0} received successfully."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:257
+#: selling/page/point_of_sale/pos_payment.js:266
 msgid "Payment of {0} received successfully. Waiting for other requests to complete..."
 msgstr ""
 
@@ -48410,11 +49204,11 @@
 msgid "Payment related to {0} is not completed"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.js:259
+#: accounts/doctype/pos_invoice/pos_invoice.js:278
 msgid "Payment request failed"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:713
+#: accounts/doctype/payment_entry/payment_entry.py:722
 msgid "Payment term {0} not used in {1}"
 msgstr ""
 
@@ -48429,6 +49223,7 @@
 #: accounts/workspace/receivables/receivables.json
 #: buying/doctype/supplier/supplier_dashboard.py:15
 #: selling/doctype/customer/customer_dashboard.py:22
+#: selling/page/point_of_sale/pos_past_order_summary.js:18
 msgid "Payments"
 msgstr ""
 
@@ -48493,11 +49288,11 @@
 msgstr ""
 
 #: assets/doctype/asset_repair/asset_repair_list.js:5
-#: buying/doctype/request_for_quotation/request_for_quotation.py:314
+#: buying/doctype/request_for_quotation/request_for_quotation.py:338
 #: buying/doctype/supplier_quotation/supplier_quotation.py:198
 #: manufacturing/report/work_order_summary/work_order_summary.py:150
 #: stock/doctype/material_request/material_request_list.js:16
-#: templates/pages/order.html:56
+#: templates/pages/order.html:68
 msgid "Pending"
 msgstr ""
 
@@ -48575,9 +49370,9 @@
 msgstr ""
 
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:218
-#: manufacturing/doctype/work_order/work_order.js:244
+#: manufacturing/doctype/work_order/work_order.js:259
 #: manufacturing/report/production_plan_summary/production_plan_summary.py:155
-#: selling/doctype/sales_order/sales_order.js:991
+#: selling/doctype/sales_order/sales_order.js:1153
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:45
 msgid "Pending Qty"
 msgstr ""
@@ -48593,6 +49388,10 @@
 msgid "Pending Quantity"
 msgstr ""
 
+#: templates/pages/task_info.html:74
+msgid "Pending Review"
+msgstr ""
+
 #. Option for the 'Status' (Select) field in DocType 'Task'
 #: projects/doctype/task/task.json
 msgctxt "Task"
@@ -48614,7 +49413,7 @@
 msgid "Pending activities for today"
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.py:224
+#: stock/doctype/repost_item_valuation/repost_item_valuation.py:219
 msgid "Pending processing"
 msgstr ""
 
@@ -48767,24 +49566,24 @@
 msgid "Perception Analysis"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:61
+#: accounts/report/budget_variance_report/budget_variance_report.js:59
 #: public/js/purchase_trends_filters.js:16 public/js/sales_trends_filters.js:8
-#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:30
-#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:30
-#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:30
+#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:29
+#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:29
+#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:29
 msgid "Period"
 msgstr ""
 
-#: assets/report/fixed_asset_register/fixed_asset_register.js:61
+#: assets/report/fixed_asset_register/fixed_asset_register.js:60
 msgid "Period Based On"
 msgstr ""
 
-#: accounts/general_ledger.py:690
+#: accounts/general_ledger.py:699
 msgid "Period Closed"
 msgstr ""
 
-#: accounts/report/trial_balance/trial_balance.js:82
-msgid "Period Closing Entry"
+#: accounts/report/trial_balance/trial_balance.js:88
+msgid "Period Closing Entry For Current Period"
 msgstr ""
 
 #. Label of a Section Break field in DocType 'Accounts Settings'
@@ -48794,7 +49593,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/account/account_tree.js:141
+#: accounts/doctype/account/account_tree.js:197
 #: accounts/doctype/period_closing_voucher/period_closing_voucher.json
 msgid "Period Closing Voucher"
 msgstr ""
@@ -48881,10 +49680,10 @@
 msgid "Period_from_date"
 msgstr ""
 
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:64
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:72
 #: accounts/report/financial_ratios/financial_ratios.js:33
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:55
-#: public/js/financial_statements.js:214
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:54
+#: public/js/financial_statements.js:223
 msgid "Periodicity"
 msgstr ""
 
@@ -49019,7 +49818,7 @@
 msgid "Phone No"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:880
+#: selling/page/point_of_sale/pos_item_cart.js:911
 msgid "Phone Number"
 msgstr ""
 
@@ -49029,13 +49828,13 @@
 msgid "Phone Number"
 msgstr ""
 
-#: public/js/utils.js:64
+#: public/js/utils.js:78
 msgid "Pick Batch No"
 msgstr ""
 
 #. Name of a DocType
-#: selling/doctype/sales_order/sales_order.js:548
-#: stock/doctype/material_request/material_request.js:113
+#: selling/doctype/sales_order/sales_order.js:599
+#: stock/doctype/material_request/material_request.js:115
 #: stock/doctype/pick_list/pick_list.json
 msgid "Pick List"
 msgstr ""
@@ -49065,7 +49864,7 @@
 msgid "Pick List"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:116
+#: stock/doctype/pick_list/pick_list.py:120
 msgid "Pick List Incomplete"
 msgstr ""
 
@@ -49146,7 +49945,7 @@
 msgid "Pickup Date"
 msgstr ""
 
-#: stock/doctype/shipment/shipment.js:364
+#: stock/doctype/shipment/shipment.js:398
 msgid "Pickup Date cannot be before this day"
 msgstr ""
 
@@ -49180,7 +49979,7 @@
 msgid "Pickup to"
 msgstr ""
 
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:9
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:8
 msgid "Pipeline By"
 msgstr ""
 
@@ -49208,16 +50007,16 @@
 msgid "Plaid Environment"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:136
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:160
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:152
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:176
 msgid "Plaid Link Failed"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:238
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:254
 msgid "Plaid Link Refresh Required"
 msgstr ""
 
-#: accounts/doctype/bank/bank.js:121
+#: accounts/doctype/bank/bank.js:131
 msgid "Plaid Link Updated"
 msgstr ""
 
@@ -49238,7 +50037,7 @@
 msgid "Plaid Settings"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:211
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:227
 msgid "Plaid transactions sync error"
 msgstr ""
 
@@ -49339,6 +50138,10 @@
 msgid "Planned Qty"
 msgstr ""
 
+#: manufacturing/doctype/production_plan/production_plan.js:150
+msgid "Planned Qty: Quantity, for which, Work Order has been raised, but is pending to be manufactured."
+msgstr ""
+
 #: stock/report/item_shortage_report/item_shortage_report.py:109
 msgid "Planned Quantity"
 msgstr ""
@@ -49394,12 +50197,36 @@
 msgid "Plans"
 msgstr ""
 
+#. Label of a HTML field in DocType 'Plant Floor'
+#: manufacturing/doctype/plant_floor/plant_floor.json
+msgctxt "Plant Floor"
+msgid "Plant Dashboard"
+msgstr ""
+
+#. Name of a DocType
+#: manufacturing/doctype/plant_floor/plant_floor.json
+#: public/js/plant_floor_visual/visual_plant.js:53
+msgid "Plant Floor"
+msgstr ""
+
+#. Label of a shortcut in the Manufacturing Workspace
+#: manufacturing/workspace/manufacturing/manufacturing.json
+msgctxt "Plant Floor"
+msgid "Plant Floor"
+msgstr ""
+
+#. Label of a Link field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Plant Floor"
+msgstr ""
+
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:30
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:43
 msgid "Plants and Machineries"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:383
+#: stock/doctype/pick_list/pick_list.py:423
 msgid "Please Restock Items and Update the Pick List to continue. To discontinue, cancel the Pick List."
 msgstr ""
 
@@ -49407,17 +50234,17 @@
 msgid "Please Select a Company"
 msgstr ""
 
-#: selling/page/sales_funnel/sales_funnel.js:94
+#: selling/page/sales_funnel/sales_funnel.js:109
 msgid "Please Select a Company."
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.js:139
+#: stock/doctype/delivery_note/delivery_note.js:151
 msgid "Please Select a Customer"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.js:114
-#: stock/doctype/purchase_receipt/purchase_receipt.js:199
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:82
+#: stock/doctype/purchase_receipt/purchase_receipt.js:128
+#: stock/doctype/purchase_receipt/purchase_receipt.js:230
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:100
 msgid "Please Select a Supplier"
 msgstr ""
 
@@ -49425,7 +50252,7 @@
 msgid "Please Set Supplier Group in Buying Settings."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1071
+#: accounts/doctype/payment_entry/payment_entry.js:1297
 msgid "Please Specify Account"
 msgstr ""
 
@@ -49433,7 +50260,7 @@
 msgid "Please add 'Supplier' role to user {0}."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:87
+#: selling/page/point_of_sale/pos_controller.js:101
 msgid "Please add Mode of payments and opening balance details."
 msgstr ""
 
@@ -49449,7 +50276,7 @@
 msgid "Please add a Temporary Opening account in Chart of Accounts"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:535
+#: public/js/utils/serial_no_batch_selector.js:542
 msgid "Please add atleast one Serial No / Batch No"
 msgstr ""
 
@@ -49457,11 +50284,11 @@
 msgid "Please add the Bank Account column"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:168
+#: accounts/doctype/account/account_tree.js:246
 msgid "Please add the account to root level Company - {0}"
 msgstr ""
 
-#: accounts/doctype/account/account.py:215
+#: accounts/doctype/account/account.py:234
 msgid "Please add the account to root level Company - {}"
 msgstr ""
 
@@ -49469,28 +50296,28 @@
 msgid "Please add {1} role to user {0}."
 msgstr ""
 
-#: controllers/stock_controller.py:909
+#: controllers/stock_controller.py:1095
 msgid "Please adjust the qty or edit {0} to proceed."
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:121
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:124
 msgid "Please attach CSV file"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2735
+#: accounts/doctype/sales_invoice/sales_invoice.py:2704
 msgid "Please cancel and amend the Payment Entry"
 msgstr ""
 
-#: accounts/utils.py:926
+#: accounts/utils.py:935
 msgid "Please cancel payment entry manually first"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:337
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:327
+#: accounts/doctype/gl_entry/gl_entry.py:291
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:338
 msgid "Please cancel related transaction."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:836
+#: accounts/doctype/journal_entry/journal_entry.py:863
 msgid "Please check Multi Currency option to allow accounts with other currency"
 msgstr ""
 
@@ -49498,11 +50325,11 @@
 msgid "Please check Process Deferred Accounting {0} and submit manually after resolving errors."
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:71
+#: manufacturing/doctype/bom/bom.js:70
 msgid "Please check either with operations or FG Based Operating Cost."
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.py:397
+#: stock/doctype/repost_item_valuation/repost_item_valuation.py:412
 msgid "Please check the error message and take necessary actions to fix the error and then restart the reposting again."
 msgstr ""
 
@@ -49510,14 +50337,10 @@
 msgid "Please check your Plaid client ID and secret values"
 msgstr ""
 
-#: crm/doctype/appointment/appointment.py:98 www/book_appointment/index.js:227
+#: crm/doctype/appointment/appointment.py:98 www/book_appointment/index.js:235
 msgid "Please check your email to confirm the appointment"
 msgstr ""
 
-#: public/js/controllers/transaction.js:917
-msgid "Please clear the"
-msgstr ""
-
 #: maintenance/doctype/maintenance_schedule/maintenance_schedule.py:377
 msgid "Please click on 'Generate Schedule'"
 msgstr ""
@@ -49530,19 +50353,19 @@
 msgid "Please click on 'Generate Schedule' to get schedule"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:538
+#: selling/doctype/customer/customer.py:550
 msgid "Please contact any of the following users to extend the credit limits for {0}: {1}"
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:321
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:332
 msgid "Please contact any of the following users to {} this transaction."
 msgstr ""
 
-#: selling/doctype/customer/customer.py:531
+#: selling/doctype/customer/customer.py:543
 msgid "Please contact your administrator to extend the credit limits for {0}."
 msgstr ""
 
-#: accounts/doctype/account/account.py:317
+#: accounts/doctype/account/account.py:336
 msgid "Please convert the parent account in corresponding child company to a group account."
 msgstr ""
 
@@ -49550,19 +50373,19 @@
 msgid "Please create Customer from Lead {0}."
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:96
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:117
 msgid "Please create Landed Cost Vouchers against Invoices that have 'Update Stock' enabled."
 msgstr ""
 
-#: accounts/doctype/accounting_dimension/accounting_dimension.py:67
+#: accounts/doctype/accounting_dimension/accounting_dimension.py:71
 msgid "Please create a new Accounting Dimension if required."
 msgstr ""
 
-#: controllers/accounts_controller.py:534
+#: controllers/accounts_controller.py:578
 msgid "Please create purchase from internal sale or delivery document itself"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:327
+#: assets/doctype/asset/asset.py:329
 msgid "Please create purchase receipt or purchase invoice for the item {0}"
 msgstr ""
 
@@ -49570,7 +50393,7 @@
 msgid "Please delete Product Bundle {0}, before merging {1} into {2}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:366
+#: assets/doctype/asset/asset.py:368
 msgid "Please do not book expense of multiple assets against one single Asset."
 msgstr ""
 
@@ -49586,8 +50409,12 @@
 msgid "Please enable Applicable on Purchase Order and Applicable on Booking Actual Expenses"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:135
-#: public/js/utils/serial_no_batch_selector.js:289
+#: stock/doctype/pick_list/pick_list.py:143
+msgid "Please enable Use Old Serial / Batch Fields to make_bundle"
+msgstr ""
+
+#: buying/doctype/request_for_quotation/request_for_quotation.js:145
+#: public/js/utils/serial_no_batch_selector.js:295
 #: regional/report/electronic_invoice_register/electronic_invoice_register.js:49
 msgid "Please enable pop-ups"
 msgstr ""
@@ -49596,32 +50423,32 @@
 msgid "Please enable {0} in the {1}."
 msgstr ""
 
-#: controllers/selling_controller.py:657
+#: controllers/selling_controller.py:681
 msgid "Please enable {} in {} to allow same item in multiple rows"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:871
+#: accounts/doctype/sales_invoice/sales_invoice.py:888
 msgid "Please ensure {} account is a Balance Sheet account."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:366
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:370
 msgid "Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:374
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:378
 msgid "Please ensure {} account {} is a Payable account. Change the account type to Payable or select a different account."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:880
+#: accounts/doctype/sales_invoice/sales_invoice.py:897
 msgid "Please ensure {} account {} is a Receivable account."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:563
+#: stock/doctype/stock_entry/stock_entry.py:518
 msgid "Please enter <b>Difference Account</b> or set default <b>Stock Adjustment Account</b> for company {0}"
 msgstr ""
 
 #: accounts/doctype/pos_invoice/pos_invoice.py:430
-#: accounts/doctype/sales_invoice/sales_invoice.py:1024
+#: accounts/doctype/sales_invoice/sales_invoice.py:1046
 msgid "Please enter Account for Change Amount"
 msgstr ""
 
@@ -49629,32 +50456,32 @@
 msgid "Please enter Approving Role or Approving User"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:697
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:751
 msgid "Please enter Cost Center"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:322
+#: selling/doctype/sales_order/sales_order.py:325
 msgid "Please enter Delivery Date"
 msgstr ""
 
-#: setup/doctype/sales_person/sales_person_tree.js:8
+#: setup/doctype/sales_person/sales_person_tree.js:9
 msgid "Please enter Employee Id of this sales person"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:708
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:762
 msgid "Please enter Expense Account"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.js:87
-#: stock/doctype/stock_entry/stock_entry.js:82
+#: assets/doctype/asset_capitalization/asset_capitalization.js:89
+#: stock/doctype/stock_entry/stock_entry.js:87
 msgid "Please enter Item Code to get Batch Number"
 msgstr ""
 
-#: public/js/controllers/transaction.js:2236
+#: public/js/controllers/transaction.js:2289
 msgid "Please enter Item Code to get batch no"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:67
+#: manufacturing/doctype/production_plan/production_plan.js:66
 msgid "Please enter Item first"
 msgstr ""
 
@@ -49666,27 +50493,27 @@
 msgid "Please enter Planned Qty for Item {0} at row {1}"
 msgstr ""
 
-#: setup/doctype/employee/employee.js:76
+#: setup/doctype/employee/employee.js:78
 msgid "Please enter Preferred Contact Email"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:71
+#: manufacturing/doctype/work_order/work_order.js:73
 msgid "Please enter Production Item first"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.js:74
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.js:76
 msgid "Please enter Purchase Receipt first"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:77
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:98
 msgid "Please enter Receipt Document"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:901
+#: accounts/doctype/journal_entry/journal_entry.py:928
 msgid "Please enter Reference date"
 msgstr ""
 
-#: controllers/buying_controller.py:851
+#: controllers/buying_controller.py:877
 msgid "Please enter Reqd by Date"
 msgstr ""
 
@@ -49694,7 +50521,7 @@
 msgid "Please enter Root Type for account- {0}"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:258
+#: public/js/utils/serial_no_batch_selector.js:262
 msgid "Please enter Serial Nos"
 msgstr ""
 
@@ -49706,7 +50533,7 @@
 msgid "Please enter Stock Items consumed during the Repair."
 msgstr ""
 
-#: stock/doctype/quick_stock_balance/quick_stock_balance.js:29
+#: stock/doctype/quick_stock_balance/quick_stock_balance.js:30
 msgid "Please enter Warehouse and Date"
 msgstr ""
 
@@ -49714,20 +50541,20 @@
 msgid "Please enter Warehouse from which Stock Items consumed during the Repair were taken."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:609
-#: accounts/doctype/sales_invoice/sales_invoice.py:1020
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:613
+#: accounts/doctype/sales_invoice/sales_invoice.py:1042
 msgid "Please enter Write Off Account"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.js:23
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.js:26
 msgid "Please enter company first"
 msgstr ""
 
-#: accounts/doctype/cost_center/cost_center.js:109
+#: accounts/doctype/cost_center/cost_center.js:114
 msgid "Please enter company name first"
 msgstr ""
 
-#: controllers/accounts_controller.py:2378
+#: controllers/accounts_controller.py:2470
 msgid "Please enter default currency in Company Master"
 msgstr ""
 
@@ -49735,7 +50562,7 @@
 msgid "Please enter message before sending"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.js:247
+#: accounts/doctype/pos_invoice/pos_invoice.js:266
 msgid "Please enter mobile number first."
 msgstr ""
 
@@ -49743,7 +50570,7 @@
 msgid "Please enter parent cost center"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:160
+#: public/js/utils/barcode_scanner.js:165
 msgid "Please enter quantity for item {0}"
 msgstr ""
 
@@ -49751,11 +50578,11 @@
 msgid "Please enter relieving date."
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:125
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:128
 msgid "Please enter serial nos"
 msgstr ""
 
-#: setup/doctype/company/company.js:155
+#: setup/doctype/company/company.js:183
 msgid "Please enter the company name to confirm"
 msgstr ""
 
@@ -49763,19 +50590,23 @@
 msgid "Please enter the phone number first"
 msgstr ""
 
-#: public/js/setup_wizard.js:83
+#: public/js/setup_wizard.js:87
 msgid "Please enter valid Financial Year Start and End Dates"
 msgstr ""
 
+#: templates/includes/footer/footer_extension.html:37
+msgid "Please enter valid email address"
+msgstr ""
+
 #: setup/doctype/employee/employee.py:225
 msgid "Please enter {0}"
 msgstr ""
 
-#: public/js/utils/party.js:273
+#: public/js/utils/party.js:317
 msgid "Please enter {0} first"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:385
+#: manufacturing/doctype/production_plan/production_plan.py:391
 msgid "Please fill the Material Requests table"
 msgstr ""
 
@@ -49783,11 +50614,11 @@
 msgid "Please fill the Sales Orders table"
 msgstr ""
 
-#: stock/doctype/shipment/shipment.js:248
+#: stock/doctype/shipment/shipment.js:277
 msgid "Please first set Last Name, Email and Phone for the user"
 msgstr ""
 
-#: telephony/doctype/incoming_call_settings/incoming_call_settings.js:92
+#: telephony/doctype/incoming_call_settings/incoming_call_settings.js:94
 msgid "Please fix overlapping time slots for {0}"
 msgstr ""
 
@@ -49799,6 +50630,10 @@
 msgid "Please import accounts against parent company or enable {} in company master."
 msgstr ""
 
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:175
+msgid "Please keep one Applicable Charges, when 'Distribute Charges Based On' is 'Distribute Manually'. For more charges, please create another Landed Cost Voucher."
+msgstr ""
+
 #: setup/doctype/employee/employee.py:184
 msgid "Please make sure the employees above report to another Active employee."
 msgstr ""
@@ -49807,19 +50642,19 @@
 msgid "Please make sure the file you are using has 'Parent Account' column present in the header."
 msgstr ""
 
-#: setup/doctype/company/company.js:157
+#: setup/doctype/company/company.js:185
 msgid "Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone."
 msgstr ""
 
-#: stock/doctype/item/item.js:425
+#: stock/doctype/item/item.js:493
 msgid "Please mention 'Weight UOM' along with Weight."
 msgstr ""
 
-#: accounts/general_ledger.py:555
+#: accounts/general_ledger.py:564
 msgid "Please mention Round Off Account in Company"
 msgstr ""
 
-#: accounts/general_ledger.py:558
+#: accounts/general_ledger.py:567
 msgid "Please mention Round Off Cost Center in Company"
 msgstr ""
 
@@ -49835,16 +50670,16 @@
 msgid "Please pull items from Delivery Note"
 msgstr ""
 
-#: stock/doctype/shipment/shipment.js:394
+#: stock/doctype/shipment/shipment.js:444
 msgid "Please rectify and try again."
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:237
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:253
 msgid "Please refresh or reset the Plaid linking of the Bank {}."
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:12
-#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:29
+#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.js:28
 msgid "Please save before proceeding."
 msgstr ""
 
@@ -49852,16 +50687,16 @@
 msgid "Please save first"
 msgstr ""
 
-#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:70
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:79
 msgid "Please select <b>Template Type</b> to download template"
 msgstr ""
 
-#: controllers/taxes_and_totals.py:651
+#: controllers/taxes_and_totals.py:652
 #: public/js/controllers/taxes_and_totals.js:688
 msgid "Please select Apply Discount On"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:1469
+#: selling/doctype/sales_order/sales_order.py:1492
 msgid "Please select BOM against item {0}"
 msgstr ""
 
@@ -49873,25 +50708,26 @@
 msgid "Please select BOM in BOM field for Item {0}"
 msgstr ""
 
-#: accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js:12
+#: accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js:13
 msgid "Please select Category first"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1195
+#: accounts/doctype/payment_entry/payment_entry.js:1429
 #: public/js/controllers/accounts.js:86 public/js/controllers/accounts.js:124
 msgid "Please select Charge Type first"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:401
+#: accounts/doctype/journal_entry/journal_entry.js:443
 msgid "Please select Company"
 msgstr ""
 
-#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:135
+#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:141
 #: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py:75
 msgid "Please select Company and Posting Date to getting entries"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:606
+#: accounts/doctype/journal_entry/journal_entry.js:688
+#: manufacturing/doctype/plant_floor/plant_floor.js:12
 msgid "Please select Company first"
 msgstr ""
 
@@ -49899,12 +50735,12 @@
 msgid "Please select Completion Date for Completed Asset Maintenance Log"
 msgstr ""
 
-#: maintenance/doctype/maintenance_visit/maintenance_visit.js:81
-#: maintenance/doctype/maintenance_visit/maintenance_visit.js:116
+#: maintenance/doctype/maintenance_visit/maintenance_visit.js:84
+#: maintenance/doctype/maintenance_visit/maintenance_visit.js:125
 msgid "Please select Customer first"
 msgstr ""
 
-#: setup/doctype/company/company.py:407
+#: setup/doctype/company/company.py:406
 msgid "Please select Existing Company for creating Chart of Accounts"
 msgstr ""
 
@@ -49912,7 +50748,7 @@
 msgid "Please select Finished Good Item for Service Item {0}"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:531 assets/doctype/asset/asset.js:548
+#: assets/doctype/asset/asset.js:604 assets/doctype/asset/asset.js:621
 msgid "Please select Item Code first"
 msgstr ""
 
@@ -49921,18 +50757,18 @@
 msgstr ""
 
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:52
-#: accounts/report/tax_withholding_details/tax_withholding_details.js:33
-#: accounts/report/tds_computation_summary/tds_computation_summary.js:33
+#: accounts/report/tax_withholding_details/tax_withholding_details.js:32
+#: accounts/report/tds_computation_summary/tds_computation_summary.js:32
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.js:63
-#: selling/report/address_and_contacts/address_and_contacts.js:28
+#: selling/report/address_and_contacts/address_and_contacts.js:27
 msgid "Please select Party Type first"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:342
+#: accounts/doctype/payment_entry/payment_entry.js:429
 msgid "Please select Posting Date before selecting Party"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:607
+#: accounts/doctype/journal_entry/journal_entry.js:689
 msgid "Please select Posting Date first"
 msgstr ""
 
@@ -49940,7 +50776,7 @@
 msgid "Please select Price List"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:1471
+#: selling/doctype/sales_order/sales_order.py:1494
 msgid "Please select Qty against item {0}"
 msgstr ""
 
@@ -49956,15 +50792,15 @@
 msgid "Please select Start Date and End Date for Item {0}"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1202
+#: stock/doctype/stock_entry/stock_entry.py:1211
 msgid "Please select Subcontracting Order instead of Purchase Order {0}"
 msgstr ""
 
-#: controllers/accounts_controller.py:2288
+#: controllers/accounts_controller.py:2380
 msgid "Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1229
+#: manufacturing/doctype/bom/bom.py:1228
 msgid "Please select a BOM"
 msgstr ""
 
@@ -49972,10 +50808,10 @@
 msgid "Please select a Company"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:168
-#: manufacturing/doctype/bom/bom.js:482 manufacturing/doctype/bom/bom.py:245
+#: accounts/doctype/payment_entry/payment_entry.js:198
+#: manufacturing/doctype/bom/bom.js:499 manufacturing/doctype/bom/bom.py:245
 #: public/js/controllers/accounts.js:249
-#: public/js/controllers/transaction.js:2484
+#: public/js/controllers/transaction.js:2537
 msgid "Please select a Company first."
 msgstr ""
 
@@ -49991,11 +50827,15 @@
 msgid "Please select a Subcontracting Purchase Order."
 msgstr ""
 
-#: buying/doctype/supplier_quotation/supplier_quotation.js:60
+#: buying/doctype/supplier_quotation/supplier_quotation.js:65
 msgid "Please select a Supplier"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:1063
+#: public/js/utils/serial_no_batch_selector.js:546
+msgid "Please select a Warehouse"
+msgstr ""
+
+#: manufacturing/doctype/job_card/job_card.py:1084
 msgid "Please select a Work Order first."
 msgstr ""
 
@@ -50007,11 +50847,11 @@
 msgid "Please select a customer for fetching payments."
 msgstr ""
 
-#: www/book_appointment/index.js:63
+#: www/book_appointment/index.js:67
 msgid "Please select a date"
 msgstr ""
 
-#: www/book_appointment/index.js:48
+#: www/book_appointment/index.js:52
 msgid "Please select a date and time"
 msgstr ""
 
@@ -50019,11 +50859,11 @@
 msgid "Please select a default mode of payment"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:753
+#: selling/page/point_of_sale/pos_item_cart.js:783
 msgid "Please select a field to edit from numpad"
 msgstr ""
 
-#: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js:68
+#: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js:67
 msgid "Please select a row to create a Reposting Entry"
 msgstr ""
 
@@ -50039,11 +50879,11 @@
 msgid "Please select a valid Purchase Order that is configured for Subcontracting."
 msgstr ""
 
-#: selling/doctype/quotation/quotation.js:220
+#: selling/doctype/quotation/quotation.js:229
 msgid "Please select a value for {0} quotation_to {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1570
+#: accounts/doctype/journal_entry/journal_entry.py:1574
 msgid "Please select correct account"
 msgstr ""
 
@@ -50060,12 +50900,12 @@
 msgid "Please select item code"
 msgstr ""
 
-#: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js:71
+#: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js:69
 msgid "Please select only one row to create a Reposting Entry"
 msgstr ""
 
-#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:60
-#: stock/report/stock_ledger_variance/stock_ledger_variance.js:96
+#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:59
+#: stock/report/stock_ledger_variance/stock_ledger_variance.js:91
 msgid "Please select rows to create Reposting Entries"
 msgstr ""
 
@@ -50073,7 +50913,7 @@
 msgid "Please select the Company"
 msgstr ""
 
-#: accounts/doctype/loyalty_program/loyalty_program.js:57
+#: accounts/doctype/loyalty_program/loyalty_program.js:65
 msgid "Please select the Multiple Tier Program type for more than one collection rules."
 msgstr ""
 
@@ -50084,7 +50924,7 @@
 #: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.py:21
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:21
 #: selling/report/sales_person_commission_summary/sales_person_commission_summary.py:42
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:53
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:54
 msgid "Please select the document type first"
 msgstr ""
 
@@ -50100,25 +50940,25 @@
 msgid "Please select weekly off day"
 msgstr ""
 
-#: public/js/utils.js:891
+#: public/js/utils.js:961
 msgid "Please select {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:991
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:575
+#: accounts/doctype/payment_entry/payment_entry.js:1202
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:580
 #: accounts/doctype/tax_withholding_category/tax_withholding_category.py:81
 msgid "Please select {0} first"
 msgstr ""
 
-#: public/js/controllers/transaction.js:76
+#: public/js/controllers/transaction.js:77
 msgid "Please set 'Apply Additional Discount On'"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:790
+#: assets/doctype/asset/depreciation.py:788
 msgid "Please set 'Asset Depreciation Cost Center' in Company {0}"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:787
+#: assets/doctype/asset/depreciation.py:785
 msgid "Please set 'Gain/Loss Account on Asset Disposal' in Company {0}"
 msgstr ""
 
@@ -50126,6 +50966,10 @@
 msgid "Please set Account"
 msgstr ""
 
+#: accounts/doctype/sales_invoice/sales_invoice.py:1525
+msgid "Please set Account for Change Amount"
+msgstr ""
+
 #: stock/__init__.py:88
 msgid "Please set Account in Warehouse {0} or Default Inventory Account in Company {1}"
 msgstr ""
@@ -50136,23 +50980,23 @@
 
 #: accounts/doctype/ledger_merge/ledger_merge.js:23
 #: accounts/doctype/ledger_merge/ledger_merge.js:34
-#: accounts/doctype/pos_profile/pos_profile.js:27
-#: accounts/doctype/pos_profile/pos_profile.js:50
-#: accounts/doctype/pos_profile/pos_profile.js:64
-#: accounts/doctype/pos_profile/pos_profile.js:78
-#: accounts/doctype/pos_profile/pos_profile.js:91
-#: accounts/doctype/sales_invoice/sales_invoice.js:707
-#: accounts/doctype/sales_invoice/sales_invoice.js:721
-#: selling/doctype/quotation/quotation.js:28
-#: selling/doctype/sales_order/sales_order.js:28
+#: accounts/doctype/pos_profile/pos_profile.js:25
+#: accounts/doctype/pos_profile/pos_profile.js:48
+#: accounts/doctype/pos_profile/pos_profile.js:62
+#: accounts/doctype/pos_profile/pos_profile.js:76
+#: accounts/doctype/pos_profile/pos_profile.js:89
+#: accounts/doctype/sales_invoice/sales_invoice.js:763
+#: accounts/doctype/sales_invoice/sales_invoice.js:777
+#: selling/doctype/quotation/quotation.js:29
+#: selling/doctype/sales_order/sales_order.js:31
 msgid "Please set Company"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:372
+#: assets/doctype/asset/depreciation.py:370
 msgid "Please set Depreciation related Accounts in Asset Category {0} or Company {1}"
 msgstr ""
 
-#: stock/doctype/shipment/shipment.js:154
+#: stock/doctype/shipment/shipment.js:176
 msgid "Please set Email/Phone for the contact"
 msgstr ""
 
@@ -50166,11 +51010,11 @@
 msgid "Please set Fiscal Code for the public administration '%s'"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:547
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:551
 msgid "Please set Fixed Asset Account in {} against {}."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:435
+#: assets/doctype/asset/asset.py:437
 msgid "Please set Number of Depreciations Booked"
 msgstr ""
 
@@ -50200,11 +51044,11 @@
 msgid "Please set a Company"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:262
+#: assets/doctype/asset/asset.py:264
 msgid "Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:1260
+#: selling/doctype/sales_order/sales_order.py:1283
 msgid "Please set a Supplier against the Items to be considered in the Purchase Order."
 msgstr ""
 
@@ -50216,7 +51060,7 @@
 msgid "Please set a default Holiday List for Employee {0} or Company {1}"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:991
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1019
 msgid "Please set account in Warehouse {0}"
 msgstr ""
 
@@ -50225,7 +51069,7 @@
 msgid "Please set an Address on the Company '%s'"
 msgstr ""
 
-#: controllers/stock_controller.py:334
+#: controllers/stock_controller.py:516
 msgid "Please set an Expense Account in the Items table"
 msgstr ""
 
@@ -50237,23 +51081,23 @@
 msgid "Please set at least one row in the Taxes and Charges Table"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2041
+#: accounts/doctype/sales_invoice/sales_invoice.py:2010
 msgid "Please set default Cash or Bank account in Mode of Payment {0}"
 msgstr ""
 
 #: accounts/doctype/pos_opening_entry/pos_opening_entry.py:66
 #: accounts/doctype/pos_profile/pos_profile.py:163
-#: accounts/doctype/sales_invoice/sales_invoice.py:2599
+#: accounts/doctype/sales_invoice/sales_invoice.py:2568
 msgid "Please set default Cash or Bank account in Mode of Payment {}"
 msgstr ""
 
 #: accounts/doctype/pos_opening_entry/pos_opening_entry.py:68
 #: accounts/doctype/pos_profile/pos_profile.py:165
-#: accounts/doctype/sales_invoice/sales_invoice.py:2601
+#: accounts/doctype/sales_invoice/sales_invoice.py:2570
 msgid "Please set default Cash or Bank account in Mode of Payments {}"
 msgstr ""
 
-#: accounts/utils.py:2086
+#: accounts/utils.py:2054
 msgid "Please set default Exchange Gain/Loss Account in Company {}"
 msgstr ""
 
@@ -50265,11 +51109,11 @@
 msgid "Please set default UOM in Stock Settings"
 msgstr ""
 
-#: controllers/stock_controller.py:204
+#: controllers/stock_controller.py:386
 msgid "Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer"
 msgstr ""
 
-#: accounts/utils.py:946
+#: accounts/utils.py:955
 msgid "Please set default {0} in Company {1}"
 msgstr ""
 
@@ -50286,11 +51130,11 @@
 msgid "Please set filters"
 msgstr ""
 
-#: controllers/accounts_controller.py:1896
+#: controllers/accounts_controller.py:1988
 msgid "Please set one of the following:"
 msgstr ""
 
-#: public/js/controllers/transaction.js:1967
+#: public/js/controllers/transaction.js:2010
 msgid "Please set recurring after saving"
 msgstr ""
 
@@ -50302,7 +51146,7 @@
 msgid "Please set the Default Cost Center in {0} company."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:487
+#: manufacturing/doctype/work_order/work_order.js:512
 msgid "Please set the Item Code first"
 msgstr ""
 
@@ -50310,7 +51154,7 @@
 msgid "Please set the Payment Schedule"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:175
+#: accounts/doctype/gl_entry/gl_entry.py:165
 msgid "Please set the cost center field in {0} or setup a default Cost Center for the Company."
 msgstr ""
 
@@ -50318,8 +51162,8 @@
 msgid "Please set up the Campaign Schedule in the Campaign {0}"
 msgstr ""
 
-#: public/js/queries.js:39 public/js/queries.js:49 public/js/queries.js:66
-#: public/js/queries.js:95 stock/report/reserved_stock/reserved_stock.py:26
+#: public/js/queries.js:32 public/js/queries.js:44 public/js/queries.js:64
+#: public/js/queries.js:96 stock/report/reserved_stock/reserved_stock.py:26
 msgid "Please set {0}"
 msgstr ""
 
@@ -50335,34 +51179,34 @@
 msgid "Please set {0} in BOM Creator {1}"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:95
-msgid "Please setup a default bank account for company {0}"
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:97
+msgid "Please setup and enable a group account with the Account Type - {0} for the company {1}"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:424
+#: assets/doctype/asset/depreciation.py:422
 msgid "Please share this email with your support team so that they can find and fix the issue."
 msgstr ""
 
-#: public/js/controllers/transaction.js:1837
+#: public/js/controllers/transaction.js:1880
 msgid "Please specify"
 msgstr ""
 
-#: stock/get_item_details.py:210
+#: stock/get_item_details.py:215
 msgid "Please specify Company"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.js:81
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:380
-#: accounts/doctype/sales_invoice/sales_invoice.js:452
+#: accounts/doctype/pos_invoice/pos_invoice.js:88
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:420
+#: accounts/doctype/sales_invoice/sales_invoice.js:501
 msgid "Please specify Company to proceed"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1206
-#: controllers/accounts_controller.py:2511 public/js/controllers/accounts.js:97
+#: accounts/doctype/payment_entry/payment_entry.js:1452
+#: controllers/accounts_controller.py:2596 public/js/controllers/accounts.js:97
 msgid "Please specify a valid Row ID for row {0} in table {1}"
 msgstr ""
 
-#: public/js/queries.js:104
+#: public/js/queries.js:106
 msgid "Please specify a {0}"
 msgstr ""
 
@@ -50370,7 +51214,7 @@
 msgid "Please specify at least one attribute in the Attributes table"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:372
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:426
 msgid "Please specify either Quantity or Valuation Rate or both"
 msgstr ""
 
@@ -50378,11 +51222,11 @@
 msgid "Please specify from/to range"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:35
+#: buying/doctype/request_for_quotation/request_for_quotation.js:37
 msgid "Please supply the specified items at the best possible rates"
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.py:223
+#: stock/doctype/repost_item_valuation/repost_item_valuation.py:218
 msgid "Please try again in an hour."
 msgstr ""
 
@@ -50439,7 +51283,7 @@
 msgid "Portrait"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:337
+#: buying/doctype/request_for_quotation/request_for_quotation.js:362
 msgid "Possible Supplier"
 msgstr ""
 
@@ -50506,17 +51350,18 @@
 msgid "Postal Expenses"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:644
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:279
+#: accounts/doctype/payment_entry/payment_entry.js:786
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:286
 #: accounts/doctype/period_closing_voucher/period_closing_voucher.py:109
 #: accounts/report/accounts_payable/accounts_payable.js:16
 #: accounts/report/accounts_payable_summary/accounts_payable_summary.js:15
 #: accounts/report/accounts_receivable/accounts_receivable.js:18
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:15
 #: accounts/report/bank_clearance_summary/bank_clearance_summary.py:35
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:10
 #: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:64
 #: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:67
-#: accounts/report/general_ledger/general_ledger.py:563
+#: accounts/report/general_ledger/general_ledger.py:576
 #: accounts/report/gross_profit/gross_profit.py:212
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:183
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:200
@@ -50531,7 +51376,7 @@
 #: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.py:45
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:45
 #: selling/report/sales_person_commission_summary/sales_person_commission_summary.py:66
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:84
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:85
 #: stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:132
 #: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.py:89
 #: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:129
@@ -50541,6 +51386,7 @@
 #: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:114
 #: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:121
 #: stock/report/stock_ledger_variance/stock_ledger_variance.py:34
+#: templates/form_grid/bank_reconciliation_grid.html:6
 msgid "Posting Date"
 msgstr ""
 
@@ -50725,11 +51571,17 @@
 msgid "Posting Date cannot be future date"
 msgstr ""
 
+#. Label of a Datetime field in DocType 'Stock Ledger Entry'
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.json
+msgctxt "Stock Ledger Entry"
+msgid "Posting Datetime"
+msgstr ""
+
 #: accounts/report/gross_profit/gross_profit.py:218
 #: stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:137
 #: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:130
 #: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.py:109
-#: stock/report/serial_no_ledger/serial_no_ledger.js:64
+#: stock/report/serial_no_ledger/serial_no_ledger.js:63
 #: stock/report/serial_no_ledger/serial_no_ledger.py:22
 #: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:115
 #: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:126
@@ -50827,7 +51679,7 @@
 msgid "Posting Time"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1641
+#: stock/doctype/stock_entry/stock_entry.py:1650
 msgid "Posting date and posting time is mandatory"
 msgstr ""
 
@@ -50835,6 +51687,11 @@
 msgid "Posting timestamp must be after {0}"
 msgstr ""
 
+#. Description of a DocType
+#: crm/doctype/opportunity/opportunity.json
+msgid "Potential Sales Deal"
+msgstr ""
+
 #: accounts/doctype/item_tax_template/item_tax_template_dashboard.py:8
 #: accounts/doctype/shipping_rule/shipping_rule_dashboard.py:9
 #: accounts/doctype/tax_category/tax_category_dashboard.py:8
@@ -50933,7 +51790,7 @@
 msgid "Preventive Maintenance"
 msgstr ""
 
-#: public/js/utils/ledger_preview.js:20 public/js/utils/ledger_preview.js:40
+#: public/js/utils/ledger_preview.js:28 public/js/utils/ledger_preview.js:57
 msgid "Preview"
 msgstr ""
 
@@ -50949,7 +51806,7 @@
 msgid "Preview"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:205
+#: buying/doctype/request_for_quotation/request_for_quotation.js:223
 msgid "Preview Email"
 msgstr ""
 
@@ -50970,7 +51827,7 @@
 msgid "Previous Work Experience"
 msgstr ""
 
-#: accounts/doctype/period_closing_voucher/period_closing_voucher.py:152
+#: accounts/doctype/period_closing_voucher/period_closing_voucher.py:153
 msgid "Previous Year is not closed, please close it first"
 msgstr ""
 
@@ -51181,7 +52038,7 @@
 msgid "Price List Currency"
 msgstr ""
 
-#: stock/get_item_details.py:1029
+#: stock/get_item_details.py:1040
 msgid "Price List Currency not selected"
 msgstr ""
 
@@ -51269,6 +52126,12 @@
 msgid "Price List Rate"
 msgstr ""
 
+#. Label of a Currency field in DocType 'Material Request Item'
+#: stock/doctype/material_request_item/material_request_item.json
+msgctxt "Material Request Item"
+msgid "Price List Rate"
+msgstr ""
+
 #. Label of a Currency field in DocType 'POS Invoice Item'
 #: accounts/doctype/pos_invoice_item/pos_invoice_item.json
 msgctxt "POS Invoice Item"
@@ -51389,7 +52252,7 @@
 msgid "Price Per Unit ({0})"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:553
+#: selling/page/point_of_sale/pos_controller.js:581
 msgid "Price is not set for the item."
 msgstr ""
 
@@ -51403,7 +52266,7 @@
 msgid "Price or Product Discount"
 msgstr ""
 
-#: accounts/doctype/promotional_scheme/promotional_scheme.py:143
+#: accounts/doctype/promotional_scheme/promotional_scheme.py:145
 msgid "Price or product discount slabs are required"
 msgstr ""
 
@@ -51419,7 +52282,7 @@
 
 #. Name of a DocType
 #: accounts/doctype/pricing_rule/pricing_rule.json
-#: buying/doctype/supplier/supplier.js:98
+#: buying/doctype/supplier/supplier.js:116
 msgid "Pricing Rule"
 msgstr ""
 
@@ -51536,7 +52399,7 @@
 msgid "Pricing Rule Item Group"
 msgstr ""
 
-#: accounts/doctype/promotional_scheme/promotional_scheme.py:208
+#: accounts/doctype/promotional_scheme/promotional_scheme.py:210
 msgid "Pricing Rule {0} is updated"
 msgstr ""
 
@@ -51660,7 +52523,7 @@
 msgid "Primary Address"
 msgstr ""
 
-#: public/js/utils/contact_address_quick_entry.js:54
+#: public/js/utils/contact_address_quick_entry.js:57
 msgid "Primary Address Details"
 msgstr ""
 
@@ -51682,7 +52545,7 @@
 msgid "Primary Contact"
 msgstr ""
 
-#: public/js/utils/contact_address_quick_entry.js:35
+#: public/js/utils/contact_address_quick_entry.js:38
 msgid "Primary Contact Details"
 msgstr ""
 
@@ -51711,7 +52574,7 @@
 msgid "Primary Settings"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_past_order_summary.js:69
+#: selling/page/point_of_sale/pos_past_order_summary.js:67
 #: templates/pages/material_request_info.html:15 templates/pages/order.html:33
 msgid "Print"
 msgstr ""
@@ -51952,7 +52815,7 @@
 msgid "Print Preferences"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_past_order_summary.js:223
+#: selling/page/point_of_sale/pos_past_order_summary.js:231
 msgid "Print Receipt"
 msgstr ""
 
@@ -52017,7 +52880,7 @@
 msgid "Print Style"
 msgstr ""
 
-#: setup/install.py:118
+#: setup/install.py:99
 msgid "Print UOM after Quantity"
 msgstr ""
 
@@ -52032,15 +52895,16 @@
 msgid "Print and Stationery"
 msgstr ""
 
-#: accounts/doctype/cheque_print_template/cheque_print_template.js:73
+#: accounts/doctype/cheque_print_template/cheque_print_template.js:75
 msgid "Print settings updated in respective print format"
 msgstr ""
 
-#: setup/install.py:125
+#: setup/install.py:106
 msgid "Print taxes with zero amount"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:364
+#: accounts/report/accounts_receivable/accounts_receivable.html:285
 msgid "Printed On "
 msgstr ""
 
@@ -52121,9 +52985,10 @@
 msgid "Priorities"
 msgstr ""
 
-#: projects/report/delayed_tasks_summary/delayed_tasks_summary.js:19
+#: projects/report/delayed_tasks_summary/delayed_tasks_summary.js:18
 #: projects/report/delayed_tasks_summary/delayed_tasks_summary.py:93
-#: projects/report/project_summary/project_summary.js:37
+#: projects/report/project_summary/project_summary.js:36
+#: templates/pages/task_info.html:54
 msgid "Priority"
 msgstr ""
 
@@ -52211,6 +53076,12 @@
 msgid "Problem"
 msgstr ""
 
+#. Option for the 'Status' (Select) field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Problem"
+msgstr ""
+
 #. Label of a Link field in DocType 'Non Conformance'
 #: quality_management/doctype/non_conformance/non_conformance.json
 msgctxt "Non Conformance"
@@ -52235,7 +53106,7 @@
 msgid "Procedure"
 msgstr ""
 
-#: erpnext_integrations/doctype/tally_migration/tally_migration.js:70
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:75
 msgid "Process Day Book Data"
 msgstr ""
 
@@ -52321,7 +53192,7 @@
 msgid "Process Loss Value"
 msgstr ""
 
-#: erpnext_integrations/doctype/tally_migration/tally_migration.js:58
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:63
 msgid "Process Master Data"
 msgstr ""
 
@@ -52373,6 +53244,12 @@
 msgid "Process Subscription"
 msgstr ""
 
+#. Label of a Check field in DocType 'Transaction Deletion Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Process in Single Transaction"
+msgstr ""
+
 #. Label of a Long Text field in DocType 'BOM Update Log'
 #: manufacturing/doctype/bom_update_log/bom_update_log.json
 msgctxt "BOM Update Log"
@@ -52403,7 +53280,7 @@
 msgid "Processing Party Addresses"
 msgstr ""
 
-#: accounts/doctype/pos_closing_entry/pos_closing_entry.js:115
+#: accounts/doctype/pos_closing_entry/pos_closing_entry.js:122
 msgid "Processing Sales! Please Wait..."
 msgstr ""
 
@@ -52476,7 +53353,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: public/js/controllers/buying.js:265 public/js/controllers/buying.js:511
+#: public/js/controllers/buying.js:260 public/js/controllers/buying.js:508
 #: selling/doctype/product_bundle/product_bundle.json
 msgid "Product Bundle"
 msgstr ""
@@ -52580,7 +53457,13 @@
 
 #. Label of a Card Break in the Manufacturing Workspace
 #: manufacturing/workspace/manufacturing/manufacturing.json
-#: setup/doctype/company/company.py:347
+#: setup/doctype/company/company.py:346
+msgid "Production"
+msgstr ""
+
+#. Option for the 'Status' (Select) field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
 msgid "Production"
 msgstr ""
 
@@ -52591,18 +53474,18 @@
 msgid "Production Analytics"
 msgstr ""
 
-#. Label of a Int field in DocType 'Workstation'
+#. Label of a Section Break field in DocType 'Workstation'
 #: manufacturing/doctype/workstation/workstation.json
 msgctxt "Workstation"
 msgid "Production Capacity"
 msgstr ""
 
 #: manufacturing/doctype/work_order/work_order_calendar.js:38
-#: manufacturing/report/job_card_summary/job_card_summary.js:65
+#: manufacturing/report/job_card_summary/job_card_summary.js:64
 #: manufacturing/report/job_card_summary/job_card_summary.py:152
-#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:43
+#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:42
 #: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:113
-#: manufacturing/report/work_order_summary/work_order_summary.js:51
+#: manufacturing/report/work_order_summary/work_order_summary.js:50
 #: manufacturing/report/work_order_summary/work_order_summary.py:208
 msgid "Production Item"
 msgstr ""
@@ -52627,7 +53510,7 @@
 
 #. Name of a DocType
 #: manufacturing/doctype/production_plan/production_plan.json
-#: manufacturing/report/production_plan_summary/production_plan_summary.js:9
+#: manufacturing/report/production_plan_summary/production_plan_summary.js:8
 msgid "Production Plan"
 msgstr ""
 
@@ -52834,7 +53717,7 @@
 msgid "Profitability Analysis"
 msgstr ""
 
-#: templates/pages/projects.html:25
+#: projects/doctype/task/task_list.js:52 templates/pages/projects.html:25
 msgid "Progress"
 msgstr ""
 
@@ -52854,10 +53737,10 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/sales_invoice/sales_invoice.js:973
+#: accounts/doctype/sales_invoice/sales_invoice.js:1049
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:73
 #: accounts/report/general_ledger/general_ledger.js:162
-#: accounts/report/general_ledger/general_ledger.py:634
+#: accounts/report/general_ledger/general_ledger.py:647
 #: accounts/report/gross_profit/gross_profit.py:300
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:220
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:265
@@ -52865,30 +53748,31 @@
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:73
 #: accounts/report/sales_register/sales_register.py:228
 #: accounts/report/trial_balance/trial_balance.js:64
-#: buying/report/procurement_tracker/procurement_tracker.js:22
+#: buying/report/procurement_tracker/procurement_tracker.js:21
 #: buying/report/procurement_tracker/procurement_tracker.py:39
-#: buying/report/purchase_order_analysis/purchase_order_analysis.js:34
+#: buying/report/purchase_order_analysis/purchase_order_analysis.js:33
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:182
 #: projects/doctype/project/project.json
 #: projects/doctype/project/project_dashboard.py:11
 #: projects/doctype/task/task_calendar.js:19
-#: projects/doctype/task/task_tree.js:11
+#: projects/doctype/task/task_list.js:45 projects/doctype/task/task_tree.js:11
 #: projects/doctype/timesheet/timesheet_calendar.js:22
 #: projects/report/daily_timesheet_summary/daily_timesheet_summary.py:34
 #: projects/report/project_summary/project_summary.py:46
 #: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:19
-#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:51
+#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:46
 #: projects/report/timesheet_billing_summary/timesheet_billing_summary.py:25
-#: public/js/financial_statements.js:247 public/js/projects/timer.js:10
+#: public/js/financial_statements.js:256 public/js/projects/timer.js:14
 #: public/js/purchase_trends_filters.js:52 public/js/sales_trends_filters.js:28
-#: selling/doctype/sales_order/sales_order.js:587
+#: selling/doctype/sales_order/sales_order.js:681
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:94
-#: stock/report/reserved_stock/reserved_stock.js:139
+#: stock/report/reserved_stock/reserved_stock.js:130
 #: stock/report/reserved_stock/reserved_stock.py:184
-#: stock/report/stock_ledger/stock_ledger.js:76
-#: stock/report/stock_ledger/stock_ledger.py:261
-#: support/report/issue_analytics/issue_analytics.js:76
-#: support/report/issue_summary/issue_summary.js:64
+#: stock/report/stock_ledger/stock_ledger.js:84
+#: stock/report/stock_ledger/stock_ledger.py:333
+#: support/report/issue_analytics/issue_analytics.js:75
+#: support/report/issue_summary/issue_summary.js:63
+#: templates/pages/task_info.html:39 templates/pages/timelog_info.html:22
 msgid "Project"
 msgstr ""
 
@@ -52953,6 +53837,12 @@
 msgid "Project"
 msgstr ""
 
+#. Label of a Link field in DocType 'Installation Note'
+#: selling/doctype/installation_note/installation_note.json
+msgctxt "Installation Note"
+msgid "Project"
+msgstr ""
+
 #. Label of a Link field in DocType 'Issue'
 #: support/doctype/issue/issue.json
 msgctxt "Issue"
@@ -53258,7 +54148,7 @@
 
 #. Name of a DocType
 #: projects/doctype/project_type/project_type.json
-#: projects/report/project_summary/project_summary.js:31
+#: projects/report/project_summary/project_summary.js:30
 msgid "Project Type"
 msgstr ""
 
@@ -53334,6 +54224,8 @@
 msgid "Project-wise data is not available for Quotation"
 msgstr ""
 
+#: manufacturing/doctype/plant_floor/stock_summary_template.html:46
+#: stock/dashboard/item_dashboard_list.html:37
 #: stock/report/item_shortage_report/item_shortage_report.py:73
 #: stock/report/stock_projected_qty/stock_projected_qty.py:199
 #: templates/emails/reorder_item.html:12
@@ -53386,6 +54278,10 @@
 msgid "Projected Quantity"
 msgstr ""
 
+#: manufacturing/doctype/production_plan/production_plan.js:150
+msgid "Projected Quantity Formula"
+msgstr ""
+
 #: stock/page/stock_balance/stock_balance.js:51
 msgid "Projected qty"
 msgstr ""
@@ -53516,7 +54412,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: crm/doctype/lead/lead.js:41 crm/doctype/lead/lead.js:61
+#: crm/doctype/lead/lead.js:41 crm/doctype/lead/lead.js:62
 #: crm/doctype/prospect/prospect.json
 msgid "Prospect"
 msgstr ""
@@ -53611,7 +54507,7 @@
 #: accounts/doctype/shipping_rule/shipping_rule_dashboard.py:11
 #: accounts/doctype/tax_category/tax_category_dashboard.py:10
 #: projects/doctype/project/project_dashboard.py:16
-#: setup/doctype/company/company.py:335
+#: setup/doctype/company/company.py:334
 msgid "Purchase"
 msgstr ""
 
@@ -53704,15 +54600,15 @@
 #. Name of a DocType
 #: accounts/doctype/purchase_invoice/purchase_invoice.json
 #: accounts/print_format/purchase_auditing_voucher/purchase_auditing_voucher.html:5
-#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.js:23
+#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.js:22
 #: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:54
-#: buying/doctype/purchase_order/purchase_order.js:323
-#: buying/doctype/purchase_order/purchase_order_list.js:39
+#: buying/doctype/purchase_order/purchase_order.js:378
+#: buying/doctype/purchase_order/purchase_order_list.js:57
 #: buying/doctype/supplier_quotation/supplier_quotation_list.js:18
-#: stock/doctype/purchase_receipt/purchase_receipt.js:110
-#: stock/doctype/purchase_receipt/purchase_receipt.js:230
-#: stock/doctype/purchase_receipt/purchase_receipt_list.js:22
-#: stock/doctype/stock_entry/stock_entry.js:262
+#: stock/doctype/purchase_receipt/purchase_receipt.js:123
+#: stock/doctype/purchase_receipt/purchase_receipt.js:268
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:30
+#: stock/doctype/stock_entry/stock_entry.js:294
 msgid "Purchase Invoice"
 msgstr ""
 
@@ -53835,16 +54731,16 @@
 msgid "Purchase Invoice Trends"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:213
+#: assets/doctype/asset/asset.py:215
 msgid "Purchase Invoice cannot be made against an existing asset {0}"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:389
-#: stock/doctype/purchase_receipt/purchase_receipt.py:403
+#: stock/doctype/purchase_receipt/purchase_receipt.py:390
+#: stock/doctype/purchase_receipt/purchase_receipt.py:404
 msgid "Purchase Invoice {0} is already submitted"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1769
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1828
 msgid "Purchase Invoices"
 msgstr ""
 
@@ -53862,6 +54758,7 @@
 #: setup/doctype/supplier_group/supplier_group.json stock/doctype/bin/bin.json
 #: stock/doctype/material_request/material_request.json
 #: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.json
 #: subcontracting/doctype/subcontracting_order/subcontracting_order.json
 msgid "Purchase Manager"
 msgstr ""
@@ -53876,21 +54773,21 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:131
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:155
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:234
 #: accounts/report/purchase_register/purchase_register.py:216
 #: buying/doctype/purchase_order/purchase_order.json
-#: buying/doctype/supplier_quotation/supplier_quotation.js:23
+#: buying/doctype/supplier_quotation/supplier_quotation.js:25
 #: buying/doctype/supplier_quotation/supplier_quotation_list.js:14
 #: buying/report/procurement_tracker/procurement_tracker.py:82
-#: buying/report/purchase_order_analysis/purchase_order_analysis.js:41
+#: buying/report/purchase_order_analysis/purchase_order_analysis.js:40
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:167
-#: controllers/buying_controller.py:624
-#: manufacturing/doctype/blanket_order/blanket_order.js:45
-#: selling/doctype/sales_order/sales_order.js:112
-#: selling/doctype/sales_order/sales_order.js:576
-#: stock/doctype/material_request/material_request.js:137
-#: stock/doctype/purchase_receipt/purchase_receipt.js:194
+#: controllers/buying_controller.py:649
+#: manufacturing/doctype/blanket_order/blanket_order.js:54
+#: selling/doctype/sales_order/sales_order.js:136
+#: selling/doctype/sales_order/sales_order.js:659
+#: stock/doctype/material_request/material_request.js:154
+#: stock/doctype/purchase_receipt/purchase_receipt.js:225
 msgid "Purchase Order"
 msgstr ""
 
@@ -54061,7 +54958,7 @@
 msgid "Purchase Order Item Supplied"
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:684
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:685
 msgid "Purchase Order Item reference is missing in Subcontracting Receipt {0}"
 msgstr ""
 
@@ -54075,11 +54972,11 @@
 msgid "Purchase Order Pricing Rule"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:579
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:583
 msgid "Purchase Order Required"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:576
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:580
 msgid "Purchase Order Required for item {}"
 msgstr ""
 
@@ -54091,7 +54988,7 @@
 msgid "Purchase Order Trends"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:957
+#: selling/doctype/sales_order/sales_order.js:1115
 msgid "Purchase Order already created for all Sales Order items"
 msgstr ""
 
@@ -54099,11 +54996,11 @@
 msgid "Purchase Order number required for Item {0}"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:618
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:622
 msgid "Purchase Order {0} is not submitted"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:824
+#: buying/doctype/purchase_order/purchase_order.py:827
 msgid "Purchase Orders"
 msgstr ""
 
@@ -54113,7 +55010,7 @@
 msgid "Purchase Orders Items Overdue"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:301
+#: buying/doctype/purchase_order/purchase_order.py:302
 msgid "Purchase Orders are not allowed for {0} due to a scorecard standing of {1}."
 msgstr ""
 
@@ -54129,7 +55026,7 @@
 msgid "Purchase Orders to Receive"
 msgstr ""
 
-#: controllers/accounts_controller.py:1517
+#: controllers/accounts_controller.py:1606
 msgid "Purchase Orders {0} are un-linked"
 msgstr ""
 
@@ -54138,17 +55035,17 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:149
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:607
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:613
-#: accounts/doctype/purchase_invoice/purchase_invoice_list.js:61
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:177
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:650
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:660
+#: accounts/doctype/purchase_invoice/purchase_invoice_list.js:48
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:241
 #: accounts/report/purchase_register/purchase_register.py:223
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:20
-#: buying/doctype/purchase_order/purchase_order.js:310
-#: buying/doctype/purchase_order/purchase_order_list.js:43
+#: buying/doctype/purchase_order/purchase_order.js:352
+#: buying/doctype/purchase_order/purchase_order_list.js:61
 #: stock/doctype/purchase_receipt/purchase_receipt.json
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:56
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:65
 msgid "Purchase Receipt"
 msgstr ""
 
@@ -54265,11 +55162,11 @@
 msgid "Purchase Receipt No"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:601
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:605
 msgid "Purchase Receipt Required"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:596
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:600
 msgid "Purchase Receipt Required for item {}"
 msgstr ""
 
@@ -54282,15 +55179,15 @@
 msgid "Purchase Receipt Trends"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.js:314
+#: stock/doctype/purchase_receipt/purchase_receipt.js:363
 msgid "Purchase Receipt doesn't have any Item for which Retain Sample is enabled."
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:702
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:703
 msgid "Purchase Receipt {0} created."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:624
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:628
 msgid "Purchase Receipt {0} is not submitted"
 msgstr ""
 
@@ -54307,11 +55204,11 @@
 msgid "Purchase Register"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.js:225
+#: stock/doctype/purchase_receipt/purchase_receipt.js:258
 msgid "Purchase Return"
 msgstr ""
 
-#: setup/doctype/company/company.js:104
+#: setup/doctype/company/company.js:118
 msgid "Purchase Tax Template"
 msgstr ""
 
@@ -54428,6 +55325,7 @@
 #: stock/doctype/price_list/price_list.json
 #: stock/doctype/purchase_receipt/purchase_receipt.json
 #: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.json
 #: stock/doctype/warehouse/warehouse.json
 #: stock/doctype/warehouse_type/warehouse_type.json
 #: subcontracting/doctype/subcontracting_order/subcontracting_order.json
@@ -54493,7 +55391,7 @@
 msgid "Purple"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.js:287
+#: stock/doctype/stock_entry/stock_entry.js:329
 msgid "Purpose"
 msgstr ""
 
@@ -54533,7 +55431,7 @@
 msgid "Purpose"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:380
+#: stock/doctype/stock_entry/stock_entry.py:335
 msgid "Purpose must be one of {0}"
 msgstr ""
 
@@ -54574,18 +55472,21 @@
 #: controllers/trends.py:240 controllers/trends.py:252
 #: controllers/trends.py:257
 #: manufacturing/report/bom_explorer/bom_explorer.py:57
-#: public/js/bom_configurator/bom_configurator.bundle.js:203
-#: public/js/bom_configurator/bom_configurator.bundle.js:266
-#: public/js/bom_configurator/bom_configurator.bundle.js:271
-#: public/js/bom_configurator/bom_configurator.bundle.js:344
-#: public/js/utils.js:660 selling/doctype/sales_order/sales_order.js:315
-#: selling/doctype/sales_order/sales_order.js:410
-#: selling/doctype/sales_order/sales_order.js:698
-#: selling/doctype/sales_order/sales_order.js:815
+#: public/js/bom_configurator/bom_configurator.bundle.js:110
+#: public/js/bom_configurator/bom_configurator.bundle.js:209
+#: public/js/bom_configurator/bom_configurator.bundle.js:280
+#: public/js/bom_configurator/bom_configurator.bundle.js:303
+#: public/js/bom_configurator/bom_configurator.bundle.js:382
+#: public/js/utils.js:722 selling/doctype/sales_order/sales_order.js:340
+#: selling/doctype/sales_order/sales_order.js:440
+#: selling/doctype/sales_order/sales_order.js:802
+#: selling/doctype/sales_order/sales_order.js:951
 #: selling/report/sales_order_analysis/sales_order_analysis.py:255
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:106
 #: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:166
 #: stock/report/serial_no_ledger/serial_no_ledger.py:70
+#: templates/form_grid/item_grid.html:7
+#: templates/form_grid/material_request_grid.html:9
+#: templates/form_grid/stock_entry_grid.html:10
 #: templates/generators/bom.html:50 templates/pages/rfq.html:40
 msgid "Qty"
 msgstr ""
@@ -54732,7 +55633,7 @@
 msgid "Qty"
 msgstr ""
 
-#: templates/pages/order.html:167
+#: templates/pages/order.html:179
 msgid "Qty "
 msgstr ""
 
@@ -54782,7 +55683,7 @@
 msgid "Qty Per Unit"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:237
+#: manufacturing/doctype/bom/bom.js:256
 #: manufacturing/report/process_loss_report/process_loss_report.py:83
 msgid "Qty To Manufacture"
 msgstr ""
@@ -54873,7 +55774,14 @@
 msgid "Qty for which recursion isn't applicable."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:713
+#. Description of the 'Apply Recursion Over (As Per Transaction UOM)' (Float)
+#. field in DocType 'Promotional Scheme Product Discount'
+#: accounts/doctype/promotional_scheme_product_discount/promotional_scheme_product_discount.json
+msgctxt "Promotional Scheme Product Discount"
+msgid "Qty for which recursion isn't applicable."
+msgstr ""
+
+#: manufacturing/doctype/work_order/work_order.js:766
 msgid "Qty for {0}"
 msgstr ""
 
@@ -54893,7 +55801,7 @@
 msgid "Qty in Stock UOM"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.js:145
+#: stock/doctype/pick_list/pick_list.js:174
 msgid "Qty of Finished Goods Item"
 msgstr ""
 
@@ -54903,7 +55811,7 @@
 msgid "Qty of Finished Goods Item"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:430
+#: stock/doctype/pick_list/pick_list.py:470
 msgid "Qty of Finished Goods Item should be greater than 0."
 msgstr ""
 
@@ -54933,11 +55841,12 @@
 msgid "Qty to Deliver"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:321
+#: public/js/utils/serial_no_batch_selector.js:327
 msgid "Qty to Fetch"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:668
+#: manufacturing/doctype/job_card/job_card.py:675
+#: manufacturing/doctype/workstation/workstation_job_card.html:56
 msgid "Qty to Manufacture"
 msgstr ""
 
@@ -55118,7 +56027,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: manufacturing/doctype/bom/bom.js:130
+#: manufacturing/doctype/bom/bom.js:138
 #: stock/doctype/quality_inspection/quality_inspection.json
 msgid "Quality Inspection"
 msgstr ""
@@ -55278,12 +56187,12 @@
 msgid "Quality Inspection Template Name"
 msgstr ""
 
-#: public/js/controllers/transaction.js:298
-#: stock/doctype/stock_entry/stock_entry.js:143
+#: public/js/controllers/transaction.js:324
+#: stock/doctype/stock_entry/stock_entry.js:157
 msgid "Quality Inspection(s)"
 msgstr ""
 
-#: setup/doctype/company/company.py:377
+#: setup/doctype/company/company.py:376
 msgid "Quality Management"
 msgstr ""
 
@@ -55382,23 +56291,26 @@
 
 #: accounts/report/inactive_sales_items/inactive_sales_items.py:47
 #: buying/report/procurement_tracker/procurement_tracker.py:66
-#: buying/report/purchase_analytics/purchase_analytics.js:29
+#: buying/report/purchase_analytics/purchase_analytics.js:28
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:215
-#: manufacturing/doctype/bom/bom.js:306
-#: manufacturing/doctype/bom_creator/bom_creator.js:69
-#: public/js/controllers/buying.js:518 public/js/stock_analytics.js:37
-#: public/js/utils/serial_no_batch_selector.js:393
+#: manufacturing/doctype/bom/bom.js:319
+#: manufacturing/doctype/bom_creator/bom_creator.js:68
+#: manufacturing/doctype/plant_floor/plant_floor.js:166
+#: manufacturing/doctype/plant_floor/plant_floor.js:190
+#: public/js/controllers/buying.js:515 public/js/stock_analytics.js:50
+#: public/js/utils/serial_no_batch_selector.js:402
+#: selling/page/point_of_sale/pos_item_cart.js:46
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:42
-#: selling/report/sales_analytics/sales_analytics.js:29
+#: selling/report/sales_analytics/sales_analytics.js:36
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:67
-#: stock/dashboard/item_dashboard.js:236
-#: stock/doctype/material_request/material_request.js:249
-#: stock/doctype/stock_entry/stock_entry.js:551
+#: stock/dashboard/item_dashboard.js:244
+#: stock/doctype/material_request/material_request.js:314
+#: stock/doctype/stock_entry/stock_entry.js:636
 #: stock/report/batch_item_expiry_status/batch_item_expiry_status.py:36
 #: stock/report/delayed_item_report/delayed_item_report.py:150
-#: stock/report/stock_analytics/stock_analytics.js:28
+#: stock/report/stock_analytics/stock_analytics.js:27
 #: templates/emails/reorder_item.html:10 templates/generators/bom.html:30
-#: templates/pages/material_request_info.html:48 templates/pages/order.html:86
+#: templates/pages/material_request_info.html:48 templates/pages/order.html:98
 msgid "Quantity"
 msgstr ""
 
@@ -55637,16 +56549,20 @@
 msgid "Quantity and Warehouse"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1270
+#: stock/doctype/stock_entry/stock_entry.py:1279
 msgid "Quantity in row {0} ({1}) must be same as manufactured quantity {2}"
 msgstr ""
 
-#: stock/dashboard/item_dashboard.js:273
+#: manufacturing/doctype/plant_floor/plant_floor.js:246
+msgid "Quantity is required"
+msgstr ""
+
+#: stock/dashboard/item_dashboard.js:281
 msgid "Quantity must be greater than zero, and less or equal to {0}"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:721
-#: stock/doctype/pick_list/pick_list.js:152
+#: manufacturing/doctype/work_order/work_order.js:775
+#: stock/doctype/pick_list/pick_list.js:182
 msgid "Quantity must not be more than {0}"
 msgstr ""
 
@@ -55661,26 +56577,27 @@
 msgstr ""
 
 #: manufacturing/doctype/bom/bom.py:568
+#: manufacturing/doctype/workstation/workstation.js:216
 msgid "Quantity should be greater than 0"
 msgstr ""
 
-#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.js:22
+#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.js:21
 msgid "Quantity to Make"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:249
+#: manufacturing/doctype/work_order/work_order.js:264
 msgid "Quantity to Manufacture"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:1516
+#: manufacturing/doctype/work_order/work_order.py:1530
 msgid "Quantity to Manufacture can not be zero for the operation {0}"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:934
+#: manufacturing/doctype/work_order/work_order.py:948
 msgid "Quantity to Manufacture must be greater than 0."
 msgstr ""
 
-#: manufacturing/report/bom_stock_report/bom_stock_report.js:21
+#: manufacturing/report/bom_stock_report/bom_stock_report.js:24
 msgid "Quantity to Produce"
 msgstr ""
 
@@ -55688,7 +56605,7 @@
 msgid "Quantity to Produce should be greater than zero."
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:227
+#: public/js/utils/barcode_scanner.js:236
 msgid "Quantity to Scan"
 msgstr ""
 
@@ -55697,20 +56614,20 @@
 msgid "Quarter {0} {1}"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:65
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:68
-#: buying/report/purchase_analytics/purchase_analytics.js:63
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:59
-#: manufacturing/report/production_analytics/production_analytics.js:36
-#: public/js/financial_statements.js:218
+#: accounts/report/budget_variance_report/budget_variance_report.js:63
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:76
+#: buying/report/purchase_analytics/purchase_analytics.js:62
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:58
+#: manufacturing/report/production_analytics/production_analytics.js:35
+#: public/js/financial_statements.js:227
 #: public/js/purchase_trends_filters.js:20 public/js/sales_trends_filters.js:12
-#: public/js/stock_analytics.js:54
-#: selling/report/sales_analytics/sales_analytics.js:63
-#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:34
-#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:34
-#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:34
-#: stock/report/stock_analytics/stock_analytics.js:82
-#: support/report/issue_analytics/issue_analytics.js:44
+#: public/js/stock_analytics.js:84
+#: selling/report/sales_analytics/sales_analytics.js:70
+#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:33
+#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:33
+#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:33
+#: stock/report/stock_analytics/stock_analytics.js:81
+#: support/report/issue_analytics/issue_analytics.js:43
 msgid "Quarterly"
 msgstr ""
 
@@ -55798,11 +56715,18 @@
 msgid "Queued"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:39
+#. Option for the 'Status' (Select) field in DocType 'Transaction Deletion
+#. Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Queued"
+msgstr ""
+
+#: accounts/doctype/journal_entry/journal_entry.js:82
 msgid "Quick Entry"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:527
+#: accounts/doctype/journal_entry/journal_entry.js:577
 msgid "Quick Journal Entry"
 msgstr ""
 
@@ -55839,13 +56763,14 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/doctype/sales_invoice/sales_invoice.js:257
-#: buying/doctype/supplier_quotation/supplier_quotation.js:26
-#: crm/doctype/lead/lead.js:39 crm/doctype/opportunity/opportunity.js:100
-#: crm/report/lead_details/lead_details.js:38
-#: manufacturing/doctype/blanket_order/blanket_order.js:33
+#: accounts/doctype/sales_invoice/sales_invoice.js:287
+#: buying/doctype/supplier_quotation/supplier_quotation.js:27
+#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.html:20
+#: crm/doctype/lead/lead.js:39 crm/doctype/opportunity/opportunity.js:108
+#: crm/report/lead_details/lead_details.js:37
+#: manufacturing/doctype/blanket_order/blanket_order.js:38
 #: selling/doctype/quotation/quotation.json
-#: selling/doctype/sales_order/sales_order.js:613
+#: selling/doctype/sales_order/sales_order.js:721
 msgid "Quotation"
 msgstr ""
 
@@ -55953,11 +56878,11 @@
 msgid "Quotation Trends"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:383
+#: selling/doctype/sales_order/sales_order.py:386
 msgid "Quotation {0} is cancelled"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:300
+#: selling/doctype/sales_order/sales_order.py:303
 msgid "Quotation {0} not of type {1}"
 msgstr ""
 
@@ -56013,13 +56938,13 @@
 msgid "Random"
 msgstr ""
 
-#: buying/report/purchase_analytics/purchase_analytics.js:58
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:26
-#: manufacturing/report/production_analytics/production_analytics.js:31
-#: public/js/stock_analytics.js:49
-#: selling/report/sales_analytics/sales_analytics.js:58
-#: stock/report/stock_analytics/stock_analytics.js:77
-#: support/report/issue_analytics/issue_analytics.js:39
+#: buying/report/purchase_analytics/purchase_analytics.js:57
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:25
+#: manufacturing/report/production_analytics/production_analytics.js:30
+#: public/js/stock_analytics.js:78
+#: selling/report/sales_analytics/sales_analytics.js:65
+#: stock/report/stock_analytics/stock_analytics.js:76
+#: support/report/issue_analytics/issue_analytics.js:38
 msgid "Range"
 msgstr ""
 
@@ -56039,12 +56964,13 @@
 #: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:79
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:263
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:315
-#: accounts/report/share_ledger/share_ledger.py:56 public/js/utils.js:669
+#: accounts/report/share_ledger/share_ledger.py:56 public/js/utils.js:732
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:45
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:68
-#: stock/dashboard/item_dashboard.js:243
+#: stock/dashboard/item_dashboard.js:251
 #: stock/report/delayed_item_report/delayed_item_report.py:151
-#: templates/pages/order.html:89 templates/pages/rfq.html:43
+#: templates/form_grid/item_grid.html:8 templates/pages/order.html:101
+#: templates/pages/rfq.html:43
 msgid "Rate"
 msgstr ""
 
@@ -56654,6 +57580,7 @@
 msgstr ""
 
 #: manufacturing/report/bom_variance_report/bom_variance_report.py:52
+#: public/js/bom_configurator/bom_configurator.bundle.js:118
 #: setup/setup_wizard/operations/install_fixtures.py:46
 #: setup/setup_wizard/operations/install_fixtures.py:167
 msgid "Raw Material"
@@ -56723,12 +57650,13 @@
 msgid "Raw Material Value"
 msgstr ""
 
-#: manufacturing/report/production_planning_report/production_planning_report.js:66
+#: manufacturing/report/production_planning_report/production_planning_report.js:65
 msgid "Raw Material Warehouse"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:274
-#: public/js/bom_configurator/bom_configurator.bundle.js:268
+#: manufacturing/doctype/bom/bom.js:287
+#: manufacturing/doctype/workstation/workstation_job_card.html:76
+#: public/js/bom_configurator/bom_configurator.bundle.js:289
 msgid "Raw Materials"
 msgstr ""
 
@@ -56814,12 +57742,12 @@
 msgid "Raw Materials cannot be blank."
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:304
-#: manufacturing/doctype/production_plan/production_plan.js:97
-#: manufacturing/doctype/work_order/work_order.js:574
-#: selling/doctype/sales_order/sales_order.js:526
-#: selling/doctype/sales_order/sales_order_list.js:49
-#: stock/doctype/material_request/material_request.js:166
+#: buying/doctype/purchase_order/purchase_order.js:342
+#: manufacturing/doctype/production_plan/production_plan.js:103
+#: manufacturing/doctype/work_order/work_order.js:610
+#: selling/doctype/sales_order/sales_order.js:563
+#: selling/doctype/sales_order/sales_order_list.js:62
+#: stock/doctype/material_request/material_request.js:197
 #: subcontracting/doctype/subcontracting_order/subcontracting_order.js:106
 msgid "Re-open"
 msgstr ""
@@ -56836,7 +57764,7 @@
 msgid "Re-order Qty"
 msgstr ""
 
-#: accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py:226
+#: accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py:227
 msgid "Reached Root"
 msgstr ""
 
@@ -56923,11 +57851,11 @@
 msgid "Readings"
 msgstr ""
 
-#: support/doctype/issue/issue.js:44
+#: support/doctype/issue/issue.js:51
 msgid "Reason"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:242
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:279
 msgid "Reason For Putting On Hold"
 msgstr ""
 
@@ -56937,8 +57865,14 @@
 msgid "Reason For Putting On Hold"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:565
-#: selling/doctype/sales_order/sales_order.js:1112
+#. Label of a Data field in DocType 'Payment Request'
+#: accounts/doctype/payment_request/payment_request.json
+msgctxt "Payment Request"
+msgid "Reason for Failure"
+msgstr ""
+
+#: buying/doctype/purchase_order/purchase_order.js:661
+#: selling/doctype/sales_order/sales_order.js:1274
 msgid "Reason for Hold"
 msgstr ""
 
@@ -56948,11 +57882,11 @@
 msgid "Reason for Leaving"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:1127
+#: selling/doctype/sales_order/sales_order.js:1289
 msgid "Reason for hold:"
 msgstr ""
 
-#: manufacturing/doctype/bom_creator/bom_creator.js:144
+#: manufacturing/doctype/bom_creator/bom_creator.js:140
 msgid "Rebuild Tree"
 msgstr ""
 
@@ -56966,11 +57900,11 @@
 msgid "Recalculate Incoming/Outgoing Rate"
 msgstr ""
 
-#: projects/doctype/project/project.js:104
+#: projects/doctype/project/project.js:128
 msgid "Recalculating Purchase Cost against this Project..."
 msgstr ""
 
-#: assets/doctype/asset/asset_list.js:29
+#: assets/doctype/asset/asset_list.js:21
 msgid "Receipt"
 msgstr ""
 
@@ -57016,7 +57950,7 @@
 msgid "Receipt Document Type"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:53
+#: accounts/report/account_balance/account_balance.js:55
 msgid "Receivable"
 msgstr ""
 
@@ -57045,7 +57979,7 @@
 msgid "Receivable / Payable Account"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.js:67
+#: accounts/report/accounts_receivable/accounts_receivable.js:70
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:236
 #: accounts/report/sales_register/sales_register.py:215
 #: accounts/report/sales_register/sales_register.py:269
@@ -57079,10 +58013,10 @@
 msgid "Receive"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.py:297
+#: buying/doctype/request_for_quotation/request_for_quotation.py:321
 #: buying/doctype/supplier_quotation/supplier_quotation.py:175
-#: stock/doctype/material_request/material_request_list.js:23
-#: stock/doctype/material_request/material_request_list.js:31
+#: stock/doctype/material_request/material_request_list.js:27
+#: stock/doctype/material_request/material_request_list.js:35
 msgid "Received"
 msgstr ""
 
@@ -57123,7 +58057,7 @@
 msgid "Received Amount After Tax (Company Currency)"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:891
+#: accounts/doctype/payment_entry/payment_entry.py:900
 msgid "Received Amount cannot be greater than Paid Amount"
 msgstr ""
 
@@ -57197,6 +58131,7 @@
 msgstr ""
 
 #: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.py:50
+#: manufacturing/notification/material_request_receipt_notification/material_request_receipt_notification.html:9
 msgid "Received Quantity"
 msgstr ""
 
@@ -57212,7 +58147,7 @@
 msgid "Received Quantity"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.js:250
+#: stock/doctype/stock_entry/stock_entry.js:278
 msgid "Received Stock Entries"
 msgstr ""
 
@@ -57245,6 +58180,10 @@
 msgid "Receiving"
 msgstr ""
 
+#: selling/page/point_of_sale/pos_past_order_list.js:17
+msgid "Recent Orders"
+msgstr ""
+
 #. Label of a Dynamic Link field in DocType 'Email Campaign'
 #: crm/doctype/email_campaign/email_campaign.json
 msgctxt "Email Campaign"
@@ -57275,8 +58214,8 @@
 msgid "Recipients"
 msgstr ""
 
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:89
 #: accounts/doctype/payment_reconciliation/payment_reconciliation.js:90
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:93
 msgid "Reconcile"
 msgstr ""
 
@@ -57286,11 +58225,11 @@
 msgid "Reconcile"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:325
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:341
 msgid "Reconcile Entries"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/dialog_manager.js:217
+#: public/js/bank_reconciliation_tool/dialog_manager.js:221
 msgid "Reconcile the Bank Transaction"
 msgstr ""
 
@@ -57367,6 +58306,12 @@
 msgid "Recurse Every (As Per Transaction UOM)"
 msgstr ""
 
+#. Label of a Float field in DocType 'Promotional Scheme Product Discount'
+#: accounts/doctype/promotional_scheme_product_discount/promotional_scheme_product_discount.json
+msgctxt "Promotional Scheme Product Discount"
+msgid "Recurse Every (As Per Transaction UOM)"
+msgstr ""
+
 #: accounts/doctype/pricing_rule/pricing_rule.py:232
 msgid "Recurse Over Qty cannot be less than 0"
 msgstr ""
@@ -57395,7 +58340,7 @@
 msgid "Redeem Against"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:497
+#: selling/page/point_of_sale/pos_payment.js:525
 msgid "Redeem Loyalty Points"
 msgstr ""
 
@@ -57476,7 +58421,12 @@
 #: accounts/doctype/promotional_scheme/promotional_scheme_dashboard.py:7
 #: accounts/doctype/purchase_invoice/purchase_invoice_dashboard.py:22
 #: accounts/doctype/sales_invoice/sales_invoice_dashboard.py:34
+#: accounts/report/accounts_receivable/accounts_receivable.html:136
+#: accounts/report/accounts_receivable/accounts_receivable.html:139
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:12
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:25
 #: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:99
+#: accounts/report/general_ledger/general_ledger.html:28
 #: buying/doctype/purchase_order/purchase_order_dashboard.py:22
 #: buying/doctype/supplier_quotation/supplier_quotation_dashboard.py:15
 #: manufacturing/doctype/job_card/job_card_dashboard.py:10
@@ -57630,11 +58580,12 @@
 msgid "Reference"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:899
+#: accounts/doctype/journal_entry/journal_entry.py:926
 msgid "Reference #{0} dated {1}"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/dialog_manager.js:112
+#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:27
+#: public/js/bank_reconciliation_tool/dialog_manager.js:119
 msgid "Reference Date"
 msgstr ""
 
@@ -57644,7 +58595,7 @@
 msgid "Reference Date"
 msgstr ""
 
-#: public/js/controllers/transaction.js:2073
+#: public/js/controllers/transaction.js:2116
 msgid "Reference Date for Early Payment Discount"
 msgstr ""
 
@@ -57666,7 +58617,7 @@
 msgid "Reference Doctype"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:555
+#: accounts/doctype/payment_entry/payment_entry.py:564
 msgid "Reference Doctype must be one of {0}"
 msgstr ""
 
@@ -57835,24 +58786,30 @@
 msgid "Reference Name"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:532
+#. Label of a Data field in DocType 'Sales Invoice Payment'
+#: accounts/doctype/sales_invoice_payment/sales_invoice_payment.json
+msgctxt "Sales Invoice Payment"
+msgid "Reference No"
+msgstr ""
+
+#: accounts/doctype/journal_entry/journal_entry.py:548
 msgid "Reference No & Reference Date is required for {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1087
+#: accounts/doctype/payment_entry/payment_entry.py:1096
 msgid "Reference No and Reference Date is mandatory for Bank transaction"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:537
+#: accounts/doctype/journal_entry/journal_entry.py:553
 msgid "Reference No is mandatory if you entered Reference Date"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:260
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:258
 msgid "Reference No."
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/data_table_manager.js:88
-#: public/js/bank_reconciliation_tool/dialog_manager.js:123
+#: public/js/bank_reconciliation_tool/data_table_manager.js:83
+#: public/js/bank_reconciliation_tool/dialog_manager.js:130
 msgid "Reference Number"
 msgstr ""
 
@@ -58028,7 +58985,15 @@
 msgid "References"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:631
+#: stock/doctype/delivery_note/delivery_note.py:395
+msgid "References to Sales Invoices are Incomplete"
+msgstr ""
+
+#: stock/doctype/delivery_note/delivery_note.py:371
+msgid "References to Sales Orders are Incomplete"
+msgstr ""
+
+#: accounts/doctype/payment_entry/payment_entry.py:640
 msgid "References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount."
 msgstr ""
 
@@ -58044,7 +59009,8 @@
 msgid "Referral Sales Partner"
 msgstr ""
 
-#: selling/page/sales_funnel/sales_funnel.js:44
+#: public/js/plant_floor_visual/visual_plant.js:151
+#: selling/page/sales_funnel/sales_funnel.js:51
 msgid "Refresh"
 msgstr ""
 
@@ -58054,7 +59020,7 @@
 msgid "Refresh Google Sheet"
 msgstr ""
 
-#: accounts/doctype/bank/bank.js:22
+#: accounts/doctype/bank/bank.js:21
 msgid "Refresh Plaid Link"
 msgstr ""
 
@@ -58064,7 +59030,7 @@
 msgid "Refresh Token"
 msgstr ""
 
-#: stock/reorder_item.py:303
+#: stock/reorder_item.py:388
 msgid "Regards,"
 msgstr ""
 
@@ -58206,8 +59172,8 @@
 msgid "Relation"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:234
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:278
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:271
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:315
 msgid "Release Date"
 msgstr ""
 
@@ -58223,7 +59189,7 @@
 msgid "Release Date"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:314
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:318
 msgid "Release date must be in the future"
 msgstr ""
 
@@ -58233,17 +59199,18 @@
 msgid "Relieving Date"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/dialog_manager.js:118
+#: public/js/bank_reconciliation_tool/dialog_manager.js:125
 msgid "Remaining"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:186
-#: accounts/report/accounts_receivable/accounts_receivable.py:1085
+#: accounts/report/accounts_receivable/accounts_receivable.html:156
+#: accounts/report/accounts_receivable/accounts_receivable.py:1093
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:181
 msgid "Remaining Balance"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:350
+#: selling/page/point_of_sale/pos_payment.js:367
 msgid "Remark"
 msgstr ""
 
@@ -58266,8 +59233,14 @@
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:240
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:311
 #: accounts/print_format/payment_receipt_voucher/payment_receipt_voucher.html:11
-#: accounts/report/accounts_receivable/accounts_receivable.py:1117
-#: accounts/report/general_ledger/general_ledger.py:661
+#: accounts/report/accounts_receivable/accounts_receivable.html:142
+#: accounts/report/accounts_receivable/accounts_receivable.html:159
+#: accounts/report/accounts_receivable/accounts_receivable.html:198
+#: accounts/report/accounts_receivable/accounts_receivable.html:269
+#: accounts/report/accounts_receivable/accounts_receivable.py:1125
+#: accounts/report/general_ledger/general_ledger.html:29
+#: accounts/report/general_ledger/general_ledger.html:51
+#: accounts/report/general_ledger/general_ledger.py:674
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:116
 #: accounts/report/purchase_register/purchase_register.py:296
 #: accounts/report/sales_register/sales_register.py:333
@@ -58390,11 +59363,15 @@
 msgid "Remarks Column Length"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:323
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.js:38
+msgid "Remove item if charges is not applicable to that item"
+msgstr ""
+
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:377
 msgid "Removed items with no change in quantity or value."
 msgstr ""
 
-#: utilities/doctype/rename_tool/rename_tool.js:25
+#: utilities/doctype/rename_tool/rename_tool.js:24
 msgid "Rename"
 msgstr ""
 
@@ -58411,7 +59388,7 @@
 msgid "Rename Log"
 msgstr ""
 
-#: accounts/doctype/account/account.py:502
+#: accounts/doctype/account/account.py:521
 msgid "Rename Not Allowed"
 msgstr ""
 
@@ -58420,7 +59397,7 @@
 msgid "Rename Tool"
 msgstr ""
 
-#: accounts/doctype/account/account.py:494
+#: accounts/doctype/account/account.py:513
 msgid "Renaming it is only allowed via parent company {0}, to avoid mismatch."
 msgstr ""
 
@@ -58443,11 +59420,11 @@
 msgid "Rented"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:34
-#: crm/doctype/opportunity/opportunity.js:113
-#: stock/doctype/delivery_note/delivery_note.js:228
-#: stock/doctype/purchase_receipt/purchase_receipt.js:240
-#: support/doctype/issue/issue.js:30
+#: buying/doctype/purchase_order/purchase_order_list.js:53
+#: crm/doctype/opportunity/opportunity.js:123
+#: stock/doctype/delivery_note/delivery_note.js:277
+#: stock/doctype/purchase_receipt/purchase_receipt.js:284
+#: support/doctype/issue/issue.js:37
 msgid "Reopen"
 msgstr ""
 
@@ -58484,7 +59461,7 @@
 msgid "Repair"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:107
+#: assets/doctype/asset/asset.js:127
 msgid "Repair Asset"
 msgstr ""
 
@@ -58532,9 +59509,16 @@
 msgid "Replace BOM"
 msgstr ""
 
-#: crm/report/lead_details/lead_details.js:36
-#: support/report/issue_analytics/issue_analytics.js:57
-#: support/report/issue_summary/issue_summary.js:44
+#. Description of a DocType
+#: manufacturing/doctype/bom_update_tool/bom_update_tool.json
+msgid ""
+"Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM.\n"
+"It also updates latest price in all the BOMs."
+msgstr ""
+
+#: crm/report/lead_details/lead_details.js:35
+#: support/report/issue_analytics/issue_analytics.js:56
+#: support/report/issue_summary/issue_summary.js:43
 #: support/report/issue_summary/issue_summary.py:354
 msgid "Replied"
 msgstr ""
@@ -58563,7 +59547,7 @@
 msgid "Replied"
 msgstr ""
 
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:86
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:110
 msgid "Report"
 msgstr ""
 
@@ -58583,7 +59567,7 @@
 msgid "Report Date"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:213
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:192
 msgid "Report Error"
 msgstr ""
 
@@ -58599,12 +59583,12 @@
 msgid "Report Type"
 msgstr ""
 
-#: accounts/doctype/account/account.py:395
+#: accounts/doctype/account/account.py:414
 msgid "Report Type is mandatory"
 msgstr ""
 
-#: accounts/report/balance_sheet/balance_sheet.js:17
-#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:17
+#: accounts/report/balance_sheet/balance_sheet.js:13
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:13
 msgid "Report View"
 msgstr ""
 
@@ -58638,8 +59622,9 @@
 msgid "Reports to"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:70
-#: accounts/doctype/sales_invoice/sales_invoice.js:73
+#: accounts/doctype/journal_entry/journal_entry.js:34
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:87
+#: accounts/doctype/sales_invoice/sales_invoice.js:78
 msgid "Repost Accounting Entries"
 msgstr ""
 
@@ -58684,6 +59669,12 @@
 msgid "Repost Payment Ledger Items"
 msgstr ""
 
+#. Label of a Check field in DocType 'Journal Entry'
+#: accounts/doctype/journal_entry/journal_entry.json
+msgctxt "Journal Entry"
+msgid "Repost Required"
+msgstr ""
+
 #. Label of a Check field in DocType 'Purchase Invoice'
 #: accounts/doctype/purchase_invoice/purchase_invoice.json
 msgctxt "Purchase Invoice"
@@ -58702,11 +59693,11 @@
 msgid "Repost Status"
 msgstr ""
 
-#: accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py:137
+#: accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py:138
 msgid "Repost has started in the background"
 msgstr ""
 
-#: accounts/doctype/repost_payment_ledger/repost_payment_ledger.js:38
+#: accounts/doctype/repost_payment_ledger/repost_payment_ledger.js:40
 msgid "Repost in background"
 msgstr ""
 
@@ -58714,7 +59705,7 @@
 msgid "Repost started in the background"
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.js:105
+#: stock/doctype/repost_item_valuation/repost_item_valuation.js:115
 msgid "Reposting Completed {0}%"
 msgstr ""
 
@@ -58730,7 +59721,7 @@
 msgid "Reposting Info"
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.js:113
+#: stock/doctype/repost_item_valuation/repost_item_valuation.js:123
 msgid "Reposting Progress"
 msgstr ""
 
@@ -58739,16 +59730,17 @@
 msgid "Reposting entries created: {0}"
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.js:89
+#: stock/doctype/repost_item_valuation/repost_item_valuation.js:99
 msgid "Reposting has been started in the background."
 msgstr ""
 
-#: accounts/doctype/repost_payment_ledger/repost_payment_ledger.js:47
+#: accounts/doctype/repost_payment_ledger/repost_payment_ledger.js:49
 msgid "Reposting in the background."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:76
-#: accounts/doctype/sales_invoice/sales_invoice.js:79
+#: accounts/doctype/journal_entry/journal_entry.js:39
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:92
+#: accounts/doctype/sales_invoice/sales_invoice.js:83
 msgid "Reposting..."
 msgstr ""
 
@@ -58806,11 +59798,20 @@
 msgid "Represents Company"
 msgstr ""
 
-#: public/js/utils.js:678
+#. Description of a DocType
+#: accounts/doctype/fiscal_year/fiscal_year.json
+msgid "Represents a Financial Year. All accounting entries and other major transactions are tracked against the Fiscal Year."
+msgstr ""
+
+#: templates/form_grid/material_request_grid.html:25
+msgid "Reqd By Date"
+msgstr ""
+
+#: public/js/utils.js:742
 msgid "Reqd by date"
 msgstr ""
 
-#: crm/doctype/opportunity/opportunity.js:87
+#: crm/doctype/opportunity/opportunity.js:89
 msgid "Request For Quotation"
 msgstr ""
 
@@ -58820,7 +59821,7 @@
 msgid "Request Parameters"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.js:269
+#: accounts/doctype/pos_invoice/pos_invoice.js:292
 msgid "Request Timeout"
 msgstr ""
 
@@ -58844,11 +59845,11 @@
 
 #. Name of a DocType
 #: buying/doctype/request_for_quotation/request_for_quotation.json
-#: buying/doctype/request_for_quotation/request_for_quotation.py:346
-#: buying/doctype/supplier_quotation/supplier_quotation.js:57
+#: buying/doctype/request_for_quotation/request_for_quotation.py:370
+#: buying/doctype/supplier_quotation/supplier_quotation.js:62
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:68
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:274
-#: stock/doctype/material_request/material_request.js:142
+#: stock/doctype/material_request/material_request.js:162
 msgid "Request for Quotation"
 msgstr ""
 
@@ -58886,7 +59887,7 @@
 msgid "Request for Quotation Supplier"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:571
+#: selling/doctype/sales_order/sales_order.js:650
 msgid "Request for Raw Materials"
 msgstr ""
 
@@ -58942,6 +59943,10 @@
 msgid "Requested Qty"
 msgstr ""
 
+#: manufacturing/doctype/production_plan/production_plan.js:150
+msgid "Requested Qty: Quantity requested for purchase, but not ordered."
+msgstr ""
+
 #: buying/report/procurement_tracker/procurement_tracker.py:46
 msgid "Requesting Site"
 msgstr ""
@@ -59028,8 +60033,15 @@
 msgid "Required Items"
 msgstr ""
 
+#: templates/form_grid/material_request_grid.html:7
+msgid "Required On"
+msgstr ""
+
 #: buying/report/subcontract_order_summary/subcontract_order_summary.py:151
+#: manufacturing/doctype/workstation/workstation_job_card.html:95
 #: manufacturing/report/bom_stock_calculated/bom_stock_calculated.py:88
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:11
+#: manufacturing/report/bom_stock_report/bom_stock_report.html:21
 #: manufacturing/report/bom_stock_report/bom_stock_report.py:29
 #: manufacturing/report/bom_variance_report/bom_variance_report.py:58
 #: manufacturing/report/production_planning_report/production_planning_report.py:411
@@ -59106,7 +60118,7 @@
 msgid "Research"
 msgstr ""
 
-#: setup/doctype/company/company.py:383
+#: setup/doctype/company/company.py:382
 msgid "Research & Development"
 msgstr ""
 
@@ -59138,11 +60150,11 @@
 msgid "Reselect, if the chosen contact is edited after save"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.js:30
+#: accounts/doctype/payment_request/payment_request.js:39
 msgid "Resend Payment Email"
 msgstr ""
 
-#: stock/report/reserved_stock/reserved_stock.js:121
+#: stock/report/reserved_stock/reserved_stock.js:118
 msgid "Reservation Based On"
 msgstr ""
 
@@ -59152,12 +60164,12 @@
 msgid "Reservation Based On"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:68
-#: stock/doctype/pick_list/pick_list.js:110
+#: selling/doctype/sales_order/sales_order.js:80
+#: stock/doctype/pick_list/pick_list.js:126
 msgid "Reserve"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:322
+#: selling/doctype/sales_order/sales_order.js:347
 msgid "Reserve Stock"
 msgstr ""
 
@@ -59191,6 +60203,8 @@
 msgid "Reserved"
 msgstr ""
 
+#: manufacturing/doctype/plant_floor/stock_summary_template.html:29
+#: stock/dashboard/item_dashboard_list.html:20
 #: stock/report/reserved_stock/reserved_stock.py:124
 #: stock/report/stock_projected_qty/stock_projected_qty.py:164
 msgid "Reserved Qty"
@@ -59230,16 +60244,28 @@
 msgid "Reserved Qty for Production Plan"
 msgstr ""
 
+#: manufacturing/doctype/production_plan/production_plan.js:150
+msgid "Reserved Qty for Production: Raw materials quantity to make manufacturing items."
+msgstr ""
+
 #. Label of a Float field in DocType 'Bin'
 #: stock/doctype/bin/bin.json
 msgctxt "Bin"
 msgid "Reserved Qty for Subcontract"
 msgstr ""
 
+#: manufacturing/doctype/production_plan/production_plan.js:150
+msgid "Reserved Qty for Subcontract: Raw materials quantity to make subcontracted items."
+msgstr ""
+
 #: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:497
 msgid "Reserved Qty should be greater than Delivered Qty."
 msgstr ""
 
+#: manufacturing/doctype/production_plan/production_plan.js:150
+msgid "Reserved Qty: Quantity ordered for sale, but not delivered."
+msgstr ""
+
 #: stock/report/item_shortage_report/item_shortage_report.py:116
 msgid "Reserved Quantity"
 msgstr ""
@@ -59248,16 +60274,18 @@
 msgid "Reserved Quantity for Production"
 msgstr ""
 
-#: stock/stock_ledger.py:1982
+#: stock/stock_ledger.py:1989
 msgid "Reserved Serial No."
 msgstr ""
 
 #. Name of a report
-#: selling/doctype/sales_order/sales_order.js:79
-#: selling/doctype/sales_order/sales_order.js:374
-#: stock/doctype/pick_list/pick_list.js:120
+#: manufacturing/doctype/plant_floor/stock_summary_template.html:24
+#: selling/doctype/sales_order/sales_order.js:99
+#: selling/doctype/sales_order/sales_order.js:404
+#: stock/dashboard/item_dashboard_list.html:15
+#: stock/doctype/pick_list/pick_list.js:146
 #: stock/report/reserved_stock/reserved_stock.json
-#: stock/report/stock_balance/stock_balance.py:459 stock/stock_ledger.py:1962
+#: stock/report/stock_balance/stock_balance.py:467 stock/stock_ledger.py:1969
 msgid "Reserved Stock"
 msgstr ""
 
@@ -59267,7 +60295,7 @@
 msgid "Reserved Stock"
 msgstr ""
 
-#: stock/stock_ledger.py:2012
+#: stock/stock_ledger.py:2019
 msgid "Reserved Stock for Batch"
 msgstr ""
 
@@ -59299,21 +60327,27 @@
 msgid "Reserved for sub contracting"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:335
-#: stock/doctype/pick_list/pick_list.js:237
+#: selling/doctype/sales_order/sales_order.js:360
+#: stock/doctype/pick_list/pick_list.js:271
 msgid "Reserving Stock..."
 msgstr ""
 
-#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:139
-#: support/doctype/issue/issue.js:48
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:155
+#: support/doctype/issue/issue.js:55
 msgid "Reset"
 msgstr ""
 
+#. Label of a Check field in DocType 'Transaction Deletion Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Reset Company Default Values"
+msgstr ""
+
 #: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:19
 msgid "Reset Plaid Link"
 msgstr ""
 
-#: support/doctype/issue/issue.js:39
+#: support/doctype/issue/issue.js:46
 msgid "Reset Service Level Agreement"
 msgstr ""
 
@@ -59323,7 +60357,7 @@
 msgid "Reset Service Level Agreement"
 msgstr ""
 
-#: support/doctype/issue/issue.js:56
+#: support/doctype/issue/issue.js:63
 msgid "Resetting Service Level Agreement."
 msgstr ""
 
@@ -59412,8 +60446,8 @@
 msgstr ""
 
 #: accounts/doctype/dunning/dunning_list.js:4
-#: support/report/issue_analytics/issue_analytics.js:58
-#: support/report/issue_summary/issue_summary.js:46
+#: support/report/issue_analytics/issue_analytics.js:57
+#: support/report/issue_summary/issue_summary.js:45
 #: support/report/issue_summary/issue_summary.py:366
 msgid "Resolved"
 msgstr ""
@@ -59493,7 +60527,7 @@
 msgid "Rest Of The World"
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.js:72
+#: stock/doctype/repost_item_valuation/repost_item_valuation.js:82
 msgid "Restart"
 msgstr ""
 
@@ -59501,7 +60535,7 @@
 msgid "Restart Subscription"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:96
+#: assets/doctype/asset/asset.js:108
 msgid "Restore Asset"
 msgstr ""
 
@@ -59548,12 +60582,12 @@
 msgid "Result Title Field"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:290
-#: selling/doctype/sales_order/sales_order.js:515
+#: buying/doctype/purchase_order/purchase_order.js:321
+#: selling/doctype/sales_order/sales_order.js:549
 msgid "Resume"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:255
+#: manufacturing/doctype/job_card/job_card.js:288
 msgid "Resume Job"
 msgstr ""
 
@@ -59580,11 +60614,11 @@
 msgid "Retained Earnings"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.js:232
+#: stock/doctype/purchase_receipt/purchase_receipt.js:274
 msgid "Retention Stock Entry"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.js:450
+#: stock/doctype/stock_entry/stock_entry.js:510
 msgid "Retention Stock Entry already created or Sample Quantity not provided"
 msgstr ""
 
@@ -59594,20 +60628,21 @@
 msgid "Retried"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:134
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:115
 #: accounts/doctype/ledger_merge/ledger_merge.js:72
-#: accounts/doctype/pos_closing_entry/pos_closing_entry.js:65
+#: accounts/doctype/pos_closing_entry/pos_closing_entry.js:66
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.js:21
 msgid "Retry"
 msgstr ""
 
-#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js:13
+#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js:27
 msgid "Retry Failed Transactions"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.js:50
-#: accounts/doctype/sales_invoice/sales_invoice.py:263
-#: stock/doctype/delivery_note/delivery_note_list.js:6
-#: stock/doctype/purchase_receipt/purchase_receipt_list.js:6
+#: accounts/doctype/pos_invoice/pos_invoice.js:54
+#: accounts/doctype/sales_invoice/sales_invoice.py:268
+#: stock/doctype/delivery_note/delivery_note_list.js:16
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:15
 msgid "Return"
 msgstr ""
 
@@ -59635,11 +60670,11 @@
 msgid "Return"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.js:120
+#: accounts/doctype/sales_invoice/sales_invoice.js:121
 msgid "Return / Credit Note"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:119
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:139
 msgid "Return / Debit Note"
 msgstr ""
 
@@ -59685,12 +60720,12 @@
 msgid "Return Against Subcontracting Receipt"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:194
+#: manufacturing/doctype/work_order/work_order.js:205
 msgid "Return Components"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note_list.js:10
-#: stock/doctype/purchase_receipt/purchase_receipt_list.js:10
+#: stock/doctype/delivery_note/delivery_note_list.js:20
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:19
 msgid "Return Issued"
 msgstr ""
 
@@ -59712,16 +60747,16 @@
 msgid "Return Issued"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.js:287
+#: stock/doctype/purchase_receipt/purchase_receipt.js:334
 msgid "Return Qty"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.js:265
+#: stock/doctype/purchase_receipt/purchase_receipt.js:310
 msgid "Return Qty from Rejected Warehouse"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:77
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:142
+#: buying/doctype/purchase_order/purchase_order.js:80
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:150
 msgid "Return of Components"
 msgstr ""
 
@@ -59801,7 +60836,7 @@
 msgid "Returned Qty in Stock UOM"
 msgstr ""
 
-#: accounts/doctype/currency_exchange_settings/currency_exchange_settings.py:103
+#: accounts/doctype/currency_exchange_settings/currency_exchange_settings.py:104
 msgid "Returned exchange rate is neither integer not float."
 msgstr ""
 
@@ -59819,14 +60854,14 @@
 msgid "Returns"
 msgstr ""
 
-#: accounts/report/accounts_payable/accounts_payable.js:154
-#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:116
-#: accounts/report/accounts_receivable/accounts_receivable.js:186
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:144
+#: accounts/report/accounts_payable/accounts_payable.js:157
+#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:119
+#: accounts/report/accounts_receivable/accounts_receivable.js:189
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:147
 msgid "Revaluation Journals"
 msgstr ""
 
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:80
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:88
 msgid "Revenue"
 msgstr ""
 
@@ -59836,7 +60871,7 @@
 msgid "Reversal Of"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:33
+#: accounts/doctype/journal_entry/journal_entry.js:73
 msgid "Reverse Journal Entry"
 msgstr ""
 
@@ -59993,12 +61028,12 @@
 msgid "Root"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:41
+#: accounts/doctype/account/account_tree.js:47
 msgid "Root Company"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:112
-#: accounts/report/account_balance/account_balance.js:23
+#: accounts/doctype/account/account_tree.js:145
+#: accounts/report/account_balance/account_balance.js:22
 msgid "Root Type"
 msgstr ""
 
@@ -60018,11 +61053,11 @@
 msgid "Root Type for {0} must be one of the Asset, Liability, Income, Expense and Equity"
 msgstr ""
 
-#: accounts/doctype/account/account.py:392
+#: accounts/doctype/account/account.py:411
 msgid "Root Type is mandatory"
 msgstr ""
 
-#: accounts/doctype/account/account.py:195
+#: accounts/doctype/account/account.py:214
 msgid "Root cannot be edited."
 msgstr ""
 
@@ -60038,7 +61073,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:66
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:90
-#: accounts/report/account_balance/account_balance.js:54
+#: accounts/report/account_balance/account_balance.js:56
 msgid "Round Off"
 msgstr ""
 
@@ -60299,12 +61334,12 @@
 msgid "Rounding Loss Allowance"
 msgstr ""
 
-#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:41
+#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:45
 #: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py:48
 msgid "Rounding Loss Allowance should be between 0 and 1"
 msgstr ""
 
-#: controllers/stock_controller.py:216 controllers/stock_controller.py:231
+#: controllers/stock_controller.py:398 controllers/stock_controller.py:413
 msgid "Rounding gain/loss Entry for Stock Transfer"
 msgstr ""
 
@@ -60345,11 +61380,11 @@
 msgid "Routing Name"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:428
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:482
 msgid "Row #"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:334
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:388
 msgid "Row # {0}:"
 msgstr ""
 
@@ -60366,12 +61401,12 @@
 msgstr ""
 
 #: accounts/doctype/pos_invoice/pos_invoice.py:439
-#: accounts/doctype/sales_invoice/sales_invoice.py:1715
+#: accounts/doctype/sales_invoice/sales_invoice.py:1684
 msgid "Row #{0} (Payment Table): Amount must be negative"
 msgstr ""
 
 #: accounts/doctype/pos_invoice/pos_invoice.py:437
-#: accounts/doctype/sales_invoice/sales_invoice.py:1710
+#: accounts/doctype/sales_invoice/sales_invoice.py:1679
 msgid "Row #{0} (Payment Table): Amount must be positive"
 msgstr ""
 
@@ -60388,7 +61423,7 @@
 msgstr ""
 
 #: controllers/subcontracting_controller.py:72
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:413
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:414
 msgid "Row #{0}: Accepted Warehouse and Rejected Warehouse cannot be same"
 msgstr ""
 
@@ -60396,11 +61431,11 @@
 msgid "Row #{0}: Accepted Warehouse and Supplier Warehouse cannot be same"
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:406
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:407
 msgid "Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1}"
 msgstr ""
 
-#: controllers/accounts_controller.py:887
+#: controllers/accounts_controller.py:939
 msgid "Row #{0}: Account {1} does not belong to company {2}"
 msgstr ""
 
@@ -60413,15 +61448,15 @@
 msgid "Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:309
+#: assets/doctype/asset_capitalization/asset_capitalization.py:315
 msgid "Row #{0}: Amount must be a positive number"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:375
+#: accounts/doctype/sales_invoice/sales_invoice.py:386
 msgid "Row #{0}: Asset {1} cannot be submitted, it is already {2}"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:351
+#: buying/doctype/purchase_order/purchase_order.py:352
 msgid "Row #{0}: BOM is not specified for subcontracting item {0}"
 msgstr ""
 
@@ -60429,27 +61464,27 @@
 msgid "Row #{0}: Batch No {1} is already selected."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:736
+#: accounts/doctype/payment_entry/payment_entry.py:745
 msgid "Row #{0}: Cannot allocate more than {1} against payment term {2}"
 msgstr ""
 
-#: controllers/accounts_controller.py:3064
+#: controllers/accounts_controller.py:3155
 msgid "Row #{0}: Cannot delete item {1} which has already been billed."
 msgstr ""
 
-#: controllers/accounts_controller.py:3038
+#: controllers/accounts_controller.py:3129
 msgid "Row #{0}: Cannot delete item {1} which has already been delivered"
 msgstr ""
 
-#: controllers/accounts_controller.py:3057
+#: controllers/accounts_controller.py:3148
 msgid "Row #{0}: Cannot delete item {1} which has already been received"
 msgstr ""
 
-#: controllers/accounts_controller.py:3044
+#: controllers/accounts_controller.py:3135
 msgid "Row #{0}: Cannot delete item {1} which has work order assigned to it."
 msgstr ""
 
-#: controllers/accounts_controller.py:3050
+#: controllers/accounts_controller.py:3141
 msgid "Row #{0}: Cannot delete item {1} which is assigned to customer's purchase order."
 msgstr ""
 
@@ -60457,11 +61492,11 @@
 msgid "Row #{0}: Cannot select Supplier Warehouse while suppling raw materials to subcontractor"
 msgstr ""
 
-#: controllers/accounts_controller.py:3309
+#: controllers/accounts_controller.py:3400
 msgid "Row #{0}: Cannot set Rate if amount is greater than billed amount for Item {1}."
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:864
+#: manufacturing/doctype/job_card/job_card.py:871
 msgid "Row #{0}: Cannot transfer more than Required Qty {1} for Item {2} against Job Card {3}"
 msgstr ""
 
@@ -60469,31 +61504,31 @@
 msgid "Row #{0}: Child Item should not be a Product Bundle. Please remove Item {1} and Save"
 msgstr ""
 
-#: accounts/doctype/bank_clearance/bank_clearance.py:97
+#: accounts/doctype/bank_clearance/bank_clearance.py:99
 msgid "Row #{0}: Clearance date {1} cannot be before Cheque Date {2}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:286
+#: assets/doctype/asset_capitalization/asset_capitalization.py:292
 msgid "Row #{0}: Consumed Asset {1} cannot be Draft"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:288
+#: assets/doctype/asset_capitalization/asset_capitalization.py:294
 msgid "Row #{0}: Consumed Asset {1} cannot be cancelled"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:273
+#: assets/doctype/asset_capitalization/asset_capitalization.py:279
 msgid "Row #{0}: Consumed Asset {1} cannot be the same as the Target Asset"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:282
+#: assets/doctype/asset_capitalization/asset_capitalization.py:288
 msgid "Row #{0}: Consumed Asset {1} cannot be {2}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:292
+#: assets/doctype/asset_capitalization/asset_capitalization.py:298
 msgid "Row #{0}: Consumed Asset {1} does not belong to company {2}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:385
+#: accounts/doctype/sales_invoice_item/sales_invoice_item.py:105
 msgid "Row #{0}: Cost Center {1} does not belong to company {2}"
 msgstr ""
 
@@ -60505,7 +61540,7 @@
 msgid "Row #{0}: Dates overlapping with other row"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:375
+#: buying/doctype/purchase_order/purchase_order.py:376
 msgid "Row #{0}: Default BOM not found for FG Item {1}"
 msgstr ""
 
@@ -60513,35 +61548,35 @@
 msgid "Row #{0}: Duplicate entry in References {1} {2}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:237
+#: selling/doctype/sales_order/sales_order.py:239
 msgid "Row #{0}: Expected Delivery Date cannot be before Purchase Order Date"
 msgstr ""
 
-#: controllers/stock_controller.py:336
+#: controllers/stock_controller.py:518
 msgid "Row #{0}: Expense Account not set for the Item {1}. {2}"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:378
+#: buying/doctype/purchase_order/purchase_order.py:379
 msgid "Row #{0}: Finished Good Item Qty can not be zero"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:362
+#: buying/doctype/purchase_order/purchase_order.py:363
 msgid "Row #{0}: Finished Good Item is not specified for service item {1}"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:369
+#: buying/doctype/purchase_order/purchase_order.py:370
 msgid "Row #{0}: Finished Good Item {1} must be a sub-contracted item"
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:394
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:395
 msgid "Row #{0}: Finished Good reference is mandatory for Scrap Item {1}."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:571
+#: accounts/doctype/journal_entry/journal_entry.py:594
 msgid "Row #{0}: For {1}, you can select reference document only if account gets credited"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:577
+#: accounts/doctype/journal_entry/journal_entry.py:604
 msgid "Row #{0}: For {1}, you can select reference document only if account gets debited"
 msgstr ""
 
@@ -60549,7 +61584,7 @@
 msgid "Row #{0}: From Date cannot be before To Date"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:489
+#: public/js/utils/barcode_scanner.js:394
 msgid "Row #{0}: Item added"
 msgstr ""
 
@@ -60557,23 +61592,23 @@
 msgid "Row #{0}: Item {1} does not exist"
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:949
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:951
 msgid "Row #{0}: Item {1} has been picked, please reserve stock from the Pick List."
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:491
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:545
 msgid "Row #{0}: Item {1} is not a Serialized/Batched Item. It cannot have a Serial No/Batch No against it."
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:303
+#: assets/doctype/asset_capitalization/asset_capitalization.py:309
 msgid "Row #{0}: Item {1} is not a service item"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:261
+#: assets/doctype/asset_capitalization/asset_capitalization.py:267
 msgid "Row #{0}: Item {1} is not a stock item"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:657
+#: accounts/doctype/payment_entry/payment_entry.py:666
 msgid "Row #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher"
 msgstr ""
 
@@ -60581,48 +61616,48 @@
 msgid "Row #{0}: Maximum Net Rate cannot be greater than Minimum Net Rate"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:535
+#: selling/doctype/sales_order/sales_order.py:541
 msgid "Row #{0}: Not allowed to change Supplier as Purchase Order already exists"
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1032
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1034
 msgid "Row #{0}: Only {1} available to reserve for the Item {2}"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:687
+#: stock/doctype/stock_entry/stock_entry.py:642
 msgid "Row #{0}: Operation {1} is not completed for {2} qty of finished goods in Work Order {3}. Please update operation status via Job Card {4}."
 msgstr ""
 
-#: accounts/doctype/bank_clearance/bank_clearance.py:93
+#: accounts/doctype/bank_clearance/bank_clearance.py:95
 msgid "Row #{0}: Payment document is required to complete the transaction"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:892
+#: manufacturing/doctype/production_plan/production_plan.py:901
 msgid "Row #{0}: Please select Item Code in Assembly Items"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:895
+#: manufacturing/doctype/production_plan/production_plan.py:904
 msgid "Row #{0}: Please select the BOM No in Assembly Items"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:889
-msgid "Row #{0}: Please select the FG Warehouse in Assembly Items"
+#: manufacturing/doctype/production_plan/production_plan.py:898
+msgid "Row #{0}: Please select the Sub Assembly Warehouse"
 msgstr ""
 
 #: stock/doctype/item/item.py:487
 msgid "Row #{0}: Please set reorder quantity"
 msgstr ""
 
-#: controllers/accounts_controller.py:367
+#: controllers/accounts_controller.py:411
 msgid "Row #{0}: Please update deferred revenue/expense account in item row or default account in company master"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:487
+#: public/js/utils/barcode_scanner.js:392
 msgid "Row #{0}: Qty increased by {1}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:264
-#: assets/doctype/asset_capitalization/asset_capitalization.py:306
+#: assets/doctype/asset_capitalization/asset_capitalization.py:270
+#: assets/doctype/asset_capitalization/asset_capitalization.py:312
 msgid "Row #{0}: Qty must be a positive number"
 msgstr ""
 
@@ -60630,12 +61665,12 @@
 msgid "Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}."
 msgstr ""
 
-#: controllers/accounts_controller.py:1018
-#: controllers/accounts_controller.py:3166
+#: controllers/accounts_controller.py:1082
+#: controllers/accounts_controller.py:3257
 msgid "Row #{0}: Quantity for Item {1} cannot be zero."
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1017
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1019
 msgid "Row #{0}: Quantity to reserve for the Item {1} should be greater than 0."
 msgstr ""
 
@@ -60647,11 +61682,11 @@
 msgid "Row #{0}: Received Qty must be equal to Accepted + Rejected Qty for Item {1}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1016
+#: accounts/doctype/payment_entry/payment_entry.js:1234
 msgid "Row #{0}: Reference Document Type must be one of Purchase Order, Purchase Invoice or Journal Entry"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1008
+#: accounts/doctype/payment_entry/payment_entry.js:1220
 msgid "Row #{0}: Reference Document Type must be one of Sales Order, Sales Invoice, Journal Entry or Dunning"
 msgstr ""
 
@@ -60659,7 +61694,7 @@
 msgid "Row #{0}: Rejected Qty can not be entered in Purchase Return"
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:387
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:388
 msgid "Row #{0}: Rejected Qty cannot be set for Scrap Item {1}."
 msgstr ""
 
@@ -60667,15 +61702,15 @@
 msgid "Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1}"
 msgstr ""
 
-#: controllers/buying_controller.py:849
+#: controllers/buying_controller.py:875
 msgid "Row #{0}: Reqd by Date cannot be before Transaction Date"
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:382
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:383
 msgid "Row #{0}: Scrap Item Qty cannot be zero"
 msgstr ""
 
-#: controllers/selling_controller.py:212
+#: controllers/selling_controller.py:213
 msgid ""
 "Row #{0}: Selling rate for item {1} is lower than its {2}.\n"
 "\t\t\t\t\tSelling {3} should be atleast {4}.<br><br>Alternatively,\n"
@@ -60683,7 +61718,7 @@
 "\t\t\t\t\tthis validation."
 msgstr ""
 
-#: controllers/stock_controller.py:97
+#: controllers/stock_controller.py:129
 msgid "Row #{0}: Serial No {1} does not belong to Batch {2}"
 msgstr ""
 
@@ -60695,27 +61730,35 @@
 msgid "Row #{0}: Serial No {1} is already selected."
 msgstr ""
 
-#: controllers/accounts_controller.py:395
+#: controllers/accounts_controller.py:439
 msgid "Row #{0}: Service End Date cannot be before Invoice Posting Date"
 msgstr ""
 
-#: controllers/accounts_controller.py:391
+#: controllers/accounts_controller.py:435
 msgid "Row #{0}: Service Start Date cannot be greater than Service End Date"
 msgstr ""
 
-#: controllers/accounts_controller.py:387
+#: controllers/accounts_controller.py:431
 msgid "Row #{0}: Service Start and End Date is required for deferred accounting"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:391
+#: selling/doctype/sales_order/sales_order.py:394
 msgid "Row #{0}: Set Supplier for item {1}"
 msgstr ""
 
+#: manufacturing/doctype/workstation/workstation.py:80
+msgid "Row #{0}: Start Time and End Time are required"
+msgstr ""
+
+#: manufacturing/doctype/workstation/workstation.py:83
+msgid "Row #{0}: Start Time must be before End Time"
+msgstr ""
+
 #: stock/doctype/quality_inspection/quality_inspection.py:120
 msgid "Row #{0}: Status is mandatory"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:381
+#: accounts/doctype/journal_entry/journal_entry.py:397
 msgid "Row #{0}: Status must be {1} for Invoice Discounting {2}"
 msgstr ""
 
@@ -60723,19 +61766,19 @@
 msgid "Row #{0}: Stock cannot be reserved for Item {1} against a disabled Batch {2}."
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:962
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:964
 msgid "Row #{0}: Stock cannot be reserved for a non-stock Item {1}"
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:975
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:977
 msgid "Row #{0}: Stock cannot be reserved in group warehouse {1}."
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:989
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:991
 msgid "Row #{0}: Stock is already reserved for the Item {1}."
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:605
+#: stock/doctype/delivery_note/delivery_note.py:666
 msgid "Row #{0}: Stock is reserved for item {1} in warehouse {2}."
 msgstr ""
 
@@ -60743,19 +61786,19 @@
 msgid "Row #{0}: Stock not available to reserve for Item {1} against Batch {2} in Warehouse {3}."
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1003
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1005
 msgid "Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}."
 msgstr ""
 
-#: controllers/stock_controller.py:110
+#: controllers/stock_controller.py:142
 msgid "Row #{0}: The batch {1} has already expired."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1687
-msgid "Row #{0}: The following Serial Nos are not present in Delivery Note {1}:"
+#: accounts/doctype/sales_invoice_item/sales_invoice_item.py:150
+msgid "Row #{0}: The following serial numbers are not present in Delivery Note {1}:"
 msgstr ""
 
-#: manufacturing/doctype/workstation/workstation.py:116
+#: manufacturing/doctype/workstation/workstation.py:137
 msgid "Row #{0}: Timings conflicts with row {1}"
 msgstr ""
 
@@ -60763,15 +61806,11 @@
 msgid "Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1402
+#: accounts/doctype/sales_invoice/sales_invoice.py:1413
 msgid "Row #{0}: You must select an Asset for Item {1}."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1696
-msgid "Row #{0}: {1} Serial numbers required for Item {2}. You have provided {3}."
-msgstr ""
-
-#: controllers/buying_controller.py:483 public/js/controllers/buying.js:208
+#: controllers/buying_controller.py:483 public/js/controllers/buying.js:203
 msgid "Row #{0}: {1} can not be negative for item {2}"
 msgstr ""
 
@@ -60787,6 +61826,10 @@
 msgid "Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account."
 msgstr ""
 
+#: accounts/doctype/sales_invoice_item/sales_invoice_item.py:161
+msgid "Row #{0}: {1} serial numbers are required for Item {2}. You have provided {3} serial numbers."
+msgstr ""
+
 #: buying/utils.py:106
 msgid "Row #{1}: Warehouse is mandatory for stock Item {0}"
 msgstr ""
@@ -60795,11 +61838,11 @@
 msgid "Row #{}: Currency of {} - {} doesn't matches company currency."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:275
+#: assets/doctype/asset/asset.py:277
 msgid "Row #{}: Depreciation Posting Date should not be equal to Available for Use Date."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:308
+#: assets/doctype/asset/asset.py:310
 msgid "Row #{}: Finance Book should not be empty since you're using multiple."
 msgstr ""
 
@@ -60827,7 +61870,7 @@
 msgid "Row #{}: Please assign task to a member."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:300
+#: assets/doctype/asset/asset.py:302
 msgid "Row #{}: Please use a different Finance Book."
 msgstr ""
 
@@ -60843,7 +61886,7 @@
 msgid "Row #{}: You cannot add positive quantities in a return invoice. Please remove item {} to complete the return."
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:83
+#: stock/doctype/pick_list/pick_list.py:87
 msgid "Row #{}: item {} has been picked already."
 msgstr ""
 
@@ -60855,39 +61898,47 @@
 msgid "Row #{}: {} {} does not exist."
 msgstr ""
 
-#: stock/doctype/item/item.py:1364
+#: stock/doctype/item/item.py:1365
 msgid "Row #{}: {} {} doesn't belong to Company {}. Please select valid {}."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:433
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:437
 msgid "Row No {0}: Warehouse is required. Please set a Default Warehouse for Item {1} and Company {2}"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:599
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:491
+msgid "Row Number"
+msgstr ""
+
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:376
+msgid "Row {0}"
+msgstr ""
+
+#: manufacturing/doctype/job_card/job_card.py:606
 msgid "Row {0} : Operation is required against the raw material item {1}"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:113
+#: stock/doctype/pick_list/pick_list.py:117
 msgid "Row {0} picked quantity is less than the required quantity, additional {1} {2} required."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1135
+#: stock/doctype/stock_entry/stock_entry.py:1144
 msgid "Row {0}# Item {1} cannot be transferred more than {2} against {3} {4}"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1159
+#: stock/doctype/stock_entry/stock_entry.py:1168
 msgid "Row {0}# Item {1} not found in 'Raw Materials Supplied' table in {2} {3}"
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:190
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:191
 msgid "Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:509
+#: accounts/doctype/journal_entry/journal_entry.py:525
 msgid "Row {0}: Account {1} and Party Type {2} have different account types"
 msgstr ""
 
-#: controllers/accounts_controller.py:2536
+#: controllers/accounts_controller.py:2621
 msgid "Row {0}: Account {1} is a Group Account"
 msgstr ""
 
@@ -60895,43 +61946,47 @@
 msgid "Row {0}: Activity Type is mandatory."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:561
+#: accounts/doctype/journal_entry/journal_entry.py:577
 msgid "Row {0}: Advance against Customer must be credit"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:563
+#: accounts/doctype/journal_entry/journal_entry.py:579
 msgid "Row {0}: Advance against Supplier must be debit"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:671
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:681
 msgid "Row {0}: Allocated amount {1} must be less than or equal to invoice outstanding amount {2}"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:663
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:673
 msgid "Row {0}: Allocated amount {1} must be less than or equal to remaining payment amount {2}"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.py:763
+#: stock/doctype/stock_entry/stock_entry.py:884
+msgid "Row {0}: As {1} is enabled, raw materials cannot be added to {2} entry. Use {3} entry to consume raw materials."
+msgstr ""
+
+#: stock/doctype/material_request/material_request.py:775
 msgid "Row {0}: Bill of Materials not found for the Item {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:796
+#: accounts/doctype/journal_entry/journal_entry.py:823
 msgid "Row {0}: Both Debit and Credit values cannot be zero"
 msgstr ""
 
-#: controllers/buying_controller.py:438 controllers/selling_controller.py:204
+#: controllers/buying_controller.py:438 controllers/selling_controller.py:205
 msgid "Row {0}: Conversion Factor is mandatory"
 msgstr ""
 
-#: controllers/accounts_controller.py:2549
+#: controllers/accounts_controller.py:2634
 msgid "Row {0}: Cost Center {1} does not belong to Company {2}"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:116
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:137
 msgid "Row {0}: Cost center is required for an item {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:647
+#: accounts/doctype/journal_entry/journal_entry.py:674
 msgid "Row {0}: Credit entry can not be linked with a {1}"
 msgstr ""
 
@@ -60939,19 +61994,19 @@
 msgid "Row {0}: Currency of the BOM #{1} should be equal to the selected currency {2}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:642
+#: accounts/doctype/journal_entry/journal_entry.py:669
 msgid "Row {0}: Debit entry can not be linked with a {1}"
 msgstr ""
 
-#: controllers/selling_controller.py:679
+#: controllers/selling_controller.py:703
 msgid "Row {0}: Delivery Warehouse ({1}) and Customer Warehouse ({2}) can not be same"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:417
+#: assets/doctype/asset/asset.py:419
 msgid "Row {0}: Depreciation Start Date is required"
 msgstr ""
 
-#: controllers/accounts_controller.py:2209
+#: controllers/accounts_controller.py:2301
 msgid "Row {0}: Due Date in the Payment Terms table cannot be before Posting Date"
 msgstr ""
 
@@ -60959,28 +62014,28 @@
 msgid "Row {0}: Either Delivery Note Item or Packed Item reference is mandatory."
 msgstr ""
 
-#: controllers/buying_controller.py:742
+#: controllers/buying_controller.py:767
 msgid "Row {0}: Enter location for the asset item {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:886
-#: controllers/taxes_and_totals.py:1115
+#: accounts/doctype/journal_entry/journal_entry.py:913
+#: controllers/taxes_and_totals.py:1116
 msgid "Row {0}: Exchange Rate is mandatory"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:408
+#: assets/doctype/asset/asset.py:410
 msgid "Row {0}: Expected Value After Useful Life must be less than Gross Purchase Amount"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:519
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:523
 msgid "Row {0}: Expense Head changed to {1} as no Purchase Receipt is created against Item {2}."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:482
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:486
 msgid "Row {0}: Expense Head changed to {1} because account {2} is not linked to warehouse {3} or it is not the default inventory account"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:505
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:509
 msgid "Row {0}: Expense Head changed to {1} because expense is booked against this account in Purchase Receipt {2}"
 msgstr ""
 
@@ -60997,7 +62052,7 @@
 msgid "Row {0}: From Time and To Time of {1} is overlapping with {2}"
 msgstr ""
 
-#: controllers/stock_controller.py:730
+#: controllers/stock_controller.py:913
 msgid "Row {0}: From Warehouse is mandatory for internal transfers"
 msgstr ""
 
@@ -61009,15 +62064,15 @@
 msgid "Row {0}: Hours value must be greater than zero."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:665
+#: accounts/doctype/journal_entry/journal_entry.py:692
 msgid "Row {0}: Invalid reference {1}"
 msgstr ""
 
-#: controllers/taxes_and_totals.py:128
+#: controllers/taxes_and_totals.py:129
 msgid "Row {0}: Item Tax template updated as per validity and rate applied"
 msgstr ""
 
-#: controllers/buying_controller.py:400 controllers/selling_controller.py:479
+#: controllers/buying_controller.py:400 controllers/selling_controller.py:484
 msgid "Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer"
 msgstr ""
 
@@ -61029,7 +62084,7 @@
 msgid "Row {0}: Item {1} must be a subcontracted item."
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:661
+#: stock/doctype/delivery_note/delivery_note.py:722
 msgid "Row {0}: Packed Qty must be equal to {1} Qty."
 msgstr ""
 
@@ -61037,11 +62092,11 @@
 msgid "Row {0}: Packing Slip is already created for Item {1}."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:687
+#: accounts/doctype/journal_entry/journal_entry.py:714
 msgid "Row {0}: Party / Account does not match with {1} / {2} in {3} {4}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:500
+#: accounts/doctype/journal_entry/journal_entry.py:516
 msgid "Row {0}: Party Type and Party is required for Receivable / Payable account {1}"
 msgstr ""
 
@@ -61049,11 +62104,11 @@
 msgid "Row {0}: Payment Term is mandatory"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:554
+#: accounts/doctype/journal_entry/journal_entry.py:570
 msgid "Row {0}: Payment against Sales/Purchase Order should always be marked as advance"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:547
+#: accounts/doctype/journal_entry/journal_entry.py:563
 msgid "Row {0}: Please check 'Is Advance' against Account {1} if this is an advance entry."
 msgstr ""
 
@@ -61089,7 +62144,7 @@
 msgid "Row {0}: Project must be same as the one set in the Timesheet: {1}."
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:93
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:114
 msgid "Row {0}: Purchase Invoice {1} has no stock impact."
 msgstr ""
 
@@ -61097,7 +62152,7 @@
 msgid "Row {0}: Qty cannot be greater than {1} for the Item {2}."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:407
+#: stock/doctype/stock_entry/stock_entry.py:362
 msgid "Row {0}: Qty in Stock UOM can not be zero."
 msgstr ""
 
@@ -61105,7 +62160,7 @@
 msgid "Row {0}: Qty must be greater than 0."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:762
+#: stock/doctype/stock_entry/stock_entry.py:717
 msgid "Row {0}: Quantity not available for {4} in warehouse {1} at posting time of the entry ({2} {3})"
 msgstr ""
 
@@ -61113,15 +62168,15 @@
 msgid "Row {0}: Shift cannot be changed since the depreciation has already been processed"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1170
+#: stock/doctype/stock_entry/stock_entry.py:1179
 msgid "Row {0}: Subcontracted Item is mandatory for the raw material {1}"
 msgstr ""
 
-#: controllers/stock_controller.py:721
+#: controllers/stock_controller.py:904
 msgid "Row {0}: Target Warehouse is mandatory for internal transfers"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:450
+#: stock/doctype/stock_entry/stock_entry.py:405
 msgid "Row {0}: The item {1}, quantity must be positive number"
 msgstr ""
 
@@ -61129,15 +62184,15 @@
 msgid "Row {0}: To set {1} periodicity, difference between from and to date must be greater than or equal to {2}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:441
+#: assets/doctype/asset/asset.py:443
 msgid "Row {0}: Total Number of Depreciations cannot be less than or equal to Number of Depreciations Booked"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:401
+#: stock/doctype/stock_entry/stock_entry.py:356
 msgid "Row {0}: UOM Conversion Factor is mandatory"
 msgstr ""
 
-#: controllers/accounts_controller.py:786
+#: controllers/accounts_controller.py:838
 msgid "Row {0}: user has not applied the rule {1} on the item {2}"
 msgstr ""
 
@@ -61149,15 +62204,19 @@
 msgid "Row {0}: {1} must be greater than 0"
 msgstr ""
 
-#: controllers/accounts_controller.py:511
+#: controllers/accounts_controller.py:555
 msgid "Row {0}: {1} {2} cannot be same as {3} (Party Account) {4}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:701
+#: accounts/doctype/journal_entry/journal_entry.py:728
 msgid "Row {0}: {1} {2} does not match with {3}"
 msgstr ""
 
-#: controllers/accounts_controller.py:2528
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:87
+msgid "Row {0}: {2} Item {1} does not exist in {2} {3}"
+msgstr ""
+
+#: controllers/accounts_controller.py:2613
 msgid "Row {0}: {3} Account {1} does not belong to Company {2}"
 msgstr ""
 
@@ -61165,7 +62224,7 @@
 msgid "Row {1}: Quantity ({0}) cannot be a fraction. To allow this, disable '{2}' in UOM {3}."
 msgstr ""
 
-#: controllers/buying_controller.py:726
+#: controllers/buying_controller.py:751
 msgid "Row {}: Asset Naming Series is mandatory for the auto creation for item {}"
 msgstr ""
 
@@ -61177,11 +62236,11 @@
 msgid "Row({0}): {1} is already discounted in {2}"
 msgstr ""
 
-#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:193
+#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:200
 msgid "Rows Added in {0}"
 msgstr ""
 
-#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:194
+#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:201
 msgid "Rows Removed in {0}"
 msgstr ""
 
@@ -61192,15 +62251,15 @@
 msgid "Rows with Same Account heads will be merged on Ledger"
 msgstr ""
 
-#: controllers/accounts_controller.py:2218
+#: controllers/accounts_controller.py:2310
 msgid "Rows with duplicate due dates in other rows were found: {0}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:61
+#: accounts/doctype/journal_entry/journal_entry.js:115
 msgid "Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually."
 msgstr ""
 
-#: controllers/accounts_controller.py:211
+#: controllers/accounts_controller.py:221
 msgid "Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry."
 msgstr ""
 
@@ -61228,6 +62287,12 @@
 msgid "Rule Description"
 msgstr ""
 
+#. Description of the 'Job Capacity' (Int) field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Run parallel job cards in a workstation"
+msgstr ""
+
 #. Option for the 'Status' (Select) field in DocType 'Process Payment
 #. Reconciliation'
 #: accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.json
@@ -61242,6 +62307,13 @@
 msgid "Running"
 msgstr ""
 
+#. Option for the 'Status' (Select) field in DocType 'Transaction Deletion
+#. Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Running"
+msgstr ""
+
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:28
 msgid "S.O. No."
 msgstr ""
@@ -61306,7 +62378,7 @@
 msgid "SLA Paused On"
 msgstr ""
 
-#: public/js/utils.js:1015
+#: public/js/utils.js:1098
 msgid "SLA is on hold since {0}"
 msgstr ""
 
@@ -61345,6 +62417,10 @@
 msgid "SO Qty"
 msgstr ""
 
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:107
+msgid "SO Total Qty"
+msgstr ""
+
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:16
 msgid "STATEMENTS OF ACCOUNTS"
 msgstr ""
@@ -61439,7 +62515,7 @@
 #: accounts/doctype/tax_category/tax_category_dashboard.py:9
 #: projects/doctype/project/project_dashboard.py:15
 #: regional/report/vat_audit_report/vat_audit_report.py:184
-#: setup/doctype/company/company.py:329 setup/doctype/company/company.py:492
+#: setup/doctype/company/company.py:328 setup/doctype/company/company.py:491
 #: setup/doctype/company/company_dashboard.py:9
 #: setup/doctype/sales_person/sales_person_dashboard.py:12
 #: setup/setup_wizard/operations/install_fixtures.py:250
@@ -61477,7 +62553,7 @@
 msgid "Sales"
 msgstr ""
 
-#: setup/doctype/company/company.py:492
+#: setup/doctype/company/company.py:491
 msgid "Sales Account"
 msgstr ""
 
@@ -61511,7 +62587,7 @@
 #. Label of a Link in the CRM Workspace
 #. Label of a Link in the Selling Workspace
 #: crm/workspace/crm/crm.json selling/page/sales_funnel/sales_funnel.js:7
-#: selling/page/sales_funnel/sales_funnel.js:41
+#: selling/page/sales_funnel/sales_funnel.js:46
 #: selling/workspace/selling/selling.json
 msgid "Sales Funnel"
 msgstr ""
@@ -61522,11 +62598,11 @@
 #: accounts/report/gross_profit/gross_profit.js:30
 #: accounts/report/gross_profit/gross_profit.py:199
 #: accounts/report/gross_profit/gross_profit.py:206
-#: selling/doctype/quotation/quotation_list.js:20
-#: selling/doctype/sales_order/sales_order.js:565
-#: selling/doctype/sales_order/sales_order_list.js:53
-#: stock/doctype/delivery_note/delivery_note.js:222
-#: stock/doctype/delivery_note/delivery_note_list.js:61
+#: selling/doctype/quotation/quotation_list.js:19
+#: selling/doctype/sales_order/sales_order.js:633
+#: selling/doctype/sales_order/sales_order_list.js:66
+#: stock/doctype/delivery_note/delivery_note.js:266
+#: stock/doctype/delivery_note/delivery_note_list.js:70
 msgid "Sales Invoice"
 msgstr ""
 
@@ -61676,11 +62752,11 @@
 msgid "Sales Invoice Trends"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:679
+#: stock/doctype/delivery_note/delivery_note.py:740
 msgid "Sales Invoice {0} has already been submitted"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:472
+#: selling/doctype/sales_order/sales_order.py:475
 msgid "Sales Invoice {0} must be deleted before cancelling this Sales Order"
 msgstr ""
 
@@ -61714,6 +62790,7 @@
 #: setup/doctype/sales_person/sales_person.json
 #: setup/doctype/territory/territory.json stock/doctype/bin/bin.json
 #: stock/doctype/packing_slip/packing_slip.json
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.json
 msgid "Sales Manager"
 msgstr ""
 
@@ -61743,36 +62820,36 @@
 msgid "Sales Monthly History"
 msgstr ""
 
-#: selling/page/sales_funnel/sales_funnel.js:129
+#: selling/page/sales_funnel/sales_funnel.js:144
 msgid "Sales Opportunities by Source"
 msgstr ""
 
 #. Name of a DocType
 #. Title of an Onboarding Step
-#: accounts/doctype/sales_invoice/sales_invoice.js:236
+#: accounts/doctype/sales_invoice/sales_invoice.js:263
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:279
 #: accounts/report/sales_register/sales_register.py:236
-#: controllers/selling_controller.py:421
-#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:64
-#: maintenance/doctype/maintenance_visit/maintenance_visit.js:113
-#: manufacturing/doctype/blanket_order/blanket_order.js:23
+#: controllers/selling_controller.py:422
+#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:65
+#: maintenance/doctype/maintenance_visit/maintenance_visit.js:122
+#: manufacturing/doctype/blanket_order/blanket_order.js:24
 #: manufacturing/doctype/work_order/work_order_calendar.js:32
 #: manufacturing/report/production_plan_summary/production_plan_summary.py:127
 #: manufacturing/report/work_order_summary/work_order_summary.py:217
-#: selling/doctype/quotation/quotation.js:117
+#: selling/doctype/quotation/quotation.js:125
 #: selling/doctype/quotation/quotation_dashboard.py:11
-#: selling/doctype/quotation/quotation_list.js:16
+#: selling/doctype/quotation/quotation_list.js:15
 #: selling/doctype/sales_order/sales_order.json
 #: selling/onboarding_step/sales_order/sales_order.json
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:59
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:13
-#: selling/report/sales_order_analysis/sales_order_analysis.js:34
+#: selling/report/sales_order_analysis/sales_order_analysis.js:33
 #: selling/report/sales_order_analysis/sales_order_analysis.py:222
-#: stock/doctype/delivery_note/delivery_note.js:134
-#: stock/doctype/material_request/material_request.js:161
-#: stock/report/delayed_item_report/delayed_item_report.js:31
+#: stock/doctype/delivery_note/delivery_note.js:146
+#: stock/doctype/material_request/material_request.js:190
+#: stock/report/delayed_item_report/delayed_item_report.js:30
 #: stock/report/delayed_item_report/delayed_item_report.py:155
-#: stock/report/delayed_order_report/delayed_order_report.js:31
+#: stock/report/delayed_order_report/delayed_order_report.js:30
 #: stock/report/delayed_order_report/delayed_order_report.py:74
 msgid "Sales Order"
 msgstr ""
@@ -61923,8 +63000,8 @@
 msgstr ""
 
 #. Name of a DocType
-#: selling/doctype/sales_order/sales_order.js:260
-#: selling/doctype/sales_order/sales_order.js:704
+#: selling/doctype/sales_order/sales_order.js:286
+#: selling/doctype/sales_order/sales_order.js:809
 #: selling/doctype/sales_order_item/sales_order_item.json
 msgid "Sales Order Item"
 msgstr ""
@@ -62013,11 +63090,11 @@
 msgid "Sales Order required for Item {0}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:258
+#: selling/doctype/sales_order/sales_order.py:261
 msgid "Sales Order {0} already exists against Customer's Purchase Order {1}. To allow multiple Sales Orders, Enable {2} in {3}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1142
+#: accounts/doctype/sales_invoice/sales_invoice.py:1149
 msgid "Sales Order {0} is not submitted"
 msgstr ""
 
@@ -62025,12 +63102,12 @@
 msgid "Sales Order {0} is not valid"
 msgstr ""
 
-#: controllers/selling_controller.py:402
+#: controllers/selling_controller.py:403
 #: manufacturing/doctype/work_order/work_order.py:223
 msgid "Sales Order {0} is {1}"
 msgstr ""
 
-#: manufacturing/report/work_order_summary/work_order_summary.js:43
+#: manufacturing/report/work_order_summary/work_order_summary.js:42
 msgid "Sales Orders"
 msgstr ""
 
@@ -62058,14 +63135,14 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/report/accounts_receivable/accounts_receivable.js:133
-#: accounts/report/accounts_receivable/accounts_receivable.py:1106
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:117
+#: accounts/report/accounts_receivable/accounts_receivable.js:136
+#: accounts/report/accounts_receivable/accounts_receivable.py:1114
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:120
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:197
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:74
-#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:10
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:73
+#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:8
 #: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.py:48
-#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:9
+#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:8
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:71
 #: setup/doctype/sales_partner/sales_partner.json
 msgid "Sales Partner"
@@ -62208,17 +63285,18 @@
 
 #. Name of a DocType
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:155
-#: accounts/report/accounts_receivable/accounts_receivable.js:139
-#: accounts/report/accounts_receivable/accounts_receivable.py:1103
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:123
+#: accounts/report/accounts_receivable/accounts_receivable.html:137
+#: accounts/report/accounts_receivable/accounts_receivable.js:142
+#: accounts/report/accounts_receivable/accounts_receivable.py:1111
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:126
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:194
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:80
-#: accounts/report/gross_profit/gross_profit.js:49
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:79
+#: accounts/report/gross_profit/gross_profit.js:50
 #: accounts/report/gross_profit/gross_profit.py:307
-#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:10
+#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:8
 #: selling/report/sales_person_commission_summary/sales_person_commission_summary.py:69
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js:8
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:115
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:116
 #: setup/doctype/sales_person/sales_person.json
 msgid "Sales Person"
 msgstr ""
@@ -62294,7 +63372,7 @@
 msgstr ""
 
 #. Label of a Card Break in the CRM Workspace
-#: crm/workspace/crm/crm.json selling/page/sales_funnel/sales_funnel.js:42
+#: crm/workspace/crm/crm.json selling/page/sales_funnel/sales_funnel.js:47
 msgid "Sales Pipeline"
 msgstr ""
 
@@ -62305,7 +63383,7 @@
 msgid "Sales Pipeline Analytics"
 msgstr ""
 
-#: selling/page/sales_funnel/sales_funnel.js:131
+#: selling/page/sales_funnel/sales_funnel.js:146
 msgid "Sales Pipeline by Stage"
 msgstr ""
 
@@ -62321,14 +63399,14 @@
 msgstr ""
 
 #: accounts/report/gross_profit/gross_profit.py:777
-#: stock/doctype/delivery_note/delivery_note.js:175
+#: stock/doctype/delivery_note/delivery_note.js:200
 msgid "Sales Return"
 msgstr ""
 
 #. Name of a DocType
 #: crm/doctype/sales_stage/sales_stage.json
 #: crm/report/lost_opportunity/lost_opportunity.py:51
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.py:59
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.py:61
 msgid "Sales Stage"
 msgstr ""
 
@@ -62348,7 +63426,7 @@
 msgid "Sales Summary"
 msgstr ""
 
-#: setup/doctype/company/company.js:98
+#: setup/doctype/company/company.js:106
 msgid "Sales Tax Template"
 msgstr ""
 
@@ -62535,6 +63613,7 @@
 #: stock/doctype/delivery_note/delivery_note.json stock/doctype/item/item.json
 #: stock/doctype/packing_slip/packing_slip.json
 #: stock/doctype/price_list/price_list.json
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.json
 #: stock/doctype/stock_settings/stock_settings.json
 #: stock/doctype/warehouse/warehouse.json
 #: stock/doctype/warehouse_type/warehouse_type.json
@@ -62594,7 +63673,7 @@
 msgid "Same Item"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:350
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:404
 msgid "Same item and warehouse combination already entered."
 msgstr ""
 
@@ -62625,7 +63704,7 @@
 msgstr ""
 
 #: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:93
-#: public/js/controllers/transaction.js:2131
+#: public/js/controllers/transaction.js:2174
 msgid "Sample Size"
 msgstr ""
 
@@ -62635,11 +63714,11 @@
 msgid "Sample Size"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2824
+#: stock/doctype/stock_entry/stock_entry.py:2860
 msgid "Sample quantity {0} cannot be more than received quantity {1}"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting_list.js:9
+#: accounts/doctype/invoice_discounting/invoice_discounting_list.js:7
 msgid "Sanctioned"
 msgstr ""
 
@@ -62708,16 +63787,16 @@
 msgid "Saturday"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:139
-#: accounts/doctype/journal_entry/journal_entry.js:550
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:118
+#: accounts/doctype/journal_entry/journal_entry.js:619
 #: accounts/doctype/ledger_merge/ledger_merge.js:75
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:252
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:288
-#: public/js/call_popup/call_popup.js:157
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:289
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:325
+#: public/js/call_popup/call_popup.js:169
 msgid "Save"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:176
+#: selling/page/point_of_sale/pos_controller.js:198
 msgid "Save as Draft"
 msgstr ""
 
@@ -62730,7 +63809,7 @@
 msgid "Savings"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:206
+#: public/js/utils/barcode_scanner.js:215
 msgid "Scan Barcode"
 msgstr ""
 
@@ -62806,7 +63885,7 @@
 msgid "Scan Barcode"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:151
+#: public/js/utils/serial_no_batch_selector.js:154
 msgid "Scan Batch No"
 msgstr ""
 
@@ -62822,11 +63901,11 @@
 msgid "Scan Mode"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:136
+#: public/js/utils/serial_no_batch_selector.js:139
 msgid "Scan Serial No"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:172
+#: public/js/utils/barcode_scanner.js:179
 msgid "Scan barcode for item {0}"
 msgstr ""
 
@@ -62840,7 +63919,7 @@
 msgid "Scanned Cheque"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:238
+#: public/js/utils/barcode_scanner.js:247
 msgid "Scanned Quantity"
 msgstr ""
 
@@ -62850,7 +63929,7 @@
 msgid "Schedule"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:240
+#: assets/doctype/asset/asset.js:275
 msgid "Schedule Date"
 msgstr ""
 
@@ -62885,7 +63964,7 @@
 msgid "Scheduled"
 msgstr ""
 
-#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:111
+#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:118
 msgid "Scheduled Date"
 msgstr ""
 
@@ -62913,7 +63992,7 @@
 msgid "Scheduled Time Logs"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.py:84
+#: accounts/doctype/bank_statement_import/bank_statement_import.py:85
 #: accounts/doctype/ledger_merge/ledger_merge.py:39
 #: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py:232
 #: accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py:549
@@ -62932,7 +64011,7 @@
 msgid "Scheduler is inactive. Cannot enqueue job."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.py:84
+#: accounts/doctype/bank_statement_import/bank_statement_import.py:85
 #: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py:232
 msgid "Scheduler is inactive. Cannot import data."
 msgstr ""
@@ -63015,7 +64094,7 @@
 msgid "Scrap & Process Loss"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:87
+#: assets/doctype/asset/asset.js:92
 msgid "Scrap Asset"
 msgstr ""
 
@@ -63069,7 +64148,7 @@
 msgid "Scrap Warehouse"
 msgstr ""
 
-#: assets/doctype/asset/asset_list.js:17
+#: assets/doctype/asset/asset_list.js:13
 msgid "Scrapped"
 msgstr ""
 
@@ -63079,7 +64158,7 @@
 msgid "Scrapped"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_selector.js:150
+#: selling/page/point_of_sale/pos_item_selector.js:147
 #: selling/page/point_of_sale/pos_past_order_list.js:51
 #: templates/pages/help.html:14
 msgid "Search"
@@ -63102,7 +64181,7 @@
 msgid "Search Term Param Name"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_cart.js:312
+#: selling/page/point_of_sale/pos_item_cart.js:310
 msgid "Search by customer name, phone, email."
 msgstr ""
 
@@ -63110,7 +64189,7 @@
 msgid "Search by invoice id or customer name"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_selector.js:152
+#: selling/page/point_of_sale/pos_item_selector.js:149
 msgid "Search by item code, serial number or barcode"
 msgstr ""
 
@@ -63132,7 +64211,7 @@
 msgid "Secondary Role"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:174
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:172
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:117
 msgid "Section Code"
 msgstr ""
@@ -63155,8 +64234,13 @@
 msgid "See all open tickets"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:180
-#: selling/doctype/sales_order/sales_order.js:888
+#: stock/report/stock_ledger/stock_ledger.js:104
+msgid "Segregate Serial / Batch Bundle"
+msgstr ""
+
+#: buying/doctype/purchase_order/purchase_order.js:186
+#: selling/doctype/sales_order/sales_order.js:1043
+#: selling/doctype/sales_order/sales_order_list.js:85
 msgid "Select"
 msgstr ""
 
@@ -63164,33 +64248,33 @@
 msgid "Select Accounting Dimension."
 msgstr ""
 
-#: public/js/utils.js:440
+#: public/js/utils.js:487
 msgid "Select Alternate Item"
 msgstr ""
 
-#: selling/doctype/quotation/quotation.js:312
+#: selling/doctype/quotation/quotation.js:324
 msgid "Select Alternative Items for Sales Order"
 msgstr ""
 
-#: stock/doctype/item/item.js:518
+#: stock/doctype/item/item.js:585
 msgid "Select Attribute Values"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:689
+#: selling/doctype/sales_order/sales_order.js:792
 msgid "Select BOM"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:678
+#: selling/doctype/sales_order/sales_order.js:779
 msgid "Select BOM and Qty for Production"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:803
+#: selling/doctype/sales_order/sales_order.js:921
 msgid "Select BOM, Qty and For Warehouse"
 msgstr ""
 
-#: public/js/utils/sales_common.js:325
-#: selling/page/point_of_sale/pos_item_details.js:203
-#: stock/doctype/pick_list/pick_list.js:318
+#: public/js/utils/sales_common.js:361
+#: selling/page/point_of_sale/pos_item_details.js:212
+#: stock/doctype/pick_list/pick_list.js:352
 msgid "Select Batch No"
 msgstr ""
 
@@ -63206,15 +64290,15 @@
 msgid "Select Billing Address"
 msgstr ""
 
-#: public/js/stock_analytics.js:42
+#: public/js/stock_analytics.js:61
 msgid "Select Brand..."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:67
+#: accounts/doctype/journal_entry/journal_entry.js:123
 msgid "Select Company"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:173
+#: manufacturing/doctype/job_card/job_card.js:193
 msgid "Select Corrective Operation"
 msgstr ""
 
@@ -63224,24 +64308,24 @@
 msgid "Select Customers By"
 msgstr ""
 
-#: setup/doctype/employee/employee.js:112
+#: setup/doctype/employee/employee.js:115
 msgid "Select Date of Birth. This will validate Employees age and prevent hiring of under-age staff."
 msgstr ""
 
-#: setup/doctype/employee/employee.js:117
+#: setup/doctype/employee/employee.js:122
 msgid "Select Date of joining. It will have impact on the first salary calculation, Leave allocation on pro-rata bases."
 msgstr ""
 
-#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:111
-#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:131
+#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:114
+#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:138
 msgid "Select Default Supplier"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:252
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:256
 msgid "Select Difference Account"
 msgstr ""
 
-#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:58
+#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:57
 msgid "Select Dimension"
 msgstr ""
 
@@ -63251,27 +64335,27 @@
 msgid "Select DocType"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:246
+#: manufacturing/doctype/job_card/job_card.js:274
 msgid "Select Employees"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:170
+#: buying/doctype/purchase_order/purchase_order.js:176
 msgid "Select Finished Good"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:962
+#: selling/doctype/sales_order/sales_order.js:1122
 msgid "Select Items"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:861
+#: selling/doctype/sales_order/sales_order.js:1008
 msgid "Select Items based on Delivery Date"
 msgstr ""
 
-#: public/js/controllers/transaction.js:2159
+#: public/js/controllers/transaction.js:2202
 msgid "Select Items for Quality Inspection"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:713
+#: selling/doctype/sales_order/sales_order.js:820
 msgid "Select Items to Manufacture"
 msgstr ""
 
@@ -63281,27 +64365,31 @@
 msgid "Select Items to Manufacture"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.js:1038
-#: selling/page/point_of_sale/pos_item_cart.js:888
+#: selling/doctype/sales_order/sales_order_list.js:76
+msgid "Select Items up to Delivery Date"
+msgstr ""
+
+#: accounts/doctype/sales_invoice/sales_invoice.js:1114
+#: selling/page/point_of_sale/pos_item_cart.js:920
 msgid "Select Loyalty Program"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:340
+#: buying/doctype/request_for_quotation/request_for_quotation.js:366
 msgid "Select Possible Supplier"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:726
-#: stock/doctype/pick_list/pick_list.js:161
+#: manufacturing/doctype/work_order/work_order.js:781
+#: stock/doctype/pick_list/pick_list.js:192
 msgid "Select Quantity"
 msgstr ""
 
-#: public/js/utils/sales_common.js:325
-#: selling/page/point_of_sale/pos_item_details.js:203
-#: stock/doctype/pick_list/pick_list.js:318
+#: public/js/utils/sales_common.js:361
+#: selling/page/point_of_sale/pos_item_details.js:212
+#: stock/doctype/pick_list/pick_list.js:352
 msgid "Select Serial No"
 msgstr ""
 
-#: public/js/utils/sales_common.js:328 stock/doctype/pick_list/pick_list.js:321
+#: public/js/utils/sales_common.js:364 stock/doctype/pick_list/pick_list.js:355
 msgid "Select Serial and Batch"
 msgstr ""
 
@@ -63329,40 +64417,40 @@
 msgid "Select Supplier Address"
 msgstr ""
 
-#: stock/doctype/batch/batch.js:110
+#: stock/doctype/batch/batch.js:127
 msgid "Select Target Warehouse"
 msgstr ""
 
-#: www/book_appointment/index.js:69
+#: www/book_appointment/index.js:73
 msgid "Select Time"
 msgstr ""
 
-#: accounts/report/balance_sheet/balance_sheet.js:14
-#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:14
+#: accounts/report/balance_sheet/balance_sheet.js:10
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:10
 msgid "Select View"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/dialog_manager.js:248
+#: public/js/bank_reconciliation_tool/dialog_manager.js:251
 msgid "Select Vouchers to Match"
 msgstr ""
 
-#: public/js/stock_analytics.js:46
+#: public/js/stock_analytics.js:72
 msgid "Select Warehouse..."
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:398
+#: manufacturing/doctype/production_plan/production_plan.js:431
 msgid "Select Warehouses to get Stock for Materials Planning"
 msgstr ""
 
-#: public/js/communication.js:67
+#: public/js/communication.js:80
 msgid "Select a Company"
 msgstr ""
 
-#: setup/doctype/employee/employee.js:107
+#: setup/doctype/employee/employee.js:110
 msgid "Select a Company this Employee belongs to."
 msgstr ""
 
-#: buying/doctype/supplier/supplier.js:160
+#: buying/doctype/supplier/supplier.js:188
 msgid "Select a Customer"
 msgstr ""
 
@@ -63370,19 +64458,19 @@
 msgid "Select a Default Priority."
 msgstr ""
 
-#: selling/doctype/customer/customer.js:205
+#: selling/doctype/customer/customer.js:221
 msgid "Select a Supplier"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:297
+#: stock/doctype/material_request/material_request.js:365
 msgid "Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only."
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:136
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:156
 msgid "Select a company"
 msgstr ""
 
-#: stock/doctype/item/item.js:809
+#: stock/doctype/item/item.js:889
 msgid "Select an Item Group."
 msgstr ""
 
@@ -63390,15 +64478,19 @@
 msgid "Select an account to print in account currency"
 msgstr ""
 
-#: selling/doctype/quotation/quotation.js:327
+#: selling/page/point_of_sale/pos_past_order_summary.js:18
+msgid "Select an invoice to load summary data"
+msgstr ""
+
+#: selling/doctype/quotation/quotation.js:339
 msgid "Select an item from each set to be used in the Sales Order."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1549
-msgid "Select change amount account"
+#: stock/doctype/item/item.js:590
+msgid "Select at least one value from each of the attributes."
 msgstr ""
 
-#: public/js/utils/party.js:305
+#: public/js/utils/party.js:352
 msgid "Select company first"
 msgstr ""
 
@@ -63409,15 +64501,15 @@
 msgid "Select company name first."
 msgstr ""
 
-#: controllers/accounts_controller.py:2394
+#: controllers/accounts_controller.py:2486
 msgid "Select finance book for the item {0} at row {1}"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_item_selector.js:162
+#: selling/page/point_of_sale/pos_item_selector.js:159
 msgid "Select item group"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:293
+#: manufacturing/doctype/bom/bom.js:306
 msgid "Select template item"
 msgstr ""
 
@@ -63431,16 +64523,16 @@
 msgid "Select the Default Workstation where the Operation will be performed. This will be fetched in BOMs and Work Orders."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:807
+#: manufacturing/doctype/work_order/work_order.js:866
 msgid "Select the Item to be manufactured."
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:725
+#: manufacturing/doctype/bom/bom.js:754
 msgid "Select the Item to be manufactured. The Item name, UoM, Company, and Currency will be fetched automatically."
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:294
-#: manufacturing/doctype/production_plan/production_plan.js:305
+#: manufacturing/doctype/production_plan/production_plan.js:319
+#: manufacturing/doctype/production_plan/production_plan.js:332
 msgid "Select the Warehouse"
 msgstr ""
 
@@ -63452,15 +64544,15 @@
 msgid "Select the date and your timezone"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:740
+#: manufacturing/doctype/bom/bom.js:773
 msgid "Select the raw materials (Items) required to manufacture the Item"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:338
+#: manufacturing/doctype/bom/bom.js:353
 msgid "Select variant item code for the template item {0}"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:525
+#: manufacturing/doctype/production_plan/production_plan.js:565
 msgid ""
 "Select whether to get items from a Sales Order or a Material Request. For now select <b>Sales Order</b>.\n"
 " A Production Plan can also be created manually where you can select the Items to manufacture."
@@ -63481,7 +64573,7 @@
 msgid "Selected POS Opening Entry should be open."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2192
+#: accounts/doctype/sales_invoice/sales_invoice.py:2161
 msgid "Selected Price List should have buying and selling fields checked."
 msgstr ""
 
@@ -63495,7 +64587,7 @@
 msgid "Selected date is"
 msgstr ""
 
-#: public/js/bulk_transaction_processing.js:26
+#: public/js/bulk_transaction_processing.js:34
 msgid "Selected document must be in submitted state"
 msgstr ""
 
@@ -63510,7 +64602,7 @@
 msgid "Sell"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:91
+#: assets/doctype/asset/asset.js:100
 msgid "Sell Asset"
 msgstr ""
 
@@ -63640,7 +64732,7 @@
 msgid "Send Emails"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:46
+#: buying/doctype/request_for_quotation/request_for_quotation.js:53
 msgid "Send Emails to Suppliers"
 msgstr ""
 
@@ -63648,7 +64740,7 @@
 msgid "Send Now"
 msgstr ""
 
-#: public/js/controllers/transaction.js:440
+#: public/js/controllers/transaction.js:479
 msgid "Send SMS"
 msgstr ""
 
@@ -63670,6 +64762,11 @@
 msgid "Send To Primary Contact"
 msgstr ""
 
+#. Description of a DocType
+#: setup/doctype/email_digest/email_digest.json
+msgid "Send regular summary reports via Email."
+msgstr ""
+
 #. Option for the 'Purpose' (Select) field in DocType 'Stock Entry'
 #: stock/doctype/stock_entry/stock_entry.json
 msgctxt "Stock Entry"
@@ -63700,7 +64797,7 @@
 msgid "Sender"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.js:35
+#: accounts/doctype/payment_request/payment_request.js:44
 msgid "Sending"
 msgstr ""
 
@@ -63722,7 +64819,7 @@
 msgid "Sequence ID"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:262
+#: manufacturing/doctype/work_order/work_order.js:277
 msgid "Sequence Id"
 msgstr ""
 
@@ -63773,26 +64870,26 @@
 msgid "Serial / Batch No"
 msgstr ""
 
-#: public/js/utils.js:124
+#: public/js/utils.js:153
 msgid "Serial / Batch Nos"
 msgstr ""
 
 #. Name of a DocType
-#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:73
+#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:74
 #: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:116
-#: public/js/controllers/transaction.js:2144
-#: public/js/utils/serial_no_batch_selector.js:350
+#: public/js/controllers/transaction.js:2187
+#: public/js/utils/serial_no_batch_selector.js:355
 #: stock/doctype/serial_no/serial_no.json
 #: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:160
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:64
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:150
-#: stock/report/serial_no_ledger/serial_no_ledger.js:39
+#: stock/report/serial_no_ledger/serial_no_ledger.js:38
 #: stock/report/serial_no_ledger/serial_no_ledger.py:57
-#: stock/report/stock_ledger/stock_ledger.py:246
+#: stock/report/stock_ledger/stock_ledger.py:319
 msgid "Serial No"
 msgstr ""
 
-#. Label of a Small Text field in DocType 'Asset Capitalization Stock Item'
+#. Label of a Text field in DocType 'Asset Capitalization Stock Item'
 #: assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json
 msgctxt "Asset Capitalization Stock Item"
 msgid "Serial No"
@@ -63840,7 +64937,7 @@
 msgid "Serial No"
 msgstr ""
 
-#. Label of a Small Text field in DocType 'POS Invoice Item'
+#. Label of a Text field in DocType 'POS Invoice Item'
 #: accounts/doctype/pos_invoice_item/pos_invoice_item.json
 msgctxt "POS Invoice Item"
 msgid "Serial No"
@@ -63876,7 +64973,7 @@
 msgid "Serial No"
 msgstr ""
 
-#. Label of a Small Text field in DocType 'Sales Invoice Item'
+#. Label of a Text field in DocType 'Sales Invoice Item'
 #: accounts/doctype/sales_invoice_item/sales_invoice_item.json
 msgctxt "Sales Invoice Item"
 msgid "Serial No"
@@ -63897,7 +64994,7 @@
 msgid "Serial No"
 msgstr ""
 
-#. Label of a Small Text field in DocType 'Stock Entry Detail'
+#. Label of a Text field in DocType 'Stock Entry Detail'
 #: stock/doctype/stock_entry_detail/stock_entry_detail.json
 msgctxt "Stock Entry Detail"
 msgid "Serial No"
@@ -63992,7 +65089,7 @@
 msgid "Serial No and Batch for Finished Good"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:577
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:572
 msgid "Serial No is mandatory"
 msgstr ""
 
@@ -64000,11 +65097,11 @@
 msgid "Serial No is mandatory for Item {0}"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:480
+#: public/js/utils/serial_no_batch_selector.js:488
 msgid "Serial No {0} already exists"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:311
+#: public/js/utils/barcode_scanner.js:321
 msgid "Serial No {0} already scanned"
 msgstr ""
 
@@ -64021,16 +65118,11 @@
 msgid "Serial No {0} does not exist"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2112
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2131
 msgid "Serial No {0} does not exists"
 msgstr ""
 
 #: public/js/utils/barcode_scanner.js:402
-msgid "Serial No {0} has already scanned."
-msgstr ""
-
-#: public/js/utils/barcode_scanner.js:499
-#: public/js/utils/barcode_scanner.js:506
 msgid "Serial No {0} is already added"
 msgstr ""
 
@@ -64046,23 +65138,23 @@
 msgid "Serial No {0} not found"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:695
+#: selling/page/point_of_sale/pos_controller.js:734
 msgid "Serial No: {0} has already been transacted into another POS Invoice."
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:262
-#: public/js/utils/serial_no_batch_selector.js:15
-#: public/js/utils/serial_no_batch_selector.js:178
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:48
+#: public/js/utils/barcode_scanner.js:271
+#: public/js/utils/serial_no_batch_selector.js:16
+#: public/js/utils/serial_no_batch_selector.js:181
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:46
 msgid "Serial Nos"
 msgstr ""
 
 #: public/js/utils/serial_no_batch_selector.js:20
-#: public/js/utils/serial_no_batch_selector.js:183
+#: public/js/utils/serial_no_batch_selector.js:185
 msgid "Serial Nos / Batch Nos"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1692
+#: accounts/doctype/sales_invoice_item/sales_invoice_item.py:157
 msgid "Serial Nos Mismatch"
 msgstr ""
 
@@ -64072,11 +65164,11 @@
 msgid "Serial Nos and Batches"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1074
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1081
 msgid "Serial Nos are created successfully"
 msgstr ""
 
-#: stock/stock_ledger.py:1972
+#: stock/stock_ledger.py:1979
 msgid "Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding."
 msgstr ""
 
@@ -64102,7 +65194,7 @@
 #. Name of a DocType
 #: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:80
-#: stock/report/stock_ledger/stock_ledger.py:253
+#: stock/report/stock_ledger/stock_ledger.py:326
 #: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:154
 msgid "Serial and Batch Bundle"
 msgstr ""
@@ -64197,14 +65289,18 @@
 msgid "Serial and Batch Bundle"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1253
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1260
 msgid "Serial and Batch Bundle created"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1295
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1309
 msgid "Serial and Batch Bundle updated"
 msgstr ""
 
+#: controllers/stock_controller.py:82
+msgid "Serial and Batch Bundle {0} is already used in {1} {2}."
+msgstr ""
+
 #. Label of a Section Break field in DocType 'Subcontracting Receipt Item'
 #: subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json
 msgctxt "Subcontracting Receipt Item"
@@ -64228,7 +65324,7 @@
 msgid "Serial and Batch No"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:51
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:49
 msgid "Serial and Batch Nos"
 msgstr ""
 
@@ -64256,11 +65352,11 @@
 msgid "Serial and Batch Summary"
 msgstr ""
 
-#: stock/utils.py:427
+#: stock/utils.py:422
 msgid "Serial number {0} entered more than once"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:545
+#: accounts/doctype/journal_entry/journal_entry.js:611
 msgid "Series"
 msgstr ""
 
@@ -64718,7 +65814,7 @@
 msgid "Service Level Agreement has been changed to {0}."
 msgstr ""
 
-#: support/doctype/issue/issue.js:67
+#: support/doctype/issue/issue.js:77
 msgid "Service Level Agreement was reset."
 msgstr ""
 
@@ -64799,11 +65895,11 @@
 msgid "Service Stop Date"
 msgstr ""
 
-#: accounts/deferred_revenue.py:48 public/js/controllers/transaction.js:1239
+#: accounts/deferred_revenue.py:48 public/js/controllers/transaction.js:1298
 msgid "Service Stop Date cannot be after Service End Date"
 msgstr ""
 
-#: accounts/deferred_revenue.py:45 public/js/controllers/transaction.js:1236
+#: accounts/deferred_revenue.py:45 public/js/controllers/transaction.js:1295
 msgid "Service Stop Date cannot be before Service Start Date"
 msgstr ""
 
@@ -64836,7 +65932,7 @@
 msgid "Set Basic Rate Manually"
 msgstr ""
 
-#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:150
+#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:157
 msgid "Set Default Supplier"
 msgstr ""
 
@@ -64877,11 +65973,11 @@
 msgid "Set Landed Cost Based on Purchase Invoice Rate"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.js:1050
+#: accounts/doctype/sales_invoice/sales_invoice.js:1126
 msgid "Set Loyalty Program"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:272
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:309
 msgid "Set New Release Date"
 msgstr ""
 
@@ -64897,27 +65993,31 @@
 msgid "Set Operating Cost Based On BOM Quantity"
 msgstr ""
 
+#: buying/doctype/request_for_quotation/request_for_quotation.py:264
+msgid "Set Password"
+msgstr ""
+
 #. Label of a Check field in DocType 'POS Opening Entry'
 #: accounts/doctype/pos_opening_entry/pos_opening_entry.json
 msgctxt "POS Opening Entry"
 msgid "Set Posting Date"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:767
+#: manufacturing/doctype/bom/bom.js:800
 msgid "Set Process Loss Item Quantity"
 msgstr ""
 
-#: projects/doctype/project/project.js:116
-#: projects/doctype/project/project.js:118
-#: projects/doctype/project/project.js:132
+#: projects/doctype/project/project.js:140
+#: projects/doctype/project/project.js:143
+#: projects/doctype/project/project.js:157
 msgid "Set Project Status"
 msgstr ""
 
-#: projects/doctype/project/project.js:154
+#: projects/doctype/project/project.js:182
 msgid "Set Project and all Tasks to status {0}?"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:768
+#: manufacturing/doctype/bom/bom.js:801
 msgid "Set Quantity"
 msgstr ""
 
@@ -64997,7 +66097,7 @@
 msgid "Set Valuation Rate Based on Source Warehouse"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:184
+#: selling/doctype/sales_order/sales_order.js:207
 msgid "Set Warehouse"
 msgstr ""
 
@@ -65006,25 +66106,25 @@
 msgid "Set as Closed"
 msgstr ""
 
-#: projects/doctype/task/task_list.js:12
+#: projects/doctype/task/task_list.js:20
 msgid "Set as Completed"
 msgstr ""
 
-#: public/js/utils/sales_common.js:406
-#: selling/doctype/quotation/quotation.js:124
+#: public/js/utils/sales_common.js:462
+#: selling/doctype/quotation/quotation.js:129
 msgid "Set as Lost"
 msgstr ""
 
 #: crm/doctype/opportunity/opportunity_list.js:13
-#: projects/doctype/task/task_list.js:8 support/doctype/issue/issue_list.js:8
+#: projects/doctype/task/task_list.js:16 support/doctype/issue/issue_list.js:8
 msgid "Set as Open"
 msgstr ""
 
-#: setup/doctype/company/company.py:419
+#: setup/doctype/company/company.py:418
 msgid "Set default inventory account for perpetual inventory"
 msgstr ""
 
-#: setup/doctype/company/company.py:429
+#: setup/doctype/company/company.py:428
 msgid "Set default {0} account for non stock items"
 msgstr ""
 
@@ -65035,7 +66135,7 @@
 msgid "Set fieldname from which you want to fetch the data from the parent form."
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:757
+#: manufacturing/doctype/bom/bom.js:790
 msgid "Set quantity of process loss item:"
 msgstr ""
 
@@ -65052,7 +66152,7 @@
 msgid "Set targets Item Group-wise for this Sales Person."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:852
+#: manufacturing/doctype/work_order/work_order.js:923
 msgid "Set the Planned Start Date (an Estimated Date at which you want the Production to begin)"
 msgstr ""
 
@@ -65074,15 +66174,15 @@
 msgid "Set up your Warehouse"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:672
+#: assets/doctype/asset/asset.py:674
 msgid "Set {0} in asset category {1} for company {2}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:953
+#: assets/doctype/asset/asset.py:957
 msgid "Set {0} in asset category {1} or company {2}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:949
+#: assets/doctype/asset/asset.py:953
 msgid "Set {0} in company {1}"
 msgstr ""
 
@@ -65163,7 +66263,7 @@
 msgstr ""
 
 #: manufacturing/doctype/bom/bom.py:956
-#: manufacturing/doctype/work_order/work_order.py:978
+#: manufacturing/doctype/work_order/work_order.py:992
 msgid "Setting {} is required"
 msgstr ""
 
@@ -65196,7 +66296,13 @@
 msgid "Settings"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting_list.js:15
+#. Description of a DocType
+#: crm/doctype/crm_settings/crm_settings.json
+#: selling/doctype/selling_settings/selling_settings.json
+msgid "Settings for Selling Module"
+msgstr ""
+
+#: accounts/doctype/invoice_discounting/invoice_discounting_list.js:11
 msgid "Settled"
 msgstr ""
 
@@ -65212,6 +66318,12 @@
 msgid "Settled"
 msgstr ""
 
+#. Option for the 'Status' (Select) field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Setup"
+msgstr ""
+
 #. Title of an Onboarding Step
 #: setup/onboarding_step/letterhead/letterhead.json
 msgid "Setup Your Letterhead"
@@ -65230,7 +66342,7 @@
 #. Name of a report
 #. Label of a Link in the Accounting Workspace
 #: accounts/doctype/share_balance/share_balance.json
-#: accounts/doctype/shareholder/shareholder.js:22
+#: accounts/doctype/shareholder/shareholder.js:21
 #: accounts/report/share_balance/share_balance.json
 #: accounts/workspace/accounting/accounting.json
 msgid "Share Balance"
@@ -65245,7 +66357,7 @@
 
 #. Name of a report
 #. Label of a Link in the Accounting Workspace
-#: accounts/doctype/shareholder/shareholder.js:28
+#: accounts/doctype/shareholder/shareholder.js:27
 #: accounts/report/share_ledger/share_ledger.json
 #: accounts/workspace/accounting/accounting.json
 msgid "Share Ledger"
@@ -65289,9 +66401,9 @@
 
 #. Name of a DocType
 #: accounts/doctype/shareholder/shareholder.json
-#: accounts/report/share_balance/share_balance.js:17
+#: accounts/report/share_balance/share_balance.js:16
 #: accounts/report/share_balance/share_balance.py:57
-#: accounts/report/share_ledger/share_ledger.js:17
+#: accounts/report/share_ledger/share_ledger.js:16
 #: accounts/report/share_ledger/share_ledger.py:51
 msgid "Shareholder"
 msgstr ""
@@ -65308,7 +66420,7 @@
 msgid "Shelf Life In Days"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:247
+#: assets/doctype/asset/asset.js:288
 msgid "Shift"
 msgstr ""
 
@@ -65331,7 +66443,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: stock/doctype/delivery_note/delivery_note.js:166
+#: stock/doctype/delivery_note/delivery_note.js:181
 #: stock/doctype/shipment/shipment.json
 msgid "Shipment"
 msgstr ""
@@ -65399,7 +66511,7 @@
 msgid "Shipment details"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:846
+#: stock/doctype/delivery_note/delivery_note.py:907
 msgid "Shipments"
 msgstr ""
 
@@ -65747,31 +66859,35 @@
 msgid "Show Cancelled Entries"
 msgstr ""
 
-#: templates/pages/projects.js:64
+#: templates/pages/projects.js:61
 msgid "Show Completed"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:107
+#: accounts/report/budget_variance_report/budget_variance_report.js:105
 msgid "Show Cumulative Amount"
 msgstr ""
 
-#: stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.js:17
+#: stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.js:16
 msgid "Show Disabled Warehouses"
 msgstr ""
 
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:306
+msgid "Show Document"
+msgstr ""
+
 #. Label of a Check field in DocType 'Bank Statement Import'
 #: accounts/doctype/bank_statement_import/bank_statement_import.json
 msgctxt "Bank Statement Import"
 msgid "Show Failed Logs"
 msgstr ""
 
-#: accounts/report/accounts_payable/accounts_payable.js:144
-#: accounts/report/accounts_receivable/accounts_receivable.js:161
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:134
+#: accounts/report/accounts_payable/accounts_payable.js:147
+#: accounts/report/accounts_receivable/accounts_receivable.js:164
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:137
 msgid "Show Future Payments"
 msgstr ""
 
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:139
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:142
 msgid "Show GL Balance"
 msgstr ""
 
@@ -65804,7 +66920,7 @@
 msgid "Show Ledger View"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.js:166
+#: accounts/report/accounts_receivable/accounts_receivable.js:169
 msgid "Show Linked Delivery Notes"
 msgstr ""
 
@@ -65818,7 +66934,7 @@
 msgid "Show Net Values in Party Account"
 msgstr ""
 
-#: templates/pages/projects.js:66
+#: templates/pages/projects.js:63
 msgid "Show Open"
 msgstr ""
 
@@ -65852,18 +66968,18 @@
 msgid "Show Preview"
 msgstr ""
 
-#: accounts/report/accounts_payable/accounts_payable.js:139
-#: accounts/report/accounts_receivable/accounts_receivable.js:176
+#: accounts/report/accounts_payable/accounts_payable.js:142
+#: accounts/report/accounts_receivable/accounts_receivable.js:179
 #: accounts/report/general_ledger/general_ledger.js:204
 msgid "Show Remarks"
 msgstr ""
 
-#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:66
+#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:65
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js:65
 msgid "Show Return Entries"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.js:171
+#: accounts/report/accounts_receivable/accounts_receivable.js:174
 msgid "Show Sales Person"
 msgstr ""
 
@@ -65877,11 +66993,16 @@
 msgid "Show Taxes as Table in Print"
 msgstr ""
 
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:456
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:296
+msgid "Show Traceback"
+msgstr ""
+
 #: stock/report/stock_balance/stock_balance.js:90
 msgid "Show Variant Attributes"
 msgstr ""
 
-#: stock/doctype/item/item.js:90
+#: stock/doctype/item/item.js:106
 msgid "Show Variants"
 msgstr ""
 
@@ -65889,8 +67010,8 @@
 msgid "Show Warehouse-wise Stock"
 msgstr ""
 
-#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.js:29
-#: manufacturing/report/bom_stock_report/bom_stock_report.js:17
+#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.js:28
+#: manufacturing/report/bom_stock_report/bom_stock_report.js:19
 msgid "Show exploded view"
 msgstr ""
 
@@ -65900,7 +67021,7 @@
 msgid "Show in Website"
 msgstr ""
 
-#: accounts/report/trial_balance/trial_balance.js:104
+#: accounts/report/trial_balance/trial_balance.js:110
 msgid "Show net values in opening and closing columns"
 msgstr ""
 
@@ -65908,30 +67029,30 @@
 msgid "Show only POS"
 msgstr ""
 
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:108
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:106
 msgid "Show only the Immediate Upcoming Term"
 msgstr ""
 
-#: stock/utils.py:588
+#: stock/utils.py:583
 msgid "Show pending entries"
 msgstr ""
 
-#: accounts/report/trial_balance/trial_balance.js:93
+#: accounts/report/trial_balance/trial_balance.js:99
 msgid "Show unclosed fiscal year's P&L balances"
 msgstr ""
 
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:88
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:96
 msgid "Show with upcoming revenue/expense"
 msgstr ""
 
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:113
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:137
 #: accounts/report/profitability_analysis/profitability_analysis.js:71
-#: accounts/report/trial_balance/trial_balance.js:88
+#: accounts/report/trial_balance/trial_balance.js:94
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.js:85
 msgid "Show zero values"
 msgstr ""
 
-#: accounts/doctype/accounting_dimension/accounting_dimension.js:30
+#: accounts/doctype/accounting_dimension/accounting_dimension.js:35
 msgid "Show {0}"
 msgstr ""
 
@@ -66017,7 +67138,7 @@
 msgid "Simultaneous"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:551
+#: stock/doctype/stock_entry/stock_entry.py:506
 msgid "Since there is a process loss of {0} units for the finished good {1}, you should reduce the quantity by {0} units for the finished good {1} in the Items Table."
 msgstr ""
 
@@ -66040,7 +67161,7 @@
 msgid "Single Transaction Threshold"
 msgstr ""
 
-#: stock/doctype/item/item.js:103
+#: stock/doctype/item/item.js:131
 msgid "Single Variant"
 msgstr ""
 
@@ -66076,7 +67197,7 @@
 msgid "Skipping Tax Withholding Category {0} as there is no associated account set for Company {1} in it."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:51
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:49
 msgid "Skipping {0} of {1}, {2}"
 msgstr ""
 
@@ -66090,7 +67211,7 @@
 msgid "Small"
 msgstr ""
 
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:68
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:67
 msgid "Smoothing Constant"
 msgstr ""
 
@@ -66099,7 +67220,7 @@
 msgid "Software"
 msgstr ""
 
-#: assets/doctype/asset/asset_list.js:11
+#: assets/doctype/asset/asset_list.js:9
 msgid "Sold"
 msgstr ""
 
@@ -66109,24 +67230,29 @@
 msgid "Sold"
 msgstr ""
 
-#: www/book_appointment/index.js:239
+#: selling/page/point_of_sale/pos_past_order_summary.js:80
+msgid "Sold by"
+msgstr ""
+
+#: www/book_appointment/index.js:248
 msgid "Something went wrong please try again"
 msgstr ""
 
-#: accounts/doctype/pricing_rule/utils.py:747
+#: accounts/doctype/pricing_rule/utils.py:746
 msgid "Sorry, this coupon code is no longer valid"
 msgstr ""
 
-#: accounts/doctype/pricing_rule/utils.py:745
+#: accounts/doctype/pricing_rule/utils.py:744
 msgid "Sorry, this coupon code's validity has expired"
 msgstr ""
 
-#: accounts/doctype/pricing_rule/utils.py:742
+#: accounts/doctype/pricing_rule/utils.py:741
 msgid "Sorry, this coupon code's validity has not started"
 msgstr ""
 
 #: crm/report/lead_details/lead_details.py:40
 #: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.py:38
+#: templates/form_grid/stock_entry_grid.html:29
 msgid "Source"
 msgstr ""
 
@@ -66232,10 +67358,10 @@
 msgid "Source Type"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:313
+#: manufacturing/doctype/bom/bom.js:326
 #: manufacturing/report/work_order_stock_report/work_order_stock_report.py:126
-#: stock/dashboard/item_dashboard.js:215
-#: stock/doctype/stock_entry/stock_entry.js:547
+#: stock/dashboard/item_dashboard.js:223
+#: stock/doctype/stock_entry/stock_entry.js:627
 msgid "Source Warehouse"
 msgstr ""
 
@@ -66310,11 +67436,11 @@
 msgid "Source and Target Location cannot be same"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:640
+#: stock/doctype/stock_entry/stock_entry.py:595
 msgid "Source and target warehouse cannot be same for row {0}"
 msgstr ""
 
-#: stock/dashboard/item_dashboard.js:278
+#: stock/dashboard/item_dashboard.js:286
 msgid "Source and target warehouse must be different"
 msgstr ""
 
@@ -66323,8 +67449,8 @@
 msgid "Source of Funds (Liabilities)"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:617
-#: stock/doctype/stock_entry/stock_entry.py:634
+#: stock/doctype/stock_entry/stock_entry.py:572
+#: stock/doctype/stock_entry/stock_entry.py:589
 msgid "Source warehouse is mandatory for row {0}"
 msgstr ""
 
@@ -66362,16 +67488,26 @@
 msgid "Spacer"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:467 stock/doctype/batch/batch.js:143
-#: support/doctype/issue/issue.js:100
+#. Description of a DocType
+#: setup/doctype/currency_exchange/currency_exchange.json
+msgid "Specify Exchange Rate to convert one currency into another"
+msgstr ""
+
+#. Description of a DocType
+#: accounts/doctype/shipping_rule/shipping_rule.json
+msgid "Specify conditions to calculate shipping amount"
+msgstr ""
+
+#: assets/doctype/asset/asset.js:540 stock/doctype/batch/batch.js:70
+#: stock/doctype/batch/batch.js:162 support/doctype/issue/issue.js:112
 msgid "Split"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:111 assets/doctype/asset/asset.js:451
+#: assets/doctype/asset/asset.js:135 assets/doctype/asset/asset.js:524
 msgid "Split Asset"
 msgstr ""
 
-#: stock/doctype/batch/batch.js:142
+#: stock/doctype/batch/batch.js:161
 msgid "Split Batch"
 msgstr ""
 
@@ -66388,19 +67524,19 @@
 msgid "Split From"
 msgstr ""
 
-#: support/doctype/issue/issue.js:90
+#: support/doctype/issue/issue.js:100
 msgid "Split Issue"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:457
+#: assets/doctype/asset/asset.js:530
 msgid "Split Qty"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1050
+#: assets/doctype/asset/asset.py:1054
 msgid "Split qty cannot be grater than or equal to asset qty"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1827
+#: accounts/doctype/payment_entry/payment_entry.py:1846
 msgid "Splitting {0} {1} into {2} rows as per Payment Terms"
 msgstr ""
 
@@ -66463,11 +67599,26 @@
 msgid "Standard Template"
 msgstr ""
 
+#. Description of a DocType
+#: setup/doctype/terms_and_conditions/terms_and_conditions.json
+msgid "Standard Terms and Conditions that can be added to Sales and Purchases. Examples: Validity of the offer, Payment Terms, Safety and Usage, etc."
+msgstr ""
+
 #: regional/report/uae_vat_201/uae_vat_201.py:100
 #: regional/report/uae_vat_201/uae_vat_201.py:106
 msgid "Standard rated supplies in {0}"
 msgstr ""
 
+#. Description of a DocType
+#: accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.json
+msgid "Standard tax template that can be applied to all Purchase Transactions. This template can contain a list of tax heads and also other expense heads like \"Shipping\", \"Insurance\", \"Handling\", etc."
+msgstr ""
+
+#. Description of a DocType
+#: accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.json
+msgid "Standard tax template that can be applied to all Sales Transactions. This template can contain a list of tax heads and also other expense/income heads like \"Shipping\", \"Insurance\", \"Handling\" etc."
+msgstr ""
+
 #. Label of a Link field in DocType 'Supplier Scorecard Scoring Standing'
 #: buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.json
 msgctxt "Supplier Scorecard Scoring Standing"
@@ -66480,23 +67631,25 @@
 msgid "Standing Name"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:591
+#: manufacturing/doctype/work_order/work_order.js:630
+#: manufacturing/doctype/workstation/workstation_job_card.html:67
+#: public/js/projects/timer.js:32
 msgid "Start"
 msgstr ""
 
-#: accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js:44
+#: accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js:43
 msgid "Start / Resume"
 msgstr ""
 
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:34
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:34
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:42
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:42
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.js:16
-#: accounts/report/payment_ledger/payment_ledger.js:17
-#: assets/report/fixed_asset_register/fixed_asset_register.js:68
+#: accounts/report/payment_ledger/payment_ledger.js:16
+#: assets/report/fixed_asset_register/fixed_asset_register.js:67
 #: projects/report/project_summary/project_summary.py:70
-#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:52
-#: public/js/financial_statements.js:184
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:17
+#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:47
+#: public/js/financial_statements.js:193
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:16
 msgid "Start Date"
 msgstr ""
 
@@ -66570,11 +67723,16 @@
 msgid "Start Date cannot be before the current date"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:133
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.js:21
+msgid "Start Deletion"
+msgstr ""
+
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:115
 msgid "Start Import"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.js:244
+#: manufacturing/doctype/job_card/job_card.js:269
+#: manufacturing/doctype/workstation/workstation.js:190
 msgid "Start Job"
 msgstr ""
 
@@ -66582,10 +67740,14 @@
 msgid "Start Merge"
 msgstr ""
 
-#: stock/doctype/repost_item_valuation/repost_item_valuation.js:85
+#: stock/doctype/repost_item_valuation/repost_item_valuation.js:95
 msgid "Start Reposting"
 msgstr ""
 
+#: manufacturing/doctype/workstation/workstation.js:159
+msgid "Start Time"
+msgstr ""
+
 #. Label of a Datetime field in DocType 'Call Log'
 #: telephony/doctype/call_log/call_log.json
 msgctxt "Call Log"
@@ -66614,11 +67776,11 @@
 msgid "Start Time can't be greater than or equal to End Time for {0}."
 msgstr ""
 
-#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:48
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:48
+#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:56
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:56
 #: accounts/report/financial_ratios/financial_ratios.js:17
-#: assets/report/fixed_asset_register/fixed_asset_register.js:82
-#: public/js/financial_statements.js:198
+#: assets/report/fixed_asset_register/fixed_asset_register.js:81
+#: public/js/financial_statements.js:207
 msgid "Start Year"
 msgstr ""
 
@@ -66652,7 +67814,7 @@
 msgid "Started Time"
 msgstr ""
 
-#: utilities/bulk_transaction.py:19
+#: utilities/bulk_transaction.py:22
 msgid "Started a background job to create {1} {0}"
 msgstr ""
 
@@ -66669,7 +67831,7 @@
 msgstr ""
 
 #: crm/report/lead_details/lead_details.py:59
-#: public/js/utils/contact_address_quick_entry.js:81
+#: public/js/utils/contact_address_quick_entry.js:84
 msgid "State"
 msgstr ""
 
@@ -66697,68 +67859,76 @@
 msgid "Statement Import Log"
 msgstr ""
 
-#: assets/report/fixed_asset_register/fixed_asset_register.js:17
+#: accounts/report/general_ledger/general_ledger.html:1
+msgid "Statement of Account"
+msgstr ""
+
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:491
+#: assets/report/fixed_asset_register/fixed_asset_register.js:16
 #: assets/report/fixed_asset_register/fixed_asset_register.py:424
-#: buying/doctype/purchase_order/purchase_order.js:288
-#: buying/doctype/purchase_order/purchase_order.js:290
-#: buying/doctype/purchase_order/purchase_order.js:292
-#: buying/doctype/purchase_order/purchase_order.js:298
-#: buying/doctype/purchase_order/purchase_order.js:300
-#: buying/doctype/purchase_order/purchase_order.js:304
+#: buying/doctype/purchase_order/purchase_order.js:317
+#: buying/doctype/purchase_order/purchase_order.js:323
+#: buying/doctype/purchase_order/purchase_order.js:329
+#: buying/doctype/purchase_order/purchase_order.js:335
+#: buying/doctype/purchase_order/purchase_order.js:337
+#: buying/doctype/purchase_order/purchase_order.js:344
 #: buying/report/procurement_tracker/procurement_tracker.py:74
-#: buying/report/purchase_order_analysis/purchase_order_analysis.js:53
+#: buying/report/purchase_order_analysis/purchase_order_analysis.js:52
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:173
 #: buying/report/subcontract_order_summary/subcontract_order_summary.py:134
-#: crm/report/lead_details/lead_details.js:31
+#: crm/report/lead_details/lead_details.js:30
 #: crm/report/lead_details/lead_details.py:25
-#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:34
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:39
-#: manufacturing/doctype/production_plan/production_plan.js:99
-#: manufacturing/doctype/production_plan/production_plan.js:103
-#: manufacturing/doctype/production_plan/production_plan.js:431
-#: manufacturing/doctype/work_order/work_order.js:352
-#: manufacturing/doctype/work_order/work_order.js:389
-#: manufacturing/doctype/work_order/work_order.js:565
-#: manufacturing/doctype/work_order/work_order.js:572
-#: manufacturing/doctype/work_order/work_order.js:576
-#: manufacturing/report/job_card_summary/job_card_summary.js:51
+#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:32
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:38
+#: manufacturing/doctype/production_plan/production_plan.js:107
+#: manufacturing/doctype/production_plan/production_plan.js:115
+#: manufacturing/doctype/production_plan/production_plan.js:466
+#: manufacturing/doctype/work_order/work_order.js:371
+#: manufacturing/doctype/work_order/work_order.js:407
+#: manufacturing/doctype/work_order/work_order.js:595
+#: manufacturing/doctype/work_order/work_order.js:606
+#: manufacturing/doctype/work_order/work_order.js:614
+#: manufacturing/doctype/workstation/workstation_job_card.html:51
+#: manufacturing/report/job_card_summary/job_card_summary.js:50
 #: manufacturing/report/job_card_summary/job_card_summary.py:139
 #: manufacturing/report/process_loss_report/process_loss_report.py:81
 #: manufacturing/report/production_analytics/production_analytics.py:19
-#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.js:22
+#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.js:21
 #: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:80
-#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:50
+#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:49
 #: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:111
 #: manufacturing/report/work_order_stock_report/work_order_stock_report.py:138
-#: manufacturing/report/work_order_summary/work_order_summary.js:37
+#: manufacturing/report/work_order_summary/work_order_summary.js:36
 #: manufacturing/report/work_order_summary/work_order_summary.py:202
 #: projects/report/daily_timesheet_summary/daily_timesheet_summary.py:35
-#: projects/report/delayed_tasks_summary/delayed_tasks_summary.js:25
+#: projects/report/delayed_tasks_summary/delayed_tasks_summary.js:24
 #: projects/report/delayed_tasks_summary/delayed_tasks_summary.py:92
-#: projects/report/project_summary/project_summary.js:24
+#: projects/report/project_summary/project_summary.js:23
 #: projects/report/project_summary/project_summary.py:58
-#: selling/doctype/sales_order/sales_order.js:517
-#: selling/doctype/sales_order/sales_order.js:521
-#: selling/doctype/sales_order/sales_order.js:528
-#: selling/doctype/sales_order/sales_order.js:539
-#: selling/doctype/sales_order/sales_order.js:541
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:90
+#: public/js/plant_floor_visual/visual_plant.js:111
+#: selling/doctype/sales_order/sales_order.js:553
+#: selling/doctype/sales_order/sales_order.js:558
+#: selling/doctype/sales_order/sales_order.js:567
+#: selling/doctype/sales_order/sales_order.js:584
+#: selling/doctype/sales_order/sales_order.js:590
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:88
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:68
-#: selling/report/sales_order_analysis/sales_order_analysis.js:55
+#: selling/report/sales_order_analysis/sales_order_analysis.js:54
 #: selling/report/sales_order_analysis/sales_order_analysis.py:228
-#: stock/doctype/delivery_note/delivery_note.js:210
-#: stock/doctype/delivery_note/delivery_note.js:229
-#: stock/doctype/purchase_receipt/purchase_receipt.js:222
-#: stock/doctype/purchase_receipt/purchase_receipt.js:240
-#: stock/report/reserved_stock/reserved_stock.js:127
+#: stock/doctype/delivery_note/delivery_note.js:252
+#: stock/doctype/delivery_note/delivery_note.js:281
+#: stock/doctype/purchase_receipt/purchase_receipt.js:255
+#: stock/doctype/purchase_receipt/purchase_receipt.js:284
+#: stock/report/reserved_stock/reserved_stock.js:124
 #: stock/report/reserved_stock/reserved_stock.py:178
 #: stock/report/serial_no_ledger/serial_no_ledger.py:51
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:106
 #: subcontracting/doctype/subcontracting_order/subcontracting_order.js:108
-#: support/report/issue_analytics/issue_analytics.js:52
-#: support/report/issue_summary/issue_summary.js:39
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:114
+#: support/report/issue_analytics/issue_analytics.js:51
+#: support/report/issue_summary/issue_summary.js:38
 #: templates/pages/projects.html:24 templates/pages/projects.html:46
-#: templates/pages/projects.html:66
+#: templates/pages/projects.html:66 templates/pages/task_info.html:69
+#: templates/pages/timelog_info.html:40
 msgid "Status"
 msgstr ""
 
@@ -67226,12 +68396,24 @@
 msgid "Status"
 msgstr ""
 
+#. Label of a Select field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Status"
+msgstr ""
+
 #. Label of a Section Break field in DocType 'Service Level Agreement'
 #: support/doctype/service_level_agreement/service_level_agreement.json
 msgctxt "Service Level Agreement"
 msgid "Status Details"
 msgstr ""
 
+#. Label of a Section Break field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Status Illustration"
+msgstr ""
+
 #: projects/doctype/project/project.py:719
 msgid "Status must be Cancelled or Completed"
 msgstr ""
@@ -67253,7 +68435,7 @@
 #. Label of a Card Break in the Home Workspace
 #. Name of a Workspace
 #: accounts/doctype/item_tax_template/item_tax_template_dashboard.py:11
-#: accounts/report/account_balance/account_balance.js:55
+#: accounts/report/account_balance/account_balance.js:57
 #: manufacturing/doctype/bom/bom_dashboard.py:14 setup/workspace/home/home.json
 #: stock/doctype/material_request/material_request_dashboard.py:17
 #: stock/workspace/stock/stock.json
@@ -67280,8 +68462,8 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:50
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:73
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1187
-#: accounts/report/account_balance/account_balance.js:56
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1239
+#: accounts/report/account_balance/account_balance.js:58
 msgid "Stock Adjustment"
 msgstr ""
 
@@ -67305,7 +68487,7 @@
 
 #. Name of a report
 #. Label of a Link in the Stock Workspace
-#: public/js/stock_analytics.js:8
+#: public/js/stock_analytics.js:7
 #: stock/report/stock_analytics/stock_analytics.json
 #: stock/workspace/stock/stock.json
 msgid "Stock Analytics"
@@ -67323,7 +68505,7 @@
 #. Name of a report
 #. Label of a Link in the Stock Workspace
 #. Label of a shortcut in the Stock Workspace
-#: stock/doctype/item/item.js:58 stock/doctype/warehouse/warehouse.js:52
+#: stock/doctype/item/item.js:58 stock/doctype/warehouse/warehouse.js:49
 #: stock/report/stock_balance/stock_balance.json
 #: stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py:107
 #: stock/workspace/stock/stock.json
@@ -67336,10 +68518,14 @@
 msgid "Stock Balance"
 msgstr ""
 
-#: stock/doctype/quick_stock_balance/quick_stock_balance.js:16
+#: stock/doctype/quick_stock_balance/quick_stock_balance.js:15
 msgid "Stock Balance Report"
 msgstr ""
 
+#: stock/page/warehouse_capacity_summary/warehouse_capacity_summary_header.html:10
+msgid "Stock Capacity"
+msgstr ""
+
 #. Label of a Tab Break field in DocType 'Stock Settings'
 #: stock/doctype/stock_settings/stock_settings.json
 msgctxt "Stock Settings"
@@ -67370,12 +68556,12 @@
 msgid "Stock Details"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:730
+#: stock/doctype/stock_entry/stock_entry.py:685
 msgid "Stock Entries already created for Work Order {0}: {1}"
 msgstr ""
 
 #. Name of a DocType
-#: stock/doctype/pick_list/pick_list.js:104
+#: stock/doctype/pick_list/pick_list.js:116
 #: stock/doctype/stock_entry/stock_entry.json
 msgid "Stock Entry"
 msgstr ""
@@ -67436,15 +68622,15 @@
 msgid "Stock Entry Type"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:1020
+#: stock/doctype/pick_list/pick_list.py:1140
 msgid "Stock Entry has been already created against this Pick List"
 msgstr ""
 
-#: stock/doctype/batch/batch.js:104
+#: stock/doctype/batch/batch.js:115
 msgid "Stock Entry {0} created"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1140
+#: accounts/doctype/journal_entry/journal_entry.py:1167
 msgid "Stock Entry {0} is not submitted"
 msgstr ""
 
@@ -67479,14 +68665,18 @@
 #. Name of a report
 #. Label of a Link in the Stock Workspace
 #. Label of a shortcut in the Stock Workspace
-#: public/js/controllers/stock_controller.js:54
-#: public/js/utils/ledger_preview.js:27 stock/doctype/item/item.js:64
+#: public/js/controllers/stock_controller.js:66
+#: public/js/utils/ledger_preview.js:37 stock/doctype/item/item.js:68
 #: stock/doctype/item/item_dashboard.py:8
 #: stock/report/stock_ledger/stock_ledger.json stock/workspace/stock/stock.json
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:32
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:33
 msgid "Stock Ledger"
 msgstr ""
 
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.js:38
+msgid "Stock Ledger Entries and GL Entries are reposted for the selected Purchase Receipts"
+msgstr ""
+
 #. Name of a DocType
 #: stock/doctype/stock_ledger_entry/stock_ledger_entry.json
 #: stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:114
@@ -67515,7 +68705,7 @@
 msgid "Stock Ledger report contains every submitted stock transaction. You can use filter to narrow down ledger entries."
 msgstr ""
 
-#: stock/doctype/batch/batch.js:50 stock/doctype/item/item.js:403
+#: stock/doctype/batch/batch.js:58 stock/doctype/item/item.js:467
 msgid "Stock Levels"
 msgstr ""
 
@@ -67554,6 +68744,7 @@
 #: stock/doctype/stock_entry/stock_entry.json
 #: stock/doctype/stock_entry_type/stock_entry_type.json
 #: stock/doctype/stock_reconciliation/stock_reconciliation.json
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.json
 #: stock/doctype/stock_settings/stock_settings.json
 #: stock/doctype/warehouse_type/warehouse_type.json
 #: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
@@ -67572,7 +68763,7 @@
 
 #. Name of a report
 #. Label of a Link in the Stock Workspace
-#: stock/doctype/item/item.js:70
+#: stock/doctype/item/item.js:78
 #: stock/report/stock_projected_qty/stock_projected_qty.json
 #: stock/workspace/stock/stock.json
 msgid "Stock Projected Qty"
@@ -67621,7 +68812,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:90
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:123
-#: accounts/report/account_balance/account_balance.js:57
+#: accounts/report/account_balance/account_balance.js:59
 msgid "Stock Received But Not Billed"
 msgstr ""
 
@@ -67672,20 +68863,20 @@
 msgid "Stock Reposting Settings"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:68
-#: selling/doctype/sales_order/sales_order.js:74
-#: selling/doctype/sales_order/sales_order.js:79
-#: selling/doctype/sales_order/sales_order.js:178
-#: stock/doctype/pick_list/pick_list.js:110
-#: stock/doctype/pick_list/pick_list.js:119
-#: stock/doctype/pick_list/pick_list.js:120
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:467
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:965
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:978
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:992
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1006
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1020
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1037
+#: selling/doctype/sales_order/sales_order.js:82
+#: selling/doctype/sales_order/sales_order.js:92
+#: selling/doctype/sales_order/sales_order.js:101
+#: selling/doctype/sales_order/sales_order.js:201
+#: stock/doctype/pick_list/pick_list.js:128
+#: stock/doctype/pick_list/pick_list.js:143
+#: stock/doctype/pick_list/pick_list.js:148
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:521
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:967
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:980
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:994
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1008
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1022
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1039
 msgid "Stock Reservation"
 msgstr ""
 
@@ -67695,18 +68886,18 @@
 msgid "Stock Reservation"
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1144
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1146
 msgid "Stock Reservation Entries Cancelled"
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1096
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1098
 msgid "Stock Reservation Entries Created"
 msgstr ""
 
 #. Name of a DocType
-#: selling/doctype/sales_order/sales_order.js:383
+#: selling/doctype/sales_order/sales_order.js:413
 #: stock/doctype/stock_reservation_entry/stock_reservation_entry.json
-#: stock/report/reserved_stock/reserved_stock.js:56
+#: stock/report/reserved_stock/reserved_stock.js:53
 #: stock/report/reserved_stock/reserved_stock.py:171
 msgid "Stock Reservation Entry"
 msgstr ""
@@ -67719,7 +68910,7 @@
 msgid "Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one."
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:614
+#: stock/doctype/delivery_note/delivery_note.py:675
 msgid "Stock Reservation Warehouse Mismatch"
 msgstr ""
 
@@ -67739,7 +68930,7 @@
 msgid "Stock Reserved Qty (in Stock UOM)"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1498
+#: stock/doctype/stock_entry/stock_entry.py:1507
 msgid "Stock Return"
 msgstr ""
 
@@ -67767,6 +68958,13 @@
 msgid "Stock Summary"
 msgstr ""
 
+#. Label of a Tab Break field in DocType 'Plant Floor'
+#. Label of a HTML field in DocType 'Plant Floor'
+#: manufacturing/doctype/plant_floor/plant_floor.json
+msgctxt "Plant Floor"
+msgid "Stock Summary"
+msgstr ""
+
 #. Label of a Card Break in the Stock Workspace
 #: stock/workspace/stock/stock.json
 msgid "Stock Transactions"
@@ -67784,8 +68982,8 @@
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:232
 #: stock/report/batch_item_expiry_status/batch_item_expiry_status.py:35
 #: stock/report/reserved_stock/reserved_stock.py:110
-#: stock/report/stock_balance/stock_balance.py:398
-#: stock/report/stock_ledger/stock_ledger.py:117
+#: stock/report/stock_balance/stock_balance.py:406
+#: stock/report/stock_ledger/stock_ledger.py:190
 msgid "Stock UOM"
 msgstr ""
 
@@ -67963,7 +69161,7 @@
 msgid "Stock UOM Quantity"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:368
+#: selling/doctype/sales_order/sales_order.js:398
 msgid "Stock Unreservation"
 msgstr ""
 
@@ -68030,6 +69228,7 @@
 #: stock/doctype/stock_entry/stock_entry.json
 #: stock/doctype/stock_entry_type/stock_entry_type.json
 #: stock/doctype/stock_ledger_entry/stock_ledger_entry.json
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.json
 #: stock/doctype/warehouse/warehouse.json
 #: stock/doctype/warehouse_type/warehouse_type.json
 #: subcontracting/doctype/subcontracting_order/subcontracting_order.json
@@ -68070,27 +69269,31 @@
 msgid "Stock cannot be reserved in group warehouse {0}."
 msgstr ""
 
-#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:908
+#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:910
 msgid "Stock cannot be reserved in the group warehouse {0}."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1011
-msgid "Stock cannot be updated against Delivery Note {0}"
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:673
+msgid "Stock cannot be updated against Purchase Receipt {0}"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:669
-msgid "Stock cannot be updated against Purchase Receipt {0}"
+#: accounts/doctype/sales_invoice/sales_invoice.py:1032
+msgid "Stock cannot be updated against the following Delivery Notes: {0}"
+msgstr ""
+
+#: accounts/doctype/sales_invoice/sales_invoice.py:1055
+msgid "Stock cannot be updated because the invoice contains a drop shipping item. Please disable 'Update Stock' or remove the drop shipping item."
 msgstr ""
 
 #: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:229
 msgid "Stock not available for Item {0} in Warehouse {1}."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:679
+#: selling/page/point_of_sale/pos_controller.js:714
 msgid "Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2} {3}."
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:241
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:252
 msgid "Stock transactions before {0} are frozen"
 msgstr ""
 
@@ -68108,12 +69311,12 @@
 msgid "Stock will be reserved on submission of <b>Purchase Receipt</b> created against Material Receipt for Sales Order."
 msgstr ""
 
-#: stock/utils.py:579
+#: stock/utils.py:574
 msgid "Stock/Accounts can not be frozen as processing of backdated entries is going on. Please try again later."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:570
-#: stock/doctype/material_request/material_request.js:107
+#: manufacturing/doctype/work_order/work_order.js:602
+#: stock/doctype/material_request/material_request.js:109
 msgid "Stop"
 msgstr ""
 
@@ -68189,11 +69392,11 @@
 msgid "Stopped"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:631
+#: manufacturing/doctype/work_order/work_order.py:645
 msgid "Stopped Work Order cannot be cancelled, Unstop it first to cancel"
 msgstr ""
 
-#: setup/doctype/company/company.py:260
+#: setup/doctype/company/company.py:259
 #: setup/setup_wizard/operations/defaults_setup.py:34
 #: setup/setup_wizard/operations/install_fixtures.py:481
 #: stock/doctype/item/item.py:282
@@ -68230,7 +69433,12 @@
 msgid "Sub Assemblies & Raw Materials"
 msgstr ""
 
-#: public/js/bom_configurator/bom_configurator.bundle.js:264
+#: public/js/bom_configurator/bom_configurator.bundle.js:129
+#: public/js/bom_configurator/bom_configurator.bundle.js:159
+msgid "Sub Assembly"
+msgstr ""
+
+#: public/js/bom_configurator/bom_configurator.bundle.js:271
 msgid "Sub Assembly Item"
 msgstr ""
 
@@ -68302,7 +69510,7 @@
 msgid "Subcontract BOM"
 msgstr ""
 
-#: buying/report/subcontract_order_summary/subcontract_order_summary.js:37
+#: buying/report/subcontract_order_summary/subcontract_order_summary.js:36
 #: buying/report/subcontract_order_summary/subcontract_order_summary.py:128
 #: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.py:22
 #: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.py:22
@@ -68314,7 +69522,7 @@
 msgid "Subcontract Order Summary"
 msgstr ""
 
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:68
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:81
 msgid "Subcontract Return"
 msgstr ""
 
@@ -68350,10 +69558,10 @@
 msgstr ""
 
 #. Name of a DocType
-#: buying/doctype/purchase_order/purchase_order.js:318
-#: controllers/subcontracting_controller.py:806
+#: buying/doctype/purchase_order/purchase_order.js:369
+#: controllers/subcontracting_controller.py:810
 #: subcontracting/doctype/subcontracting_order/subcontracting_order.json
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:78
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:95
 msgid "Subcontracting Order"
 msgstr ""
 
@@ -68403,7 +69611,7 @@
 msgid "Subcontracting Order Supplied Item"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:861
+#: buying/doctype/purchase_order/purchase_order.py:864
 msgid "Subcontracting Order {0} created."
 msgstr ""
 
@@ -68414,7 +69622,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:188
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:200
 #: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
 msgid "Subcontracting Receipt"
 msgstr ""
@@ -68466,10 +69674,10 @@
 msgid "Subdivision"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:219
-#: projects/doctype/task/task_tree.js:62
+#: buying/doctype/request_for_quotation/request_for_quotation.js:237
+#: projects/doctype/task/task_tree.js:65
 #: projects/report/delayed_tasks_summary/delayed_tasks_summary.py:91
-#: support/doctype/issue/issue.js:96
+#: support/doctype/issue/issue.js:106 templates/pages/task_info.html:44
 msgid "Subject"
 msgstr ""
 
@@ -68521,15 +69729,16 @@
 msgid "Subject"
 msgstr ""
 
-#: accounts/doctype/payment_order/payment_order.js:120
-#: public/js/payment/payments.js:28
-#: selling/page/point_of_sale/pos_controller.js:101
-#: www/book_appointment/index.html:59
+#: accounts/doctype/payment_order/payment_order.js:137
+#: manufacturing/doctype/workstation/workstation.js:237
+#: public/js/payment/payments.js:30
+#: selling/page/point_of_sale/pos_controller.js:119
+#: templates/pages/task_info.html:101 www/book_appointment/index.html:59
 msgid "Submit"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:857
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:698
+#: buying/doctype/purchase_order/purchase_order.py:860
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:699
 msgid "Submit Action Failed"
 msgstr ""
 
@@ -68557,14 +69766,18 @@
 msgid "Submit Journal Entries"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:135
+#: manufacturing/doctype/work_order/work_order.js:139
 msgid "Submit this Work Order for further processing."
 msgstr ""
 
-#: assets/doctype/asset/asset_list.js:32
+#: buying/doctype/request_for_quotation/request_for_quotation.py:265
+msgid "Submit your Quotation"
+msgstr ""
+
+#: assets/doctype/asset/asset_list.js:23
 #: manufacturing/doctype/bom_creator/bom_creator_list.js:15
-#: stock/doctype/stock_entry/stock_entry_list.js:21
-#: templates/pages/material_request_info.html:24 templates/pages/order.html:58
+#: stock/doctype/stock_entry/stock_entry_list.js:27
+#: templates/pages/material_request_info.html:24 templates/pages/order.html:70
 msgid "Submitted"
 msgstr ""
 
@@ -68828,11 +70041,11 @@
 msgid "Succeeded"
 msgstr ""
 
-#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js:6
+#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js:7
 msgid "Succeeded Entries"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:513
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:467
 msgid "Success"
 msgstr ""
 
@@ -68867,11 +70080,11 @@
 msgid "Successful"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:538
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:543
 msgid "Successfully Reconciled"
 msgstr ""
 
-#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:164
+#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:171
 msgid "Successfully Set Supplier"
 msgstr ""
 
@@ -68879,31 +70092,31 @@
 msgid "Successfully changed Stock UOM, please redefine conversion factors for new UOM."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:468
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:430
 msgid "Successfully imported {0}"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:182
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:161
 msgid "Successfully imported {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:166
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:145
 msgid "Successfully imported {0} record."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:178
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:157
 msgid "Successfully imported {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:165
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:144
 msgid "Successfully imported {0} records."
 msgstr ""
 
-#: buying/doctype/supplier/supplier.js:177
+#: buying/doctype/supplier/supplier.js:210
 msgid "Successfully linked to Customer"
 msgstr ""
 
-#: selling/doctype/customer/customer.js:222
+#: selling/doctype/customer/customer.js:243
 msgid "Successfully linked to Supplier"
 msgstr ""
 
@@ -68911,23 +70124,23 @@
 msgid "Successfully merged {0} out of {1}."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:478
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:438
 msgid "Successfully updated {0}"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:193
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:172
 msgid "Successfully updated {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:171
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:150
 msgid "Successfully updated {0} record."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:189
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:168
 msgid "Successfully updated {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again."
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:170
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:149
 msgid "Successfully updated {0} records."
 msgstr ""
 
@@ -69057,30 +70270,30 @@
 
 #. Name of a DocType
 #. Label of a Card Break in the Buying Workspace
-#: accounts/doctype/payment_order/payment_order.js:100
+#: accounts/doctype/payment_order/payment_order.js:110
 #: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:61
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:34
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:191
 #: accounts/report/purchase_register/purchase_register.js:21
 #: accounts/report/purchase_register/purchase_register.py:171
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:28
-#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:38
-#: buying/doctype/request_for_quotation/request_for_quotation.js:156
-#: buying/doctype/request_for_quotation/request_for_quotation.js:208
+#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:37
+#: buying/doctype/request_for_quotation/request_for_quotation.js:167
+#: buying/doctype/request_for_quotation/request_for_quotation.js:226
 #: buying/doctype/supplier/supplier.json
 #: buying/report/procurement_tracker/procurement_tracker.py:89
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:175
-#: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js:16
+#: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js:15
 #: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.py:30
-#: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js:16
+#: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js:15
 #: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.py:30
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:51
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:199
 #: buying/workspace/buying/buying.json public/js/purchase_trends_filters.js:50
-#: public/js/purchase_trends_filters.js:66
+#: public/js/purchase_trends_filters.js:63
 #: regional/report/irs_1099/irs_1099.py:79
-#: selling/doctype/customer/customer.js:207
-#: selling/doctype/sales_order/sales_order.js:1005
+#: selling/doctype/customer/customer.js:225
+#: selling/doctype/sales_order/sales_order.js:1167
 #: stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.js:8
 msgid "Supplier"
 msgstr ""
@@ -69386,15 +70599,15 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/report/accounts_payable/accounts_payable.js:122
-#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:105
-#: accounts/report/accounts_receivable/accounts_receivable.py:1110
+#: accounts/report/accounts_payable/accounts_payable.js:125
+#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:108
+#: accounts/report/accounts_receivable/accounts_receivable.py:1118
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:201
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.py:176
 #: accounts/report/purchase_register/purchase_register.js:27
 #: accounts/report/purchase_register/purchase_register.py:186
-#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:56
-#: buying/doctype/request_for_quotation/request_for_quotation.js:420
+#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:55
+#: buying/doctype/request_for_quotation/request_for_quotation.js:458
 #: public/js/purchase_trends_filters.js:51
 #: regional/report/irs_1099/irs_1099.js:26
 #: regional/report/irs_1099/irs_1099.py:72
@@ -69476,7 +70689,7 @@
 msgid "Supplier Invoice"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:218
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:216
 msgid "Supplier Invoice Date"
 msgstr ""
 
@@ -69486,13 +70699,14 @@
 msgid "Supplier Invoice Date"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1494
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1550
 msgid "Supplier Invoice Date cannot be greater than Posting Date"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:59
-#: accounts/report/general_ledger/general_ledger.py:656
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:212
+#: accounts/report/general_ledger/general_ledger.html:53
+#: accounts/report/general_ledger/general_ledger.py:669
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:210
 msgid "Supplier Invoice No"
 msgstr ""
 
@@ -69508,7 +70722,7 @@
 msgid "Supplier Invoice No"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1519
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1575
 msgid "Supplier Invoice No exists in Purchase Invoice {0}"
 msgstr ""
 
@@ -69538,12 +70752,12 @@
 msgid "Supplier Ledger Summary"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1041
+#: accounts/report/accounts_receivable/accounts_receivable.py:1049
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:160
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:197
 #: accounts/report/purchase_register/purchase_register.py:177
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:34
-#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:74
+#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:73
 msgid "Supplier Name"
 msgstr ""
 
@@ -69673,14 +70887,14 @@
 msgstr ""
 
 #. Name of a DocType
-#: buying/doctype/purchase_order/purchase_order.js:458
-#: buying/doctype/request_for_quotation/request_for_quotation.js:42
+#: buying/doctype/purchase_order/purchase_order.js:529
+#: buying/doctype/request_for_quotation/request_for_quotation.js:45
 #: buying/doctype/supplier_quotation/supplier_quotation.json
 #: buying/doctype/supplier_quotation/supplier_quotation.py:214
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:59
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:260
-#: crm/doctype/opportunity/opportunity.js:82
-#: stock/doctype/material_request/material_request.js:147
+#: crm/doctype/opportunity/opportunity.js:81
+#: stock/doctype/material_request/material_request.js:170
 msgid "Supplier Quotation"
 msgstr ""
 
@@ -69732,7 +70946,7 @@
 msgid "Supplier Quotation Item"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.py:409
+#: buying/doctype/request_for_quotation/request_for_quotation.py:433
 msgid "Supplier Quotation {0} Created"
 msgstr ""
 
@@ -69860,6 +71074,11 @@
 msgid "Supplier delivers to Customer"
 msgstr ""
 
+#. Description of a DocType
+#: buying/doctype/supplier/supplier.json
+msgid "Supplier of Goods or Services."
+msgstr ""
+
 #: buying/doctype/supplier_quotation/supplier_quotation.py:167
 msgid "Supplier {0} not found in {1}"
 msgstr ""
@@ -69950,7 +71169,7 @@
 msgid "Suspended"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:308
+#: selling/page/point_of_sale/pos_payment.js:325
 msgid "Switch Between Payment Modes"
 msgstr ""
 
@@ -70046,6 +71265,7 @@
 #: manufacturing/doctype/bom_update_log/bom_update_log.json
 #: manufacturing/doctype/downtime_entry/downtime_entry.json
 #: manufacturing/doctype/job_card/job_card.json
+#: manufacturing/doctype/plant_floor/plant_floor.json
 #: projects/doctype/activity_type/activity_type.json
 #: projects/doctype/project_template/project_template.json
 #: projects/doctype/project_type/project_type.json
@@ -70133,7 +71353,7 @@
 msgid "System will fetch all the entries if limit value is zero."
 msgstr ""
 
-#: controllers/accounts_controller.py:1673
+#: controllers/accounts_controller.py:1762
 msgid "System will not check over billing since amount for Item {0} in {1} is zero"
 msgstr ""
 
@@ -70144,11 +71364,19 @@
 msgid "System will notify to increase or decrease quantity or amount "
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:229
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:245
+msgid "TCS Amount"
+msgstr ""
+
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:227
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:125
 msgid "TCS Rate %"
 msgstr ""
 
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:245
+msgid "TDS Amount"
+msgstr ""
+
 #. Name of a report
 #: accounts/report/tds_computation_summary/tds_computation_summary.json
 msgid "TDS Computation Summary"
@@ -70158,7 +71386,7 @@
 msgid "TDS Payable"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:229
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:227
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:125
 msgid "TDS Rate %"
 msgstr ""
@@ -70169,7 +71397,12 @@
 msgid "TS-.YYYY.-"
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.js:427
+#. Description of a DocType
+#: stock/doctype/item_website_specification/item_website_specification.json
+msgid "Table for Item that will be shown in Web Site"
+msgstr ""
+
+#: buying/doctype/request_for_quotation/request_for_quotation.js:466
 msgid "Tag"
 msgstr ""
 
@@ -70211,10 +71444,14 @@
 msgid "Tally Migration"
 msgstr ""
 
-#: erpnext_integrations/doctype/tally_migration/tally_migration.js:32
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:34
 msgid "Tally Migration Error"
 msgstr ""
 
+#: templates/form_grid/stock_entry_grid.html:36
+msgid "Target"
+msgstr ""
+
 #. Label of a Data field in DocType 'Quality Goal Objective'
 #: quality_management/doctype/quality_goal_objective/quality_goal_objective.json
 msgctxt "Quality Goal Objective"
@@ -70249,23 +71486,23 @@
 msgid "Target Asset Location"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:248
+#: assets/doctype/asset_capitalization/asset_capitalization.py:254
 msgid "Target Asset {0} cannot be cancelled"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:246
+#: assets/doctype/asset_capitalization/asset_capitalization.py:252
 msgid "Target Asset {0} cannot be submitted"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:242
+#: assets/doctype/asset_capitalization/asset_capitalization.py:248
 msgid "Target Asset {0} cannot be {1}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:252
+#: assets/doctype/asset_capitalization/asset_capitalization.py:258
 msgid "Target Asset {0} does not belong to company {1}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:233
+#: assets/doctype/asset_capitalization/asset_capitalization.py:239
 msgid "Target Asset {0} needs to be composite asset"
 msgstr ""
 
@@ -70345,15 +71582,15 @@
 msgid "Target Item Name"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:203
+#: assets/doctype/asset_capitalization/asset_capitalization.py:209
 msgid "Target Item {0} is neither a Fixed Asset nor a Stock Item"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:207
+#: assets/doctype/asset_capitalization/asset_capitalization.py:213
 msgid "Target Item {0} must be a Fixed Asset item"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:209
+#: assets/doctype/asset_capitalization/asset_capitalization.py:215
 msgid "Target Item {0} must be a Stock Item"
 msgstr ""
 
@@ -70375,9 +71612,9 @@
 msgid "Target Location or To Employee is required while receiving Asset {0}"
 msgstr ""
 
-#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:42
-#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:42
-#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:42
+#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:41
+#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:41
+#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:41
 msgid "Target On"
 msgstr ""
 
@@ -70393,7 +71630,7 @@
 msgid "Target Qty"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:214
+#: assets/doctype/asset_capitalization/asset_capitalization.py:220
 msgid "Target Qty must be a positive number"
 msgstr ""
 
@@ -70403,8 +71640,8 @@
 msgid "Target Serial No"
 msgstr ""
 
-#: stock/dashboard/item_dashboard.js:222
-#: stock/doctype/stock_entry/stock_entry.js:549
+#: stock/dashboard/item_dashboard.js:230
+#: stock/doctype/stock_entry/stock_entry.js:633
 msgid "Target Warehouse"
 msgstr ""
 
@@ -70463,16 +71700,16 @@
 msgid "Target Warehouse Address"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:224
+#: assets/doctype/asset_capitalization/asset_capitalization.py:230
 msgid "Target Warehouse is mandatory for Decapitalization"
 msgstr ""
 
-#: controllers/selling_controller.py:685
+#: controllers/selling_controller.py:709
 msgid "Target Warehouse is set for some items but the customer is not an internal customer."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:623
-#: stock/doctype/stock_entry/stock_entry.py:630
+#: stock/doctype/stock_entry/stock_entry.py:578
+#: stock/doctype/stock_entry/stock_entry.py:585
 msgid "Target warehouse is mandatory for row {0}"
 msgstr ""
 
@@ -70504,8 +71741,8 @@
 #: projects/doctype/task/task.json projects/doctype/task/task_tree.js:17
 #: projects/report/daily_timesheet_summary/daily_timesheet_summary.py:33
 #: projects/report/delayed_tasks_summary/delayed_tasks_summary.py:90
-#: public/js/projects/timer.js:11 support/doctype/issue/issue.js:22
-#: templates/pages/projects.html:56
+#: public/js/projects/timer.js:15 support/doctype/issue/issue.js:27
+#: templates/pages/projects.html:56 templates/pages/timelog_info.html:28
 msgid "Task"
 msgstr ""
 
@@ -70613,6 +71850,12 @@
 msgid "Tasks"
 msgstr ""
 
+#. Label of a Section Break field in DocType 'Transaction Deletion Record'
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+msgctxt "Transaction Deletion Record"
+msgid "Tasks"
+msgstr ""
+
 #: projects/report/project_summary/project_summary.py:62
 msgid "Tasks Completed"
 msgstr ""
@@ -70621,7 +71864,7 @@
 msgid "Tasks Overdue"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:58
+#: accounts/report/account_balance/account_balance.js:60
 msgid "Tax"
 msgstr ""
 
@@ -70661,7 +71904,6 @@
 msgid "Tax Account"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:247
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:137
 msgid "Tax Amount"
 msgstr ""
@@ -70884,11 +72126,11 @@
 msgid "Tax ID"
 msgstr ""
 
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:86
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:85
 #: accounts/report/general_ledger/general_ledger.js:140
 #: accounts/report/purchase_register/purchase_register.py:192
 #: accounts/report/sales_register/sales_register.py:213
-#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:68
+#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:67
 msgid "Tax Id"
 msgstr ""
 
@@ -70923,6 +72165,8 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:32
+#: accounts/report/accounts_receivable/accounts_receivable.html:19
+#: accounts/report/general_ledger/general_ledger.html:14
 msgid "Tax Id: "
 msgstr ""
 
@@ -70931,7 +72175,7 @@
 msgid "Tax Masters"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:119
+#: accounts/doctype/account/account_tree.js:160
 msgid "Tax Rate"
 msgstr ""
 
@@ -71149,7 +72393,7 @@
 msgid "Tax will be withheld only for amount exceeding the cumulative threshold"
 msgstr ""
 
-#: controllers/taxes_and_totals.py:1018
+#: controllers/taxes_and_totals.py:1019
 msgid "Taxable Amount"
 msgstr ""
 
@@ -71304,55 +72548,55 @@
 msgid "Taxes and Charges Added (Company Currency)"
 msgstr ""
 
-#. Label of a Long Text field in DocType 'Delivery Note'
+#. Label of a Text Editor field in DocType 'Delivery Note'
 #: stock/doctype/delivery_note/delivery_note.json
 msgctxt "Delivery Note"
 msgid "Taxes and Charges Calculation"
 msgstr ""
 
-#. Label of a Long Text field in DocType 'POS Invoice'
+#. Label of a Text Editor field in DocType 'POS Invoice'
 #: accounts/doctype/pos_invoice/pos_invoice.json
 msgctxt "POS Invoice"
 msgid "Taxes and Charges Calculation"
 msgstr ""
 
-#. Label of a Long Text field in DocType 'Purchase Invoice'
+#. Label of a Text Editor field in DocType 'Purchase Invoice'
 #: accounts/doctype/purchase_invoice/purchase_invoice.json
 msgctxt "Purchase Invoice"
 msgid "Taxes and Charges Calculation"
 msgstr ""
 
-#. Label of a Long Text field in DocType 'Purchase Order'
+#. Label of a Text Editor field in DocType 'Purchase Order'
 #: buying/doctype/purchase_order/purchase_order.json
 msgctxt "Purchase Order"
 msgid "Taxes and Charges Calculation"
 msgstr ""
 
-#. Label of a Long Text field in DocType 'Purchase Receipt'
+#. Label of a Text Editor field in DocType 'Purchase Receipt'
 #: stock/doctype/purchase_receipt/purchase_receipt.json
 msgctxt "Purchase Receipt"
 msgid "Taxes and Charges Calculation"
 msgstr ""
 
-#. Label of a Long Text field in DocType 'Quotation'
+#. Label of a Text Editor field in DocType 'Quotation'
 #: selling/doctype/quotation/quotation.json
 msgctxt "Quotation"
 msgid "Taxes and Charges Calculation"
 msgstr ""
 
-#. Label of a Long Text field in DocType 'Sales Invoice'
+#. Label of a Text Editor field in DocType 'Sales Invoice'
 #: accounts/doctype/sales_invoice/sales_invoice.json
 msgctxt "Sales Invoice"
 msgid "Taxes and Charges Calculation"
 msgstr ""
 
-#. Label of a Long Text field in DocType 'Sales Order'
+#. Label of a Text Editor field in DocType 'Sales Order'
 #: selling/doctype/sales_order/sales_order.json
 msgctxt "Sales Order"
 msgid "Taxes and Charges Calculation"
 msgstr ""
 
-#. Label of a Long Text field in DocType 'Supplier Quotation'
+#. Label of a Markdown Editor field in DocType 'Supplier Quotation'
 #: buying/doctype/supplier_quotation/supplier_quotation.json
 msgctxt "Supplier Quotation"
 msgid "Taxes and Charges Calculation"
@@ -71428,7 +72672,7 @@
 msgid "Telephony Call Type"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom_list.js:5 stock/doctype/item/item_list.js:12
+#: manufacturing/doctype/bom/bom_list.js:5 stock/doctype/item/item_list.js:20
 msgid "Template"
 msgstr ""
 
@@ -71444,11 +72688,11 @@
 msgid "Template"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:279
+#: manufacturing/doctype/bom/bom.js:292
 msgid "Template Item"
 msgstr ""
 
-#: stock/get_item_details.py:219
+#: stock/get_item_details.py:224
 msgid "Template Item Selected"
 msgstr ""
 
@@ -71488,11 +72732,11 @@
 msgid "Template Warnings"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice_list.js:38
+#: accounts/doctype/purchase_invoice/purchase_invoice_list.js:29
 msgid "Temporarily on Hold"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:59
+#: accounts/report/account_balance/account_balance.js:61
 msgid "Temporary"
 msgstr ""
 
@@ -71759,34 +73003,34 @@
 msgstr ""
 
 #. Name of a DocType
-#: accounts/report/accounts_receivable/accounts_receivable.js:145
-#: accounts/report/accounts_receivable/accounts_receivable.py:1094
-#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:111
+#: accounts/report/accounts_receivable/accounts_receivable.js:148
+#: accounts/report/accounts_receivable/accounts_receivable.py:1102
+#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:114
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:185
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:68
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:67
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.py:159
 #: accounts/report/gross_profit/gross_profit.py:335
-#: accounts/report/inactive_sales_items/inactive_sales_items.js:9
+#: accounts/report/inactive_sales_items/inactive_sales_items.js:8
 #: accounts/report/inactive_sales_items/inactive_sales_items.py:21
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.py:254
 #: accounts/report/sales_register/sales_register.py:207
-#: crm/report/lead_details/lead_details.js:47
+#: crm/report/lead_details/lead_details.js:46
 #: crm/report/lead_details/lead_details.py:34
-#: crm/report/lost_opportunity/lost_opportunity.js:37
+#: crm/report/lost_opportunity/lost_opportunity.js:36
 #: crm/report/lost_opportunity/lost_opportunity.py:58
 #: public/js/sales_trends_filters.js:27
 #: selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py:105
 #: selling/report/inactive_customers/inactive_customers.py:80
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:87
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:42
-#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:48
+#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:46
 #: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.py:39
-#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:60
+#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:59
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:39
-#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:48
+#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:46
 #: selling/report/sales_person_commission_summary/sales_person_commission_summary.py:60
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js:59
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:71
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:72
 #: selling/report/territory_wise_sales/territory_wise_sales.py:22
 #: setup/doctype/territory/territory.json
 msgid "Territory"
@@ -71965,7 +73209,7 @@
 msgid "The 'From Package No.' field must neither be empty nor it's value less than 1."
 msgstr ""
 
-#: buying/doctype/request_for_quotation/request_for_quotation.py:331
+#: buying/doctype/request_for_quotation/request_for_quotation.py:355
 msgid "The Access to Request for Quotation From Portal is Disabled. To Allow Access, Enable it in Portal Settings."
 msgstr ""
 
@@ -72011,7 +73255,7 @@
 msgid "The GL Entries will be cancelled in the background, it can take a few minutes."
 msgstr ""
 
-#: accounts/doctype/period_closing_voucher/period_closing_voucher.py:176
+#: accounts/doctype/period_closing_voucher/period_closing_voucher.py:177
 msgid "The GL Entries will be processed in the background, it can take a few minutes."
 msgstr ""
 
@@ -72019,7 +73263,7 @@
 msgid "The Loyalty Program isn't valid for the selected company"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:747
+#: accounts/doctype/payment_request/payment_request.py:750
 msgid "The Payment Request {0} is already paid, cannot process payment twice"
 msgstr ""
 
@@ -72027,11 +73271,11 @@
 msgid "The Payment Term at row {0} is possibly a duplicate."
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:132
+#: stock/doctype/pick_list/pick_list.py:167
 msgid "The Pick List having Stock Reservation Entries cannot be updated. If you need to make changes, we recommend canceling the existing Stock Reservation Entries before updating the Pick List."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1761
+#: stock/doctype/stock_entry/stock_entry.py:1770
 msgid "The Process Loss Qty has reset as per job cards Process Loss Qty"
 msgstr ""
 
@@ -72040,7 +73284,7 @@
 msgid "The Selling Module is all set up!"
 msgstr ""
 
-#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:16
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:17
 msgid "The Stock Entry of type 'Manufacture' is known as backflush. Raw materials being consumed to manufacture finished goods is known as backflushing. <br><br> When creating Manufacture Entry, raw-material items are backflushed based on BOM of production item. If you want raw-material items to be backflushed based on Material Transfer entry made against that Work Order instead, then you can set it under this field."
 msgstr ""
 
@@ -72063,7 +73307,7 @@
 msgid "The accounts are set by the system automatically but do confirm these defaults"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:144
+#: accounts/doctype/payment_request/payment_request.py:147
 msgid "The amount of {0} set in this payment request is different from the calculated amount of all payment plans: {1}. Make sure this is correct before submitting the document."
 msgstr ""
 
@@ -72071,7 +73315,7 @@
 msgid "The currency of invoice {} ({}) is different from the currency of this dunning ({})."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:812
+#: manufacturing/doctype/work_order/work_order.js:871
 msgid "The default BOM for that item will be fetched by the system. You can also change the BOM."
 msgstr ""
 
@@ -72108,7 +73352,7 @@
 msgid "The following Items, having Putaway Rules, could not be accomodated:"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:414
+#: assets/doctype/asset/depreciation.py:412
 msgid "The following assets have failed to automatically post depreciation entries: {0}"
 msgstr ""
 
@@ -72120,7 +73364,7 @@
 msgid "The following employees are currently still reporting to {0}:"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.py:773
+#: stock/doctype/material_request/material_request.py:785
 msgid "The following {0} were created: {1}"
 msgstr ""
 
@@ -72166,7 +73410,7 @@
 msgid "The parent account {0} does not exists in the uploaded template"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:133
+#: accounts/doctype/payment_request/payment_request.py:136
 msgid "The payment gateway account in plan {0} is different from the payment gateway account in this payment request"
 msgstr ""
 
@@ -72191,15 +73435,15 @@
 msgid "The percentage you are allowed to transfer more against the quantity ordered. For example, if you have ordered 100 units, and your Allowance is 10%, then you are allowed transfer 110 units."
 msgstr ""
 
-#: public/js/utils.js:742
+#: public/js/utils.js:814
 msgid "The reserved stock will be released when you update items. Are you certain you wish to proceed?"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.js:116
+#: stock/doctype/pick_list/pick_list.js:137
 msgid "The reserved stock will be released. Are you certain you wish to proceed?"
 msgstr ""
 
-#: accounts/doctype/account/account.py:198
+#: accounts/doctype/account/account.py:217
 msgid "The root account {0} must be a group"
 msgstr ""
 
@@ -72215,7 +73459,7 @@
 msgid "The selected item cannot have Batch"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:570
+#: assets/doctype/asset/asset.js:643
 msgid "The selected {0} does not contain the selected Asset Item."
 msgstr ""
 
@@ -72239,7 +73483,7 @@
 msgid "The shares don't exist with the {0}"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:461
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:515
 msgid "The stock has been reserved for the following Items and Warehouses, un-reserve the same to {0} the Stock Reconciliation: <br /><br /> {1}"
 msgstr ""
 
@@ -72247,24 +73491,16 @@
 msgid "The sync has started in the background, please check the {0} list for new records."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:155
 #: accounts/doctype/journal_entry/journal_entry.py:162
+#: accounts/doctype/journal_entry/journal_entry.py:169
 msgid "The task has been enqueued as a background job."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:244
-msgid "The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Entry and revert to the Draft stage"
-msgstr ""
-
-#: stock/doctype/stock_entry/stock_entry.py:255
-msgid "The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Entry and revert to the Submitted stage"
-msgstr ""
-
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:754
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:808
 msgid "The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Reconciliation and revert to the Draft stage"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:765
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:819
 msgid "The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Reconciliation and revert to the Submitted stage"
 msgstr ""
 
@@ -72291,31 +73527,31 @@
 msgid "The value {0} is already assigned to an existing Item {1}."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:832
+#: manufacturing/doctype/work_order/work_order.js:899
 msgid "The warehouse where you store finished Items before they are shipped."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:827
+#: manufacturing/doctype/work_order/work_order.js:892
 msgid "The warehouse where you store your raw materials. Each required item can have a separate source warehouse. Group warehouse also can be selected as source warehouse. On submission of the Work Order, the raw materials will be reserved in these warehouses for production usage."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:837
+#: manufacturing/doctype/work_order/work_order.js:904
 msgid "The warehouse where your Items will be transferred when you begin production. Group Warehouse can also be selected as a Work in Progress warehouse."
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:671
+#: manufacturing/doctype/job_card/job_card.py:678
 msgid "The {0} ({1}) must be equal to {2} ({3})"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.py:779
+#: stock/doctype/material_request/material_request.py:791
 msgid "The {0} {1} created successfully"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:762
+#: manufacturing/doctype/job_card/job_card.py:769
 msgid "The {0} {1} is used to calculate the valuation cost for the finished good {2}."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:501
+#: assets/doctype/asset/asset.py:503
 msgid "There are active maintenance or repairs against the asset. You must complete all of them before cancelling the asset."
 msgstr ""
 
@@ -72323,19 +73559,27 @@
 msgid "There are inconsistencies between the rate, no of shares and the amount calculated"
 msgstr ""
 
-#: utilities/bulk_transaction.py:41
+#: accounts/doctype/account/account.py:202
+msgid "There are ledger entries against this account. Changing {0} to non-{1} in live system will cause incorrect output in 'Accounts {2}' report"
+msgstr ""
+
+#: utilities/bulk_transaction.py:45
 msgid "There are no Failed transactions"
 msgstr ""
 
-#: www/book_appointment/index.js:89
+#: setup/demo.py:108
+msgid "There are no active Fiscal Years for which Demo Data can be generated."
+msgstr ""
+
+#: www/book_appointment/index.js:95
 msgid "There are no slots available on this date"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:245
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:273
 msgid "There are only {0} asset created or linked to {1}. Please create or link {2} Assets with respective document."
 msgstr ""
 
-#: stock/doctype/item/item.js:829
+#: stock/doctype/item/item.js:913
 msgid "There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit <a href='https://docs.erpnext.com/docs/v13/user/manual/en/stock/articles/item-valuation-fifo-and-moving-average' target='_blank'>Item Valuation, FIFO and Moving Average.</a>"
 msgstr ""
 
@@ -72343,6 +73587,10 @@
 msgid "There aren't any item variants for the selected item"
 msgstr ""
 
+#: accounts/doctype/loyalty_program/loyalty_program.js:10
+msgid "There can be multiple tiered collection factor based on the total spent. But the conversion factor for redemption will always be same for all the tier."
+msgstr ""
+
 #: accounts/party.py:555
 msgid "There can only be 1 Account per Company in {0} {1}"
 msgstr ""
@@ -72367,36 +73615,36 @@
 msgid "There is nothing to edit."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1279
+#: stock/doctype/stock_entry/stock_entry.py:1288
 msgid "There must be atleast 1 Finished Good in this Stock Entry"
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:135
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:151
 msgid "There was an error creating Bank Account while linking with Plaid."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:205
+#: selling/page/point_of_sale/pos_controller.js:228
 msgid "There was an error saving the document."
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:236
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:252
 msgid "There was an error syncing transactions."
 msgstr ""
 
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:157
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.py:173
 msgid "There was an error updating Bank Account {} while linking with Plaid."
 msgstr ""
 
-#: accounts/doctype/bank/bank.js:113
-#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:109
+#: accounts/doctype/bank/bank.js:115
+#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:114
 msgid "There was an issue connecting to Plaid's authentication server. Check browser console for more information"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_past_order_summary.js:279
+#: selling/page/point_of_sale/pos_past_order_summary.js:289
 msgid "There were errors while sending email. Please try again."
 msgstr ""
 
-#: accounts/utils.py:924
+#: accounts/utils.py:933
 msgid "There were issues unlinking payment entry {0}."
 msgstr ""
 
@@ -72407,11 +73655,11 @@
 msgid "This Account has '0' balance in either Base Currency or Account Currency"
 msgstr ""
 
-#: stock/doctype/item/item.js:88
+#: stock/doctype/item/item.js:99
 msgid "This Item is a Template and cannot be used in transactions. Item attributes will be copied over into the variants unless 'No Copy' is set"
 msgstr ""
 
-#: stock/doctype/item/item.js:118
+#: stock/doctype/item/item.js:158
 msgid "This Item is a Variant of {0} (Template)."
 msgstr ""
 
@@ -72419,11 +73667,11 @@
 msgid "This Month's Summary"
 msgstr ""
 
-#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:26
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:31
 msgid "This Warehouse will be auto-updated in the Target Warehouse field of Work Order."
 msgstr ""
 
-#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:21
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:24
 msgid "This Warehouse will be auto-updated in the Work In Progress Warehouse field of Work Orders."
 msgstr ""
 
@@ -72447,7 +73695,7 @@
 msgid "This document is over limit by {0} {1} for item {4}. Are you making another {3} against the same {2}?"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.js:360
+#: stock/doctype/delivery_note/delivery_note.js:406
 msgid "This field is used to set the 'Customer'."
 msgstr ""
 
@@ -72458,7 +73706,7 @@
 msgid "This filter will be applied to Journal Entry."
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:158
+#: manufacturing/doctype/bom/bom.js:171
 msgid "This is a Template BOM and will be used to make the work order for {0} of the item {1}"
 msgstr ""
 
@@ -72487,7 +73735,7 @@
 msgid "This is a location where scraped materials are stored."
 msgstr ""
 
-#: accounts/doctype/account/account.js:40
+#: accounts/doctype/account/account.js:36
 msgid "This is a root account and cannot be edited."
 msgstr ""
 
@@ -72499,11 +73747,11 @@
 msgid "This is a root department and cannot be edited."
 msgstr ""
 
-#: setup/doctype/item_group/item_group.js:81
+#: setup/doctype/item_group/item_group.js:98
 msgid "This is a root item group and cannot be edited."
 msgstr ""
 
-#: setup/doctype/sales_person/sales_person.js:36
+#: setup/doctype/sales_person/sales_person.js:46
 msgid "This is a root sales person and cannot be edited."
 msgstr ""
 
@@ -72535,19 +73783,19 @@
 msgid "This is based on transactions against this Supplier. See timeline below for details"
 msgstr ""
 
-#: stock/doctype/stock_settings/stock_settings.js:24
+#: stock/doctype/stock_settings/stock_settings.js:26
 msgid "This is considered dangerous from accounting point of view."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:525
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:529
 msgid "This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:822
+#: manufacturing/doctype/work_order/work_order.js:885
 msgid "This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox."
 msgstr ""
 
-#: stock/doctype/item/item.js:819
+#: stock/doctype/item/item.js:901
 msgid "This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked."
 msgstr ""
 
@@ -72555,7 +73803,7 @@
 msgid "This item filter has already been applied for the {0}"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.js:371
+#: stock/doctype/delivery_note/delivery_note.js:419
 msgid "This option can be checked to edit the 'Posting Date' and 'Posting Time' fields."
 msgstr ""
 
@@ -72563,7 +73811,7 @@
 msgid "This schedule was created when Asset {0} was adjusted through Asset Value Adjustment {1}."
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:516
+#: assets/doctype/asset_capitalization/asset_capitalization.py:522
 msgid "This schedule was created when Asset {0} was consumed through Asset Capitalization {1}."
 msgstr ""
 
@@ -72571,27 +73819,27 @@
 msgid "This schedule was created when Asset {0} was repaired through Asset Repair {1}."
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:674
+#: assets/doctype/asset_capitalization/asset_capitalization.py:680
 msgid "This schedule was created when Asset {0} was restored on Asset Capitalization {1}'s cancellation."
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:496
+#: assets/doctype/asset/depreciation.py:494
 msgid "This schedule was created when Asset {0} was restored."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1325
+#: accounts/doctype/sales_invoice/sales_invoice.py:1336
 msgid "This schedule was created when Asset {0} was returned through Sales Invoice {1}."
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:454
+#: assets/doctype/asset/depreciation.py:452
 msgid "This schedule was created when Asset {0} was scrapped."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1336
+#: accounts/doctype/sales_invoice/sales_invoice.py:1347
 msgid "This schedule was created when Asset {0} was sold through Sales Invoice {1}."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1117
+#: assets/doctype/asset/asset.py:1121
 msgid "This schedule was created when Asset {0} was updated after being split into new Asset {1}."
 msgstr ""
 
@@ -72607,7 +73855,7 @@
 msgid "This schedule was created when Asset {0}'s shifts were adjusted through Asset Shift Allocation {1}."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1180
+#: assets/doctype/asset/asset.py:1184
 msgid "This schedule was created when new Asset {0} was split from Asset {1}."
 msgstr ""
 
@@ -72618,10 +73866,15 @@
 msgid "This section allows the user to set the Body and Closing text of the Dunning Letter for the Dunning Type based on language, which can be used in Print."
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.js:365
+#: stock/doctype/delivery_note/delivery_note.js:412
 msgid "This table is used to set details about the 'Item', 'Qty', 'Basic Rate', etc."
 msgstr ""
 
+#. Description of a DocType
+#: stock/doctype/stock_reconciliation/stock_reconciliation.json
+msgid "This tool helps you to update or fix the quantity and valuation of stock in the system. It is typically used to synchronise the system values and what actually exists in your warehouses."
+msgstr ""
+
 #. Description of the 'Abbreviation' (Data) field in DocType 'Item Attribute
 #. Value'
 #: stock/doctype/item_attribute_value/item_attribute_value.json
@@ -72636,7 +73889,7 @@
 msgid "This will restrict user access to other employee records"
 msgstr ""
 
-#: controllers/selling_controller.py:686
+#: controllers/selling_controller.py:710
 msgid "This {} will be treated as material transfer."
 msgstr ""
 
@@ -72862,7 +74115,7 @@
 msgid "Time in mins."
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:654
+#: manufacturing/doctype/job_card/job_card.py:661
 msgid "Time logs are required for {0} {1}"
 msgstr ""
 
@@ -72880,11 +74133,12 @@
 msgid "Timeline"
 msgstr ""
 
+#: manufacturing/doctype/workstation/workstation_job_card.html:31
 #: public/js/projects/timer.js:5
 msgid "Timer"
 msgstr ""
 
-#: public/js/projects/timer.js:142
+#: public/js/projects/timer.js:149
 msgid "Timer exceeded the given hours."
 msgstr ""
 
@@ -72926,11 +74180,11 @@
 msgid "Timesheet for tasks."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:756
+#: accounts/doctype/sales_invoice/sales_invoice.py:773
 msgid "Timesheet {0} is already completed or cancelled"
 msgstr ""
 
-#: projects/doctype/timesheet/timesheet.py:520 templates/pages/projects.html:59
+#: projects/doctype/timesheet/timesheet.py:530 templates/pages/projects.html:59
 msgid "Timesheets"
 msgstr ""
 
@@ -73129,7 +74383,7 @@
 msgid "Title"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.js:967
+#: accounts/doctype/sales_invoice/sales_invoice.js:1043
 #: templates/pages/projects.html:68
 msgid "To"
 msgstr ""
@@ -73152,15 +74406,15 @@
 msgid "To"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:545
+#: selling/page/point_of_sale/pos_payment.js:587
 msgid "To Be Paid"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:22
-#: selling/doctype/sales_order/sales_order_list.js:36
-#: selling/doctype/sales_order/sales_order_list.js:39
-#: stock/doctype/delivery_note/delivery_note_list.js:12
-#: stock/doctype/purchase_receipt/purchase_receipt_list.js:12
+#: buying/doctype/purchase_order/purchase_order_list.js:37
+#: selling/doctype/sales_order/sales_order_list.js:50
+#: selling/doctype/sales_order/sales_order_list.js:52
+#: stock/doctype/delivery_note/delivery_note_list.js:22
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:21
 msgid "To Bill"
 msgstr ""
 
@@ -73201,13 +74455,13 @@
 msgid "To Currency"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:648
-#: accounts/doctype/payment_entry/payment_entry.js:652
+#: accounts/doctype/payment_entry/payment_entry.js:794
+#: accounts/doctype/payment_entry/payment_entry.js:798
 #: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js:23
 #: accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.js:23
 #: accounts/report/bank_clearance_summary/bank_clearance_summary.js:15
-#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:24
-#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:45
+#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:23
+#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js:44
 #: accounts/report/financial_ratios/financial_ratios.js:48
 #: accounts/report/general_ledger/general_ledger.js:30
 #: accounts/report/general_ledger/general_ledger.py:66
@@ -73215,76 +74469,76 @@
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:15
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.js:15
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:22
-#: accounts/report/pos_register/pos_register.js:25
+#: accounts/report/pos_register/pos_register.js:24
 #: accounts/report/pos_register/pos_register.py:114
 #: accounts/report/profitability_analysis/profitability_analysis.js:65
 #: accounts/report/purchase_register/purchase_register.js:15
 #: accounts/report/sales_payment_summary/sales_payment_summary.js:15
 #: accounts/report/sales_register/sales_register.js:15
-#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:24
-#: accounts/report/tax_withholding_details/tax_withholding_details.js:55
-#: accounts/report/tds_computation_summary/tds_computation_summary.js:55
+#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:23
+#: accounts/report/tax_withholding_details/tax_withholding_details.js:54
+#: accounts/report/tds_computation_summary/tds_computation_summary.js:54
 #: accounts/report/trial_balance/trial_balance.js:43
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.js:43
-#: accounts/report/voucher_wise_balance/voucher_wise_balance.js:22
-#: buying/report/procurement_tracker/procurement_tracker.js:34
-#: buying/report/purchase_analytics/purchase_analytics.js:43
-#: buying/report/purchase_order_analysis/purchase_order_analysis.js:26
-#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:26
-#: buying/report/subcontract_order_summary/subcontract_order_summary.js:23
-#: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js:30
-#: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js:30
+#: accounts/report/voucher_wise_balance/voucher_wise_balance.js:21
+#: buying/report/procurement_tracker/procurement_tracker.js:33
+#: buying/report/purchase_analytics/purchase_analytics.js:42
+#: buying/report/purchase_order_analysis/purchase_order_analysis.js:25
+#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:25
+#: buying/report/subcontract_order_summary/subcontract_order_summary.js:22
+#: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js:29
+#: buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js:29
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:24
 #: crm/report/campaign_efficiency/campaign_efficiency.js:13
-#: crm/report/first_response_time_for_opportunity/first_response_time_for_opportunity.js:16
-#: crm/report/lead_conversion_time/lead_conversion_time.js:16
-#: crm/report/lead_details/lead_details.js:24
+#: crm/report/first_response_time_for_opportunity/first_response_time_for_opportunity.js:15
+#: crm/report/lead_conversion_time/lead_conversion_time.js:15
+#: crm/report/lead_details/lead_details.js:23
 #: crm/report/lead_owner_efficiency/lead_owner_efficiency.js:13
-#: crm/report/lost_opportunity/lost_opportunity.js:24
-#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:29
-#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:21
-#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:22
-#: manufacturing/report/downtime_analysis/downtime_analysis.js:15
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:24
-#: manufacturing/report/process_loss_report/process_loss_report.js:37
-#: manufacturing/report/production_analytics/production_analytics.js:24
-#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.js:15
-#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:24
+#: crm/report/lost_opportunity/lost_opportunity.js:23
+#: crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js:27
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js:20
+#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:23
+#: manufacturing/report/downtime_analysis/downtime_analysis.js:16
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:23
+#: manufacturing/report/process_loss_report/process_loss_report.js:36
+#: manufacturing/report/production_analytics/production_analytics.js:23
+#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.js:14
+#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:23
 #: projects/report/daily_timesheet_summary/daily_timesheet_summary.js:14
-#: projects/report/delayed_tasks_summary/delayed_tasks_summary.js:14
-#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:37
-#: public/js/stock_analytics.js:48
-#: regional/report/electronic_invoice_register/electronic_invoice_register.js:16
-#: regional/report/uae_vat_201/uae_vat_201.js:24
-#: regional/report/vat_audit_report/vat_audit_report.js:25
-#: selling/page/sales_funnel/sales_funnel.js:40
+#: projects/report/delayed_tasks_summary/delayed_tasks_summary.js:13
+#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:34
+#: public/js/stock_analytics.js:75
+#: regional/report/electronic_invoice_register/electronic_invoice_register.js:15
+#: regional/report/uae_vat_201/uae_vat_201.js:23
+#: regional/report/vat_audit_report/vat_audit_report.js:24
+#: selling/page/sales_funnel/sales_funnel.js:44
 #: selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.js:31
-#: selling/report/item_wise_sales_history/item_wise_sales_history.js:26
-#: selling/report/sales_analytics/sales_analytics.js:43
-#: selling/report/sales_order_analysis/sales_order_analysis.js:26
-#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:29
-#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:28
-#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:29
+#: selling/report/item_wise_sales_history/item_wise_sales_history.js:25
+#: selling/report/sales_analytics/sales_analytics.js:50
+#: selling/report/sales_order_analysis/sales_order_analysis.js:25
+#: selling/report/sales_partner_commission_summary/sales_partner_commission_summary.js:27
+#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.js:27
+#: selling/report/sales_person_commission_summary/sales_person_commission_summary.js:27
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js:27
 #: stock/report/batch_item_expiry_status/batch_item_expiry_status.js:16
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.js:24
-#: stock/report/cogs_by_item_group/cogs_by_item_group.js:24
-#: stock/report/delayed_item_report/delayed_item_report.js:24
-#: stock/report/delayed_order_report/delayed_order_report.js:24
-#: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.js:28
+#: stock/report/cogs_by_item_group/cogs_by_item_group.js:22
+#: stock/report/delayed_item_report/delayed_item_report.js:23
+#: stock/report/delayed_order_report/delayed_order_report.js:23
+#: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.js:27
 #: stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.js:14
-#: stock/report/reserved_stock/reserved_stock.js:26
+#: stock/report/reserved_stock/reserved_stock.js:23
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:22
-#: stock/report/stock_analytics/stock_analytics.js:70
+#: stock/report/stock_analytics/stock_analytics.js:69
 #: stock/report/stock_balance/stock_balance.js:24
 #: stock/report/stock_ledger/stock_ledger.js:23
 #: stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.js:22
-#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:17
-#: support/report/first_response_time_for_issues/first_response_time_for_issues.js:16
-#: support/report/issue_analytics/issue_analytics.js:32
-#: support/report/issue_summary/issue_summary.js:32
-#: support/report/support_hour_distribution/support_hour_distribution.js:15
-#: utilities/report/youtube_interactions/youtube_interactions.js:15
+#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:16
+#: support/report/first_response_time_for_issues/first_response_time_for_issues.js:15
+#: support/report/issue_analytics/issue_analytics.js:31
+#: support/report/issue_summary/issue_summary.js:31
+#: support/report/support_hour_distribution/support_hour_distribution.js:14
+#: utilities/report/youtube_interactions/youtube_interactions.js:14
 msgid "To Date"
 msgstr ""
 
@@ -73390,7 +74644,7 @@
 msgid "To Date"
 msgstr ""
 
-#: controllers/accounts_controller.py:380
+#: controllers/accounts_controller.py:424
 #: setup/doctype/holiday_list/holiday_list.py:115
 msgid "To Date cannot be before From Date"
 msgstr ""
@@ -73419,8 +74673,8 @@
 msgid "To Datetime"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order_list.js:22
-#: selling/doctype/sales_order/sales_order_list.js:30
+#: selling/doctype/sales_order/sales_order_list.js:32
+#: selling/doctype/sales_order/sales_order_list.js:42
 msgid "To Deliver"
 msgstr ""
 
@@ -73437,7 +74691,7 @@
 msgid "To Deliver"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order_list.js:26
+#: selling/doctype/sales_order/sales_order_list.js:36
 msgid "To Deliver and Bill"
 msgstr ""
 
@@ -73466,7 +74720,7 @@
 msgid "To Doctype"
 msgstr ""
 
-#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:85
+#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:83
 msgid "To Due Date"
 msgstr ""
 
@@ -73476,7 +74730,7 @@
 msgid "To Employee"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:53
+#: accounts/report/budget_variance_report/budget_variance_report.js:51
 msgid "To Fiscal Year"
 msgstr ""
 
@@ -73516,8 +74770,8 @@
 msgid "To Package No."
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:12
-#: selling/doctype/sales_order/sales_order_list.js:14
+#: buying/doctype/purchase_order/purchase_order_list.js:21
+#: selling/doctype/sales_order/sales_order_list.js:25
 msgid "To Pay"
 msgstr ""
 
@@ -73539,8 +74793,8 @@
 msgid "To Payment Date"
 msgstr ""
 
-#: manufacturing/report/job_card_summary/job_card_summary.js:44
-#: manufacturing/report/work_order_summary/work_order_summary.js:30
+#: manufacturing/report/job_card_summary/job_card_summary.js:43
+#: manufacturing/report/work_order_summary/work_order_summary.js:29
 msgid "To Posting Date"
 msgstr ""
 
@@ -73556,7 +74810,7 @@
 msgid "To Range"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:18
+#: buying/doctype/purchase_order/purchase_order_list.js:30
 msgid "To Receive"
 msgstr ""
 
@@ -73566,7 +74820,7 @@
 msgid "To Receive"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:15
+#: buying/doctype/purchase_order/purchase_order_list.js:25
 msgid "To Receive and Bill"
 msgstr ""
 
@@ -73602,6 +74856,7 @@
 
 #: manufacturing/report/downtime_analysis/downtime_analysis.py:92
 #: manufacturing/report/job_card_summary/job_card_summary.py:180
+#: templates/pages/timelog_info.html:34
 msgid "To Time"
 msgstr ""
 
@@ -73683,7 +74938,8 @@
 msgid "To Value"
 msgstr ""
 
-#: stock/doctype/batch/batch.js:83
+#: manufacturing/doctype/plant_floor/plant_floor.js:196
+#: stock/doctype/batch/batch.js:93
 msgid "To Warehouse"
 msgstr ""
 
@@ -73693,11 +74949,11 @@
 msgid "To Warehouse (Optional)"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:735
+#: manufacturing/doctype/bom/bom.js:768
 msgid "To add Operations tick the 'With Operations' checkbox."
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:550
+#: manufacturing/doctype/production_plan/production_plan.js:598
 msgid "To add subcontracted Item's raw materials if include exploded items is disabled."
 msgstr ""
 
@@ -73722,11 +74978,11 @@
 msgid "To be Delivered to Customer"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:521
+#: accounts/doctype/sales_invoice/sales_invoice.py:534
 msgid "To cancel a {} you need to cancel the POS Closing Entry {}."
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:99
+#: accounts/doctype/payment_request/payment_request.py:100
 msgid "To create a Payment Request reference document is required"
 msgstr ""
 
@@ -73738,12 +74994,12 @@
 msgid "To enable Capital Work in Progress Accounting,"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:545
+#: manufacturing/doctype/production_plan/production_plan.js:591
 msgid "To include non-stock items in the material request planning. i.e. Items for which 'Maintain Stock' checkbox is unticked."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1625
-#: controllers/accounts_controller.py:2559
+#: accounts/doctype/payment_entry/payment_entry.py:1644
+#: controllers/accounts_controller.py:2644
 msgid "To include tax in row {0} in Item rate, taxes in rows {1} must also be included"
 msgstr ""
 
@@ -73751,7 +75007,7 @@
 msgid "To merge, following properties must be same for both items"
 msgstr ""
 
-#: accounts/doctype/account/account.py:498
+#: accounts/doctype/account/account.py:517
 msgid "To overrule this, enable '{0}' in company {1}"
 msgstr ""
 
@@ -73759,11 +75015,11 @@
 msgid "To still proceed with editing this Attribute Value, enable {0} in Item Variant Settings."
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:578
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:582
 msgid "To submit the invoice without purchase order please set {0} as {1} in {2}"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:598
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:602
 msgid "To submit the invoice without purchase receipt please set {0} as {1} in {2}"
 msgstr ""
 
@@ -73773,12 +75029,12 @@
 msgstr ""
 
 #: accounts/report/financial_statements.py:576
-#: accounts/report/general_ledger/general_ledger.py:273
+#: accounts/report/general_ledger/general_ledger.py:286
 #: accounts/report/trial_balance/trial_balance.py:278
 msgid "To use a different finance book, please uncheck 'Include Default FB Entries'"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:174
+#: selling/page/point_of_sale/pos_controller.js:192
 msgid "Toggle Recent Orders"
 msgstr ""
 
@@ -73788,16 +75044,20 @@
 msgid "Token Endpoint"
 msgstr ""
 
+#: accounts/report/financial_statements.html:6
+msgid "Too many columns. Export the report and print it using a spreadsheet application."
+msgstr ""
+
 #. Label of a Card Break in the Manufacturing Workspace
 #. Label of a Card Break in the Stock Workspace
-#: buying/doctype/purchase_order/purchase_order.js:485
-#: buying/doctype/purchase_order/purchase_order.js:541
-#: buying/doctype/request_for_quotation/request_for_quotation.js:57
-#: buying/doctype/request_for_quotation/request_for_quotation.js:143
-#: buying/doctype/request_for_quotation/request_for_quotation.js:381
-#: buying/doctype/request_for_quotation/request_for_quotation.js:387
-#: buying/doctype/supplier_quotation/supplier_quotation.js:55
-#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:116
+#: buying/doctype/purchase_order/purchase_order.js:560
+#: buying/doctype/purchase_order/purchase_order.js:636
+#: buying/doctype/request_for_quotation/request_for_quotation.js:66
+#: buying/doctype/request_for_quotation/request_for_quotation.js:153
+#: buying/doctype/request_for_quotation/request_for_quotation.js:411
+#: buying/doctype/request_for_quotation/request_for_quotation.js:420
+#: buying/doctype/supplier_quotation/supplier_quotation.js:58
+#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:121
 #: manufacturing/workspace/manufacturing/manufacturing.json
 #: stock/workspace/stock/stock.json
 msgid "Tools"
@@ -73812,10 +75072,13 @@
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:92
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:277
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:315
+#: accounts/report/accounts_receivable/accounts_receivable.html:74
+#: accounts/report/accounts_receivable/accounts_receivable.html:235
+#: accounts/report/accounts_receivable/accounts_receivable.html:273
 #: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py:233
 #: accounts/report/financial_statements.py:652
 #: accounts/report/general_ledger/general_ledger.py:56
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:636
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:642
 #: accounts/report/profitability_analysis/profitability_analysis.py:93
 #: accounts/report/profitability_analysis/profitability_analysis.py:98
 #: accounts/report/trial_balance/trial_balance.py:344
@@ -74011,6 +75274,11 @@
 msgid "Total Achieved"
 msgstr ""
 
+#. Label of a number card in the Stock Workspace
+#: stock/workspace/stock/stock.json
+msgid "Total Active Items"
+msgstr ""
+
 #: accounts/report/budget_variance_report/budget_variance_report.py:125
 msgid "Total Actual"
 msgstr ""
@@ -74069,7 +75337,7 @@
 msgid "Total Allocations"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:235
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:233
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:131
 #: selling/page/sales_funnel/sales_funnel.py:151
 #: stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py:67
@@ -74113,7 +75381,7 @@
 msgid "Total Amount in Words"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:181
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:209
 msgid "Total Applicable Charges in Purchase Receipt Items table must be same as Total Taxes and Charges"
 msgstr ""
 
@@ -74229,7 +75497,7 @@
 msgid "Total Commission"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:667
+#: manufacturing/doctype/job_card/job_card.py:674
 #: manufacturing/report/job_card_summary/job_card_summary.py:174
 msgid "Total Completed Qty"
 msgstr ""
@@ -74246,11 +75514,11 @@
 msgid "Total Consumed Material Cost (via Stock Entry)"
 msgstr ""
 
-#: setup/doctype/sales_person/sales_person.js:12
+#: setup/doctype/sales_person/sales_person.js:17
 msgid "Total Contribution Amount Against Invoices: {0}"
 msgstr ""
 
-#: setup/doctype/sales_person/sales_person.js:9
+#: setup/doctype/sales_person/sales_person.js:10
 msgid "Total Contribution Amount Against Orders: {0}"
 msgstr ""
 
@@ -74296,7 +75564,7 @@
 msgid "Total Credit"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:225
+#: accounts/doctype/journal_entry/journal_entry.py:241
 msgid "Total Credit/ Debit Amount should be same as linked Journal Entry"
 msgstr ""
 
@@ -74306,7 +75574,7 @@
 msgid "Total Debit"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:802
+#: accounts/doctype/journal_entry/journal_entry.py:829
 msgid "Total Debit must be equal to Total Credit. The difference is {0}"
 msgstr ""
 
@@ -74376,6 +75644,16 @@
 msgid "Total Income This Year"
 msgstr ""
 
+#. Label of a number card in the Accounting Workspace
+#: accounts/workspace/accounting/accounting.json
+msgid "Total Incoming Bills"
+msgstr ""
+
+#. Label of a number card in the Accounting Workspace
+#: accounts/workspace/accounting/accounting.json
+msgid "Total Incoming Payment"
+msgstr ""
+
 #. Label of a Currency field in DocType 'Stock Entry'
 #: stock/doctype/stock_entry/stock_entry.json
 msgctxt "Stock Entry"
@@ -74389,6 +75667,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:196
+#: accounts/report/accounts_receivable/accounts_receivable.html:160
 msgid "Total Invoiced Amount"
 msgstr ""
 
@@ -74396,6 +75675,10 @@
 msgid "Total Issues"
 msgstr ""
 
+#: selling/page/point_of_sale/pos_item_cart.js:92
+msgid "Total Items"
+msgstr ""
+
 #: accounts/report/balance_sheet/balance_sheet.py:208
 msgid "Total Liability"
 msgstr ""
@@ -74504,7 +75787,7 @@
 msgid "Total Order Value"
 msgstr ""
 
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:629
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:635
 msgid "Total Other Charges"
 msgstr ""
 
@@ -74512,13 +75795,25 @@
 msgid "Total Outgoing"
 msgstr ""
 
+#. Label of a number card in the Accounting Workspace
+#: accounts/workspace/accounting/accounting.json
+msgid "Total Outgoing Bills"
+msgstr ""
+
+#. Label of a number card in the Accounting Workspace
+#: accounts/workspace/accounting/accounting.json
+msgid "Total Outgoing Payment"
+msgstr ""
+
 #. Label of a Currency field in DocType 'Stock Entry'
 #: stock/doctype/stock_entry/stock_entry.json
 msgctxt "Stock Entry"
 msgid "Total Outgoing Value (Consumption)"
 msgstr ""
 
+#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool_dashboard.html:9
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:97
+#: accounts/report/accounts_receivable/accounts_receivable.html:79
 msgid "Total Outstanding"
 msgstr ""
 
@@ -74529,18 +75824,20 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:205
+#: accounts/report/accounts_receivable/accounts_receivable.html:163
 msgid "Total Outstanding Amount"
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:197
+#: accounts/report/accounts_receivable/accounts_receivable.html:161
 msgid "Total Paid Amount"
 msgstr ""
 
-#: controllers/accounts_controller.py:2266
+#: controllers/accounts_controller.py:2358
 msgid "Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:112
+#: accounts/doctype/payment_request/payment_request.py:115
 msgid "Total Payment Request amount cannot be greater than {0} amount"
 msgstr ""
 
@@ -74572,7 +75869,7 @@
 msgid "Total Purchase Cost (via Purchase Invoice)"
 msgstr ""
 
-#: projects/doctype/project/project.js:107
+#: projects/doctype/project/project.js:131
 msgid "Total Purchase Cost has been updated"
 msgstr ""
 
@@ -74588,6 +75885,8 @@
 msgstr ""
 
 #: accounts/doctype/pos_closing_entry/closing_voucher_details.html:23
+#: selling/page/point_of_sale/pos_item_cart.js:520
+#: selling/page/point_of_sale/pos_item_cart.js:524
 msgid "Total Quantity"
 msgstr ""
 
@@ -74698,6 +75997,11 @@
 msgid "Total Stock Summary"
 msgstr ""
 
+#. Label of a number card in the Stock Workspace
+#: stock/workspace/stock/stock.json
+msgid "Total Stock Value"
+msgstr ""
+
 #. Label of a Float field in DocType 'Purchase Order Item Supplied'
 #: buying/doctype/purchase_order_item_supplied/purchase_order_item_supplied.json
 msgctxt "Purchase Order Item Supplied"
@@ -74720,7 +76024,7 @@
 msgid "Total Tasks"
 msgstr ""
 
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:622
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:628
 #: accounts/report/purchase_register/purchase_register.py:263
 msgid "Total Tax"
 msgstr ""
@@ -74861,7 +76165,7 @@
 msgid "Total Time in Mins"
 msgstr ""
 
-#: public/js/utils.js:105
+#: public/js/utils.js:129
 msgid "Total Unpaid: {0}"
 msgstr ""
 
@@ -74892,6 +76196,11 @@
 msgid "Total Views"
 msgstr ""
 
+#. Label of a number card in the Stock Workspace
+#: stock/workspace/stock/stock.json
+msgid "Total Warehouses"
+msgstr ""
+
 #. Label of a Float field in DocType 'Delivery Note Item'
 #: stock/doctype/delivery_note_item/delivery_note_item.json
 msgctxt "Delivery Note Item"
@@ -74952,20 +76261,34 @@
 msgid "Total Working Hours"
 msgstr ""
 
-#: controllers/accounts_controller.py:1838
+#. Label of a Float field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Total Working Hours"
+msgstr ""
+
+#: controllers/accounts_controller.py:1930
 msgid "Total advance ({0}) against Order {1} cannot be greater than the Grand Total ({2})"
 msgstr ""
 
-#: controllers/selling_controller.py:186
+#: controllers/selling_controller.py:187
 msgid "Total allocated percentage for sales team should be 100"
 msgstr ""
 
+#: manufacturing/doctype/workstation/workstation.py:229
+msgid "Total completed quantity: {0}"
+msgstr ""
+
 #: selling/doctype/customer/customer.py:157
 msgid "Total contribution percentage should be equal to 100"
 msgstr ""
 
+#: projects/doctype/project/project_dashboard.html:2
+msgid "Total hours: {0}"
+msgstr ""
+
 #: accounts/doctype/pos_invoice/pos_invoice.py:444
-#: accounts/doctype/sales_invoice/sales_invoice.py:505
+#: accounts/doctype/sales_invoice/sales_invoice.py:518
 msgid "Total payments amount can't be greater than {}"
 msgstr ""
 
@@ -74980,7 +76303,7 @@
 msgid "Total {0} ({1})"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:162
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:190
 msgid "Total {0} for all items is zero, may be you should change 'Distribute Charges Based On'"
 msgstr ""
 
@@ -74993,6 +76316,7 @@
 msgstr ""
 
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.py:88
+#: selling/page/point_of_sale/pos_past_order_summary.js:18
 msgid "Totals"
 msgstr ""
 
@@ -75077,6 +76401,11 @@
 msgid "Track Service Level Agreement"
 msgstr ""
 
+#. Description of a DocType
+#: accounts/doctype/cost_center/cost_center.json
+msgid "Track separate Income and Expense for product verticals or divisions."
+msgstr ""
+
 #. Label of a Select field in DocType 'Shipment'
 #: stock/doctype/shipment/shipment.json
 msgctxt "Shipment"
@@ -75095,7 +76424,7 @@
 msgid "Tracking URL"
 msgstr ""
 
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:435
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:434
 #: manufacturing/doctype/workstation/workstation_dashboard.py:10
 msgid "Transaction"
 msgstr ""
@@ -75137,7 +76466,7 @@
 msgstr ""
 
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:66
-#: selling/report/territory_wise_sales/territory_wise_sales.js:11
+#: selling/report/territory_wise_sales/territory_wise_sales.js:9
 msgid "Transaction Date"
 msgstr ""
 
@@ -75177,12 +76506,21 @@
 msgid "Transaction Date"
 msgstr ""
 
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.py:490
+msgid "Transaction Deletion Document: {0} is running for this Company. {1}"
+msgstr ""
+
 #. Name of a DocType
 #: setup/doctype/transaction_deletion_record/transaction_deletion_record.json
 msgid "Transaction Deletion Record"
 msgstr ""
 
 #. Name of a DocType
+#: accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.json
+msgid "Transaction Deletion Record Details"
+msgstr ""
+
+#. Name of a DocType
 #: setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.json
 msgid "Transaction Deletion Record Item"
 msgstr ""
@@ -75223,7 +76561,7 @@
 msgid "Transaction Settings"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:258
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:256
 msgid "Transaction Type"
 msgstr ""
 
@@ -75233,7 +76571,7 @@
 msgid "Transaction Type"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:122
+#: accounts/doctype/payment_request/payment_request.py:125
 msgid "Transaction currency must be same as Payment Gateway currency"
 msgstr ""
 
@@ -75241,15 +76579,15 @@
 msgid "Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2}"
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:647
+#: manufacturing/doctype/job_card/job_card.py:654
 msgid "Transaction not allowed against stopped Work Order {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1112
+#: accounts/doctype/payment_entry/payment_entry.py:1121
 msgid "Transaction reference no {0} dated {1}"
 msgstr ""
 
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:435
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:434
 #: accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template_dashboard.py:12
 #: accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template_dashboard.py:13
 #: manufacturing/doctype/job_card/job_card_dashboard.py:9
@@ -75264,12 +76602,12 @@
 msgid "Transactions Annual History"
 msgstr ""
 
-#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:107
+#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:117
 msgid "Transactions against the Company already exist! Chart of Accounts can only be imported for a Company with no transactions."
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:314
-#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:190
+#: buying/doctype/purchase_order/purchase_order.js:364
+#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:208
 msgid "Transfer"
 msgstr ""
 
@@ -75298,11 +76636,11 @@
 msgid "Transfer"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:83
+#: assets/doctype/asset/asset.js:84
 msgid "Transfer Asset"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:318
+#: manufacturing/doctype/production_plan/production_plan.js:345
 msgid "Transfer From Warehouses"
 msgstr ""
 
@@ -75318,7 +76656,7 @@
 msgid "Transfer Material Against"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:313
+#: manufacturing/doctype/production_plan/production_plan.js:340
 msgid "Transfer Materials For Warehouse {0}"
 msgstr ""
 
@@ -75338,7 +76676,7 @@
 msgid "Transfer Type"
 msgstr ""
 
-#: stock/doctype/material_request/material_request_list.js:27
+#: stock/doctype/material_request/material_request_list.js:31
 msgid "Transferred"
 msgstr ""
 
@@ -75348,6 +76686,7 @@
 msgid "Transferred"
 msgstr ""
 
+#: manufacturing/doctype/workstation/workstation_job_card.html:96
 #: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:131
 msgid "Transferred Qty"
 msgstr ""
@@ -75384,7 +76723,7 @@
 msgid "Transit"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.js:371
+#: stock/doctype/stock_entry/stock_entry.js:425
 msgid "Transit Entry"
 msgstr ""
 
@@ -75465,8 +76804,8 @@
 msgid "Tree Details"
 msgstr ""
 
-#: buying/report/purchase_analytics/purchase_analytics.js:9
-#: selling/report/sales_analytics/sales_analytics.js:9
+#: buying/report/purchase_analytics/purchase_analytics.js:8
+#: selling/report/sales_analytics/sales_analytics.js:8
 msgid "Tree Type"
 msgstr ""
 
@@ -75746,10 +77085,11 @@
 #: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:76
 #: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:209
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:214
+#: manufacturing/doctype/workstation/workstation_job_card.html:93
 #: manufacturing/report/bom_explorer/bom_explorer.py:58
 #: manufacturing/report/bom_operations_time/bom_operations_time.py:110
-#: public/js/stock_analytics.js:63 public/js/utils.js:632
-#: selling/doctype/sales_order/sales_order.js:999
+#: public/js/stock_analytics.js:94 public/js/utils.js:693
+#: selling/doctype/sales_order/sales_order.js:1161
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:43
 #: selling/report/sales_analytics/sales_analytics.py:76
 #: setup/doctype/uom/uom.json
@@ -76080,7 +77420,7 @@
 msgid "UOM Conversion Factor"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:1248
+#: manufacturing/doctype/production_plan/production_plan.py:1270
 msgid "UOM Conversion factor ({0} -> {1}) not found for item: {2}"
 msgstr ""
 
@@ -76094,7 +77434,7 @@
 msgid "UOM Name"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2773
+#: stock/doctype/stock_entry/stock_entry.py:2809
 msgid "UOM conversion factor required for UOM: {0} in Item: {1}"
 msgstr ""
 
@@ -76138,7 +77478,7 @@
 msgid "URL can only be a string"
 msgstr ""
 
-#: public/js/utils/unreconcile.js:20
+#: public/js/utils/unreconcile.js:24
 msgid "UnReconcile"
 msgstr ""
 
@@ -76150,15 +77490,15 @@
 msgid "Unable to find score starting at {0}. You need to have standing scores covering 0 to 100"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:603
-msgid "Unable to find the time slot in the next {0} days for the operation {1}."
+#: manufacturing/doctype/work_order/work_order.py:613
+msgid "Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}."
 msgstr ""
 
 #: buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.py:97
 msgid "Unable to find variable:"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/data_table_manager.js:79
+#: public/js/bank_reconciliation_tool/data_table_manager.js:74
 msgid "Unallocated Amount"
 msgstr ""
 
@@ -76178,7 +77518,7 @@
 msgid "Unassigned Qty"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:95
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:115
 msgid "Unblock Invoice"
 msgstr ""
 
@@ -76227,7 +77567,7 @@
 msgid "Under Warranty"
 msgstr ""
 
-#: manufacturing/doctype/workstation/workstation.js:52
+#: manufacturing/doctype/workstation/workstation.js:78
 msgid "Under Working Hours table, you can add start and end times for a Workstation. For example, a Workstation may be active from 9 am to 1 pm, then 2 pm to 5 pm. You can also specify the working hours based on shifts. While scheduling a Work Order, the system will check for the availability of the Workstation based on the working hours specified."
 msgstr ""
 
@@ -76258,11 +77598,12 @@
 msgid "Units of Measure"
 msgstr ""
 
-#: buying/doctype/supplier_scorecard/supplier_scorecard_list.js:12
+#: buying/doctype/supplier_scorecard/supplier_scorecard_list.js:10
+#: projects/doctype/project/project_dashboard.html:7
 msgid "Unknown"
 msgstr ""
 
-#: public/js/call_popup/call_popup.js:109
+#: public/js/call_popup/call_popup.js:110
 msgid "Unknown Caller"
 msgstr ""
 
@@ -76278,7 +77619,7 @@
 msgid "Unlink Payment on Cancellation of Invoice"
 msgstr ""
 
-#: accounts/doctype/bank_account/bank_account.js:34
+#: accounts/doctype/bank_account/bank_account.js:33
 msgid "Unlink external integrations"
 msgstr ""
 
@@ -76288,7 +77629,7 @@
 msgid "Unlinked"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:258
+#: accounts/doctype/sales_invoice/sales_invoice.py:263
 #: accounts/doctype/subscription/subscription_list.js:12
 msgid "Unpaid"
 msgstr ""
@@ -76422,20 +77763,24 @@
 msgid "Unreconciled Entries"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:74
-#: stock/doctype/pick_list/pick_list.js:114
+#: selling/doctype/sales_order/sales_order.js:90
+#: stock/doctype/pick_list/pick_list.js:134
 msgid "Unreserve"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:418
+#: selling/doctype/sales_order/sales_order.js:448
 msgid "Unreserve Stock"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:430
-#: stock/doctype/pick_list/pick_list.js:252
+#: selling/doctype/sales_order/sales_order.js:460
+#: stock/doctype/pick_list/pick_list.js:286
 msgid "Unreserving Stock..."
 msgstr ""
 
+#: erpnext_integrations/doctype/tally_migration/tally_migration.js:123
+msgid "Unresolve"
+msgstr ""
+
 #: accounts/doctype/dunning/dunning_list.js:6
 msgid "Unresolved"
 msgstr ""
@@ -76487,6 +77832,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:37
+#: accounts/report/accounts_receivable/accounts_receivable.html:24
 msgid "Until"
 msgstr ""
 
@@ -76514,22 +77860,23 @@
 msgid "Upcoming Calendar Events "
 msgstr ""
 
-#: accounts/doctype/account/account.js:210
-#: accounts/doctype/cost_center/cost_center.js:102
-#: public/js/bom_configurator/bom_configurator.bundle.js:367
-#: public/js/utils.js:551 public/js/utils.js:767
-#: public/js/utils/barcode_scanner.js:176
+#: accounts/doctype/account/account.js:205
+#: accounts/doctype/cost_center/cost_center.js:107
+#: public/js/bom_configurator/bom_configurator.bundle.js:406
+#: public/js/utils.js:609 public/js/utils.js:841
+#: public/js/utils/barcode_scanner.js:183
 #: public/js/utils/serial_no_batch_selector.js:17
-#: public/js/utils/serial_no_batch_selector.js:180
-#: stock/doctype/stock_reconciliation/stock_reconciliation.js:160
+#: public/js/utils/serial_no_batch_selector.js:182
+#: stock/doctype/stock_reconciliation/stock_reconciliation.js:164
+#: templates/pages/task_info.html:22
 msgid "Update"
 msgstr ""
 
-#: accounts/doctype/account/account.js:58
+#: accounts/doctype/account/account.js:53
 msgid "Update Account Name / Number"
 msgstr ""
 
-#: accounts/doctype/account/account.js:158
+#: accounts/doctype/account/account.js:159
 msgid "Update Account Number / Name"
 msgstr ""
 
@@ -76575,7 +77922,7 @@
 msgid "Update Auto Repeat Reference"
 msgstr ""
 
-#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:30
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:35
 msgid "Update BOM Cost Automatically"
 msgstr ""
 
@@ -76604,6 +77951,18 @@
 msgid "Update Billed Amount in Delivery Note"
 msgstr ""
 
+#. Label of a Check field in DocType 'Purchase Invoice'
+#: accounts/doctype/purchase_invoice/purchase_invoice.json
+msgctxt "Purchase Invoice"
+msgid "Update Billed Amount in Purchase Order"
+msgstr ""
+
+#. Label of a Check field in DocType 'Purchase Invoice'
+#: accounts/doctype/purchase_invoice/purchase_invoice.json
+msgctxt "Purchase Invoice"
+msgid "Update Billed Amount in Purchase Receipt"
+msgstr ""
+
 #. Label of a Check field in DocType 'POS Invoice'
 #: accounts/doctype/pos_invoice/pos_invoice.json
 msgctxt "POS Invoice"
@@ -76616,9 +77975,9 @@
 msgid "Update Billed Amount in Sales Order"
 msgstr ""
 
-#: accounts/doctype/bank_clearance/bank_clearance.js:57
-#: accounts/doctype/bank_clearance/bank_clearance.js:71
-#: accounts/doctype/bank_clearance/bank_clearance.js:76
+#: accounts/doctype/bank_clearance/bank_clearance.js:53
+#: accounts/doctype/bank_clearance/bank_clearance.js:67
+#: accounts/doctype/bank_clearance/bank_clearance.js:72
 msgid "Update Clearance Date"
 msgstr ""
 
@@ -76628,7 +77987,7 @@
 msgid "Update Consumed Material Cost In Project"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:100
+#: manufacturing/doctype/bom/bom.js:99
 msgid "Update Cost"
 msgstr ""
 
@@ -76644,12 +78003,12 @@
 msgid "Update Cost"
 msgstr ""
 
-#: accounts/doctype/cost_center/cost_center.js:21
-#: accounts/doctype/cost_center/cost_center.js:50
+#: accounts/doctype/cost_center/cost_center.js:19
+#: accounts/doctype/cost_center/cost_center.js:52
 msgid "Update Cost Center Name / Number"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.js:99
+#: stock/doctype/pick_list/pick_list.js:104
 msgid "Update Current Stock"
 msgstr ""
 
@@ -76666,12 +78025,24 @@
 msgid "Update Existing Records"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:275 public/js/utils.js:721
-#: selling/doctype/sales_order/sales_order.js:56
+#: buying/doctype/purchase_order/purchase_order.js:301 public/js/utils.js:793
+#: selling/doctype/sales_order/sales_order.js:63
 msgid "Update Items"
 msgstr ""
 
-#: accounts/doctype/cheque_print_template/cheque_print_template.js:9
+#. Label of a Check field in DocType 'Purchase Invoice'
+#: accounts/doctype/purchase_invoice/purchase_invoice.json
+msgctxt "Purchase Invoice"
+msgid "Update Outstanding for Self"
+msgstr ""
+
+#. Label of a Check field in DocType 'Sales Invoice'
+#: accounts/doctype/sales_invoice/sales_invoice.json
+msgctxt "Sales Invoice"
+msgid "Update Outstanding for Self"
+msgstr ""
+
+#: accounts/doctype/cheque_print_template/cheque_print_template.js:10
 msgid "Update Print Format"
 msgstr ""
 
@@ -76681,7 +78052,7 @@
 msgid "Update Rate and Availability"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.js:475
+#: buying/doctype/purchase_order/purchase_order.js:549
 msgid "Update Rate as per Last Purchase"
 msgstr ""
 
@@ -76714,7 +78085,7 @@
 msgid "Update Stock Opening Balance"
 msgstr ""
 
-#: projects/doctype/project/project.js:71
+#: projects/doctype/project/project.js:82
 msgid "Update Total Purchase Cost"
 msgstr ""
 
@@ -76736,7 +78107,7 @@
 msgid "Update latest price in all BOMs"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:338
+#: assets/doctype/asset/asset.py:340
 msgid "Update stock must be enabled for the purchase invoice {0}"
 msgstr ""
 
@@ -76756,19 +78127,19 @@
 msgid "Updating Opening Balances"
 msgstr ""
 
-#: stock/doctype/item/item.py:1348
+#: stock/doctype/item/item.py:1349
 msgid "Updating Variants..."
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:788
+#: manufacturing/doctype/work_order/work_order.js:847
 msgid "Updating Work Order status"
 msgstr ""
 
-#: accounts/doctype/bank_statement_import/bank_statement_import.js:48
+#: accounts/doctype/bank_statement_import/bank_statement_import.js:46
 msgid "Updating {0} of {1}, {2}"
 msgstr ""
 
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js:44
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js:43
 msgid "Upload Bank Statement"
 msgstr ""
 
@@ -76789,7 +78160,7 @@
 msgid "Urgent"
 msgstr ""
 
-#: accounts/doctype/repost_payment_ledger/repost_payment_ledger.js:37
+#: accounts/doctype/repost_payment_ledger/repost_payment_ledger.js:36
 msgid "Use 'Repost in background' button to trigger background job. Job can only be triggered when document is in Queued or Failed status."
 msgstr ""
 
@@ -76825,6 +78196,12 @@
 msgid "Use Google Maps Direction API to optimize route"
 msgstr ""
 
+#. Label of a Check field in DocType 'Currency Exchange Settings'
+#: accounts/doctype/currency_exchange_settings/currency_exchange_settings.json
+msgctxt "Currency Exchange Settings"
+msgid "Use HTTP Protocol"
+msgstr ""
+
 #. Label of a Check field in DocType 'Stock Reposting Settings'
 #: stock/doctype/stock_reposting_settings/stock_reposting_settings.json
 msgctxt "Stock Reposting Settings"
@@ -76843,6 +78220,84 @@
 msgid "Use Multi-Level BOM"
 msgstr ""
 
+#. Label of a Check field in DocType 'Stock Settings'
+#: stock/doctype/stock_settings/stock_settings.json
+msgctxt "Stock Settings"
+msgid "Use Serial / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Asset Capitalization Stock Item'
+#: assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json
+msgctxt "Asset Capitalization Stock Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Delivery Note Item'
+#: stock/doctype/delivery_note_item/delivery_note_item.json
+msgctxt "Delivery Note Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'POS Invoice Item'
+#: accounts/doctype/pos_invoice_item/pos_invoice_item.json
+msgctxt "POS Invoice Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Packed Item'
+#: stock/doctype/packed_item/packed_item.json
+msgctxt "Packed Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Pick List Item'
+#: stock/doctype/pick_list_item/pick_list_item.json
+msgctxt "Pick List Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Purchase Invoice Item'
+#: accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
+msgctxt "Purchase Invoice Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Purchase Receipt Item'
+#: stock/doctype/purchase_receipt_item/purchase_receipt_item.json
+msgctxt "Purchase Receipt Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Sales Invoice Item'
+#: accounts/doctype/sales_invoice_item/sales_invoice_item.json
+msgctxt "Sales Invoice Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Stock Entry Detail'
+#: stock/doctype/stock_entry_detail/stock_entry_detail.json
+msgctxt "Stock Entry Detail"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Stock Reconciliation Item'
+#: stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
+msgctxt "Stock Reconciliation Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Subcontracting Receipt Item'
+#: subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json
+msgctxt "Subcontracting Receipt Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
+#. Label of a Check field in DocType 'Subcontracting Receipt Supplied Item'
+#: subcontracting/doctype/subcontracting_receipt_supplied_item/subcontracting_receipt_supplied_item.json
+msgctxt "Subcontracting Receipt Supplied Item"
+msgid "Use Serial No / Batch Fields"
+msgstr ""
+
 #. Label of a Check field in DocType 'Buying Settings'
 #: buying/doctype/buying_settings/buying_settings.json
 msgctxt "Buying Settings"
@@ -76955,7 +78410,7 @@
 msgid "User ID not set for Employee {0}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:544
+#: accounts/doctype/journal_entry/journal_entry.js:607
 msgid "User Remark"
 msgstr ""
 
@@ -77074,10 +78529,12 @@
 msgid "VAT Audit Report"
 msgstr ""
 
+#: regional/report/uae_vat_201/uae_vat_201.html:47
 #: regional/report/uae_vat_201/uae_vat_201.py:115
 msgid "VAT on Expenses and All Other Inputs"
 msgstr ""
 
+#: regional/report/uae_vat_201/uae_vat_201.html:15
 #: regional/report/uae_vat_201/uae_vat_201.py:45
 msgid "VAT on Sales and All Other Outputs"
 msgstr ""
@@ -77130,10 +78587,6 @@
 msgid "Valid From"
 msgstr ""
 
-#: stock/doctype/item_price/item_price.py:62
-msgid "Valid From Date must be lesser than Valid Up To Date."
-msgstr ""
-
 #: regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py:45
 msgid "Valid From date not in Fiscal Year {0}"
 msgstr ""
@@ -77143,7 +78596,7 @@
 msgstr ""
 
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:265
-#: templates/pages/order.html:47
+#: templates/pages/order.html:59
 msgid "Valid Till"
 msgstr ""
 
@@ -77287,7 +78740,7 @@
 msgstr ""
 
 #: stock/report/stock_balance/stock_balance.js:76
-#: stock/report/stock_ledger/stock_ledger.js:88
+#: stock/report/stock_ledger/stock_ledger.js:96
 msgid "Valuation Field Type"
 msgstr ""
 
@@ -77304,8 +78757,8 @@
 #: accounts/report/gross_profit/gross_profit.py:266
 #: stock/report/item_prices/item_prices.py:57
 #: stock/report/serial_no_ledger/serial_no_ledger.py:64
-#: stock/report/stock_balance/stock_balance.py:449
-#: stock/report/stock_ledger/stock_ledger.py:207
+#: stock/report/stock_balance/stock_balance.py:457
+#: stock/report/stock_ledger/stock_ledger.py:280
 msgid "Valuation Rate"
 msgstr ""
 
@@ -77370,6 +78823,12 @@
 msgid "Valuation Rate"
 msgstr ""
 
+#. Label of a Float field in DocType 'Serial and Batch Entry'
+#: stock/doctype/serial_and_batch_entry/serial_and_batch_entry.json
+msgctxt "Serial and Batch Entry"
+msgid "Valuation Rate"
+msgstr ""
+
 #. Label of a Currency field in DocType 'Stock Entry Detail'
 #: stock/doctype/stock_entry_detail/stock_entry_detail.json
 msgctxt "Stock Entry Detail"
@@ -77392,11 +78851,11 @@
 msgid "Valuation Rate (In / Out)"
 msgstr ""
 
-#: stock/stock_ledger.py:1688
+#: stock/stock_ledger.py:1708
 msgid "Valuation Rate Missing"
 msgstr ""
 
-#: stock/stock_ledger.py:1666
+#: stock/stock_ledger.py:1686
 msgid "Valuation Rate for the Item {0}, is required to do accounting entries for {1} {2}."
 msgstr ""
 
@@ -77404,7 +78863,7 @@
 msgid "Valuation Rate is mandatory if Opening Stock entered"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:514
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:568
 msgid "Valuation Rate required for Item {0} at row {1}"
 msgstr ""
 
@@ -77415,12 +78874,12 @@
 msgid "Valuation and Total"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:731
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:785
 msgid "Valuation rate for customer provided items has been set to zero."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1649
-#: controllers/accounts_controller.py:2583
+#: accounts/doctype/payment_entry/payment_entry.py:1668
+#: controllers/accounts_controller.py:2668
 msgid "Valuation type charges can not be marked as Inclusive"
 msgstr ""
 
@@ -77428,10 +78887,10 @@
 msgid "Valuation type charges can not marked as Inclusive"
 msgstr ""
 
-#: buying/report/purchase_analytics/purchase_analytics.js:28
-#: public/js/stock_analytics.js:37
-#: selling/report/sales_analytics/sales_analytics.js:28
-#: stock/report/stock_analytics/stock_analytics.js:27
+#: buying/report/purchase_analytics/purchase_analytics.js:27
+#: public/js/stock_analytics.js:49
+#: selling/report/sales_analytics/sales_analytics.js:35
+#: stock/report/stock_analytics/stock_analytics.js:26
 #: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py:95
 msgid "Value"
 msgstr ""
@@ -77494,7 +78953,7 @@
 msgid "Value Based Inspection"
 msgstr ""
 
-#: stock/report/stock_ledger/stock_ledger.py:224
+#: stock/report/stock_ledger/stock_ledger.py:297
 msgid "Value Change"
 msgstr ""
 
@@ -77504,9 +78963,9 @@
 msgid "Value Details"
 msgstr ""
 
-#: buying/report/purchase_analytics/purchase_analytics.js:25
-#: selling/report/sales_analytics/sales_analytics.js:25
-#: stock/report/stock_analytics/stock_analytics.js:24
+#: buying/report/purchase_analytics/purchase_analytics.js:24
+#: selling/report/sales_analytics/sales_analytics.js:32
+#: stock/report/stock_analytics/stock_analytics.js:23
 msgid "Value Or Qty"
 msgstr ""
 
@@ -77528,11 +78987,11 @@
 msgid "Value of goods cannot be 0"
 msgstr ""
 
-#: public/js/stock_analytics.js:36
+#: public/js/stock_analytics.js:46
 msgid "Value or Qty"
 msgstr ""
 
-#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:120
+#: manufacturing/page/bom_comparison_tool/bom_comparison_tool.js:121
 msgid "Values Changed"
 msgstr ""
 
@@ -77563,7 +79022,7 @@
 msgid "Variance ({})"
 msgstr ""
 
-#: stock/doctype/item/item.js:110 stock/doctype/item/item_list.js:14
+#: stock/doctype/item/item.js:146 stock/doctype/item/item_list.js:22
 #: stock/report/item_variant_details/item_variant_details.py:74
 msgid "Variant"
 msgstr ""
@@ -77572,13 +79031,17 @@
 msgid "Variant Attribute Error"
 msgstr ""
 
+#: public/js/templates/item_quick_entry.html:1
+msgid "Variant Attributes"
+msgstr ""
+
 #. Label of a Table field in DocType 'Item'
 #: stock/doctype/item/item.json
 msgctxt "Item"
 msgid "Variant Attributes"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:124
+#: manufacturing/doctype/bom/bom.js:128
 msgid "Variant BOM"
 msgstr ""
 
@@ -77592,7 +79055,7 @@
 msgid "Variant Based On cannot be changed"
 msgstr ""
 
-#: stock/doctype/item/item.js:98
+#: stock/doctype/item/item.js:122
 msgid "Variant Details Report"
 msgstr ""
 
@@ -77601,7 +79064,7 @@
 msgid "Variant Field"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:219 manufacturing/doctype/bom/bom.js:287
+#: manufacturing/doctype/bom/bom.js:238 manufacturing/doctype/bom/bom.js:300
 msgid "Variant Item"
 msgstr ""
 
@@ -77621,7 +79084,7 @@
 msgid "Variant Of"
 msgstr ""
 
-#: stock/doctype/item/item.js:543
+#: stock/doctype/item/item.js:610
 msgid "Variant creation has been queued."
 msgstr ""
 
@@ -77720,37 +79183,37 @@
 msgid "Video Settings"
 msgstr ""
 
-#: accounts/doctype/account/account.js:79
+#: accounts/doctype/account/account.js:74
 #: accounts/doctype/account/account.js:103
-#: accounts/doctype/account/account_tree.js:135
-#: accounts/doctype/account/account_tree.js:139
-#: accounts/doctype/account/account_tree.js:143
-#: accounts/doctype/cost_center/cost_center_tree.js:37
-#: accounts/doctype/invoice_discounting/invoice_discounting.js:202
-#: accounts/doctype/journal_entry/journal_entry.js:29
-#: accounts/doctype/purchase_invoice/purchase_invoice.js:619
-#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js:8
-#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js:11
-#: buying/doctype/supplier/supplier.js:88
-#: buying/doctype/supplier/supplier.js:92
-#: manufacturing/doctype/production_plan/production_plan.js:94
-#: projects/doctype/project/project.js:84
-#: projects/doctype/project/project.js:92
-#: public/js/controllers/stock_controller.js:64
-#: public/js/controllers/stock_controller.js:83 public/js/utils.js:133
-#: selling/doctype/customer/customer.js:157
-#: selling/doctype/customer/customer.js:162 setup/doctype/company/company.js:88
-#: setup/doctype/company/company.js:94 setup/doctype/company/company.js:100
-#: setup/doctype/company/company.js:106
-#: stock/doctype/delivery_trip/delivery_trip.js:71
-#: stock/doctype/item/item.js:63 stock/doctype/item/item.js:69
-#: stock/doctype/item/item.js:75 stock/doctype/item/item.js:92
-#: stock/doctype/item/item.js:96 stock/doctype/item/item.js:100
-#: stock/doctype/purchase_receipt/purchase_receipt.js:182
-#: stock/doctype/purchase_receipt/purchase_receipt.js:189
-#: stock/doctype/stock_entry/stock_entry.js:257
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:41
-#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:53
+#: accounts/doctype/account/account_tree.js:185
+#: accounts/doctype/account/account_tree.js:193
+#: accounts/doctype/account/account_tree.js:201
+#: accounts/doctype/cost_center/cost_center_tree.js:56
+#: accounts/doctype/invoice_discounting/invoice_discounting.js:205
+#: accounts/doctype/journal_entry/journal_entry.js:67
+#: accounts/doctype/purchase_invoice/purchase_invoice.js:668
+#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js:14
+#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js:24
+#: buying/doctype/supplier/supplier.js:93
+#: buying/doctype/supplier/supplier.js:104
+#: manufacturing/doctype/production_plan/production_plan.js:98
+#: projects/doctype/project/project.js:100
+#: projects/doctype/project/project.js:117
+#: public/js/controllers/stock_controller.js:76
+#: public/js/controllers/stock_controller.js:95 public/js/utils.js:164
+#: selling/doctype/customer/customer.js:160
+#: selling/doctype/customer/customer.js:172 setup/doctype/company/company.js:90
+#: setup/doctype/company/company.js:100 setup/doctype/company/company.js:112
+#: setup/doctype/company/company.js:124
+#: stock/doctype/delivery_trip/delivery_trip.js:83
+#: stock/doctype/item/item.js:65 stock/doctype/item/item.js:75
+#: stock/doctype/item/item.js:85 stock/doctype/item/item.js:110
+#: stock/doctype/item/item.js:118 stock/doctype/item/item.js:126
+#: stock/doctype/purchase_receipt/purchase_receipt.js:207
+#: stock/doctype/purchase_receipt/purchase_receipt.js:218
+#: stock/doctype/stock_entry/stock_entry.js:287
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:44
+#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:60
 msgid "View"
 msgstr ""
 
@@ -77758,7 +79221,7 @@
 msgid "View BOM Update Log"
 msgstr ""
 
-#: public/js/setup_wizard.js:39
+#: public/js/setup_wizard.js:41
 msgid "View Chart of Accounts"
 msgstr ""
 
@@ -77768,24 +79231,24 @@
 msgid "View Cost Center Tree"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:158
+#: accounts/doctype/payment_entry/payment_entry.js:183
 msgid "View Exchange Gain/Loss Journals"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:128
+#: assets/doctype/asset/asset.js:164
 #: assets/doctype/asset_repair/asset_repair.js:47
 msgid "View General Ledger"
 msgstr ""
 
-#: crm/doctype/campaign/campaign.js:11
+#: crm/doctype/campaign/campaign.js:15
 msgid "View Leads"
 msgstr ""
 
-#: accounts/doctype/account/account_tree.js:193 stock/doctype/batch/batch.js:18
+#: accounts/doctype/account/account_tree.js:278 stock/doctype/batch/batch.js:18
 msgid "View Ledger"
 msgstr ""
 
-#: stock/doctype/serial_no/serial_no.js:29
+#: stock/doctype/serial_no/serial_no.js:28
 msgid "View Ledgers"
 msgstr ""
 
@@ -77808,6 +79271,10 @@
 msgid "View attachments"
 msgstr ""
 
+#: public/js/call_popup/call_popup.js:186
+msgid "View call log"
+msgstr ""
+
 #: utilities/report/youtube_interactions/youtube_interactions.py:25
 msgid "Views"
 msgstr ""
@@ -77857,9 +79324,9 @@
 msgid "Voucher"
 msgstr ""
 
-#: stock/report/stock_ledger/stock_ledger.js:71
-#: stock/report/stock_ledger/stock_ledger.py:160
-#: stock/report/stock_ledger/stock_ledger.py:232
+#: stock/report/stock_ledger/stock_ledger.js:79
+#: stock/report/stock_ledger/stock_ledger.py:233
+#: stock/report/stock_ledger/stock_ledger.py:305
 msgid "Voucher #"
 msgstr ""
 
@@ -77899,21 +79366,21 @@
 msgid "Voucher Name"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:273
-#: accounts/report/accounts_receivable/accounts_receivable.py:1050
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:279
+#: accounts/report/accounts_receivable/accounts_receivable.py:1058
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.js:42
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:213
 #: accounts/report/general_ledger/general_ledger.js:49
-#: accounts/report/general_ledger/general_ledger.py:625
-#: accounts/report/payment_ledger/payment_ledger.js:65
+#: accounts/report/general_ledger/general_ledger.py:638
+#: accounts/report/payment_ledger/payment_ledger.js:64
 #: accounts/report/payment_ledger/payment_ledger.py:167
 #: accounts/report/voucher_wise_balance/voucher_wise_balance.py:19
-#: public/js/utils/unreconcile.js:61
+#: public/js/utils/unreconcile.js:78
 #: stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:153
 #: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.py:98
 #: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:139
 #: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.py:112
-#: stock/report/reserved_stock/reserved_stock.js:80
+#: stock/report/reserved_stock/reserved_stock.js:77
 #: stock/report/reserved_stock/reserved_stock.py:151
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:51
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:114
@@ -77988,7 +79455,7 @@
 msgid "Voucher Qty"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:619
+#: accounts/report/general_ledger/general_ledger.py:632
 msgid "Voucher Subtype"
 msgstr ""
 
@@ -77998,25 +79465,25 @@
 msgid "Voucher Subtype"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1048
+#: accounts/report/accounts_receivable/accounts_receivable.py:1056
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:203
-#: accounts/report/general_ledger/general_ledger.py:617
+#: accounts/report/general_ledger/general_ledger.py:630
 #: accounts/report/payment_ledger/payment_ledger.py:158
 #: accounts/report/purchase_register/purchase_register.py:158
 #: accounts/report/sales_register/sales_register.py:172
 #: accounts/report/voucher_wise_balance/voucher_wise_balance.py:17
-#: public/js/utils/unreconcile.js:60
+#: public/js/utils/unreconcile.js:70
 #: stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:147
 #: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.py:91
 #: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:132
 #: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.py:110
-#: stock/report/reserved_stock/reserved_stock.js:68
+#: stock/report/reserved_stock/reserved_stock.js:65
 #: stock/report/reserved_stock/reserved_stock.py:145
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:40
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:107
 #: stock/report/serial_no_ledger/serial_no_ledger.py:24
 #: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:116
-#: stock/report/stock_ledger/stock_ledger.py:230
+#: stock/report/stock_ledger/stock_ledger.py:303
 #: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:136
 #: stock/report/stock_ledger_variance/stock_ledger_variance.py:66
 msgid "Voucher Type"
@@ -78088,11 +79555,11 @@
 msgid "Voucher Type"
 msgstr ""
 
-#: accounts/doctype/bank_transaction/bank_transaction.py:177
+#: accounts/doctype/bank_transaction/bank_transaction.py:180
 msgid "Voucher {0} is over-allocated by {1}"
 msgstr ""
 
-#: accounts/doctype/bank_transaction/bank_transaction.py:249
+#: accounts/doctype/bank_transaction/bank_transaction.py:252
 msgid "Voucher {0} value is broken: {1}"
 msgstr ""
 
@@ -78181,12 +79648,12 @@
 msgid "Wages per hour"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.js:251
+#: accounts/doctype/pos_invoice/pos_invoice.js:270
 msgid "Waiting for payment..."
 msgstr ""
 
 #. Name of a DocType
-#: accounts/report/gross_profit/gross_profit.js:55
+#: accounts/report/gross_profit/gross_profit.js:56
 #: accounts/report/gross_profit/gross_profit.py:251
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.js:41
 #: accounts/report/purchase_register/purchase_register.js:52
@@ -78194,58 +79661,62 @@
 #: accounts/report/sales_register/sales_register.js:58
 #: accounts/report/sales_register/sales_register.py:257
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:271
-#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.js:16
-#: manufacturing/report/bom_stock_report/bom_stock_report.js:11
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:82
+#: manufacturing/doctype/workstation/workstation_job_card.html:92
+#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.js:15
+#: manufacturing/report/bom_stock_report/bom_stock_report.js:12
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:81
 #: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.py:173
 #: manufacturing/report/production_planning_report/production_planning_report.py:362
 #: manufacturing/report/production_planning_report/production_planning_report.py:405
-#: manufacturing/report/work_order_stock_report/work_order_stock_report.js:9
-#: public/js/stock_analytics.js:45 public/js/utils.js:498
-#: public/js/utils/serial_no_batch_selector.js:90
-#: selling/doctype/sales_order/sales_order.js:300
-#: selling/doctype/sales_order/sales_order.js:401
-#: selling/report/sales_order_analysis/sales_order_analysis.js:49
+#: manufacturing/report/work_order_stock_report/work_order_stock_report.js:8
+#: public/js/stock_analytics.js:69 public/js/utils.js:553
+#: public/js/utils/serial_no_batch_selector.js:94
+#: selling/doctype/sales_order/sales_order.js:327
+#: selling/doctype/sales_order/sales_order.js:431
+#: selling/report/sales_order_analysis/sales_order_analysis.js:48
 #: selling/report/sales_order_analysis/sales_order_analysis.py:334
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:78
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:79
 #: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:256
 #: stock/doctype/warehouse/warehouse.json
 #: stock/page/stock_balance/stock_balance.js:11
 #: stock/page/warehouse_capacity_summary/warehouse_capacity_summary.js:25
+#: stock/page/warehouse_capacity_summary/warehouse_capacity_summary_header.html:4
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.js:45
 #: stock/report/batch_wise_balance_history/batch_wise_balance_history.py:77
 #: stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:126
-#: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.js:22
+#: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.js:21
 #: stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.py:112
 #: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:153
 #: stock/report/incorrect_stock_value_report/incorrect_stock_value_report.py:126
 #: stock/report/item_price_stock/item_price_stock.py:27
-#: stock/report/item_shortage_report/item_shortage_report.js:18
+#: stock/report/item_shortage_report/item_shortage_report.js:17
 #: stock/report/item_shortage_report/item_shortage_report.py:81
 #: stock/report/product_bundle_balance/product_bundle_balance.js:42
 #: stock/report/product_bundle_balance/product_bundle_balance.py:89
-#: stock/report/reserved_stock/reserved_stock.js:44
+#: stock/report/reserved_stock/reserved_stock.js:41
 #: stock/report/reserved_stock/reserved_stock.py:96
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:34
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:140
-#: stock/report/serial_no_ledger/serial_no_ledger.js:22
+#: stock/report/serial_no_ledger/serial_no_ledger.js:21
 #: stock/report/serial_no_ledger/serial_no_ledger.py:44
 #: stock/report/stock_ageing/stock_ageing.js:23
 #: stock/report/stock_ageing/stock_ageing.py:146
-#: stock/report/stock_analytics/stock_analytics.js:50
+#: stock/report/stock_analytics/stock_analytics.js:49
 #: stock/report/stock_balance/stock_balance.js:51
-#: stock/report/stock_balance/stock_balance.py:376
+#: stock/report/stock_balance/stock_balance.py:384
 #: stock/report/stock_ledger/stock_ledger.js:30
-#: stock/report/stock_ledger/stock_ledger.py:167
+#: stock/report/stock_ledger/stock_ledger.py:240
 #: stock/report/stock_ledger_variance/stock_ledger_variance.js:38
 #: stock/report/stock_ledger_variance/stock_ledger_variance.py:55
 #: stock/report/stock_projected_qty/stock_projected_qty.js:15
 #: stock/report/stock_projected_qty/stock_projected_qty.py:122
-#: stock/report/stock_qty_vs_serial_no_count/stock_qty_vs_serial_no_count.js:17
+#: stock/report/stock_qty_vs_serial_no_count/stock_qty_vs_serial_no_count.js:16
 #: stock/report/total_stock_summary/total_stock_summary.py:28
-#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:39
+#: stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js:38
 #: stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py:101
 #: templates/emails/reorder_item.html:9
+#: templates/form_grid/material_request_grid.html:8
+#: templates/form_grid/stock_entry_grid.html:9
 msgid "Warehouse"
 msgstr ""
 
@@ -78303,12 +79774,24 @@
 msgid "Warehouse"
 msgstr ""
 
+#. Label of a Link field in DocType 'Pick List'
+#: stock/doctype/pick_list/pick_list.json
+msgctxt "Pick List"
+msgid "Warehouse"
+msgstr ""
+
 #. Label of a Link field in DocType 'Pick List Item'
 #: stock/doctype/pick_list_item/pick_list_item.json
 msgctxt "Pick List Item"
 msgid "Warehouse"
 msgstr ""
 
+#. Label of a Link field in DocType 'Plant Floor'
+#: manufacturing/doctype/plant_floor/plant_floor.json
+msgctxt "Plant Floor"
+msgid "Warehouse"
+msgstr ""
+
 #. Label of a Link field in DocType 'Pricing Rule'
 #: accounts/doctype/pricing_rule/pricing_rule.json
 msgctxt "Pricing Rule"
@@ -78443,6 +79926,12 @@
 msgid "Warehouse"
 msgstr ""
 
+#. Label of a Link field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Warehouse"
+msgstr ""
+
 #: stock/page/warehouse_capacity_summary/warehouse_capacity_summary.js:4
 msgid "Warehouse Capacity Summary"
 msgstr ""
@@ -78568,12 +80057,12 @@
 msgid "Warehouse not found against the account {0}"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:367
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:421
 msgid "Warehouse not found in the system"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1005
-#: stock/doctype/delivery_note/delivery_note.py:362
+#: accounts/doctype/sales_invoice/sales_invoice.py:1022
+#: stock/doctype/delivery_note/delivery_note.py:416
 msgid "Warehouse required for stock Item {0}"
 msgstr ""
 
@@ -78595,11 +80084,11 @@
 msgid "Warehouse {0} does not belong to Company {1}."
 msgstr ""
 
-#: stock/utils.py:441
+#: stock/utils.py:436
 msgid "Warehouse {0} does not belong to company {1}"
 msgstr ""
 
-#: controllers/stock_controller.py:244
+#: controllers/stock_controller.py:426
 msgid "Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}."
 msgstr ""
 
@@ -78611,7 +80100,7 @@
 msgid "Warehouse: {0} does not belong to {1}"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:379
+#: manufacturing/doctype/production_plan/production_plan.js:407
 msgid "Warehouses"
 msgstr ""
 
@@ -78721,9 +80210,9 @@
 msgid "Warn for new Request for Quotations"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:639
-#: controllers/accounts_controller.py:1676
-#: stock/doctype/delivery_trip/delivery_trip.js:123
+#: accounts/doctype/payment_entry/payment_entry.py:648
+#: controllers/accounts_controller.py:1765
+#: stock/doctype/delivery_trip/delivery_trip.js:144
 #: utilities/transaction_base.py:122
 msgid "Warning"
 msgstr ""
@@ -78736,15 +80225,15 @@
 msgid "Warning!"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1146
+#: accounts/doctype/journal_entry/journal_entry.py:1173
 msgid "Warning: Another {0} # {1} exists against stock entry {2}"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.js:415
+#: stock/doctype/material_request/material_request.js:484
 msgid "Warning: Material Requested Qty is less than Minimum Order Qty"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:252
+#: selling/doctype/sales_order/sales_order.py:254
 msgid "Warning: Sales Order {0} already exists against Customer's Purchase Order {1}"
 msgstr ""
 
@@ -78766,7 +80255,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: maintenance/doctype/maintenance_visit/maintenance_visit.js:97
+#: maintenance/doctype/maintenance_visit/maintenance_visit.js:103
 #: support/doctype/warranty_claim/warranty_claim.json
 msgid "Warranty Claim"
 msgstr ""
@@ -78806,6 +80295,10 @@
 msgid "Watch Video"
 msgstr ""
 
+#: controllers/accounts_controller.py:232
+msgid "We can see {0} is made against {1}. If you want {1}'s outstanding to be updated, uncheck '{2}' checkbox. <br><br> Or you can use {3} tool to reconcile against {1} later."
+msgstr ""
+
 #: www/support/index.html:7
 msgid "We're here to help!"
 msgstr ""
@@ -79015,12 +80508,12 @@
 msgid "Weekday"
 msgstr ""
 
-#: buying/report/purchase_analytics/purchase_analytics.js:61
-#: manufacturing/report/production_analytics/production_analytics.js:34
-#: public/js/stock_analytics.js:52
-#: selling/report/sales_analytics/sales_analytics.js:61
-#: stock/report/stock_analytics/stock_analytics.js:80
-#: support/report/issue_analytics/issue_analytics.js:42
+#: buying/report/purchase_analytics/purchase_analytics.js:60
+#: manufacturing/report/production_analytics/production_analytics.js:33
+#: public/js/stock_analytics.js:82
+#: selling/report/sales_analytics/sales_analytics.js:68
+#: stock/report/stock_analytics/stock_analytics.js:79
+#: support/report/issue_analytics/issue_analytics.js:41
 msgid "Weekly"
 msgstr ""
 
@@ -79277,15 +80770,22 @@
 msgid "Wheels"
 msgstr ""
 
-#: stock/doctype/item/item.js:834
+#. Description of the 'Sub Assembly Warehouse' (Link) field in DocType
+#. 'Production Plan'
+#: manufacturing/doctype/production_plan/production_plan.json
+msgctxt "Production Plan"
+msgid "When a parent warehouse is chosen, the system conducts stock checks against the associated child warehouses"
+msgstr ""
+
+#: stock/doctype/item/item.js:920
 msgid "When creating an Item, entering a value for this field will automatically create an Item Price at the backend."
 msgstr ""
 
-#: accounts/doctype/account/account.py:313
+#: accounts/doctype/account/account.py:332
 msgid "While creating account for Child Company {0}, parent account {1} found as a ledger account."
 msgstr ""
 
-#: accounts/doctype/account/account.py:303
+#: accounts/doctype/account/account.py:322
 msgid "While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA"
 msgstr ""
 
@@ -79348,7 +80848,11 @@
 msgid "With Operations"
 msgstr ""
 
-#: public/js/bank_reconciliation_tool/data_table_manager.js:70
+#: accounts/report/trial_balance/trial_balance.js:82
+msgid "With Period Closing Entry For Opening Balances"
+msgstr ""
+
+#: public/js/bank_reconciliation_tool/data_table_manager.js:67
 msgid "Withdrawal"
 msgstr ""
 
@@ -79364,7 +80868,7 @@
 msgid "Work Done"
 msgstr ""
 
-#: setup/doctype/company/company.py:261
+#: setup/doctype/company/company.py:260
 msgid "Work In Progress"
 msgstr ""
 
@@ -79386,7 +80890,7 @@
 msgid "Work In Progress"
 msgstr ""
 
-#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:20
+#: manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:23
 msgid "Work In Progress Warehouse"
 msgstr ""
 
@@ -79394,19 +80898,20 @@
 #. Title of an Onboarding Step
 #: manufacturing/doctype/bom/bom.js:119
 #: manufacturing/doctype/work_order/work_order.json
+#: manufacturing/doctype/workstation/workstation_job_card.html:26
 #: manufacturing/onboarding_step/work_order/work_order.json
-#: manufacturing/report/bom_variance_report/bom_variance_report.js:15
+#: manufacturing/report/bom_variance_report/bom_variance_report.js:14
 #: manufacturing/report/bom_variance_report/bom_variance_report.py:19
-#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:42
+#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:43
 #: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:95
 #: manufacturing/report/job_card_summary/job_card_summary.py:145
-#: manufacturing/report/process_loss_report/process_loss_report.js:23
+#: manufacturing/report/process_loss_report/process_loss_report.js:22
 #: manufacturing/report/process_loss_report/process_loss_report.py:68
-#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:30
+#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:29
 #: manufacturing/report/work_order_stock_report/work_order_stock_report.py:104
-#: selling/doctype/sales_order/sales_order.js:560
-#: stock/doctype/material_request/material_request.js:152
-#: stock/doctype/material_request/material_request.py:779
+#: selling/doctype/sales_order/sales_order.js:624
+#: stock/doctype/material_request/material_request.js:178
+#: stock/doctype/material_request/material_request.py:791
 #: templates/pages/material_request_info.html:45
 msgid "Work Order"
 msgstr ""
@@ -79457,7 +80962,7 @@
 msgid "Work Order"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.js:107
+#: manufacturing/doctype/production_plan/production_plan.js:121
 msgid "Work Order / Subcontract PO"
 msgstr ""
 
@@ -79504,33 +81009,33 @@
 msgid "Work Order Summary"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.py:784
+#: stock/doctype/material_request/material_request.py:796
 msgid "Work Order cannot be created for following reason: <br> {0}"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:927
+#: manufacturing/doctype/work_order/work_order.py:941
 msgid "Work Order cannot be raised against a Item Template"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:1399
-#: manufacturing/doctype/work_order/work_order.py:1458
+#: manufacturing/doctype/work_order/work_order.py:1413
+#: manufacturing/doctype/work_order/work_order.py:1472
 msgid "Work Order has been {0}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:667
+#: selling/doctype/sales_order/sales_order.js:768
 msgid "Work Order not created"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:679
+#: stock/doctype/stock_entry/stock_entry.py:634
 msgid "Work Order {0}: Job Card not found for the operation {1}"
 msgstr ""
 
-#: manufacturing/report/job_card_summary/job_card_summary.js:57
-#: stock/doctype/material_request/material_request.py:774
+#: manufacturing/report/job_card_summary/job_card_summary.js:56
+#: stock/doctype/material_request/material_request.py:786
 msgid "Work Orders"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:731
+#: selling/doctype/sales_order/sales_order.js:844
 msgid "Work Orders Created: {0}"
 msgstr ""
 
@@ -79557,7 +81062,7 @@
 msgid "Work-in-Progress Warehouse"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:425
+#: manufacturing/doctype/work_order/work_order.py:436
 msgid "Work-in-Progress Warehouse is required before Submit"
 msgstr ""
 
@@ -79594,6 +81099,10 @@
 msgid "Workflow State"
 msgstr ""
 
+#: templates/pages/task_info.html:73
+msgid "Working"
+msgstr ""
+
 #. Option for the 'Status' (Select) field in DocType 'Task'
 #: projects/doctype/task/task.json
 msgctxt "Task"
@@ -79620,14 +81129,14 @@
 
 #. Name of a DocType
 #. Title of an Onboarding Step
-#: manufacturing/doctype/work_order/work_order.js:232
+#: manufacturing/doctype/work_order/work_order.js:247
 #: manufacturing/doctype/workstation/workstation.json
 #: manufacturing/onboarding_step/workstation/workstation.json
-#: manufacturing/report/bom_operations_time/bom_operations_time.js:36
+#: manufacturing/report/bom_operations_time/bom_operations_time.js:35
 #: manufacturing/report/bom_operations_time/bom_operations_time.py:119
-#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:61
+#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:62
 #: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:119
-#: manufacturing/report/job_card_summary/job_card_summary.js:73
+#: manufacturing/report/job_card_summary/job_card_summary.js:72
 #: manufacturing/report/job_card_summary/job_card_summary.py:160
 #: templates/generators/bom.html:70
 msgid "Workstation"
@@ -79669,12 +81178,24 @@
 msgid "Workstation / Machine"
 msgstr ""
 
+#. Label of a HTML field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Workstation Dashboard"
+msgstr ""
+
 #. Label of a Data field in DocType 'Workstation'
 #: manufacturing/doctype/workstation/workstation.json
 msgctxt "Workstation"
 msgid "Workstation Name"
 msgstr ""
 
+#. Label of a Tab Break field in DocType 'Workstation'
+#: manufacturing/doctype/workstation/workstation.json
+msgctxt "Workstation"
+msgid "Workstation Status"
+msgstr ""
+
 #. Name of a DocType
 #: manufacturing/doctype/workstation_type/workstation_type.json
 msgid "Workstation Type"
@@ -79717,17 +81238,23 @@
 msgid "Workstation Working Hour"
 msgstr ""
 
-#: manufacturing/doctype/workstation/workstation.py:199
+#: manufacturing/doctype/workstation/workstation.py:355
 msgid "Workstation is closed on the following dates as per Holiday List: {0}"
 msgstr ""
 
+#. Label of a Tab Break field in DocType 'Plant Floor'
+#: manufacturing/doctype/plant_floor/plant_floor.json
+msgctxt "Plant Floor"
+msgid "Workstations"
+msgstr ""
+
 #: setup/setup_wizard/setup_wizard.py:16 setup/setup_wizard/setup_wizard.py:41
 msgid "Wrapping up"
 msgstr ""
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:72
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:96
-#: setup/doctype/company/company.py:510
+#: setup/doctype/company/company.py:509
 msgid "Write Off"
 msgstr ""
 
@@ -79918,7 +81445,7 @@
 msgid "Wrong Company"
 msgstr ""
 
-#: setup/doctype/company/company.js:172
+#: setup/doctype/company/company.js:202
 msgid "Wrong Password"
 msgstr ""
 
@@ -79977,20 +81504,20 @@
 msgid "Year start date or end date is overlapping with {0}. To avoid please set company"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:67
-#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:70
-#: buying/report/purchase_analytics/purchase_analytics.js:64
-#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:61
-#: manufacturing/report/production_analytics/production_analytics.js:37
-#: public/js/financial_statements.js:220
+#: accounts/report/budget_variance_report/budget_variance_report.js:65
+#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:78
+#: buying/report/purchase_analytics/purchase_analytics.js:63
+#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:60
+#: manufacturing/report/production_analytics/production_analytics.js:36
+#: public/js/financial_statements.js:229
 #: public/js/purchase_trends_filters.js:22 public/js/sales_trends_filters.js:14
-#: public/js/stock_analytics.js:55
-#: selling/report/sales_analytics/sales_analytics.js:64
-#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:36
-#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:36
-#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:36
-#: stock/report/stock_analytics/stock_analytics.js:83
-#: support/report/issue_analytics/issue_analytics.js:45
+#: public/js/stock_analytics.js:85
+#: selling/report/sales_analytics/sales_analytics.js:71
+#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:35
+#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:35
+#: selling/report/territory_target_variance_based_on_item_group/territory_target_variance_based_on_item_group.js:35
+#: stock/report/stock_analytics/stock_analytics.js:82
+#: support/report/issue_analytics/issue_analytics.js:44
 msgid "Yearly"
 msgstr ""
 
@@ -80123,23 +81650,23 @@
 msgid "Yes"
 msgstr ""
 
-#: controllers/accounts_controller.py:3151
+#: controllers/accounts_controller.py:3242
 msgid "You are not allowed to update as per the conditions set in {} Workflow."
 msgstr ""
 
-#: accounts/general_ledger.py:665
+#: accounts/general_ledger.py:674
 msgid "You are not authorized to add or update entries before {0}"
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:317
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:328
 msgid "You are not authorized to make/edit Stock Transactions for Item {0} under warehouse {1} before this time."
 msgstr ""
 
-#: accounts/doctype/account/account.py:263
+#: accounts/doctype/account/account.py:282
 msgid "You are not authorized to set Frozen value"
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:307
+#: stock/doctype/pick_list/pick_list.py:347
 msgid "You are picking more than required quantity for the item {0}. Check if there is any other pick list created for the sales order {1}."
 msgstr ""
 
@@ -80155,7 +81682,7 @@
 msgid "You can also set default CWIP account in Company {}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:873
+#: accounts/doctype/sales_invoice/sales_invoice.py:890
 msgid "You can change the parent account to a Balance Sheet account or select a different account."
 msgstr ""
 
@@ -80163,7 +81690,7 @@
 msgid "You can not cancel this Period Closing Voucher, please cancel the future Period Closing Vouchers first"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:583
+#: accounts/doctype/journal_entry/journal_entry.py:610
 msgid "You can not enter current voucher in 'Against Journal Entry' column"
 msgstr ""
 
@@ -80171,8 +81698,8 @@
 msgid "You can only have Plans with the same billing cycle in a Subscription"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.js:239
-#: accounts/doctype/sales_invoice/sales_invoice.js:847
+#: accounts/doctype/pos_invoice/pos_invoice.js:258
+#: accounts/doctype/sales_invoice/sales_invoice.js:915
 msgid "You can only redeem max {0} points in this order."
 msgstr ""
 
@@ -80180,11 +81707,11 @@
 msgid "You can only select one mode of payment as default"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:478
+#: selling/page/point_of_sale/pos_payment.js:506
 msgid "You can redeem upto {0}."
 msgstr ""
 
-#: manufacturing/doctype/workstation/workstation.js:37
+#: manufacturing/doctype/workstation/workstation.js:59
 msgid "You can set it as a machine name or operation type. For example, stiching machine 12"
 msgstr ""
 
@@ -80193,7 +81720,7 @@
 msgid "You can set the filters to narrow the results, then click on Generate New Report to see the updated report."
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:1027
+#: manufacturing/doctype/job_card/job_card.py:1042
 msgid "You can't make any changes to Job Card since Work Order is closed."
 msgstr ""
 
@@ -80201,7 +81728,7 @@
 msgid "You can't redeem Loyalty Points having more value than the Rounded Total."
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:532
+#: manufacturing/doctype/bom/bom.js:549
 msgid "You cannot change the rate if BOM is mentioned against any Item."
 msgstr ""
 
@@ -80209,15 +81736,15 @@
 msgid "You cannot create a {0} within the closed Accounting Period {1}"
 msgstr ""
 
-#: accounts/general_ledger.py:155
+#: accounts/general_ledger.py:159
 msgid "You cannot create or cancel any accounting entries with in the closed Accounting Period {0}"
 msgstr ""
 
-#: accounts/general_ledger.py:689
+#: accounts/general_ledger.py:698
 msgid "You cannot create/amend any accounting entries till this date."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:809
+#: accounts/doctype/journal_entry/journal_entry.py:836
 msgid "You cannot credit and debit same account at the same time"
 msgstr ""
 
@@ -80229,7 +81756,7 @@
 msgid "You cannot edit root node."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:507
+#: selling/page/point_of_sale/pos_payment.js:536
 msgid "You cannot redeem more than {0}."
 msgstr ""
 
@@ -80241,15 +81768,15 @@
 msgid "You cannot restart a Subscription that is not cancelled."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:207
+#: selling/page/point_of_sale/pos_payment.js:210
 msgid "You cannot submit empty order."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:207
+#: selling/page/point_of_sale/pos_payment.js:209
 msgid "You cannot submit the order without payment."
 msgstr ""
 
-#: controllers/accounts_controller.py:3127
+#: controllers/accounts_controller.py:3218
 msgid "You do not have permissions to {} items in a {}."
 msgstr ""
 
@@ -80257,7 +81784,7 @@
 msgid "You don't have enough Loyalty Points to redeem"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_payment.js:474
+#: selling/page/point_of_sale/pos_payment.js:499
 msgid "You don't have enough points to redeem."
 msgstr ""
 
@@ -80265,7 +81792,7 @@
 msgid "You had {} errors while creating opening invoices. Check {} for more details"
 msgstr ""
 
-#: public/js/utils.js:822
+#: public/js/utils.js:893
 msgid "You have already selected items from {0} {1}"
 msgstr ""
 
@@ -80273,7 +81800,7 @@
 msgid "You have been invited to collaborate on the project: {0}"
 msgstr ""
 
-#: stock/doctype/shipment/shipment.js:394
+#: stock/doctype/shipment/shipment.js:442
 msgid "You have entered a duplicate Delivery Note on Row"
 msgstr ""
 
@@ -80285,11 +81812,11 @@
 msgid "You haven't created a {0} yet"
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:196
+#: selling/page/point_of_sale/pos_controller.js:218
 msgid "You must add atleast one item to save it as draft."
 msgstr ""
 
-#: selling/page/point_of_sale/pos_controller.js:598
+#: selling/page/point_of_sale/pos_controller.js:626
 msgid "You must select a customer before adding an item."
 msgstr ""
 
@@ -80354,7 +81881,7 @@
 msgid "Youtube Statistics"
 msgstr ""
 
-#: public/js/utils/contact_address_quick_entry.js:68
+#: public/js/utils/contact_address_quick_entry.js:71
 msgid "ZIP Code"
 msgstr ""
 
@@ -80368,7 +81895,7 @@
 msgid "Zero Rated"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:407
+#: stock/doctype/stock_entry/stock_entry.py:362
 msgid "Zero quantity"
 msgstr ""
 
@@ -80378,7 +81905,7 @@
 msgid "Zip File"
 msgstr ""
 
-#: stock/reorder_item.py:283
+#: stock/reorder_item.py:368
 msgid "[Important] [ERPNext] Auto Reorder Errors"
 msgstr ""
 
@@ -80386,16 +81913,20 @@
 msgid "`Allow Negative rates for Items`"
 msgstr ""
 
-#: stock/doctype/stock_settings/stock_settings.py:89
+#: stock/doctype/stock_settings/stock_settings.py:92
 #, python-format
 msgid "`Freeze Stocks Older Than` should be smaller than %d days."
 msgstr ""
 
+#: stock/stock_ledger.py:1700
+msgid "after"
+msgstr ""
+
 #: accounts/doctype/shipping_rule/shipping_rule.py:204
 msgid "and"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.js:759
+#: manufacturing/doctype/bom/bom.js:792
 msgid "as a percentage of finished item quantity"
 msgstr ""
 
@@ -80403,11 +81934,15 @@
 msgid "at"
 msgstr ""
 
-#: buying/report/purchase_analytics/purchase_analytics.js:17
-#: selling/report/sales_analytics/sales_analytics.js:17
+#: buying/report/purchase_analytics/purchase_analytics.js:16
+#: selling/report/sales_analytics/sales_analytics.js:24
 msgid "based_on"
 msgstr ""
 
+#: public/js/utils/sales_common.js:256
+msgid "cannot be greater than 100"
+msgstr ""
+
 #. Label of a Small Text field in DocType 'Production Plan Sub Assembly Item'
 #: manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json
 msgctxt "Production Plan Sub Assembly Item"
@@ -80421,8 +81956,12 @@
 msgid "development"
 msgstr ""
 
+#: selling/page/point_of_sale/pos_item_cart.js:433
+msgid "discount applied"
+msgstr ""
+
 #: selling/report/sales_person_commission_summary/sales_person_commission_summary.py:46
-#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:57
+#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:58
 msgid "doc_type"
 msgstr ""
 
@@ -80451,6 +81990,10 @@
 msgid "exchangerate.host"
 msgstr ""
 
+#: crm/report/sales_pipeline_analytics/sales_pipeline_analytics.py:161
+msgid "fieldname"
+msgstr ""
+
 #. Option for the 'Service Provider' (Select) field in DocType 'Currency
 #. Exchange Settings'
 #: accounts/doctype/currency_exchange_settings/currency_exchange_settings.json
@@ -80458,13 +82001,21 @@
 msgid "frankfurter.app"
 msgstr ""
 
+#: templates/form_grid/item_grid.html:66 templates/form_grid/item_grid.html:80
+msgid "hidden"
+msgstr ""
+
+#: projects/doctype/project/project_dashboard.html:13
+msgid "hours"
+msgstr ""
+
 #. Label of a Attach Image field in DocType 'Batch'
 #: stock/doctype/batch/batch.json
 msgctxt "Batch"
 msgid "image"
 msgstr ""
 
-#: accounts/doctype/budget/budget.py:253
+#: accounts/doctype/budget/budget.py:260
 msgid "is already"
 msgstr ""
 
@@ -80540,7 +82091,7 @@
 msgid "material_request_item"
 msgstr ""
 
-#: controllers/selling_controller.py:150
+#: controllers/selling_controller.py:151
 msgid "must be between 0 and 100"
 msgstr ""
 
@@ -80586,7 +82137,11 @@
 msgid "old_parent"
 msgstr ""
 
-#: controllers/accounts_controller.py:1033
+#: templates/pages/task_info.html:90
+msgid "on"
+msgstr ""
+
+#: controllers/accounts_controller.py:1097
 msgid "or"
 msgstr ""
 
@@ -80598,7 +82153,7 @@
 msgid "out of 5"
 msgstr ""
 
-#: public/js/utils.js:369
+#: public/js/utils.js:417
 msgid "payments app is not installed. Please install it from {0} or {1}"
 msgstr ""
 
@@ -80639,7 +82194,7 @@
 msgid "per hour"
 msgstr ""
 
-#: stock/stock_ledger.py:1681
+#: stock/stock_ledger.py:1701
 msgid "performing either one below:"
 msgstr ""
 
@@ -80667,7 +82222,7 @@
 msgid "ratings"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1105
+#: accounts/doctype/payment_entry/payment_entry.py:1114
 msgid "received from"
 msgstr ""
 
@@ -80744,10 +82299,6 @@
 msgid "sandbox"
 msgstr ""
 
-#: public/js/controllers/transaction.js:920
-msgid "selected Payment Terms Template"
-msgstr ""
-
 #: accounts/doctype/subscription/subscription.py:711
 msgid "subscription is already cancelled."
 msgstr ""
@@ -80768,12 +82319,14 @@
 msgid "title"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1105
+#: accounts/doctype/payment_entry/payment_entry.py:1114
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:27
+#: accounts/report/general_ledger/general_ledger.html:20
+#: www/book_appointment/index.js:134
 msgid "to"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2737
+#: accounts/doctype/sales_invoice/sales_invoice.py:2706
 msgid "to unallocate the amount of this Return Invoice before cancelling it."
 msgstr ""
 
@@ -80796,7 +82349,7 @@
 msgid "via BOM Update Tool"
 msgstr ""
 
-#: accounts/doctype/budget/budget.py:256
+#: accounts/doctype/budget/budget.py:263
 msgid "will be"
 msgstr ""
 
@@ -80809,7 +82362,7 @@
 msgid "{0}"
 msgstr ""
 
-#: controllers/accounts_controller.py:878
+#: controllers/accounts_controller.py:930
 msgid "{0} '{1}' is disabled"
 msgstr ""
 
@@ -80817,7 +82370,7 @@
 msgid "{0} '{1}' not in Fiscal Year {2}"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.py:355
+#: manufacturing/doctype/work_order/work_order.py:366
 msgid "{0} ({1}) cannot be greater than planned quantity ({2}) in Work Order {3}"
 msgstr ""
 
@@ -80825,19 +82378,19 @@
 msgid "{0} - Above"
 msgstr ""
 
-#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:253
+#: stock/doctype/landed_cost_voucher/landed_cost_voucher.py:281
 msgid "{0} <b>{1}</b> has submitted Assets. Remove Item <b>{2}</b> from table to continue."
 msgstr ""
 
-#: controllers/accounts_controller.py:1893
+#: controllers/accounts_controller.py:1985
 msgid "{0} Account not found against Customer {1}."
 msgstr ""
 
-#: accounts/doctype/budget/budget.py:261
+#: accounts/doctype/budget/budget.py:268
 msgid "{0} Budget for Account {1} against {2} {3} is {4}. It {5} exceed by {6}"
 msgstr ""
 
-#: accounts/doctype/pricing_rule/utils.py:759
+#: accounts/doctype/pricing_rule/utils.py:758
 msgid "{0} Coupon used are {1}. Allowed quantity is exhausted"
 msgstr ""
 
@@ -80845,11 +82398,11 @@
 msgid "{0} Digest"
 msgstr ""
 
-#: accounts/utils.py:1286
+#: accounts/utils.py:1255
 msgid "{0} Number {1} is already used in {2} {3}"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:379
+#: manufacturing/doctype/work_order/work_order.js:397
 msgid "{0} Operations: {1}"
 msgstr ""
 
@@ -80861,7 +82414,7 @@
 msgid "{0} Retain Sample is based on batch, please check Has Batch No to retain sample of item"
 msgstr ""
 
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:429
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:428
 msgid "{0} Transaction(s) Reconciled"
 msgstr ""
 
@@ -80869,23 +82422,23 @@
 msgid "{0} account is not of type {1}"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:447
+#: stock/doctype/purchase_receipt/purchase_receipt.py:448
 msgid "{0} account not found while submitting purchase receipt"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:930
+#: accounts/doctype/journal_entry/journal_entry.py:957
 msgid "{0} against Bill {1} dated {2}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:939
+#: accounts/doctype/journal_entry/journal_entry.py:966
 msgid "{0} against Purchase Order {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:906
+#: accounts/doctype/journal_entry/journal_entry.py:933
 msgid "{0} against Sales Invoice {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:913
+#: accounts/doctype/journal_entry/journal_entry.py:940
 msgid "{0} against Sales Order {1}"
 msgstr ""
 
@@ -80893,7 +82446,7 @@
 msgid "{0} already has a Parent Procedure {1}."
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.py:610
+#: stock/doctype/delivery_note/delivery_note.py:671
 msgid "{0} and {1}"
 msgstr ""
 
@@ -80914,16 +82467,16 @@
 msgid "{0} cannot be used as a Main Cost Center because it has been used as child in Cost Center Allocation {1}"
 msgstr ""
 
-#: manufacturing/doctype/production_plan/production_plan.py:783
-#: manufacturing/doctype/production_plan/production_plan.py:877
+#: manufacturing/doctype/production_plan/production_plan.py:792
+#: manufacturing/doctype/production_plan/production_plan.py:886
 msgid "{0} created"
 msgstr ""
 
-#: setup/doctype/company/company.py:191
+#: setup/doctype/company/company.py:190
 msgid "{0} currency must be same as company's default currency. Please select another account."
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:310
+#: buying/doctype/purchase_order/purchase_order.py:311
 msgid "{0} currently has a {1} Supplier Scorecard standing, and Purchase Orders to this supplier should be issued with caution."
 msgstr ""
 
@@ -80955,7 +82508,11 @@
 msgid "{0} has been submitted successfully"
 msgstr ""
 
-#: controllers/accounts_controller.py:2212
+#: projects/doctype/project/project_dashboard.html:15
+msgid "{0} hours"
+msgstr ""
+
+#: controllers/accounts_controller.py:2304
 msgid "{0} in row {1}"
 msgstr ""
 
@@ -80963,23 +82520,27 @@
 msgid "{0} is a mandatory Accounting Dimension. <br>Please set a value for {0} in Accounting Dimensions section."
 msgstr ""
 
-#: controllers/accounts_controller.py:162
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.py:189
+msgid "{0} is already running for {1}"
+msgstr ""
+
+#: controllers/accounts_controller.py:164
 msgid "{0} is blocked so this transaction cannot proceed"
 msgstr ""
 
 #: accounts/doctype/budget/budget.py:57
-#: accounts/doctype/payment_entry/payment_entry.py:542
+#: accounts/doctype/payment_entry/payment_entry.py:551
 #: accounts/report/general_ledger/general_ledger.py:62
 #: accounts/report/pos_register/pos_register.py:110 controllers/trends.py:50
 msgid "{0} is mandatory"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:975
+#: accounts/doctype/sales_invoice/sales_invoice.py:992
 msgid "{0} is mandatory for Item {1}"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:220
 #: accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:101
+#: accounts/general_ledger.py:722
 msgid "{0} is mandatory for account {1}"
 msgstr ""
 
@@ -80987,7 +82548,7 @@
 msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}"
 msgstr ""
 
-#: controllers/accounts_controller.py:2491
+#: controllers/accounts_controller.py:2576
 msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}."
 msgstr ""
 
@@ -80999,7 +82560,7 @@
 msgid "{0} is not a group node. Please select a group node as parent cost center"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:456
+#: stock/doctype/stock_entry/stock_entry.py:411
 msgid "{0} is not a stock Item"
 msgstr ""
 
@@ -81015,26 +82576,30 @@
 msgid "{0} is not enabled in {1}"
 msgstr ""
 
-#: stock/doctype/material_request/material_request.py:565
+#: setup/doctype/transaction_deletion_record/transaction_deletion_record.py:197
+msgid "{0} is not running. Cannot trigger events for this Document"
+msgstr ""
+
+#: stock/doctype/material_request/material_request.py:566
 msgid "{0} is not the default supplier for any items."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:2300
+#: accounts/doctype/payment_entry/payment_entry.py:2325
 msgid "{0} is on hold till {1}"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:131
+#: accounts/doctype/gl_entry/gl_entry.py:121
 #: accounts/doctype/pricing_rule/pricing_rule.py:165
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:182
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:193
 #: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:118
 msgid "{0} is required"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:343
+#: manufacturing/doctype/work_order/work_order.js:362
 msgid "{0} items in progress"
 msgstr ""
 
-#: manufacturing/doctype/work_order/work_order.js:327
+#: manufacturing/doctype/work_order/work_order.js:346
 msgid "{0} items produced"
 msgstr ""
 
@@ -81042,7 +82607,7 @@
 msgid "{0} must be negative in return document"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1988
+#: accounts/doctype/sales_invoice/sales_invoice.py:1957
 msgid "{0} not allowed to transact with {1}. Please change the Company."
 msgstr ""
 
@@ -81058,60 +82623,60 @@
 msgid "{0} payment entries can not be filtered by {1}"
 msgstr ""
 
-#: controllers/stock_controller.py:899
+#: controllers/stock_controller.py:1085
 msgid "{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}."
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:451
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:505
 msgid "{0} units are reserved for Item {1} in Warehouse {2}, please un-reserve the same to {3} the Stock Reconciliation."
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:702
+#: stock/doctype/pick_list/pick_list.py:773
 msgid "{0} units of Item {1} is not available."
 msgstr ""
 
-#: stock/doctype/pick_list/pick_list.py:718
+#: stock/doctype/pick_list/pick_list.py:789
 msgid "{0} units of Item {1} is picked in another Pick List."
 msgstr ""
 
-#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:135
+#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:145
 msgid "{0} units of {1} are required in {2}{3}, on {4} {5} for {6} to complete the transaction."
 msgstr ""
 
-#: stock/stock_ledger.py:1340 stock/stock_ledger.py:1829
-#: stock/stock_ledger.py:1845
+#: stock/stock_ledger.py:1366 stock/stock_ledger.py:1836
+#: stock/stock_ledger.py:1852
 msgid "{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction."
 msgstr ""
 
-#: stock/stock_ledger.py:1955 stock/stock_ledger.py:2005
+#: stock/stock_ledger.py:1962 stock/stock_ledger.py:2012
 msgid "{0} units of {1} needed in {2} on {3} {4} to complete this transaction."
 msgstr ""
 
-#: stock/stock_ledger.py:1334
+#: stock/stock_ledger.py:1360
 msgid "{0} units of {1} needed in {2} to complete this transaction."
 msgstr ""
 
-#: stock/utils.py:432
+#: stock/utils.py:427
 msgid "{0} valid serial nos for Item {1}"
 msgstr ""
 
-#: stock/doctype/item/item.js:548
+#: stock/doctype/item/item.js:615
 msgid "{0} variants created."
 msgstr ""
 
-#: accounts/doctype/payment_term/payment_term.js:17
+#: accounts/doctype/payment_term/payment_term.js:19
 msgid "{0} will be given as discount."
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:773
+#: manufacturing/doctype/job_card/job_card.py:780
 msgid "{0} {1}"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:203
+#: public/js/utils/serial_no_batch_selector.js:206
 msgid "{0} {1} Manually"
 msgstr ""
 
-#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:433
+#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:432
 msgid "{0} {1} Partially Reconciled"
 msgstr ""
 
@@ -81123,9 +82688,9 @@
 msgid "{0} {1} created"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:506
-#: accounts/doctype/payment_entry/payment_entry.py:562
-#: accounts/doctype/payment_entry/payment_entry.py:2065
+#: accounts/doctype/payment_entry/payment_entry.py:515
+#: accounts/doctype/payment_entry/payment_entry.py:571
+#: accounts/doctype/payment_entry/payment_entry.py:2084
 msgid "{0} {1} does not exist"
 msgstr ""
 
@@ -81141,8 +82706,8 @@
 msgid "{0} {1} has already been partly paid. Please use the 'Get Outstanding Invoice' or the 'Get Outstanding Orders' button to get the latest outstanding amounts."
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:449
-#: selling/doctype/sales_order/sales_order.py:481
+#: buying/doctype/purchase_order/purchase_order.py:450
+#: selling/doctype/sales_order/sales_order.py:484
 #: stock/doctype/material_request/material_request.py:198
 msgid "{0} {1} has been modified. Please refresh."
 msgstr ""
@@ -81155,12 +82720,12 @@
 msgid "{0} {1} is allocated twice in this Bank Transaction"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:591
+#: accounts/doctype/payment_entry/payment_entry.py:600
 msgid "{0} {1} is associated with {2}, but Party Account is {3}"
 msgstr ""
 
-#: controllers/buying_controller.py:624 controllers/selling_controller.py:421
-#: controllers/subcontracting_controller.py:806
+#: controllers/buying_controller.py:649 controllers/selling_controller.py:422
+#: controllers/subcontracting_controller.py:810
 msgid "{0} {1} is cancelled or closed"
 msgstr ""
 
@@ -81172,7 +82737,7 @@
 msgid "{0} {1} is cancelled so the action cannot be completed"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:725
+#: accounts/doctype/journal_entry/journal_entry.py:752
 msgid "{0} {1} is closed"
 msgstr ""
 
@@ -81184,7 +82749,7 @@
 msgid "{0} {1} is frozen"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:722
+#: accounts/doctype/journal_entry/journal_entry.py:749
 msgid "{0} {1} is fully billed"
 msgstr ""
 
@@ -81192,7 +82757,7 @@
 msgid "{0} {1} is not active"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:569
+#: accounts/doctype/payment_entry/payment_entry.py:578
 msgid "{0} {1} is not associated with {2} {3}"
 msgstr ""
 
@@ -81200,12 +82765,12 @@
 msgid "{0} {1} is not in any active Fiscal Year"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:719
-#: accounts/doctype/journal_entry/journal_entry.py:760
+#: accounts/doctype/journal_entry/journal_entry.py:746
+#: accounts/doctype/journal_entry/journal_entry.py:787
 msgid "{0} {1} is not submitted"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:598
+#: accounts/doctype/payment_entry/payment_entry.py:607
 msgid "{0} {1} is on hold"
 msgstr ""
 
@@ -81213,11 +82778,11 @@
 msgid "{0} {1} is {2}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:603
+#: accounts/doctype/payment_entry/payment_entry.py:612
 msgid "{0} {1} must be submitted"
 msgstr ""
 
-#: accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py:213
+#: accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py:215
 msgid "{0} {1} not allowed to be reposted. Modify {2} to enable reposting."
 msgstr ""
 
@@ -81225,58 +82790,58 @@
 msgid "{0} {1} status is {2}"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:189
+#: public/js/utils/serial_no_batch_selector.js:191
 msgid "{0} {1} via CSV File"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:254
+#: accounts/doctype/gl_entry/gl_entry.py:208
 msgid "{0} {1}: 'Profit and Loss' type account {2} not allowed in Opening Entry"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:283
+#: accounts/doctype/gl_entry/gl_entry.py:237
 #: accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:87
 msgid "{0} {1}: Account {2} does not belong to Company {3}"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:271
+#: accounts/doctype/gl_entry/gl_entry.py:225
 #: accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:75
 msgid "{0} {1}: Account {2} is a Group Account and group accounts cannot be used in transactions"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:278
+#: accounts/doctype/gl_entry/gl_entry.py:232
 #: accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:82
 msgid "{0} {1}: Account {2} is inactive"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:322
+#: accounts/doctype/gl_entry/gl_entry.py:276
 msgid "{0} {1}: Accounting Entry for {2} can only be made in currency: {3}"
 msgstr ""
 
-#: controllers/stock_controller.py:365
+#: controllers/stock_controller.py:547
 msgid "{0} {1}: Cost Center is mandatory for Item {2}"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:171
+#: accounts/doctype/gl_entry/gl_entry.py:161
 msgid "{0} {1}: Cost Center is required for 'Profit and Loss' account {2}."
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:298
+#: accounts/doctype/gl_entry/gl_entry.py:252
 msgid "{0} {1}: Cost Center {2} does not belong to Company {3}"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:305
+#: accounts/doctype/gl_entry/gl_entry.py:259
 msgid "{0} {1}: Cost Center {2} is a group cost center and group cost centers cannot be used in transactions"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:137
+#: accounts/doctype/gl_entry/gl_entry.py:127
 msgid "{0} {1}: Customer is required against Receivable account {2}"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:159
+#: accounts/doctype/gl_entry/gl_entry.py:149
 msgid "{0} {1}: Either debit or credit amount is required for {2}"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:143
+#: accounts/doctype/gl_entry/gl_entry.py:133
 msgid "{0} {1}: Supplier is required against Payable account {2}"
 msgstr ""
 
@@ -81301,7 +82866,7 @@
 msgid "{0}'s {1} cannot be after {2}'s Expected End Date."
 msgstr ""
 
-#: manufacturing/doctype/job_card/job_card.py:1009
+#: manufacturing/doctype/job_card/job_card.py:1024
 msgid "{0}, complete the operation {1} before the operation {2}."
 msgstr ""
 
@@ -81309,7 +82874,7 @@
 msgid "{0}: {1} does not exists"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:724
+#: accounts/doctype/payment_entry/payment_entry.js:889
 msgid "{0}: {1} must be less than {2}"
 msgstr ""
 
@@ -81317,11 +82882,11 @@
 msgid "{0}{1} Did you rename the item? Please contact Administrator / Tech support"
 msgstr ""
 
-#: controllers/stock_controller.py:1160
+#: controllers/stock_controller.py:1346
 msgid "{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity})"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1148
+#: accounts/report/accounts_receivable/accounts_receivable.py:1156
 msgid "{range4}-Above"
 msgstr ""
 
@@ -81329,11 +82894,11 @@
 msgid "{}"
 msgstr ""
 
-#: controllers/buying_controller.py:712
+#: controllers/buying_controller.py:737
 msgid "{} Assets created for {}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1775
+#: accounts/doctype/sales_invoice/sales_invoice.py:1744
 msgid "{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {}"
 msgstr ""
 
diff --git a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json
index 08026d0..e773d66 100644
--- a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json
+++ b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json
@@ -187,7 +187,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hidden": 1,
    "label": "Address",
    "read_only": 1
@@ -238,7 +238,7 @@
    "link_fieldname": "maintenance_schedule"
   }
  ],
- "modified": "2023-06-03 16:15:43.958072",
+ "modified": "2024-03-22 16:01:11.868813",
  "modified_by": "Administrator",
  "module": "Maintenance",
  "name": "Maintenance Schedule",
diff --git a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
index 75d890c..50ec1f2 100644
--- a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
@@ -26,7 +26,7 @@
 			MaintenanceScheduleItem,
 		)
 
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		company: DF.Link
 		contact_display: DF.SmallText | None
diff --git a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.json b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.json
index b0d5cb8..6124b6f 100644
--- a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.json
+++ b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.json
@@ -83,7 +83,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hidden": 1,
    "label": "Address",
    "read_only": 1
@@ -295,7 +295,7 @@
  "idx": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-06-03 16:19:07.902723",
+ "modified": "2024-03-22 16:01:12.354826",
  "modified_by": "Administrator",
  "module": "Maintenance",
  "name": "Maintenance Visit",
diff --git a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.py b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.py
index d2511b8..b43b419 100644
--- a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.py
+++ b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.py
@@ -22,7 +22,7 @@
 			MaintenanceVisitPurpose,
 		)
 
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		company: DF.Link
 		completion_status: DF.Literal["", "Partially Completed", "Fully Completed"]
diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js
index 2ac28ea..6267ee4 100644
--- a/erpnext/manufacturing/doctype/bom/bom.js
+++ b/erpnext/manufacturing/doctype/bom/bom.js
@@ -400,7 +400,7 @@
 	},
 
 	rm_cost_as_per(frm) {
-		if (in_list(["Valuation Rate", "Last Purchase Rate"], frm.doc.rm_cost_as_per)) {
+		if (["Valuation Rate", "Last Purchase Rate"].includes(frm.doc.rm_cost_as_per)) {
 			frm.set_value("plc_conversion_rate", 1.0);
 		}
 	},
diff --git a/erpnext/manufacturing/doctype/bom/test_bom.py b/erpnext/manufacturing/doctype/bom/test_bom.py
index 4cd0530..2debf91 100644
--- a/erpnext/manufacturing/doctype/bom/test_bom.py
+++ b/erpnext/manufacturing/doctype/bom/test_bom.py
@@ -28,28 +28,6 @@
 
 class TestBOM(FrappeTestCase):
 	@timeout
-	def test_bom_qty(self):
-		from erpnext.stock.doctype.item.test_item import make_item
-
-		# No error.
-		bom = frappe.new_doc("BOM")
-		item = make_item(properties={"is_stock_item": 1})
-		bom.item = fg_item.item_code
-		bom.quantity = 1
-		bom.append(
-			"items",
-			{
-				"item_code": bom_item.item_code,
-				"qty": 0,
-				"uom": bom_item.stock_uom,
-				"stock_uom": bom_item.stock_uom,
-				"rate": 100.0,
-			},
-		)
-		bom.save()
-		self.assertEqual(bom.items[0].qty, 0)
-
-	@timeout
 	def test_get_items(self):
 		from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict
 
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.js b/erpnext/manufacturing/doctype/production_plan/production_plan.js
index 54d1414..6db901c 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.js
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.js
@@ -129,7 +129,7 @@
 				if (
 					frm.doc.mr_items &&
 					frm.doc.mr_items.length &&
-					!in_list(["Material Requested", "Closed"], frm.doc.status)
+					!["Material Requested", "Closed"].includes(frm.doc.status)
 				) {
 					frm.add_custom_button(
 						__("Material Request"),
diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py
index e1c1069..b56e9e1 100644
--- a/erpnext/manufacturing/doctype/work_order/test_work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py
@@ -1208,6 +1208,51 @@
 		except frappe.MandatoryError:
 			self.fail("Batch generation causing failing in Work Order")
 
+	@change_settings("Manufacturing Settings", {"make_serial_no_batch_from_work_order": 1})
+	def test_auto_serial_no_batch_creation(self):
+		from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom
+
+		fg_item = frappe.generate_hash(length=20)
+		child_item = frappe.generate_hash(length=20)
+
+		bom_tree = {fg_item: {child_item: {}}}
+
+		create_nested_bom(bom_tree, prefix="")
+
+		item = frappe.get_doc("Item", fg_item)
+		item.update(
+			{
+				"has_serial_no": 1,
+				"has_batch_no": 1,
+				"serial_no_series": f"SN-TEST-{item.name}.#####",
+				"create_new_batch": 1,
+				"batch_number_series": f"BATCH-TEST-{item.name}.#####",
+			}
+		)
+		item.save()
+
+		try:
+			wo_order = make_wo_order_test_record(item=fg_item, batch_size=5, qty=10, skip_transfer=True)
+			serial_nos = self.get_serial_nos_for_fg(wo_order.name)
+
+			stock_entry = frappe.get_doc(make_stock_entry(wo_order.name, "Manufacture", 10))
+			stock_entry.set_work_order_details()
+			stock_entry.set_serial_no_batch_for_finished_good()
+			for row in stock_entry.items:
+				if row.item_code == fg_item:
+					self.assertTrue(row.serial_and_batch_bundle)
+					self.assertEqual(
+						sorted(get_serial_nos_from_bundle(row.serial_and_batch_bundle)), sorted(serial_nos)
+					)
+
+					sn_doc = frappe.get_doc("Serial and Batch Bundle", row.serial_and_batch_bundle)
+					for row in sn_doc.entries:
+						self.assertTrue(row.serial_no)
+						self.assertTrue(row.batch_no)
+
+		except frappe.MandatoryError:
+			self.fail("Batch generation causing failing in Work Order")
+
 	def get_serial_nos_for_fg(self, work_order):
 		serial_nos = []
 		for row in frappe.get_all("Serial No", filters={"work_order": work_order}):
@@ -2270,6 +2315,7 @@
 	wo_order.planned_start_date = args.planned_start_date or now()
 	wo_order.transfer_material_against = args.transfer_material_against or "Work Order"
 	wo_order.from_wip_warehouse = args.from_wip_warehouse or 0
+	wo_order.batch_size = args.batch_size or 0
 
 	if args.source_warehouse:
 		for item in wo_order.get("required_items"):
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.js b/erpnext/manufacturing/doctype/work_order/work_order.js
index 42f6943..1da33f0 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.js
+++ b/erpnext/manufacturing/doctype/work_order/work_order.js
@@ -9,6 +9,8 @@
 			"Job Card": "Create Job Card",
 		};
 
+		frm.ignore_doctypes_on_cancel_all = ["Serial and Batch Bundle"];
+
 		// Set query for warehouses
 		frm.set_query("wip_warehouse", function () {
 			return {
@@ -194,7 +196,7 @@
 	},
 
 	add_custom_button_to_return_components: function (frm) {
-		if (frm.doc.docstatus === 1 && in_list(["Closed", "Completed"], frm.doc.status)) {
+		if (frm.doc.docstatus === 1 && ["Closed", "Completed"].includes(frm.doc.status)) {
 			let non_consumed_items = frm.doc.required_items.filter((d) => {
 				return flt(d.consumed_qty) < flt(d.transferred_qty - d.returned_qty);
 			});
@@ -594,7 +596,7 @@
 			);
 		}
 
-		if (doc.docstatus === 1 && !in_list(["Closed", "Completed"], doc.status)) {
+		if (doc.docstatus === 1 && !["Closed", "Completed"].includes(doc.status)) {
 			if (doc.status != "Stopped" && doc.status != "Completed") {
 				frm.add_custom_button(
 					__("Stop"),
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index 233ca19..f897a91 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -536,6 +536,12 @@
 			"Item", self.production_item, ["serial_no_series", "item_name", "description"], as_dict=1
 		)
 
+		batches = []
+		if self.has_batch_no:
+			batches = frappe.get_all(
+				"Batch", filters={"reference_name": self.name}, order_by="creation", pluck="name"
+			)
+
 		serial_nos = []
 		if item_details.serial_no_series:
 			serial_nos = get_available_serial_nos(item_details.serial_no_series, self.qty)
@@ -556,10 +562,20 @@
 			"description",
 			"status",
 			"work_order",
+			"batch_no",
 		]
 
 		serial_nos_details = []
+		index = 0
 		for serial_no in serial_nos:
+			index += 1
+			batch_no = None
+			if batches and self.batch_size:
+				batch_no = batches[0]
+
+				if index % self.batch_size == 0:
+					batches.remove(batch_no)
+
 			serial_nos_details.append(
 				(
 					serial_no,
@@ -574,6 +590,7 @@
 					item_details.description,
 					"Inactive",
 					self.name,
+					batch_no,
 				)
 			)
 
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 15dfc36..7c2c439 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -356,7 +356,7 @@
 erpnext.patches.v15_0.create_advance_payment_status
 erpnext.patches.v15_0.allow_on_submit_dimensions_for_repostable_doctypes
 erpnext.patches.v14_0.create_accounting_dimensions_in_reconciliation_tool
-erpnext.patches.v14_0.update_flag_for_return_invoices
+erpnext.patches.v14_0.update_flag_for_return_invoices #2024-03-22
 # below migration patch should always run last
 erpnext.patches.v14_0.migrate_gl_to_payment_ledger
 erpnext.stock.doctype.delivery_note.patches.drop_unused_return_against_index # 2023-12-20
diff --git a/erpnext/patches/v14_0/update_flag_for_return_invoices.py b/erpnext/patches/v14_0/update_flag_for_return_invoices.py
index feb43be..bea9957 100644
--- a/erpnext/patches/v14_0/update_flag_for_return_invoices.py
+++ b/erpnext/patches/v14_0/update_flag_for_return_invoices.py
@@ -12,6 +12,10 @@
 	creation_date = "2024-01-25"
 
 	si = qb.DocType("Sales Invoice")
+
+	# unset flag, as migration would have set it for all records, as the field was introduced with default '1'
+	qb.update(si).set(si.update_outstanding_for_self, False).run()
+
 	if cr_notes := (
 		qb.from_(si)
 		.select(si.name)
@@ -37,6 +41,10 @@
 			).run()
 
 	pi = qb.DocType("Purchase Invoice")
+
+	# unset flag, as migration would have set it for all records, as the field was introduced with default '1'
+	qb.update(pi).set(pi.update_outstanding_for_self, False).run()
+
 	if dr_notes := (
 		qb.from_(pi)
 		.select(pi.name)
diff --git a/erpnext/projects/doctype/project/project.js b/erpnext/projects/doctype/project/project.js
index 16ac8db..49e8d84 100644
--- a/erpnext/projects/doctype/project/project.js
+++ b/erpnext/projects/doctype/project/project.js
@@ -27,8 +27,6 @@
 			};
 		};
 
-		frm.set_query("customer", "erpnext.controllers.queries.customer_query");
-
 		frm.set_query("user", "users", function () {
 			return {
 				query: "erpnext.projects.doctype.project.project.get_users_for_project",
diff --git a/erpnext/public/js/bom_configurator/bom_configurator.bundle.js b/erpnext/public/js/bom_configurator/bom_configurator.bundle.js
index 454a2a4..5061be9 100644
--- a/erpnext/public/js/bom_configurator/bom_configurator.bundle.js
+++ b/erpnext/public/js/bom_configurator/bom_configurator.bundle.js
@@ -107,7 +107,7 @@
 				this.frm?.doc.docstatus === 0
 					? [
 							{
-								label: __(frappe.utils.icon("edit", "sm") + " Qty"),
+								label: `${frappe.utils.icon("edit", "sm")} ${__("Qty")}`,
 								click: function (node) {
 									let view = frappe.views.trees["BOM Configurator"];
 									view.events.edit_qty(node, view);
@@ -115,7 +115,7 @@
 								btnClass: "hidden-xs",
 							},
 							{
-								label: __(frappe.utils.icon("add", "sm") + " Raw Material"),
+								label: `${frappe.utils.icon("add", "sm")} ${__("Raw Material")}`,
 								click: function (node) {
 									let view = frappe.views.trees["BOM Configurator"];
 									view.events.add_item(node, view);
@@ -126,7 +126,7 @@
 								btnClass: "hidden-xs",
 							},
 							{
-								label: __(frappe.utils.icon("add", "sm") + " Sub Assembly"),
+								label: `${frappe.utils.icon("add", "sm")} ${__("Sub Assembly")}`,
 								click: function (node) {
 									let view = frappe.views.trees["BOM Configurator"];
 									view.events.add_sub_assembly(node, view);
@@ -156,7 +156,7 @@
 								btnClass: "hidden-xs expand-all-btn",
 							},
 							{
-								label: __(frappe.utils.icon("move", "sm") + " Sub Assembly"),
+								label: `${frappe.utils.icon("move", "sm")} ${__("Sub Assembly")}`,
 								click: function (node) {
 									let view = frappe.views.trees["BOM Configurator"];
 									view.events.convert_to_sub_assembly(node, view);
@@ -167,7 +167,7 @@
 								btnClass: "hidden-xs",
 							},
 							{
-								label: __(frappe.utils.icon("delete", "sm") + __(" Item")),
+								label: `${frappe.utils.icon("delete", "sm")} ${__("Item")}`,
 								click: function (node) {
 									let view = frappe.views.trees["BOM Configurator"];
 									view.events.delete_node(node, view);
diff --git a/erpnext/public/js/communication.js b/erpnext/public/js/communication.js
index d9187f8b..c8905e1 100644
--- a/erpnext/public/js/communication.js
+++ b/erpnext/public/js/communication.js
@@ -20,7 +20,7 @@
 			);
 		}
 
-		if (!in_list(["Lead", "Opportunity"], frm.doc.reference_doctype)) {
+		if (!["Lead", "Opportunity"].includes(frm.doc.reference_doctype)) {
 			frm.add_custom_button(
 				__("Lead"),
 				() => {
diff --git a/erpnext/public/js/controllers/accounts.js b/erpnext/public/js/controllers/accounts.js
index f0d8cbb..964a175 100644
--- a/erpnext/public/js/controllers/accounts.js
+++ b/erpnext/public/js/controllers/accounts.js
@@ -11,7 +11,7 @@
 			setup: function(frm) {
 				// set conditional display for rate column in taxes
 				$(frm.wrapper).on('grid-row-render', function(e, grid_row) {
-					if(in_list(['Sales Taxes and Charges', 'Purchase Taxes and Charges'], grid_row.doc.doctype)) {
+					if(['Sales Taxes and Charges', 'Purchase Taxes and Charges'].includes(grid_row.doc.doctype)) {
 						me.set_conditional_mandatory_rate_or_amount(grid_row);
 					}
 				});
diff --git a/erpnext/public/js/controllers/buying.js b/erpnext/public/js/controllers/buying.js
index 1d0d47e..1e94c00 100644
--- a/erpnext/public/js/controllers/buying.js
+++ b/erpnext/public/js/controllers/buying.js
@@ -74,11 +74,6 @@
 				me.frm.set_query('billing_address', erpnext.queries.company_address_query);
 				erpnext.accounts.dimensions.setup_dimension_filters(me.frm, me.frm.doctype);
 
-				if(this.frm.fields_dict.supplier) {
-					this.frm.set_query("supplier", function() {
-						return{	query: "erpnext.controllers.queries.supplier_query" }});
-				}
-
 				this.frm.set_query("item_code", "items", function() {
 					if (me.frm.doc.is_subcontracted) {
 						var filters = {'supplier': me.frm.doc.supplier};
@@ -134,7 +129,7 @@
 			}
 
 			toggle_subcontracting_fields() {
-				if (in_list(['Purchase Receipt', 'Purchase Invoice'], this.frm.doc.doctype)) {
+				if (['Purchase Receipt', 'Purchase Invoice'].includes(this.frm.doc.doctype)) {
 					this.frm.fields_dict.supplied_items.grid.update_docfield_property('consumed_qty',
 						'read_only', this.frm.doc.__onload && this.frm.doc.__onload.backflush_based_on === 'BOM');
 
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index 3099184..0d272b8 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -9,7 +9,7 @@
 	apply_pricing_rule_on_item(item) {
 		let effective_item_rate = item.price_list_rate;
 		let item_rate = item.rate;
-		if (in_list(["Sales Order", "Quotation"], item.parenttype) && item.blanket_order_rate) {
+		if (["Sales Order", "Quotation"].includes(item.parenttype) && item.blanket_order_rate) {
 			effective_item_rate = item.blanket_order_rate;
 		}
 		if (item.margin_type == "Percentage") {
@@ -26,7 +26,7 @@
 			item.discount_amount = flt(item.rate_with_margin) * flt(item.discount_percentage) / 100;
 		}
 
-		if (item.discount_amount) {
+		if (item.discount_amount > 0) {
 			item_rate = flt((item.rate_with_margin) - (item.discount_amount), precision('rate', item));
 			item.discount_percentage = 100 * flt(item.discount_amount) / flt(item.rate_with_margin);
 		}
@@ -52,7 +52,7 @@
 
 		// Advance calculation applicable to Sales/Purchase Invoice
 		if (
-			in_list(["Sales Invoice", "POS Invoice", "Purchase Invoice"], this.frm.doc.doctype)
+			["Sales Invoice", "POS Invoice", "Purchase Invoice"].includes(this.frm.doc.doctype)
 			&& this.frm.doc.docstatus < 2
 			&& !this.frm.doc.is_return
 		) {
@@ -60,7 +60,7 @@
 		}
 
 		if (
-			in_list(["Sales Invoice", "POS Invoice"], this.frm.doc.doctype)
+			["Sales Invoice", "POS Invoice"].includes(this.frm.doc.doctype)
 			&& this.frm.doc.is_pos
 			&& this.frm.doc.is_return
 		) {
@@ -69,7 +69,7 @@
 		}
 
 		// Sales person's commission
-		if (in_list(["Quotation", "Sales Order", "Delivery Note", "Sales Invoice"], this.frm.doc.doctype)) {
+		if (["Quotation", "Sales Order", "Delivery Note", "Sales Invoice"].includes(this.frm.doc.doctype)) {
 			this.calculate_commission();
 			this.calculate_contribution();
 		}
@@ -575,7 +575,7 @@
 			? this.frm.doc["taxes"][tax_count - 1].total + flt(this.frm.doc.grand_total_diff)
 			: this.frm.doc.net_total);
 
-		if(in_list(["Quotation", "Sales Order", "Delivery Note", "Sales Invoice", "POS Invoice"], this.frm.doc.doctype)) {
+		if(["Quotation", "Sales Order", "Delivery Note", "Sales Invoice", "POS Invoice"].includes(this.frm.doc.doctype)) {
 			this.frm.doc.base_grand_total = (this.frm.doc.total_taxes_and_charges) ?
 				flt(this.frm.doc.grand_total * this.frm.doc.conversion_rate) : this.frm.doc.base_net_total;
 		} else {
@@ -583,7 +583,7 @@
 			this.frm.doc.taxes_and_charges_added = this.frm.doc.taxes_and_charges_deducted = 0.0;
 			if(tax_count) {
 				$.each(this.frm.doc["taxes"] || [], function(i, tax) {
-					if (in_list(["Valuation and Total", "Total"], tax.category)) {
+					if (["Valuation and Total", "Total"].includes(tax.category)) {
 						if(tax.add_deduct_tax == "Add") {
 							me.frm.doc.taxes_and_charges_added += flt(tax.tax_amount_after_discount_amount);
 						} else {
@@ -729,7 +729,7 @@
 			var actual_taxes_dict = {};
 
 			$.each(this.frm.doc["taxes"] || [], function(i, tax) {
-				if (in_list(["Actual", "On Item Quantity"], tax.charge_type)) {
+				if (["Actual", "On Item Quantity"].includes(tax.charge_type)) {
 					var tax_amount = (tax.category == "Valuation") ? 0.0 : tax.tax_amount;
 					tax_amount *= (tax.add_deduct_tax == "Deduct") ? -1.0 : 1.0;
 					actual_taxes_dict[tax.idx] = tax_amount;
@@ -774,7 +774,7 @@
 		// NOTE:
 		// paid_amount and write_off_amount is only for POS/Loyalty Point Redemption Invoice
 		// total_advance is only for non POS Invoice
-		if(in_list(["Sales Invoice", "POS Invoice"], this.frm.doc.doctype) && this.frm.doc.is_return){
+		if(["Sales Invoice", "POS Invoice"].includes(this.frm.doc.doctype) && this.frm.doc.is_return){
 			this.calculate_paid_amount();
 		}
 
@@ -782,7 +782,7 @@
 
 		frappe.model.round_floats_in(this.frm.doc, ["grand_total", "total_advance", "write_off_amount"]);
 
-		if(in_list(["Sales Invoice", "POS Invoice", "Purchase Invoice"], this.frm.doc.doctype)) {
+		if(["Sales Invoice", "POS Invoice", "Purchase Invoice"].includes(this.frm.doc.doctype)) {
 			let grand_total = this.frm.doc.rounded_total || this.frm.doc.grand_total;
 			let base_grand_total = this.frm.doc.base_rounded_total || this.frm.doc.base_grand_total;
 
@@ -805,7 +805,7 @@
 				this.frm.refresh_field("base_paid_amount");
 			}
 
-			if(in_list(["Sales Invoice", "POS Invoice"], this.frm.doc.doctype)) {
+			if(["Sales Invoice", "POS Invoice"].includes(this.frm.doc.doctype)) {
 				let total_amount_for_payment = (this.frm.doc.redeem_loyalty_points && this.frm.doc.loyalty_amount)
 					? flt(total_amount_to_pay - this.frm.doc.loyalty_amount, precision("base_grand_total"))
 					: total_amount_to_pay;
@@ -909,7 +909,7 @@
 	calculate_change_amount(){
 		this.frm.doc.change_amount = 0.0;
 		this.frm.doc.base_change_amount = 0.0;
-		if(in_list(["Sales Invoice", "POS Invoice"], this.frm.doc.doctype)
+		if(["Sales Invoice", "POS Invoice"].includes(this.frm.doc.doctype)
 			&& this.frm.doc.paid_amount > this.frm.doc.grand_total && !this.frm.doc.is_return) {
 
 			var payment_types = $.map(this.frm.doc.payments, function(d) { return d.type; });
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 8135bb2..63f39b5 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -315,7 +315,7 @@
 	}
 
 	setup_quality_inspection() {
-		if(!in_list(["Delivery Note", "Sales Invoice", "Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"], this.frm.doc.doctype)) {
+		if(!["Delivery Note", "Sales Invoice", "Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"].includes(this.frm.doc.doctype)) {
 			return;
 		}
 
@@ -327,7 +327,7 @@
 			this.frm.page.set_inner_btn_group_as_primary(__('Create'));
 		}
 
-		const inspection_type = in_list(["Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"], this.frm.doc.doctype)
+		const inspection_type = ["Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"].includes(this.frm.doc.doctype)
 			? "Incoming" : "Outgoing";
 
 		let quality_inspection_field = this.frm.get_docfield("items", "quality_inspection");
@@ -359,7 +359,7 @@
 
 	make_payment_request() {
 		let me = this;
-		const payment_request_type = (in_list(['Sales Order', 'Sales Invoice'], this.frm.doc.doctype))
+		const payment_request_type = (['Sales Order', 'Sales Invoice'].includes(this.frm.doc.doctype))
 			? "Inward" : "Outward";
 
 		frappe.call({
@@ -474,7 +474,7 @@
 	setup_sms() {
 		var me = this;
 		let blacklist = ['Purchase Invoice', 'BOM'];
-		if(this.frm.doc.docstatus===1 && !in_list(["Lost", "Stopped", "Closed"], this.frm.doc.status)
+		if(this.frm.doc.docstatus===1 && !["Lost", "Stopped", "Closed"].includes(this.frm.doc.status)
 			&& !blacklist.includes(this.frm.doctype)) {
 			this.frm.page.add_menu_item(__('Send SMS'), function() { me.send_sms(); });
 		}
@@ -760,7 +760,7 @@
 	}
 
 	on_submit() {
-		if (in_list(["Purchase Invoice", "Sales Invoice"], this.frm.doc.doctype)
+		if (["Purchase Invoice", "Sales Invoice"].includes(this.frm.doc.doctype)
 			&& !this.frm.doc.update_stock) {
 			return;
 		}
@@ -864,7 +864,7 @@
 		}
 
 		var set_party_account = function(set_pricing) {
-			if (in_list(["Sales Invoice", "Purchase Invoice"], me.frm.doc.doctype)) {
+			if (["Sales Invoice", "Purchase Invoice"].includes(me.frm.doc.doctype)) {
 				if(me.frm.doc.doctype=="Sales Invoice") {
 					var party_type = "Customer";
 					var party_account_field = 'debit_to';
@@ -899,7 +899,7 @@
 		}
 
 		if (frappe.meta.get_docfield(this.frm.doctype, "shipping_address") &&
-			in_list(['Purchase Order', 'Purchase Receipt', 'Purchase Invoice'], this.frm.doctype)) {
+			['Purchase Order', 'Purchase Receipt', 'Purchase Invoice'].includes(this.frm.doctype)) {
 			erpnext.utils.get_shipping_address(this.frm, function() {
 				set_party_account(set_pricing);
 			});
@@ -1276,8 +1276,11 @@
 
 	calculate_stock_uom_rate(doc, cdt, cdn) {
 		let item = frappe.get_doc(cdt, cdn);
-		item.stock_uom_rate = flt(item.rate)/flt(item.conversion_factor);
-		refresh_field("stock_uom_rate", item.name, item.parentfield);
+
+		if (item?.rate) {
+			item.stock_uom_rate = flt(item.rate) / flt(item.conversion_factor);
+			refresh_field("stock_uom_rate", item.name, item.parentfield);
+		}
 	}
 	service_stop_date(frm, cdt, cdn) {
 		var child = locals[cdt][cdn];
@@ -1620,7 +1623,7 @@
 			"doctype": me.frm.doc.doctype,
 			"name": me.frm.doc.name,
 			"is_return": cint(me.frm.doc.is_return),
-			"update_stock": in_list(['Sales Invoice', 'Purchase Invoice'], me.frm.doc.doctype) ? cint(me.frm.doc.update_stock) : 0,
+			"update_stock": ['Sales Invoice', 'Purchase Invoice'].includes(me.frm.doc.doctype) ? cint(me.frm.doc.update_stock) : 0,
 			"conversion_factor": me.frm.doc.conversion_factor,
 			"pos_profile": me.frm.doc.doctype == 'Sales Invoice' ? me.frm.doc.pos_profile : '',
 			"coupon_code": me.frm.doc.coupon_code
@@ -2264,9 +2267,9 @@
 	}
 
 	get_method_for_payment() {
-		var method = "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry";
-		if(cur_frm.doc.__onload && cur_frm.doc.__onload.make_payment_via_journal_entry){
-			if(in_list(['Sales Invoice', 'Purchase Invoice'],  cur_frm.doc.doctype)){
+		let method = "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry";
+		if(this.frm.doc.__onload && this.frm.doc.__onload.make_payment_via_journal_entry){
+			if(['Sales Invoice', 'Purchase Invoice'].includes( this.frm.doc.doctype)){
 				method = "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_invoice";
 			}else {
 				method= "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_order";
@@ -2506,7 +2509,7 @@
 	}
 
 	frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js", function() {
-		if (in_list(["Sales Invoice", "Delivery Note"], frm.doc.doctype)) {
+		if (["Sales Invoice", "Delivery Note"].includes(frm.doc.doctype)) {
 			item_row.type_of_transaction = frm.doc.is_return ? "Inward" : "Outward";
 		} else {
 			item_row.type_of_transaction = frm.doc.is_return ? "Outward" : "Inward";
diff --git a/erpnext/public/js/payment/payments.js b/erpnext/public/js/payment/payments.js
index 0e58420..c91bb04 100644
--- a/erpnext/public/js/payment/payments.js
+++ b/erpnext/public/js/payment/payments.js
@@ -218,7 +218,7 @@
 
 	update_paid_amount(update_write_off) {
 		var me = this;
-		if (in_list(["change_amount", "write_off_amount"], this.idx)) {
+		if (["change_amount", "write_off_amount"].includes(this.idx)) {
 			var value = me.selected_mode.val();
 			if (me.idx == "change_amount") {
 				me.change_amount(value);
diff --git a/erpnext/public/js/projects/timer.js b/erpnext/public/js/projects/timer.js
index 8370cc6..10f0627 100644
--- a/erpnext/public/js/projects/timer.js
+++ b/erpnext/public/js/projects/timer.js
@@ -110,7 +110,7 @@
 
 	// Stop the timer and update the time logged by the timer on click of 'Complete' button
 	$btn_complete.click(function () {
-		var grid_row = cur_frm.fields_dict["time_logs"].grid.get_row(row.idx - 1);
+		var grid_row = frm.fields_dict["time_logs"].grid.get_row(row.idx - 1);
 		var args = dialog.get_values();
 		grid_row.doc.completed = 1;
 		grid_row.doc.activity_type = args.activity_type;
diff --git a/erpnext/public/js/queries.js b/erpnext/public/js/queries.js
index b7e685c..d7edac3 100644
--- a/erpnext/public/js/queries.js
+++ b/erpnext/public/js/queries.js
@@ -12,14 +12,6 @@
 		return { query: "erpnext.controllers.queries.lead_query" };
 	},
 
-	customer: function () {
-		return { query: "erpnext.controllers.queries.customer_query" };
-	},
-
-	supplier: function () {
-		return { query: "erpnext.controllers.queries.supplier_query" };
-	},
-
 	item: function (filters) {
 		var args = { query: "erpnext.controllers.queries.item_query" };
 		if (filters) args["filters"] = filters;
diff --git a/erpnext/public/js/sms_manager.js b/erpnext/public/js/sms_manager.js
index d3147bb..63833da 100644
--- a/erpnext/public/js/sms_manager.js
+++ b/erpnext/public/js/sms_manager.js
@@ -28,11 +28,11 @@
 			"Purchase Receipt": "Items has been received against purchase receipt: " + doc.name,
 		};
 
-		if (in_list(["Sales Order", "Delivery Note", "Sales Invoice"], doc.doctype))
+		if (["Sales Order", "Delivery Note", "Sales Invoice"].includes(doc.doctype))
 			this.show(doc.contact_person, "Customer", doc.customer, "", default_msg[doc.doctype]);
 		else if (doc.doctype === "Quotation")
 			this.show(doc.contact_person, "Customer", doc.party_name, "", default_msg[doc.doctype]);
-		else if (in_list(["Purchase Order", "Purchase Receipt"], doc.doctype))
+		else if (["Purchase Order", "Purchase Receipt"].includes(doc.doctype))
 			this.show(doc.contact_person, "Supplier", doc.supplier, "", default_msg[doc.doctype]);
 		else if (doc.doctype == "Lead") this.show("", "", "", doc.mobile_no, default_msg[doc.doctype]);
 		else if (doc.doctype == "Opportunity")
diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js
index 801376b..6239417 100644
--- a/erpnext/public/js/utils/party.js
+++ b/erpnext/public/js/utils/party.js
@@ -14,10 +14,10 @@
 	if (!args) {
 		if (
 			(frm.doctype != "Purchase Order" && frm.doc.customer) ||
-			(frm.doc.party_name && in_list(["Quotation", "Opportunity"], frm.doc.doctype))
+			(frm.doc.party_name && ["Quotation", "Opportunity"].includes(frm.doc.doctype))
 		) {
 			let party_type = "Customer";
-			if (frm.doc.quotation_to && in_list(["Lead", "Prospect"], frm.doc.quotation_to)) {
+			if (frm.doc.quotation_to && ["Lead", "Prospect"].includes(frm.doc.quotation_to)) {
 				party_type = frm.doc.quotation_to;
 			}
 
diff --git a/erpnext/public/js/utils/sales_common.js b/erpnext/public/js/utils/sales_common.js
index f2b7331..00df1c5 100644
--- a/erpnext/public/js/utils/sales_common.js
+++ b/erpnext/public/js/utils/sales_common.js
@@ -303,7 +303,7 @@
 				if ((doc.packed_items || []).length) {
 					$(this.frm.fields_dict.packing_list.row.wrapper).toggle(true);
 
-					if (in_list(["Delivery Note", "Sales Invoice"], doc.doctype)) {
+					if (["Delivery Note", "Sales Invoice"].includes(doc.doctype)) {
 						var help_msg =
 							"<div class='alert alert-warning'>" +
 							__(
@@ -315,7 +315,7 @@
 					}
 				} else {
 					$(this.frm.fields_dict.packing_list.row.wrapper).toggle(false);
-					if (in_list(["Delivery Note", "Sales Invoice"], doc.doctype)) {
+					if (["Delivery Note", "Sales Invoice"].includes(doc.doctype)) {
 						frappe.meta.get_docfield(doc.doctype, "product_bundle_help", doc.name).options = "";
 					}
 				}
@@ -416,7 +416,7 @@
 
 			project() {
 				let me = this;
-				if (in_list(["Delivery Note", "Sales Invoice", "Sales Order"], this.frm.doc.doctype)) {
+				if (["Delivery Note", "Sales Invoice", "Sales Order"].includes(this.frm.doc.doctype)) {
 					if (this.frm.doc.project) {
 						frappe.call({
 							method: "erpnext.projects.doctype.project.project.get_cost_center_name",
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index 24133b8..42d37bf4 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -542,6 +542,10 @@
 			frappe.throw(__("Please add atleast one Serial No / Batch No"));
 		}
 
+		if (!warehouse) {
+			frappe.throw(__("Please select a Warehouse"));
+		}
+
 		frappe
 			.call({
 				method: "erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle.add_serial_batch_ledgers",
diff --git a/erpnext/public/scss/erpnext.scss b/erpnext/public/scss/erpnext.scss
index e45ae50..3d8ee89 100644
--- a/erpnext/public/scss/erpnext.scss
+++ b/erpnext/public/scss/erpnext.scss
@@ -548,3 +548,15 @@
 	align-items: center;
 	justify-content: center;
 }
+
+.frappe-control[data-fieldname="other_charges_calculation"] .ql-editor,
+.frappe-control[data-fieldname="address_display"] .ql-editor,
+.frappe-control[data-fieldname="shipping_address_display"] .ql-editor,
+.frappe-control[data-fieldname="shipping_address"] .ql-editor,
+.frappe-control[data-fieldname="dispatch_address"] .ql-editor,
+.frappe-control[data-fieldname="source_address_display"] .ql-editor,
+.frappe-control[data-fieldname="target_address_display"] .ql-editor,
+.frappe-control[data-fieldname="billing_address_display"] .ql-editor,
+.frappe-control[data-fieldname="company_address_display"] .ql-editor {
+	white-space: normal;
+}
diff --git a/erpnext/regional/doctype/import_supplier_invoice/import_supplier_invoice.js b/erpnext/regional/doctype/import_supplier_invoice/import_supplier_invoice.js
index 5fbb5cb..7aa8012 100644
--- a/erpnext/regional/doctype/import_supplier_invoice/import_supplier_invoice.js
+++ b/erpnext/regional/doctype/import_supplier_invoice/import_supplier_invoice.js
@@ -34,7 +34,7 @@
 	},
 
 	toggle_read_only_fields: function (frm) {
-		if (in_list(["File Import Completed", "Processing File Data"], frm.doc.status)) {
+		if (["File Import Completed", "Processing File Data"].includes(frm.doc.status)) {
 			cur_frm.set_read_only();
 			cur_frm.refresh_fields();
 			frm.set_df_property("import_invoices", "hidden", 1);
diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json
index db712d9..41c6311 100644
--- a/erpnext/selling/doctype/customer/customer.json
+++ b/erpnext/selling/doctype/customer/customer.json
@@ -583,7 +583,7 @@
    "link_fieldname": "party"
   }
  ],
- "modified": "2023-12-28 13:15:36.298369",
+ "modified": "2024-03-16 19:41:47.971815",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Customer",
@@ -661,7 +661,7 @@
   }
  ],
  "quick_entry": 1,
- "search_fields": "customer_name,customer_group,territory, mobile_no,primary_address",
+ "search_fields": "customer_group,territory, mobile_no,primary_address",
  "show_name_in_global_search": 1,
  "sort_field": "modified",
  "sort_order": "DESC",
diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py
index a8ebccd..7e6d6de 100644
--- a/erpnext/selling/doctype/customer/test_customer.py
+++ b/erpnext/selling/doctype/customer/test_customer.py
@@ -370,37 +370,6 @@
 		due_date = get_due_date("2017-01-22", "Customer", "_Test Customer")
 		self.assertEqual(due_date, "2017-01-22")
 
-	def test_serach_fields_for_customer(self):
-		from erpnext.controllers.queries import customer_query
-
-		frappe.db.set_single_value("Selling Settings", "cust_master_name", "Naming Series")
-
-		make_property_setter(
-			"Customer", None, "search_fields", "customer_group", "Data", for_doctype="Doctype"
-		)
-
-		data = customer_query(
-			"Customer", "_Test Customer", "", 0, 20, filters={"name": "_Test Customer"}, as_dict=True
-		)
-
-		self.assertEqual(data[0].name, "_Test Customer")
-		self.assertEqual(data[0].customer_group, "_Test Customer Group")
-		self.assertTrue("territory" not in data[0])
-
-		make_property_setter(
-			"Customer", None, "search_fields", "customer_group, territory", "Data", for_doctype="Doctype"
-		)
-		data = customer_query(
-			"Customer", "_Test Customer", "", 0, 20, filters={"name": "_Test Customer"}, as_dict=True
-		)
-
-		self.assertEqual(data[0].name, "_Test Customer")
-		self.assertEqual(data[0].customer_group, "_Test Customer Group")
-		self.assertEqual(data[0].territory, "_Test Territory")
-		self.assertTrue("territory" in data[0])
-
-		frappe.db.set_single_value("Selling Settings", "cust_master_name", "Customer Name")
-
 	def test_parse_full_name(self):
 		first, middle, last = parse_full_name("John")
 		self.assertEqual(first, "John")
diff --git a/erpnext/selling/doctype/installation_note/installation_note.json b/erpnext/selling/doctype/installation_note/installation_note.json
index 1e22f44..fc34c73 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.json
+++ b/erpnext/selling/doctype/installation_note/installation_note.json
@@ -94,7 +94,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hidden": 1,
    "label": "Address",
    "read_only": 1
@@ -238,7 +238,7 @@
  "idx": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2024-02-04 18:20:12.020313",
+ "modified": "2024-03-22 16:01:13.513355",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Installation Note",
@@ -271,4 +271,4 @@
  "states": [],
  "timeline_field": "customer",
  "title_field": "customer_name"
-}
+}
\ No newline at end of file
diff --git a/erpnext/selling/doctype/installation_note/installation_note.py b/erpnext/selling/doctype/installation_note/installation_note.py
index d1bfd91..ac7cd60 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.py
+++ b/erpnext/selling/doctype/installation_note/installation_note.py
@@ -23,7 +23,7 @@
 			InstallationNoteItem,
 		)
 
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		company: DF.Link
 		contact_display: DF.SmallText | None
@@ -38,6 +38,7 @@
 		inst_time: DF.Time | None
 		items: DF.Table[InstallationNoteItem]
 		naming_series: DF.Literal["MAT-INS-.YYYY.-"]
+		project: DF.Link | None
 		remarks: DF.SmallText | None
 		status: DF.Literal["Draft", "Submitted", "Cancelled"]
 		territory: DF.Link
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 6e2b726..95cbfd0 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -1,6 +1,8 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+cur_frm.cscript.tax_table = "Sales Taxes and Charges";
+
 erpnext.accounts.taxes.setup_tax_validations("Sales Taxes and Charges Template");
 erpnext.accounts.taxes.setup_tax_filters("Sales Taxes and Charges");
 erpnext.pre_sales.set_as_lost("Quotation");
diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json
index 8c816cf..bb6e0bd 100644
--- a/erpnext/selling/doctype/quotation/quotation.json
+++ b/erpnext/selling/doctype/quotation/quotation.json
@@ -265,7 +265,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Address",
    "oldfieldname": "customer_address",
    "oldfieldtype": "Small Text",
@@ -318,7 +318,7 @@
   },
   {
    "fieldname": "shipping_address",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Shipping Address",
    "print_hide": 1,
    "read_only": 1
@@ -557,7 +557,7 @@
   },
   {
    "fieldname": "other_charges_calculation",
-   "fieldtype": "Long Text",
+   "fieldtype": "Text Editor",
    "label": "Taxes and Charges Calculation",
    "no_copy": 1,
    "oldfieldtype": "HTML",
@@ -965,7 +965,7 @@
   },
   {
    "fieldname": "company_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Company Address",
    "read_only": 1
   },
@@ -1073,7 +1073,7 @@
  "idx": 82,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-06-03 16:21:04.980033",
+ "modified": "2024-03-22 16:15:10.488656",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Quotation",
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 13d17d6..6977f06 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -34,7 +34,7 @@
 		from erpnext.stock.doctype.packed_item.packed_item import PackedItem
 
 		additional_discount_percentage: DF.Float
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		apply_discount_on: DF.Literal["", "Grand Total", "Net Total"]
 		auto_repeat: DF.Link | None
@@ -49,7 +49,7 @@
 		campaign: DF.Link | None
 		company: DF.Link
 		company_address: DF.Link | None
-		company_address_display: DF.SmallText | None
+		company_address_display: DF.TextEditor | None
 		competitors: DF.TableMultiSelect[CompetitorDetail]
 		contact_display: DF.SmallText | None
 		contact_email: DF.Data | None
@@ -78,7 +78,7 @@
 		opportunity: DF.Link | None
 		order_lost_reason: DF.SmallText | None
 		order_type: DF.Literal["", "Sales", "Maintenance", "Shopping Cart"]
-		other_charges_calculation: DF.LongText | None
+		other_charges_calculation: DF.TextEditor | None
 		packed_items: DF.Table[PackedItem]
 		party_name: DF.DynamicLink | None
 		payment_schedule: DF.Table[PaymentSchedule]
@@ -93,7 +93,7 @@
 		scan_barcode: DF.Data | None
 		select_print_heading: DF.Link | None
 		selling_price_list: DF.Link
-		shipping_address: DF.SmallText | None
+		shipping_address: DF.TextEditor | None
 		shipping_address_name: DF.Link | None
 		shipping_rule: DF.Link | None
 		source: DF.Link | None
diff --git a/erpnext/selling/doctype/quotation/test_quotation.py b/erpnext/selling/doctype/quotation/test_quotation.py
index 0b0d6e7..a525942 100644
--- a/erpnext/selling/doctype/quotation/test_quotation.py
+++ b/erpnext/selling/doctype/quotation/test_quotation.py
@@ -42,6 +42,39 @@
 
 		self.assertTrue(sales_order.get("payment_schedule"))
 
+	def test_gross_profit(self):
+		from erpnext.stock.doctype.item.test_item import make_item
+		from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
+		from erpnext.stock.get_item_details import insert_item_price
+
+		item_doc = make_item("_Test Item for Gross Profit", {"is_stock_item": 1})
+		item_code = item_doc.name
+		make_stock_entry(item_code=item_code, qty=10, rate=100, target="_Test Warehouse - _TC")
+
+		selling_price_list = frappe.get_all("Price List", filters={"selling": 1}, limit=1)[0].name
+		frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 1)
+		insert_item_price(
+			frappe._dict(
+				{
+					"item_code": item_code,
+					"price_list": selling_price_list,
+					"price_list_rate": 300,
+					"rate": 300,
+					"conversion_factor": 1,
+					"discount_amount": 0.0,
+					"currency": frappe.db.get_value("Price List", selling_price_list, "currency"),
+					"uom": item_doc.stock_uom,
+				}
+			)
+		)
+
+		quotation = make_quotation(
+			item_code=item_code, qty=1, rate=300, selling_price_list=selling_price_list
+		)
+		self.assertEqual(quotation.items[0].valuation_rate, 100)
+		self.assertEqual(quotation.items[0].gross_profit, 200)
+		frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 0)
+
 	def test_maintain_rate_in_sales_cycle_is_enforced(self):
 		from erpnext.selling.doctype.quotation.quotation import make_sales_order
 
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 28f6edf..715d4d1 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -1,6 +1,8 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+cur_frm.cscript.tax_table = "Sales Taxes and Charges";
+
 erpnext.accounts.taxes.setup_tax_filters("Sales Taxes and Charges");
 erpnext.accounts.taxes.setup_tax_validations("Sales Order");
 erpnext.sales_common.setup_selling_controller();
diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json
index 3c516d0..8f6ae05 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.json
+++ b/erpnext/selling/doctype/sales_order/sales_order.json
@@ -369,7 +369,7 @@
   {
    "allow_on_submit": 1,
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Address",
@@ -415,7 +415,7 @@
   },
   {
    "fieldname": "company_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Company Address",
@@ -450,7 +450,7 @@
   {
    "allow_on_submit": 1,
    "fieldname": "shipping_address",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Shipping Address",
@@ -777,7 +777,7 @@
   },
   {
    "fieldname": "other_charges_calculation",
-   "fieldtype": "Long Text",
+   "fieldtype": "Text Editor",
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Taxes and Charges Calculation",
@@ -1525,7 +1525,7 @@
    "allow_on_submit": 1,
    "depends_on": "dispatch_address_name",
    "fieldname": "dispatch_address",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Dispatch Address",
    "read_only": 1
   },
@@ -1657,7 +1657,7 @@
  "idx": 105,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-10-18 12:41:54.813462",
+ "modified": "2024-03-22 16:15:04.884816",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Sales Order",
@@ -1735,4 +1735,4 @@
  "title_field": "customer_name",
  "track_changes": 1,
  "track_seen": 1
-}
+}
\ No newline at end of file
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 4956f29..826ba1e 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -64,8 +64,9 @@
 		from erpnext.stock.doctype.packed_item.packed_item import PackedItem
 
 		additional_discount_percentage: DF.Float
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		advance_paid: DF.Currency
+		advance_payment_status: DF.Literal["Not Requested", "Requested", "Partially Paid", "Fully Paid"]
 		amended_from: DF.Link | None
 		amount_eligible_for_commission: DF.Currency
 		apply_discount_on: DF.Literal["", "Grand Total", "Net Total"]
@@ -83,7 +84,7 @@
 		commission_rate: DF.Float
 		company: DF.Link
 		company_address: DF.Link | None
-		company_address_display: DF.SmallText | None
+		company_address_display: DF.TextEditor | None
 		contact_display: DF.SmallText | None
 		contact_email: DF.Data | None
 		contact_mobile: DF.SmallText | None
@@ -103,7 +104,7 @@
 		]
 		disable_rounded_total: DF.Check
 		discount_amount: DF.Currency
-		dispatch_address: DF.SmallText | None
+		dispatch_address: DF.TextEditor | None
 		dispatch_address_name: DF.Link | None
 		from_date: DF.Date | None
 		grand_total: DF.Currency
@@ -122,7 +123,7 @@
 		naming_series: DF.Literal["SAL-ORD-.YYYY.-"]
 		net_total: DF.Currency
 		order_type: DF.Literal["", "Sales", "Maintenance", "Shopping Cart"]
-		other_charges_calculation: DF.LongText | None
+		other_charges_calculation: DF.TextEditor | None
 		packed_items: DF.Table[PackedItem]
 		party_account_currency: DF.Link | None
 		payment_schedule: DF.Table[PaymentSchedule]
@@ -146,7 +147,7 @@
 		select_print_heading: DF.Link | None
 		selling_price_list: DF.Link
 		set_warehouse: DF.Link | None
-		shipping_address: DF.SmallText | None
+		shipping_address: DF.TextEditor | None
 		shipping_address_name: DF.Link | None
 		shipping_rule: DF.Link | None
 		skip_delivery_note: DF.Check
@@ -155,6 +156,7 @@
 			"",
 			"Draft",
 			"On Hold",
+			"To Pay",
 			"To Deliver and Bill",
 			"To Bill",
 			"To Deliver",
@@ -754,6 +756,13 @@
 
 
 @frappe.whitelist()
+def is_enable_cutoff_date_on_bulk_delivery_note_creation():
+	return frappe.db.get_single_value(
+		"Selling Settings", "enable_cutoff_date_on_bulk_delivery_note_creation"
+	)
+
+
+@frappe.whitelist()
 def close_or_unclose_sales_orders(names, status):
 	if not frappe.has_permission("Sales Order", "write"):
 		frappe.throw(_("Not permitted"), frappe.PermissionError)
diff --git a/erpnext/selling/doctype/sales_order/sales_order_list.js b/erpnext/selling/doctype/sales_order/sales_order_list.js
index 14ba051..6530175 100644
--- a/erpnext/selling/doctype/sales_order/sales_order_list.js
+++ b/erpnext/selling/doctype/sales_order/sales_order_list.js
@@ -68,10 +68,10 @@
 		});
 
 		listview.page.add_action_item(__("Delivery Note"), () => {
-			frappe.db
-				.get_single_value("Selling Settings", "enable_cutoff_date_on_bulk_delivery_note_creation")
-				.then((value) => {
-					if (value) {
+			frappe.call({
+				method: "erpnext.selling.doctype.sales_order.sales_order.is_enable_cutoff_date_on_bulk_delivery_note_creation",
+				callback: (r) => {
+					if (r.message) {
 						var dialog = new frappe.ui.Dialog({
 							title: __("Select Items up to Delivery Date"),
 							fields: [
@@ -98,7 +98,8 @@
 					} else {
 						erpnext.bulk_transaction_processing.create(listview, "Sales Order", "Delivery Note");
 					}
-				});
+				},
+			});
 		});
 
 		listview.page.add_action_item(__("Advance Payment"), () => {
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index 9fcda0d..7327fde 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -2141,6 +2141,40 @@
 		dn.submit()
 		dn.reload()
 
+	def test_auto_update_price_list(self):
+		item = make_item(
+			"_Test Auto Update Price List Item",
+		)
+
+		frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 1)
+		so = make_sales_order(
+			item_code=item.name, currency="USD", qty=1, rate=100, price_list_rate=100, do_not_submit=True
+		)
+		so.save()
+
+		item_price = frappe.db.get_value("Item Price", {"item_code": item.name}, "price_list_rate")
+		self.assertEqual(item_price, 100)
+
+		so = make_sales_order(
+			item_code=item.name, currency="USD", qty=1, rate=200, price_list_rate=100, do_not_submit=True
+		)
+		so.save()
+
+		item_price = frappe.db.get_value("Item Price", {"item_code": item.name}, "price_list_rate")
+		self.assertEqual(item_price, 100)
+
+		frappe.db.set_single_value("Stock Settings", "update_existing_price_list_rate", 1)
+		so = make_sales_order(
+			item_code=item.name, currency="USD", qty=1, rate=200, price_list_rate=200, do_not_submit=True
+		)
+		so.save()
+
+		item_price = frappe.db.get_value("Item Price", {"item_code": item.name}, "price_list_rate")
+		self.assertEqual(item_price, 200)
+
+		frappe.db.set_single_value("Stock Settings", "update_existing_price_list_rate", 0)
+		frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 0)
+
 
 def automatically_fetch_payment_terms(enable=1):
 	accounts_settings = frappe.get_doc("Accounts Settings")
@@ -2206,13 +2240,14 @@
 	return so
 
 
-def create_dn_against_so(so, delivered_qty=0):
+def create_dn_against_so(so, delivered_qty=0, do_not_submit=False):
 	frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 	dn = make_delivery_note(so)
 	dn.get("items")[0].qty = delivered_qty or 5
 	dn.insert()
-	dn.submit()
+	if not do_not_submit:
+		dn.submit()
 	return dn
 
 
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.json b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
index 9599980..d451768 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -834,7 +834,8 @@
    "label": "Purchase Order",
    "options": "Purchase Order",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "search_index": 1
   },
   {
    "fieldname": "column_break_89",
@@ -909,7 +910,7 @@
  "idx": 1,
  "istable": 1,
  "links": [],
- "modified": "2024-01-25 14:24:00.330219",
+ "modified": "2024-03-21 18:15:56.625005",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Sales Order Item",
diff --git a/erpnext/selling/page/point_of_sale/pos_item_cart.js b/erpnext/selling/page/point_of_sale/pos_item_cart.js
index d95ef58..fbee9c1 100644
--- a/erpnext/selling/page/point_of_sale/pos_item_cart.js
+++ b/erpnext/selling/page/point_of_sale/pos_item_cart.js
@@ -295,10 +295,10 @@
 			<div class="customer-field"></div>
 		`);
 		const me = this;
-		const query = { query: "erpnext.controllers.queries.customer_query" };
 		const allowed_customer_group = this.allowed_customer_groups || [];
+		let filters = {};
 		if (allowed_customer_group.length) {
-			query.filters = {
+			filters = {
 				customer_group: ["in", allowed_customer_group],
 			};
 		}
@@ -308,7 +308,11 @@
 				fieldtype: "Link",
 				options: "Customer",
 				placeholder: __("Search by customer name, phone, email."),
-				get_query: () => query,
+				get_query: function () {
+					return {
+						filters: filters,
+					};
+				},
 				onchange: function () {
 					if (this.value) {
 						const frm = me.events.get_frm();
diff --git a/erpnext/selling/page/point_of_sale/pos_past_order_summary.js b/erpnext/selling/page/point_of_sale/pos_past_order_summary.js
index 448dbca..c399005 100644
--- a/erpnext/selling/page/point_of_sale/pos_past_order_summary.js
+++ b/erpnext/selling/page/point_of_sale/pos_past_order_summary.js
@@ -73,7 +73,7 @@
 		const { status } = doc;
 		let indicator_color = "";
 
-		in_list(["Paid", "Consolidated"], status) && (indicator_color = "green");
+		["Paid", "Consolidated"].includes(status) && (indicator_color = "green");
 		status === "Draft" && (indicator_color = "red");
 		status === "Return" && (indicator_color = "grey");
 
diff --git a/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/item_group_wise_sales_target_variance.py b/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/item_group_wise_sales_target_variance.py
index f2f1e4c..42bdf57 100644
--- a/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/item_group_wise_sales_target_variance.py
+++ b/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/item_group_wise_sales_target_variance.py
@@ -197,6 +197,8 @@
 				):
 					details[p_key] += r.get(qty_or_amount_field, 0)
 					details[variance_key] = details.get(p_key) - details.get(target_key)
+				else:
+					details[variance_key] = details.get(p_key) - details.get(target_key)
 
 			details["total_achieved"] += details.get(p_key)
 			details["total_variance"] = details.get("total_achieved") - details.get("total_target")
@@ -209,31 +211,32 @@
 
 	parent_doc = frappe.qb.DocType(filters.get("doctype"))
 	child_doc = frappe.qb.DocType(filters.get("doctype") + " Item")
-	sales_team = frappe.qb.DocType("Sales Team")
 
-	query = (
-		frappe.qb.from_(parent_doc)
-		.inner_join(child_doc)
-		.on(child_doc.parent == parent_doc.name)
-		.inner_join(sales_team)
-		.on(sales_team.parent == parent_doc.name)
-		.select(
-			child_doc.item_group,
-			(child_doc.stock_qty * sales_team.allocated_percentage / 100).as_("stock_qty"),
-			(child_doc.base_net_amount * sales_team.allocated_percentage / 100).as_("base_net_amount"),
-			sales_team.sales_person,
-			parent_doc[date_field],
-		)
-		.where(
-			(parent_doc.docstatus == 1)
-			& (parent_doc[date_field].between(fiscal_year.year_start_date, fiscal_year.year_end_date))
-		)
-	)
+	query = frappe.qb.from_(parent_doc).inner_join(child_doc).on(child_doc.parent == parent_doc.name)
 
 	if sales_field == "sales_person":
-		query = query.where(sales_team.sales_person.isin(sales_users_or_territory_data))
+		sales_team = frappe.qb.DocType("Sales Team")
+		stock_qty = child_doc.stock_qty * sales_team.allocated_percentage / 100
+		net_amount = child_doc.base_net_amount * sales_team.allocated_percentage / 100
+		sales_field_col = sales_team[sales_field]
+
+		query = query.inner_join(sales_team).on(sales_team.parent == parent_doc.name)
 	else:
-		query = query.where(parent_doc[sales_field].isin(sales_users_or_territory_data))
+		stock_qty = child_doc.stock_qty
+		net_amount = child_doc.base_net_amount
+		sales_field_col = parent_doc[sales_field]
+
+	query = query.select(
+		child_doc.item_group,
+		parent_doc[date_field],
+		(stock_qty).as_("stock_qty"),
+		(net_amount).as_("base_net_amount"),
+		sales_field_col,
+	).where(
+		(parent_doc.docstatus == 1)
+		& (parent_doc[date_field].between(fiscal_year.year_start_date, fiscal_year.year_end_date))
+		& (sales_field_col.isin(sales_users_or_territory_data))
+	)
 
 	return query.run(as_dict=True)
 
diff --git a/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/test_sales_partner_target_variance_based_on_item_group.py b/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/test_sales_partner_target_variance_based_on_item_group.py
new file mode 100644
index 0000000..1718668
--- /dev/null
+++ b/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/test_sales_partner_target_variance_based_on_item_group.py
@@ -0,0 +1,57 @@
+import frappe
+from frappe.tests.utils import FrappeTestCase
+from frappe.utils import flt, nowdate
+
+from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
+from erpnext.accounts.utils import get_fiscal_year
+from erpnext.selling.report.sales_partner_target_variance_based_on_item_group.sales_partner_target_variance_based_on_item_group import (
+	execute,
+)
+from erpnext.selling.report.sales_person_target_variance_based_on_item_group.test_sales_person_target_variance_based_on_item_group import (
+	create_sales_target_doc,
+	create_target_distribution,
+)
+
+
+class TestSalesPartnerTargetVarianceBasedOnItemGroup(FrappeTestCase):
+	def setUp(self):
+		self.fiscal_year = get_fiscal_year(nowdate())[0]
+
+	def tearDown(self):
+		frappe.db.rollback()
+
+	def test_achieved_target_and_variance_for_partner(self):
+		# Create a Target Distribution
+		distribution = create_target_distribution(self.fiscal_year)
+
+		# Create Sales Partner with targets for the current fiscal year
+		sales_partner = create_sales_target_doc(
+			"Sales Partner", "partner_name", "Sales Partner 1", self.fiscal_year, distribution.name
+		)
+
+		# Create a Sales Invoice for the Partner
+		si = create_sales_invoice(
+			rate=1000,
+			qty=20,
+			do_not_submit=True,
+		)
+		si.sales_partner = sales_partner
+		si.commission_rate = 5
+		si.submit()
+
+		# Check Achieved Target and Variance for the Sales Partner
+		result = execute(
+			frappe._dict(
+				{
+					"fiscal_year": self.fiscal_year,
+					"doctype": "Sales Invoice",
+					"period": "Yearly",
+					"target_on": "Quantity",
+				}
+			)
+		)[1]
+		row = frappe._dict(result[0])
+		self.assertSequenceEqual(
+			[flt(value, 2) for value in (row.total_target, row.total_achieved, row.total_variance)],
+			[50, 20, -30],
+		)
diff --git a/erpnext/selling/report/sales_person_target_variance_based_on_item_group/test_sales_person_target_variance_based_on_item_group.py b/erpnext/selling/report/sales_person_target_variance_based_on_item_group/test_sales_person_target_variance_based_on_item_group.py
index 4ae5d2b..73ae6d0 100644
--- a/erpnext/selling/report/sales_person_target_variance_based_on_item_group/test_sales_person_target_variance_based_on_item_group.py
+++ b/erpnext/selling/report/sales_person_target_variance_based_on_item_group/test_sales_person_target_variance_based_on_item_group.py
@@ -18,17 +18,17 @@
 
 	def test_achieved_target_and_variance(self):
 		# Create a Target Distribution
-		distribution = frappe.new_doc("Monthly Distribution")
-		distribution.distribution_id = "Target Report Distribution"
-		distribution.fiscal_year = self.fiscal_year
-		distribution.get_months()
-		distribution.insert()
+		distribution = create_target_distribution(self.fiscal_year)
 
-		# Create sales people with targets
-		person_1 = create_sales_person_with_target("Sales Person 1", self.fiscal_year, distribution.name)
-		person_2 = create_sales_person_with_target("Sales Person 2", self.fiscal_year, distribution.name)
+		# Create sales people with targets for the current fiscal year
+		person_1 = create_sales_target_doc(
+			"Sales Person", "sales_person_name", "Sales Person 1", self.fiscal_year, distribution.name
+		)
+		person_2 = create_sales_target_doc(
+			"Sales Person", "sales_person_name", "Sales Person 2", self.fiscal_year, distribution.name
+		)
 
-		# Create a Sales Order with 50-50 contribution
+		# Create a Sales Order with 50-50 contribution between both Sales people
 		so = make_sales_order(
 			rate=1000,
 			qty=20,
@@ -69,10 +69,20 @@
 		)
 
 
-def create_sales_person_with_target(sales_person_name, fiscal_year, distribution_id):
-	sales_person = frappe.new_doc("Sales Person")
-	sales_person.sales_person_name = sales_person_name
-	sales_person.append(
+def create_target_distribution(fiscal_year):
+	distribution = frappe.new_doc("Monthly Distribution")
+	distribution.distribution_id = "Target Report Distribution"
+	distribution.fiscal_year = fiscal_year
+	distribution.get_months()
+	return distribution.insert()
+
+
+def create_sales_target_doc(
+	sales_field_dt, sales_field_name, sales_field_value, fiscal_year, distribution_id
+):
+	sales_target_doc = frappe.new_doc(sales_field_dt)
+	sales_target_doc.set(sales_field_name, sales_field_value)
+	sales_target_doc.append(
 		"targets",
 		{
 			"fiscal_year": fiscal_year,
@@ -81,4 +91,6 @@
 			"distribution_id": distribution_id,
 		},
 	)
-	return sales_person.insert()
+	if sales_field_dt == "Sales Partner":
+		sales_target_doc.commission_rate = 5
+	return sales_target_doc.insert()
diff --git a/erpnext/setup/demo.py b/erpnext/setup/demo.py
index 688d45a..f48402e 100644
--- a/erpnext/setup/demo.py
+++ b/erpnext/setup/demo.py
@@ -181,8 +181,10 @@
 def create_transaction_deletion_record(company):
 	transaction_deletion_record = frappe.new_doc("Transaction Deletion Record")
 	transaction_deletion_record.company = company
+	transaction_deletion_record.process_in_single_transaction = True
 	transaction_deletion_record.save(ignore_permissions=True)
 	transaction_deletion_record.submit()
+	transaction_deletion_record.start_deletion_tasks()
 
 
 def clear_masters():
diff --git a/erpnext/setup/demo_data/item.json b/erpnext/setup/demo_data/item.json
index 330e114..1702434 100644
--- a/erpnext/setup/demo_data/item.json
+++ b/erpnext/setup/demo_data/item.json
@@ -4,6 +4,7 @@
         "item_group": "Demo Item Group",
         "item_code": "SKU001",
         "item_name": "T-shirt",
+        "valuation_rate": 400.0,
         "gst_hsn_code": "999512",
         "image": "https://images.pexels.com/photos/1484808/pexels-photo-1484808.jpeg"
     },
@@ -11,6 +12,7 @@
         "doctype": "Item",
         "item_group": "Demo Item Group",
         "item_code": "SKU002",
+        "valuation_rate": 300.0,
         "item_name": "Laptop",
         "gst_hsn_code": "999512",
         "image": "https://images.pexels.com/photos/3999538/pexels-photo-3999538.jpeg"
@@ -19,6 +21,7 @@
         "doctype": "Item",
         "item_group": "Demo Item Group",
         "item_code": "SKU003",
+        "valuation_rate": 523.0,
         "item_name": "Book",
         "gst_hsn_code": "999512",
         "image": "https://images.pexels.com/photos/2422178/pexels-photo-2422178.jpeg"
@@ -27,6 +30,7 @@
         "doctype": "Item",
         "item_group": "Demo Item Group",
         "item_code": "SKU004",
+        "valuation_rate": 725.0,
         "item_name": "Smartphone",
         "gst_hsn_code": "999512",
         "image": "https://images.pexels.com/photos/1647976/pexels-photo-1647976.jpeg"
@@ -35,6 +39,7 @@
         "doctype": "Item",
         "item_group": "Demo Item Group",
         "item_code": "SKU005",
+        "valuation_rate": 222.0,
         "item_name": "Sneakers",
         "gst_hsn_code": "999512",
         "image": "https://images.pexels.com/photos/1598505/pexels-photo-1598505.jpeg"
@@ -43,6 +48,7 @@
         "doctype": "Item",
         "item_group": "Demo Item Group",
         "item_code": "SKU006",
+        "valuation_rate": 420.0,
         "item_name": "Coffee Mug",
         "gst_hsn_code": "999512",
         "image": "https://images.pexels.com/photos/585753/pexels-photo-585753.jpeg"
@@ -51,6 +57,7 @@
         "doctype": "Item",
         "item_group": "Demo Item Group",
         "item_code": "SKU007",
+        "valuation_rate": 375.0,
         "item_name": "Television",
         "gst_hsn_code": "999512",
         "image": "https://images.pexels.com/photos/8059376/pexels-photo-8059376.jpeg"
@@ -59,6 +66,7 @@
         "doctype": "Item",
         "item_group": "Demo Item Group",
         "item_code": "SKU008",
+        "valuation_rate": 333.0,
         "item_name": "Backpack",
         "gst_hsn_code": "999512",
         "image": "https://images.pexels.com/photos/3731256/pexels-photo-3731256.jpeg"
@@ -67,6 +75,7 @@
         "doctype": "Item",
         "item_group": "Demo Item Group",
         "item_code": "SKU009",
+        "valuation_rate": 700.0,
         "item_name": "Headphones",
         "gst_hsn_code": "999512",
         "image": "https://images.pexels.com/photos/3587478/pexels-photo-3587478.jpeg"
@@ -75,6 +84,7 @@
         "doctype": "Item",
         "item_group": "Demo Item Group",
         "item_code": "SKU010",
+        "valuation_rate": 500.0,
         "item_name": "Camera",
         "gst_hsn_code": "999512",
         "image": "https://images.pexels.com/photos/51383/photo-camera-subject-photographer-51383.jpeg"
diff --git a/erpnext/setup/doctype/company/company.js b/erpnext/setup/doctype/company/company.js
index 3917005..9b1a41a 100644
--- a/erpnext/setup/doctype/company/company.js
+++ b/erpnext/setup/doctype/company/company.js
@@ -168,7 +168,7 @@
 
 	delete_company_transactions: function (frm) {
 		frappe.call({
-			method: "erpnext.setup.doctype.company.company.is_deletion_job_running",
+			method: "erpnext.setup.doctype.transaction_deletion_record.transaction_deletion_record.is_deletion_doc_running",
 			args: {
 				company: frm.doc.name,
 			},
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 876b6a4..3ca14e6 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -12,7 +12,6 @@
 from frappe.custom.doctype.property_setter.property_setter import make_property_setter
 from frappe.desk.page.setup_wizard.setup_wizard import make_records
 from frappe.utils import cint, formatdate, get_link_to_form, get_timestamp, today
-from frappe.utils.background_jobs import get_job, is_job_enqueued
 from frappe.utils.nestedset import NestedSet, rebuild_tree
 
 from erpnext.accounts.doctype.account.account import get_account_currency
@@ -901,37 +900,21 @@
 		return None
 
 
-def generate_id_for_deletion_job(company):
-	return "delete_company_transactions_" + company
-
-
-@frappe.whitelist()
-def is_deletion_job_running(company):
-	job_id = generate_id_for_deletion_job(company)
-	if is_job_enqueued(job_id):
-		job_name = get_job(job_id).get_id()  # job name will have site prefix
-		frappe.throw(
-			_("A Transaction Deletion Job: {0} is already running for {1}").format(
-				frappe.bold(get_link_to_form("RQ Job", job_name)), frappe.bold(company)
-			)
-		)
-
-
 @frappe.whitelist()
 def create_transaction_deletion_request(company):
-	is_deletion_job_running(company)
-	job_id = generate_id_for_deletion_job(company)
+	from erpnext.setup.doctype.transaction_deletion_record.transaction_deletion_record import (
+		is_deletion_doc_running,
+	)
+
+	is_deletion_doc_running(company)
 
 	tdr = frappe.get_doc({"doctype": "Transaction Deletion Record", "company": company})
-	tdr.insert()
+	tdr.submit()
+	tdr.start_deletion_tasks()
 
-	frappe.enqueue(
-		"frappe.utils.background_jobs.run_doc_method",
-		doctype=tdr.doctype,
-		name=tdr.name,
-		doc_method="submit",
-		job_id=job_id,
-		queue="long",
-		enqueue_after_commit=True,
+	frappe.msgprint(
+		_("A Transaction Deletion Document: {0} is triggered for {0}").format(
+			get_link_to_form("Transaction Deletion Record", tdr.name)
+		),
+		frappe.bold(company),
 	)
-	frappe.msgprint(_("A Transaction Deletion Job is triggered for {0}").format(frappe.bold(company)))
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.py b/erpnext/setup/doctype/sales_partner/sales_partner.py
index 1047360..a8a965d 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.py
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.py
@@ -54,25 +54,30 @@
 			self.partner_website = "http://" + self.partner_website
 
 	def get_context(self, context):
-		address = frappe.db.get_value(
-			"Address", {"sales_partner": self.name, "is_primary_address": 1}, "*", as_dict=True
+		address_names = frappe.db.get_all(
+			"Dynamic Link",
+			filters={"link_doctype": "Sales Partner", "link_name": self.name, "parenttype": "Address"},
+			pluck=["parent"],
 		)
-		if address:
-			city_state = ", ".join(filter(None, [address.city, address.state]))
-			address_rows = [
-				address.address_line1,
-				address.address_line2,
-				city_state,
-				address.pincode,
-				address.country,
-			]
 
-			context.update(
+		addresses = []
+		for address_name in address_names:
+			address_doc = frappe.get_doc("Address", address_name)
+			city_state = ", ".join([item for item in [address_doc.city, address_doc.state] if item])
+			address_rows = [
+				address_doc.address_line1,
+				address_doc.address_line2,
+				city_state,
+				address_doc.pincode,
+				address_doc.country,
+			]
+			addresses.append(
 				{
-					"email": address.email_id,
+					"email": address_doc.email_id,
 					"partner_address": filter_strip_join(address_rows, "\n<br>"),
-					"phone": filter_strip_join(cstr(address.phone).split(","), "\n<br>"),
+					"phone": filter_strip_join(cstr(address_doc.phone).split(","), "\n<br>"),
 				}
 			)
 
+		context["addresses"] = addresses
 		return context
diff --git a/erpnext/setup/doctype/transaction_deletion_record/test_transaction_deletion_record.py b/erpnext/setup/doctype/transaction_deletion_record/test_transaction_deletion_record.py
index 844e786..432438b 100644
--- a/erpnext/setup/doctype/transaction_deletion_record/test_transaction_deletion_record.py
+++ b/erpnext/setup/doctype/transaction_deletion_record/test_transaction_deletion_record.py
@@ -29,6 +29,7 @@
 		for i in range(5):
 			create_task("Dunder Mifflin Paper Co")
 		tdr = create_transaction_deletion_doc("Dunder Mifflin Paper Co")
+		tdr.reload()
 		for doctype in tdr.doctypes:
 			if doctype.doctype_name == "Task":
 				self.assertEqual(doctype.no_of_docs, 5)
@@ -60,7 +61,9 @@
 def create_transaction_deletion_doc(company):
 	tdr = frappe.get_doc({"doctype": "Transaction Deletion Record", "company": company})
 	tdr.insert()
+	tdr.process_in_single_transaction = True
 	tdr.submit()
+	tdr.start_deletion_tasks()
 	return tdr
 
 
diff --git a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.js b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.js
index 527c753..9aa0278 100644
--- a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.js
+++ b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.js
@@ -10,20 +10,24 @@
 				callback: function (r) {
 					doctypes_to_be_ignored_array = r.message;
 					populate_doctypes_to_be_ignored(doctypes_to_be_ignored_array, frm);
-					frm.fields_dict["doctypes_to_be_ignored"].grid.set_column_disp("no_of_docs", false);
 					frm.refresh_field("doctypes_to_be_ignored");
 				},
 			});
 		}
-
-		frm.get_field("doctypes_to_be_ignored").grid.cannot_add_rows = true;
-		frm.fields_dict["doctypes_to_be_ignored"].grid.set_column_disp("no_of_docs", false);
-		frm.refresh_field("doctypes_to_be_ignored");
 	},
 
 	refresh: function (frm) {
-		frm.fields_dict["doctypes_to_be_ignored"].grid.set_column_disp("no_of_docs", false);
-		frm.refresh_field("doctypes_to_be_ignored");
+		if (frm.doc.docstatus == 1 && ["Queued", "Failed"].find((x) => x == frm.doc.status)) {
+			let execute_btn = frm.doc.status == "Queued" ? __("Start Deletion") : __("Retry");
+
+			frm.add_custom_button(execute_btn, () => {
+				// Entry point for chain of events
+				frm.call({
+					method: "start_deletion_tasks",
+					doc: frm.doc,
+				});
+			});
+		}
 	},
 });
 
diff --git a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.json b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.json
index 23e5947..b9f911d 100644
--- a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.json
+++ b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.json
@@ -7,10 +7,21 @@
  "engine": "InnoDB",
  "field_order": [
   "company",
+  "section_break_qpwb",
+  "status",
+  "error_log",
+  "tasks_section",
+  "delete_bin_data",
+  "delete_leads_and_addresses",
+  "reset_company_default_values",
+  "clear_notifications",
+  "initialize_doctypes_table",
+  "delete_transactions",
+  "section_break_tbej",
   "doctypes",
   "doctypes_to_be_ignored",
   "amended_from",
-  "status"
+  "process_in_single_transaction"
  ],
  "fields": [
   {
@@ -25,14 +36,16 @@
    "fieldname": "doctypes",
    "fieldtype": "Table",
    "label": "Summary",
-   "options": "Transaction Deletion Record Item",
+   "no_copy": 1,
+   "options": "Transaction Deletion Record Details",
    "read_only": 1
   },
   {
    "fieldname": "doctypes_to_be_ignored",
    "fieldtype": "Table",
    "label": "Excluded DocTypes",
-   "options": "Transaction Deletion Record Item"
+   "options": "Transaction Deletion Record Item",
+   "read_only": 1
   },
   {
    "fieldname": "amended_from",
@@ -46,18 +59,96 @@
   {
    "fieldname": "status",
    "fieldtype": "Select",
-   "hidden": 1,
    "label": "Status",
-   "options": "Draft\nCompleted"
+   "no_copy": 1,
+   "options": "Queued\nRunning\nFailed\nCompleted\nCancelled",
+   "read_only": 1
+  },
+  {
+   "fieldname": "section_break_tbej",
+   "fieldtype": "Section Break"
+  },
+  {
+   "fieldname": "tasks_section",
+   "fieldtype": "Section Break",
+   "label": "Tasks"
+  },
+  {
+   "default": "0",
+   "fieldname": "delete_bin_data",
+   "fieldtype": "Check",
+   "label": "Delete Bins",
+   "no_copy": 1,
+   "read_only": 1
+  },
+  {
+   "default": "0",
+   "fieldname": "delete_leads_and_addresses",
+   "fieldtype": "Check",
+   "label": "Delete Leads and Addresses",
+   "no_copy": 1,
+   "read_only": 1
+  },
+  {
+   "default": "0",
+   "fieldname": "clear_notifications",
+   "fieldtype": "Check",
+   "label": "Clear Notifications",
+   "no_copy": 1,
+   "read_only": 1
+  },
+  {
+   "default": "0",
+   "fieldname": "reset_company_default_values",
+   "fieldtype": "Check",
+   "label": "Reset Company Default Values",
+   "no_copy": 1,
+   "read_only": 1
+  },
+  {
+   "default": "0",
+   "fieldname": "delete_transactions",
+   "fieldtype": "Check",
+   "label": "Delete Transactions",
+   "no_copy": 1,
+   "read_only": 1
+  },
+  {
+   "default": "0",
+   "fieldname": "initialize_doctypes_table",
+   "fieldtype": "Check",
+   "label": "Initialize Summary Table",
+   "no_copy": 1,
+   "read_only": 1
+  },
+  {
+   "depends_on": "eval: doc.error_log",
+   "fieldname": "error_log",
+   "fieldtype": "Long Text",
+   "label": "Error Log"
+  },
+  {
+   "fieldname": "section_break_qpwb",
+   "fieldtype": "Section Break"
+  },
+  {
+   "default": "0",
+   "fieldname": "process_in_single_transaction",
+   "fieldtype": "Check",
+   "hidden": 1,
+   "label": "Process in Single Transaction",
+   "no_copy": 1,
+   "read_only": 1
   }
  ],
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2021-08-04 20:15:59.071493",
+ "modified": "2024-03-21 10:29:19.456413",
  "modified_by": "Administrator",
  "module": "Setup",
  "name": "Transaction Deletion Record",
+ "naming_rule": "Expression (old style)",
  "owner": "Administrator",
  "permissions": [
   {
@@ -76,5 +167,6 @@
  ],
  "sort_field": "modified",
  "sort_order": "DESC",
+ "states": [],
  "track_changes": 1
 }
\ No newline at end of file
diff --git a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py
index 88c4b07..00fad5f 100644
--- a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py
+++ b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py
@@ -1,12 +1,14 @@
 # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors
 # For license information, please see license.txt
 
+from collections import OrderedDict
 
 import frappe
 from frappe import _, qb
 from frappe.desk.notifications import clear_notifications
 from frappe.model.document import Document
-from frappe.utils import cint, create_batch
+from frappe.utils import cint, comma_and, create_batch, get_link_to_form
+from frappe.utils.background_jobs import get_job, is_job_enqueued
 
 
 class TransactionDeletionRecord(Document):
@@ -18,20 +20,42 @@
 	if TYPE_CHECKING:
 		from frappe.types import DF
 
+		from erpnext.accounts.doctype.transaction_deletion_record_details.transaction_deletion_record_details import (
+			TransactionDeletionRecordDetails,
+		)
 		from erpnext.setup.doctype.transaction_deletion_record_item.transaction_deletion_record_item import (
 			TransactionDeletionRecordItem,
 		)
 
 		amended_from: DF.Link | None
+		clear_notifications: DF.Check
 		company: DF.Link
-		doctypes: DF.Table[TransactionDeletionRecordItem]
+		delete_bin_data: DF.Check
+		delete_leads_and_addresses: DF.Check
+		delete_transactions: DF.Check
+		doctypes: DF.Table[TransactionDeletionRecordDetails]
 		doctypes_to_be_ignored: DF.Table[TransactionDeletionRecordItem]
-		status: DF.Literal["Draft", "Completed"]
+		error_log: DF.LongText | None
+		initialize_doctypes_table: DF.Check
+		process_in_single_transaction: DF.Check
+		reset_company_default_values: DF.Check
+		status: DF.Literal["Queued", "Running", "Failed", "Completed", "Cancelled"]
 	# end: auto-generated types
 
 	def __init__(self, *args, **kwargs):
 		super(TransactionDeletionRecord, self).__init__(*args, **kwargs)
 		self.batch_size = 5000
+		# Tasks are listed by their execution order
+		self.task_to_internal_method_map = OrderedDict(
+			{
+				"Delete Bins": "delete_bins",
+				"Delete Leads and Addresses": "delete_lead_addresses",
+				"Reset Company Values": "reset_company_values",
+				"Clear Notifications": "delete_notifications",
+				"Initialize Summary Table": "initialize_doctypes_to_be_deleted_table",
+				"Delete Transactions": "delete_company_transactions",
+			}
+		)
 
 	def validate(self):
 		frappe.only_for("System Manager")
@@ -48,104 +72,266 @@
 					title=_("Not Allowed"),
 				)
 
+	def generate_job_name_for_task(self, task=None):
+		method = self.task_to_internal_method_map[task]
+		return f"{self.name}_{method}"
+
+	def generate_job_name_for_next_tasks(self, task=None):
+		job_names = []
+		current_task_idx = list(self.task_to_internal_method_map).index(task)
+		for idx, task in enumerate(self.task_to_internal_method_map.keys(), 0):
+			# generate job_name for next tasks
+			if idx > current_task_idx:
+				job_names.append(self.generate_job_name_for_task(task))
+		return job_names
+
+	def generate_job_name_for_all_tasks(self):
+		job_names = []
+		for task in self.task_to_internal_method_map.keys():
+			job_names.append(self.generate_job_name_for_task(task))
+		return job_names
+
 	def before_submit(self):
+		if queued_docs := frappe.db.get_all(
+			"Transaction Deletion Record",
+			filters={"company": self.company, "status": ("in", ["Running", "Queued"]), "docstatus": 1},
+			pluck="name",
+		):
+			frappe.throw(
+				_(
+					"Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1}"
+				).format(
+					comma_and([get_link_to_form("Transaction Deletion Record", x) for x in queued_docs]),
+					frappe.bold(self.company),
+				)
+			)
+
 		if not self.doctypes_to_be_ignored:
 			self.populate_doctypes_to_be_ignored_table()
 
-		self.delete_bins()
-		self.delete_lead_addresses()
-		self.reset_company_values()
-		clear_notifications()
-		self.delete_company_transactions()
+	def reset_task_flags(self):
+		self.clear_notifications = 0
+		self.delete_bin_data = 0
+		self.delete_leads_and_addresses = 0
+		self.delete_transactions = 0
+		self.initialize_doctypes_table = 0
+		self.reset_company_default_values = 0
+
+	def before_save(self):
+		self.status = ""
+		self.doctypes.clear()
+		self.reset_task_flags()
+
+	def on_submit(self):
+		self.db_set("status", "Queued")
+
+	def on_cancel(self):
+		self.db_set("status", "Cancelled")
+
+	def enqueue_task(self, task: str | None = None):
+		if task and task in self.task_to_internal_method_map:
+			# make sure that none of next tasks are already running
+			job_names = self.generate_job_name_for_next_tasks(task=task)
+			self.validate_running_task_for_doc(job_names=job_names)
+
+			# Generate Job Id to uniquely identify each task for this document
+			job_id = self.generate_job_name_for_task(task)
+
+			if self.process_in_single_transaction:
+				self.execute_task(task_to_execute=task)
+			else:
+				frappe.enqueue(
+					"frappe.utils.background_jobs.run_doc_method",
+					doctype=self.doctype,
+					name=self.name,
+					doc_method="execute_task",
+					job_id=job_id,
+					queue="long",
+					enqueue_after_commit=True,
+					task_to_execute=task,
+				)
+
+	def execute_task(self, task_to_execute: str | None = None):
+		if task_to_execute:
+			method = self.task_to_internal_method_map[task_to_execute]
+			if task := getattr(self, method, None):
+				try:
+					task()
+				except Exception as err:
+					frappe.db.rollback()
+					traceback = frappe.get_traceback(with_context=True)
+					if traceback:
+						message = "Traceback: <br>" + traceback
+						frappe.db.set_value(self.doctype, self.name, "error_log", message)
+					frappe.db.set_value(self.doctype, self.name, "status", "Failed")
+
+	def delete_notifications(self):
+		self.validate_doc_status()
+		if not self.clear_notifications:
+			clear_notifications()
+			self.db_set("clear_notifications", 1)
+		self.enqueue_task(task="Initialize Summary Table")
 
 	def populate_doctypes_to_be_ignored_table(self):
 		doctypes_to_be_ignored_list = get_doctypes_to_be_ignored()
 		for doctype in doctypes_to_be_ignored_list:
 			self.append("doctypes_to_be_ignored", {"doctype_name": doctype})
 
-	def delete_bins(self):
-		frappe.db.sql(
-			"""delete from `tabBin` where warehouse in
-				(select name from tabWarehouse where company=%s)""",
-			self.company,
-		)
+	def validate_running_task_for_doc(self, job_names: list = None):
+		# at most only one task should be runnning
+		running_tasks = []
+		for x in job_names:
+			if is_job_enqueued(x):
+				running_tasks.append(get_job(x).get_id())
 
-	def delete_lead_addresses(self):
-		"""Delete addresses to which leads are linked"""
-		leads = frappe.get_all("Lead", filters={"company": self.company})
-		leads = ["'%s'" % row.get("name") for row in leads]
-		addresses = []
-		if leads:
-			addresses = frappe.db.sql_list(
-				"""select parent from `tabDynamic Link` where link_name
-				in ({leads})""".format(
-					leads=",".join(leads)
+		if running_tasks:
+			frappe.throw(
+				_("{0} is already running for {1}").format(
+					comma_and([get_link_to_form("RQ Job", x) for x in running_tasks]), self.name
 				)
 			)
 
-			if addresses:
-				addresses = ["%s" % frappe.db.escape(addr) for addr in addresses]
-
-				frappe.db.sql(
-					"""delete from `tabAddress` where name in ({addresses}) and
-					name not in (select distinct dl1.parent from `tabDynamic Link` dl1
-					inner join `tabDynamic Link` dl2 on dl1.parent=dl2.parent
-					and dl1.link_doctype<>dl2.link_doctype)""".format(
-						addresses=",".join(addresses)
-					)
+	def validate_doc_status(self):
+		if self.status != "Running":
+			frappe.throw(
+				_("{0} is not running. Cannot trigger events for this Document").format(
+					get_link_to_form("Transaction Deletion Record", self.name)
 				)
+			)
 
-				frappe.db.sql(
-					"""delete from `tabDynamic Link` where link_doctype='Lead'
-					and parenttype='Address' and link_name in ({leads})""".format(
+	@frappe.whitelist()
+	def start_deletion_tasks(self):
+		# This method is the entry point for the chain of events that follow
+		self.db_set("status", "Running")
+		self.enqueue_task(task="Delete Bins")
+
+	def delete_bins(self):
+		self.validate_doc_status()
+		if not self.delete_bin_data:
+			frappe.db.sql(
+				"""delete from `tabBin` where warehouse in
+					(select name from tabWarehouse where company=%s)""",
+				self.company,
+			)
+			self.db_set("delete_bin_data", 1)
+		self.enqueue_task(task="Delete Leads and Addresses")
+
+	def delete_lead_addresses(self):
+		"""Delete addresses to which leads are linked"""
+		self.validate_doc_status()
+		if not self.delete_leads_and_addresses:
+			leads = frappe.get_all("Lead", filters={"company": self.company})
+			leads = ["'%s'" % row.get("name") for row in leads]
+			addresses = []
+			if leads:
+				addresses = frappe.db.sql_list(
+					"""select parent from `tabDynamic Link` where link_name
+					in ({leads})""".format(
 						leads=",".join(leads)
 					)
 				)
 
-			frappe.db.sql(
-				"""update `tabCustomer` set lead_name=NULL where lead_name in ({leads})""".format(
-					leads=",".join(leads)
+				if addresses:
+					addresses = ["%s" % frappe.db.escape(addr) for addr in addresses]
+
+					frappe.db.sql(
+						"""delete from `tabAddress` where name in ({addresses}) and
+						name not in (select distinct dl1.parent from `tabDynamic Link` dl1
+						inner join `tabDynamic Link` dl2 on dl1.parent=dl2.parent
+						and dl1.link_doctype<>dl2.link_doctype)""".format(
+							addresses=",".join(addresses)
+						)
+					)
+
+					frappe.db.sql(
+						"""delete from `tabDynamic Link` where link_doctype='Lead'
+						and parenttype='Address' and link_name in ({leads})""".format(
+							leads=",".join(leads)
+						)
+					)
+
+				frappe.db.sql(
+					"""update `tabCustomer` set lead_name=NULL where lead_name in ({leads})""".format(
+						leads=",".join(leads)
+					)
 				)
-			)
+			self.db_set("delete_leads_and_addresses", 1)
+		self.enqueue_task(task="Reset Company Values")
 
 	def reset_company_values(self):
-		company_obj = frappe.get_doc("Company", self.company)
-		company_obj.total_monthly_sales = 0
-		company_obj.sales_monthly_history = None
-		company_obj.save()
+		self.validate_doc_status()
+		if not self.reset_company_default_values:
+			company_obj = frappe.get_doc("Company", self.company)
+			company_obj.total_monthly_sales = 0
+			company_obj.sales_monthly_history = None
+			company_obj.save()
+			self.db_set("reset_company_default_values", 1)
+		self.enqueue_task(task="Clear Notifications")
+
+	def initialize_doctypes_to_be_deleted_table(self):
+		self.validate_doc_status()
+		if not self.initialize_doctypes_table:
+			doctypes_to_be_ignored_list = self.get_doctypes_to_be_ignored_list()
+			docfields = self.get_doctypes_with_company_field(doctypes_to_be_ignored_list)
+			tables = self.get_all_child_doctypes()
+			for docfield in docfields:
+				if docfield["parent"] != self.doctype:
+					no_of_docs = self.get_number_of_docs_linked_with_specified_company(
+						docfield["parent"], docfield["fieldname"]
+					)
+					if no_of_docs > 0:
+						# Initialize
+						self.populate_doctypes_table(tables, docfield["parent"], docfield["fieldname"], 0)
+			self.db_set("initialize_doctypes_table", 1)
+		self.enqueue_task(task="Delete Transactions")
 
 	def delete_company_transactions(self):
-		doctypes_to_be_ignored_list = self.get_doctypes_to_be_ignored_list()
-		docfields = self.get_doctypes_with_company_field(doctypes_to_be_ignored_list)
+		self.validate_doc_status()
+		if not self.delete_transactions:
+			doctypes_to_be_ignored_list = self.get_doctypes_to_be_ignored_list()
+			docfields = self.get_doctypes_with_company_field(doctypes_to_be_ignored_list)
 
-		tables = self.get_all_child_doctypes()
-		for docfield in docfields:
-			if docfield["parent"] != self.doctype:
-				no_of_docs = self.get_number_of_docs_linked_with_specified_company(
-					docfield["parent"], docfield["fieldname"]
-				)
-
-				if no_of_docs > 0:
-					self.delete_version_log(docfield["parent"], docfield["fieldname"])
-
-					reference_docs = frappe.get_all(
-						docfield["parent"], filters={docfield["fieldname"]: self.company}
+			tables = self.get_all_child_doctypes()
+			for docfield in self.doctypes:
+				if docfield.doctype_name != self.doctype and not docfield.done:
+					no_of_docs = self.get_number_of_docs_linked_with_specified_company(
+						docfield.doctype_name, docfield.docfield_name
 					)
-					reference_doc_names = [r.name for r in reference_docs]
+					if no_of_docs > 0:
+						reference_docs = frappe.get_all(
+							docfield.doctype_name, filters={docfield.docfield_name: self.company}, limit=self.batch_size
+						)
+						reference_doc_names = [r.name for r in reference_docs]
 
-					self.delete_communications(docfield["parent"], reference_doc_names)
-					self.delete_comments(docfield["parent"], reference_doc_names)
-					self.unlink_attachments(docfield["parent"], reference_doc_names)
+						self.delete_version_log(docfield.doctype_name, reference_doc_names)
+						self.delete_communications(docfield.doctype_name, reference_doc_names)
+						self.delete_comments(docfield.doctype_name, reference_doc_names)
+						self.unlink_attachments(docfield.doctype_name, reference_doc_names)
+						self.delete_child_tables(docfield.doctype_name, reference_doc_names)
+						self.delete_docs_linked_with_specified_company(docfield.doctype_name, reference_doc_names)
+						processed = int(docfield.no_of_docs) + len(reference_doc_names)
+						frappe.db.set_value(docfield.doctype, docfield.name, "no_of_docs", processed)
+					else:
+						# reset naming series
+						naming_series = frappe.db.get_value("DocType", docfield.doctype_name, "autoname")
+						if naming_series:
+							if "#" in naming_series:
+								self.update_naming_series(naming_series, docfield.doctype_name)
+						frappe.db.set_value(docfield.doctype, docfield.name, "done", 1)
 
-					self.populate_doctypes_table(tables, docfield["parent"], no_of_docs)
-
-					self.delete_child_tables(docfield["parent"], docfield["fieldname"])
-					self.delete_docs_linked_with_specified_company(docfield["parent"], docfield["fieldname"])
-
-					naming_series = frappe.db.get_value("DocType", docfield["parent"], "autoname")
-					if naming_series:
-						if "#" in naming_series:
-							self.update_naming_series(naming_series, docfield["parent"])
+			pending_doctypes = frappe.db.get_all(
+				"Transaction Deletion Record Details",
+				filters={"parent": self.name, "done": 0},
+				pluck="doctype_name",
+			)
+			if pending_doctypes:
+				# as method is enqueued after commit, calling itself will not make validate_doc_status to throw
+				# recursively call this task to delete all transactions
+				self.enqueue_task(task="Delete Transactions")
+			else:
+				self.db_set("status", "Completed")
+				self.db_set("delete_transactions", 1)
+				self.db_set("error_log", None)
 
 	def get_doctypes_to_be_ignored_list(self):
 		singles = frappe.get_all("DocType", filters={"issingle": 1}, pluck="name")
@@ -174,25 +360,24 @@
 	def get_number_of_docs_linked_with_specified_company(self, doctype, company_fieldname):
 		return frappe.db.count(doctype, {company_fieldname: self.company})
 
-	def populate_doctypes_table(self, tables, doctype, no_of_docs):
+	def populate_doctypes_table(self, tables, doctype, fieldname, no_of_docs):
+		self.flags.ignore_validate_update_after_submit = True
 		if doctype not in tables:
-			self.append("doctypes", {"doctype_name": doctype, "no_of_docs": no_of_docs})
+			self.append(
+				"doctypes", {"doctype_name": doctype, "docfield_name": fieldname, "no_of_docs": no_of_docs}
+			)
+		self.save(ignore_permissions=True)
 
-	def delete_child_tables(self, doctype, company_fieldname):
-		parent_docs_to_be_deleted = frappe.get_all(
-			doctype, {company_fieldname: self.company}, pluck="name"
-		)
-
+	def delete_child_tables(self, doctype, reference_doc_names):
 		child_tables = frappe.get_all(
 			"DocField", filters={"fieldtype": "Table", "parent": doctype}, pluck="options"
 		)
 
-		for batch in create_batch(parent_docs_to_be_deleted, self.batch_size):
-			for table in child_tables:
-				frappe.db.delete(table, {"parent": ["in", batch]})
+		for table in child_tables:
+			frappe.db.delete(table, {"parent": ["in", reference_doc_names]})
 
-	def delete_docs_linked_with_specified_company(self, doctype, company_fieldname):
-		frappe.db.delete(doctype, {company_fieldname: self.company})
+	def delete_docs_linked_with_specified_company(self, doctype, reference_doc_names):
+		frappe.db.delete(doctype, {"name": ("in", reference_doc_names)})
 
 	def update_naming_series(self, naming_series, doctype_name):
 		if "." in naming_series:
@@ -213,17 +398,11 @@
 
 		frappe.db.sql("""update `tabSeries` set current = %s where name=%s""", (last, prefix))
 
-	def delete_version_log(self, doctype, company_fieldname):
-		dt = qb.DocType(doctype)
-		names = qb.from_(dt).select(dt.name).where(dt[company_fieldname] == self.company).run(as_list=1)
-		names = [x[0] for x in names]
-
-		if names:
-			versions = qb.DocType("Version")
-			for batch in create_batch(names, self.batch_size):
-				qb.from_(versions).delete().where(
-					(versions.ref_doctype == doctype) & (versions.docname.isin(batch))
-				).run()
+	def delete_version_log(self, doctype, docnames):
+		versions = qb.DocType("Version")
+		qb.from_(versions).delete().where(
+			(versions.ref_doctype == doctype) & (versions.docname.isin(docnames))
+		).run()
 
 	def delete_communications(self, doctype, reference_doc_names):
 		communications = frappe.get_all(
@@ -295,3 +474,34 @@
 	doctypes_to_be_ignored.extend(frappe.get_hooks("company_data_to_be_ignored") or [])
 
 	return doctypes_to_be_ignored
+
+
+@frappe.whitelist()
+def is_deletion_doc_running(company: str | None = None, err_msg: str | None = None):
+	if company:
+		if running_deletion_jobs := frappe.db.get_all(
+			"Transaction Deletion Record",
+			filters={"docstatus": 1, "company": company, "status": "Running"},
+		):
+			if not err_msg:
+				err_msg = ""
+			frappe.throw(
+				title=_("Deletion in Progress!"),
+				msg=_("Transaction Deletion Document: {0} is running for this Company. {1}").format(
+					get_link_to_form("Transaction Deletion Record", running_deletion_jobs[0].name), err_msg
+				),
+			)
+
+
+def check_for_running_deletion_job(doc, method=None):
+	# Check if DocType has 'company' field
+	df = qb.DocType("DocField")
+	if (
+		not_allowed := qb.from_(df)
+		.select(df.parent)
+		.where((df.fieldname == "company") & (df.parent == doc.doctype))
+		.run()
+	):
+		is_deletion_doc_running(
+			doc.company, _("Cannot make any transactions until the deletion job is completed")
+		)
diff --git a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record_list.js b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record_list.js
index 08a35df..285cb6d 100644
--- a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record_list.js
+++ b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record_list.js
@@ -2,11 +2,15 @@
 // License: GNU General Public License v3. See license.txt
 
 frappe.listview_settings["Transaction Deletion Record"] = {
+	add_fields: ["status"],
 	get_indicator: function (doc) {
-		if (doc.docstatus == 0) {
-			return [__("Draft"), "red"];
-		} else {
-			return [__("Completed"), "green"];
-		}
+		let colors = {
+			Queued: "orange",
+			Completed: "green",
+			Running: "blue",
+			Failed: "red",
+		};
+		let status = doc.status;
+		return [__(status), colors[status], "status,=," + status];
 	},
 };
diff --git a/erpnext/setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.json b/erpnext/setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.json
index be0be94..89db636 100644
--- a/erpnext/setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.json
+++ b/erpnext/setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.json
@@ -5,8 +5,7 @@
  "editable_grid": 1,
  "engine": "InnoDB",
  "field_order": [
-  "doctype_name",
-  "no_of_docs"
+  "doctype_name"
  ],
  "fields": [
   {
@@ -16,18 +15,12 @@
    "label": "DocType",
    "options": "DocType",
    "reqd": 1
-  },
-  {
-   "fieldname": "no_of_docs",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Number of Docs"
   }
  ],
  "index_web_pages_for_search": 1,
  "istable": 1,
  "links": [],
- "modified": "2021-05-08 23:10:46.166744",
+ "modified": "2024-02-04 10:56:27.413691",
  "modified_by": "Administrator",
  "module": "Setup",
  "name": "Transaction Deletion Record Item",
@@ -35,5 +28,6 @@
  "permissions": [],
  "sort_field": "modified",
  "sort_order": "DESC",
+ "states": [],
  "track_changes": 1
 }
\ No newline at end of file
diff --git a/erpnext/setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.py b/erpnext/setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.py
index f154cdb..9066607 100644
--- a/erpnext/setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.py
+++ b/erpnext/setup/doctype/transaction_deletion_record_item/transaction_deletion_record_item.py
@@ -16,7 +16,6 @@
 		from frappe.types import DF
 
 		doctype_name: DF.Link
-		no_of_docs: DF.Data | None
 		parent: DF.Data
 		parentfield: DF.Data
 		parenttype: DF.Data
diff --git a/erpnext/setup/doctype/uom/uom.json b/erpnext/setup/doctype/uom/uom.json
index 844a11f..afd2312 100644
--- a/erpnext/setup/doctype/uom/uom.json
+++ b/erpnext/setup/doctype/uom/uom.json
@@ -8,8 +8,12 @@
  "document_type": "Setup",
  "engine": "InnoDB",
  "field_order": [
-  "enabled",
   "uom_name",
+  "symbol",
+  "common_code",
+  "description",
+  "column_break_obth",
+  "enabled",
   "must_be_whole_number"
  ],
  "fields": [
@@ -35,12 +39,33 @@
    "fieldname": "enabled",
    "fieldtype": "Check",
    "label": "Enabled"
+  },
+  {
+   "fieldname": "symbol",
+   "fieldtype": "Data",
+   "label": "Symbol"
+  },
+  {
+   "description": "According to CEFACT/ICG/2010/IC013 or CEFACT/ICG/2010/IC010",
+   "fieldname": "common_code",
+   "fieldtype": "Data",
+   "label": "Common Code",
+   "length": 3
+  },
+  {
+   "fieldname": "description",
+   "fieldtype": "Small Text",
+   "label": "Description"
+  },
+  {
+   "fieldname": "column_break_obth",
+   "fieldtype": "Column Break"
   }
  ],
  "icon": "fa fa-compass",
  "idx": 1,
  "links": [],
- "modified": "2021-10-18 14:07:43.722144",
+ "modified": "2024-03-21 14:46:48.422406",
  "modified_by": "Administrator",
  "module": "Setup",
  "name": "UOM",
@@ -78,5 +103,6 @@
  "quick_entry": 1,
  "show_name_in_global_search": 1,
  "sort_field": "modified",
- "sort_order": "ASC"
+ "sort_order": "ASC",
+ "states": []
 }
\ No newline at end of file
diff --git a/erpnext/setup/doctype/uom/uom.py b/erpnext/setup/doctype/uom/uom.py
index 0e674c1..d47028f 100644
--- a/erpnext/setup/doctype/uom/uom.py
+++ b/erpnext/setup/doctype/uom/uom.py
@@ -14,8 +14,11 @@
 	if TYPE_CHECKING:
 		from frappe.types import DF
 
+		common_code: DF.Data | None
+		description: DF.SmallText | None
 		enabled: DF.Check
 		must_be_whole_number: DF.Check
+		symbol: DF.Data | None
 		uom_name: DF.Data
 	# end: auto-generated types
 
diff --git a/erpnext/stock/deprecated_serial_batch.py b/erpnext/stock/deprecated_serial_batch.py
index 7be1418..6e32cc2 100644
--- a/erpnext/stock/deprecated_serial_batch.py
+++ b/erpnext/stock/deprecated_serial_batch.py
@@ -245,6 +245,8 @@
 		if self.sle.serial_and_batch_bundle:
 			query = query.where(bundle.name != self.sle.serial_and_batch_bundle)
 
+		query = query.where(bundle.voucher_type != "Pick List")
+
 		for d in query.run(as_dict=True):
 			self.non_batchwise_balance_value += flt(d.batch_value)
 			self.non_batchwise_balance_qty += flt(d.batch_qty)
diff --git a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.js b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.js
index 0f0221f..aec752a 100644
--- a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.js
+++ b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.js
@@ -8,7 +8,7 @@
 	},
 
 	generate_closing_balance(frm) {
-		if (in_list(["Queued", "Failed"], frm.doc.status)) {
+		if (["Queued", "Failed"].includes(frm.doc.status)) {
 			frm.add_custom_button(__("Generate Closing Stock Balance"), () => {
 				frm.call({
 					method: "enqueue_job",
diff --git a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py
index 1c70183..e99a0b1 100644
--- a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py
+++ b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py
@@ -123,7 +123,9 @@
 			)
 		)
 
-		create_json_gz_file({"columns": columns, "data": data}, self.doctype, self.name)
+		create_json_gz_file(
+			{"columns": columns, "data": data}, self.doctype, self.name, "closing-stock-balance"
+		)
 
 	def get_prepared_data(self):
 		if attachments := get_attachments(self.doctype, self.name):
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index c04d5c1..23d0adc 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -3,6 +3,8 @@
 
 cur_frm.add_fetch("customer", "tax_id", "tax_id");
 
+cur_frm.cscript.tax_table = "Sales Taxes and Charges";
+
 frappe.provide("erpnext.stock");
 frappe.provide("erpnext.stock.delivery_note");
 frappe.provide("erpnext.accounts.dimensions");
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.json b/erpnext/stock/doctype/delivery_note/delivery_note.json
index d07a825..d05392d 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.json
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.json
@@ -351,7 +351,7 @@
   },
   {
    "fieldname": "shipping_address",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Shipping Address",
    "read_only": 1
   },
@@ -408,7 +408,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Billing Address",
    "read_only": 1
   },
@@ -420,7 +420,7 @@
   },
   {
    "fieldname": "company_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Company Address",
    "read_only": 1
   },
@@ -680,7 +680,7 @@
   },
   {
    "fieldname": "other_charges_calculation",
-   "fieldtype": "Long Text",
+   "fieldtype": "Text Editor",
    "label": "Taxes and Charges Calculation",
    "no_copy": 1,
    "oldfieldtype": "HTML",
@@ -1289,7 +1289,7 @@
   {
    "depends_on": "dispatch_address_name",
    "fieldname": "dispatch_address",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Dispatch Address",
    "print_hide": 1,
    "read_only": 1
@@ -1397,7 +1397,7 @@
  "idx": 146,
  "is_submittable": 1,
  "links": [],
- "modified": "2024-03-05 11:58:47.784349",
+ "modified": "2024-03-22 16:15:07.253135",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Delivery Note",
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index a3903a3..f13353e 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -35,7 +35,7 @@
 		from erpnext.stock.doctype.packed_item.packed_item import PackedItem
 
 		additional_discount_percentage: DF.Float
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		amount_eligible_for_commission: DF.Currency
 		apply_discount_on: DF.Literal["", "Grand Total", "Net Total"]
@@ -52,7 +52,7 @@
 		commission_rate: DF.Float
 		company: DF.Link
 		company_address: DF.Link | None
-		company_address_display: DF.SmallText | None
+		company_address_display: DF.TextEditor | None
 		contact_display: DF.SmallText | None
 		contact_email: DF.Data | None
 		contact_mobile: DF.SmallText | None
@@ -66,7 +66,7 @@
 		customer_name: DF.Data | None
 		disable_rounded_total: DF.Check
 		discount_amount: DF.Currency
-		dispatch_address: DF.SmallText | None
+		dispatch_address: DF.TextEditor | None
 		dispatch_address_name: DF.Link | None
 		driver: DF.Link | None
 		driver_name: DF.Data | None
@@ -76,7 +76,7 @@
 		ignore_pricing_rule: DF.Check
 		in_words: DF.Data | None
 		incoterm: DF.Link | None
-		installation_status: DF.Literal
+		installation_status: DF.Literal[None]
 		instructions: DF.Text | None
 		inter_company_reference: DF.Link | None
 		is_internal_customer: DF.Check
@@ -90,7 +90,7 @@
 		named_place: DF.Data | None
 		naming_series: DF.Literal["MAT-DN-.YYYY.-", "MAT-DN-RET-.YYYY.-"]
 		net_total: DF.Currency
-		other_charges_calculation: DF.LongText | None
+		other_charges_calculation: DF.TextEditor | None
 		packed_items: DF.Table[PackedItem]
 		per_billed: DF.Percent
 		per_installed: DF.Percent
@@ -117,7 +117,7 @@
 		set_posting_time: DF.Check
 		set_target_warehouse: DF.Link | None
 		set_warehouse: DF.Link | None
-		shipping_address: DF.SmallText | None
+		shipping_address: DF.TextEditor | None
 		shipping_address_name: DF.Link | None
 		shipping_rule: DF.Link | None
 		source: DF.Link | None
@@ -251,6 +251,7 @@
 	def validate(self):
 		self.validate_posting_time()
 		super(DeliveryNote, self).validate()
+		self.validate_references()
 		self.set_status()
 		self.so_required()
 		self.validate_proj_cust()
@@ -333,6 +334,7 @@
 							"type_of_transaction": "Outward",
 							"serial_and_batch_bundle": bundle_id,
 							"item_code": item.get("item_code"),
+							"warehouse": item.get("warehouse"),
 						}
 					)
 
@@ -340,6 +342,58 @@
 
 					item.serial_and_batch_bundle = cls_obj.serial_and_batch_bundle
 
+	def validate_references(self):
+		self.validate_sales_order_references()
+		self.validate_sales_invoice_references()
+
+	def validate_sales_order_references(self):
+		err_msg = ""
+		for item in self.items:
+			if (item.against_sales_order and not item.so_detail) or (
+				not item.against_sales_order and item.so_detail
+			):
+				if not item.against_sales_order:
+					err_msg += (
+						_("'Sales Order' reference ({1}) is missing in row {0}").format(
+							frappe.bold(item.idx), frappe.bold("against_sales_order")
+						)
+						+ "<br>"
+					)
+				else:
+					err_msg += (
+						_("'Sales Order Item' reference ({1}) is missing in row {0}").format(
+							frappe.bold(item.idx), frappe.bold("so_detail")
+						)
+						+ "<br>"
+					)
+
+		if err_msg:
+			frappe.throw(err_msg, title=_("References to Sales Orders are Incomplete"))
+
+	def validate_sales_invoice_references(self):
+		err_msg = ""
+		for item in self.items:
+			if (item.against_sales_invoice and not item.si_detail) or (
+				not item.against_sales_invoice and item.si_detail
+			):
+				if not item.against_sales_invoice:
+					err_msg += (
+						_("'Sales Invoice' reference ({1}) is missing in row {0}").format(
+							frappe.bold(item.idx), frappe.bold("against_sales_invoice")
+						)
+						+ "<br>"
+					)
+				else:
+					err_msg += (
+						_("'Sales Invoice Item' reference ({1}) is missing in row {0}").format(
+							frappe.bold(item.idx), frappe.bold("si_detail")
+						)
+						+ "<br>"
+					)
+
+		if err_msg:
+			frappe.throw(err_msg, title=_("References to Sales Invoices are Incomplete"))
+
 	def validate_proj_cust(self):
 		"""check for does customer belong to same project as entered.."""
 		if self.project and self.customer:
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 293ef9f..905287d 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -824,6 +824,15 @@
 		dn.cancel()
 		self.assertEqual(dn.status, "Cancelled")
 
+	def test_sales_order_reference_validation(self):
+		so = make_sales_order(po_no="12345")
+		dn = create_dn_against_so(so.name, delivered_qty=2, do_not_submit=True)
+		dn.items[0].against_sales_order = None
+		self.assertRaises(frappe.ValidationError, dn.save)
+		dn.reload()
+		dn.items[0].so_detail = None
+		self.assertRaises(frappe.ValidationError, dn.save)
+
 	def test_dn_billing_status_case1(self):
 		# SO -> DN -> SI
 		so = make_sales_order(po_no="12345")
@@ -1099,9 +1108,30 @@
 		dn.load_from_db()
 
 		batch_no = get_batch_from_bundle(dn.packed_items[0].serial_and_batch_bundle)
+		packed_name = dn.packed_items[0].name
 		self.assertTrue(batch_no)
 
+		dn.cancel()
+
+		# Cancel the reposting entry
+		reposting_entries = frappe.get_all("Repost Item Valuation", filters={"docstatus": 1})
+		for entry in reposting_entries:
+			doc = frappe.get_doc("Repost Item Valuation", entry.name)
+			doc.cancel()
+			doc.delete()
+
+		frappe.db.set_single_value("Accounts Settings", "delete_linked_ledger_entries", 1)
+
+		dn.reload()
+		dn.delete()
+
+		bundle = frappe.db.get_value(
+			"Serial and Batch Bundle", {"voucher_detail_no": packed_name}, "name"
+		)
+		self.assertFalse(bundle)
+
 		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
+		frappe.db.set_single_value("Accounts Settings", "delete_linked_ledger_entries", 0)
 
 	def test_payment_terms_are_fetched_when_creating_sales_invoice(self):
 		from erpnext.accounts.doctype.payment_entry.test_payment_entry import (
diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
index 247672f..b8164b2 100644
--- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
+++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
@@ -796,7 +796,8 @@
    "label": "Purchase Order",
    "options": "Purchase Order",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "search_index": 1
   },
   {
    "fieldname": "column_break_82",
@@ -912,7 +913,7 @@
  "index_web_pages_for_search": 1,
  "istable": 1,
  "links": [],
- "modified": "2024-02-04 14:10:31.750340",
+ "modified": "2024-03-21 18:15:07.603672",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Delivery Note Item",
diff --git a/erpnext/stock/doctype/delivery_trip/delivery_trip_list.js b/erpnext/stock/doctype/delivery_trip/delivery_trip_list.js
index 230107c..65a1be3 100644
--- a/erpnext/stock/doctype/delivery_trip/delivery_trip_list.js
+++ b/erpnext/stock/doctype/delivery_trip/delivery_trip_list.js
@@ -1,9 +1,9 @@
 frappe.listview_settings["Delivery Trip"] = {
 	add_fields: ["status"],
 	get_indicator: function (doc) {
-		if (in_list(["Cancelled", "Draft"], doc.status)) {
+		if (["Cancelled", "Draft"].includes(doc.status)) {
 			return [__(doc.status), "red", "status,=," + doc.status];
-		} else if (in_list(["In Transit", "Scheduled"], doc.status)) {
+		} else if (["In Transit", "Scheduled"].includes(doc.status)) {
 			return [__(doc.status), "orange", "status,=," + doc.status];
 		} else if (doc.status === "Completed") {
 			return [__(doc.status), "green", "status,=," + doc.status];
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 7a38024..5310a0f 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -406,14 +406,6 @@
 			};
 		};
 
-		frm.fields_dict.customer_items.grid.get_field("customer_name").get_query = function (doc, cdt, cdn) {
-			return { query: "erpnext.controllers.queries.customer_query" };
-		};
-
-		frm.fields_dict.supplier_items.grid.get_field("supplier").get_query = function (doc, cdt, cdn) {
-			return { query: "erpnext.controllers.queries.supplier_query" };
-		};
-
 		frm.fields_dict["item_defaults"].grid.get_field("default_warehouse").get_query = function (
 			doc,
 			cdt,
diff --git a/erpnext/stock/doctype/item_price/item_price.json b/erpnext/stock/doctype/item_price/item_price.json
index 707f346..bf944a4 100644
--- a/erpnext/stock/doctype/item_price/item_price.json
+++ b/erpnext/stock/doctype/item_price/item_price.json
@@ -104,7 +104,8 @@
    "in_standard_filter": 1,
    "label": "Price List",
    "options": "Price List",
-   "reqd": 1
+   "reqd": 1,
+   "search_index": 1
   },
   {
    "bold": 1,
@@ -220,7 +221,7 @@
  "idx": 1,
  "index_web_pages_for_search": 1,
  "links": [],
- "modified": "2024-01-30 14:02:19.304854",
+ "modified": "2024-03-13 12:23:39.630290",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Item Price",
diff --git a/erpnext/stock/doctype/item_price/item_price.py b/erpnext/stock/doctype/item_price/item_price.py
index de2add6..d64e321 100644
--- a/erpnext/stock/doctype/item_price/item_price.py
+++ b/erpnext/stock/doctype/item_price/item_price.py
@@ -7,7 +7,6 @@
 from frappe.model.document import Document
 from frappe.query_builder import Criterion
 from frappe.query_builder.functions import Cast_
-from frappe.utils import getdate
 
 
 class ItemPriceDuplicateItem(frappe.ValidationError):
@@ -46,7 +45,7 @@
 
 	def validate(self):
 		self.validate_item()
-		self.validate_dates()
+		self.validate_from_to_dates("valid_from", "valid_upto")
 		self.update_price_list_details()
 		self.update_item_details()
 		self.check_duplicates()
@@ -56,10 +55,10 @@
 		if not frappe.db.exists("Item", self.item_code):
 			frappe.throw(_("Item {0} not found.").format(self.item_code))
 
-	def validate_dates(self):
-		if self.valid_from and self.valid_upto:
-			if getdate(self.valid_from) > getdate(self.valid_upto):
-				frappe.throw(_("Valid From Date must be lesser than Valid Up To Date."))
+		if self.uom and not frappe.db.exists(
+			"UOM Conversion Detail", {"parenttype": "Item", "parent": self.item_code, "uom": self.uom}
+		):
+			frappe.throw(_("UOM {0} not found in Item {1}").format(self.uom, self.item_code))
 
 	def update_price_list_details(self):
 		if self.price_list:
diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py
index 8a1f79d..4eab7e8 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.py
+++ b/erpnext/stock/doctype/pick_list/pick_list.py
@@ -184,7 +184,11 @@
 
 	def delink_serial_and_batch_bundle(self):
 		for row in self.locations:
-			if row.serial_and_batch_bundle:
+			if (
+				row.serial_and_batch_bundle
+				and frappe.db.get_value("Serial and Batch Bundle", row.serial_and_batch_bundle, "docstatus")
+				== 1
+			):
 				frappe.db.set_value(
 					"Serial and Batch Bundle",
 					row.serial_and_batch_bundle,
@@ -774,7 +778,7 @@
 
 	if picked_item_details:
 		for location in list(locations):
-			if location["qty"] < 1:
+			if location["qty"] < 0:
 				locations.remove(location)
 
 		total_qty_available = sum(location.get("qty") for location in locations)
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index 997cdd0..bfac438 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -3,6 +3,8 @@
 
 frappe.provide("erpnext.stock");
 
+cur_frm.cscript.tax_table = "Purchase Taxes and Charges";
+
 erpnext.accounts.taxes.setup_tax_filters("Purchase Taxes and Charges");
 erpnext.accounts.taxes.setup_tax_validations("Purchase Receipt");
 erpnext.buying.setup_buying_controller();
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
index a181022..a0c6ec3 100755
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
@@ -313,7 +313,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Address",
    "read_only": 1
   },
@@ -352,7 +352,7 @@
   },
   {
    "fieldname": "shipping_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Shipping Address",
    "print_hide": 1,
    "read_only": 1
@@ -651,7 +651,7 @@
   },
   {
    "fieldname": "other_charges_calculation",
-   "fieldtype": "Long Text",
+   "fieldtype": "Text Editor",
    "label": "Taxes and Charges Calculation",
    "no_copy": 1,
    "oldfieldtype": "HTML",
@@ -1095,7 +1095,7 @@
   },
   {
    "fieldname": "billing_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Billing Address",
    "read_only": 1
   },
@@ -1252,7 +1252,7 @@
  "idx": 261,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-12-18 17:26:41.279663",
+ "modified": "2024-03-22 16:15:10.937188",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Purchase Receipt",
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 2eec58f..e87e20d 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -40,7 +40,7 @@
 		from erpnext.stock.doctype.purchase_receipt_item.purchase_receipt_item import PurchaseReceiptItem
 
 		additional_discount_percentage: DF.Float
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		apply_discount_on: DF.Literal["", "Grand Total", "Net Total"]
 		apply_putaway_rule: DF.Check
@@ -56,7 +56,7 @@
 		base_total: DF.Currency
 		base_total_taxes_and_charges: DF.Currency
 		billing_address: DF.Link | None
-		billing_address_display: DF.SmallText | None
+		billing_address_display: DF.TextEditor | None
 		buying_price_list: DF.Link | None
 		company: DF.Link
 		contact_display: DF.SmallText | None
@@ -87,7 +87,7 @@
 		named_place: DF.Data | None
 		naming_series: DF.Literal["MAT-PRE-.YYYY.-", "MAT-PR-RET-.YYYY.-"]
 		net_total: DF.Currency
-		other_charges_calculation: DF.LongText | None
+		other_charges_calculation: DF.TextEditor | None
 		per_billed: DF.Percent
 		per_returned: DF.Percent
 		plc_conversion_rate: DF.Float
@@ -109,7 +109,7 @@
 		set_posting_time: DF.Check
 		set_warehouse: DF.Link | None
 		shipping_address: DF.Link | None
-		shipping_address_display: DF.SmallText | None
+		shipping_address_display: DF.TextEditor | None
 		shipping_rule: DF.Link | None
 		status: DF.Literal["", "Draft", "To Bill", "Completed", "Return Issued", "Cancelled", "Closed"]
 		subcontracting_receipt: DF.Link | None
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index fa2c21f..5cf2080 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -2559,6 +2559,280 @@
 				self.assertEqual(row.serial_no, "\n".join(serial_nos[:2]))
 				self.assertEqual(row.rejected_serial_no, serial_nos[2])
 
+	def test_internal_transfer_with_serial_batch_items_and_their_valuation(self):
+		from erpnext.controllers.sales_and_purchase_return import make_return_doc
+		from erpnext.stock.doctype.delivery_note.delivery_note import make_inter_company_purchase_receipt
+		from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
+
+		prepare_data_for_internal_transfer()
+
+		customer = "_Test Internal Customer 2"
+		company = "_Test Company with perpetual inventory"
+
+		batch_item_doc = make_item(
+			"_Test Batch Item For Stock Transfer",
+			{"has_batch_no": 1, "create_new_batch": 1, "batch_number_series": "BT-BIFST-.####"},
+		)
+
+		serial_item_doc = make_item(
+			"_Test Serial No Item For Stock Transfer",
+			{"has_serial_no": 1, "serial_no_series": "BT-BIFST-.####"},
+		)
+
+		inward_entry = make_purchase_receipt(
+			item_code=batch_item_doc.name,
+			qty=10,
+			rate=150,
+			warehouse="Stores - TCP1",
+			company="_Test Company with perpetual inventory",
+			use_serial_batch_fields=1,
+			do_not_submit=1,
+		)
+
+		inward_entry.append(
+			"items",
+			{
+				"item_code": serial_item_doc.name,
+				"qty": 15,
+				"rate": 250,
+				"item_name": serial_item_doc.item_name,
+				"conversion_factor": 1.0,
+				"uom": serial_item_doc.stock_uom,
+				"stock_uom": serial_item_doc.stock_uom,
+				"warehouse": "Stores - TCP1",
+				"use_serial_batch_fields": 1,
+			},
+		)
+
+		inward_entry.submit()
+		inward_entry.reload()
+
+		for row in inward_entry.items:
+			self.assertTrue(row.serial_and_batch_bundle)
+
+		inter_transfer_dn = create_delivery_note(
+			item_code=inward_entry.items[0].item_code,
+			company=company,
+			customer=customer,
+			cost_center="Main - TCP1",
+			expense_account="Cost of Goods Sold - TCP1",
+			qty=10,
+			rate=500,
+			warehouse="Stores - TCP1",
+			target_warehouse="Work In Progress - TCP1",
+			batch_no=get_batch_from_bundle(inward_entry.items[0].serial_and_batch_bundle),
+			use_serial_batch_fields=1,
+			do_not_submit=1,
+		)
+
+		inter_transfer_dn.append(
+			"items",
+			{
+				"item_code": serial_item_doc.name,
+				"qty": 15,
+				"rate": 350,
+				"item_name": serial_item_doc.item_name,
+				"conversion_factor": 1.0,
+				"uom": serial_item_doc.stock_uom,
+				"stock_uom": serial_item_doc.stock_uom,
+				"warehouse": "Stores - TCP1",
+				"target_warehouse": "Work In Progress - TCP1",
+				"serial_no": "\n".join(
+					get_serial_nos_from_bundle(inward_entry.items[1].serial_and_batch_bundle)
+				),
+				"use_serial_batch_fields": 1,
+			},
+		)
+
+		inter_transfer_dn.submit()
+		inter_transfer_dn.reload()
+		for row in inter_transfer_dn.items:
+			if row.item_code == batch_item_doc.name:
+				self.assertEqual(row.rate, 150.0)
+			else:
+				self.assertEqual(row.rate, 250.0)
+
+			self.assertTrue(row.serial_and_batch_bundle)
+
+		inter_transfer_pr = make_inter_company_purchase_receipt(inter_transfer_dn.name)
+		for row in inter_transfer_pr.items:
+			row.from_warehouse = "Work In Progress - TCP1"
+			row.warehouse = "Stores - TCP1"
+		inter_transfer_pr.submit()
+
+		for row in inter_transfer_pr.items:
+			if row.item_code == batch_item_doc.name:
+				self.assertEqual(row.rate, 150.0)
+			else:
+				self.assertEqual(row.rate, 250.0)
+
+			self.assertTrue(row.serial_and_batch_bundle)
+
+		inter_transfer_pr_return = make_return_doc("Purchase Receipt", inter_transfer_pr.name)
+
+		inter_transfer_pr_return.submit()
+		inter_transfer_pr_return.reload()
+		for row in inter_transfer_pr_return.items:
+			self.assertTrue(row.serial_and_batch_bundle)
+			if row.item_code == serial_item_doc.name:
+				self.assertEqual(row.rate, 250.0)
+				serial_nos = get_serial_nos_from_bundle(row.serial_and_batch_bundle)
+				for sn in serial_nos:
+					serial_no_details = frappe.db.get_value("Serial No", sn, ["status", "warehouse"], as_dict=1)
+					self.assertTrue(serial_no_details.status == "Active")
+					self.assertEqual(serial_no_details.warehouse, "Work In Progress - TCP1")
+
+		inter_transfer_dn_return = make_return_doc("Delivery Note", inter_transfer_dn.name)
+		inter_transfer_dn_return.posting_date = today()
+		inter_transfer_dn_return.posting_time = nowtime()
+		for row in inter_transfer_dn_return.items:
+			row.target_warehouse = "Work In Progress - TCP1"
+
+		inter_transfer_dn_return.submit()
+		inter_transfer_dn_return.reload()
+
+		for row in inter_transfer_dn_return.items:
+			self.assertTrue(row.serial_and_batch_bundle)
+
+	def test_internal_transfer_with_serial_batch_items_without_user_serial_batch_fields(self):
+		from erpnext.controllers.sales_and_purchase_return import make_return_doc
+		from erpnext.stock.doctype.delivery_note.delivery_note import make_inter_company_purchase_receipt
+		from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
+
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0)
+
+		prepare_data_for_internal_transfer()
+
+		customer = "_Test Internal Customer 2"
+		company = "_Test Company with perpetual inventory"
+
+		batch_item_doc = make_item(
+			"_Test Batch Item For Stock Transfer USE SERIAL BATCH FIELDS",
+			{"has_batch_no": 1, "create_new_batch": 1, "batch_number_series": "USBF-BT-BIFST-.####"},
+		)
+
+		serial_item_doc = make_item(
+			"_Test Serial No Item For Stock Transfer USE SERIAL BATCH FIELDS",
+			{"has_serial_no": 1, "serial_no_series": "USBF-BT-BIFST-.####"},
+		)
+
+		inward_entry = make_purchase_receipt(
+			item_code=batch_item_doc.name,
+			qty=10,
+			rate=150,
+			warehouse="Stores - TCP1",
+			company="_Test Company with perpetual inventory",
+			use_serial_batch_fields=0,
+			do_not_submit=1,
+		)
+
+		inward_entry.append(
+			"items",
+			{
+				"item_code": serial_item_doc.name,
+				"qty": 15,
+				"rate": 250,
+				"item_name": serial_item_doc.item_name,
+				"conversion_factor": 1.0,
+				"uom": serial_item_doc.stock_uom,
+				"stock_uom": serial_item_doc.stock_uom,
+				"warehouse": "Stores - TCP1",
+				"use_serial_batch_fields": 0,
+			},
+		)
+
+		inward_entry.submit()
+		inward_entry.reload()
+
+		for row in inward_entry.items:
+			self.assertTrue(row.serial_and_batch_bundle)
+
+		inter_transfer_dn = create_delivery_note(
+			item_code=inward_entry.items[0].item_code,
+			company=company,
+			customer=customer,
+			cost_center="Main - TCP1",
+			expense_account="Cost of Goods Sold - TCP1",
+			qty=10,
+			rate=500,
+			warehouse="Stores - TCP1",
+			target_warehouse="Work In Progress - TCP1",
+			batch_no=get_batch_from_bundle(inward_entry.items[0].serial_and_batch_bundle),
+			use_serial_batch_fields=0,
+			do_not_submit=1,
+		)
+
+		inter_transfer_dn.append(
+			"items",
+			{
+				"item_code": serial_item_doc.name,
+				"qty": 15,
+				"rate": 350,
+				"item_name": serial_item_doc.item_name,
+				"conversion_factor": 1.0,
+				"uom": serial_item_doc.stock_uom,
+				"stock_uom": serial_item_doc.stock_uom,
+				"warehouse": "Stores - TCP1",
+				"target_warehouse": "Work In Progress - TCP1",
+				"serial_no": "\n".join(
+					get_serial_nos_from_bundle(inward_entry.items[1].serial_and_batch_bundle)
+				),
+				"use_serial_batch_fields": 0,
+			},
+		)
+
+		inter_transfer_dn.submit()
+		inter_transfer_dn.reload()
+		for row in inter_transfer_dn.items:
+			if row.item_code == batch_item_doc.name:
+				self.assertEqual(row.rate, 150.0)
+			else:
+				self.assertEqual(row.rate, 250.0)
+
+			self.assertTrue(row.serial_and_batch_bundle)
+
+		inter_transfer_pr = make_inter_company_purchase_receipt(inter_transfer_dn.name)
+		for row in inter_transfer_pr.items:
+			row.from_warehouse = "Work In Progress - TCP1"
+			row.warehouse = "Stores - TCP1"
+		inter_transfer_pr.submit()
+
+		for row in inter_transfer_pr.items:
+			if row.item_code == batch_item_doc.name:
+				self.assertEqual(row.rate, 150.0)
+			else:
+				self.assertEqual(row.rate, 250.0)
+
+			self.assertTrue(row.serial_and_batch_bundle)
+
+		inter_transfer_pr_return = make_return_doc("Purchase Receipt", inter_transfer_pr.name)
+
+		inter_transfer_pr_return.submit()
+		inter_transfer_pr_return.reload()
+		for row in inter_transfer_pr_return.items:
+			self.assertTrue(row.serial_and_batch_bundle)
+			if row.item_code == serial_item_doc.name:
+				self.assertEqual(row.rate, 250.0)
+				serial_nos = get_serial_nos_from_bundle(row.serial_and_batch_bundle)
+				for sn in serial_nos:
+					serial_no_details = frappe.db.get_value("Serial No", sn, ["status", "warehouse"], as_dict=1)
+					self.assertTrue(serial_no_details.status == "Active")
+					self.assertEqual(serial_no_details.warehouse, "Work In Progress - TCP1")
+
+		inter_transfer_dn_return = make_return_doc("Delivery Note", inter_transfer_dn.name)
+		inter_transfer_dn_return.posting_date = today()
+		inter_transfer_dn_return.posting_time = nowtime()
+		for row in inter_transfer_dn_return.items:
+			row.target_warehouse = "Work In Progress - TCP1"
+
+		inter_transfer_dn_return.submit()
+		inter_transfer_dn_return.reload()
+
+		for row in inter_transfer_dn_return.items:
+			self.assertTrue(row.serial_and_batch_bundle)
+
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
+
 
 def prepare_data_for_internal_transfer():
 	from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier
diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
index 7a58462..59ef43e 100644
--- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
+++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
@@ -113,6 +113,7 @@
   {
    "fieldname": "voucher_no",
    "fieldtype": "Dynamic Link",
+   "in_standard_filter": 1,
    "label": "Voucher No",
    "no_copy": 1,
    "options": "voucher_type",
@@ -250,7 +251,7 @@
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-12-07 17:56:55.528563",
+ "modified": "2024-03-15 15:22:24.003486",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Serial and Batch Bundle",
diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
index 08cb3ca..58971e8 100644
--- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
+++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
@@ -778,6 +778,10 @@
 			or_filters=or_filters,
 		)
 
+		if not vouchers and self.voucher_type == "Delivery Note":
+			frappe.db.set_value("Packed Item", self.voucher_detail_no, "serial_and_batch_bundle", None)
+			return
+
 		for voucher in vouchers:
 			if voucher.get("current_serial_and_batch_bundle"):
 				frappe.db.set_value(self.child_table, voucher.name, "current_serial_and_batch_bundle", None)
@@ -801,6 +805,7 @@
 		self.set_purchase_document_no()
 
 	def on_submit(self):
+		self.validate_batch_inventory()
 		self.validate_serial_nos_inventory()
 
 	def set_purchase_document_no(self):
@@ -827,6 +832,13 @@
 		if not self.has_batch_no:
 			return
 
+		if (
+			self.voucher_type == "Stock Reconciliation"
+			and self.type_of_transaction == "Outward"
+			and frappe.db.get_value("Stock Reconciliation Item", self.voucher_detail_no, "qty") > 0
+		):
+			return
+
 		batches = [d.batch_no for d in self.entries if d.batch_no]
 		if not batches:
 			return
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index ac2fe58..96a9209 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -1081,7 +1081,9 @@
 			cint(frappe.user_defaults?.use_serial_batch_fields) === 1
 		) {
 			this.frm.doc.items.forEach((item) => {
-				frappe.model.set_value(item.doctype, item.name, "use_serial_batch_fields", 1);
+				if (!item.serial_and_batch_bundle) {
+					frappe.model.set_value(item.doctype, item.name, "use_serial_batch_fields", 1);
+				}
 			});
 		}
 	}
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.json b/erpnext/stock/doctype/stock_entry/stock_entry.json
index d45296f..61e9f25 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.json
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.json
@@ -306,7 +306,7 @@
   },
   {
    "fieldname": "source_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Source Warehouse Address",
    "read_only": 1
   },
@@ -336,7 +336,7 @@
   },
   {
    "fieldname": "target_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Target Warehouse Address",
    "read_only": 1
   },
@@ -464,7 +464,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Address"
   },
   {
@@ -681,7 +681,7 @@
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2024-01-12 11:56:58.644882",
+ "modified": "2024-03-22 16:23:13.683565",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Stock Entry",
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index b206406..d2dab8a 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -85,7 +85,7 @@
 
 		add_to_transit: DF.Check
 		additional_costs: DF.Table[LandedCostTaxesandCharges]
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		apply_putaway_rule: DF.Check
 		bom_no: DF.Link | None
@@ -127,14 +127,14 @@
 		scan_barcode: DF.Data | None
 		select_print_heading: DF.Link | None
 		set_posting_time: DF.Check
-		source_address_display: DF.SmallText | None
+		source_address_display: DF.TextEditor | None
 		source_warehouse_address: DF.Link | None
 		stock_entry_type: DF.Link
 		subcontracting_order: DF.Link | None
 		supplier: DF.Link | None
 		supplier_address: DF.Link | None
 		supplier_name: DF.Data | None
-		target_address_display: DF.SmallText | None
+		target_address_display: DF.TextEditor | None
 		target_warehouse_address: DF.Link | None
 		to_warehouse: DF.Link | None
 		total_additional_costs: DF.Currency
@@ -2541,6 +2541,7 @@
 					)
 
 					d.serial_and_batch_bundle = id
+					d.use_serial_batch_fields = 0
 
 	def get_available_serial_nos(self) -> List[str]:
 		serial_nos = []
@@ -2611,6 +2612,7 @@
 						"type_of_transaction": "Outward",
 						"serial_and_batch_bundle": item.get("serial_and_batch_bundle"),
 						"item_code": item.get("item_code"),
+						"warehouse": item.get("t_warehouse"),
 					}
 				)
 
@@ -2639,7 +2641,9 @@
 	def set_missing_values(source, target):
 		target.stock_entry_type = "Material Transfer"
 		target.set_missing_values()
-		target.make_serial_and_batch_bundle_for_transfer()
+
+		if not frappe.db.get_single_value("Stock Settings", "use_serial_batch_fields"):
+			target.make_serial_and_batch_bundle_for_transfer()
 
 	def update_item(source_doc, target_doc, source_parent):
 		target_doc.t_warehouse = ""
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index 39166e2..01a43b3 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -1008,6 +1008,7 @@
 				"type_of_transaction": "Inward",
 				"serial_and_batch_bundle": s2.items[0].serial_and_batch_bundle,
 				"item_code": "_Test Serialized Item",
+				"warehouse": "_Test Warehouse - _TC",
 			}
 		)
 
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json
index 3a094f1..e8e82af 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json
@@ -230,7 +230,7 @@
   },
   {
    "fieldname": "stock_queue",
-   "fieldtype": "Text",
+   "fieldtype": "Long Text",
    "label": "FIFO Stock Queue (qty, rate)",
    "oldfieldname": "fcfs_stack",
    "oldfieldtype": "Text",
@@ -360,7 +360,7 @@
  "in_create": 1,
  "index_web_pages_for_search": 1,
  "links": [],
- "modified": "2024-02-07 09:18:13.999231",
+ "modified": "2024-03-13 09:56:13.021696",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Stock Ledger Entry",
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index a3e51ca..b49fe22 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -58,7 +58,7 @@
 		recalculate_rate: DF.Check
 		serial_and_batch_bundle: DF.Link | None
 		serial_no: DF.LongText | None
-		stock_queue: DF.Text | None
+		stock_queue: DF.LongText | None
 		stock_uom: DF.Link | None
 		stock_value: DF.Currency
 		stock_value_difference: DF.Currency
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 3356ad5..0311481 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -154,7 +154,6 @@
 					{
 						"current_serial_and_batch_bundle": sn_doc.name,
 						"current_serial_no": "",
-						"batch_no": "",
 					}
 				)
 
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 1cb1057..d09282d 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -103,22 +103,8 @@
 	if args.customer and cint(args.is_pos):
 		out.update(get_pos_profile_item_details(args.company, args, update_data=True))
 
-	if (
-		args.get("doctype") == "Material Request"
-		and args.get("material_request_type") == "Material Transfer"
-	):
-		out.update(get_bin_details(args.item_code, args.get("from_warehouse")))
-
-	elif out.get("warehouse"):
-		if doc and doc.get("doctype") == "Purchase Order":
-			# calculate company_total_stock only for po
-			bin_details = get_bin_details(
-				args.item_code, out.warehouse, args.company, include_child_warehouses=True
-			)
-		else:
-			bin_details = get_bin_details(args.item_code, out.warehouse, include_child_warehouses=True)
-
-		out.update(bin_details)
+	if item.is_stock_item:
+		update_bin_details(args, out, doc)
 
 	# update args with out, if key or value not exists
 	for key, value in out.items():
@@ -169,6 +155,24 @@
 		out.update(get_valuation_rate(args.item_code, args.company, out.get("warehouse")))
 
 
+def update_bin_details(args, out, doc):
+	if (
+		args.get("doctype") == "Material Request"
+		and args.get("material_request_type") == "Material Transfer"
+	):
+		out.update(get_bin_details(args.item_code, args.get("from_warehouse")))
+
+	elif out.get("warehouse"):
+		company = args.company if (doc and doc.get("doctype") == "Purchase Order") else None
+
+		# calculate company_total_stock only for po
+		bin_details = get_bin_details(
+			args.item_code, out.warehouse, company, include_child_warehouses=True
+		)
+
+		out.update(bin_details)
+
+
 def process_args(args):
 	if isinstance(args, str):
 		args = json.loads(args)
@@ -816,10 +820,14 @@
 			price_list_rate = get_price_list_rate_for(args, item_doc.variant_of)
 
 		# insert in database
-		if price_list_rate is None:
+		if price_list_rate is None or frappe.db.get_single_value(
+			"Stock Settings", "update_existing_price_list_rate"
+		):
 			if args.price_list and args.rate:
 				insert_item_price(args)
-			return out
+
+			if not price_list_rate:
+				return out
 
 		out.price_list_rate = (
 			flt(price_list_rate) * flt(args.plc_conversion_rate) / flt(args.conversion_rate)
@@ -883,7 +891,7 @@
 				)
 
 
-def get_item_price(args, item_code, ignore_party=False):
+def get_item_price(args, item_code, ignore_party=False) -> list[dict]:
 	"""
 	Get name, price_list_rate from Item Price based on conditions
 	        Check if the desired qty is within the increment of the packing list.
@@ -905,6 +913,7 @@
 		.orderby(ip.valid_from, order=frappe.qb.desc)
 		.orderby(IfNull(ip.batch_no, ""), order=frappe.qb.desc)
 		.orderby(ip.uom, order=frappe.qb.desc)
+		.limit(1)
 	)
 
 	if not ignore_party:
@@ -921,7 +930,7 @@
 			& (IfNull(ip.valid_upto, "2500-12-31") >= args["transaction_date"])
 		)
 
-	return query.run()
+	return query.run(as_dict=True)
 
 
 def get_price_list_rate_for(args, item_code):
@@ -947,7 +956,7 @@
 	price_list_rate = get_item_price(item_price_args, item_code)
 	if price_list_rate:
 		desired_qty = args.get("qty")
-		if desired_qty and check_packing_list(price_list_rate[0][0], desired_qty, item_code):
+		if desired_qty and check_packing_list(price_list_rate[0].name, desired_qty, item_code):
 			item_price_data = price_list_rate
 	else:
 		for field in ["customer", "supplier"]:
@@ -967,12 +976,12 @@
 			item_price_data = general_price_list_rate
 
 	if item_price_data:
-		if item_price_data[0][2] == args.get("uom"):
-			return item_price_data[0][1]
+		if item_price_data[0].uom == args.get("uom"):
+			return item_price_data[0].price_list_rate
 		elif not args.get("price_list_uom_dependant"):
-			return flt(item_price_data[0][1] * flt(args.get("conversion_factor", 1)))
+			return flt(item_price_data[0].price_list_rate * flt(args.get("conversion_factor", 1)))
 		else:
-			return item_price_data[0][1]
+			return item_price_data[0].price_list_rate
 
 
 def check_packing_list(price_list_rate_name, desired_qty, item_code):
diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py
index 2e4b08c..e98351a 100644
--- a/erpnext/stock/report/stock_ledger/stock_ledger.py
+++ b/erpnext/stock/report/stock_ledger/stock_ledger.py
@@ -60,6 +60,7 @@
 		if filters.get("batch_no") or inventory_dimension_filters_applied:
 			actual_qty += flt(sle.actual_qty, precision)
 			stock_value += sle.stock_value_difference
+			batch_balance_dict[sle.batch_no] += sle.actual_qty
 
 			if sle.voucher_type == "Stock Reconciliation" and not sle.actual_qty:
 				actual_qty = sle.qty_after_transaction
diff --git a/erpnext/stock/serial_batch_bundle.py b/erpnext/stock/serial_batch_bundle.py
index 4e87fa0..7b42103 100644
--- a/erpnext/stock/serial_batch_bundle.py
+++ b/erpnext/stock/serial_batch_bundle.py
@@ -820,6 +820,10 @@
 			self.remove_returned_serial_nos(new_package)
 
 		new_package.docstatus = 0
+		new_package.warehouse = self.warehouse
+		new_package.voucher_no = ""
+		new_package.posting_date = today()
+		new_package.posting_time = nowtime()
 		new_package.type_of_transaction = self.type_of_transaction
 		new_package.returned_against = self.get("returned_against")
 		new_package.save()
diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json
index 507e233..7cbf7db 100644
--- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json
+++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json
@@ -182,7 +182,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Supplier Address Details",
    "read_only": 1
   },
@@ -230,7 +230,7 @@
   },
   {
    "fieldname": "shipping_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Shipping Address Details",
    "print_hide": 1,
    "read_only": 1
@@ -243,7 +243,7 @@
   },
   {
    "fieldname": "billing_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Billing Address Details",
    "read_only": 1
   },
@@ -454,7 +454,7 @@
  "icon": "fa fa-file-text",
  "is_submittable": 1,
  "links": [],
- "modified": "2024-01-03 20:56:04.670380",
+ "modified": "2024-03-22 16:15:07.797633",
  "modified_by": "Administrator",
  "module": "Subcontracting",
  "name": "Subcontracting Order",
diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py
index daccbbb..321ae51 100644
--- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py
+++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py
@@ -36,10 +36,10 @@
 		)
 
 		additional_costs: DF.Table[LandedCostTaxesandCharges]
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		billing_address: DF.Link | None
-		billing_address_display: DF.SmallText | None
+		billing_address_display: DF.TextEditor | None
 		company: DF.Link
 		contact_display: DF.SmallText | None
 		contact_email: DF.SmallText | None
@@ -59,7 +59,7 @@
 		set_reserve_warehouse: DF.Link | None
 		set_warehouse: DF.Link | None
 		shipping_address: DF.Link | None
-		shipping_address_display: DF.SmallText | None
+		shipping_address_display: DF.TextEditor | None
 		status: DF.Literal[
 			"Draft",
 			"Open",
diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
index 383a83b..8b9cbe3 100644
--- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
+++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
@@ -192,7 +192,7 @@
   },
   {
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Address",
    "read_only": 1
   },
@@ -231,7 +231,7 @@
   },
   {
    "fieldname": "shipping_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Shipping Address",
    "print_hide": 1,
    "read_only": 1
@@ -521,7 +521,7 @@
   },
   {
    "fieldname": "billing_address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Billing Address",
    "read_only": 1
   },
@@ -645,7 +645,7 @@
  "in_create": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-11-16 13:04:00.710534",
+ "modified": "2024-03-22 16:15:08.074134",
  "modified_by": "Administrator",
  "module": "Subcontracting",
  "name": "Subcontracting Receipt",
diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py
index 3467b82..4e2b9c2 100644
--- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py
+++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py
@@ -33,13 +33,13 @@
 		)
 
 		additional_costs: DF.Table[LandedCostTaxesandCharges]
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amended_from: DF.Link | None
 		auto_repeat: DF.Link | None
 		bill_date: DF.Date | None
 		bill_no: DF.Data | None
 		billing_address: DF.Link | None
-		billing_address_display: DF.SmallText | None
+		billing_address_display: DF.TextEditor | None
 		company: DF.Link
 		contact_display: DF.SmallText | None
 		contact_email: DF.SmallText | None
@@ -69,7 +69,7 @@
 		set_posting_time: DF.Check
 		set_warehouse: DF.Link | None
 		shipping_address: DF.Link | None
-		shipping_address_display: DF.SmallText | None
+		shipping_address_display: DF.TextEditor | None
 		status: DF.Literal["", "Draft", "Completed", "Return", "Return Issued", "Cancelled", "Closed"]
 		supplied_items: DF.Table[SubcontractingReceiptSuppliedItem]
 		supplier: DF.Link
@@ -149,7 +149,9 @@
 		self.update_prevdoc_status()
 		self.set_subcontracting_order_status()
 		self.set_consumed_qty_in_subcontract_order()
-		self.make_bundle_using_old_serial_batch_fields()
+
+		for table_name in ["items", "supplied_items"]:
+			self.make_bundle_using_old_serial_batch_fields(table_name)
 		self.update_stock_ledger()
 		self.make_gl_entries()
 		self.repost_future_sle_and_gle()
diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py b/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py
index 3e74ac9..4f4a1bd 100644
--- a/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py
+++ b/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py
@@ -292,6 +292,7 @@
 		self.assertRaises(OverAllowanceError, make_return_subcontracting_receipt, **args)
 
 	def test_subcontracting_receipt_no_gl_entry(self):
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0)
 		sco = get_subcontracting_order()
 		rm_items = get_rm_items(sco.supplied_items)
 		itemwise_details = make_stock_in_entry(rm_items=rm_items)
@@ -327,8 +328,10 @@
 		# Service Cost(100 * 10) + Raw Materials Cost(100 * 10) + Additional Costs(10 * 10) = 2100
 		self.assertEqual(stock_value_difference, 2100)
 		self.assertFalse(get_gl_entries("Subcontracting Receipt", scr.name))
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
 
 	def test_subcontracting_receipt_gl_entry(self):
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0)
 		sco = get_subcontracting_order(
 			company="_Test Company with perpetual inventory",
 			warehouse="Stores - TCP1",
@@ -387,6 +390,7 @@
 		scr.reload()
 		scr.cancel()
 		self.assertTrue(get_gl_entries("Subcontracting Receipt", scr.name))
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
 
 	def test_supplied_items_consumed_qty(self):
 		# Set Backflush Based On as "Material Transferred for Subcontracting" to transfer RM's more than the required qty
@@ -664,6 +668,7 @@
 		)
 
 	def test_subcontracting_receipt_valuation_for_fg_with_auto_created_serial_batch_bundle(self):
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0)
 		set_backflush_based_on("BOM")
 
 		fg_item = make_item(
@@ -760,9 +765,11 @@
 		frappe.db.set_single_value(
 			"Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", 0
 		)
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
 
 	def test_subcontracting_receipt_raw_material_rate(self):
 		# Step - 1: Set Backflush Based On as "BOM"
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0)
 		set_backflush_based_on("BOM")
 
 		# Step - 2: Create FG and RM Items
@@ -820,6 +827,8 @@
 			self.assertEqual(rm_item.rate, 100)
 			self.assertEqual(rm_item.amount, rm_item.consumed_qty * rm_item.rate)
 
+		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
+
 	def test_quality_inspection_for_subcontracting_receipt(self):
 		from erpnext.stock.doctype.quality_inspection.test_quality_inspection import (
 			create_quality_inspection,
diff --git a/erpnext/support/doctype/warranty_claim/warranty_claim.json b/erpnext/support/doctype/warranty_claim/warranty_claim.json
index 9af2b46..4ff1bcc 100644
--- a/erpnext/support/doctype/warranty_claim/warranty_claim.json
+++ b/erpnext/support/doctype/warranty_claim/warranty_claim.json
@@ -311,7 +311,7 @@
   {
    "depends_on": "customer",
    "fieldname": "address_display",
-   "fieldtype": "Small Text",
+   "fieldtype": "Text Editor",
    "label": "Address",
    "read_only": 1
   },
@@ -379,7 +379,7 @@
  "icon": "fa fa-bug",
  "idx": 1,
  "links": [],
- "modified": "2023-11-28 17:30:35.676410",
+ "modified": "2024-03-22 16:01:11.412114",
  "modified_by": "Administrator",
  "module": "Support",
  "name": "Warranty Claim",
diff --git a/erpnext/support/doctype/warranty_claim/warranty_claim.py b/erpnext/support/doctype/warranty_claim/warranty_claim.py
index e0eb5a3..658be57 100644
--- a/erpnext/support/doctype/warranty_claim/warranty_claim.py
+++ b/erpnext/support/doctype/warranty_claim/warranty_claim.py
@@ -18,7 +18,7 @@
 	if TYPE_CHECKING:
 		from frappe.types import DF
 
-		address_display: DF.SmallText | None
+		address_display: DF.TextEditor | None
 		amc_expiry_date: DF.Date | None
 		amended_from: DF.Link | None
 		company: DF.Link
diff --git a/erpnext/templates/form_grid/item_grid.html b/erpnext/templates/form_grid/item_grid.html
index 027046f..72db6c8 100644
--- a/erpnext/templates/form_grid/item_grid.html
+++ b/erpnext/templates/form_grid/item_grid.html
@@ -18,7 +18,7 @@
 					actual_qty = (frm.doc.doctype==="Sales Order"
 						? doc.projected_qty : doc.actual_qty);
                 if(flt(frm.doc.per_delivered, 2) < 100
-                    && in_list(["Sales Order Item", "Delivery Note Item"], doc.doctype)) {
+                    && ["Sales Order Item", "Delivery Note Item"].includes(doc.doctype)) {
     				if(actual_qty != undefined) {
     					if(actual_qty >= doc.qty) {
     						var color = "green";
diff --git a/erpnext/templates/generators/sales_partner.html b/erpnext/templates/generators/sales_partner.html
index 39138d3..9dd2db9 100644
--- a/erpnext/templates/generators/sales_partner.html
+++ b/erpnext/templates/generators/sales_partner.html
@@ -8,18 +8,20 @@
 <div class="partner-content" itemscope itemtype="http://schema.org/Organization">
 	<div class="row">
 		<div class="col-md-4">
-			{% if logo -%}
+			{% if logo %}
 			<img itemprop="brand" src="{{ logo }}" class="partner-logo"
 				alt="{{ partner_name }}" title="{{ partner_name }}" />
 			<br><br>
-			{%- endif %}
-			<address>
-				{% if partner_website -%}<p><a href="{{ partner_website }}"
-					target="_blank">{{ partner_website }}</a></p>{%- endif %}
-				{% if partner_address -%}<p itemprop="address">{{ partner_address }}</p>{%- endif %}
-				{% if phone -%}<p itemprop="telephone">{{ phone }}</p>{%- endif %}
-				{% if email -%}<p itemprop="email"><span class="fa fa-envelope"></span> {{ email }}</p>{%- endif %}
-			</address>
+			{% endif %}
+			{% if addresses %}
+				{% for address in addresses %}
+					<address>
+						{% if address.partner_address %}<p itemprop="address">{{ address.partner_address }}</p>{% endif %}
+						{% if address.phone %}<p itemprop="telephone">{{ address.phone }}</p>{% endif %}
+						{% if address.email %}<p itemprop="email"><span class="fa fa-envelope"></span> {{ address.email }}</p>{% endif %}
+					</address>
+				{% endfor %}
+			{% endif %}
 		</div>
 		<div class="col-md-8">
 			<p>{{ description }}</p>
diff --git a/erpnext/utilities/bulk_transaction.py b/erpnext/utilities/bulk_transaction.py
index 3538c24..343a881 100644
--- a/erpnext/utilities/bulk_transaction.py
+++ b/erpnext/utilities/bulk_transaction.py
@@ -176,7 +176,7 @@
 	transaction_log.from_doctype = from_doctype
 	transaction_log.to_doctype = to_doctype
 	transaction_log.retried = restarted
-	transaction_log.save()
+	transaction_log.save(ignore_permissions=True)
 
 
 def show_job_status(fail_count, deserialized_data_count, to_doctype):