Merge branch 'develop' into feat/add-delivery-cutoff-date-on-so
diff --git a/.github/workflows/patch_faux.yml b/.github/workflows/patch_faux.yml
new file mode 100644
index 0000000..93d88bd
--- /dev/null
+++ b/.github/workflows/patch_faux.yml
@@ -0,0 +1,22 @@
+# Tests are skipped for these files but github doesn't allow "passing" hence this is required.
+
+name: Skipped Patch Test
+
+on:
+  pull_request:
+    paths:
+      - "**.js"
+      - "**.css"
+      - "**.md"
+      - "**.html"
+      - "**.csv"
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+
+    name: Patch Test
+
+    steps:
+      - name: Pass skipped tests unconditionally
+        run: "echo Skipped"
diff --git a/.github/workflows/server-tests-mariadb-faux.yml b/.github/workflows/server-tests-mariadb-faux.yml
new file mode 100644
index 0000000..8334661
--- /dev/null
+++ b/.github/workflows/server-tests-mariadb-faux.yml
@@ -0,0 +1,24 @@
+# Tests are skipped for these files but github doesn't allow "passing" hence this is required.
+
+name: Skipped Tests
+
+on:
+  pull_request:
+    paths:
+      - "**.js"
+      - "**.css"
+      - "**.md"
+      - "**.html"
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        container: [1, 2, 3, 4]
+
+    name: Python Unit Tests
+
+    steps:
+      - name: Pass skipped tests unconditionally
+        run: "echo Skipped"
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json
index 2ec0b7f..56b22a6 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json
@@ -36,16 +36,16 @@
                 }
             },
             "Fixed Assets": {
-                "Capital Equipments": {
+                "Capital Equipment": {
                     "account_type": "Fixed Asset"
                 },
-                "Electronic Equipments": {
+                "Electronic Equipment": {
                     "account_type": "Fixed Asset"
                 },
-                "Furnitures and Fixtures": {
+                "Furniture and Fixtures": {
                     "account_type": "Fixed Asset"
                 },
-                "Office Equipments": {
+                "Office Equipment": {
                     "account_type": "Fixed Asset"
                 },
                 "Plants and Machineries": {
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py
index e30ad24..0699932 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py
@@ -23,13 +23,13 @@
 				_("Tax Assets"): {"is_group": 1},
 			},
 			_("Fixed Assets"): {
-				_("Capital Equipments"): {"account_type": "Fixed Asset"},
-				_("Electronic Equipments"): {"account_type": "Fixed Asset"},
-				_("Furnitures and Fixtures"): {"account_type": "Fixed Asset"},
-				_("Office Equipments"): {"account_type": "Fixed Asset"},
+				_("Capital Equipment"): {"account_type": "Fixed Asset"},
+				_("Electronic Equipment"): {"account_type": "Fixed Asset"},
+				_("Furniture and Fixtures"): {"account_type": "Fixed Asset"},
+				_("Office Equipment"): {"account_type": "Fixed Asset"},
 				_("Plants and Machineries"): {"account_type": "Fixed Asset"},
 				_("Buildings"): {"account_type": "Fixed Asset"},
-				_("Softwares"): {"account_type": "Fixed Asset"},
+				_("Software"): {"account_type": "Fixed Asset"},
 				_("Accumulated Depreciation"): {"account_type": "Accumulated Depreciation"},
 				_("CWIP Account"): {
 					"account_type": "Capital Work in Progress",
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py
index 0e46f1e..ee4da73 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py
@@ -36,13 +36,13 @@
 				"account_number": "1100-1600",
 			},
 			_("Fixed Assets"): {
-				_("Capital Equipments"): {"account_type": "Fixed Asset", "account_number": "1710"},
-				_("Electronic Equipments"): {"account_type": "Fixed Asset", "account_number": "1720"},
-				_("Furnitures and Fixtures"): {"account_type": "Fixed Asset", "account_number": "1730"},
-				_("Office Equipments"): {"account_type": "Fixed Asset", "account_number": "1740"},
+				_("Capital Equipment"): {"account_type": "Fixed Asset", "account_number": "1710"},
+				_("Electronic Equipment"): {"account_type": "Fixed Asset", "account_number": "1720"},
+				_("Furniture and Fixtures"): {"account_type": "Fixed Asset", "account_number": "1730"},
+				_("Office Equipment"): {"account_type": "Fixed Asset", "account_number": "1740"},
 				_("Plants and Machineries"): {"account_type": "Fixed Asset", "account_number": "1750"},
 				_("Buildings"): {"account_type": "Fixed Asset", "account_number": "1760"},
-				_("Softwares"): {"account_type": "Fixed Asset", "account_number": "1770"},
+				_("Software"): {"account_type": "Fixed Asset", "account_number": "1770"},
 				_("Accumulated Depreciation"): {
 					"account_type": "Accumulated Depreciation",
 					"account_number": "1780",
diff --git a/erpnext/accounts/doctype/account/test_account.py b/erpnext/accounts/doctype/account/test_account.py
index 30eebef..eb3e00b 100644
--- a/erpnext/accounts/doctype/account/test_account.py
+++ b/erpnext/accounts/doctype/account/test_account.py
@@ -119,7 +119,7 @@
 			InvalidAccountMergeError,
 			merge_account,
 			"Capital Stock - _TC",
-			"Softwares - _TC",
+			"Software - _TC",
 		)
 
 		# Raise error as currency doesn't match
diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
index fd052d0..b10924f 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -462,7 +462,7 @@
  "index_web_pages_for_search": 1,
  "issingle": 1,
  "links": [],
- "modified": "2023-11-20 09:37:47.650347",
+ "modified": "2024-01-22 12:10:10.151819",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Accounts Settings",
diff --git a/erpnext/accounts/doctype/bank_account/bank_account.py b/erpnext/accounts/doctype/bank_account/bank_account.py
index 4b99b19..ace4bb1 100644
--- a/erpnext/accounts/doctype/bank_account/bank_account.py
+++ b/erpnext/accounts/doctype/bank_account/bank_account.py
@@ -55,7 +55,7 @@
 
 	def validate_company(self):
 		if self.is_company_account and not self.company:
-			frappe.throw(_("Company is manadatory for company account"))
+			frappe.throw(_("Company is mandatory for company account"))
 
 	def validate_iban(self):
 		"""
diff --git a/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py b/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py
index 0af2caf..4326c40 100644
--- a/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py
+++ b/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py
@@ -48,11 +48,11 @@
 
 	def on_submit(self):
 		if not self.bank_guarantee_number:
-			frappe.throw(_("Enter the Bank Guarantee Number before submittting."))
+			frappe.throw(_("Enter the Bank Guarantee Number before submitting."))
 		if not self.name_of_beneficiary:
-			frappe.throw(_("Enter the name of the Beneficiary before submittting."))
+			frappe.throw(_("Enter the name of the Beneficiary before submitting."))
 		if not self.bank:
-			frappe.throw(_("Enter the name of the bank or lending institution before submittting."))
+			frappe.throw(_("Enter the name of the bank or lending institution before submitting."))
 
 
 @frappe.whitelist()
diff --git a/erpnext/accounts/doctype/coupon_code/coupon_code.json b/erpnext/accounts/doctype/coupon_code/coupon_code.json
index 7dc5e9d..c6b1477 100644
--- a/erpnext/accounts/doctype/coupon_code/coupon_code.json
+++ b/erpnext/accounts/doctype/coupon_code/coupon_code.json
@@ -80,7 +80,7 @@
   {
    "fieldname": "valid_upto",
    "fieldtype": "Date",
-   "label": "Valid Upto"
+   "label": "Valid Up To"
   },
   {
    "depends_on": "eval: doc.coupon_type == \"Promotional\"",
@@ -115,7 +115,7 @@
    "read_only": 1
   }
  ],
- "modified": "2019-10-19 14:48:14.602481",
+ "modified": "2024-01-24 02:20:26.145996",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Coupon Code",
diff --git a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js
index db4f7c4..c80bf62 100644
--- a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js
+++ b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js
@@ -154,7 +154,7 @@
 					}
 				});
 			},
-			primary_action_label: __('Get Invocies')
+			primary_action_label: __('Get Invoices')
 		});
 		d.show();
 	},
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 7579da8..7bf5324 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -150,6 +150,20 @@
 		if not self.title:
 			self.title = self.get_title()
 
+	def submit(self):
+		if len(self.accounts) > 100:
+			msgprint(_("The task has been enqueued as a background job."), alert=True)
+			self.queue_action("submit", timeout=4600)
+		else:
+			return self._submit()
+
+	def cancel(self):
+		if len(self.accounts) > 100:
+			msgprint(_("The task has been enqueued as a background job."), alert=True)
+			self.queue_action("cancel", timeout=4600)
+		else:
+			return self._cancel()
+
 	def on_submit(self):
 		self.validate_cheque_info()
 		self.check_credit_limit()
@@ -187,8 +201,8 @@
 	def update_advance_paid(self):
 		advance_paid = frappe._dict()
 		advance_payment_doctypes = frappe.get_hooks(
-			"advance_payment_customer_doctypes"
-		) + frappe.get_hooks("advance_payment_supplier_doctypes")
+			"advance_payment_receivable_doctypes"
+		) + frappe.get_hooks("advance_payment_payable_doctypes")
 		for d in self.get("accounts"):
 			if d.is_advance:
 				if d.reference_type in advance_payment_doctypes:
diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py
index f5f8f8a..acd9933 100644
--- a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py
+++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py
@@ -270,7 +270,7 @@
 				errors, "<a href='/app/List/Error Log' class='variant-click'>Error Log</a>"
 			),
 			indicator="red",
-			title=_("Error Occured"),
+			title=_("Error Occurred"),
 		)
 	return names
 
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json
index 3a1e1ea..b1b8d5e 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.json
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -87,12 +87,14 @@
   "status",
   "custom_remarks",
   "remarks",
+  "base_in_words",
   "column_break_16",
   "letter_head",
   "print_heading",
   "bank",
   "bank_account_no",
   "payment_order",
+  "in_words",
   "subscription_section",
   "auto_repeat",
   "amended_from",
@@ -747,6 +749,20 @@
    "hidden": 1,
    "label": "Book Advance Payments in Separate Party Account",
    "read_only": 1
+  },
+  {
+   "fieldname": "base_in_words",
+   "fieldtype": "Small Text",
+   "label": "In Words (Company Currency)",
+   "print_hide": 1,
+   "read_only": 1
+  },
+  {
+   "fieldname": "in_words",
+   "fieldtype": "Small Text",
+   "label": "In Words",
+   "print_hide": 1,
+   "read_only": 1
   }
  ],
  "index_web_pages_for_search": 1,
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index 69f0dda..7e88b6b 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -178,6 +178,7 @@
 		self.validate_paid_invoices()
 		self.ensure_supplier_is_not_blocked()
 		self.set_status()
+		self.set_total_in_words()
 
 	def on_submit(self):
 		if self.difference_amount:
@@ -190,7 +191,7 @@
 
 	def set_liability_account(self):
 		# Auto setting liability account should only be done during 'draft' status
-		if self.docstatus > 0:
+		if self.docstatus > 0 or self.payment_type == "Internal Transfer":
 			return
 
 		if not frappe.db.get_value(
@@ -786,6 +787,21 @@
 
 		self.db_set("status", self.status, update_modified=True)
 
+	def set_total_in_words(self):
+		from frappe.utils import money_in_words
+
+		if self.payment_type in ("Pay", "Internal Transfer"):
+			base_amount = abs(self.base_paid_amount)
+			amount = abs(self.paid_amount)
+			currency = self.paid_from_account_currency
+		elif self.payment_type == "Receive":
+			base_amount = abs(self.base_received_amount)
+			amount = abs(self.received_amount)
+			currency = self.paid_to_account_currency
+
+		self.base_in_words = money_in_words(base_amount, self.company_currency)
+		self.in_words = money_in_words(amount, currency)
+
 	def set_tax_withholding(self):
 		if self.party_type != "Supplier":
 			return
@@ -927,8 +943,8 @@
 	def calculate_base_allocated_amount_for_reference(self, d) -> float:
 		base_allocated_amount = 0
 		advance_payment_doctypes = frappe.get_hooks(
-			"advance_payment_customer_doctypes"
-		) + frappe.get_hooks("advance_payment_supplier_doctypes")
+			"advance_payment_receivable_doctypes"
+		) + frappe.get_hooks("advance_payment_payable_doctypes")
 		if d.reference_doctype in advance_payment_doctypes:
 			# When referencing Sales/Purchase Order, use the source/target exchange rate depending on payment type.
 			# This is so there are no Exchange Gain/Loss generated for such doctypes
@@ -1428,8 +1444,8 @@
 	def update_advance_paid(self):
 		if self.payment_type in ("Receive", "Pay") and self.party:
 			advance_payment_doctypes = frappe.get_hooks(
-				"advance_payment_customer_doctypes"
-			) + frappe.get_hooks("advance_payment_supplier_doctypes")
+				"advance_payment_receivable_doctypes"
+			) + frappe.get_hooks("advance_payment_payable_doctypes")
 			for d in self.get("references"):
 				if d.allocated_amount and d.reference_doctype in advance_payment_doctypes:
 					frappe.get_doc(
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
index 666926f..ff2aa6d 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
@@ -41,6 +41,7 @@
   {
    "fieldname": "company",
    "fieldtype": "Link",
+   "ignore_user_permissions": 1,
    "label": "Company",
    "options": "Company",
    "reqd": 1
@@ -229,7 +230,7 @@
  "is_virtual": 1,
  "issingle": 1,
  "links": [],
- "modified": "2023-12-14 13:38:16.264013",
+ "modified": "2024-01-18 11:56:20.234667",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Payment Reconciliation",
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 839348a..a18104e 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -170,8 +170,8 @@
 			self.request_phone_payment()
 
 		advance_payment_doctypes = frappe.get_hooks(
-			"advance_payment_customer_doctypes"
-		) + frappe.get_hooks("advance_payment_supplier_doctypes")
+			"advance_payment_receivable_doctypes"
+		) + frappe.get_hooks("advance_payment_payable_doctypes")
 		if self.reference_doctype in advance_payment_doctypes:
 			# set advance payment status
 			ref_doc.set_total_advance_paid()
@@ -216,8 +216,8 @@
 
 		ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
 		advance_payment_doctypes = frappe.get_hooks(
-			"advance_payment_customer_doctypes"
-		) + frappe.get_hooks("advance_payment_supplier_doctypes")
+			"advance_payment_receivable_doctypes"
+		) + frappe.get_hooks("advance_payment_payable_doctypes")
 		if self.reference_doctype in advance_payment_doctypes:
 			# set advance payment status
 			ref_doc.set_total_advance_paid()
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
index e542d3c..1a7eef6 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
@@ -11,7 +11,6 @@
 from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request
 from erpnext.accounts.doctype.sales_invoice.sales_invoice import (
 	SalesInvoice,
-	get_bank_cash_account,
 	get_mode_of_payment_info,
 	update_multi_mode_option,
 )
@@ -208,7 +207,6 @@
 		self.validate_stock_availablility()
 		self.validate_return_items_qty()
 		self.set_status()
-		self.set_account_for_mode_of_payment()
 		self.validate_pos()
 		self.validate_payment_amount()
 		self.validate_loyalty_transaction()
@@ -371,7 +369,7 @@
 			if d.get("qty") > 0:
 				frappe.throw(
 					_(
-						"Row #{}: You cannot add postive quantities in a return invoice. Please remove item {} to complete the return."
+						"Row #{}: You cannot add positive quantities in a return invoice. Please remove item {} to complete the return."
 					).format(d.idx, frappe.bold(d.item_code)),
 					title=_("Invalid Item"),
 				)
@@ -643,11 +641,6 @@
 			update_multi_mode_option(self, pos_profile)
 			self.paid_amount = 0
 
-	def set_account_for_mode_of_payment(self):
-		for pay in self.payments:
-			if not pay.account:
-				pay.account = get_bank_cash_account(pay.mode_of_payment, self.company).get("account")
-
 	@frappe.whitelist()
 	def create_payment_request(self):
 		for pay in self.payments:
@@ -793,7 +786,7 @@
 		invoices = json.loads(invoices)
 
 	if len(invoices) == 0:
-		frappe.throw(_("Atleast one invoice has to be selected."))
+		frappe.throw(_("At least one invoice has to be selected."))
 
 	merge_log = frappe.new_doc("POS Invoice Merge Log")
 	merge_log.posting_date = getdate(nowdate())
diff --git a/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
index 200b82a..8fab290 100644
--- a/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
@@ -93,7 +93,7 @@
 
 		inv.save()
 
-		self.assertEqual(inv.net_total, 4298.25)
+		self.assertEqual(inv.net_total, 4298.24)
 		self.assertEqual(inv.grand_total, 4900.00)
 
 	def test_tax_calculation_with_multiple_items(self):
diff --git a/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py b/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py
index 6af8a00..0ad9131 100644
--- a/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py
+++ b/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py
@@ -351,7 +351,7 @@
 			inv.load_from_db()
 			consolidated_invoice = frappe.get_doc("Sales Invoice", inv.consolidated_invoice)
 			self.assertEqual(consolidated_invoice.status, "Return")
-			self.assertEqual(consolidated_invoice.rounding_adjustment, -0.001)
+			self.assertEqual(consolidated_invoice.rounding_adjustment, -0.002)
 
 		finally:
 			frappe.set_user("Administrator")
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.py b/erpnext/accounts/doctype/pos_profile/pos_profile.py
index 30f3e0c..c1add57 100644
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.py
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.py
@@ -132,7 +132,7 @@
 
 		if len(customer_groups) != len(set(customer_groups)):
 			frappe.throw(
-				_("Duplicate customer group found in the cutomer group table"),
+				_("Duplicate customer group found in the customer group table"),
 				title=_("Duplicate Customer Group"),
 			)
 
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json
index e8e8044..61c01a4 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json
@@ -339,7 +339,7 @@
   {
    "fieldname": "valid_upto",
    "fieldtype": "Date",
-   "label": "Valid Upto"
+   "label": "Valid Up To"
   },
   {
    "fieldname": "col_break1",
@@ -608,7 +608,7 @@
  "icon": "fa fa-gift",
  "idx": 1,
  "links": [],
- "modified": "2023-02-14 04:53:34.887358",
+ "modified": "2024-01-24 02:20:26.145996",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Pricing Rule",
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index ca70490..300692f 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -193,7 +193,7 @@
 
 	def validate_applicable_for_selling_or_buying(self):
 		if not self.selling and not self.buying:
-			throw(_("Atleast one of the Selling or Buying must be selected"))
+			throw(_("At least one of the Selling or Buying must be selected"))
 
 		if not self.selling and self.applicable_for in [
 			"Customer",
diff --git a/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.json b/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.json
index 1d68b23..7fdfdcd 100644
--- a/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.json
+++ b/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.json
@@ -232,7 +232,7 @@
   {
    "fieldname": "valid_upto",
    "fieldtype": "Date",
-   "label": "Valid Upto"
+   "label": "Valid Up To"
   },
   {
    "fieldname": "column_break_26",
@@ -278,7 +278,7 @@
   }
  ],
  "links": [],
- "modified": "2021-05-06 16:20:22.039078",
+ "modified": "2024-01-24 02:20:26.145996",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Promotional Scheme",
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index f85fc87..a48f5ea 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -1253,6 +1253,7 @@
    "fieldtype": "Select",
    "in_standard_filter": 1,
    "label": "Status",
+   "no_copy": 1,
    "options": "\nDraft\nReturn\nDebit Note Issued\nSubmitted\nPaid\nPartly Paid\nUnpaid\nOverdue\nCancelled\nInternal Transfer",
    "print_hide": 1
   },
@@ -1612,7 +1613,7 @@
  "idx": 204,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-11-29 15:35:44.697496",
+ "modified": "2024-01-26 10:46:00.469053",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Purchase Invoice",
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index 992fbe6..5da6f8b 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -1995,6 +1995,21 @@
 
 		self.assertEqual(pi.items[0].cost_center, "_Test Cost Center Buying - _TC")
 
+	def test_debit_note_with_account_mismatch(self):
+		new_creditors = create_account(
+			parent_account="Accounts Payable - _TC",
+			account_name="Creditors 2",
+			company="_Test Company",
+			account_type="Payable",
+		)
+		pi = make_purchase_invoice(qty=1, rate=1000)
+		dr_note = make_purchase_invoice(
+			qty=-1, rate=1000, is_return=1, return_against=pi.name, do_not_save=True
+		)
+		dr_note.credit_to = new_creditors
+
+		self.assertRaises(frappe.ValidationError, dr_note.save)
+
 	def test_debit_note_without_item(self):
 		pi = make_purchase_invoice(item_name="_Test Item", qty=10, do_not_submit=True)
 		pi.items[0].item_code = ""
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index cc19650..c381b8a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -421,7 +421,8 @@
 		self.calculate_taxes_and_totals()
 
 	def before_save(self):
-		set_account_for_mode_of_payment(self)
+		self.set_account_for_mode_of_payment()
+		self.set_paid_amount()
 
 	def on_submit(self):
 		self.validate_pos_paid_amount()
@@ -712,9 +713,6 @@
 			):
 				data.sales_invoice = sales_invoice
 
-	def on_update(self):
-		self.set_paid_amount()
-
 	def on_update_after_submit(self):
 		if hasattr(self, "repost_required"):
 			fields_to_check = [
@@ -745,6 +743,11 @@
 		self.paid_amount = paid_amount
 		self.base_paid_amount = base_paid_amount
 
+	def set_account_for_mode_of_payment(self):
+		for payment in self.payments:
+			if not payment.account:
+				payment.account = get_bank_cash_account(payment.mode_of_payment, self.company).get("account")
+
 	def validate_time_sheets_are_submitted(self):
 		for data in self.timesheets:
 			if data.time_sheet:
@@ -2113,12 +2116,6 @@
 	return make_return_doc("Sales Invoice", source_name, target_doc)
 
 
-def set_account_for_mode_of_payment(self):
-	for data in self.payments:
-		if not data.account:
-			data.account = get_bank_cash_account(data.mode_of_payment, self.company).get("account")
-
-
 def get_inter_company_details(doc, doctype):
 	if doctype in ["Sales Invoice", "Sales Order", "Delivery Note"]:
 		parties = frappe.db.get_all(
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index cb4b2fc..8c3aede 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -323,7 +323,8 @@
 		si.insert()
 
 		# with inclusive tax
-		self.assertEqual(si.items[0].net_amount, 3947.368421052631)
+		self.assertEqual(si.items[0].net_amount, 3947.37)
+		self.assertEqual(si.net_total, si.base_net_total)
 		self.assertEqual(si.net_total, 3947.37)
 		self.assertEqual(si.grand_total, 5000)
 
@@ -667,7 +668,7 @@
 				62.5,
 				625.0,
 				50,
-				499.97600115194473,
+				499.98,
 			],
 			"_Test Item Home Desktop 200": [
 				190.66,
@@ -678,7 +679,7 @@
 				190.66,
 				953.3,
 				150,
-				749.9968530500239,
+				750,
 			],
 		}
 
@@ -691,20 +692,21 @@
 				self.assertEqual(d.get(k), expected_values[d.item_code][i])
 
 		# check net total
-		self.assertEqual(si.net_total, 1249.97)
+		self.assertEqual(si.base_net_total, si.net_total)
+		self.assertEqual(si.net_total, 1249.98)
 		self.assertEqual(si.total, 1578.3)
 
 		# check tax calculation
 		expected_values = {
 			"keys": ["tax_amount", "total"],
-			"_Test Account Excise Duty - _TC": [140, 1389.97],
-			"_Test Account Education Cess - _TC": [2.8, 1392.77],
-			"_Test Account S&H Education Cess - _TC": [1.4, 1394.17],
-			"_Test Account CST - _TC": [27.88, 1422.05],
-			"_Test Account VAT - _TC": [156.25, 1578.30],
-			"_Test Account Customs Duty - _TC": [125, 1703.30],
-			"_Test Account Shipping Charges - _TC": [100, 1803.30],
-			"_Test Account Discount - _TC": [-180.33, 1622.97],
+			"_Test Account Excise Duty - _TC": [140, 1389.98],
+			"_Test Account Education Cess - _TC": [2.8, 1392.78],
+			"_Test Account S&H Education Cess - _TC": [1.4, 1394.18],
+			"_Test Account CST - _TC": [27.88, 1422.06],
+			"_Test Account VAT - _TC": [156.25, 1578.31],
+			"_Test Account Customs Duty - _TC": [125, 1703.31],
+			"_Test Account Shipping Charges - _TC": [100, 1803.31],
+			"_Test Account Discount - _TC": [-180.33, 1622.98],
 		}
 
 		for d in si.get("taxes"):
@@ -740,7 +742,7 @@
 				"base_rate": 2500,
 				"base_amount": 25000,
 				"net_rate": 40,
-				"net_amount": 399.9808009215558,
+				"net_amount": 399.98,
 				"base_net_rate": 2000,
 				"base_net_amount": 19999,
 			},
@@ -754,7 +756,7 @@
 				"base_rate": 7500,
 				"base_amount": 37500,
 				"net_rate": 118.01,
-				"net_amount": 590.0531205155963,
+				"net_amount": 590.05,
 				"base_net_rate": 5900.5,
 				"base_net_amount": 29502.5,
 			},
@@ -792,8 +794,13 @@
 
 		self.assertEqual(si.base_grand_total, 60795)
 		self.assertEqual(si.grand_total, 1215.90)
-		self.assertEqual(si.rounding_adjustment, 0.01)
-		self.assertEqual(si.base_rounding_adjustment, 0.50)
+		# no rounding adjustment as the Smallest Currency Fraction Value of USD is 0.01
+		if frappe.db.get_value("Currency", "USD", "smallest_currency_fraction_value") < 0.01:
+			self.assertEqual(si.rounding_adjustment, 0.10)
+			self.assertEqual(si.base_rounding_adjustment, 5.0)
+		else:
+			self.assertEqual(si.rounding_adjustment, 0.0)
+			self.assertEqual(si.base_rounding_adjustment, 0.0)
 
 	def test_outstanding(self):
 		w = self.make()
@@ -1543,6 +1550,19 @@
 		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_return_invoice_with_account_mismatch(self):
+		debtors2 = create_account(
+			parent_account="Accounts Receivable - _TC",
+			account_name="Debtors 2",
+			company="_Test Company",
+			account_type="Receivable",
+		)
+		si = create_sales_invoice(qty=1, rate=1000)
+		cr_note = create_sales_invoice(
+			qty=-1, rate=1000, is_return=1, return_against=si.name, debit_to=debtors2, do_not_save=True
+		)
+		self.assertRaises(frappe.ValidationError, cr_note.save)
+
 	def test_gle_made_when_asset_is_returned(self):
 		create_asset_data()
 		asset = create_asset(item_code="Macbook Pro")
@@ -2082,7 +2102,7 @@
 
 	def test_rounding_adjustment_2(self):
 		si = create_sales_invoice(rate=400, do_not_save=True)
-		for rate in [400, 600, 100]:
+		for rate in [400.25, 600.30, 100.65]:
 			si.append(
 				"items",
 				{
@@ -2108,17 +2128,18 @@
 			)
 		si.save()
 		si.submit()
-		self.assertEqual(si.net_total, 1271.19)
-		self.assertEqual(si.grand_total, 1500)
-		self.assertEqual(si.total_taxes_and_charges, 228.82)
-		self.assertEqual(si.rounding_adjustment, -0.01)
+		self.assertEqual(si.net_total, si.base_net_total)
+		self.assertEqual(si.net_total, 1272.20)
+		self.assertEqual(si.grand_total, 1501.20)
+		self.assertEqual(si.total_taxes_and_charges, 229)
+		self.assertEqual(si.rounding_adjustment, -0.20)
 
 		expected_values = [
-			["_Test Account Service Tax - _TC", 0.0, 114.41],
-			["_Test Account VAT - _TC", 0.0, 114.41],
-			[si.debit_to, 1500, 0.0],
-			["Round Off - _TC", 0.01, 0.01],
-			["Sales - _TC", 0.0, 1271.18],
+			["_Test Account Service Tax - _TC", 0.0, 114.50],
+			["_Test Account VAT - _TC", 0.0, 114.50],
+			[si.debit_to, 1501, 0.0],
+			["Round Off - _TC", 0.20, 0.0],
+			["Sales - _TC", 0.0, 1272.20],
 		]
 
 		gl_entries = frappe.db.sql(
@@ -2176,7 +2197,8 @@
 
 		si.save()
 		si.submit()
-		self.assertEqual(si.net_total, 4007.16)
+		self.assertEqual(si.net_total, si.base_net_total)
+		self.assertEqual(si.net_total, 4007.15)
 		self.assertEqual(si.grand_total, 4488.02)
 		self.assertEqual(si.total_taxes_and_charges, 480.86)
 		self.assertEqual(si.rounding_adjustment, -0.02)
@@ -2188,7 +2210,7 @@
 				["_Test Account Service Tax - _TC", 0.0, 240.43],
 				["_Test Account VAT - _TC", 0.0, 240.43],
 				["Sales - _TC", 0.0, 4007.15],
-				["Round Off - _TC", 0.02, 0.01],
+				["Round Off - _TC", 0.01, 0.0],
 			]
 		)
 
diff --git a/erpnext/accounts/doctype/subscription/subscription.json b/erpnext/accounts/doctype/subscription/subscription.json
index 97fd4d0..afa8bcb 100644
--- a/erpnext/accounts/doctype/subscription/subscription.json
+++ b/erpnext/accounts/doctype/subscription/subscription.json
@@ -51,7 +51,7 @@
    "fieldtype": "Select",
    "label": "Status",
    "no_copy": 1,
-   "options": "\nTrialling\nActive\nPast Due Date\nCancelled\nUnpaid\nCompleted",
+   "options": "\nTrialing\nActive\nPast Due Date\nCancelled\nUnpaid\nCompleted",
    "read_only": 1
   },
   {
@@ -267,7 +267,7 @@
    "link_fieldname": "subscription"
   }
  ],
- "modified": "2023-12-28 17:20:42.687789",
+ "modified": "2024-01-24 02:20:26.145996",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Subscription",
diff --git a/erpnext/accounts/doctype/subscription/subscription.py b/erpnext/accounts/doctype/subscription/subscription.py
index 6d27806..9f19366 100644
--- a/erpnext/accounts/doctype/subscription/subscription.py
+++ b/erpnext/accounts/doctype/subscription/subscription.py
@@ -78,9 +78,7 @@
 		purchase_tax_template: DF.Link | None
 		sales_tax_template: DF.Link | None
 		start_date: DF.Date | None
-		status: DF.Literal[
-			"", "Trialling", "Active", "Past Due Date", "Cancelled", "Unpaid", "Completed"
-		]
+		status: DF.Literal["", "Trialing", "Active", "Past Due Date", "Cancelled", "Unpaid", "Completed"]
 		submit_invoice: DF.Check
 		trial_period_end: DF.Date | None
 		trial_period_start: DF.Date | None
@@ -233,7 +231,7 @@
 		Sets the status of the `Subscription`
 		"""
 		if self.is_trialling():
-			self.status = "Trialling"
+			self.status = "Trialing"
 		elif (
 			self.status == "Active" and self.end_date and getdate(posting_date) > getdate(self.end_date)
 		):
diff --git a/erpnext/accounts/doctype/subscription/subscription_list.js b/erpnext/accounts/doctype/subscription/subscription_list.js
index 6490ff3..ea48b53 100644
--- a/erpnext/accounts/doctype/subscription/subscription_list.js
+++ b/erpnext/accounts/doctype/subscription/subscription_list.js
@@ -1,7 +1,7 @@
 frappe.listview_settings['Subscription'] = {
 	get_indicator: function(doc) {
-		if(doc.status === 'Trialling') {
-			return [__("Trialling"), "green"];
+		if(doc.status === 'Trialing') {
+			return [__("Trialing"), "green"];
 		} else if(doc.status === 'Active') {
 			return [__("Active"), "green"];
 		} else if(doc.status === 'Completed') {
diff --git a/erpnext/accounts/doctype/subscription/test_subscription.py b/erpnext/accounts/doctype/subscription/test_subscription.py
index a46642a..89be543 100644
--- a/erpnext/accounts/doctype/subscription/test_subscription.py
+++ b/erpnext/accounts/doctype/subscription/test_subscription.py
@@ -46,7 +46,7 @@
 			get_date_str(subscription.current_invoice_end),
 		)
 		self.assertEqual(subscription.invoices, [])
-		self.assertEqual(subscription.status, "Trialling")
+		self.assertEqual(subscription.status, "Trialing")
 
 	def test_create_subscription_without_trial_with_correct_period(self):
 		subscription = create_subscription()
diff --git a/erpnext/accounts/form_tour/accounts_settings/accounts_settings.json b/erpnext/accounts/form_tour/accounts_settings/accounts_settings.json
index e2bf50d..b41012c 100644
--- a/erpnext/accounts/form_tour/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/form_tour/accounts_settings/accounts_settings.json
@@ -4,7 +4,7 @@
  "doctype": "Form Tour",
  "idx": 0,
  "is_standard": 1,
- "modified": "2021-06-29 17:00:26.145996",
+ "modified": "2024-01-24 02:20:26.145996",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Accounts Settings",
@@ -82,7 +82,7 @@
    "label": "Accounts Frozen Till Date",
    "parent_field": "",
    "position": "Right",
-   "title": "Accounts Frozen Upto"
+   "title": "Accounts Frozen Up To"
   },
   {
    "description": "Users with this Role are allowed to set frozen accounts and create/modify accounting entries against frozen accounts.",
diff --git a/erpnext/accounts/report/account_balance/account_balance.js b/erpnext/accounts/report/account_balance/account_balance.js
index 5681be9..ab5dce8 100644
--- a/erpnext/accounts/report/account_balance/account_balance.js
+++ b/erpnext/accounts/report/account_balance/account_balance.js
@@ -39,7 +39,7 @@
 				{ "value": "Asset Received But Not Billed", "label": __("Asset Received But Not Billed") },
 				{ "value": "Bank", "label": __("Bank") },
 				{ "value": "Cash", "label": __("Cash") },
-				{ "value": "Chargeble", "label": __("Chargeble") },
+				{ "value": "Chargeable", "label": __("Chargeable") },
 				{ "value": "Capital Work in Progress", "label": __("Capital Work in Progress") },
 				{ "value": "Cost of Goods Sold", "label": __("Cost of Goods Sold") },
 				{ "value": "Depreciation", "label": __("Depreciation") },
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 3a70afc..e3fa5e8 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -5,7 +5,7 @@
 from collections import OrderedDict
 
 import frappe
-from frappe import _, qb, scrub
+from frappe import _, qb, query_builder, scrub
 from frappe.query_builder import Criterion
 from frappe.query_builder.functions import Date, Substring, Sum
 from frappe.utils import cint, cstr, flt, getdate, nowdate
@@ -576,6 +576,8 @@
 	def get_future_payments_from_payment_entry(self):
 		pe = frappe.qb.DocType("Payment Entry")
 		pe_ref = frappe.qb.DocType("Payment Entry Reference")
+		ifelse = query_builder.CustomFunction("IF", ["condition", "then", "else"])
+
 		return (
 			frappe.qb.from_(pe)
 			.inner_join(pe_ref)
@@ -587,6 +589,11 @@
 				(pe.posting_date).as_("future_date"),
 				(pe_ref.allocated_amount).as_("future_amount"),
 				(pe.reference_no).as_("future_ref"),
+				ifelse(
+					pe.payment_type == "Receive",
+					pe.source_exchange_rate * pe_ref.allocated_amount,
+					pe.target_exchange_rate * pe_ref.allocated_amount,
+				).as_("future_amount_in_base_currency"),
 			)
 			.where(
 				(pe.docstatus < 2)
@@ -623,13 +630,24 @@
 				query = query.select(
 					Sum(jea.debit_in_account_currency - jea.credit_in_account_currency).as_("future_amount")
 				)
+				query = query.select(Sum(jea.debit - jea.credit).as_("future_amount_in_base_currency"))
 			else:
 				query = query.select(
 					Sum(jea.credit_in_account_currency - jea.debit_in_account_currency).as_("future_amount")
 				)
+				query = query.select(Sum(jea.credit - jea.debit).as_("future_amount_in_base_currency"))
 		else:
 			query = query.select(
-				Sum(jea.debit if self.account_type == "Payable" else jea.credit).as_("future_amount")
+				Sum(jea.debit if self.account_type == "Payable" else jea.credit).as_(
+					"future_amount_in_base_currency"
+				)
+			)
+			query = query.select(
+				Sum(
+					jea.debit_in_account_currency
+					if self.account_type == "Payable"
+					else jea.credit_in_account_currency
+				).as_("future_amount")
 			)
 
 		query = query.having(qb.Field("future_amount") > 0)
@@ -645,14 +663,19 @@
 		row.remaining_balance = row.outstanding
 		row.future_amount = 0.0
 		for future in self.future_payments.get((row.voucher_no, row.party), []):
-			if row.remaining_balance > 0 and future.future_amount:
-				if future.future_amount > row.outstanding:
+			if self.filters.in_party_currency:
+				future_amount_field = "future_amount"
+			else:
+				future_amount_field = "future_amount_in_base_currency"
+
+			if row.remaining_balance > 0 and future.get(future_amount_field):
+				if future.get(future_amount_field) > row.outstanding:
 					row.future_amount = row.outstanding
-					future.future_amount = future.future_amount - row.outstanding
+					future[future_amount_field] = future.get(future_amount_field) - row.outstanding
 					row.remaining_balance = 0
 				else:
-					row.future_amount += future.future_amount
-					future.future_amount = 0
+					row.future_amount += future.get(future_amount_field)
+					future[future_amount_field] = 0
 					row.remaining_balance = row.outstanding - row.future_amount
 
 				row.setdefault("future_ref", []).append(
diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
index 976935b..6ff81be 100644
--- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
@@ -772,3 +772,92 @@
 		# post sorting output should be [[Additional Debtors, ...], [Debtors, ...]]
 		report_output = sorted(report_output, key=lambda x: x[0])
 		self.assertEqual(expected_data, report_output)
+
+	def test_future_payments_on_foreign_currency(self):
+		self.customer2 = (
+			frappe.get_doc(
+				{
+					"doctype": "Customer",
+					"customer_name": "Jane Doe",
+					"type": "Individual",
+					"default_currency": "USD",
+				}
+			)
+			.insert()
+			.submit()
+		)
+
+		si = self.create_sales_invoice(do_not_submit=True)
+		si.posting_date = add_days(today(), -1)
+		si.customer = self.customer2
+		si.currency = "USD"
+		si.conversion_rate = 80
+		si.debit_to = self.debtors_usd
+		si.save().submit()
+
+		# full payment in USD
+		pe = get_payment_entry(si.doctype, si.name)
+		pe.posting_date = add_days(today(), 1)
+		pe.base_received_amount = 7500
+		pe.received_amount = 7500
+		pe.source_exchange_rate = 75
+		pe.save().submit()
+
+		filters = frappe._dict(
+			{
+				"company": self.company,
+				"report_date": today(),
+				"range1": 30,
+				"range2": 60,
+				"range3": 90,
+				"range4": 120,
+				"show_future_payments": True,
+				"in_party_currency": False,
+			}
+		)
+		report = execute(filters)[1]
+		self.assertEqual(len(report), 1)
+
+		expected_data = [8000.0, 8000.0, 500.0, 7500.0]
+		row = report[0]
+		self.assertEqual(
+			expected_data, [row.invoiced, row.outstanding, row.remaining_balance, row.future_amount]
+		)
+
+		filters.in_party_currency = True
+		report = execute(filters)[1]
+		self.assertEqual(len(report), 1)
+		expected_data = [100.0, 100.0, 0.0, 100.0]
+		row = report[0]
+		self.assertEqual(
+			expected_data, [row.invoiced, row.outstanding, row.remaining_balance, row.future_amount]
+		)
+
+		pe.cancel()
+		# partial payment in USD on a future date
+		pe = get_payment_entry(si.doctype, si.name)
+		pe.posting_date = add_days(today(), 1)
+		pe.base_received_amount = 6750
+		pe.received_amount = 6750
+		pe.source_exchange_rate = 75
+		pe.paid_amount = 90  # in USD
+		pe.references[0].allocated_amount = 90
+		pe.save().submit()
+
+		filters.in_party_currency = False
+		report = execute(filters)[1]
+		self.assertEqual(len(report), 1)
+		expected_data = [8000.0, 8000.0, 1250.0, 6750.0]
+		row = report[0]
+		self.assertEqual(
+			expected_data, [row.invoiced, row.outstanding, row.remaining_balance, row.future_amount]
+		)
+
+		filters.in_party_currency = True
+		report = execute(filters)[1]
+		self.assertEqual(len(report), 1)
+		expected_data = [100.0, 100.0, 10.0, 90.0]
+		row = report[0]
+		self.assertEqual(
+			expected_data, [row.invoiced, row.outstanding, row.remaining_balance, row.future_amount]
+		)
diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.js b/erpnext/accounts/report/balance_sheet/balance_sheet.js
index b05e744..5525024 100644
--- a/erpnext/accounts/report/balance_sheet/balance_sheet.js
+++ b/erpnext/accounts/report/balance_sheet/balance_sheet.js
@@ -8,6 +8,20 @@
 
 erpnext.utils.add_dimensions("Balance Sheet", 10);
 
+frappe.query_reports["Balance Sheet"]["filters"].push(
+	{
+		"fieldname": "selected_view",
+		"label": __("Select View"),
+		"fieldtype": "Select",
+		"options": [
+			{ "value": "Report", "label": __("Report View") },
+			{ "value": "Growth", "label": __("Growth View") }
+		],
+		"default": "Report",
+		"reqd": 1
+	},
+);
+
 frappe.query_reports["Balance Sheet"]["filters"].push({
 	fieldname: "accumulated_values",
 	label: __("Accumulated Values"),
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 e5898bf..a2f0fde 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
@@ -8,6 +8,21 @@
 
 erpnext.utils.add_dimensions("Profit and Loss Statement", 10);
 
+frappe.query_reports["Profit and Loss Statement"]["filters"].push(
+	{
+		"fieldname": "selected_view",
+		"label": __("Select View"),
+		"fieldtype": "Select",
+		"options": [
+			{ "value": "Report", "label": __("Report View") },
+			{ "value": "Growth", "label": __("Growth View") },
+			{ "value": "Margin", "label": __("Margin View") },
+		],
+		"default": "Report",
+		"reqd": 1
+	},
+);
+
 frappe.query_reports["Profit and Loss Statement"]["filters"].push({
 	fieldname: "accumulated_values",
 	label: __("Accumulated Values"),
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 65b3aba..30700d0 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -240,7 +240,6 @@
 			cond.append("""gle.cost_center = %s """ % (frappe.db.escape(cost_center, percent=False),))
 
 	if account:
-
 		if not (frappe.flags.ignore_account_permission or ignore_account_permission):
 			acc.check_permission("read")
 
@@ -286,18 +285,22 @@
 		cond.append("""gle.company = %s """ % (frappe.db.escape(company, percent=False)))
 
 	if account or (party_type and party) or account_type:
-
+		precision = get_currency_precision()
 		if in_account_currency:
-			select_field = "sum(debit_in_account_currency) - sum(credit_in_account_currency)"
+			select_field = (
+				"sum(round(debit_in_account_currency, %s)) - sum(round(credit_in_account_currency, %s))"
+			)
 		else:
-			select_field = "sum(debit) - sum(credit)"
+			select_field = "sum(round(debit, %s)) - sum(round(credit, %s))"
+
 		bal = frappe.db.sql(
 			"""
 			SELECT {0}
 			FROM `tabGL Entry` gle
 			WHERE {1}""".format(
 				select_field, " and ".join(cond)
-			)
+			),
+			(precision, precision),
 		)[0][0]
 		# if bal is None, return 0
 		return flt(bal)
@@ -619,8 +622,8 @@
 
 	# Update Advance Paid in SO/PO since they might be getting unlinked
 	advance_payment_doctypes = frappe.get_hooks(
-		"advance_payment_customer_doctypes"
-	) + frappe.get_hooks("advance_payment_supplier_doctypes")
+		"advance_payment_receivable_doctypes"
+	) + frappe.get_hooks("advance_payment_payable_doctypes")
 	if jv_detail.get("reference_type") in advance_payment_doctypes:
 		frappe.get_doc(jv_detail.reference_type, jv_detail.reference_name).set_total_advance_paid()
 
@@ -696,8 +699,8 @@
 
 		# Update Advance Paid in SO/PO since they are getting unlinked
 		advance_payment_doctypes = frappe.get_hooks(
-			"advance_payment_customer_doctypes"
-		) + frappe.get_hooks("advance_payment_supplier_doctypes")
+			"advance_payment_receivable_doctypes"
+		) + frappe.get_hooks("advance_payment_payable_doctypes")
 		if existing_row.get("reference_doctype") in advance_payment_doctypes:
 			frappe.get_doc(
 				existing_row.reference_doctype, existing_row.reference_name
diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js
index 02e7a9b..673fe54 100644
--- a/erpnext/assets/doctype/asset/asset.js
+++ b/erpnext/assets/doctype/asset/asset.js
@@ -571,16 +571,16 @@
 				indicator: 'red'
 			});
 		}
-		var is_grouped_asset = frappe.db.get_value('Item', item.item_code, 'is_grouped_asset');
-		var asset_quantity = is_grouped_asset ? item.qty : 1;
-		var purchase_amount = flt(item.valuation_rate * asset_quantity, precision('gross_purchase_amount'));
+		frappe.db.get_value('Item', item.item_code, 'is_grouped_asset', (r) => {
+			var asset_quantity = r.is_grouped_asset ? item.qty : 1;
+			var purchase_amount = flt(item.valuation_rate * asset_quantity, precision('gross_purchase_amount'));
 
-		frm.set_value('gross_purchase_amount', purchase_amount);
-		frm.set_value('purchase_receipt_amount', purchase_amount);
-		frm.set_value('asset_quantity', asset_quantity);
-		frm.set_value('cost_center', item.cost_center || purchase_doc.cost_center);
-		if(item.asset_location) { frm.set_value('location', item.asset_location); }
-
+			frm.set_value('gross_purchase_amount', purchase_amount);
+			frm.set_value('purchase_receipt_amount', purchase_amount);
+			frm.set_value('asset_quantity', asset_quantity);
+			frm.set_value('cost_center', item.cost_center || purchase_doc.cost_center);
+			if(item.asset_location) { frm.set_value('location', item.asset_location); }
+		});
 	},
 
 	set_depreciation_rate: function(frm, row) {
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 7357249..166e8c4 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -519,14 +519,11 @@
 			movement.cancel()
 
 	def cancel_capitalization(self):
-		asset_capitalization = frappe.db.get_value(
-			"Asset Capitalization",
-			{"target_asset": self.name, "docstatus": 1, "entry_type": "Capitalization"},
-		)
-
-		if asset_capitalization:
-			asset_capitalization = frappe.get_doc("Asset Capitalization", asset_capitalization)
-			asset_capitalization.cancel()
+		if self.capitalized_in:
+			self.db_set("capitalized_in", None)
+			asset_capitalization = frappe.get_doc("Asset Capitalization", self.capitalized_in)
+			if asset_capitalization.docstatus == 1:
+				asset_capitalization.cancel()
 
 	def delete_depreciation_entries(self):
 		if self.calculate_depreciation:
@@ -1011,7 +1008,7 @@
 		assets = json.loads(assets)
 
 	if len(assets) == 0:
-		frappe.throw(_("Atleast one asset has to be selected."))
+		frappe.throw(_("At least one asset has to be selected."))
 
 	asset_movement = frappe.new_doc("Asset Movement")
 	asset_movement.quantity = len(assets)
diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py
index a93af94..df4593b 100644
--- a/erpnext/assets/doctype/asset/depreciation.py
+++ b/erpnext/assets/doctype/asset/depreciation.py
@@ -561,6 +561,8 @@
 def reverse_depreciation_entry_made_after_disposal(asset, date):
 	for row in asset.get("finance_books"):
 		asset_depr_schedule_doc = get_asset_depr_schedule_doc(asset.name, "Active", row.finance_book)
+		if not asset_depr_schedule_doc:
+			continue
 
 		for schedule_idx, schedule in enumerate(asset_depr_schedule_doc.get("depreciation_schedule")):
 			if schedule.schedule_date == date:
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
index cad74df..5e251a5 100644
--- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
@@ -146,6 +146,7 @@
 	def cancel_target_asset(self):
 		if self.entry_type == "Capitalization" and self.target_asset:
 			asset_doc = frappe.get_doc("Asset", self.target_asset)
+			frappe.db.set_value("Asset", self.target_asset, "capitalized_in", None)
 			if asset_doc.docstatus == 1:
 				asset_doc.cancel()
 
diff --git a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
index 063fe99..780f61f 100644
--- a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
+++ b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
@@ -40,7 +40,7 @@
 			if getdate(task.next_due_date) < getdate(nowdate()):
 				task.maintenance_status = "Overdue"
 			if not task.assign_to and self.docstatus == 0:
-				throw(_("Row #{}: Please asign task to a member.").format(task.idx))
+				throw(_("Row #{}: Please assign task to a member.").format(task.idx))
 
 	def on_update(self):
 		for task in self.get("asset_maintenance_tasks"):
diff --git a/erpnext/assets/onboarding_step/asset_category/asset_category.json b/erpnext/assets/onboarding_step/asset_category/asset_category.json
index 58f322e..a1b68ba 100644
--- a/erpnext/assets/onboarding_step/asset_category/asset_category.json
+++ b/erpnext/assets/onboarding_step/asset_category/asset_category.json
@@ -2,14 +2,14 @@
  "action": "Show Form Tour",
  "action_label": "Let's review existing Asset Category",
  "creation": "2021-08-13 14:26:18.656303",
- "description": "# Asset Category\n\nAn Asset Category classifies different assets of a Company.\n\nYou can create an Asset Category based on the type of assets. For example, all your desktops and laptops can be part of an Asset Category named \"Electronic Equipments\". Create a separate category for furniture. Also, you can update default properties for each category, like:\n - Depreciation type and duration\n - Fixed asset account\n - Depreciation account\n",
+ "description": "# Asset Category\n\nAn Asset Category classifies different assets of a Company.\n\nYou can create an Asset Category based on the type of assets. For example, all your desktops and laptops can be part of an Asset Category named \"Electronic Equipment\". Create a separate category for furniture. Also, you can update default properties for each category, like:\n - Depreciation type and duration\n - Fixed asset account\n - Depreciation account\n",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2021-11-23 10:02:03.242127",
+ "modified": "2024-01-24 02:20:26.145996",
  "modified_by": "Administrator",
  "name": "Asset Category",
  "owner": "Administrator",
diff --git a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
index 45811a9..e689b05 100644
--- a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
+++ b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
@@ -202,7 +202,7 @@
 					"values": [flt(d.get("asset_value"), 2) for d in labels_values_map.values()],
 				},
 				{
-					"name": _("Depreciatied Amount"),
+					"name": _("Depreciated Amount"),
 					"values": [flt(d.get("depreciated_amount"), 2) for d in labels_values_map.values()],
 				},
 			],
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index afbea61..a0569ec 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -22,6 +22,7 @@
 	get_link_to_form,
 	getdate,
 	nowdate,
+	parse_json,
 	today,
 )
 
@@ -201,6 +202,7 @@
 		self.validate_party()
 		self.validate_currency()
 		self.validate_party_account_currency()
+		self.validate_return_against_account()
 
 		if self.doctype in ["Purchase Invoice", "Sales Invoice"]:
 			if invalid_advances := [
@@ -349,6 +351,20 @@
 		for bundle in bundles:
 			frappe.delete_doc("Serial and Batch Bundle", bundle.name)
 
+	def validate_return_against_account(self):
+		if (
+			self.doctype in ["Sales Invoice", "Purchase Invoice"] and self.is_return and self.return_against
+		):
+			cr_dr_account_field = "debit_to" if self.doctype == "Sales Invoice" else "credit_to"
+			cr_dr_account_label = "Debit To" if self.doctype == "Sales Invoice" else "Credit To"
+			cr_dr_account = self.get(cr_dr_account_field)
+			if frappe.get_value(self.doctype, self.return_against, cr_dr_account_field) != cr_dr_account:
+				frappe.throw(
+					_("'{0}' account: '{1}' should match the Return Against Invoice").format(
+						frappe.bold(cr_dr_account_label), frappe.bold(cr_dr_account)
+					)
+				)
+
 	def validate_deferred_income_expense_account(self):
 		field_map = {
 			"Sales Invoice": "deferred_revenue_account",
@@ -833,6 +849,37 @@
 
 			self.extend("taxes", get_taxes_and_charges(tax_master_doctype, self.get("taxes_and_charges")))
 
+	def append_taxes_from_item_tax_template(self):
+		if not frappe.db.get_single_value("Accounts Settings", "add_taxes_from_item_tax_template"):
+			return
+
+		for row in self.items:
+			item_tax_rate = row.get("item_tax_rate")
+			if not item_tax_rate:
+				continue
+
+			if isinstance(item_tax_rate, str):
+				item_tax_rate = parse_json(item_tax_rate)
+
+			for account_head, rate in item_tax_rate.items():
+				row = self.get_tax_row(account_head)
+
+				if not row:
+					self.append(
+						"taxes",
+						{
+							"charge_type": "On Net Total",
+							"account_head": account_head,
+							"rate": 0,
+							"description": account_head,
+						},
+					)
+
+	def get_tax_row(self, account_head):
+		for row in self.taxes:
+			if row.account_head == account_head:
+				return row
+
 	def set_other_charges(self):
 		self.set("taxes", [])
 		self.set_taxes()
@@ -1761,9 +1808,9 @@
 
 	def set_total_advance_paid(self):
 		ple = frappe.qb.DocType("Payment Ledger Entry")
-		if self.doctype in frappe.get_hooks("advance_payment_customer_doctypes"):
+		if self.doctype in frappe.get_hooks("advance_payment_receivable_doctypes"):
 			party = self.customer
-		if self.doctype in frappe.get_hooks("advance_payment_supplier_doctypes"):
+		if self.doctype in frappe.get_hooks("advance_payment_payable_doctypes"):
 			party = self.supplier
 		advance = (
 			frappe.qb.from_(ple)
@@ -1829,9 +1876,9 @@
 					"docstatus": 1,
 				},
 			)
-			if self.doctype in frappe.get_hooks("advance_payment_customer_doctypes"):
+			if self.doctype in frappe.get_hooks("advance_payment_receivable_doctypes"):
 				new_status = "Requested" if prs else "Not Requested"
-			if self.doctype in frappe.get_hooks("advance_payment_supplier_doctypes"):
+			if self.doctype in frappe.get_hooks("advance_payment_payable_doctypes"):
 				new_status = "Initiated" if prs else "Not Initiated"
 
 		if new_status == self.advance_payment_status:
diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py
index 6e50279..800e756 100644
--- a/erpnext/controllers/sales_and_purchase_return.py
+++ b/erpnext/controllers/sales_and_purchase_return.py
@@ -141,7 +141,7 @@
 			items_returned = True
 
 	if not items_returned:
-		frappe.throw(_("Atleast one item should be entered with negative quantity in return document"))
+		frappe.throw(_("At least one item should be entered with negative quantity in return document"))
 
 
 def validate_quantity(doc, args, ref, valid_items, already_returned_items):
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index ac8c88f..e5f341f 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -99,7 +99,8 @@
 	],
 	"Purchase Receipt": [
 		["Draft", None],
-		["To Bill", "eval:self.per_billed < 100 and self.docstatus == 1"],
+		["To Bill", "eval:self.per_billed == 0 and self.docstatus == 1"],
+		["Partly Billed", "eval:self.per_billed > 0 and self.per_billed < 100 and self.docstatus == 1"],
 		["Return Issued", "eval:self.per_returned == 100 and self.docstatus == 1"],
 		["Completed", "eval:self.per_billed == 100 and self.docstatus == 1"],
 		["Cancelled", "eval:self.docstatus==2"],
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index 7c63518..11e9f9f 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -6,7 +6,7 @@
 from typing import List, Tuple
 
 import frappe
-from frappe import _
+from frappe import _, bold
 from frappe.utils import cint, flt, get_link_to_form, getdate
 
 import erpnext
@@ -697,6 +697,9 @@
 				self.validate_in_transit_warehouses()
 				self.validate_multi_currency()
 				self.validate_packed_items()
+
+				if self.get("is_internal_supplier"):
+					self.validate_internal_transfer_qty()
 			else:
 				self.validate_internal_transfer_warehouse()
 
@@ -735,6 +738,116 @@
 		if self.doctype in ("Sales Invoice", "Delivery Note Item") and self.get("packed_items"):
 			frappe.throw(_("Packed Items cannot be transferred internally"))
 
+	def validate_internal_transfer_qty(self):
+		if self.doctype not in ["Purchase Invoice", "Purchase Receipt"]:
+			return
+
+		item_wise_transfer_qty = self.get_item_wise_inter_transfer_qty()
+		if not item_wise_transfer_qty:
+			return
+
+		item_wise_received_qty = self.get_item_wise_inter_received_qty()
+		precision = frappe.get_precision(self.doctype + " Item", "qty")
+
+		over_receipt_allowance = frappe.db.get_single_value(
+			"Stock Settings", "over_delivery_receipt_allowance"
+		)
+
+		parent_doctype = {
+			"Purchase Receipt": "Delivery Note",
+			"Purchase Invoice": "Sales Invoice",
+		}.get(self.doctype)
+
+		for key, transferred_qty in item_wise_transfer_qty.items():
+			recevied_qty = flt(item_wise_received_qty.get(key), precision)
+			if over_receipt_allowance:
+				transferred_qty = transferred_qty + flt(
+					transferred_qty * over_receipt_allowance / 100, precision
+				)
+
+			if recevied_qty > flt(transferred_qty, precision):
+				frappe.throw(
+					_("For Item {0} cannot be received more than {1} qty against the {2} {3}").format(
+						bold(key[1]),
+						bold(flt(transferred_qty, precision)),
+						bold(parent_doctype),
+						get_link_to_form(parent_doctype, self.get("inter_company_reference")),
+					)
+				)
+
+	def get_item_wise_inter_transfer_qty(self):
+		reference_field = "inter_company_reference"
+		if self.doctype == "Purchase Invoice":
+			reference_field = "inter_company_invoice_reference"
+
+		parent_doctype = {
+			"Purchase Receipt": "Delivery Note",
+			"Purchase Invoice": "Sales Invoice",
+		}.get(self.doctype)
+
+		child_doctype = parent_doctype + " Item"
+
+		parent_tab = frappe.qb.DocType(parent_doctype)
+		child_tab = frappe.qb.DocType(child_doctype)
+
+		query = (
+			frappe.qb.from_(parent_doctype)
+			.inner_join(child_tab)
+			.on(child_tab.parent == parent_tab.name)
+			.select(
+				child_tab.name,
+				child_tab.item_code,
+				child_tab.qty,
+			)
+			.where((parent_tab.name == self.get(reference_field)) & (parent_tab.docstatus == 1))
+		)
+
+		data = query.run(as_dict=True)
+		item_wise_transfer_qty = defaultdict(float)
+		for row in data:
+			item_wise_transfer_qty[(row.name, row.item_code)] += flt(row.qty)
+
+		return item_wise_transfer_qty
+
+	def get_item_wise_inter_received_qty(self):
+		child_doctype = self.doctype + " Item"
+
+		parent_tab = frappe.qb.DocType(self.doctype)
+		child_tab = frappe.qb.DocType(child_doctype)
+
+		query = (
+			frappe.qb.from_(self.doctype)
+			.inner_join(child_tab)
+			.on(child_tab.parent == parent_tab.name)
+			.select(
+				child_tab.item_code,
+				child_tab.qty,
+			)
+			.where(parent_tab.docstatus < 2)
+		)
+
+		if self.doctype == "Purchase Invoice":
+			query = query.select(
+				child_tab.sales_invoice_item.as_("name"),
+			)
+
+			query = query.where(
+				parent_tab.inter_company_invoice_reference == self.inter_company_invoice_reference
+			)
+		else:
+			query = query.select(
+				child_tab.delivery_note_item.as_("name"),
+			)
+
+			query = query.where(parent_tab.inter_company_reference == self.inter_company_reference)
+
+		data = query.run(as_dict=True)
+		item_wise_transfer_qty = defaultdict(float)
+		for row in data:
+			item_wise_transfer_qty[(row.name, row.item_code)] += flt(row.qty)
+
+		return item_wise_transfer_qty
+
 	def validate_putaway_capacity(self):
 		# if over receipt is attempted while 'apply putaway rule' is disabled
 		# and if rule was applied on the transaction, validate it.
diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py
index 9555902..17a2b07 100644
--- a/erpnext/controllers/subcontracting_controller.py
+++ b/erpnext/controllers/subcontracting_controller.py
@@ -260,18 +260,22 @@
 		return frappe.get_all(f"{doctype}", fields=fields, filters=filters)
 
 	def __get_consumed_items(self, doctype, receipt_items):
+		fields = [
+			"serial_no",
+			"rm_item_code",
+			"reference_name",
+			"batch_no",
+			"consumed_qty",
+			"main_item_code",
+			"parent as voucher_no",
+		]
+
+		if self.subcontract_data.receipt_supplied_items_field != "Purchase Receipt Item Supplied":
+			fields.append("serial_and_batch_bundle")
+
 		return frappe.get_all(
 			self.subcontract_data.receipt_supplied_items_field,
-			fields=[
-				"serial_no",
-				"rm_item_code",
-				"reference_name",
-				"serial_and_batch_bundle",
-				"batch_no",
-				"consumed_qty",
-				"main_item_code",
-				"parent as voucher_no",
-			],
+			fields=fields,
 			filters={"docstatus": 1, "reference_name": ("in", list(receipt_items)), "parenttype": doctype},
 		)
 
@@ -881,7 +885,9 @@
 							"posting_time": self.posting_time,
 							"qty": -1 * item.consumed_qty,
 							"voucher_detail_no": item.name,
-							"serial_and_batch_bundle": item.serial_and_batch_bundle,
+							"serial_and_batch_bundle": item.get("serial_and_batch_bundle"),
+							"serial_no": item.get("serial_no"),
+							"batch_no": item.get("batch_no"),
 						}
 					)
 
diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py
index f9f68a1..8cb1a0e 100644
--- a/erpnext/controllers/taxes_and_totals.py
+++ b/erpnext/controllers/taxes_and_totals.py
@@ -8,6 +8,7 @@
 from frappe import _, scrub
 from frappe.model.document import Document
 from frappe.utils import cint, flt, round_based_on_smallest_currency_fraction
+from frappe.utils.deprecations import deprecated
 
 import erpnext
 from erpnext.accounts.doctype.journal_entry.journal_entry import get_exchange_rate
@@ -74,7 +75,7 @@
 		self.calculate_net_total()
 		self.calculate_tax_withholding_net_total()
 		self.calculate_taxes()
-		self.manipulate_grand_total_for_inclusive_tax()
+		self.adjust_grand_total_for_inclusive_tax()
 		self.calculate_totals()
 		self._cleanup()
 		self.calculate_total_net_weight()
@@ -279,7 +280,7 @@
 			):
 				amount = flt(item.amount) - total_inclusive_tax_amount_per_qty
 
-				item.net_amount = flt(amount / (1 + cumulated_tax_fraction))
+				item.net_amount = flt(amount / (1 + cumulated_tax_fraction), item.precision("net_amount"))
 				item.net_rate = flt(item.net_amount / item.qty, item.precision("net_rate"))
 				item.discount_percentage = flt(item.discount_percentage, item.precision("discount_percentage"))
 
@@ -516,7 +517,12 @@
 			tax.base_tax_amount = round(tax.base_tax_amount, 0)
 			tax.base_tax_amount_after_discount_amount = round(tax.base_tax_amount_after_discount_amount, 0)
 
+	@deprecated
 	def manipulate_grand_total_for_inclusive_tax(self):
+		# for backward compatablility - if in case used by an external application
+		return self.adjust_grand_total_for_inclusive_tax()
+
+	def adjust_grand_total_for_inclusive_tax(self):
 		# if fully inclusive taxes and diff
 		if self.doc.get("taxes") and any(cint(t.included_in_print_rate) for t in self.doc.get("taxes")):
 			last_tax = self.doc.get("taxes")[-1]
@@ -538,17 +544,21 @@
 			diff = flt(diff, self.doc.precision("rounding_adjustment"))
 
 			if diff and abs(diff) <= (5.0 / 10 ** last_tax.precision("tax_amount")):
-				self.doc.rounding_adjustment = diff
+				self.doc.grand_total_diff = diff
+			else:
+				self.doc.grand_total_diff = 0
 
 	def calculate_totals(self):
 		if self.doc.get("taxes"):
-			self.doc.grand_total = flt(self.doc.get("taxes")[-1].total) + flt(self.doc.rounding_adjustment)
+			self.doc.grand_total = flt(self.doc.get("taxes")[-1].total) + flt(
+				self.doc.get("grand_total_diff")
+			)
 		else:
 			self.doc.grand_total = flt(self.doc.net_total)
 
 		if self.doc.get("taxes"):
 			self.doc.total_taxes_and_charges = flt(
-				self.doc.grand_total - self.doc.net_total - flt(self.doc.rounding_adjustment),
+				self.doc.grand_total - self.doc.net_total - flt(self.doc.get("grand_total_diff")),
 				self.doc.precision("total_taxes_and_charges"),
 			)
 		else:
@@ -613,8 +623,8 @@
 				self.doc.grand_total, self.doc.currency, self.doc.precision("rounded_total")
 			)
 
-			# if print_in_rate is set, we would have already calculated rounding adjustment
-			self.doc.rounding_adjustment += flt(
+			# rounding adjustment should always be the difference vetween grand and rounded total
+			self.doc.rounding_adjustment = flt(
 				self.doc.rounded_total - self.doc.grand_total, self.doc.precision("rounding_adjustment")
 			)
 
@@ -832,7 +842,6 @@
 				self.calculate_paid_amount()
 
 	def calculate_paid_amount(self):
-
 		paid_amount = base_paid_amount = 0.0
 
 		if self.doc.is_pos:
diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py
index ba1fae9..8cba24a 100644
--- a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py
+++ b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py
@@ -155,7 +155,7 @@
 			except RecursionError:
 				self.log(
 					_(
-						"Error occured while parsing Chart of Accounts: Please make sure that no two accounts have the same name"
+						"Error occurred while parsing Chart of Accounts: Please make sure that no two accounts have the same name"
 					)
 				)
 
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index f33fff0..14b7656 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -481,8 +481,8 @@
 
 communication_doctypes = ["Customer", "Supplier"]
 
-advance_payment_customer_doctypes = ["Sales Order"]
-advance_payment_supplier_doctypes = ["Purchase Order"]
+advance_payment_receivable_doctypes = ["Sales Order"]
+advance_payment_payable_doctypes = ["Purchase Order"]
 
 invoice_doctypes = ["Sales Invoice", "Purchase Invoice"]
 
diff --git a/erpnext/locale/main.pot b/erpnext/locale/main.pot
index adfa7ee..3409014 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-12 13:34+0053\n"
-"PO-Revision-Date: 2024-01-12 13:34+0053\n"
+"POT-Creation-Date: 2024-01-29 18:13+0053\n"
+"PO-Revision-Date: 2024-01-29 18:13+0053\n"
 "Last-Translator: info@erpnext.com\n"
 "Language-Team: info@erpnext.com\n"
 "MIME-Version: 1.0\n"
@@ -30,7 +30,7 @@
 msgid " Address"
 msgstr ""
 
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:597
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:612
 msgid " Amount"
 msgstr ""
 
@@ -40,7 +40,7 @@
 msgid " Is Child Table"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:181
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:186
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:107
 #: selling/report/sales_analytics/sales_analytics.py:66
 msgid " Name"
@@ -50,7 +50,7 @@
 msgid " Qty"
 msgstr ""
 
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:588
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:603
 msgid " Rate"
 msgstr ""
 
@@ -144,7 +144,7 @@
 "\n"
 "An Asset Category classifies different assets of a Company.\n"
 "\n"
-"You can create an Asset Category based on the type of assets. For example, all your desktops and laptops can be part of an Asset Category named \"Electronic Equipments\". Create a separate category for furniture. Also, you can update default properties for each category, like:\n"
+"You can create an Asset Category based on the type of assets. For example, all your desktops and laptops can be part of an Asset Category named \"Electronic Equipment\". Create a separate category for furniture. Also, you can update default properties for each category, like:\n"
 " - Depreciation type and duration\n"
 " - Fixed asset account\n"
 " - Depreciation account\n"
@@ -640,7 +640,7 @@
 msgstr ""
 
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:280
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:325
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:332
 msgid "% Of Grand Total"
 msgstr ""
 
@@ -725,11 +725,11 @@
 msgid "% of materials delivered against this Sales Order"
 msgstr ""
 
-#: controllers/accounts_controller.py:1830
+#: controllers/accounts_controller.py:1899
 msgid "'Account' in the Accounting section of Customer {0}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:260
+#: selling/doctype/sales_order/sales_order.py:263
 msgid "'Allow Multiple Sales Orders Against a Customer's Purchase Order'"
 msgstr ""
 
@@ -745,11 +745,11 @@
 msgid "'Days Since Last Order' must be greater than or equal to zero"
 msgstr ""
 
-#: controllers/accounts_controller.py:1835
+#: controllers/accounts_controller.py:1904
 msgid "'Default {0} Account' in Company {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1162
+#: accounts/doctype/journal_entry/journal_entry.py:1048
 msgid "'Entries' cannot be empty"
 msgstr ""
 
@@ -1347,11 +1347,11 @@
 msgid "A - C"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:207
+#: manufacturing/doctype/bom/bom.py:209
 msgid "A BOM with name {0} already exists for item {1}."
 msgstr ""
 
-#: selling/doctype/customer/customer.py:296
+#: selling/doctype/customer/customer.py:297
 msgid "A Customer Group exists with same name please change the Customer name or rename the Customer Group"
 msgstr ""
 
@@ -1367,7 +1367,7 @@
 msgid "A Packing Slip can only be created for Draft Delivery Note."
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:508
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:530
 msgid "A Reconciliation Job {0} is running for the same filters. Cannot reconcile now"
 msgstr ""
 
@@ -1379,6 +1379,14 @@
 "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}"
+msgstr ""
+
+#: setup/doctype/company/company.py:914
+msgid "A Transaction Deletion Job: {0} is already running for {1}"
+msgstr ""
+
 #. Description of the 'Send To Primary Contact' (Check) field in DocType
 #. 'Process Statement Of Accounts'
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
@@ -1600,11 +1608,11 @@
 msgid "Abbreviation"
 msgstr ""
 
-#: setup/doctype/company/company.py:163
+#: setup/doctype/company/company.py:164
 msgid "Abbreviation already used for another company"
 msgstr ""
 
-#: setup/doctype/company/company.py:158
+#: setup/doctype/company/company.py:159
 msgid "Abbreviation is mandatory"
 msgstr ""
 
@@ -1694,7 +1702,7 @@
 msgid "Accepted Qty in Stock UOM"
 msgstr ""
 
-#: public/js/controllers/transaction.js:2094
+#: public/js/controllers/transaction.js:2124
 msgid "Accepted Quantity"
 msgstr ""
 
@@ -1764,11 +1772,11 @@
 #: accounts/report/budget_variance_report/budget_variance_report.py:83
 #: accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:291
 #: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py:205
-#: accounts/report/financial_statements.py:633
+#: accounts/report/financial_statements.py:621
 #: 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:562
+#: accounts/report/general_ledger/general_ledger.py:565
 #: accounts/report/payment_ledger/payment_ledger.js:31
 #: accounts/report/payment_ledger/payment_ledger.py:145
 #: accounts/report/trial_balance/trial_balance.py:415
@@ -2076,8 +2084,8 @@
 msgid "Account Manager"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:864
-#: controllers/accounts_controller.py:1839
+#: accounts/doctype/sales_invoice/sales_invoice.py:867
+#: controllers/accounts_controller.py:1908
 msgid "Account Missing"
 msgstr ""
 
@@ -2236,7 +2244,7 @@
 msgid "Account is not set for the dashboard chart {0}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:669
+#: assets/doctype/asset/asset.py:677
 msgid "Account not Found"
 msgstr ""
 
@@ -2265,7 +2273,7 @@
 msgid "Account {0} added multiple times"
 msgstr ""
 
-#: setup/doctype/company/company.py:186
+#: setup/doctype/company/company.py:187
 msgid "Account {0} does not belong to company: {1}"
 msgstr ""
 
@@ -2305,7 +2313,7 @@
 msgid "Account {0} is frozen"
 msgstr ""
 
-#: controllers/accounts_controller.py:998
+#: controllers/accounts_controller.py:1032
 msgid "Account {0} is invalid. Account Currency must be {1}"
 msgstr ""
 
@@ -2325,11 +2333,11 @@
 msgid "Account {0}: You can not assign itself as parent account"
 msgstr ""
 
-#: accounts/general_ledger.py:404
+#: accounts/general_ledger.py:403
 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:226
+#: accounts/doctype/journal_entry/journal_entry.py:243
 msgid "Account: {0} can only be updated via Stock Transactions"
 msgstr ""
 
@@ -2337,11 +2345,11 @@
 msgid "Account: {0} does not exist"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:2075
+#: accounts/doctype/payment_entry/payment_entry.py:2098
 msgid "Account: {0} is not permitted under Payment Entry"
 msgstr ""
 
-#: controllers/accounts_controller.py:2522
+#: controllers/accounts_controller.py:2591
 msgid "Account: {0} with currency: {1} can not be selected"
 msgstr ""
 
@@ -2647,6 +2655,13 @@
 msgid "Accounting Dimensions"
 msgstr ""
 
+#. Label of a Section Break field in DocType 'Payment Reconciliation
+#. Allocation'
+#: accounts/doctype/payment_reconciliation_allocation/payment_reconciliation_allocation.json
+msgctxt "Payment Reconciliation Allocation"
+msgid "Accounting Dimensions"
+msgstr ""
+
 #. Label of a Section Break field in DocType 'Payment Request'
 #: accounts/doctype/payment_request/payment_request.json
 msgctxt "Payment Request"
@@ -2797,6 +2812,12 @@
 msgid "Accounting Dimensions "
 msgstr ""
 
+#. Label of a Section Break field in DocType 'Payment Reconciliation'
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.json
+msgctxt "Payment Reconciliation"
+msgid "Accounting Dimensions Filter"
+msgstr ""
+
 #. Label of a Table field in DocType 'Journal Entry'
 #: accounts/doctype/journal_entry/journal_entry.json
 msgctxt "Journal Entry"
@@ -2817,37 +2838,37 @@
 msgid "Accounting Entries are reposted."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:703 assets/doctype/asset/asset.py:720
+#: assets/doctype/asset/asset.py:709 assets/doctype/asset/asset.py:724
 #: assets/doctype/asset_capitalization/asset_capitalization.py:572
 msgid "Accounting Entry for Asset"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:740
+#: stock/doctype/purchase_receipt/purchase_receipt.py:738
 msgid "Accounting Entry for Service"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:910
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:932
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:950
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:969
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:990
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1013
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1148
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1294
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1314
-#: controllers/stock_controller.py:170 controllers/stock_controller.py:187
-#: stock/doctype/purchase_receipt/purchase_receipt.py:842
-#: stock/doctype/stock_entry/stock_entry.py:1466
-#: stock/doctype/stock_entry/stock_entry.py:1482
+#: 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
 msgid "Accounting Entry for Stock"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:660
+#: stock/doctype/purchase_receipt/purchase_receipt.py:658
 msgid "Accounting Entry for {0}"
 msgstr ""
 
-#: controllers/accounts_controller.py:1881
+#: controllers/accounts_controller.py:1950
 msgid "Accounting Entry for {0}: {1} can only be made in currency: {2}"
 msgstr ""
 
@@ -2894,7 +2915,7 @@
 msgid "Accounting entries for this invoice needs to be reposted. Please click on 'Repost' button to update."
 msgstr ""
 
-#: setup/doctype/company/company.py:316
+#: setup/doctype/company/company.py:317
 msgid "Accounts"
 msgstr ""
 
@@ -3011,6 +3032,7 @@
 #: accounts/doctype/dunning_type/dunning_type.json
 #: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.json
 #: accounts/doctype/finance_book/finance_book.json
+#: accounts/doctype/fiscal_year/fiscal_year.json
 #: accounts/doctype/gl_entry/gl_entry.json
 #: accounts/doctype/item_tax_template/item_tax_template.json
 #: accounts/doctype/journal_entry/journal_entry.json
@@ -3068,18 +3090,18 @@
 msgid "Accounts Manager"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:329
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:343
 msgid "Accounts Missing Error"
 msgstr ""
 
 #. Name of a report
-#. Label of a Card Break in the Accounting Workspace
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
+#. Label of a shortcut in the Payables Workspace
 #: 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/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
 #: buying/doctype/supplier/supplier.js:90
 msgid "Accounts Payable"
 msgstr ""
@@ -3092,22 +3114,23 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
 #: accounts/report/accounts_payable/accounts_payable.js:175
 #: accounts/report/accounts_payable_summary/accounts_payable_summary.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
 msgid "Accounts Payable Summary"
 msgstr ""
 
 #. Name of a report
-#. Label of a Card Break in the Accounting Workspace
-#. Label of a Link in the Accounting Workspace
 #. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
+#. Label of a shortcut in the Receivables Workspace
 #: 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/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
 #: selling/doctype/customer/customer.js:155
 msgid "Accounts Receivable"
 msgstr ""
@@ -3139,10 +3162,10 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
 #: accounts/report/accounts_receivable/accounts_receivable.js:208
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
 msgid "Accounts Receivable Summary"
 msgstr ""
 
@@ -3267,7 +3290,7 @@
 msgid "Accounts User"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1267
+#: accounts/doctype/journal_entry/journal_entry.py:1153
 msgid "Accounts table cannot be blank."
 msgstr ""
 
@@ -3326,9 +3349,9 @@
 msgid "Accumulated Monthly"
 msgstr ""
 
-#: accounts/report/balance_sheet/balance_sheet.js:13
+#: 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:13
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:28
 msgid "Accumulated Values"
 msgstr ""
 
@@ -3828,8 +3851,8 @@
 msgid "Actual qty in stock"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1212
-#: public/js/controllers/accounts.js:175
+#: accounts/doctype/payment_entry/payment_entry.js:1223
+#: public/js/controllers/accounts.js:176
 msgid "Actual type tax cannot be included in Item rate in row {0}"
 msgstr ""
 
@@ -3839,7 +3862,7 @@
 #: public/js/bom_configurator/bom_configurator.bundle.js:291
 #: public/js/utils/crm_activities.js:168
 #: public/js/utils/serial_no_batch_selector.js:17
-#: public/js/utils/serial_no_batch_selector.js:176
+#: public/js/utils/serial_no_batch_selector.js:180
 msgid "Add"
 msgstr ""
 
@@ -3884,7 +3907,7 @@
 msgstr ""
 
 #: public/js/bom_configurator/bom_configurator.bundle.js:224
-#: selling/doctype/sales_order/sales_order.js:213
+#: selling/doctype/sales_order/sales_order.js:207
 #: stock/dashboard/item_dashboard.js:205
 msgid "Add Item"
 msgstr ""
@@ -3950,6 +3973,12 @@
 msgid "Add Sales Partners"
 msgstr ""
 
+#. Label of a Button field in DocType 'Purchase Invoice Item'
+#: accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
+msgctxt "Purchase Invoice Item"
+msgid "Add Serial / Batch No"
+msgstr ""
+
 #. Label of a Button field in DocType 'Purchase Receipt Item'
 #: stock/doctype/purchase_receipt_item/purchase_receipt_item.json
 msgctxt "Purchase Receipt Item"
@@ -4663,9 +4692,9 @@
 msgid "Address & Contacts"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #. Name of a report
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 #: selling/report/address_and_contacts/address_and_contacts.json
 msgid "Address And Contacts"
 msgstr ""
@@ -4859,7 +4888,7 @@
 msgid "Adjustment Against"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:583
+#: stock/doctype/purchase_receipt/purchase_receipt.py:581
 msgid "Adjustment based on Purchase Invoice rate"
 msgstr ""
 
@@ -4876,7 +4905,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
-#: portal/doctype/homepage/homepage.json stock/reorder_item.py:264
+#: stock/reorder_item.py:303
 msgid "Administrator"
 msgstr ""
 
@@ -4908,12 +4937,24 @@
 msgid "Advance Paid"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:45
-#: selling/doctype/sales_order/sales_order_list.js:59
+#: buying/doctype/purchase_order/purchase_order_list.js:47
+#: selling/doctype/sales_order/sales_order_list.js:61
 msgid "Advance Payment"
 msgstr ""
 
-#: controllers/accounts_controller.py:211
+#. Label of a Select field in DocType 'Purchase Order'
+#: buying/doctype/purchase_order/purchase_order.json
+msgctxt "Purchase Order"
+msgid "Advance Payment Status"
+msgstr ""
+
+#. Label of a Select field in DocType 'Sales Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "Advance Payment Status"
+msgstr ""
+
+#: controllers/accounts_controller.py:214
 msgid "Advance Payments"
 msgstr ""
 
@@ -4969,11 +5010,11 @@
 msgid "Advance amount"
 msgstr ""
 
-#: controllers/taxes_and_totals.py:733
+#: controllers/taxes_and_totals.py:743
 msgid "Advance amount cannot be greater than {0} {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:725
+#: accounts/doctype/journal_entry/journal_entry.py:741
 msgid "Advance paid against {0} {1} cannot be greater than Grand Total {2}"
 msgstr ""
 
@@ -5022,7 +5063,6 @@
 msgstr ""
 
 #. Label of a Text field in DocType 'GL Entry'
-#. Label of a Dynamic Link field in DocType 'GL Entry'
 #: accounts/doctype/gl_entry/gl_entry.json
 msgctxt "GL Entry"
 msgid "Against"
@@ -5030,7 +5070,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:628
+#: accounts/report/general_ledger/general_ledger.py:631
 msgid "Against Account"
 msgstr ""
 
@@ -5041,7 +5081,6 @@
 msgstr ""
 
 #. Label of a Text field in DocType 'Journal Entry Account'
-#. Label of a Dynamic Link field in DocType 'Journal Entry Account'
 #: accounts/doctype/journal_entry_account/journal_entry_account.json
 msgctxt "Journal Entry Account"
 msgid "Against Account"
@@ -5065,11 +5104,11 @@
 msgid "Against Blanket Order"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:942
+#: accounts/doctype/sales_invoice/sales_invoice.py:945
 msgid "Against Customer Order {0} dated {1}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:973
+#: selling/doctype/sales_order/sales_order.js:967
 msgid "Against Default Supplier"
 msgstr ""
 
@@ -5127,8 +5166,8 @@
 msgid "Against Income Account"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:593
-#: accounts/doctype/payment_entry/payment_entry.py:667
+#: accounts/doctype/journal_entry/journal_entry.py:609
+#: accounts/doctype/payment_entry/payment_entry.py:669
 msgid "Against Journal Entry {0} does not have any unmatched {1} entry"
 msgstr ""
 
@@ -5170,19 +5209,7 @@
 msgid "Against Supplier Invoice {0} dated {1}"
 msgstr ""
 
-#. Label of a Link field in DocType 'GL Entry'
-#: accounts/doctype/gl_entry/gl_entry.json
-msgctxt "GL Entry"
-msgid "Against Type"
-msgstr ""
-
-#. Label of a Link field in DocType 'Journal Entry Account'
-#: accounts/doctype/journal_entry_account/journal_entry_account.json
-msgctxt "Journal Entry Account"
-msgid "Against Type"
-msgstr ""
-
-#: accounts/report/general_ledger/general_ledger.py:647
+#: accounts/report/general_ledger/general_ledger.py:650
 msgid "Against Voucher"
 msgstr ""
 
@@ -5204,7 +5231,7 @@
 msgid "Against Voucher No"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:645
+#: accounts/report/general_ledger/general_ledger.py:648
 #: accounts/report/payment_ledger/payment_ledger.py:176
 msgid "Against Voucher Type"
 msgstr ""
@@ -5229,7 +5256,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:151
-#: accounts/report/accounts_receivable/accounts_receivable.py:1111
+#: accounts/report/accounts_receivable/accounts_receivable.py:1134
 msgid "Age (Days)"
 msgstr ""
 
@@ -5374,7 +5401,7 @@
 #: 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.py:166
-#: accounts/utils.py:1296 public/js/setup_wizard.js:163
+#: accounts/utils.py:1324 public/js/setup_wizard.js:163
 msgid "All Accounts"
 msgstr ""
 
@@ -5414,7 +5441,7 @@
 msgid "All Activities HTML"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:266
+#: manufacturing/doctype/bom/bom.py:268
 msgid "All BOMs"
 msgstr ""
 
@@ -5448,14 +5475,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: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
+#: 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
 msgid "All Departments"
 msgstr ""
 
@@ -5523,7 +5550,7 @@
 msgid "All Territories"
 msgstr ""
 
-#: setup/doctype/company/company.py:258 setup/doctype/company/company.py:274
+#: setup/doctype/company/company.py:259 setup/doctype/company/company.py:275
 msgid "All Warehouses"
 msgstr ""
 
@@ -5538,15 +5565,15 @@
 msgid "All communications including and above this shall be moved into the new Issue"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:1173
+#: stock/doctype/purchase_receipt/purchase_receipt.py:1170
 msgid "All items have already been Invoiced/Returned"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2195
+#: stock/doctype/stock_entry/stock_entry.py:2191
 msgid "All items have already been transferred for this Work Order."
 msgstr ""
 
-#: public/js/controllers/transaction.js:2180
+#: public/js/controllers/transaction.js:2210
 msgid "All items in this document already have a linked Quality Inspection."
 msgstr ""
 
@@ -5583,7 +5610,7 @@
 msgid "Allocate Advances Automatically (FIFO)"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:668
+#: accounts/doctype/payment_entry/payment_entry.js:679
 msgid "Allocate Payment Amount"
 msgstr ""
 
@@ -5671,15 +5698,15 @@
 msgid "Allocated amount"
 msgstr ""
 
-#: accounts/utils.py:593
+#: accounts/utils.py:614
 msgid "Allocated amount cannot be greater than unadjusted amount"
 msgstr ""
 
-#: accounts/utils.py:591
+#: accounts/utils.py:612
 msgid "Allocated amount cannot be negative"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:237
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:258
 msgid "Allocation"
 msgstr ""
 
@@ -6600,7 +6627,7 @@
 msgid "Amended From"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:539
+#: accounts/doctype/journal_entry/journal_entry.js:529
 #: 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
@@ -6608,7 +6635,7 @@
 #: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:80
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:43
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:270
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:315
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:322
 #: accounts/report/payment_ledger/payment_ledger.py:194
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:43
 #: accounts/report/share_balance/share_balance.py:61
@@ -7141,19 +7168,19 @@
 msgid "Amount in customer's currency"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1099
+#: accounts/doctype/payment_entry/payment_entry.py:1119
 msgid "Amount {0} {1} against {2} {3}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1107
+#: accounts/doctype/payment_entry/payment_entry.py:1127
 msgid "Amount {0} {1} deducted against {2}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1075
+#: accounts/doctype/payment_entry/payment_entry.py:1095
 msgid "Amount {0} {1} transferred from {2} to {3}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1082
+#: accounts/doctype/payment_entry/payment_entry.py:1102
 msgid "Amount {0} {1} {2} {3}"
 msgstr ""
 
@@ -7171,12 +7198,12 @@
 msgid "An error has occurred during {0}. Check {1} for more details"
 msgstr ""
 
-#: stock/reorder_item.py:248
-msgid "An error occured for certain Items while creating Material Requests based on Re-order level. Please rectify these issues :"
+#: public/js/controllers/buying.js:297 public/js/utils/sales_common.js:364
+msgid "An error occurred during the update process"
 msgstr ""
 
-#: public/js/controllers/buying.js:297 public/js/utils/sales_common.js:355
-msgid "An error occurred during the update process"
+#: stock/reorder_item.py:287
+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
@@ -8045,21 +8072,21 @@
 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:883
-#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:929
+#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:898
+#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:944
 #: assets/doctype/asset_shift_allocation/asset_shift_allocation.py:83
 msgid "Asset Depreciation Schedule not found for Asset {0} and Finance Book {1}"
 msgstr ""
 
-#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:92
+#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:94
 msgid "Asset Depreciation Schedule {0} for Asset {1} already exists."
 msgstr ""
 
-#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:86
+#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:88
 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:180
+#: assets/doctype/asset/asset.py:144 assets/doctype/asset/asset.py:181
 msgid "Asset Depreciation Schedules created:<br>{0}<br><br>Please check, edit if needed, and submit the Asset."
 msgstr ""
 
@@ -8169,7 +8196,7 @@
 msgid "Asset Movement Item"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:897
+#: assets/doctype/asset/asset.py:901
 msgid "Asset Movement record {0} created"
 msgstr ""
 
@@ -8355,35 +8382,35 @@
 msgid "Asset Value Analytics"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:171
+#: assets/doctype/asset/asset.py:172
 msgid "Asset cancelled"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:505
+#: assets/doctype/asset/asset.py:506
 msgid "Asset cannot be cancelled, as it is already {0}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:689
+#: assets/doctype/asset_capitalization/asset_capitalization.py:687
 msgid "Asset capitalized after Asset Capitalization {0} was submitted"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:193
+#: assets/doctype/asset/asset.py:194
 msgid "Asset created"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:635
+#: assets/doctype/asset_capitalization/asset_capitalization.py:633
 msgid "Asset created after Asset Capitalization {0} was submitted"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1150
+#: assets/doctype/asset/asset.py:1156
 msgid "Asset created after being split from Asset {0}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:697
+#: assets/doctype/asset_capitalization/asset_capitalization.py:695
 msgid "Asset decapitalized after Asset Capitalization {0} was submitted"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:196
+#: assets/doctype/asset/asset.py:197
 msgid "Asset deleted"
 msgstr ""
 
@@ -8403,11 +8430,11 @@
 msgid "Asset restored"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:705
+#: assets/doctype/asset_capitalization/asset_capitalization.py:703
 msgid "Asset restored after Asset Capitalization {0} was cancelled"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1323
+#: accounts/doctype/sales_invoice/sales_invoice.py:1320
 msgid "Asset returned"
 msgstr ""
 
@@ -8419,7 +8446,7 @@
 msgid "Asset scrapped via Journal Entry {0}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1357
+#: accounts/doctype/sales_invoice/sales_invoice.py:1354
 msgid "Asset sold"
 msgstr ""
 
@@ -8431,7 +8458,7 @@
 msgid "Asset transferred to Location {0}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1074
+#: assets/doctype/asset/asset.py:1080
 msgid "Asset updated after being split into Asset {0}"
 msgstr ""
 
@@ -8451,7 +8478,7 @@
 msgid "Asset {0} cannot be scrapped, as it is already {1}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:228
+#: assets/doctype/asset_capitalization/asset_capitalization.py:237
 msgid "Asset {0} does not belong to Item {1}"
 msgstr ""
 
@@ -8467,16 +8494,16 @@
 msgid "Asset {0} does not belongs to the location {1}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:761
-#: assets/doctype/asset_capitalization/asset_capitalization.py:861
+#: assets/doctype/asset_capitalization/asset_capitalization.py:759
+#: assets/doctype/asset_capitalization/asset_capitalization.py:859
 msgid "Asset {0} does not exist"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:641
+#: assets/doctype/asset_capitalization/asset_capitalization.py:639
 msgid "Asset {0} has been created. Please set the depreciation details if any and submit it."
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:663
+#: assets/doctype/asset_capitalization/asset_capitalization.py:661
 msgid "Asset {0} has been updated. Please set the depreciation details if any and submit it."
 msgstr ""
 
@@ -8573,8 +8600,20 @@
 msgid "Assignment Conditions"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:407
-#: accounts/doctype/sales_invoice/sales_invoice.py:508
+#: assets/doctype/asset/asset.py:1011
+msgid "At least one asset has to be selected."
+msgstr ""
+
+#: accounts/doctype/pos_invoice/pos_invoice.py:789
+msgid "At least one invoice has to be selected."
+msgstr ""
+
+#: controllers/sales_and_purchase_return.py:144
+msgid "At least one item should be entered with negative quantity in return document"
+msgstr ""
+
+#: accounts/doctype/pos_invoice/pos_invoice.py:405
+#: accounts/doctype/sales_invoice/sales_invoice.py:509
 msgid "At least one mode of payment is required for POS invoice."
 msgstr ""
 
@@ -8582,45 +8621,33 @@
 msgid "At least one of the Applicable Modules should be selected"
 msgstr ""
 
+#: accounts/doctype/pricing_rule/pricing_rule.py:196
+msgid "At least one of the Selling or Buying must be selected"
+msgstr ""
+
+#: stock/doctype/stock_entry/stock_entry.py:643
+msgid "At least one warehouse is mandatory"
+msgstr ""
+
 #: manufacturing/doctype/routing/routing.py:50
 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:579
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:582
 msgid "At row {0}: Batch No is mandatory for Item {1}"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:571
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:574
 msgid "At row {0}: Serial No is mandatory for Item {1}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1007
-msgid "Atleast one asset has to be selected."
-msgstr ""
-
-#: accounts/doctype/pos_invoice/pos_invoice.py:796
-msgid "Atleast one invoice has to be selected."
-msgstr ""
-
-#: controllers/sales_and_purchase_return.py:144
-msgid "Atleast one item should be entered with negative quantity in return document"
-msgstr ""
-
-#: accounts/doctype/pricing_rule/pricing_rule.py:196
-msgid "Atleast one of the Selling or Buying must be selected"
-msgstr ""
-
-#: stock/doctype/stock_entry/stock_entry.py:643
-msgid "Atleast one warehouse is mandatory"
-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:199
+#: public/js/utils/serial_no_batch_selector.js:246
 #: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:66
 msgid "Attach CSV File"
 msgstr ""
@@ -8817,7 +8844,7 @@
 msgid "Auto Email Report"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:244
+#: public/js/utils/serial_no_batch_selector.js:316
 msgid "Auto Fetch"
 msgstr ""
 
@@ -8833,7 +8860,7 @@
 msgid "Auto Material Request"
 msgstr ""
 
-#: stock/reorder_item.py:240
+#: stock/reorder_item.py:242
 msgid "Auto Material Requests Generated"
 msgstr ""
 
@@ -8991,7 +9018,7 @@
 msgid "Auto re-order"
 msgstr ""
 
-#: public/js/controllers/buying.js:295 public/js/utils/sales_common.js:353
+#: public/js/controllers/buying.js:295 public/js/utils/sales_common.js:362
 msgid "Auto repeat document updated"
 msgstr ""
 
@@ -9167,7 +9194,7 @@
 msgid "Available Stock for Packing Items"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:269
+#: assets/doctype/asset/asset.py:270
 msgid "Available for use date is required"
 msgstr ""
 
@@ -9185,7 +9212,7 @@
 msgid "Available-for-use Date"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:354
+#: assets/doctype/asset/asset.py:355
 msgid "Available-for-use Date should be after purchase date"
 msgstr ""
 
@@ -9279,7 +9306,7 @@
 #: manufacturing/report/bom_stock_calculated/bom_stock_calculated.js:9
 #: 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:816
+#: selling/doctype/sales_order/sales_order.js:810
 #: stock/doctype/material_request/material_request.js:243
 #: stock/doctype/stock_entry/stock_entry.js:545
 #: stock/report/bom_search/bom_search.py:38
@@ -9352,7 +9379,7 @@
 msgid "BOM 1"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1346
+#: manufacturing/doctype/bom/bom.py:1348
 msgid "BOM 1 {0} and BOM 2 {1} should not be same"
 msgstr ""
 
@@ -9642,19 +9669,19 @@
 msgid "BOM recursion: {0} cannot be child of {1}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:629
+#: manufacturing/doctype/bom/bom.py:631
 msgid "BOM recursion: {1} cannot be parent or child of {0}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1221
+#: manufacturing/doctype/bom/bom.py:1223
 msgid "BOM {0} does not belong to Item {1}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1203
+#: manufacturing/doctype/bom/bom.py:1205
 msgid "BOM {0} must be active"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1206
+#: manufacturing/doctype/bom/bom.py:1208
 msgid "BOM {0} must be submitted"
 msgstr ""
 
@@ -9713,7 +9740,7 @@
 msgid "Balance (Dr - Cr)"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:581
+#: accounts/report/general_ledger/general_ledger.py:584
 msgid "Balance ({0})"
 msgstr ""
 
@@ -9744,10 +9771,10 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/balance_sheet/balance_sheet.json
-#: accounts/workspace/accounting/accounting.json
-#: public/js/financial_statements.js:79
+#: accounts/workspace/financial_reports/financial_reports.json
+#: public/js/financial_statements.js:131
 msgid "Balance Sheet"
 msgstr ""
 
@@ -10190,7 +10217,7 @@
 msgid "Bank Transaction {0} added as Payment Entry"
 msgstr ""
 
-#: accounts/doctype/bank_transaction/bank_transaction.py:106
+#: accounts/doctype/bank_transaction/bank_transaction.py:124
 msgid "Bank Transaction {0} is already fully reconciled"
 msgstr ""
 
@@ -10235,7 +10262,7 @@
 msgid "Banking"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:258
+#: public/js/utils/barcode_scanner.js:273
 msgid "Barcode"
 msgstr ""
 
@@ -10362,7 +10389,7 @@
 msgid "Base Tax Withholding Net Total"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:236
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:241
 msgid "Base Total"
 msgstr ""
 
@@ -10543,9 +10570,9 @@
 
 #: 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.py:117
-#: public/js/controllers/transaction.js:2120
-#: public/js/utils/barcode_scanner.js:236
-#: public/js/utils/serial_no_batch_selector.js:295
+#: public/js/controllers/transaction.js:2150
+#: public/js/utils/barcode_scanner.js:251
+#: public/js/utils/serial_no_batch_selector.js:367
 #: 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
@@ -10673,11 +10700,15 @@
 msgid "Batch No"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:582
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:585
 msgid "Batch No is mandatory"
 msgstr ""
 
-#: stock/utils.py:596
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2118
+msgid "Batch No {0} does not exists"
+msgstr ""
+
+#: stock/utils.py:643
 msgid "Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead."
 msgstr ""
 
@@ -10688,12 +10719,12 @@
 msgstr ""
 
 #: public/js/utils/serial_no_batch_selector.js:15
-#: public/js/utils/serial_no_batch_selector.js:174
+#: public/js/utils/serial_no_batch_selector.js:178
 #: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:48
 msgid "Batch Nos"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1087
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1113
 msgid "Batch Nos are created successfully"
 msgstr ""
 
@@ -10761,12 +10792,12 @@
 msgid "Batch {0} and Warehouse"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2349
+#: stock/doctype/stock_entry/stock_entry.py:2345
 #: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:272
 msgid "Batch {0} of Item {1} has expired."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2351
+#: stock/doctype/stock_entry/stock_entry.py:2347
 msgid "Batch {0} of Item {1} is disabled."
 msgstr ""
 
@@ -10802,7 +10833,11 @@
 msgid "Beginning of the current subscription period"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1038
+#: accounts/doctype/subscription/subscription.py:341
+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/purchase_register/purchase_register.py:214
 msgid "Bill Date"
 msgstr ""
@@ -10819,7 +10854,7 @@
 msgid "Bill Date"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1037
+#: accounts/report/accounts_receivable/accounts_receivable.py:1060
 #: accounts/report/purchase_register/purchase_register.py:213
 msgid "Bill No"
 msgstr ""
@@ -10844,7 +10879,7 @@
 
 #. Title of an Onboarding Step
 #. Label of a Card Break in the Manufacturing Workspace
-#: manufacturing/doctype/bom/bom.py:1087
+#: manufacturing/doctype/bom/bom.py:1089
 #: manufacturing/onboarding_step/create_bom/create_bom.json
 #: manufacturing/workspace/manufacturing/manufacturing.json
 #: stock/doctype/material_request/material_request.js:99
@@ -11093,7 +11128,7 @@
 msgid "Billing Interval Count cannot be less than 1"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:353
+#: accounts/doctype/subscription/subscription.py:383
 msgid "Billing Interval in Subscription Plan must be Month to follow calendar months"
 msgstr ""
 
@@ -11324,7 +11359,7 @@
 msgid "Bom No"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:227
+#: accounts/doctype/payment_entry/payment_entry.py:229
 msgid "Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}."
 msgstr ""
 
@@ -11392,7 +11427,7 @@
 msgid "Booking stock value across multiple accounts will make it harder to track stock and account value."
 msgstr ""
 
-#: accounts/general_ledger.py:686
+#: accounts/general_ledger.py:685
 msgid "Books have been closed till the period ending on {0}"
 msgstr ""
 
@@ -11403,7 +11438,7 @@
 msgid "Both"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:329
+#: accounts/doctype/subscription/subscription.py:359
 msgid "Both Trial Period Start Date and Trial Period End Date must be set"
 msgstr ""
 
@@ -11874,10 +11909,6 @@
 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 ""
 
-#: templates/pages/home.html:59
-msgid "By {0}"
-msgstr ""
-
 #. Label of a Check field in DocType 'Customer Credit Limit'
 #: selling/doctype/customer_credit_limit/customer_credit_limit.json
 msgctxt "Customer Credit Limit"
@@ -12258,13 +12289,13 @@
 msgid "Can not filter based on Voucher No, if grouped by Voucher"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1340
-#: accounts/doctype/payment_entry/payment_entry.py:2206
+#: accounts/doctype/journal_entry/journal_entry.py:1226
+#: accounts/doctype/payment_entry/payment_entry.py:2229
 msgid "Can only make payment against unbilled {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1188
-#: controllers/accounts_controller.py:2431 public/js/controllers/accounts.js:90
+#: accounts/doctype/payment_entry/payment_entry.js:1199
+#: controllers/accounts_controller.py:2500 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 ""
 
@@ -12591,11 +12622,6 @@
 msgid "Cancelled"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry_list.js:7
-msgctxt "docstatus,=,2"
-msgid "Cancelled"
-msgstr ""
-
 #: stock/doctype/delivery_trip/delivery_trip.js:76
 #: stock/doctype/delivery_trip/delivery_trip.py:189
 msgid "Cannot Calculate Arrival Time as Driver Address is Missing."
@@ -12622,7 +12648,7 @@
 msgid "Cannot amend {0} {1}, please create a new one instead."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:240
+#: accounts/doctype/journal_entry/journal_entry.py:257
 msgid "Cannot apply TDS against multiple parties in one entry"
 msgstr ""
 
@@ -12638,7 +12664,7 @@
 msgid "Cannot cancel because submitted Stock Entry {0} exists"
 msgstr ""
 
-#: stock/stock_ledger.py:187
+#: stock/stock_ledger.py:196
 msgid "Cannot cancel the transaction. Reposting of item valuation on submission is not completed yet."
 msgstr ""
 
@@ -12670,7 +12696,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:208
+#: setup/doctype/company/company.py:209
 msgid "Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency."
 msgstr ""
 
@@ -12694,7 +12720,7 @@
 msgid "Cannot covert to Group because Account Type is selected."
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:917
+#: stock/doctype/purchase_receipt/purchase_receipt.py:914
 msgid "Cannot create Stock Reservation Entries for future dated Purchase Receipts."
 msgstr ""
 
@@ -12702,7 +12728,7 @@
 msgid "Cannot create a Delivery Trip from Draft documents."
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:1562
+#: selling/doctype/sales_order/sales_order.py:1576
 #: stock/doctype/pick_list/pick_list.py:104
 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 ""
@@ -12711,7 +12737,7 @@
 msgid "Cannot create accounting entries against disabled accounts: {0}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:947
+#: manufacturing/doctype/bom/bom.py:949
 msgid "Cannot deactivate or cancel BOM as it is linked with other BOMs"
 msgstr ""
 
@@ -12728,8 +12754,8 @@
 msgid "Cannot delete Serial No {0}, as it is used in stock transactions"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:635
-#: selling/doctype/sales_order/sales_order.py:658
+#: selling/doctype/sales_order/sales_order.py:638
+#: selling/doctype/sales_order/sales_order.py:661
 msgid "Cannot ensure delivery by Serial No as Item {0} is added with and without Ensure Delivery by Serial No."
 msgstr ""
 
@@ -12737,11 +12763,11 @@
 msgid "Cannot find Item with this Barcode"
 msgstr ""
 
-#: controllers/accounts_controller.py:2964
+#: controllers/accounts_controller.py:3023
 msgid "Cannot find {} for item {}. Please set the same in Item Master or Stock Settings."
 msgstr ""
 
-#: controllers/accounts_controller.py:1741
+#: controllers/accounts_controller.py:1774
 msgid "Cannot overbill for Item {0} in row {1} more than {2}. To allow over-billing, please set allowance in Accounts Settings"
 msgstr ""
 
@@ -12757,12 +12783,12 @@
 msgid "Cannot produce more than {0} items for {1}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:292
+#: accounts/doctype/payment_entry/payment_entry.py:294
 msgid "Cannot receive from customer against negative outstanding"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1198
-#: controllers/accounts_controller.py:2446
+#: accounts/doctype/payment_entry/payment_entry.js:1209
+#: controllers/accounts_controller.py:2515
 #: public/js/controllers/accounts.js:100
 msgid "Cannot refer row number greater than or equal to current row number for this Charge type"
 msgstr ""
@@ -12775,15 +12801,15 @@
 msgid "Cannot retrieve link token. Check Error Log for more information"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1192
-#: accounts/doctype/payment_entry/payment_entry.js:1363
-#: accounts/doctype/payment_entry/payment_entry.py:1569
-#: controllers/accounts_controller.py:2436 public/js/controllers/accounts.js:94
-#: public/js/controllers/taxes_and_totals.js:451
+#: 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
+#: 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 ""
 
-#: selling/doctype/quotation/quotation.py:265
+#: selling/doctype/quotation/quotation.py:266
 msgid "Cannot set as Lost as Sales Order is made."
 msgstr ""
 
@@ -12795,11 +12821,11 @@
 msgid "Cannot set multiple Item Defaults for a company."
 msgstr ""
 
-#: controllers/accounts_controller.py:3114
+#: controllers/accounts_controller.py:3173
 msgid "Cannot set quantity less than delivered quantity"
 msgstr ""
 
-#: controllers/accounts_controller.py:3119
+#: controllers/accounts_controller.py:3178
 msgid "Cannot set quantity less than received quantity"
 msgstr ""
 
@@ -12807,7 +12833,7 @@
 msgid "Cannot set the field <b>{0}</b> for copying in variants"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:865
+#: accounts/doctype/payment_entry/payment_entry.js:876
 msgid "Cannot {0} {1} {2} without any negative outstanding invoice"
 msgstr ""
 
@@ -12849,7 +12875,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:26
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:39
-msgid "Capital Equipments"
+msgid "Capital Equipment"
 msgstr ""
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:103
@@ -12913,13 +12939,6 @@
 msgid "Capitalized In"
 msgstr ""
 
-#. Option for the 'Section Based On' (Select) field in DocType 'Homepage
-#. Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Cards"
-msgstr ""
-
 #. Label of a Data field in DocType 'Shipment'
 #: stock/doctype/shipment/shipment.json
 msgctxt "Shipment"
@@ -12977,13 +12996,13 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/cash_flow/cash_flow.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Cash Flow"
 msgstr ""
 
-#: public/js/financial_statements.js:89
+#: public/js/financial_statements.js:141
 msgid "Cash Flow Statement"
 msgstr ""
 
@@ -13088,7 +13107,7 @@
 msgid "Category-wise Asset Value"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:309
+#: buying/doctype/purchase_order/purchase_order.py:313
 #: buying/doctype/request_for_quotation/request_for_quotation.py:99
 msgid "Caution"
 msgstr ""
@@ -13169,7 +13188,7 @@
 msgid "Change in Stock Value"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:882
+#: accounts/doctype/sales_invoice/sales_invoice.py:885
 msgid "Change the account type to Receivable or select a different account."
 msgstr ""
 
@@ -13200,21 +13219,21 @@
 msgid "Channel Partner"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1624
-#: controllers/accounts_controller.py:2499
+#: accounts/doctype/payment_entry/payment_entry.py:1634
+#: controllers/accounts_controller.py:2568
 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
+msgid "Chargeable"
+msgstr ""
+
 #. Option for the 'Account Type' (Select) field in DocType 'Account'
 #: accounts/doctype/account/account.json
 msgctxt "Account"
 msgid "Chargeable"
 msgstr ""
 
-#: accounts/report/account_balance/account_balance.js:42
-msgid "Chargeble"
-msgstr ""
-
 #. Label of a Currency field in DocType 'Bank Guarantee'
 #: accounts/doctype/bank_guarantee/bank_guarantee.json
 msgctxt "Bank Guarantee"
@@ -13426,7 +13445,7 @@
 msgid "Cheque Width"
 msgstr ""
 
-#: public/js/controllers/transaction.js:2031
+#: public/js/controllers/transaction.js:2061
 msgid "Cheque/Reference Date"
 msgstr ""
 
@@ -13618,15 +13637,15 @@
 msgstr ""
 
 #: buying/doctype/purchase_order/purchase_order.js:292
-#: buying/doctype/purchase_order/purchase_order_list.js:28
+#: 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:527
-#: selling/doctype/sales_order/sales_order.js:547
-#: selling/doctype/sales_order/sales_order_list.js:43
-#: stock/doctype/delivery_note/delivery_note.js:218
+#: 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
@@ -13770,7 +13789,7 @@
 msgid "Closed Work Order can not be stopped or Re-opened"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:417
+#: selling/doctype/sales_order/sales_order.py:420
 msgid "Closed order cannot be cancelled. Unclose to cancel."
 msgstr ""
 
@@ -14138,7 +14157,7 @@
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:40
 #: 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:265
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:272
 #: accounts/report/payment_ledger/payment_ledger.js:9
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:8
 #: accounts/report/pos_register/pos_register.js:9
@@ -14181,7 +14200,7 @@
 #: manufacturing/report/work_order_summary/work_order_summary.js:8
 #: projects/report/project_summary/project_summary.js:9
 #: projects/report/project_wise_stock_tracking/project_wise_stock_tracking.py:44
-#: public/js/financial_statements.js:100 public/js/purchase_trends_filters.js:8
+#: 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
 #: regional/report/irs_1099/irs_1099.js:8
@@ -14227,7 +14246,7 @@
 #: stock/report/reserved_stock/reserved_stock.py:191
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:9
 #: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:73
-#: stock/report/serial_no_ledger/serial_no_ledger.py:38
+#: 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
@@ -14508,12 +14527,6 @@
 msgid "Company"
 msgstr ""
 
-#. Label of a Link field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Company"
-msgstr ""
-
 #. Label of a Link field in DocType 'Import Supplier Invoice'
 #: regional/doctype/import_supplier_invoice/import_supplier_invoice.json
 msgctxt "Import Supplier Invoice"
@@ -15148,19 +15161,14 @@
 msgid "Company Description"
 msgstr ""
 
-#. Description of the 'Description' (Text) field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Company Description for website homepage"
-msgstr ""
-
 #. Label of a Section Break field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
 msgid "Company Details"
 msgstr ""
 
-#. Option for the 'Prefered Contact Email' (Select) field in DocType 'Employee'
+#. Option for the 'Preferred Contact Email' (Select) field in DocType
+#. 'Employee'
 #. Label of a Data field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
@@ -15221,12 +15229,6 @@
 msgid "Company Shipping Address"
 msgstr ""
 
-#. Description of the 'Tag Line' (Data) field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Company Tagline for website homepage"
-msgstr ""
-
 #. Label of a Data field in DocType 'Sales Invoice'
 #: accounts/doctype/sales_invoice/sales_invoice.json
 msgctxt "Sales Invoice"
@@ -15237,7 +15239,7 @@
 msgid "Company and Posting Date is mandatory"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2232
+#: accounts/doctype/sales_invoice/sales_invoice.py:2203
 msgid "Company currencies of both the companies should match for Inter Company Transactions."
 msgstr ""
 
@@ -15247,18 +15249,18 @@
 msgstr ""
 
 #: accounts/doctype/bank_account/bank_account.py:58
-msgid "Company is manadatory for company account"
+msgid "Company is mandatory for company account"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:383
+#: accounts/doctype/subscription/subscription.py:413
 msgid "Company is mandatory was generating invoice. Please set default company in Global Defaults."
 msgstr ""
 
-#: setup/doctype/company/company.js:153
+#: setup/doctype/company/company.js:161
 msgid "Company name not same"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:205
+#: assets/doctype/asset/asset.py:206
 msgid "Company of asset {0} and purchase document {1} doesn't matches."
 msgstr ""
 
@@ -15305,7 +15307,7 @@
 msgid "Company {} does not exist yet. Taxes setup aborted."
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:451
+#: accounts/doctype/pos_invoice/pos_invoice.py:449
 msgid "Company {} does not match with POS Profile Company {}"
 msgstr ""
 
@@ -15338,7 +15340,7 @@
 msgid "Competitor Name"
 msgstr ""
 
-#: public/js/utils/sales_common.js:408
+#: public/js/utils/sales_common.js:417
 msgid "Competitors"
 msgstr ""
 
@@ -15376,7 +15378,7 @@
 
 #: accounts/doctype/subscription/subscription_list.js:8
 #: assets/doctype/asset_repair/asset_repair_list.js:7
-#: buying/doctype/purchase_order/purchase_order_list.js:22
+#: buying/doctype/purchase_order/purchase_order_list.js:24
 #: 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
@@ -15386,7 +15388,7 @@
 #: setup/doctype/transaction_deletion_record/transaction_deletion_record_list.js:9
 #: stock/doctype/delivery_note/delivery_note_list.js:14
 #: stock/doctype/material_request/material_request_list.js:13
-#: stock/doctype/purchase_receipt/purchase_receipt_list.js:14
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:16
 msgid "Completed"
 msgstr ""
 
@@ -15980,9 +15982,9 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/consolidated_financial_statement/consolidated_financial_statement.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Consolidated Financial Statement"
 msgstr ""
 
@@ -16028,7 +16030,7 @@
 msgid "Consumed Amount"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:309
+#: assets/doctype/asset_capitalization/asset_capitalization.py:318
 msgid "Consumed Asset Items is mandatory for Decapitalization"
 msgstr ""
 
@@ -16099,7 +16101,7 @@
 msgid "Consumed Stock Items"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:312
+#: assets/doctype/asset_capitalization/asset_capitalization.py:321
 msgid "Consumed Stock Items or Consumed Asset Items is mandatory for Capitalization"
 msgstr ""
 
@@ -16628,12 +16630,6 @@
 msgid "Contacts"
 msgstr ""
 
-#. Label of a Text field in DocType 'Homepage Section Card'
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgctxt "Homepage Section Card"
-msgid "Content"
-msgstr ""
-
 #. Label of a Data field in DocType 'Issue'
 #: support/doctype/issue/issue.json
 msgctxt "Issue"
@@ -16641,7 +16637,7 @@
 msgstr ""
 
 #: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:136
-#: public/js/controllers/transaction.js:2044
+#: public/js/controllers/transaction.js:2074
 #: selling/doctype/quotation/quotation.js:344
 msgid "Continue"
 msgstr ""
@@ -16887,7 +16883,7 @@
 msgid "Conversion factor for default Unit of Measure must be 1 in row {0}"
 msgstr ""
 
-#: controllers/accounts_controller.py:2315
+#: controllers/accounts_controller.py:2384
 msgid "Conversion rate cannot be 0 or 1"
 msgstr ""
 
@@ -17002,17 +16998,16 @@
 
 #. Name of a DocType
 #: accounts/doctype/cost_center/cost_center.json
-#: accounts/doctype/payment_entry/payment_entry.js:659
 #: 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:1024
+#: accounts/report/accounts_receivable/accounts_receivable.py:1047
 #: 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:640
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:293
+#: accounts/report/general_ledger/general_ledger.py:643
+#: 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
@@ -17022,7 +17017,7 @@
 #: assets/report/fixed_asset_register/fixed_asset_register.py:461
 #: buying/report/procurement_tracker/procurement_tracker.js:16
 #: buying/report/procurement_tracker/procurement_tracker.py:32
-#: public/js/financial_statements.js:184
+#: public/js/financial_statements.js:237
 msgid "Cost Center"
 msgstr ""
 
@@ -17087,6 +17082,12 @@
 msgid "Cost Center"
 msgstr ""
 
+#. Label of a shortcut in the Receivables Workspace
+#: accounts/workspace/receivables/receivables.json
+msgctxt "Cost Center"
+msgid "Cost Center"
+msgstr ""
+
 #. Label of a Link field in DocType 'Cost Center Allocation Percentage'
 #: accounts/doctype/cost_center_allocation_percentage/cost_center_allocation_percentage.json
 msgctxt "Cost Center Allocation Percentage"
@@ -17392,7 +17393,7 @@
 msgid "Cost Center Allocation Percentages"
 msgstr ""
 
-#: public/js/utils/sales_common.js:374
+#: public/js/utils/sales_common.js:383
 msgid "Cost Center For Item with Item Code {0} has been Changed to {1}"
 msgstr ""
 
@@ -17421,8 +17422,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:1261
-#: stock/doctype/purchase_receipt/purchase_receipt.py:790
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1235
+#: stock/doctype/purchase_receipt/purchase_receipt.py:788
 msgid "Cost Center is required in row {0} in Taxes table for type {1}"
 msgstr ""
 
@@ -17442,15 +17443,15 @@
 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:245
+#: assets/doctype/asset/asset.py:246
 msgid "Cost Center {} doesn't belong to Company {}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:252
+#: assets/doctype/asset/asset.py:253
 msgid "Cost Center {} is a group cost center and group cost centers cannot be used in transactions"
 msgstr ""
 
-#: accounts/report/financial_statements.py:624
+#: accounts/report/financial_statements.py:612
 msgid "Cost Center: {0} does not exist"
 msgstr ""
 
@@ -17589,7 +17590,7 @@
 msgid "Could Not Delete Demo Data"
 msgstr ""
 
-#: selling/doctype/quotation/quotation.py:546
+#: selling/doctype/quotation/quotation.py:551
 msgid "Could not auto create Customer due to the following missing mandatory field(s):"
 msgstr ""
 
@@ -17612,7 +17613,7 @@
 msgstr ""
 
 #: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py:128
-#: accounts/report/financial_statements.py:248
+#: accounts/report/financial_statements.py:236
 msgid "Could not retrieve information for {0}."
 msgstr ""
 
@@ -17624,7 +17625,7 @@
 msgid "Could not solve weighted score function. Make sure the formula is valid."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1027
+#: accounts/doctype/sales_invoice/sales_invoice.py:1030
 msgid "Could not update stock, invoice contains drop shipping item."
 msgstr ""
 
@@ -17766,7 +17767,7 @@
 
 #: accounts/doctype/account/account_tree.js:80
 #: accounts/doctype/bank_clearance/bank_clearance.py:79
-#: accounts/doctype/journal_entry/journal_entry.js:308
+#: accounts/doctype/journal_entry/journal_entry.js:298
 msgid "Cr"
 msgstr ""
 
@@ -17836,39 +17837,39 @@
 #: 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:2158
+#: 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:554
+#: 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:566
+#: 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:577
+#: 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:588
-#: selling/doctype/sales_order/sales_order.js:593
+#: selling/doctype/sales_order/sales_order.js:599
 #: selling/doctype/sales_order/sales_order.js:605
-#: selling/doctype/sales_order/sales_order.js:611
-#: selling/doctype/sales_order/sales_order.js:612
-#: selling/doctype/sales_order/sales_order.js:614
-#: selling/doctype/sales_order/sales_order.js:745
-#: selling/doctype/sales_order/sales_order.js:853
-#: stock/doctype/delivery_note/delivery_note.js:98
-#: stock/doctype/delivery_note/delivery_note.js:99
-#: stock/doctype/delivery_note/delivery_note.js:113
+#: 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:185
 #: stock/doctype/delivery_note/delivery_note.js:190
-#: stock/doctype/delivery_note/delivery_note.js:199
-#: stock/doctype/delivery_note/delivery_note.js:205
-#: stock/doctype/delivery_note/delivery_note.js:232
+#: 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:665
+#: 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
@@ -17988,7 +17989,7 @@
 msgid "Create Missing Party"
 msgstr ""
 
-#: manufacturing/doctype/bom_creator/bom_creator.js:139
+#: manufacturing/doctype/bom_creator/bom_creator.js:150
 msgid "Create Multi-level BOM"
 msgstr ""
 
@@ -18086,6 +18087,10 @@
 msgid "Create Sample Retention Stock Entry"
 msgstr ""
 
+#: public/js/utils/serial_no_batch_selector.js:220
+msgid "Create Serial Nos"
+msgstr ""
+
 #: stock/dashboard/item_dashboard.js:271
 #: stock/doctype/material_request/material_request.js:376
 msgid "Create Stock Entry"
@@ -18123,7 +18128,7 @@
 msgid "Create Users"
 msgstr ""
 
-#: stock/doctype/item/item.js:661
+#: stock/doctype/item/item.js:647
 msgid "Create Variant"
 msgstr ""
 
@@ -18234,7 +18239,7 @@
 msgid "Create an Item"
 msgstr ""
 
-#: stock/stock_ledger.py:1595
+#: stock/stock_ledger.py:1684
 msgid "Create an incoming stock transaction for the Item."
 msgstr ""
 
@@ -18299,7 +18304,7 @@
 msgid "Creating Company and Importing Chart of Accounts"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:918
+#: selling/doctype/sales_order/sales_order.js:912
 msgid "Creating Delivery Note ..."
 msgstr ""
 
@@ -18311,7 +18316,7 @@
 msgid "Creating Packing Slip ..."
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:1032
+#: selling/doctype/sales_order/sales_order.js:1026
 msgid "Creating Purchase Order ..."
 msgstr ""
 
@@ -18397,15 +18402,15 @@
 msgid "Credit"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:598
+#: accounts/report/general_ledger/general_ledger.py:601
 msgid "Credit (Transaction)"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:575
+#: accounts/report/general_ledger/general_ledger.py:578
 msgid "Credit ({0})"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:546
+#: accounts/doctype/journal_entry/journal_entry.js:536
 msgid "Credit Account"
 msgstr ""
 
@@ -18507,7 +18512,7 @@
 msgid "Credit Limit"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:545
+#: selling/doctype/customer/customer.py:546
 msgid "Credit Limit Crossed"
 msgstr ""
 
@@ -18548,10 +18553,10 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:173
-#: accounts/report/accounts_receivable/accounts_receivable.py:1047
+#: accounts/report/accounts_receivable/accounts_receivable.py:1070
 #: controllers/sales_and_purchase_return.py:328
 #: setup/setup_wizard/operations/install_fixtures.py:256
-#: stock/doctype/delivery_note/delivery_note.js:93
+#: stock/doctype/delivery_note/delivery_note.js:84
 msgid "Credit Note"
 msgstr ""
 
@@ -18610,16 +18615,16 @@
 msgid "Credit in Company Currency"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:511
-#: selling/doctype/customer/customer.py:565
+#: selling/doctype/customer/customer.py:512
+#: selling/doctype/customer/customer.py:566
 msgid "Credit limit has been crossed for customer {0} ({1}/{2})"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:327
+#: selling/doctype/customer/customer.py:328
 msgid "Credit limit is already defined for the Company {0}"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:564
+#: selling/doctype/customer/customer.py:565
 msgid "Credit limit reached for customer {0}"
 msgstr ""
 
@@ -18696,17 +18701,17 @@
 
 #: accounts/doctype/account/account_tree.js:121
 #: accounts/report/account_balance/account_balance.py:28
-#: accounts/report/accounts_receivable/accounts_receivable.py:1056
+#: accounts/report/accounts_receivable/accounts_receivable.py:1079
 #: 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.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.py:643
+#: 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:629
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:644
 #: accounts/report/payment_ledger/payment_ledger.py:213
 #: accounts/report/profitability_analysis/profitability_analysis.py:175
 #: accounts/report/purchase_register/purchase_register.py:229
@@ -18716,7 +18721,7 @@
 #: 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:178 public/js/utils/unreconcile.js:63
+#: public/js/financial_statements.js:231 public/js/utils/unreconcile.js:63
 #: 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
@@ -19012,8 +19017,8 @@
 msgid "Currency can not be changed after making entries using some other currency"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1346
-#: accounts/doctype/payment_entry/payment_entry.py:1413 accounts/utils.py:2062
+#: accounts/doctype/payment_entry/payment_entry.py:1360
+#: accounts/doctype/payment_entry/payment_entry.py:1422 accounts/utils.py:2091
 msgid "Currency for {0} must be {1}"
 msgstr ""
 
@@ -19021,7 +19026,7 @@
 msgid "Currency of the Closing Account must be {0}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:573
+#: manufacturing/doctype/bom/bom.py:575
 msgid "Currency of the price list {0} must be {1} or {2}"
 msgstr ""
 
@@ -19212,14 +19217,6 @@
 msgid "Custom"
 msgstr ""
 
-#. Option for the 'Section Based On' (Select) field in DocType 'Homepage
-#. Section'
-#. Label of a Section Break field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Custom HTML"
-msgstr ""
-
 #. Label of a Check field in DocType 'Payment Entry'
 #: accounts/doctype/payment_entry/payment_entry.json
 msgctxt "Payment Entry"
@@ -19240,7 +19237,7 @@
 #: 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:214
+#: 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.py:123
 #: accounts/report/pos_register/pos_register.py:186
@@ -19276,7 +19273,7 @@
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:64
 #: setup/doctype/customer_group/customer_group.json
 #: setup/doctype/territory/territory.json
-#: stock/doctype/delivery_note/delivery_note.js:368
+#: 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/report/delayed_item_report/delayed_item_report.py:117
@@ -19333,13 +19330,13 @@
 msgid "Customer"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
 #. Label of a Link in the CRM Workspace
 #. Label of a shortcut in the CRM Workspace
 #. Label of a Link in the Selling Workspace
 #. Label of a Link in the Home Workspace
 #. Label of a shortcut in the Home Workspace
-#: accounts/workspace/accounting/accounting.json crm/workspace/crm/crm.json
+#: accounts/workspace/receivables/receivables.json crm/workspace/crm/crm.json
 #: selling/workspace/selling/selling.json setup/workspace/home/home.json
 msgctxt "Customer"
 msgid "Customer"
@@ -19653,7 +19650,7 @@
 msgid "Customer Code"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1004
+#: accounts/report/accounts_receivable/accounts_receivable.py:1027
 msgid "Customer Contact"
 msgstr ""
 
@@ -19676,10 +19673,10 @@
 msgid "Customer Contact Email"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #. Name of a report
 #. Label of a Link in the Selling Workspace
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 #: selling/report/customer_credit_balance/customer_credit_balance.json
 #: selling/workspace/selling/selling.json
 msgid "Customer Credit Balance"
@@ -19734,13 +19731,13 @@
 
 #. Name of a DocType
 #: accounts/report/accounts_receivable/accounts_receivable.js:118
-#: accounts/report/accounts_receivable/accounts_receivable.py:1074
+#: accounts/report/accounts_receivable/accounts_receivable.py:1097
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:99
 #: 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.py:166
 #: accounts/report/gross_profit/gross_profit.py:328
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:201
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:208
 #: accounts/report/sales_register/sales_register.js:27
 #: accounts/report/sales_register/sales_register.py:200
 #: public/js/sales_trends_filters.js:26
@@ -19912,7 +19909,7 @@
 msgid "Customer Group Name"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1174
+#: accounts/report/accounts_receivable/accounts_receivable.py:1197
 msgid "Customer Group: {0} does not exist"
 msgstr ""
 
@@ -19933,7 +19930,7 @@
 msgid "Customer Items"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1065
+#: accounts/report/accounts_receivable/accounts_receivable.py:1088
 msgid "Customer LPO"
 msgstr ""
 
@@ -19942,9 +19939,9 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Customer Ledger Summary"
 msgstr ""
 
@@ -19954,11 +19951,11 @@
 msgid "Customer Mobile No"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1011
+#: accounts/report/accounts_receivable/accounts_receivable.py:1034
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:160
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.js:92
 #: 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:220
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:227
 #: accounts/report/sales_register/sales_register.py:191
 #: selling/report/customer_credit_balance/customer_credit_balance.py:74
 #: selling/report/inactive_customers/inactive_customers.py:79
@@ -20155,7 +20152,7 @@
 msgid "Customer Provided"
 msgstr ""
 
-#: setup/doctype/company/company.py:358
+#: setup/doctype/company/company.py:359
 msgid "Customer Service"
 msgstr ""
 
@@ -20206,8 +20203,8 @@
 msgid "Customer required for 'Customerwise Discount'"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:983
-#: selling/doctype/sales_order/sales_order.py:332
+#: accounts/doctype/sales_invoice/sales_invoice.py:986
+#: selling/doctype/sales_order/sales_order.py:335
 #: stock/doctype/delivery_note/delivery_note.py:354
 msgid "Customer {0} does not belong to project {1}"
 msgstr ""
@@ -20328,10 +20325,6 @@
 msgid "Customerwise Discount"
 msgstr ""
 
-#: portal/doctype/homepage/homepage.js:9
-msgid "Customize Homepage Sections"
-msgstr ""
-
 #. Name of a DocType
 #: stock/doctype/customs_tariff_number/customs_tariff_number.json
 msgid "Customs Tariff Number"
@@ -20504,7 +20497,7 @@
 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:552
+#: accounts/doctype/journal_entry/journal_entry.js:542
 #: 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
@@ -20772,7 +20765,7 @@
 msgid "Date of Joining"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:262
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:267
 msgid "Date of Transaction"
 msgstr ""
 
@@ -20910,7 +20903,7 @@
 msgid "Dear"
 msgstr ""
 
-#: stock/reorder_item.py:246
+#: stock/reorder_item.py:285
 msgid "Dear System Manager,"
 msgstr ""
 
@@ -20937,15 +20930,15 @@
 msgid "Debit"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:591
+#: accounts/report/general_ledger/general_ledger.py:594
 msgid "Debit (Transaction)"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:569
+#: accounts/report/general_ledger/general_ledger.py:572
 msgid "Debit ({0})"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:540
+#: accounts/doctype/journal_entry/journal_entry.js:530
 msgid "Debit Account"
 msgstr ""
 
@@ -20980,7 +20973,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:175
-#: accounts/report/accounts_receivable/accounts_receivable.py:1050
+#: accounts/report/accounts_receivable/accounts_receivable.py:1073
 #: controllers/sales_and_purchase_return.py:332
 #: setup/setup_wizard/operations/install_fixtures.py:257
 #: stock/doctype/purchase_receipt/purchase_receipt.js:73
@@ -21022,11 +21015,11 @@
 msgid "Debit To"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:864
+#: accounts/doctype/sales_invoice/sales_invoice.py:867
 msgid "Debit To is required"
 msgstr ""
 
-#: accounts/general_ledger.py:466
+#: accounts/general_ledger.py:465
 msgid "Debit and Credit not equal for {0} #{1}. Difference is {2}."
 msgstr ""
 
@@ -21066,7 +21059,7 @@
 msgid "Decapitalized"
 msgstr ""
 
-#: public/js/utils/sales_common.js:435
+#: public/js/utils/sales_common.js:444
 msgid "Declare Lost"
 msgstr ""
 
@@ -21106,12 +21099,6 @@
 msgid "Default"
 msgstr ""
 
-#. Option for the 'Hero Section Based On' (Select) field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Default"
-msgstr ""
-
 #. Label of a Check field in DocType 'POS Payment Method'
 #: accounts/doctype/pos_payment_method/pos_payment_method.json
 msgctxt "POS Payment Method"
@@ -21208,7 +21195,7 @@
 msgid "Default BOM for {0} not found"
 msgstr ""
 
-#: controllers/accounts_controller.py:3157
+#: controllers/accounts_controller.py:3216
 msgid "Default BOM not found for FG Item {0}"
 msgstr ""
 
@@ -21885,7 +21872,7 @@
 msgid "Deferred Revenue and Expense"
 msgstr ""
 
-#: accounts/deferred_revenue.py:577
+#: accounts/deferred_revenue.py:569
 msgid "Deferred accounting failed for some invoices:"
 msgstr ""
 
@@ -21942,7 +21929,7 @@
 msgid "Delayed Tasks Summary"
 msgstr ""
 
-#: setup/doctype/company/company.js:171
+#: setup/doctype/company/company.js:176
 msgid "Delete"
 msgstr ""
 
@@ -21966,7 +21953,7 @@
 msgid "Delete Transactions"
 msgstr ""
 
-#: setup/doctype/company/company.js:171
+#: setup/doctype/company/company.js:176
 msgid "Delete all the Transactions for this Company"
 msgstr ""
 
@@ -22028,9 +22015,9 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
 msgid "Delivered Items To Be Billed"
 msgstr ""
 
@@ -22130,10 +22117,10 @@
 #: accounts/doctype/sales_invoice/sales_invoice.js:281
 #: accounts/doctype/sales_invoice/sales_invoice_list.js:27
 #: 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:279
+#: 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:565
-#: selling/doctype/sales_order/sales_order_list.js:55
+#: selling/doctype/sales_order/sales_order.js:559
+#: selling/doctype/sales_order/sales_order_list.js:57
 #: stock/doctype/delivery_note/delivery_note.json
 #: stock/doctype/delivery_trip/delivery_trip.js:51
 #: stock/doctype/pick_list/pick_list.js:102
@@ -22253,7 +22240,7 @@
 msgid "Delivery Note Trends"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1145
+#: accounts/doctype/sales_invoice/sales_invoice.py:1148
 msgid "Delivery Note {0} is not submitted"
 msgstr ""
 
@@ -22261,7 +22248,7 @@
 msgid "Delivery Note(s) created for the Pick List"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1069
+#: accounts/report/accounts_receivable/accounts_receivable.py:1092
 #: stock/doctype/delivery_trip/delivery_trip.js:67
 msgid "Delivery Notes"
 msgstr ""
@@ -22309,7 +22296,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: stock/doctype/delivery_note/delivery_note.js:189
+#: stock/doctype/delivery_note/delivery_note.js:180
 #: stock/doctype/delivery_trip/delivery_trip.json
 msgid "Delivery Trip"
 msgstr ""
@@ -22341,7 +22328,7 @@
 msgid "Delivery to"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:348
+#: selling/doctype/sales_order/sales_order.py:351
 msgid "Delivery warehouse required for stock item {0}"
 msgstr ""
 
@@ -22494,15 +22481,12 @@
 msgid "Depreciate based on shifts"
 msgstr ""
 
+#: assets/report/fixed_asset_register/fixed_asset_register.py:205
 #: assets/report/fixed_asset_register/fixed_asset_register.py:393
 #: assets/report/fixed_asset_register/fixed_asset_register.py:454
 msgid "Depreciated Amount"
 msgstr ""
 
-#: assets/report/fixed_asset_register/fixed_asset_register.py:205
-msgid "Depreciatied Amount"
-msgstr ""
-
 #: 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
@@ -22625,15 +22609,15 @@
 msgid "Depreciation Posting Date should not be equal to Available for Use Date."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:490
+#: assets/doctype/asset/asset.py:491
 msgid "Depreciation Row {0}: Expected value after useful life must be greater than or equal to {1}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:459
+#: assets/doctype/asset/asset.py:460
 msgid "Depreciation Row {0}: Next Depreciation Date cannot be before Available-for-use Date"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:450
+#: assets/doctype/asset/asset.py:451
 msgid "Depreciation Row {0}: Next Depreciation Date cannot be before Purchase Date"
 msgstr ""
 
@@ -22668,21 +22652,21 @@
 msgid "Depreciation Schedule View"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:346
+#: assets/doctype/asset/asset.py:347
 msgid "Depreciation cannot be calculated for fully depreciated assets"
 msgstr ""
 
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:71
 #: accounts/report/gross_profit/gross_profit.py:245
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:175
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:185
+#: 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/report/bom_stock_calculated/bom_stock_calculated.py:58
 #: 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:2108
+#: public/js/controllers/transaction.js:2138
 #: selling/doctype/quotation/quotation.js:279
 #: 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
@@ -22799,12 +22783,6 @@
 msgid "Description"
 msgstr ""
 
-#. Label of a Text field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Description"
-msgstr ""
-
 #. Label of a Long Text field in DocType 'Incoterm'
 #: setup/doctype/incoterm/incoterm.json
 msgctxt "Incoterm"
@@ -23266,7 +23244,7 @@
 msgid "Desk User"
 msgstr ""
 
-#: public/js/utils/sales_common.js:414
+#: public/js/utils/sales_common.js:423
 msgid "Detailed Reason"
 msgstr ""
 
@@ -23385,7 +23363,7 @@
 msgid "Difference (Dr - Cr)"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:266
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:287
 msgid "Difference Account"
 msgstr ""
 
@@ -23418,11 +23396,11 @@
 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:713
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:714
 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:280
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:301
 msgid "Difference Amount"
 msgstr ""
 
@@ -23463,7 +23441,7 @@
 msgid "Difference Amount (Company Currency)"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:183
+#: accounts/doctype/payment_entry/payment_entry.py:185
 msgid "Difference Amount must be zero"
 msgstr ""
 
@@ -23486,7 +23464,7 @@
 msgid "Difference Value"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.js:375
+#: stock/doctype/delivery_note/delivery_note.js:366
 msgid "Different 'Source Warehouse' and 'Target Warehouse' can be set for each row."
 msgstr ""
 
@@ -23506,7 +23484,7 @@
 msgid "Dimension Details"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:98
+#: accounts/report/budget_variance_report/budget_variance_report.js:94
 msgid "Dimension Filter"
 msgstr ""
 
@@ -23829,15 +23807,15 @@
 msgid "Disabled Account Selected"
 msgstr ""
 
-#: stock/utils.py:407
+#: stock/utils.py:454
 msgid "Disabled Warehouse {0} cannot be used for this transaction."
 msgstr ""
 
-#: controllers/accounts_controller.py:547
+#: controllers/accounts_controller.py:550
 msgid "Disabled pricing rules since this {} is an internal transfer"
 msgstr ""
 
-#: controllers/accounts_controller.py:561
+#: controllers/accounts_controller.py:564
 msgid "Disabled tax included prices since this {} is an internal transfer"
 msgstr ""
 
@@ -24140,7 +24118,7 @@
 msgid "Discount must be less than 100"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:2509
+#: accounts/doctype/payment_entry/payment_entry.py:2532
 msgid "Discount of {} applied as per Payment Term"
 msgstr ""
 
@@ -24226,7 +24204,7 @@
 msgid "Dislikes"
 msgstr ""
 
-#: setup/doctype/company/company.py:352
+#: setup/doctype/company/company.py:353
 msgid "Dispatch"
 msgstr ""
 
@@ -24627,7 +24605,7 @@
 msgid "Download Backups"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:190
+#: public/js/utils/serial_no_batch_selector.js:237
 msgid "Download CSV Template"
 msgstr ""
 
@@ -24705,7 +24683,7 @@
 
 #: accounts/doctype/account/account_tree.js:80
 #: accounts/doctype/bank_clearance/bank_clearance.py:79
-#: accounts/doctype/journal_entry/journal_entry.js:308
+#: accounts/doctype/journal_entry/journal_entry.js:298
 msgid "Dr"
 msgstr ""
 
@@ -24924,11 +24902,6 @@
 msgid "Draft"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry_list.js:5
-msgctxt "docstatus,=,0"
-msgid "Draft"
-msgstr ""
-
 #. Name of a DocType
 #: setup/doctype/driver/driver.json
 msgid "Driver"
@@ -25103,13 +25076,21 @@
 msgid "Due Date cannot be before Posting / Supplier Invoice Date"
 msgstr ""
 
-#: controllers/accounts_controller.py:573
+#: controllers/accounts_controller.py:576
 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/workspace/receivables/receivables.json
+msgid "Dunning"
+msgstr ""
+
+#. Label of a Link in the Receivables Workspace
+#: accounts/workspace/receivables/receivables.json
+msgctxt "Dunning"
 msgid "Dunning"
 msgstr ""
 
@@ -25172,7 +25153,9 @@
 msgstr ""
 
 #. Label of a Data field in DocType 'Dunning Type'
+#. Label of a Link in the Receivables Workspace
 #: accounts/doctype/dunning_type/dunning_type.json
+#: accounts/workspace/receivables/receivables.json
 msgctxt "Dunning Type"
 msgid "Dunning Type"
 msgstr ""
@@ -25193,7 +25176,7 @@
 msgid "Duplicate Entry. Please check Authorization Rule {0}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:300
+#: assets/doctype/asset/asset.py:301
 msgid "Duplicate Finance Book"
 msgstr ""
 
@@ -25211,7 +25194,7 @@
 msgstr ""
 
 #: accounts/doctype/pos_profile/pos_profile.py:135
-msgid "Duplicate customer group found in the cutomer group table"
+msgid "Duplicate customer group found in the customer group table"
 msgstr ""
 
 #: stock/doctype/item_manufacturer/item_manufacturer.py:44
@@ -25341,7 +25324,7 @@
 msgid "Edit Full Form"
 msgstr ""
 
-#: controllers/item_variant.py:154
+#: controllers/item_variant.py:158
 msgid "Edit Not Allowed"
 msgstr ""
 
@@ -25349,7 +25332,7 @@
 msgid "Edit Note"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.js:379
+#: stock/doctype/delivery_note/delivery_note.js:370
 msgid "Edit Posting Date and Time"
 msgstr ""
 
@@ -25477,7 +25460,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:27
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:40
-msgid "Electronic Equipments"
+msgid "Electronic Equipment"
 msgstr ""
 
 #. Name of a report
@@ -26153,7 +26136,7 @@
 #: accounts/report/payment_ledger/payment_ledger.js:24
 #: assets/report/fixed_asset_register/fixed_asset_register.js:75
 #: projects/report/project_summary/project_summary.py:74
-#: public/js/financial_statements.js:138 public/js/setup_wizard.js:42
+#: 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
 #: templates/pages/projects.html:47
 msgid "End Date"
@@ -26255,11 +26238,11 @@
 #: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:56
 #: accounts/report/financial_ratios/financial_ratios.js:25
 #: assets/report/fixed_asset_register/fixed_asset_register.js:90
-#: public/js/financial_statements.js:153
+#: public/js/financial_statements.js:206
 msgid "End Year"
 msgstr ""
 
-#: accounts/report/financial_statements.py:137
+#: accounts/report/financial_statements.py:125
 msgid "End Year cannot be before Start Year"
 msgstr ""
 
@@ -26305,6 +26288,10 @@
 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
+msgid "Enter Serial Nos"
+msgstr ""
+
 #: stock/doctype/material_request/material_request.js:313
 msgid "Enter Supplier"
 msgstr ""
@@ -26333,7 +26320,7 @@
 msgid "Enter amount to be redeemed."
 msgstr ""
 
-#: stock/doctype/item/item.js:818
+#: stock/doctype/item/item.js:804
 msgid "Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field."
 msgstr ""
 
@@ -26345,7 +26332,7 @@
 msgid "Enter customer's phone number"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:344
+#: assets/doctype/asset/asset.py:345
 msgid "Enter depreciation details"
 msgstr ""
 
@@ -26353,6 +26340,10 @@
 msgid "Enter discount percentage."
 msgstr ""
 
+#: public/js/utils/serial_no_batch_selector.js:211
+msgid "Enter each serial no in a new line"
+msgstr ""
+
 #. Description of the 'Campaign' (Link) field in DocType 'Opportunity'
 #: crm/doctype/opportunity/opportunity.json
 msgctxt "Opportunity"
@@ -26360,7 +26351,7 @@
 msgstr ""
 
 #: accounts/doctype/bank_guarantee/bank_guarantee.py:51
-msgid "Enter the Bank Guarantee Number before submittting."
+msgid "Enter the Bank Guarantee Number before submitting."
 msgstr ""
 
 #: manufacturing/doctype/routing/routing.js:82
@@ -26371,14 +26362,14 @@
 msgstr ""
 
 #: accounts/doctype/bank_guarantee/bank_guarantee.py:53
-msgid "Enter the name of the Beneficiary before submittting."
+msgid "Enter the name of the Beneficiary before submitting."
 msgstr ""
 
 #: accounts/doctype/bank_guarantee/bank_guarantee.py:55
-msgid "Enter the name of the bank or lending institution before submittting."
+msgid "Enter the name of the bank or lending institution before submitting."
 msgstr ""
 
-#: stock/doctype/item/item.js:838
+#: stock/doctype/item/item.js:824
 msgid "Enter the opening stock units."
 msgstr ""
 
@@ -26405,7 +26396,7 @@
 msgid "Entity"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:200
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:205
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:123
 msgid "Entity Type"
 msgstr ""
@@ -26456,7 +26447,7 @@
 msgid "Equity/Liability Account"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:395
+#: accounts/doctype/payment_request/payment_request.py:410
 #: manufacturing/doctype/job_card/job_card.py:773
 #: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:197
 msgid "Error"
@@ -26529,7 +26520,7 @@
 msgstr ""
 
 #: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py:273
-msgid "Error Occured"
+msgid "Error Occurred"
 msgstr ""
 
 #: telephony/doctype/call_log/call_log.py:195
@@ -26541,14 +26532,14 @@
 msgstr ""
 
 #: erpnext_integrations/doctype/tally_migration/tally_migration.py:157
-msgid "Error occured while parsing Chart of Accounts: Please make sure that no two accounts have the same name"
+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
 msgid "Error while posting depreciation entries"
 msgstr ""
 
-#: accounts/deferred_revenue.py:575
+#: accounts/deferred_revenue.py:567
 msgid "Error while processing deferred accounting for {0}"
 msgstr ""
 
@@ -26556,7 +26547,7 @@
 msgid "Error while reposting item valuation"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:709
+#: accounts/doctype/payment_entry/payment_entry.js:720
 msgid "Error: {0} is mandatory field"
 msgstr ""
 
@@ -26625,7 +26616,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:1887
+#: stock/stock_ledger.py:1976
 msgid "Example: Serial No {0} reserved in {1}."
 msgstr ""
 
@@ -26663,7 +26654,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:516
+#: setup/doctype/company/company.py:517
 msgid "Exchange Gain/Loss"
 msgstr ""
 
@@ -26685,8 +26676,8 @@
 msgid "Exchange Gain/Loss"
 msgstr ""
 
-#: controllers/accounts_controller.py:1279
-#: controllers/accounts_controller.py:1359
+#: controllers/accounts_controller.py:1313
+#: controllers/accounts_controller.py:1394
 msgid "Exchange Gain/Loss amount has been booked through {0}"
 msgstr ""
 
@@ -26979,7 +26970,7 @@
 msgid "Expected Delivery Date"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:313
+#: selling/doctype/sales_order/sales_order.py:316
 msgid "Expected Delivery Date should be after Sales Order Date"
 msgstr ""
 
@@ -27101,7 +27092,7 @@
 msgid "Expense"
 msgstr ""
 
-#: controllers/stock_controller.py:367
+#: controllers/stock_controller.py:359
 msgid "Expense / Difference account ({0}) must be a 'Profit or Loss' account"
 msgstr ""
 
@@ -27188,7 +27179,7 @@
 msgid "Expense Account"
 msgstr ""
 
-#: controllers/stock_controller.py:347
+#: controllers/stock_controller.py:339
 msgid "Expense Account Missing"
 msgstr ""
 
@@ -27594,7 +27585,7 @@
 msgid "Failed to setup defaults"
 msgstr ""
 
-#: setup/doctype/company/company.py:698
+#: setup/doctype/company/company.py:699
 msgid "Failed to setup defaults for country {0}. Please contact support."
 msgstr ""
 
@@ -27675,7 +27666,7 @@
 msgid "Fees"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:260
+#: public/js/utils/serial_no_batch_selector.js:332
 msgid "Fetch Based On"
 msgstr ""
 
@@ -27725,7 +27716,7 @@
 msgstr ""
 
 #: accounts/doctype/dunning/dunning.js:131
-#: public/js/controllers/transaction.js:1082
+#: public/js/controllers/transaction.js:1083
 msgid "Fetching exchange rates ..."
 msgstr ""
 
@@ -27804,7 +27795,7 @@
 
 #: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:17
 #: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:17
-#: public/js/financial_statements.js:114
+#: public/js/financial_statements.js:167
 msgid "Filter Based On"
 msgstr ""
 
@@ -27840,7 +27831,7 @@
 msgid "Filter on Payment"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:685
+#: accounts/doctype/payment_entry/payment_entry.js:696
 #: public/js/bank_reconciliation_tool/dialog_manager.js:192
 msgid "Filters"
 msgstr ""
@@ -27907,7 +27898,7 @@
 #: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:32
 #: accounts/report/trial_balance/trial_balance.js:70
 #: assets/report/fixed_asset_register/fixed_asset_register.js:49
-#: public/js/financial_statements.js:108
+#: public/js/financial_statements.js:161
 msgid "Finance Book"
 msgstr ""
 
@@ -28025,12 +28016,17 @@
 msgid "Financial Ratios"
 msgstr ""
 
+#. Name of a Workspace
+#: accounts/workspace/financial_reports/financial_reports.json
+msgid "Financial Reports"
+msgstr ""
+
 #. Title of an Onboarding Step
-#. Label of a Card Break in the Accounting Workspace
+#. Label of a Card Break in the Financial Reports Workspace
 #: accounts/doctype/account/account_tree.js:158
 #: accounts/onboarding_step/financial_statements/financial_statements.json
-#: accounts/workspace/accounting/accounting.json
-#: public/js/financial_statements.js:77
+#: accounts/workspace/financial_reports/financial_reports.json
+#: public/js/financial_statements.js:129
 msgid "Financial Statements"
 msgstr ""
 
@@ -28111,15 +28107,15 @@
 msgid "Finished Good Item Quantity"
 msgstr ""
 
-#: controllers/accounts_controller.py:3145
+#: controllers/accounts_controller.py:3204
 msgid "Finished Good Item is not specified for service item {0}"
 msgstr ""
 
-#: controllers/accounts_controller.py:3160
+#: controllers/accounts_controller.py:3219
 msgid "Finished Good Item {0} Qty can not be zero"
 msgstr ""
 
-#: controllers/accounts_controller.py:3154
+#: controllers/accounts_controller.py:3213
 msgid "Finished Good Item {0} must be a sub-contracted item"
 msgstr ""
 
@@ -28163,7 +28159,7 @@
 msgid "Finished Good {0} must be a sub-contracted item."
 msgstr ""
 
-#: setup/doctype/company/company.py:261
+#: setup/doctype/company/company.py:262
 msgid "Finished Goods"
 msgstr ""
 
@@ -28443,7 +28439,7 @@
 msgid "Following Material Requests have been raised automatically based on Item's re-order level"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:739
+#: selling/doctype/customer/customer.py:740
 msgid "Following fields are mandatory to create address:"
 msgstr ""
 
@@ -28459,7 +28455,7 @@
 msgid "For"
 msgstr ""
 
-#: public/js/utils/sales_common.js:265
+#: public/js/utils/sales_common.js:274
 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 ""
 
@@ -28479,6 +28475,10 @@
 msgid "For Default Supplier (Optional)"
 msgstr ""
 
+#: controllers/stock_controller.py:770
+msgid "For Item {0} cannot be received more than {1} qty against the {2} {3}"
+msgstr ""
+
 #. Label of a Link field in DocType 'Job Card'
 #: manufacturing/doctype/job_card/job_card.json
 msgctxt "Job Card"
@@ -28525,7 +28525,7 @@
 msgstr ""
 
 #: manufacturing/doctype/production_plan/production_plan.js:331
-#: selling/doctype/sales_order/sales_order.js:814
+#: selling/doctype/sales_order/sales_order.js:808
 #: stock/doctype/material_request/material_request.js:247
 msgid "For Warehouse"
 msgstr ""
@@ -28540,15 +28540,15 @@
 msgid "For Warehouse is required before Submit"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:112
+#: public/js/utils/serial_no_batch_selector.js:116
 msgid "For Work Order"
 msgstr ""
 
-#: controllers/status_updater.py:229
+#: controllers/status_updater.py:238
 msgid "For an item {0}, quantity must be negative number"
 msgstr ""
 
-#: controllers/status_updater.py:226
+#: controllers/status_updater.py:235
 msgid "For an item {0}, quantity must be positive number"
 msgstr ""
 
@@ -28578,7 +28578,7 @@
 msgid "For individual supplier"
 msgstr ""
 
-#: controllers/status_updater.py:234
+#: controllers/status_updater.py:243
 msgid "For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}"
 msgstr ""
 
@@ -28587,7 +28587,7 @@
 msgstr ""
 
 #: manufacturing/doctype/work_order/work_order.py:1523
-msgid "For operation {0}: Quantity ({1}) can not be greter than pending quantity({2})"
+msgid "For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})"
 msgstr ""
 
 #: stock/doctype/stock_entry/stock_entry.py:1302
@@ -28600,8 +28600,8 @@
 msgid "For reference"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1218
-#: public/js/controllers/accounts.js:181
+#: accounts/doctype/payment_entry/payment_entry.js:1229
+#: 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 ""
 
@@ -29041,7 +29041,7 @@
 msgid "From Date and To Date are Mandatory"
 msgstr ""
 
-#: accounts/report/financial_statements.py:142
+#: accounts/report/financial_statements.py:130
 msgid "From Date and To Date are mandatory"
 msgstr ""
 
@@ -29530,9 +29530,23 @@
 msgid "Fully Depreciated"
 msgstr ""
 
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Purchase
+#. Order'
+#: buying/doctype/purchase_order/purchase_order.json
+msgctxt "Purchase Order"
+msgid "Fully Paid"
+msgstr ""
+
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Sales
+#. Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "Fully Paid"
+msgstr ""
+
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:28
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:41
-msgid "Furnitures and Fixtures"
+msgid "Furniture and Fixtures"
 msgstr ""
 
 #: accounts/doctype/account/account_tree.js:111
@@ -29548,13 +29562,13 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:185
-#: accounts/report/accounts_receivable/accounts_receivable.py:1061
+#: accounts/report/accounts_receivable/accounts_receivable.py:1084
 #: 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:1060
+#: accounts/report/accounts_receivable/accounts_receivable.py:1083
 msgid "Future Payment Ref"
 msgstr ""
 
@@ -29574,7 +29588,7 @@
 
 #. Name of a DocType
 #: accounts/doctype/gl_entry/gl_entry.json
-#: accounts/report/general_ledger/general_ledger.py:554
+#: accounts/report/general_ledger/general_ledger.py:557
 msgid "GL Entry"
 msgstr ""
 
@@ -29635,7 +29649,7 @@
 
 #: 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:524
+#: setup/doctype/company/company.py:525
 msgid "Gain/Loss on Asset Disposal"
 msgstr ""
 
@@ -29673,13 +29687,13 @@
 
 #. Description of a report in the Onboarding Step 'Financial Statements'
 #. Name of a report
-#. Label of a Card Break in the Accounting Workspace
-#. Label of a Link in the Accounting Workspace
 #. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/doctype/account/account.js:95
 #: accounts/onboarding_step/financial_statements/financial_statements.json
 #: accounts/report/general_ledger/general_ledger.json
 #: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "General Ledger"
 msgstr ""
 
@@ -29804,11 +29818,8 @@
 msgid "Get Finished Goods for Manufacture"
 msgstr ""
 
-#: accounts/doctype/invoice_discounting/invoice_discounting.js:157
-msgid "Get Invocies"
-msgstr ""
-
 #: accounts/doctype/invoice_discounting/invoice_discounting.js:55
+#: accounts/doctype/invoice_discounting/invoice_discounting.js:157
 msgid "Get Invoices"
 msgstr ""
 
@@ -29854,9 +29865,9 @@
 #: 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:129
-#: selling/doctype/sales_order/sales_order.js:649
-#: stock/doctype/delivery_note/delivery_note.js:169
+#: 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
@@ -30090,7 +30101,7 @@
 msgid "Goods"
 msgstr ""
 
-#: setup/doctype/company/company.py:262
+#: setup/doctype/company/company.py:263
 #: stock/doctype/stock_entry/stock_entry_list.js:14
 msgid "Goods In Transit"
 msgstr ""
@@ -30099,7 +30110,7 @@
 msgid "Goods Transferred"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1622
+#: stock/doctype/stock_entry/stock_entry.py:1618
 msgid "Goods are already received against the outward entry {0}"
 msgstr ""
 
@@ -30123,7 +30134,7 @@
 #: 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:248
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:253
 #: templates/includes/order/order_taxes.html:105 templates/pages/rfq.html:58
 msgid "Grand Total"
 msgstr ""
@@ -30410,10 +30421,10 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/gross_profit/gross_profit.json
 #: accounts/report/gross_profit/gross_profit.py:287
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Gross Profit"
 msgstr ""
 
@@ -30454,11 +30465,11 @@
 msgid "Gross Purchase Amount"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:316
+#: assets/doctype/asset/asset.py:317
 msgid "Gross Purchase Amount is mandatory"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:361
+#: assets/doctype/asset/asset.py:362
 msgid "Gross Purchase Amount should be <b>equal</b> to purchase amount of one single Asset."
 msgstr ""
 
@@ -30583,7 +30594,7 @@
 msgid "Group by Voucher (Consolidated)"
 msgstr ""
 
-#: stock/utils.py:401
+#: stock/utils.py:448
 msgid "Group node warehouse is not allowed to select for transactions"
 msgstr ""
 
@@ -30645,6 +30656,11 @@
 msgid "Groups"
 msgstr ""
 
+#: accounts/report/balance_sheet/balance_sheet.js:18
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:18
+msgid "Growth View"
+msgstr ""
+
 #: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:245
 #: stock/report/stock_ledger_variance/stock_ledger_variance.py:169
 msgid "H - F"
@@ -30690,7 +30706,7 @@
 #: 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:166
+#: public/js/financial_statements.js:219
 #: 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
@@ -30915,7 +30931,7 @@
 msgid "Here are the error logs for the aforementioned failed depreciation entries: {0}"
 msgstr ""
 
-#: stock/stock_ledger.py:1580
+#: stock/stock_ledger.py:1669
 msgid "Here are the options to proceed:"
 msgstr ""
 
@@ -30940,24 +30956,6 @@
 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 ""
 
-#. Label of a Attach Image field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Hero Image"
-msgstr ""
-
-#. Label of a Section Break field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Hero Section"
-msgstr ""
-
-#. Label of a Select field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Hero Section Based On"
-msgstr ""
-
 #: stock/doctype/repost_item_valuation/repost_item_valuation.py:391
 msgid "Hi,"
 msgstr ""
@@ -31021,7 +31019,7 @@
 msgstr ""
 
 #: buying/doctype/purchase_order/purchase_order.js:288
-#: selling/doctype/sales_order/sales_order.js:545
+#: selling/doctype/sales_order/sales_order.js:539
 msgid "Hold"
 msgstr ""
 
@@ -31105,34 +31103,6 @@
 msgid "Home"
 msgstr ""
 
-#. Name of a DocType
-#: portal/doctype/homepage/homepage.json
-msgid "Homepage"
-msgstr ""
-
-#. Name of a DocType
-#: portal/doctype/homepage_section/homepage_section.json
-msgid "Homepage Section"
-msgstr ""
-
-#. Option for the 'Hero Section Based On' (Select) field in DocType 'Homepage'
-#. Label of a Link field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Homepage Section"
-msgstr ""
-
-#. Name of a DocType
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgid "Homepage Section Card"
-msgstr ""
-
-#. Label of a Link field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Homepage Slideshow"
-msgstr ""
-
 #. Label of a Currency field in DocType 'BOM Operation'
 #: manufacturing/doctype/bom_operation/bom_operation.json
 msgctxt "BOM Operation"
@@ -31197,7 +31167,7 @@
 msgid "Hrs"
 msgstr ""
 
-#: setup/doctype/company/company.py:364
+#: setup/doctype/company/company.py:365
 msgid "Human Resources"
 msgstr ""
 
@@ -31468,7 +31438,7 @@
 msgid "If more than one package of the same type (for print)"
 msgstr ""
 
-#: stock/stock_ledger.py:1590
+#: stock/stock_ledger.py:1679
 msgid "If not, you can Cancel / Submit this entry"
 msgstr ""
 
@@ -31496,7 +31466,7 @@
 msgid "If the account is frozen, entries are allowed to restricted users."
 msgstr ""
 
-#: stock/stock_ledger.py:1583
+#: stock/stock_ledger.py:1672
 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 ""
 
@@ -31546,7 +31516,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:636
+#: accounts/doctype/payment_entry/payment_entry.py:638
 msgid "If this is undesirable please cancel the corresponding Payment Entry."
 msgstr ""
 
@@ -31572,7 +31542,7 @@
 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:828
+#: stock/doctype/item/item.js:814
 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 ""
 
@@ -31656,7 +31626,7 @@
 msgid "Ignore Exchange Rate Revaluation Journals"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:806
+#: selling/doctype/sales_order/sales_order.js:800
 msgid "Ignore Existing Ordered Qty"
 msgstr ""
 
@@ -31814,12 +31784,6 @@
 msgid "Image"
 msgstr ""
 
-#. Label of a Attach Image field in DocType 'Homepage Section Card'
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgctxt "Homepage Section Card"
-msgid "Image"
-msgstr ""
-
 #. Label of a Attach Image field in DocType 'Item'
 #: stock/doctype/item/item.json
 msgctxt "Item"
@@ -32144,6 +32108,11 @@
 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
+msgid "Import Using CSV file"
+msgstr ""
+
 #. Label of a HTML field in DocType 'Bank Statement Import'
 #: accounts/doctype/bank_statement_import/bank_statement_import.json
 msgctxt "Bank Statement Import"
@@ -32369,6 +32338,12 @@
 msgid "In Words"
 msgstr ""
 
+#. Label of a Small Text field in DocType 'Payment Entry'
+#: accounts/doctype/payment_entry/payment_entry.json
+msgctxt "Payment Entry"
+msgid "In Words"
+msgstr ""
+
 #. Label of a Data field in DocType 'Purchase Invoice'
 #: accounts/doctype/purchase_invoice/purchase_invoice.json
 msgctxt "Purchase Invoice"
@@ -32429,6 +32404,12 @@
 msgid "In Words (Company Currency)"
 msgstr ""
 
+#. Label of a Small Text field in DocType 'Payment Entry'
+#: accounts/doctype/payment_entry/payment_entry.json
+msgctxt "Payment Entry"
+msgid "In Words (Company Currency)"
+msgstr ""
+
 #. Label of a Data field in DocType 'Purchase Invoice'
 #: accounts/doctype/purchase_invoice/purchase_invoice.json
 msgctxt "Purchase Invoice"
@@ -32541,7 +32522,7 @@
 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:853
+#: stock/doctype/item/item.js:839
 msgid "In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc."
 msgstr ""
 
@@ -32602,7 +32583,7 @@
 msgid "Include Default FB Assets"
 msgstr ""
 
-#: accounts/report/balance_sheet/balance_sheet.js:20
+#: 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/general_ledger/general_ledger.js:183
@@ -32618,7 +32599,7 @@
 msgid "Include Expired"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:804
+#: selling/doctype/sales_order/sales_order.js:798
 msgid "Include Exploded Items"
 msgstr ""
 
@@ -32771,6 +32752,7 @@
 #: accounts/report/account_balance/account_balance.js:28
 #: 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
 msgid "Income"
 msgstr ""
 
@@ -32794,7 +32776,8 @@
 msgstr ""
 
 #: accounts/report/account_balance/account_balance.js:51
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:286
+#: 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"
 msgstr ""
 
@@ -32916,11 +32899,11 @@
 msgid "Incorrect Balance Qty After Transaction"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:706
+#: controllers/subcontracting_controller.py:710
 msgid "Incorrect Batch Consumed"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:277
+#: assets/doctype/asset/asset.py:278
 #: assets/doctype/asset_value_adjustment/asset_value_adjustment.py:74
 msgid "Incorrect Date"
 msgstr ""
@@ -32934,7 +32917,7 @@
 msgid "Incorrect Movement Purpose"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:293
+#: accounts/doctype/payment_entry/payment_entry.py:295
 msgid "Incorrect Payment Type"
 msgstr ""
 
@@ -32943,7 +32926,7 @@
 msgid "Incorrect Serial No Valuation"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:719
+#: controllers/subcontracting_controller.py:723
 msgid "Incorrect Serial Number Consumed"
 msgstr ""
 
@@ -33051,7 +33034,7 @@
 msgid "Increment cannot be 0"
 msgstr ""
 
-#: controllers/item_variant.py:110
+#: controllers/item_variant.py:114
 msgid "Increment for Attribute {0} cannot be 0"
 msgstr ""
 
@@ -33177,6 +33160,13 @@
 msgid "Initiated"
 msgstr ""
 
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Purchase
+#. Order'
+#: buying/doctype/purchase_order/purchase_order.json
+msgctxt "Purchase Order"
+msgid "Initiated"
+msgstr ""
+
 #. Option for the 'Import Type' (Select) field in DocType 'Bank Statement
 #. Import'
 #: accounts/doctype/bank_statement_import/bank_statement_import.json
@@ -33195,11 +33185,11 @@
 msgid "Inspected By"
 msgstr ""
 
-#: controllers/stock_controller.py:678
+#: controllers/stock_controller.py:666
 msgid "Inspection Rejected"
 msgstr ""
 
-#: controllers/stock_controller.py:648 controllers/stock_controller.py:650
+#: controllers/stock_controller.py:636 controllers/stock_controller.py:638
 msgid "Inspection Required"
 msgstr ""
 
@@ -33221,7 +33211,7 @@
 msgid "Inspection Required before Purchase"
 msgstr ""
 
-#: controllers/stock_controller.py:665
+#: controllers/stock_controller.py:653
 msgid "Inspection Submission"
 msgstr ""
 
@@ -33243,7 +33233,7 @@
 
 #. Name of a DocType
 #: selling/doctype/installation_note/installation_note.json
-#: stock/doctype/delivery_note/delivery_note.js:180
+#: stock/doctype/delivery_note/delivery_note.js:171
 msgid "Installation Note"
 msgstr ""
 
@@ -33325,19 +33315,19 @@
 msgid "Insufficient Capacity"
 msgstr ""
 
-#: controllers/accounts_controller.py:3071
-#: controllers/accounts_controller.py:3095
+#: controllers/accounts_controller.py:3130
+#: controllers/accounts_controller.py:3154
 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:1264
-#: stock/stock_ledger.py:1751
+#: stock/serial_batch_bundle.py:880 stock/stock_ledger.py:1369
+#: stock/stock_ledger.py:1840
 msgid "Insufficient Stock"
 msgstr ""
 
-#: stock/stock_ledger.py:1766
+#: stock/stock_ledger.py:1855
 msgid "Insufficient Stock for Batch"
 msgstr ""
 
@@ -33478,7 +33468,7 @@
 msgid "Interest"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:2316
+#: accounts/doctype/payment_entry/payment_entry.py:2339
 msgid "Interest and/or dunning fee"
 msgstr ""
 
@@ -33502,15 +33492,15 @@
 msgid "Internal Customer"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:217
+#: selling/doctype/customer/customer.py:218
 msgid "Internal Customer for company {0} already exists"
 msgstr ""
 
-#: controllers/accounts_controller.py:530
+#: controllers/accounts_controller.py:533
 msgid "Internal Sale or Delivery Reference missing."
 msgstr ""
 
-#: controllers/accounts_controller.py:532
+#: controllers/accounts_controller.py:535
 msgid "Internal Sales Reference Missing"
 msgstr ""
 
@@ -33524,7 +33514,7 @@
 msgid "Internal Supplier for company {0} already exists"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note_dashboard.py:25
+#: stock/doctype/delivery_note/delivery_note_dashboard.py:27
 #: stock/doctype/material_request/material_request_dashboard.py:19
 msgid "Internal Transfer"
 msgstr ""
@@ -33559,7 +33549,7 @@
 msgid "Internal Transfer"
 msgstr ""
 
-#: controllers/accounts_controller.py:541
+#: controllers/accounts_controller.py:544
 msgid "Internal Transfer Reference Missing"
 msgstr ""
 
@@ -33573,7 +33563,7 @@
 msgid "Internal Work History"
 msgstr ""
 
-#: controllers/stock_controller.py:744
+#: controllers/stock_controller.py:735
 msgid "Internal transfers can only be done in company's default currency"
 msgstr ""
 
@@ -33610,20 +33600,20 @@
 
 #: accounts/doctype/purchase_invoice/purchase_invoice.py:369
 #: accounts/doctype/purchase_invoice/purchase_invoice.py:377
-#: accounts/doctype/sales_invoice/sales_invoice.py:873
-#: accounts/doctype/sales_invoice/sales_invoice.py:883
+#: accounts/doctype/sales_invoice/sales_invoice.py:876
+#: accounts/doctype/sales_invoice/sales_invoice.py:886
 #: assets/doctype/asset_category/asset_category.py:68
 #: assets/doctype/asset_category/asset_category.py:96
-#: controllers/accounts_controller.py:2462
-#: controllers/accounts_controller.py:2468
+#: controllers/accounts_controller.py:2531
+#: controllers/accounts_controller.py:2537
 msgid "Invalid Account"
 msgstr ""
 
-#: controllers/item_variant.py:125
+#: controllers/item_variant.py:129
 msgid "Invalid Attribute"
 msgstr ""
 
-#: controllers/accounts_controller.py:377
+#: controllers/accounts_controller.py:380
 msgid "Invalid Auto Repeat Date"
 msgstr ""
 
@@ -33631,7 +33621,7 @@
 msgid "Invalid Barcode. There is no Item attached to this barcode."
 msgstr ""
 
-#: public/js/controllers/transaction.js:2330
+#: public/js/controllers/transaction.js:2360
 msgid "Invalid Blanket Order for the selected Customer and Item"
 msgstr ""
 
@@ -33639,12 +33629,12 @@
 msgid "Invalid Child Procedure"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2000
+#: accounts/doctype/sales_invoice/sales_invoice.py:1977
 msgid "Invalid Company for Inter Company Transaction."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:248 assets/doctype/asset/asset.py:255
-#: controllers/accounts_controller.py:2483
+#: assets/doctype/asset/asset.py:249 assets/doctype/asset/asset.py:256
+#: controllers/accounts_controller.py:2552
 msgid "Invalid Cost Center"
 msgstr ""
 
@@ -33652,7 +33642,7 @@
 msgid "Invalid Credentials"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:315
+#: selling/doctype/sales_order/sales_order.py:318
 msgid "Invalid Delivery Date"
 msgstr ""
 
@@ -33669,7 +33659,7 @@
 msgid "Invalid Formula"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:366
+#: assets/doctype/asset/asset.py:367
 msgid "Invalid Gross Purchase Amount"
 msgstr ""
 
@@ -33677,7 +33667,7 @@
 msgid "Invalid Group By"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:376
+#: accounts/doctype/pos_invoice/pos_invoice.py:374
 msgid "Invalid Item"
 msgstr ""
 
@@ -33686,7 +33676,7 @@
 msgstr ""
 
 #: accounts/doctype/pos_closing_entry/pos_closing_entry.py:59
-#: accounts/general_ledger.py:678
+#: accounts/general_ledger.py:677
 msgid "Invalid Opening Entry"
 msgstr ""
 
@@ -33714,24 +33704,24 @@
 msgid "Invalid Priority"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:989
+#: manufacturing/doctype/bom/bom.py:991
 msgid "Invalid Process Loss Configuration"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:597
+#: accounts/doctype/payment_entry/payment_entry.py:599
 msgid "Invalid Purchase Invoice"
 msgstr ""
 
-#: controllers/accounts_controller.py:3110
+#: controllers/accounts_controller.py:3169
 msgid "Invalid Qty"
 msgstr ""
 
-#: controllers/accounts_controller.py:987
+#: controllers/accounts_controller.py:1021
 msgid "Invalid Quantity"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:410 assets/doctype/asset/asset.py:416
-#: assets/doctype/asset/asset.py:443
+#: assets/doctype/asset/asset.py:411 assets/doctype/asset/asset.py:417
+#: assets/doctype/asset/asset.py:444
 msgid "Invalid Schedule"
 msgstr ""
 
@@ -33743,7 +33733,7 @@
 msgid "Invalid URL"
 msgstr ""
 
-#: controllers/item_variant.py:144
+#: controllers/item_variant.py:148
 msgid "Invalid Value"
 msgstr ""
 
@@ -33756,7 +33746,7 @@
 msgid "Invalid condition expression"
 msgstr ""
 
-#: selling/doctype/quotation/quotation.py:252
+#: selling/doctype/quotation/quotation.py:253
 msgid "Invalid lost reason {0}, please create a new lost reason"
 msgstr ""
 
@@ -33783,7 +33773,7 @@
 msgid "Invalid {0}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1998
+#: accounts/doctype/sales_invoice/sales_invoice.py:1975
 msgid "Invalid {0} for Inter Company Transaction."
 msgstr ""
 
@@ -33824,7 +33814,7 @@
 msgstr ""
 
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:177
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:187
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:194
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:100
 msgid "Invoice"
 msgstr ""
@@ -33872,7 +33862,7 @@
 msgid "Invoice Discounting"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1042
+#: accounts/report/accounts_receivable/accounts_receivable.py:1065
 msgid "Invoice Grand Total"
 msgstr ""
 
@@ -33999,7 +33989,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:168
-#: accounts/report/accounts_receivable/accounts_receivable.py:1044
+#: accounts/report/accounts_receivable/accounts_receivable.py:1067
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:168
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.py:104
 msgid "Invoiced Amount"
@@ -34009,7 +33999,7 @@
 msgid "Invoiced Qty"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2051
+#: accounts/doctype/sales_invoice/sales_invoice.py:2028
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:62
 msgid "Invoices"
 msgstr ""
@@ -34051,6 +34041,13 @@
 msgid "Invoices and Payments have been Fetched and Allocated"
 msgstr ""
 
+#. Label of a Card Break in the Payables Workspace
+#. Label of a Card Break in the Receivables Workspace
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
+msgid "Invoicing"
+msgstr ""
+
 #. Label of a Section Break field in DocType 'Accounts Settings'
 #: accounts/doctype/accounts_settings/accounts_settings.json
 msgctxt "Accounts Settings"
@@ -34810,6 +34807,12 @@
 msgid "Is Stock Item"
 msgstr ""
 
+#. Label of a Check field in DocType 'Sales Order Item'
+#: selling/doctype/sales_order_item/sales_order_item.json
+msgctxt "Sales Order Item"
+msgid "Is Stock Item"
+msgstr ""
+
 #. Label of a Check field in DocType 'Purchase Invoice'
 #: accounts/doctype/purchase_invoice/purchase_invoice.json
 msgctxt "Purchase Invoice"
@@ -35044,7 +35047,7 @@
 msgid "It can take upto few hours for accurate stock values to be visible after merging items."
 msgstr ""
 
-#: public/js/controllers/transaction.js:1809
+#: public/js/controllers/transaction.js:1839
 msgid "It is needed to fetch Item Details."
 msgstr ""
 
@@ -35060,7 +35063,7 @@
 #: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:50
 #: 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:1009
+#: controllers/taxes_and_totals.py:1018
 #: manufacturing/report/bom_stock_calculated/bom_stock_calculated.py:51
 #: manufacturing/report/bom_stock_report/bom_stock_report.py:25
 #: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:67
@@ -35071,7 +35074,7 @@
 #: 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:983
+#: 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
@@ -35305,7 +35308,7 @@
 #: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:36
 #: accounts/report/gross_profit/gross_profit.py:224
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:150
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:160
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:167
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:36
 #: 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
@@ -35321,12 +35324,12 @@
 #: 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:2082 public/js/utils.js:459
+#: 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:297
-#: selling/doctype/sales_order/sales_order.js:398
-#: selling/doctype/sales_order/sales_order.js:688
-#: selling/doctype/sales_order/sales_order.js:812
+#: 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
 #: 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
@@ -35831,7 +35834,7 @@
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:28
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:164
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.js:53
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:174
+#: 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
 #: public/js/purchase_trends_filters.js:49 public/js/sales_trends_filters.js:24
@@ -36041,6 +36044,12 @@
 msgid "Item Group"
 msgstr ""
 
+#. Label of a Link field in DocType 'Stock Reconciliation Item'
+#: stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
+msgctxt "Stock Reconciliation Item"
+msgid "Item Group"
+msgstr ""
+
 #. Label of a Link field in DocType 'Supplier Quotation Item'
 #: buying/doctype/supplier_quotation_item/supplier_quotation_item.json
 msgctxt "Supplier Quotation Item"
@@ -36140,7 +36149,7 @@
 #: accounts/report/gross_profit/gross_profit.py:231
 #: accounts/report/inactive_sales_items/inactive_sales_items.py:33
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:156
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:166
+#: 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
@@ -36152,7 +36161,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:2088
+#: public/js/controllers/transaction.js:2118
 #: 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
@@ -36793,8 +36802,8 @@
 msgid "Item UOM"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:343
-#: accounts/doctype/pos_invoice/pos_invoice.py:350
+#: accounts/doctype/pos_invoice/pos_invoice.py:341
+#: accounts/doctype/pos_invoice/pos_invoice.py:348
 msgid "Item Unavailable"
 msgstr ""
 
@@ -36827,7 +36836,7 @@
 msgid "Item Variant Settings"
 msgstr ""
 
-#: stock/doctype/item/item.js:681
+#: stock/doctype/item/item.js:667
 msgid "Item Variant {0} already exists with same attributes"
 msgstr ""
 
@@ -36922,7 +36931,7 @@
 msgid "Item and Warranty Details"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2329
+#: stock/doctype/stock_entry/stock_entry.py:2325
 msgid "Item for row {0} does not match Material Request"
 msgstr ""
 
@@ -36939,7 +36948,7 @@
 msgstr ""
 
 #: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.py:42
-#: selling/doctype/sales_order/sales_order.js:990
+#: selling/doctype/sales_order/sales_order.js:984
 msgid "Item name"
 msgstr ""
 
@@ -36949,7 +36958,7 @@
 msgid "Item operation"
 msgstr ""
 
-#: controllers/accounts_controller.py:3137
+#: controllers/accounts_controller.py:3196
 msgid "Item qty can not be updated as raw materials are already processed."
 msgstr ""
 
@@ -36963,7 +36972,7 @@
 msgid "Item to be manufactured or repacked"
 msgstr ""
 
-#: stock/utils.py:517
+#: stock/utils.py:564
 msgid "Item valuation reposting in progress. Report might show incorrect item valuation."
 msgstr ""
 
@@ -36979,11 +36988,11 @@
 msgid "Item {0} cannot be ordered more than {1} against Blanket Order {2}."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:230 stock/doctype/item/item.py:603
+#: assets/doctype/asset/asset.py:231 stock/doctype/item/item.py:603
 msgid "Item {0} does not exist"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:558
+#: manufacturing/doctype/bom/bom.py:560
 msgid "Item {0} does not exist in the system or has expired"
 msgstr ""
 
@@ -36995,19 +37004,19 @@
 msgid "Item {0} has already been returned"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:232
+#: assets/doctype/asset/asset.py:233
 msgid "Item {0} has been disabled"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:642
-msgid "Item {0} has no Serial No. Only serilialized items can have delivery based on Serial No"
+#: selling/doctype/sales_order/sales_order.py:645
+msgid "Item {0} has no Serial No. Only serialized items can have delivery based on Serial No"
 msgstr ""
 
 #: stock/doctype/item/item.py:1102
 msgid "Item {0} has reached its end of life on {1}"
 msgstr ""
 
-#: stock/stock_ledger.py:102
+#: stock/stock_ledger.py:111
 msgid "Item {0} ignored since it is not a stock item"
 msgstr ""
 
@@ -37031,11 +37040,11 @@
 msgid "Item {0} is not a stock Item"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1542
+#: stock/doctype/stock_entry/stock_entry.py:1538
 msgid "Item {0} is not active or end of life has been reached"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:234
+#: assets/doctype/asset/asset.py:235
 msgid "Item {0} must be a Fixed Asset Item"
 msgstr ""
 
@@ -37047,7 +37056,7 @@
 msgid "Item {0} must be a Sub-contracted Item"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:236
+#: assets/doctype/asset/asset.py:237
 msgid "Item {0} must be a non-stock item"
 msgstr ""
 
@@ -37059,7 +37068,7 @@
 msgid "Item {0} not found."
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:338
+#: buying/doctype/purchase_order/purchase_order.py:342
 msgid "Item {0}: Ordered qty {1} cannot be less than minimum order qty {2} (defined in Item)."
 msgstr ""
 
@@ -37067,7 +37076,7 @@
 msgid "Item {0}: {1} qty produced. "
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1071
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1131
 msgid "Item {} does not exist."
 msgstr ""
 
@@ -37089,9 +37098,9 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
 msgid "Item-wise Purchase Register"
 msgstr ""
 
@@ -37103,18 +37112,18 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
 #: accounts/report/item_wise_sales_register/item_wise_sales_register.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
 msgid "Item-wise Sales Register"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:309
+#: manufacturing/doctype/bom/bom.py:311
 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:373
+#: stock/doctype/delivery_note/delivery_note.js:364
 #: templates/generators/bom.html:38 templates/pages/rfq.html:37
 msgid "Items"
 msgstr ""
@@ -37287,7 +37296,7 @@
 msgstr ""
 
 #: manufacturing/doctype/production_plan/production_plan.py:1462
-#: selling/doctype/sales_order/sales_order.js:1024
+#: selling/doctype/sales_order/sales_order.js:1018
 msgid "Items Required"
 msgstr ""
 
@@ -37303,11 +37312,11 @@
 msgid "Items and Pricing"
 msgstr ""
 
-#: controllers/accounts_controller.py:3357
+#: controllers/accounts_controller.py:3416
 msgid "Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}."
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:830
+#: selling/doctype/sales_order/sales_order.js:824
 msgid "Items for Raw Material Request"
 msgstr ""
 
@@ -37330,7 +37339,7 @@
 msgid "Items to Order and Receive"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:258
+#: selling/doctype/sales_order/sales_order.js:252
 msgid "Items to Reserve"
 msgstr ""
 
@@ -37515,7 +37524,7 @@
 msgid "Journal Entries"
 msgstr ""
 
-#: accounts/utils.py:838
+#: accounts/utils.py:866
 msgid "Journal Entries {0} are un-linked"
 msgstr ""
 
@@ -37549,8 +37558,13 @@
 #. Option for the 'Entry Type' (Select) field in DocType 'Journal Entry'
 #. Label of a Link in the Accounting Workspace
 #. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
+#. Label of a shortcut in the Payables Workspace
+#. Label of a shortcut in the Receivables Workspace
 #: accounts/doctype/journal_entry/journal_entry.json
 #: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
 msgctxt "Journal Entry"
 msgid "Journal Entry"
 msgstr ""
@@ -37603,7 +37617,7 @@
 msgid "Journal Entry Type"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:455
+#: accounts/doctype/journal_entry/journal_entry.py:471
 msgid "Journal Entry for Asset scrapping cannot be cancelled. Please restore the Asset."
 msgstr ""
 
@@ -37613,11 +37627,11 @@
 msgid "Journal Entry for Scrap"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:215
+#: accounts/doctype/journal_entry/journal_entry.py:232
 msgid "Journal Entry type should be set as Depreciation Entry for asset depreciation"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:581
+#: accounts/doctype/journal_entry/journal_entry.py:597
 msgid "Journal Entry {0} does not have account {1} or already matched against other voucher"
 msgstr ""
 
@@ -38157,6 +38171,11 @@
 msgid "Ledger Merge Accounts"
 msgstr ""
 
+#. Label of a Card Break in the Financial Reports Workspace
+#: accounts/workspace/financial_reports/financial_reports.json
+msgid "Ledgers"
+msgstr ""
+
 #. Option for the 'Status' (Select) field in DocType 'Driver'
 #: setup/doctype/driver/driver.json
 msgctxt "Driver"
@@ -38181,7 +38200,7 @@
 msgid "Left Index"
 msgstr ""
 
-#: setup/doctype/company/company.py:388
+#: setup/doctype/company/company.py:389
 msgid "Legal"
 msgstr ""
 
@@ -38576,7 +38595,7 @@
 msgid "Likes"
 msgstr ""
 
-#: controllers/status_updater.py:353
+#: controllers/status_updater.py:362
 msgid "Limit Crossed"
 msgstr ""
 
@@ -38895,7 +38914,7 @@
 msgstr ""
 
 #: crm/report/lost_opportunity/lost_opportunity.py:49
-#: public/js/utils/sales_common.js:401
+#: public/js/utils/sales_common.js:410
 msgid "Lost Reasons"
 msgstr ""
 
@@ -39245,8 +39264,8 @@
 msgid "Machine operator errors"
 msgstr ""
 
-#: setup/doctype/company/company.py:562 setup/doctype/company/company.py:577
-#: setup/doctype/company/company.py:578 setup/doctype/company/company.py:579
+#: setup/doctype/company/company.py:563 setup/doctype/company/company.py:578
+#: setup/doctype/company/company.py:579 setup/doctype/company/company.py:580
 msgid "Main"
 msgstr ""
 
@@ -39379,7 +39398,7 @@
 #: accounts/doctype/sales_invoice/sales_invoice.js:162
 #: maintenance/doctype/maintenance_schedule/maintenance_schedule.json
 #: maintenance/doctype/maintenance_visit/maintenance_visit.js:78
-#: selling/doctype/sales_order/sales_order.js:588
+#: selling/doctype/sales_order/sales_order.js:582
 msgid "Maintenance Schedule"
 msgstr ""
 
@@ -39524,7 +39543,7 @@
 #. Name of a DocType
 #: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:83
 #: maintenance/doctype/maintenance_visit/maintenance_visit.json
-#: selling/doctype/sales_order/sales_order.js:587
+#: selling/doctype/sales_order/sales_order.js:581
 #: support/doctype/warranty_claim/warranty_claim.js:50
 msgid "Maintenance Visit"
 msgstr ""
@@ -39563,12 +39582,6 @@
 msgid "Make"
 msgstr ""
 
-#. Label of a Data field in DocType 'Vehicle'
-#: setup/doctype/vehicle/vehicle.json
-msgctxt "Vehicle"
-msgid "Make"
-msgstr ""
-
 #: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:56
 msgid "Make "
 msgstr ""
@@ -39664,7 +39677,7 @@
 msgid "Manage your orders"
 msgstr ""
 
-#: setup/doctype/company/company.py:370
+#: setup/doctype/company/company.py:371
 msgid "Management"
 msgstr ""
 
@@ -39672,11 +39685,11 @@
 #: 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
-#: manufacturing/doctype/bom/bom.py:243
+#: manufacturing/doctype/bom/bom.py:245
 #: manufacturing/doctype/bom_update_log/bom_update_log.py:73
-#: public/js/controllers/accounts.js:248
-#: public/js/controllers/transaction.js:2454 public/js/utils/party.js:273
-#: stock/doctype/delivery_note/delivery_note.js:147
+#: 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
@@ -39705,7 +39718,7 @@
 msgid "Mandatory Depends On"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1566
+#: accounts/doctype/sales_invoice/sales_invoice.py:1549
 msgid "Mandatory Field"
 msgstr ""
 
@@ -39721,7 +39734,7 @@
 msgid "Mandatory For Profit and Loss Account"
 msgstr ""
 
-#: selling/doctype/quotation/quotation.py:551
+#: selling/doctype/quotation/quotation.py:556
 msgid "Mandatory Missing"
 msgstr ""
 
@@ -39967,6 +39980,12 @@
 msgid "Manufacturer"
 msgstr ""
 
+#. Label of a Data field in DocType 'Vehicle'
+#: setup/doctype/vehicle/vehicle.json
+msgctxt "Vehicle"
+msgid "Manufacturer"
+msgstr ""
+
 #: manufacturing/report/bom_stock_calculated/bom_stock_calculated.py:70
 msgid "Manufacturer Part Number"
 msgstr ""
@@ -40069,7 +40088,7 @@
 msgid "Manufacturing Manager"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1693
+#: stock/doctype/stock_entry/stock_entry.py:1689
 msgid "Manufacturing Quantity is mandatory"
 msgstr ""
 
@@ -40277,6 +40296,10 @@
 msgid "Margin Type"
 msgstr ""
 
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:19
+msgid "Margin View"
+msgstr ""
+
 #. Label of a Select field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
@@ -40318,7 +40341,7 @@
 msgid "Market Segment"
 msgstr ""
 
-#: setup/doctype/company/company.py:322
+#: setup/doctype/company/company.py:323
 msgid "Marketing"
 msgstr ""
 
@@ -40440,7 +40463,7 @@
 #: 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:576
+#: selling/doctype/sales_order/sales_order.js:570
 #: 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
@@ -40670,7 +40693,7 @@
 msgid "Material Request Type"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:1507
+#: selling/doctype/sales_order/sales_order.py:1521
 msgid "Material Request not created, as quantity for Raw Materials already available."
 msgstr ""
 
@@ -40685,11 +40708,11 @@
 msgid "Material Request used to make this Stock Entry"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:968
+#: controllers/subcontracting_controller.py:974
 msgid "Material Request {0} is cancelled or stopped"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:845
+#: selling/doctype/sales_order/sales_order.js:839
 msgid "Material Request {0} submitted."
 msgstr ""
 
@@ -40827,7 +40850,7 @@
 msgid "Materials Required (Exploded)"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:1158
+#: controllers/subcontracting_controller.py:1164
 msgid "Materials are already received against the {0} {1}"
 msgstr ""
 
@@ -40934,11 +40957,11 @@
 msgid "Maximum Payment Amount"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2846
+#: stock/doctype/stock_entry/stock_entry.py:2842
 msgid "Maximum Samples - {0} can be retained for Batch {1} and Item {2}."
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2837
+#: stock/doctype/stock_entry/stock_entry.py:2833
 msgid "Maximum Samples - {0} have already been retained for Batch {1} and Item {2} in Batch {3}."
 msgstr ""
 
@@ -41002,7 +41025,7 @@
 msgid "Meeting"
 msgstr ""
 
-#: stock/stock_ledger.py:1596
+#: stock/stock_ledger.py:1685
 msgid "Mention Valuation Rate in the Item master."
 msgstr ""
 
@@ -41305,28 +41328,28 @@
 msgid "Mismatch"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1072
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1132
 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:2067
-#: accounts/doctype/sales_invoice/sales_invoice.py:2631
+#: accounts/doctype/sales_invoice/sales_invoice.py:2044
+#: accounts/doctype/sales_invoice/sales_invoice.py:2602
 #: assets/doctype/asset_category/asset_category.py:115
 msgid "Missing Account"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1410
+#: accounts/doctype/sales_invoice/sales_invoice.py:1403
 msgid "Missing Asset"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:179 assets/doctype/asset/asset.py:264
+#: accounts/doctype/gl_entry/gl_entry.py:179 assets/doctype/asset/asset.py:265
 msgid "Missing Cost Center"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:308
+#: assets/doctype/asset/asset.py:309
 msgid "Missing Finance Book"
 msgstr ""
 
@@ -41350,7 +41373,7 @@
 msgid "Missing Serial No Bundle"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:742
+#: selling/doctype/customer/customer.py:743
 msgid "Missing Values Required"
 msgstr ""
 
@@ -41362,7 +41385,7 @@
 msgid "Missing email template for dispatch. Please set one in Delivery Settings."
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:955
+#: manufacturing/doctype/bom/bom.py:957
 #: manufacturing/doctype/work_order/work_order.py:979
 msgid "Missing value"
 msgstr ""
@@ -41508,7 +41531,7 @@
 msgstr ""
 
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:213
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:236
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:243
 #: accounts/report/purchase_register/purchase_register.py:201
 #: accounts/report/sales_register/sales_register.py:222
 msgid "Mode Of Payment"
@@ -41762,7 +41785,7 @@
 #: 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:164
+#: public/js/financial_statements.js:217
 #: 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
@@ -42066,10 +42089,6 @@
 msgid "More columns found than expected. Please compare the uploaded file with standard template"
 msgstr ""
 
-#: templates/includes/macros.html:57 templates/pages/home.html:40
-msgid "More details"
-msgstr ""
-
 #: stock/doctype/batch/batch.js:111 stock/doctype/batch/batch_dashboard.py:10
 msgid "Move"
 msgstr ""
@@ -42078,7 +42097,7 @@
 msgid "Move Item"
 msgstr ""
 
-#: templates/includes/macros.html:201
+#: templates/includes/macros.html:169
 msgid "Move to Cart"
 msgstr ""
 
@@ -42124,7 +42143,7 @@
 msgid "Multi-level BOM Creator"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:368
+#: selling/doctype/customer/customer.py:369
 msgid "Multiple Loyalty Programs found for Customer {}. Please select manually."
 msgstr ""
 
@@ -42147,7 +42166,7 @@
 msgid "Multiple Warehouse Accounts"
 msgstr ""
 
-#: controllers/accounts_controller.py:865
+#: controllers/accounts_controller.py:899
 msgid "Multiple fiscal years exist for the date {0}. Please set company in Fiscal Year"
 msgstr ""
 
@@ -42189,7 +42208,7 @@
 #: 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:332
+#: public/js/utils/serial_no_batch_selector.js:404
 #: selling/doctype/quotation/quotation.js:261
 msgid "Name"
 msgstr ""
@@ -42427,11 +42446,11 @@
 msgid "Needs Analysis"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:376
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:377
 msgid "Negative Quantity is not allowed"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:380
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:381
 msgid "Negative Valuation Rate is not allowed"
 msgstr ""
 
@@ -42915,7 +42934,7 @@
 msgid "Net Weight UOM"
 msgstr ""
 
-#: controllers/accounts_controller.py:1179
+#: controllers/accounts_controller.py:1210
 msgid "Net total calculation precision loss"
 msgstr ""
 
@@ -43085,7 +43104,7 @@
 msgid "New Workplace"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:337
+#: selling/doctype/customer/customer.py:338
 msgid "New credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0}"
 msgstr ""
 
@@ -43256,7 +43275,7 @@
 msgid "No Answer"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2175
+#: accounts/doctype/sales_invoice/sales_invoice.py:2146
 msgid "No Customer found for Inter Company Transactions which represents company {0}"
 msgstr ""
 
@@ -43281,29 +43300,29 @@
 msgid "No Item with Serial No {0}"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:1078
+#: controllers/subcontracting_controller.py:1084
 msgid "No Items selected for transfer."
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:674
+#: selling/doctype/sales_order/sales_order.js:668
 msgid "No Items with Bill of Materials to Manufacture"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:788
+#: selling/doctype/sales_order/sales_order.js:782
 msgid "No Items with Bill of Materials."
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:192
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:213
 msgid "No Outstanding Invoices found for this party"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:528
+#: accounts/doctype/pos_invoice/pos_invoice.py:526
 msgid "No POS Profile found. Please create a New POS Profile first"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1534
-#: accounts/doctype/journal_entry/journal_entry.py:1600
-#: accounts/doctype/journal_entry/journal_entry.py:1623
+#: 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
 msgid "No Permission"
 msgstr ""
@@ -43314,7 +43333,7 @@
 msgstr ""
 
 #: accounts/doctype/purchase_invoice/purchase_invoice.py:333
-#: accounts/doctype/sales_invoice/sales_invoice.py:946
+#: accounts/doctype/sales_invoice/sales_invoice.py:949
 msgid "No Remarks"
 msgstr ""
 
@@ -43322,7 +43341,7 @@
 msgid "No Stock Available Currently"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2159
+#: accounts/doctype/sales_invoice/sales_invoice.py:2130
 msgid "No Supplier found for Inter Company Transactions which represents company {0}"
 msgstr ""
 
@@ -43334,11 +43353,11 @@
 msgid "No Terms"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:190
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:211
 msgid "No Unreconciled Invoices and Payments found for this party and account"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:194
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:215
 msgid "No Unreconciled Payments found for this party"
 msgstr ""
 
@@ -43346,12 +43365,12 @@
 msgid "No Work Orders were created"
 msgstr ""
 
-#: stock/doctype/purchase_receipt/purchase_receipt.py:729
+#: stock/doctype/purchase_receipt/purchase_receipt.py:727
 #: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:606
 msgid "No accounting entries for the following warehouses"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:648
+#: selling/doctype/sales_order/sales_order.py:651
 msgid "No active BOM found for item {0}. Delivery by Serial No cannot be ensured"
 msgstr ""
 
@@ -43387,11 +43406,11 @@
 msgid "No employee was scheduled for call popup"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1053
+#: accounts/doctype/payment_entry/payment_entry.js:1064
 msgid "No gain or loss in the exchange rate"
 msgstr ""
 
-#: controllers/subcontracting_controller.py:999
+#: controllers/subcontracting_controller.py:1005
 msgid "No item available for transfer."
 msgstr ""
 
@@ -43487,7 +43506,7 @@
 msgid "No outstanding invoices require exchange rate revaluation"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1784
+#: accounts/doctype/payment_entry/payment_entry.py:1801
 msgid "No outstanding {0} found for the {1} {2} which qualify the filters you have specified."
 msgstr ""
 
@@ -43509,38 +43528,38 @@
 msgid "No record found"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:649
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:677
 msgid "No records found in Allocation table"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:551
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:579
 msgid "No records found in the Invoices table"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:554
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:582
 msgid "No records found in the Payments table"
 msgstr ""
 
-#. Description of the 'Stock Frozen Upto' (Date) field in DocType 'Stock
+#. Description of the 'Stock Frozen Up To' (Date) field in DocType 'Stock
 #. Settings'
 #: stock/doctype/stock_settings/stock_settings.json
 msgctxt "Stock Settings"
 msgid "No stock transactions can be created or modified before this date."
 msgstr ""
 
-#: controllers/accounts_controller.py:2366
+#: controllers/accounts_controller.py:2435
 msgid "No updates pending for reposting"
 msgstr ""
 
-#: templates/includes/macros.html:323 templates/includes/macros.html:356
+#: templates/includes/macros.html:291 templates/includes/macros.html:324
 msgid "No values"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:328
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:342
 msgid "No {0} Accounts found for this company."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2226
+#: accounts/doctype/sales_invoice/sales_invoice.py:2197
 msgid "No {0} found for Inter Company Transactions."
 msgstr ""
 
@@ -43580,7 +43599,7 @@
 msgid "Non Profit"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1303
+#: manufacturing/doctype/bom/bom.py:1305
 msgid "Non stock items"
 msgstr ""
 
@@ -43591,7 +43610,7 @@
 msgid "None"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:314
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:315
 msgid "None of the items have any change in quantity or value."
 msgstr ""
 
@@ -43603,8 +43622,8 @@
 msgstr ""
 
 #: accounts/doctype/mode_of_payment/mode_of_payment.py:66
-#: accounts/doctype/pos_invoice/pos_invoice.py:256
-#: accounts/doctype/sales_invoice/sales_invoice.py:524
+#: 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
 #: controllers/buying_controller.py:206
 #: selling/doctype/product_bundle/product_bundle.py:71
@@ -43641,12 +43660,26 @@
 msgid "Not Delivered"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:740
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Purchase
+#. Order'
+#: buying/doctype/purchase_order/purchase_order.json
+msgctxt "Purchase Order"
+msgid "Not Initiated"
+msgstr ""
+
+#: buying/doctype/purchase_order/purchase_order.py:744
 #: templates/pages/material_request_info.py:21 templates/pages/order.py:32
 #: templates/pages/rfq.py:48
 msgid "Not Permitted"
 msgstr ""
 
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Sales
+#. Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "Not Requested"
+msgstr ""
+
 #: selling/report/lost_quotations/lost_quotations.py:86
 #: support/report/issue_analytics/issue_analytics.py:208
 #: support/report/issue_summary/issue_summary.py:198
@@ -43695,24 +43728,24 @@
 msgid "Not allowed to update stock transactions older than {0}"
 msgstr ""
 
-#: accounts/doctype/gl_entry/gl_entry.py:445
-msgid "Not authorized to edit frozen Account {0}"
+#: setup/doctype/authorization_control/authorization_control.py:57
+msgid "Not authorized since {0} exceeds limits"
 msgstr ""
 
-#: setup/doctype/authorization_control/authorization_control.py:57
-msgid "Not authroized since {0} exceeds limits"
+#: accounts/doctype/gl_entry/gl_entry.py:445
+msgid "Not authorized to edit frozen Account {0}"
 msgstr ""
 
 #: templates/includes/products_as_grid.html:20
 msgid "Not in stock"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:663
+#: 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:741
-#: selling/doctype/sales_order/sales_order.py:1490
+#: selling/doctype/sales_order/sales_order.py:755
+#: selling/doctype/sales_order/sales_order.py:1504
 msgid "Not permitted"
 msgstr ""
 
@@ -43720,10 +43753,10 @@
 #: 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:963
+#: 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:731
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:732
 msgid "Note"
 msgstr ""
 
@@ -43764,7 +43797,7 @@
 msgid "Note: Item {0} added multiple times"
 msgstr ""
 
-#: controllers/accounts_controller.py:447
+#: controllers/accounts_controller.py:450
 msgid "Note: Payment Entry will not be created since 'Cash or Bank Account' was not specified"
 msgstr ""
 
@@ -43776,7 +43809,7 @@
 msgid "Note: To merge the items, create a separate Stock Reconciliation for the old item {0}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:943
+#: accounts/doctype/journal_entry/journal_entry.py:895
 msgid "Note: {0}"
 msgstr ""
 
@@ -43947,12 +43980,6 @@
 msgid "Notify customer and agent via email on the day of the appointment."
 msgstr ""
 
-#. Label of a Select field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Number of Columns"
-msgstr ""
-
 #. Label of a Int field in DocType 'Appointment Booking Settings'
 #: crm/doctype/appointment_booking_settings/appointment_booking_settings.json
 msgctxt "Appointment Booking Settings"
@@ -43991,13 +44018,6 @@
 msgid "Number of Order"
 msgstr ""
 
-#. Description of the 'Number of Columns' (Select) field in DocType 'Homepage
-#. Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Number of columns for this section. 3 cards will be shown per row if you select 3 columns."
-msgstr ""
-
 #. Description of the 'Grace Period' (Int) field in DocType 'Subscription
 #. Settings'
 #: accounts/doctype/subscription_settings/subscription_settings.json
@@ -44111,7 +44131,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:29
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:42
-msgid "Office Equipments"
+msgid "Office Equipment"
 msgstr ""
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:62
@@ -44648,7 +44668,7 @@
 msgid "Opening Accumulated Depreciation"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:427
+#: assets/doctype/asset/asset.py:428
 msgid "Opening Accumulated Depreciation must be less than or equal to {0}"
 msgstr ""
 
@@ -44698,7 +44718,7 @@
 msgid "Opening Entry"
 msgstr ""
 
-#: accounts/general_ledger.py:677
+#: accounts/general_ledger.py:676
 msgid "Opening Entry can not be created after Period Closing Voucher is created."
 msgstr ""
 
@@ -44800,7 +44820,7 @@
 msgid "Operating Cost Per BOM Quantity"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1319
+#: manufacturing/doctype/bom/bom.py:1321
 msgid "Operating Cost as per Work Order / BOM"
 msgstr ""
 
@@ -44984,7 +45004,7 @@
 msgstr ""
 
 #: manufacturing/doctype/work_order/work_order.js:220
-#: setup/doctype/company/company.py:340 templates/generators/bom.html:61
+#: setup/doctype/company/company.py:341 templates/generators/bom.html:61
 msgid "Operations"
 msgstr ""
 
@@ -45010,7 +45030,7 @@
 msgid "Operations"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:964
+#: manufacturing/doctype/bom/bom.py:966
 msgid "Operations cannot be left blank"
 msgstr ""
 
@@ -45331,12 +45351,6 @@
 msgid "Order Value"
 msgstr ""
 
-#. Description of the 'Section Order' (Int) field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Order in which sections should appear. 0 is first, 1 is second and so on."
-msgstr ""
-
 #: crm/report/campaign_efficiency/campaign_efficiency.py:27
 #: crm/report/lead_owner_efficiency/lead_owner_efficiency.py:33
 msgid "Order/Quot %"
@@ -45409,7 +45423,7 @@
 
 #: buying/doctype/supplier/supplier_dashboard.py:14
 #: selling/doctype/customer/customer_dashboard.py:21
-#: selling/doctype/sales_order/sales_order.py:731
+#: selling/doctype/sales_order/sales_order.py:745
 #: setup/doctype/company/company_dashboard.py:23
 msgid "Orders"
 msgstr ""
@@ -45518,9 +45532,11 @@
 msgid "Other Info"
 msgstr ""
 
+#. Label of a Card Break in the Financial Reports Workspace
 #. Label of a Card Break in the Buying Workspace
 #. Label of a Card Break in the Selling Workspace
 #. Label of a Card Break in the Stock Workspace
+#: accounts/workspace/financial_reports/financial_reports.json
 #: buying/workspace/buying/buying.json selling/workspace/selling/selling.json
 #: stock/workspace/stock/stock.json
 msgid "Other Reports"
@@ -45588,7 +45604,7 @@
 msgid "Out of Warranty"
 msgstr ""
 
-#: templates/includes/macros.html:205
+#: templates/includes/macros.html:173
 msgid "Out of stock"
 msgstr ""
 
@@ -45644,7 +45660,7 @@
 
 #: accounts/doctype/payment_entry/payment_entry.js:653
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:179
-#: accounts/report/accounts_receivable/accounts_receivable.py:1051
+#: accounts/report/accounts_receivable/accounts_receivable.py:1074
 #: 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
@@ -45750,11 +45766,11 @@
 msgid "Over Delivery/Receipt Allowance (%)"
 msgstr ""
 
-#: controllers/stock_controller.py:795
+#: controllers/stock_controller.py:896
 msgid "Over Receipt"
 msgstr ""
 
-#: controllers/status_updater.py:358
+#: controllers/status_updater.py:367
 msgid "Over Receipt/Delivery of {0} {1} ignored for item {2} because you have {3} role."
 msgstr ""
 
@@ -45770,17 +45786,17 @@
 msgid "Over Transfer Allowance (%)"
 msgstr ""
 
-#: controllers/status_updater.py:360
+#: controllers/status_updater.py:369
 msgid "Overbilling of {0} {1} ignored for item {2} because you have {3} role."
 msgstr ""
 
-#: controllers/accounts_controller.py:1680
+#: controllers/accounts_controller.py:1713
 msgid "Overbilling of {} ignored because you have {} role."
 msgstr ""
 
 #: accounts/doctype/sales_invoice/sales_invoice.py:261
 #: projects/report/project_summary/project_summary.py:94
-#: selling/doctype/sales_order/sales_order_list.js:16
+#: selling/doctype/sales_order/sales_order_list.js:18
 msgid "Overdue"
 msgstr ""
 
@@ -46020,6 +46036,12 @@
 msgid "POS Invoice"
 msgstr ""
 
+#. Label of a shortcut in the Receivables Workspace
+#: accounts/workspace/receivables/receivables.json
+msgctxt "POS Invoice"
+msgid "POS Invoice"
+msgstr ""
+
 #. Label of a Link field in DocType 'POS Invoice Reference'
 #: accounts/doctype/pos_invoice_reference/pos_invoice_reference.json
 msgctxt "POS Invoice Reference"
@@ -46077,7 +46099,7 @@
 msgid "POS Invoice isn't created by user {}"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:192
+#: accounts/doctype/pos_invoice/pos_invoice.py:191
 msgid "POS Invoice should have {} field checked."
 msgstr ""
 
@@ -46175,7 +46197,7 @@
 msgid "POS Profile doesn't matches {}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1116
+#: accounts/doctype/sales_invoice/sales_invoice.py:1119
 msgid "POS Profile required to make POS Entry"
 msgstr ""
 
@@ -46227,7 +46249,7 @@
 msgstr ""
 
 #: selling/page/point_of_sale/pos_controller.js:363
-msgid "POS invoice {0} created succesfully"
+msgid "POS invoice {0} created successfully"
 msgstr ""
 
 #. Option for the 'Series' (Select) field in DocType 'Cashier Closing'
@@ -46332,7 +46354,7 @@
 msgid "Packed Items"
 msgstr ""
 
-#: controllers/stock_controller.py:748
+#: controllers/stock_controller.py:739
 msgid "Packed Items cannot be transferred internally"
 msgstr ""
 
@@ -46373,7 +46395,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: stock/doctype/delivery_note/delivery_note.js:195
+#: stock/doctype/delivery_note/delivery_note.js:186
 #: stock/doctype/packing_slip/packing_slip.json
 msgid "Packing Slip"
 msgstr ""
@@ -46529,7 +46551,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:170
-#: accounts/report/accounts_receivable/accounts_receivable.py:1045
+#: accounts/report/accounts_receivable/accounts_receivable.py:1068
 #: 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
@@ -46609,7 +46631,7 @@
 msgid "Paid Amount After Tax (Company Currency)"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:870
+#: accounts/doctype/payment_entry/payment_entry.js:881
 msgid "Paid Amount cannot be greater than total negative outstanding amount {0}"
 msgstr ""
 
@@ -46632,7 +46654,7 @@
 msgstr ""
 
 #: accounts/doctype/purchase_invoice/purchase_invoice.py:324
-#: accounts/doctype/sales_invoice/sales_invoice.py:991
+#: accounts/doctype/sales_invoice/sales_invoice.py:994
 msgid "Paid amount + Write Off Amount can not be greater than Grand Total"
 msgstr ""
 
@@ -46776,7 +46798,7 @@
 msgid "Parent Company"
 msgstr ""
 
-#: setup/doctype/company/company.py:459
+#: setup/doctype/company/company.py:460
 msgid "Parent Company must be a group company"
 msgstr ""
 
@@ -46989,6 +47011,20 @@
 msgid "Partially Paid"
 msgstr ""
 
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Purchase
+#. Order'
+#: buying/doctype/purchase_order/purchase_order.json
+msgctxt "Purchase Order"
+msgid "Partially Paid"
+msgstr ""
+
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Sales
+#. Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "Partially Paid"
+msgstr ""
+
 #: stock/doctype/material_request/material_request_list.js:21
 msgid "Partially Received"
 msgstr ""
@@ -47035,6 +47071,10 @@
 msgid "Parties"
 msgstr ""
 
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:14
+msgid "Partly Billed"
+msgstr ""
+
 #. Option for the 'Billing Status' (Select) field in DocType 'Sales Order'
 #: selling/doctype/sales_order/sales_order.json
 msgctxt "Sales Order"
@@ -47101,7 +47141,7 @@
 #: 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:630
+#: accounts/report/general_ledger/general_ledger.py:633
 #: accounts/report/payment_ledger/payment_ledger.js:52
 #: accounts/report/payment_ledger/payment_ledger.py:154
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:46
@@ -47254,7 +47294,7 @@
 msgid "Party Account No. (Bank Statement)"
 msgstr ""
 
-#: controllers/accounts_controller.py:1914
+#: controllers/accounts_controller.py:1983
 msgid "Party Account {0} currency ({1}) and document currency ({2}) should be same"
 msgstr ""
 
@@ -47365,7 +47405,7 @@
 #: 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:629
+#: accounts/report/general_ledger/general_ledger.py:632
 #: accounts/report/payment_ledger/payment_ledger.js:42
 #: accounts/report/payment_ledger/payment_ledger.py:150
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:35
@@ -47483,7 +47523,7 @@
 msgid "Party Type and Party is required for Receivable / Payable account {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:432
+#: accounts/doctype/payment_entry/payment_entry.py:434
 msgid "Party Type is mandatory"
 msgstr ""
 
@@ -47497,7 +47537,7 @@
 msgid "Party can only be one of {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:435
+#: accounts/doctype/payment_entry/payment_entry.py:437
 msgid "Party is mandatory"
 msgstr ""
 
@@ -47622,6 +47662,11 @@
 msgid "Payable Account"
 msgstr ""
 
+#. Name of a Workspace
+#: accounts/workspace/payables/payables.json
+msgid "Payables"
+msgstr ""
+
 #. Label of a Check field in DocType 'Email Digest'
 #: setup/doctype/email_digest/email_digest.json
 msgctxt "Email Digest"
@@ -47644,7 +47689,7 @@
 #: accounts/doctype/sales_invoice/sales_invoice_list.js:31
 #: buying/doctype/purchase_order/purchase_order.js:328
 #: buying/doctype/purchase_order/purchase_order_dashboard.py:20
-#: selling/doctype/sales_order/sales_order.js:612
+#: selling/doctype/sales_order/sales_order.js:606
 #: selling/doctype/sales_order/sales_order_dashboard.py:28
 msgid "Payment"
 msgstr ""
@@ -47752,7 +47797,7 @@
 msgid "Payment Entries"
 msgstr ""
 
-#: accounts/utils.py:909
+#: accounts/utils.py:937
 msgid "Payment Entries {0} are un-linked"
 msgstr ""
 
@@ -47785,7 +47830,13 @@
 
 #. Label of a Link in the Accounting Workspace
 #. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
+#. Label of a shortcut in the Payables Workspace
+#. Label of a Link in the Receivables Workspace
+#. Label of a shortcut in the Receivables Workspace
 #: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
 msgctxt "Payment Entry"
 msgid "Payment Entry"
 msgstr ""
@@ -47807,19 +47858,19 @@
 msgid "Payment Entry Reference"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:395
+#: accounts/doctype/payment_request/payment_request.py:410
 msgid "Payment Entry already exists"
 msgstr ""
 
-#: accounts/utils.py:583
+#: accounts/utils.py:604
 msgid "Payment Entry has been modified after you pulled it. Please pull it again."
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:544
+#: accounts/doctype/payment_request/payment_request.py:568
 msgid "Payment Entry is already created"
 msgstr ""
 
-#: controllers/accounts_controller.py:1130
+#: controllers/accounts_controller.py:1164
 msgid "Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice."
 msgstr ""
 
@@ -47862,8 +47913,8 @@
 msgid "Payment Gateway Account"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
-#: accounts/workspace/accounting/accounting.json
+#. Label of a Link in the Receivables Workspace
+#: accounts/workspace/receivables/receivables.json
 msgctxt "Payment Gateway Account"
 msgid "Payment Gateway Account"
 msgstr ""
@@ -47874,7 +47925,7 @@
 msgid "Payment Gateway Account"
 msgstr ""
 
-#: accounts/utils.py:1199
+#: accounts/utils.py:1227
 msgid "Payment Gateway Account not created, please create one manually."
 msgstr ""
 
@@ -47982,9 +48033,9 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Payment Period Based On Invoice Date"
 msgstr ""
 
@@ -48013,8 +48064,10 @@
 msgid "Payment Reconciliation"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
-#: accounts/workspace/accounting/accounting.json
+#. Label of a Link in the Payables Workspace
+#. Label of a Link in the Receivables Workspace
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
 msgctxt "Payment Reconciliation"
 msgid "Payment Reconciliation"
 msgstr ""
@@ -48029,7 +48082,7 @@
 msgid "Payment Reconciliation Invoice"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:118
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:120
 msgid "Payment Reconciliation Job: {0} is running for this party. Can't reconcile now."
 msgstr ""
 
@@ -48062,7 +48115,7 @@
 #: 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:611
+#: selling/doctype/sales_order/sales_order.js:605
 msgid "Payment Request"
 msgstr ""
 
@@ -48079,8 +48132,8 @@
 msgid "Payment Request"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
-#: accounts/workspace/accounting/accounting.json
+#. Label of a Link in the Receivables Workspace
+#: accounts/workspace/receivables/receivables.json
 msgctxt "Payment Request"
 msgid "Payment Request"
 msgstr ""
@@ -48091,7 +48144,7 @@
 msgid "Payment Request Type"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:478
+#: accounts/doctype/payment_request/payment_request.py:502
 msgid "Payment Request for {0}"
 msgstr ""
 
@@ -48099,6 +48152,10 @@
 msgid "Payment Request took too long to respond. Please try requesting for payment again."
 msgstr ""
 
+#: accounts/doctype/payment_request/payment_request.py:450
+msgid "Payment Requests cannot be created against: {0}"
+msgstr ""
+
 #. Name of a DocType
 #: accounts/doctype/payment_schedule/payment_schedule.json
 msgid "Payment Schedule"
@@ -48146,13 +48203,13 @@
 msgid "Payment Schedule"
 msgstr ""
 
-#: public/js/controllers/transaction.js:924
+#: 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:1041
+#: accounts/report/accounts_receivable/accounts_receivable.py:1064
 #: 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"
@@ -48320,19 +48377,19 @@
 msgid "Payment Type"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:499
+#: accounts/doctype/payment_entry/payment_entry.py:501
 msgid "Payment Type must be one of Receive, Pay and Internal Transfer"
 msgstr ""
 
-#: accounts/utils.py:899
+#: accounts/utils.py:927
 msgid "Payment Unlink Error"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:748
+#: accounts/doctype/journal_entry/journal_entry.py:764
 msgid "Payment against {0} {1} cannot be greater than Outstanding Amount {2}"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:656
+#: accounts/doctype/pos_invoice/pos_invoice.py:649
 msgid "Payment amount cannot be less than or equal to 0"
 msgstr ""
 
@@ -48349,7 +48406,7 @@
 msgid "Payment of {0} received successfully. Waiting for other requests to complete..."
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:313
+#: accounts/doctype/pos_invoice/pos_invoice.py:311
 msgid "Payment related to {0} is not completed"
 msgstr ""
 
@@ -48357,13 +48414,19 @@
 msgid "Payment request failed"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:711
+#: accounts/doctype/payment_entry/payment_entry.py:713
 msgid "Payment term {0} not used in {1}"
 msgstr ""
 
+#. Label of a Card Break in the Accounting Workspace
+#. Label of a Card Break in the Payables Workspace
+#. Label of a Card Break in the Receivables Workspace
 #: accounts/doctype/bank_account/bank_account_dashboard.py:13
 #: accounts/report/sales_payment_summary/sales_payment_summary.py:27
 #: accounts/report/sales_payment_summary/sales_payment_summary.py:43
+#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
 #: buying/doctype/supplier/supplier_dashboard.py:15
 #: selling/doctype/customer/customer_dashboard.py:22
 msgid "Payments"
@@ -48514,7 +48577,7 @@
 #: buying/report/purchase_order_analysis/purchase_order_analysis.py:218
 #: manufacturing/doctype/work_order/work_order.js:244
 #: manufacturing/report/production_plan_summary/production_plan_summary.py:155
-#: selling/doctype/sales_order/sales_order.js:997
+#: selling/doctype/sales_order/sales_order.js:991
 #: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:45
 msgid "Pending Qty"
 msgstr ""
@@ -48716,7 +48779,7 @@
 msgid "Period Based On"
 msgstr ""
 
-#: accounts/general_ledger.py:691
+#: accounts/general_ledger.py:690
 msgid "Period Closed"
 msgstr ""
 
@@ -48821,7 +48884,7 @@
 #: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:64
 #: accounts/report/financial_ratios/financial_ratios.js:33
 #: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:55
-#: public/js/financial_statements.js:161
+#: public/js/financial_statements.js:214
 msgid "Periodicity"
 msgstr ""
 
@@ -48866,7 +48929,8 @@
 msgid "Personal"
 msgstr ""
 
-#. Option for the 'Prefered Contact Email' (Select) field in DocType 'Employee'
+#. Option for the 'Preferred Contact Email' (Select) field in DocType
+#. 'Employee'
 #. Label of a Data field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
@@ -48970,7 +49034,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: selling/doctype/sales_order/sales_order.js:554
+#: selling/doctype/sales_order/sales_order.js:548
 #: stock/doctype/material_request/material_request.js:113
 #: stock/doctype/pick_list/pick_list.json
 msgid "Pick List"
@@ -49347,7 +49411,7 @@
 msgid "Please Select a Company."
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.js:148
+#: stock/doctype/delivery_note/delivery_note.js:139
 msgid "Please Select a Customer"
 msgstr ""
 
@@ -49361,7 +49425,7 @@
 msgid "Please Set Supplier Group in Buying Settings."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1060
+#: accounts/doctype/payment_entry/payment_entry.js:1071
 msgid "Please Specify Account"
 msgstr ""
 
@@ -49385,7 +49449,7 @@
 msgid "Please add a Temporary Opening account in Chart of Accounts"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:443
+#: public/js/utils/serial_no_batch_selector.js:535
 msgid "Please add atleast one Serial No / Batch No"
 msgstr ""
 
@@ -49405,7 +49469,7 @@
 msgid "Please add {1} role to user {0}."
 msgstr ""
 
-#: controllers/stock_controller.py:808
+#: controllers/stock_controller.py:909
 msgid "Please adjust the qty or edit {0} to proceed."
 msgstr ""
 
@@ -49413,11 +49477,11 @@
 msgid "Please attach CSV file"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2764
+#: accounts/doctype/sales_invoice/sales_invoice.py:2735
 msgid "Please cancel and amend the Payment Entry"
 msgstr ""
 
-#: accounts/utils.py:898
+#: accounts/utils.py:926
 msgid "Please cancel payment entry manually first"
 msgstr ""
 
@@ -49426,11 +49490,11 @@
 msgid "Please cancel related transaction."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:884
+#: accounts/doctype/journal_entry/journal_entry.py:836
 msgid "Please check Multi Currency option to allow accounts with other currency"
 msgstr ""
 
-#: accounts/deferred_revenue.py:578
+#: accounts/deferred_revenue.py:570
 msgid "Please check Process Deferred Accounting {0} and submit manually after resolving errors."
 msgstr ""
 
@@ -49450,7 +49514,7 @@
 msgid "Please check your email to confirm the appointment"
 msgstr ""
 
-#: public/js/controllers/transaction.js:916
+#: public/js/controllers/transaction.js:917
 msgid "Please clear the"
 msgstr ""
 
@@ -49466,7 +49530,7 @@
 msgid "Please click on 'Generate Schedule' to get schedule"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:537
+#: selling/doctype/customer/customer.py:538
 msgid "Please contact any of the following users to extend the credit limits for {0}: {1}"
 msgstr ""
 
@@ -49474,7 +49538,7 @@
 msgid "Please contact any of the following users to {} this transaction."
 msgstr ""
 
-#: selling/doctype/customer/customer.py:530
+#: selling/doctype/customer/customer.py:531
 msgid "Please contact your administrator to extend the credit limits for {0}."
 msgstr ""
 
@@ -49482,7 +49546,7 @@
 msgid "Please convert the parent account in corresponding child company to a group account."
 msgstr ""
 
-#: selling/doctype/quotation/quotation.py:549
+#: selling/doctype/quotation/quotation.py:554
 msgid "Please create Customer from Lead {0}."
 msgstr ""
 
@@ -49494,11 +49558,11 @@
 msgid "Please create a new Accounting Dimension if required."
 msgstr ""
 
-#: controllers/accounts_controller.py:531
+#: controllers/accounts_controller.py:534
 msgid "Please create purchase from internal sale or delivery document itself"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:326
+#: assets/doctype/asset/asset.py:327
 msgid "Please create purchase receipt or purchase invoice for the item {0}"
 msgstr ""
 
@@ -49506,11 +49570,11 @@
 msgid "Please delete Product Bundle {0}, before merging {1} into {2}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:365
+#: assets/doctype/asset/asset.py:366
 msgid "Please do not book expense of multiple assets against one single Asset."
 msgstr ""
 
-#: controllers/item_variant.py:230
+#: controllers/item_variant.py:234
 msgid "Please do not create more than 500 items at a time"
 msgstr ""
 
@@ -49523,7 +49587,7 @@
 msgstr ""
 
 #: buying/doctype/request_for_quotation/request_for_quotation.js:135
-#: public/js/utils/serial_no_batch_selector.js:217
+#: public/js/utils/serial_no_batch_selector.js:289
 #: regional/report/electronic_invoice_register/electronic_invoice_register.js:49
 msgid "Please enable pop-ups"
 msgstr ""
@@ -49536,7 +49600,7 @@
 msgid "Please enable {} in {} to allow same item in multiple rows"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:868
+#: accounts/doctype/sales_invoice/sales_invoice.py:871
 msgid "Please ensure {} account is a Balance Sheet account."
 msgstr ""
 
@@ -49548,7 +49612,7 @@
 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:877
+#: accounts/doctype/sales_invoice/sales_invoice.py:880
 msgid "Please ensure {} account {} is a Receivable account."
 msgstr ""
 
@@ -49556,8 +49620,8 @@
 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:432
-#: accounts/doctype/sales_invoice/sales_invoice.py:1021
+#: accounts/doctype/pos_invoice/pos_invoice.py:430
+#: accounts/doctype/sales_invoice/sales_invoice.py:1024
 msgid "Please enter Account for Change Amount"
 msgstr ""
 
@@ -49565,11 +49629,11 @@
 msgid "Please enter Approving Role or Approving User"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:696
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:697
 msgid "Please enter Cost Center"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:319
+#: selling/doctype/sales_order/sales_order.py:322
 msgid "Please enter Delivery Date"
 msgstr ""
 
@@ -49577,7 +49641,7 @@
 msgid "Please enter Employee Id of this sales person"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:707
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:708
 msgid "Please enter Expense Account"
 msgstr ""
 
@@ -49586,7 +49650,7 @@
 msgid "Please enter Item Code to get Batch Number"
 msgstr ""
 
-#: public/js/controllers/transaction.js:2206
+#: public/js/controllers/transaction.js:2236
 msgid "Please enter Item Code to get batch no"
 msgstr ""
 
@@ -49595,7 +49659,7 @@
 msgstr ""
 
 #: maintenance/doctype/maintenance_schedule/maintenance_schedule.py:225
-msgid "Please enter Maintaince Details first"
+msgid "Please enter Maintenance Details first"
 msgstr ""
 
 #: manufacturing/doctype/production_plan/production_plan.py:177
@@ -49618,7 +49682,7 @@
 msgid "Please enter Receipt Document"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:949
+#: accounts/doctype/journal_entry/journal_entry.py:901
 msgid "Please enter Reference date"
 msgstr ""
 
@@ -49630,6 +49694,10 @@
 msgid "Please enter Root Type for account- {0}"
 msgstr ""
 
+#: public/js/utils/serial_no_batch_selector.js:258
+msgid "Please enter Serial Nos"
+msgstr ""
+
 #: stock/doctype/shipment/shipment.py:83
 msgid "Please enter Shipment Parcel information"
 msgstr ""
@@ -49647,7 +49715,7 @@
 msgstr ""
 
 #: accounts/doctype/purchase_invoice/purchase_invoice.py:609
-#: accounts/doctype/sales_invoice/sales_invoice.py:1017
+#: accounts/doctype/sales_invoice/sales_invoice.py:1020
 msgid "Please enter Write Off Account"
 msgstr ""
 
@@ -49659,7 +49727,7 @@
 msgid "Please enter company name first"
 msgstr ""
 
-#: controllers/accounts_controller.py:2309
+#: controllers/accounts_controller.py:2378
 msgid "Please enter default currency in Company Master"
 msgstr ""
 
@@ -49675,7 +49743,7 @@
 msgid "Please enter parent cost center"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:145
+#: public/js/utils/barcode_scanner.js:160
 msgid "Please enter quantity for item {0}"
 msgstr ""
 
@@ -49687,11 +49755,11 @@
 msgid "Please enter serial nos"
 msgstr ""
 
-#: setup/doctype/company/company.js:147
+#: setup/doctype/company/company.js:155
 msgid "Please enter the company name to confirm"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:659
+#: accounts/doctype/pos_invoice/pos_invoice.py:652
 msgid "Please enter the phone number first"
 msgstr ""
 
@@ -49739,7 +49807,7 @@
 msgid "Please make sure the file you are using has 'Parent Account' column present in the header."
 msgstr ""
 
-#: setup/doctype/company/company.js:149
+#: setup/doctype/company/company.js:157
 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 ""
 
@@ -49747,11 +49815,11 @@
 msgid "Please mention 'Weight UOM' along with Weight."
 msgstr ""
 
-#: accounts/general_ledger.py:556
+#: accounts/general_ledger.py:555
 msgid "Please mention Round Off Account in Company"
 msgstr ""
 
-#: accounts/general_ledger.py:559
+#: accounts/general_ledger.py:558
 msgid "Please mention Round Off Cost Center in Company"
 msgstr ""
 
@@ -49788,12 +49856,12 @@
 msgid "Please select <b>Template Type</b> to download template"
 msgstr ""
 
-#: controllers/taxes_and_totals.py:641
-#: public/js/controllers/taxes_and_totals.js:675
+#: controllers/taxes_and_totals.py:651
+#: public/js/controllers/taxes_and_totals.js:688
 msgid "Please select Apply Discount On"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:1455
+#: selling/doctype/sales_order/sales_order.py:1469
 msgid "Please select BOM against item {0}"
 msgstr ""
 
@@ -49809,12 +49877,12 @@
 msgid "Please select Category first"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1184
+#: accounts/doctype/payment_entry/payment_entry.js:1195
 #: 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:411
+#: accounts/doctype/journal_entry/journal_entry.js:401
 msgid "Please select Company"
 msgstr ""
 
@@ -49823,7 +49891,7 @@
 msgid "Please select Company and Posting Date to getting entries"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:631
+#: accounts/doctype/journal_entry/journal_entry.js:606
 msgid "Please select Company first"
 msgstr ""
 
@@ -49836,7 +49904,7 @@
 msgid "Please select Customer first"
 msgstr ""
 
-#: setup/doctype/company/company.py:406
+#: setup/doctype/company/company.py:407
 msgid "Please select Existing Company for creating Chart of Accounts"
 msgstr ""
 
@@ -49864,15 +49932,15 @@
 msgid "Please select Posting Date before selecting Party"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:632
+#: accounts/doctype/journal_entry/journal_entry.js:607
 msgid "Please select Posting Date first"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1002
+#: manufacturing/doctype/bom/bom.py:1004
 msgid "Please select Price List"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:1457
+#: selling/doctype/sales_order/sales_order.py:1471
 msgid "Please select Qty against item {0}"
 msgstr ""
 
@@ -49892,11 +49960,11 @@
 msgid "Please select Subcontracting Order instead of Purchase Order {0}"
 msgstr ""
 
-#: controllers/accounts_controller.py:2219
+#: controllers/accounts_controller.py:2288
 msgid "Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:1227
+#: manufacturing/doctype/bom/bom.py:1229
 msgid "Please select a BOM"
 msgstr ""
 
@@ -49905,9 +49973,9 @@
 msgstr ""
 
 #: accounts/doctype/payment_entry/payment_entry.js:168
-#: manufacturing/doctype/bom/bom.js:482 manufacturing/doctype/bom/bom.py:243
-#: public/js/controllers/accounts.js:248
-#: public/js/controllers/transaction.js:2454
+#: manufacturing/doctype/bom/bom.js:482 manufacturing/doctype/bom/bom.py:245
+#: public/js/controllers/accounts.js:249
+#: public/js/controllers/transaction.js:2484
 msgid "Please select a Company first."
 msgstr ""
 
@@ -49975,7 +50043,7 @@
 msgid "Please select a value for {0} quotation_to {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1684
+#: accounts/doctype/journal_entry/journal_entry.py:1570
 msgid "Please select correct account"
 msgstr ""
 
@@ -50036,8 +50104,8 @@
 msgid "Please select {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:980
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:547
+#: accounts/doctype/payment_entry/payment_entry.js:991
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:575
 #: accounts/doctype/tax_withholding_category/tax_withholding_category.py:81
 msgid "Please select {0} first"
 msgstr ""
@@ -50046,11 +50114,11 @@
 msgid "Please set 'Apply Additional Discount On'"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:788
+#: assets/doctype/asset/depreciation.py:790
 msgid "Please set 'Asset Depreciation Cost Center' in Company {0}"
 msgstr ""
 
-#: assets/doctype/asset/depreciation.py:785
+#: assets/doctype/asset/depreciation.py:787
 msgid "Please set 'Gain/Loss Account on Asset Disposal' in Company {0}"
 msgstr ""
 
@@ -50102,7 +50170,7 @@
 msgid "Please set Fixed Asset Account in {} against {}."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:434
+#: assets/doctype/asset/asset.py:435
 msgid "Please set Number of Depreciations Booked"
 msgstr ""
 
@@ -50132,11 +50200,11 @@
 msgid "Please set a Company"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:261
+#: assets/doctype/asset/asset.py:262
 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:1246
+#: selling/doctype/sales_order/sales_order.py:1260
 msgid "Please set a Supplier against the Items to be considered in the Purchase Order."
 msgstr ""
 
@@ -50148,7 +50216,7 @@
 msgid "Please set a default Holiday List for Employee {0} or Company {1}"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1003
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:991
 msgid "Please set account in Warehouse {0}"
 msgstr ""
 
@@ -50157,7 +50225,7 @@
 msgid "Please set an Address on the Company '%s'"
 msgstr ""
 
-#: controllers/stock_controller.py:342
+#: controllers/stock_controller.py:334
 msgid "Please set an Expense Account in the Items table"
 msgstr ""
 
@@ -50169,27 +50237,27 @@
 msgid "Please set at least one row in the Taxes and Charges Table"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2064
+#: accounts/doctype/sales_invoice/sales_invoice.py:2041
 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:2628
+#: accounts/doctype/sales_invoice/sales_invoice.py:2599
 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:2630
+#: accounts/doctype/sales_invoice/sales_invoice.py:2601
 msgid "Please set default Cash or Bank account in Mode of Payments {}"
 msgstr ""
 
-#: accounts/utils.py:2057
+#: accounts/utils.py:2086
 msgid "Please set default Exchange Gain/Loss Account in Company {}"
 msgstr ""
 
-#: assets/doctype/asset_repair/asset_repair.py:335
+#: assets/doctype/asset_repair/asset_repair.py:331
 msgid "Please set default Expense Account in Company {0}"
 msgstr ""
 
@@ -50197,11 +50265,11 @@
 msgid "Please set default UOM in Stock Settings"
 msgstr ""
 
-#: controllers/stock_controller.py:208
+#: controllers/stock_controller.py:204
 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:918
+#: accounts/utils.py:946
 msgid "Please set default {0} in Company {1}"
 msgstr ""
 
@@ -50218,11 +50286,11 @@
 msgid "Please set filters"
 msgstr ""
 
-#: controllers/accounts_controller.py:1827
+#: controllers/accounts_controller.py:1896
 msgid "Please set one of the following:"
 msgstr ""
 
-#: public/js/controllers/transaction.js:1937
+#: public/js/controllers/transaction.js:1967
 msgid "Please set recurring after saving"
 msgstr ""
 
@@ -50275,7 +50343,7 @@
 msgid "Please share this email with your support team so that they can find and fix the issue."
 msgstr ""
 
-#: public/js/controllers/transaction.js:1807
+#: public/js/controllers/transaction.js:1837
 msgid "Please specify"
 msgstr ""
 
@@ -50289,8 +50357,8 @@
 msgid "Please specify Company to proceed"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1195
-#: controllers/accounts_controller.py:2442 public/js/controllers/accounts.js:97
+#: accounts/doctype/payment_entry/payment_entry.js:1206
+#: controllers/accounts_controller.py:2511 public/js/controllers/accounts.js:97
 msgid "Please specify a valid Row ID for row {0} in table {1}"
 msgstr ""
 
@@ -50302,7 +50370,7 @@
 msgid "Please specify at least one attribute in the Attributes table"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:371
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:372
 msgid "Please specify either Quantity or Valuation Rate or both"
 msgstr ""
 
@@ -50439,7 +50507,7 @@
 msgstr ""
 
 #: accounts/doctype/payment_entry/payment_entry.js:644
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:258
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:279
 #: 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
@@ -50448,10 +50516,10 @@
 #: accounts/report/bank_clearance_summary/bank_clearance_summary.py:35
 #: 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:560
+#: accounts/report/general_ledger/general_ledger.py:563
 #: 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:193
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:200
 #: accounts/report/payment_ledger/payment_ledger.py:136
 #: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:97
 #: accounts/report/pos_register/pos_register.py:177
@@ -50759,7 +50827,7 @@
 msgid "Posting Time"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1645
+#: stock/doctype/stock_entry/stock_entry.py:1641
 msgid "Posting date and posting time is mandatory"
 msgstr ""
 
@@ -50775,20 +50843,20 @@
 msgid "Pre Sales"
 msgstr ""
 
+#: setup/setup_wizard/operations/install_fixtures.py:260
+msgid "Preference"
+msgstr ""
+
 #. Label of a Select field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
-msgid "Prefered Contact Email"
+msgid "Preferred Contact Email"
 msgstr ""
 
 #. Label of a Data field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
-msgid "Prefered Email"
-msgstr ""
-
-#: setup/setup_wizard/operations/install_fixtures.py:260
-msgid "Preference"
+msgid "Preferred Email"
 msgstr ""
 
 #. Label of a Data field in DocType 'Packed Item'
@@ -51325,7 +51393,7 @@
 msgid "Price is not set for the item."
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:458
+#: manufacturing/doctype/bom/bom.py:460
 msgid "Price not found for item {0} in price list {1}"
 msgstr ""
 
@@ -52206,7 +52274,7 @@
 msgid "Process Loss"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:985
+#: manufacturing/doctype/bom/bom.py:987
 msgid "Process Loss Percentage cannot be greater than 100"
 msgstr ""
 
@@ -52512,7 +52580,7 @@
 
 #. Label of a Card Break in the Manufacturing Workspace
 #: manufacturing/workspace/manufacturing/manufacturing.json
-#: setup/doctype/company/company.py:346
+#: setup/doctype/company/company.py:347
 msgid "Production"
 msgstr ""
 
@@ -52684,7 +52752,6 @@
 msgstr ""
 
 #: setup/setup_wizard/operations/install_fixtures.py:39
-#: templates/pages/home.html:31
 msgid "Products"
 msgstr ""
 
@@ -52721,7 +52788,7 @@
 
 #. Label of a chart in the Accounting Workspace
 #: accounts/workspace/accounting/accounting.json
-#: public/js/financial_statements.js:84
+#: public/js/financial_statements.js:136
 msgid "Profit and Loss"
 msgstr ""
 
@@ -52732,9 +52799,9 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/profit_and_loss_statement/profit_and_loss_statement.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Profit and Loss Statement"
 msgstr ""
 
@@ -52755,15 +52822,15 @@
 msgid "Profit for the year"
 msgstr ""
 
-#. Label of a Card Break in the Accounting Workspace
-#: accounts/workspace/accounting/accounting.json
+#. Label of a Card Break in the Financial Reports Workspace
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Profitability"
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/profitability_analysis/profitability_analysis.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Profitability Analysis"
 msgstr ""
 
@@ -52790,10 +52857,10 @@
 #: accounts/doctype/sales_invoice/sales_invoice.js:973
 #: 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:631
+#: accounts/report/general_ledger/general_ledger.py:634
 #: 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:258
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:265
 #: accounts/report/purchase_register/purchase_register.py:207
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:73
 #: accounts/report/sales_register/sales_register.py:228
@@ -52812,9 +52879,9 @@
 #: 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.py:25
-#: public/js/financial_statements.js:194 public/js/projects/timer.js:10
+#: public/js/financial_statements.js:247 public/js/projects/timer.js:10
 #: public/js/purchase_trends_filters.js:52 public/js/sales_trends_filters.js:28
-#: selling/doctype/sales_order/sales_order.js:593
+#: selling/doctype/sales_order/sales_order.js:587
 #: 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.py:184
@@ -53528,10 +53595,6 @@
 msgid "Provisional Profit / Loss (Credit)"
 msgstr ""
 
-#: templates/pages/home.html:51
-msgid "Publications"
-msgstr ""
-
 #. Label of a Date field in DocType 'Video'
 #: utilities/doctype/video/video.json
 msgctxt "Video"
@@ -53548,7 +53611,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:334
+#: setup/doctype/company/company.py:335
 msgid "Purchase"
 msgstr ""
 
@@ -53644,11 +53707,11 @@
 #: 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.py:54
 #: buying/doctype/purchase_order/purchase_order.js:323
-#: buying/doctype/purchase_order/purchase_order_list.js:37
+#: buying/doctype/purchase_order/purchase_order_list.js:39
 #: 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:20
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:22
 #: stock/doctype/stock_entry/stock_entry.js:262
 msgid "Purchase Invoice"
 msgstr ""
@@ -53711,10 +53774,12 @@
 msgid "Purchase Invoice"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
 #. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
+#. Label of a shortcut in the Payables Workspace
 #. Label of a Link in the Buying Workspace
 #: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
 #: buying/workspace/buying/buying.json
 msgctxt "Purchase Invoice"
 msgid "Purchase Invoice"
@@ -53762,15 +53827,15 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #. Label of a Link in the Buying Workspace
 #: accounts/report/purchase_invoice_trends/purchase_invoice_trends.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 #: buying/workspace/buying/buying.json
 msgid "Purchase Invoice Trends"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:212
+#: assets/doctype/asset/asset.py:213
 msgid "Purchase Invoice cannot be made against an existing asset {0}"
 msgstr ""
 
@@ -53779,7 +53844,7 @@
 msgid "Purchase Invoice {0} is already submitted"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1811
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1769
 msgid "Purchase Invoices"
 msgstr ""
 
@@ -53794,7 +53859,7 @@
 #: crm/doctype/contract/contract.json
 #: crm/doctype/contract_template/contract_template.json
 #: setup/doctype/incoterm/incoterm.json
-#: setup/doctype/supplier_group/supplier_group.json
+#: 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
 #: subcontracting/doctype/subcontracting_order/subcontracting_order.json
@@ -53822,8 +53887,8 @@
 #: 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:109
-#: selling/doctype/sales_order/sales_order.js:582
+#: 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
 msgid "Purchase Order"
@@ -53923,12 +53988,12 @@
 msgid "Purchase Order Amount(Company Currency)"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
 #. Name of a report
 #. Label of a Link in the Buying Workspace
 #. Label of a shortcut in the Buying Workspace
 #. Label of a Link in the Stock Workspace
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
 #: buying/report/purchase_order_analysis/purchase_order_analysis.json
 #: buying/workspace/buying/buying.json stock/workspace/stock/stock.json
 msgid "Purchase Order Analysis"
@@ -54026,7 +54091,7 @@
 msgid "Purchase Order Trends"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:963
+#: selling/doctype/sales_order/sales_order.js:957
 msgid "Purchase Order already created for all Sales Order items"
 msgstr ""
 
@@ -54038,7 +54103,7 @@
 msgid "Purchase Order {0} is not submitted"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:820
+#: buying/doctype/purchase_order/purchase_order.py:824
 msgid "Purchase Orders"
 msgstr ""
 
@@ -54048,7 +54113,7 @@
 msgid "Purchase Orders Items Overdue"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:297
+#: buying/doctype/purchase_order/purchase_order.py:301
 msgid "Purchase Orders are not allowed for {0} due to a scorecard standing of {1}."
 msgstr ""
 
@@ -54064,7 +54129,7 @@
 msgid "Purchase Orders to Receive"
 msgstr ""
 
-#: controllers/accounts_controller.py:1476
+#: controllers/accounts_controller.py:1517
 msgid "Purchase Orders {0} are un-linked"
 msgstr ""
 
@@ -54081,7 +54146,7 @@
 #: 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:41
+#: buying/doctype/purchase_order/purchase_order_list.js:43
 #: stock/doctype/purchase_receipt/purchase_receipt.json
 #: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:56
 msgid "Purchase Receipt"
@@ -54236,9 +54301,9 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
 #: accounts/report/purchase_register/purchase_register.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
 msgid "Purchase Register"
 msgstr ""
 
@@ -54513,14 +54578,14 @@
 #: 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:321
-#: selling/doctype/sales_order/sales_order.js:416
-#: selling/doctype/sales_order/sales_order.js:704
-#: selling/doctype/sales_order/sales_order.js:821
+#: 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
 #: 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:71
+#: stock/report/serial_no_ledger/serial_no_ledger.py:70
 #: templates/generators/bom.html:50 templates/pages/rfq.html:40
 msgid "Qty"
 msgstr ""
@@ -54868,7 +54933,7 @@
 msgid "Qty to Deliver"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:249
+#: public/js/utils/serial_no_batch_selector.js:321
 msgid "Qty to Fetch"
 msgstr ""
 
@@ -55218,7 +55283,7 @@
 msgid "Quality Inspection(s)"
 msgstr ""
 
-#: setup/doctype/company/company.py:376
+#: setup/doctype/company/company.py:377
 msgid "Quality Management"
 msgstr ""
 
@@ -55322,7 +55387,7 @@
 #: 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:321
+#: public/js/utils/serial_no_batch_selector.js:393
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:42
 #: selling/report/sales_analytics/sales_analytics.js:29
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:67
@@ -55591,11 +55656,11 @@
 msgid "Quantity of item obtained after manufacturing / repacking from given quantities of raw materials"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:621
+#: manufacturing/doctype/bom/bom.py:623
 msgid "Quantity required for Item {0} in row {1}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:566
+#: manufacturing/doctype/bom/bom.py:568
 msgid "Quantity should be greater than 0"
 msgstr ""
 
@@ -55623,7 +55688,7 @@
 msgid "Quantity to Produce should be greater than zero."
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:212
+#: public/js/utils/barcode_scanner.js:227
 msgid "Quantity to Scan"
 msgstr ""
 
@@ -55637,7 +55702,7 @@
 #: 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:165
+#: public/js/financial_statements.js:218
 #: 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
@@ -55737,7 +55802,7 @@
 msgid "Quick Entry"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:537
+#: accounts/doctype/journal_entry/journal_entry.js:527
 msgid "Quick Journal Entry"
 msgstr ""
 
@@ -55780,7 +55845,7 @@
 #: crm/report/lead_details/lead_details.js:38
 #: manufacturing/doctype/blanket_order/blanket_order.js:33
 #: selling/doctype/quotation/quotation.json
-#: selling/doctype/sales_order/sales_order.js:619
+#: selling/doctype/sales_order/sales_order.js:613
 msgid "Quotation"
 msgstr ""
 
@@ -55888,15 +55953,15 @@
 msgid "Quotation Trends"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:380
+#: selling/doctype/sales_order/sales_order.py:383
 msgid "Quotation {0} is cancelled"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:297
+#: selling/doctype/sales_order/sales_order.py:300
 msgid "Quotation {0} not of type {1}"
 msgstr ""
 
-#: selling/doctype/quotation/quotation.py:325
+#: selling/doctype/quotation/quotation.py:326
 #: selling/page/sales_funnel/sales_funnel.py:57
 msgid "Quotations"
 msgstr ""
@@ -55973,7 +56038,7 @@
 #: accounts/doctype/pos_closing_entry/closing_voucher_details.html:66
 #: 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:308
+#: 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
 #: selling/report/item_wise_sales_history/item_wise_sales_history.py:45
 #: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:68
@@ -56136,12 +56201,6 @@
 msgid "Rate"
 msgstr ""
 
-#. Label of a Float field in DocType 'Purchase Taxes and Charges'
-#: accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.json
-msgctxt "Purchase Taxes and Charges"
-msgid "Rate"
-msgstr ""
-
 #. Label of a Currency field in DocType 'Quotation Item'
 #: selling/doctype/quotation_item/quotation_item.json
 msgctxt "Quotation Item"
@@ -56160,12 +56219,6 @@
 msgid "Rate"
 msgstr ""
 
-#. Label of a Float field in DocType 'Sales Taxes and Charges'
-#: accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.json
-msgctxt "Sales Taxes and Charges"
-msgid "Rate"
-msgstr ""
-
 #. Label of a Int field in DocType 'Share Balance'
 #: accounts/doctype/share_balance/share_balance.json
 msgctxt "Share Balance"
@@ -56757,15 +56810,15 @@
 msgid "Raw Materials Warehouse"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:614
+#: manufacturing/doctype/bom/bom.py:616
 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:532
-#: selling/doctype/sales_order/sales_order_list.js:47
+#: 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
 #: subcontracting/doctype/subcontracting_order/subcontracting_order.js:106
 msgid "Re-open"
@@ -56793,10 +56846,6 @@
 msgid "Read Only"
 msgstr ""
 
-#: templates/pages/home.html:63
-msgid "Read blog"
-msgstr ""
-
 #. Label of a Data field in DocType 'Quality Inspection Reading'
 #: stock/doctype/quality_inspection_reading/quality_inspection_reading.json
 msgctxt "Quality Inspection Reading"
@@ -56889,7 +56938,7 @@
 msgstr ""
 
 #: buying/doctype/purchase_order/purchase_order.js:565
-#: selling/doctype/sales_order/sales_order.js:1118
+#: selling/doctype/sales_order/sales_order.js:1112
 msgid "Reason for Hold"
 msgstr ""
 
@@ -56899,11 +56948,11 @@
 msgid "Reason for Leaving"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:1133
+#: selling/doctype/sales_order/sales_order.js:1127
 msgid "Reason for hold:"
 msgstr ""
 
-#: manufacturing/doctype/bom_creator/bom_creator.js:133
+#: manufacturing/doctype/bom_creator/bom_creator.js:144
 msgid "Rebuild Tree"
 msgstr ""
 
@@ -56997,7 +57046,7 @@
 msgstr ""
 
 #: accounts/report/accounts_receivable/accounts_receivable.js:67
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:229
+#: 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
 msgid "Receivable Account"
@@ -57013,6 +57062,11 @@
 msgid "Receivable/Payable Account: {0} doesn't belong to company {1}"
 msgstr ""
 
+#. Name of a Workspace
+#: accounts/workspace/receivables/receivables.json
+msgid "Receivables"
+msgstr ""
+
 #. Label of a Check field in DocType 'Email Digest'
 #: setup/doctype/email_digest/email_digest.json
 msgctxt "Email Digest"
@@ -57069,7 +57123,7 @@
 msgid "Received Amount After Tax (Company Currency)"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:874
+#: accounts/doctype/payment_entry/payment_entry.py:891
 msgid "Received Amount cannot be greater than Paid Amount"
 msgstr ""
 
@@ -57078,9 +57132,9 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
 #: accounts/report/received_items_to_be_billed/received_items_to_be_billed.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
 msgid "Received Items To Be Billed"
 msgstr ""
 
@@ -57232,7 +57286,7 @@
 msgid "Reconcile"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:304
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:325
 msgid "Reconcile Entries"
 msgstr ""
 
@@ -57303,7 +57357,7 @@
 msgid "Records"
 msgstr ""
 
-#: regional/united_arab_emirates/utils.py:178
+#: regional/united_arab_emirates/utils.py:176
 msgid "Recoverable Standard Rated expenses should not be set when Reverse Charge Applicable is Y"
 msgstr ""
 
@@ -57428,7 +57482,7 @@
 #: manufacturing/doctype/job_card/job_card_dashboard.py:10
 #: manufacturing/doctype/work_order/work_order_dashboard.py:10
 #: selling/doctype/sales_order/sales_order_dashboard.py:27
-#: stock/doctype/delivery_note/delivery_note_dashboard.py:22
+#: stock/doctype/delivery_note/delivery_note_dashboard.py:23
 #: stock/doctype/material_request/material_request_dashboard.py:14
 #: stock/doctype/purchase_receipt/purchase_receipt_dashboard.py:27
 #: subcontracting/doctype/subcontracting_order/subcontracting_order_dashboard.py:7
@@ -57576,7 +57630,7 @@
 msgid "Reference"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:947
+#: accounts/doctype/journal_entry/journal_entry.py:899
 msgid "Reference #{0} dated {1}"
 msgstr ""
 
@@ -57590,7 +57644,7 @@
 msgid "Reference Date"
 msgstr ""
 
-#: public/js/controllers/transaction.js:2043
+#: public/js/controllers/transaction.js:2073
 msgid "Reference Date for Early Payment Discount"
 msgstr ""
 
@@ -57612,7 +57666,7 @@
 msgid "Reference Doctype"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:553
+#: accounts/doctype/payment_entry/payment_entry.py:555
 msgid "Reference Doctype must be one of {0}"
 msgstr ""
 
@@ -57781,19 +57835,19 @@
 msgid "Reference Name"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:516
+#: accounts/doctype/journal_entry/journal_entry.py:532
 msgid "Reference No & Reference Date is required for {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1067
+#: accounts/doctype/payment_entry/payment_entry.py:1087
 msgid "Reference No and Reference Date is mandatory for Bank transaction"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:521
+#: accounts/doctype/journal_entry/journal_entry.py:537
 msgid "Reference No is mandatory if you entered Reference Date"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:255
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:260
 msgid "Reference No."
 msgstr ""
 
@@ -57974,7 +58028,7 @@
 msgid "References"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:629
+#: accounts/doctype/payment_entry/payment_entry.py:631
 msgid "References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount."
 msgstr ""
 
@@ -58010,7 +58064,7 @@
 msgid "Refresh Token"
 msgstr ""
 
-#: stock/reorder_item.py:264
+#: stock/reorder_item.py:303
 msgid "Regards,"
 msgstr ""
 
@@ -58141,7 +58195,7 @@
 
 #: buying/doctype/purchase_order/purchase_order_dashboard.py:19
 #: buying/doctype/supplier_quotation/supplier_quotation_dashboard.py:14
-#: stock/doctype/delivery_note/delivery_note_dashboard.py:21
+#: stock/doctype/delivery_note/delivery_note_dashboard.py:22
 #: stock/doctype/purchase_receipt/purchase_receipt_dashboard.py:23
 msgid "Related"
 msgstr ""
@@ -58184,7 +58238,7 @@
 msgstr ""
 
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:186
-#: accounts/report/accounts_receivable/accounts_receivable.py:1062
+#: accounts/report/accounts_receivable/accounts_receivable.py:1085
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:181
 msgid "Remaining Balance"
 msgstr ""
@@ -58212,8 +58266,8 @@
 #: 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:1094
-#: accounts/report/general_ledger/general_ledger.py:658
+#: accounts/report/accounts_receivable/accounts_receivable.py:1117
+#: accounts/report/general_ledger/general_ledger.py:661
 #: 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
@@ -58336,7 +58390,7 @@
 msgid "Remarks Column Length"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:322
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:323
 msgid "Removed items with no change in quantity or value."
 msgstr ""
 
@@ -58389,9 +58443,9 @@
 msgid "Rented"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:32
+#: buying/doctype/purchase_order/purchase_order_list.js:34
 #: crm/doctype/opportunity/opportunity.js:113
-#: stock/doctype/delivery_note/delivery_note.js:237
+#: stock/doctype/delivery_note/delivery_note.js:228
 #: stock/doctype/purchase_receipt/purchase_receipt.js:240
 #: support/doctype/issue/issue.js:30
 msgid "Reopen"
@@ -58549,14 +58603,21 @@
 msgid "Report Type is mandatory"
 msgstr ""
 
-#. Label of a Card Break in the Accounting Workspace
+#: accounts/report/balance_sheet/balance_sheet.js:17
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:17
+msgid "Report View"
+msgstr ""
+
+#. Label of a Card Break in the Payables Workspace
+#. Label of a Card Break in the Receivables Workspace
 #. Label of a Card Break in the Assets Workspace
 #. Label of a Card Break in the CRM Workspace
 #. Label of a Card Break in the Manufacturing Workspace
 #. Label of a Card Break in the Projects Workspace
 #. Label of a Card Break in the Support Workspace
 #: accounts/doctype/cost_center/cost_center_dashboard.py:7
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
 #: assets/workspace/assets/assets.json config/projects.py:73
 #: crm/workspace/crm/crm.json
 #: manufacturing/workspace/manufacturing/manufacturing.json
@@ -58825,7 +58886,7 @@
 msgid "Request for Quotation Supplier"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:577
+#: selling/doctype/sales_order/sales_order.js:571
 msgid "Request for Raw Materials"
 msgstr ""
 
@@ -58839,6 +58900,13 @@
 msgid "Requested"
 msgstr ""
 
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Sales
+#. Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "Requested"
+msgstr ""
+
 #. Name of a report
 #. Label of a Link in the Stock Workspace
 #: stock/report/requested_items_to_be_transferred/requested_items_to_be_transferred.json
@@ -59038,7 +59106,7 @@
 msgid "Research"
 msgstr ""
 
-#: setup/doctype/company/company.py:382
+#: setup/doctype/company/company.py:383
 msgid "Research & Development"
 msgstr ""
 
@@ -59089,7 +59157,7 @@
 msgid "Reserve"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:328
+#: selling/doctype/sales_order/sales_order.js:322
 msgid "Reserve Stock"
 msgstr ""
 
@@ -59180,16 +59248,16 @@
 msgid "Reserved Quantity for Production"
 msgstr ""
 
-#: stock/stock_ledger.py:1893
+#: stock/stock_ledger.py:1982
 msgid "Reserved Serial No."
 msgstr ""
 
 #. Name of a report
 #: selling/doctype/sales_order/sales_order.js:79
-#: selling/doctype/sales_order/sales_order.js:380
+#: selling/doctype/sales_order/sales_order.js:374
 #: stock/doctype/pick_list/pick_list.js:120
 #: stock/report/reserved_stock/reserved_stock.json
-#: stock/report/stock_balance/stock_balance.py:459 stock/stock_ledger.py:1873
+#: stock/report/stock_balance/stock_balance.py:459 stock/stock_ledger.py:1962
 msgid "Reserved Stock"
 msgstr ""
 
@@ -59199,7 +59267,7 @@
 msgid "Reserved Stock"
 msgstr ""
 
-#: stock/stock_ledger.py:1923
+#: stock/stock_ledger.py:2012
 msgid "Reserved Stock for Batch"
 msgstr ""
 
@@ -59231,7 +59299,7 @@
 msgid "Reserved for sub contracting"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:341
+#: selling/doctype/sales_order/sales_order.js:335
 #: stock/doctype/pick_list/pick_list.js:237
 msgid "Reserving Stock..."
 msgstr ""
@@ -59481,7 +59549,7 @@
 msgstr ""
 
 #: buying/doctype/purchase_order/purchase_order.js:290
-#: selling/doctype/sales_order/sales_order.js:521
+#: selling/doctype/sales_order/sales_order.js:515
 msgid "Resume"
 msgstr ""
 
@@ -59739,7 +59807,7 @@
 
 #: accounts/doctype/purchase_invoice/purchase_invoice_dashboard.py:25
 #: accounts/doctype/sales_invoice/sales_invoice_dashboard.py:35
-#: stock/doctype/delivery_note/delivery_note_dashboard.py:23
+#: stock/doctype/delivery_note/delivery_note_dashboard.py:24
 #: stock/doctype/purchase_receipt/purchase_receipt_dashboard.py:30
 #: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt_dashboard.py:27
 msgid "Returns"
@@ -60236,7 +60304,7 @@
 msgid "Rounding Loss Allowance should be between 0 and 1"
 msgstr ""
 
-#: controllers/stock_controller.py:222 controllers/stock_controller.py:239
+#: controllers/stock_controller.py:216 controllers/stock_controller.py:231
 msgid "Rounding gain/loss Entry for Stock Transfer"
 msgstr ""
 
@@ -60246,12 +60314,6 @@
 msgid "Route"
 msgstr ""
 
-#. Label of a Data field in DocType 'Homepage Section Card'
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgctxt "Homepage Section Card"
-msgid "Route"
-msgstr ""
-
 #. Label of a Data field in DocType 'Sales Partner'
 #: setup/doctype/sales_partner/sales_partner.json
 msgctxt "Sales Partner"
@@ -60283,11 +60345,11 @@
 msgid "Routing Name"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:427
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:428
 msgid "Row #"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:333
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:334
 msgid "Row # {0}:"
 msgstr ""
 
@@ -60303,13 +60365,13 @@
 msgid "Row # {0}: Returned Item {1} does not exist in {2} {3}"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:441
-#: accounts/doctype/sales_invoice/sales_invoice.py:1738
+#: accounts/doctype/pos_invoice/pos_invoice.py:439
+#: accounts/doctype/sales_invoice/sales_invoice.py:1715
 msgid "Row #{0} (Payment Table): Amount must be negative"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:439
-#: accounts/doctype/sales_invoice/sales_invoice.py:1733
+#: accounts/doctype/pos_invoice/pos_invoice.py:437
+#: accounts/doctype/sales_invoice/sales_invoice.py:1710
 msgid "Row #{0} (Payment Table): Amount must be positive"
 msgstr ""
 
@@ -60338,20 +60400,20 @@
 msgid "Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1}"
 msgstr ""
 
-#: controllers/accounts_controller.py:853
+#: controllers/accounts_controller.py:887
 msgid "Row #{0}: Account {1} does not belong to company {2}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:303
-#: accounts/doctype/payment_entry/payment_entry.py:387
+#: accounts/doctype/payment_entry/payment_entry.py:305
+#: accounts/doctype/payment_entry/payment_entry.py:389
 msgid "Row #{0}: Allocated Amount cannot be greater than outstanding amount."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:399
+#: accounts/doctype/payment_entry/payment_entry.py:401
 msgid "Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:300
+#: assets/doctype/asset_capitalization/asset_capitalization.py:309
 msgid "Row #{0}: Amount must be a positive number"
 msgstr ""
 
@@ -60359,7 +60421,7 @@
 msgid "Row #{0}: Asset {1} cannot be submitted, it is already {2}"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:347
+#: buying/doctype/purchase_order/purchase_order.py:351
 msgid "Row #{0}: BOM is not specified for subcontracting item {0}"
 msgstr ""
 
@@ -60367,27 +60429,27 @@
 msgid "Row #{0}: Batch No {1} is already selected."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:734
+#: accounts/doctype/payment_entry/payment_entry.py:736
 msgid "Row #{0}: Cannot allocate more than {1} against payment term {2}"
 msgstr ""
 
-#: controllers/accounts_controller.py:3005
+#: controllers/accounts_controller.py:3064
 msgid "Row #{0}: Cannot delete item {1} which has already been billed."
 msgstr ""
 
-#: controllers/accounts_controller.py:2979
+#: controllers/accounts_controller.py:3038
 msgid "Row #{0}: Cannot delete item {1} which has already been delivered"
 msgstr ""
 
-#: controllers/accounts_controller.py:2998
+#: controllers/accounts_controller.py:3057
 msgid "Row #{0}: Cannot delete item {1} which has already been received"
 msgstr ""
 
-#: controllers/accounts_controller.py:2985
+#: controllers/accounts_controller.py:3044
 msgid "Row #{0}: Cannot delete item {1} which has work order assigned to it."
 msgstr ""
 
-#: controllers/accounts_controller.py:2991
+#: controllers/accounts_controller.py:3050
 msgid "Row #{0}: Cannot delete item {1} which is assigned to customer's purchase order."
 msgstr ""
 
@@ -60395,7 +60457,7 @@
 msgid "Row #{0}: Cannot select Supplier Warehouse while suppling raw materials to subcontractor"
 msgstr ""
 
-#: controllers/accounts_controller.py:3250
+#: controllers/accounts_controller.py:3309
 msgid "Row #{0}: Cannot set Rate if amount is greater than billed amount for Item {1}."
 msgstr ""
 
@@ -60411,23 +60473,23 @@
 msgid "Row #{0}: Clearance date {1} cannot be before Cheque Date {2}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:277
+#: assets/doctype/asset_capitalization/asset_capitalization.py:286
 msgid "Row #{0}: Consumed Asset {1} cannot be Draft"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:279
+#: assets/doctype/asset_capitalization/asset_capitalization.py:288
 msgid "Row #{0}: Consumed Asset {1} cannot be cancelled"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:264
+#: assets/doctype/asset_capitalization/asset_capitalization.py:273
 msgid "Row #{0}: Consumed Asset {1} cannot be the same as the Target Asset"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:273
+#: assets/doctype/asset_capitalization/asset_capitalization.py:282
 msgid "Row #{0}: Consumed Asset {1} cannot be {2}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:283
+#: assets/doctype/asset_capitalization/asset_capitalization.py:292
 msgid "Row #{0}: Consumed Asset {1} does not belong to company {2}"
 msgstr ""
 
@@ -60443,31 +60505,31 @@
 msgid "Row #{0}: Dates overlapping with other row"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:371
+#: buying/doctype/purchase_order/purchase_order.py:375
 msgid "Row #{0}: Default BOM not found for FG Item {1}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:270
+#: accounts/doctype/payment_entry/payment_entry.py:272
 msgid "Row #{0}: Duplicate entry in References {1} {2}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:234
+#: selling/doctype/sales_order/sales_order.py:237
 msgid "Row #{0}: Expected Delivery Date cannot be before Purchase Order Date"
 msgstr ""
 
-#: controllers/stock_controller.py:344
+#: controllers/stock_controller.py:336
 msgid "Row #{0}: Expense Account not set for the Item {1}. {2}"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:374
+#: buying/doctype/purchase_order/purchase_order.py:378
 msgid "Row #{0}: Finished Good Item Qty can not be zero"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:358
+#: buying/doctype/purchase_order/purchase_order.py:362
 msgid "Row #{0}: Finished Good Item is not specified for service item {1}"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:365
+#: buying/doctype/purchase_order/purchase_order.py:369
 msgid "Row #{0}: Finished Good Item {1} must be a sub-contracted item"
 msgstr ""
 
@@ -60475,11 +60537,11 @@
 msgid "Row #{0}: Finished Good reference is mandatory for Scrap Item {1}."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:555
+#: accounts/doctype/journal_entry/journal_entry.py:571
 msgid "Row #{0}: For {1}, you can select reference document only if account gets credited"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:561
+#: accounts/doctype/journal_entry/journal_entry.py:577
 msgid "Row #{0}: For {1}, you can select reference document only if account gets debited"
 msgstr ""
 
@@ -60487,7 +60549,7 @@
 msgid "Row #{0}: From Date cannot be before To Date"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:474
+#: public/js/utils/barcode_scanner.js:489
 msgid "Row #{0}: Item added"
 msgstr ""
 
@@ -60499,19 +60561,19 @@
 msgid "Row #{0}: Item {1} has been picked, please reserve stock from the Pick List."
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:490
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:491
 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:294
+#: assets/doctype/asset_capitalization/asset_capitalization.py:303
 msgid "Row #{0}: Item {1} is not a service item"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:252
+#: assets/doctype/asset_capitalization/asset_capitalization.py:261
 msgid "Row #{0}: Item {1} is not a stock item"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:655
+#: accounts/doctype/payment_entry/payment_entry.py:657
 msgid "Row #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher"
 msgstr ""
 
@@ -60519,7 +60581,7 @@
 msgid "Row #{0}: Maximum Net Rate cannot be greater than Minimum Net Rate"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:532
+#: selling/doctype/sales_order/sales_order.py:535
 msgid "Row #{0}: Not allowed to change Supplier as Purchase Order already exists"
 msgstr ""
 
@@ -60551,16 +60613,16 @@
 msgid "Row #{0}: Please set reorder quantity"
 msgstr ""
 
-#: controllers/accounts_controller.py:364
+#: controllers/accounts_controller.py:367
 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:472
+#: public/js/utils/barcode_scanner.js:487
 msgid "Row #{0}: Qty increased by {1}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:255
-#: assets/doctype/asset_capitalization/asset_capitalization.py:297
+#: assets/doctype/asset_capitalization/asset_capitalization.py:264
+#: assets/doctype/asset_capitalization/asset_capitalization.py:306
 msgid "Row #{0}: Qty must be a positive number"
 msgstr ""
 
@@ -60568,8 +60630,8 @@
 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:984
-#: controllers/accounts_controller.py:3107
+#: controllers/accounts_controller.py:1018
+#: controllers/accounts_controller.py:3166
 msgid "Row #{0}: Quantity for Item {1} cannot be zero."
 msgstr ""
 
@@ -60585,11 +60647,11 @@
 msgid "Row #{0}: Received Qty must be equal to Accepted + Rejected Qty for Item {1}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:1005
+#: accounts/doctype/payment_entry/payment_entry.js:1016
 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:997
+#: accounts/doctype/payment_entry/payment_entry.js:1008
 msgid "Row #{0}: Reference Document Type must be one of Sales Order, Sales Invoice, Journal Entry or Dunning"
 msgstr ""
 
@@ -60633,19 +60695,19 @@
 msgid "Row #{0}: Serial No {1} is already selected."
 msgstr ""
 
-#: controllers/accounts_controller.py:392
+#: controllers/accounts_controller.py:395
 msgid "Row #{0}: Service End Date cannot be before Invoice Posting Date"
 msgstr ""
 
-#: controllers/accounts_controller.py:388
+#: controllers/accounts_controller.py:391
 msgid "Row #{0}: Service Start Date cannot be greater than Service End Date"
 msgstr ""
 
-#: controllers/accounts_controller.py:384
+#: controllers/accounts_controller.py:387
 msgid "Row #{0}: Service Start and End Date is required for deferred accounting"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:388
+#: selling/doctype/sales_order/sales_order.py:391
 msgid "Row #{0}: Set Supplier for item {1}"
 msgstr ""
 
@@ -60653,7 +60715,7 @@
 msgid "Row #{0}: Status is mandatory"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:365
+#: accounts/doctype/journal_entry/journal_entry.py:381
 msgid "Row #{0}: Status must be {1} for Invoice Discounting {2}"
 msgstr ""
 
@@ -60689,7 +60751,7 @@
 msgid "Row #{0}: The batch {1} has already expired."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1710
+#: accounts/doctype/sales_invoice/sales_invoice.py:1687
 msgid "Row #{0}: The following Serial Nos are not present in Delivery Note {1}:"
 msgstr ""
 
@@ -60701,11 +60763,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:1409
+#: accounts/doctype/sales_invoice/sales_invoice.py:1402
 msgid "Row #{0}: You must select an Asset for Item {1}."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1719
+#: accounts/doctype/sales_invoice/sales_invoice.py:1696
 msgid "Row #{0}: {1} Serial numbers required for Item {2}. You have provided {3}."
 msgstr ""
 
@@ -60733,15 +60795,15 @@
 msgid "Row #{}: Currency of {} - {} doesn't matches company currency."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:274
+#: assets/doctype/asset/asset.py:275
 msgid "Row #{}: Depreciation Posting Date should not be equal to Available for Use Date."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:307
+#: assets/doctype/asset/asset.py:308
 msgid "Row #{}: Finance Book should not be empty since you're using multiple."
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:340
+#: accounts/doctype/pos_invoice/pos_invoice.py:338
 msgid "Row #{}: Item Code: {} is not available under warehouse {}."
 msgstr ""
 
@@ -60762,23 +60824,23 @@
 msgstr ""
 
 #: assets/doctype/asset_maintenance/asset_maintenance.py:43
-msgid "Row #{}: Please asign task to a member."
+msgid "Row #{}: Please assign task to a member."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:299
+#: assets/doctype/asset/asset.py:300
 msgid "Row #{}: Please use a different Finance Book."
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:400
+#: accounts/doctype/pos_invoice/pos_invoice.py:398
 msgid "Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {}"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:347
+#: accounts/doctype/pos_invoice/pos_invoice.py:345
 msgid "Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}."
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:373
-msgid "Row #{}: You cannot add postive quantities in a return invoice. Please remove item {} to complete the return."
+#: accounts/doctype/pos_invoice/pos_invoice.py:371
+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
@@ -60821,11 +60883,11 @@
 msgid "Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:493
+#: accounts/doctype/journal_entry/journal_entry.py:509
 msgid "Row {0}: Account {1} and Party Type {2} have different account types"
 msgstr ""
 
-#: controllers/accounts_controller.py:2467
+#: controllers/accounts_controller.py:2536
 msgid "Row {0}: Account {1} is a Group Account"
 msgstr ""
 
@@ -60833,19 +60895,19 @@
 msgid "Row {0}: Activity Type is mandatory."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:545
+#: accounts/doctype/journal_entry/journal_entry.py:561
 msgid "Row {0}: Advance against Customer must be credit"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:547
+#: accounts/doctype/journal_entry/journal_entry.py:563
 msgid "Row {0}: Advance against Supplier must be debit"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:643
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:671
 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:635
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:663
 msgid "Row {0}: Allocated amount {1} must be less than or equal to remaining payment amount {2}"
 msgstr ""
 
@@ -60853,7 +60915,7 @@
 msgid "Row {0}: Bill of Materials not found for the Item {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:844
+#: accounts/doctype/journal_entry/journal_entry.py:796
 msgid "Row {0}: Both Debit and Credit values cannot be zero"
 msgstr ""
 
@@ -60861,7 +60923,7 @@
 msgid "Row {0}: Conversion Factor is mandatory"
 msgstr ""
 
-#: controllers/accounts_controller.py:2480
+#: controllers/accounts_controller.py:2549
 msgid "Row {0}: Cost Center {1} does not belong to Company {2}"
 msgstr ""
 
@@ -60869,15 +60931,15 @@
 msgid "Row {0}: Cost center is required for an item {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:631
+#: accounts/doctype/journal_entry/journal_entry.py:647
 msgid "Row {0}: Credit entry can not be linked with a {1}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:432
+#: manufacturing/doctype/bom/bom.py:434
 msgid "Row {0}: Currency of the BOM #{1} should be equal to the selected currency {2}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:626
+#: accounts/doctype/journal_entry/journal_entry.py:642
 msgid "Row {0}: Debit entry can not be linked with a {1}"
 msgstr ""
 
@@ -60885,11 +60947,11 @@
 msgid "Row {0}: Delivery Warehouse ({1}) and Customer Warehouse ({2}) can not be same"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:416
+#: assets/doctype/asset/asset.py:417
 msgid "Row {0}: Depreciation Start Date is required"
 msgstr ""
 
-#: controllers/accounts_controller.py:2140
+#: controllers/accounts_controller.py:2209
 msgid "Row {0}: Due Date in the Payment Terms table cannot be before Posting Date"
 msgstr ""
 
@@ -60901,12 +60963,12 @@
 msgid "Row {0}: Enter location for the asset item {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:934
-#: controllers/taxes_and_totals.py:1106
+#: accounts/doctype/journal_entry/journal_entry.py:886
+#: controllers/taxes_and_totals.py:1115
 msgid "Row {0}: Exchange Rate is mandatory"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:407
+#: assets/doctype/asset/asset.py:408
 msgid "Row {0}: Expected Value After Useful Life must be less than Gross Purchase Amount"
 msgstr ""
 
@@ -60935,7 +60997,7 @@
 msgid "Row {0}: From Time and To Time of {1} is overlapping with {2}"
 msgstr ""
 
-#: controllers/stock_controller.py:739
+#: controllers/stock_controller.py:730
 msgid "Row {0}: From Warehouse is mandatory for internal transfers"
 msgstr ""
 
@@ -60947,11 +61009,11 @@
 msgid "Row {0}: Hours value must be greater than zero."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:649
+#: accounts/doctype/journal_entry/journal_entry.py:665
 msgid "Row {0}: Invalid reference {1}"
 msgstr ""
 
-#: controllers/taxes_and_totals.py:127
+#: controllers/taxes_and_totals.py:128
 msgid "Row {0}: Item Tax template updated as per validity and rate applied"
 msgstr ""
 
@@ -60975,11 +61037,11 @@
 msgid "Row {0}: Packing Slip is already created for Item {1}."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:671
+#: accounts/doctype/journal_entry/journal_entry.py:687
 msgid "Row {0}: Party / Account does not match with {1} / {2} in {3} {4}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:484
+#: accounts/doctype/journal_entry/journal_entry.py:500
 msgid "Row {0}: Party Type and Party is required for Receivable / Payable account {1}"
 msgstr ""
 
@@ -60987,11 +61049,11 @@
 msgid "Row {0}: Payment Term is mandatory"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:538
+#: accounts/doctype/journal_entry/journal_entry.py:554
 msgid "Row {0}: Payment against Sales/Purchase Order should always be marked as advance"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:531
+#: accounts/doctype/journal_entry/journal_entry.py:547
 msgid "Row {0}: Please check 'Is Advance' against Account {1} if this is an advance entry."
 msgstr ""
 
@@ -61055,7 +61117,7 @@
 msgid "Row {0}: Subcontracted Item is mandatory for the raw material {1}"
 msgstr ""
 
-#: controllers/stock_controller.py:730
+#: controllers/stock_controller.py:721
 msgid "Row {0}: Target Warehouse is mandatory for internal transfers"
 msgstr ""
 
@@ -61067,7 +61129,7 @@
 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:440
+#: assets/doctype/asset/asset.py:441
 msgid "Row {0}: Total Number of Depreciations cannot be less than or equal to Number of Depreciations Booked"
 msgstr ""
 
@@ -61075,7 +61137,7 @@
 msgid "Row {0}: UOM Conversion Factor is mandatory"
 msgstr ""
 
-#: controllers/accounts_controller.py:783
+#: controllers/accounts_controller.py:786
 msgid "Row {0}: user has not applied the rule {1} on the item {2}"
 msgstr ""
 
@@ -61087,15 +61149,15 @@
 msgid "Row {0}: {1} must be greater than 0"
 msgstr ""
 
-#: controllers/accounts_controller.py:508
+#: controllers/accounts_controller.py:511
 msgid "Row {0}: {1} {2} cannot be same as {3} (Party Account) {4}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:685
+#: accounts/doctype/journal_entry/journal_entry.py:701
 msgid "Row {0}: {1} {2} does not match with {3}"
 msgstr ""
 
-#: controllers/accounts_controller.py:2459
+#: controllers/accounts_controller.py:2528
 msgid "Row {0}: {3} Account {1} does not belong to Company {2}"
 msgstr ""
 
@@ -61130,7 +61192,7 @@
 msgid "Rows with Same Account heads will be merged on Ledger"
 msgstr ""
 
-#: controllers/accounts_controller.py:2149
+#: controllers/accounts_controller.py:2218
 msgid "Rows with duplicate due dates in other rows were found: {0}"
 msgstr ""
 
@@ -61138,7 +61200,7 @@
 msgid "Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually."
 msgstr ""
 
-#: controllers/accounts_controller.py:208
+#: controllers/accounts_controller.py:211
 msgid "Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry."
 msgstr ""
 
@@ -61377,7 +61439,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:328 setup/doctype/company/company.py:491
+#: setup/doctype/company/company.py:329 setup/doctype/company/company.py:492
 #: setup/doctype/company/company_dashboard.py:9
 #: setup/doctype/sales_person/sales_person_dashboard.py:12
 #: setup/setup_wizard/operations/install_fixtures.py:250
@@ -61415,7 +61477,7 @@
 msgid "Sales"
 msgstr ""
 
-#: setup/doctype/company/company.py:491
+#: setup/doctype/company/company.py:492
 msgid "Sales Account"
 msgstr ""
 
@@ -61461,9 +61523,9 @@
 #: 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:571
-#: selling/doctype/sales_order/sales_order_list.js:51
-#: stock/doctype/delivery_note/delivery_note.js:231
+#: 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
 msgid "Sales Invoice"
 msgstr ""
@@ -61525,11 +61587,13 @@
 msgid "Sales Invoice"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
 #. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
+#. Label of a shortcut in the Receivables Workspace
 #. Label of a Link in the Selling Workspace
 #. Label of a shortcut in the Home Workspace
 #: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
 #: selling/workspace/selling/selling.json setup/workspace/home/home.json
 msgctxt "Sales Invoice"
 msgid "Sales Invoice"
@@ -61604,10 +61668,10 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #. Label of a Link in the Selling Workspace
 #: accounts/report/sales_invoice_trends/sales_invoice_trends.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 #: selling/workspace/selling/selling.json
 msgid "Sales Invoice Trends"
 msgstr ""
@@ -61616,7 +61680,7 @@
 msgid "Sales Invoice {0} has already been submitted"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:469
+#: selling/doctype/sales_order/sales_order.py:472
 msgid "Sales Invoice {0} must be deleted before cancelling this Sales Order"
 msgstr ""
 
@@ -61648,7 +61712,7 @@
 #: setup/doctype/incoterm/incoterm.json
 #: setup/doctype/sales_partner/sales_partner.json
 #: setup/doctype/sales_person/sales_person.json
-#: setup/doctype/territory/territory.json
+#: setup/doctype/territory/territory.json stock/doctype/bin/bin.json
 #: stock/doctype/packing_slip/packing_slip.json
 msgid "Sales Manager"
 msgstr ""
@@ -61679,10 +61743,14 @@
 msgid "Sales Monthly History"
 msgstr ""
 
+#: selling/page/sales_funnel/sales_funnel.js:129
+msgid "Sales Opportunities by Source"
+msgstr ""
+
 #. Name of a DocType
 #. Title of an Onboarding Step
 #: accounts/doctype/sales_invoice/sales_invoice.js:236
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:272
+#: 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
@@ -61700,7 +61768,7 @@
 #: 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.py:222
-#: stock/doctype/delivery_note/delivery_note.js:143
+#: 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/report/delayed_item_report/delayed_item_report.py:155
@@ -61832,11 +61900,11 @@
 msgid "Sales Order"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
 #. Name of a report
 #. Label of a Link in the Selling Workspace
 #. Label of a Link in the Stock Workspace
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
 #: selling/report/sales_order_analysis/sales_order_analysis.json
 #: selling/workspace/selling/selling.json stock/workspace/stock/stock.json
 msgid "Sales Order Analysis"
@@ -61855,8 +61923,8 @@
 msgstr ""
 
 #. Name of a DocType
-#: selling/doctype/sales_order/sales_order.js:266
-#: selling/doctype/sales_order/sales_order.js:710
+#: selling/doctype/sales_order/sales_order.js:260
+#: selling/doctype/sales_order/sales_order.js:704
 #: selling/doctype/sales_order_item/sales_order_item.json
 msgid "Sales Order Item"
 msgstr ""
@@ -61945,11 +62013,11 @@
 msgid "Sales Order required for Item {0}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:255
+#: selling/doctype/sales_order/sales_order.py:258
 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:1139
+#: accounts/doctype/sales_invoice/sales_invoice.py:1142
 msgid "Sales Order {0} is not submitted"
 msgstr ""
 
@@ -61991,7 +62059,7 @@
 
 #. Name of a DocType
 #: accounts/report/accounts_receivable/accounts_receivable.js:133
-#: accounts/report/accounts_receivable/accounts_receivable.py:1083
+#: accounts/report/accounts_receivable/accounts_receivable.py:1106
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:117
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:197
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.js:74
@@ -62123,25 +62191,25 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #. Label of a Link in the Selling Workspace
 #: accounts/report/sales_partners_commission/sales_partners_commission.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 #: selling/workspace/selling/selling.json
 msgid "Sales Partners Commission"
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/sales_payment_summary/sales_payment_summary.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Sales Payment Summary"
 msgstr ""
 
 #. 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:1080
+#: accounts/report/accounts_receivable/accounts_receivable.py:1103
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:123
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:194
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.js:80
@@ -62237,19 +62305,23 @@
 msgid "Sales Pipeline Analytics"
 msgstr ""
 
+#: selling/page/sales_funnel/sales_funnel.js:131
+msgid "Sales Pipeline by Stage"
+msgstr ""
+
 #: stock/report/item_prices/item_prices.py:58
 msgid "Sales Price List"
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
 #: accounts/report/sales_register/sales_register.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
 msgid "Sales Register"
 msgstr ""
 
 #: accounts/report/gross_profit/gross_profit.py:777
-#: stock/doctype/delivery_note/delivery_note.js:184
+#: stock/doctype/delivery_note/delivery_note.js:175
 msgid "Sales Return"
 msgstr ""
 
@@ -62522,7 +62594,7 @@
 msgid "Same Item"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:349
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:350
 msgid "Same item and warehouse combination already entered."
 msgstr ""
 
@@ -62553,7 +62625,7 @@
 msgstr ""
 
 #: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:93
-#: public/js/controllers/transaction.js:2101
+#: public/js/controllers/transaction.js:2131
 msgid "Sample Size"
 msgstr ""
 
@@ -62563,7 +62635,7 @@
 msgid "Sample Size"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2828
+#: stock/doctype/stock_entry/stock_entry.py:2824
 msgid "Sample quantity {0} cannot be more than received quantity {1}"
 msgstr ""
 
@@ -62637,7 +62709,7 @@
 msgstr ""
 
 #: accounts/doctype/bank_statement_import/bank_statement_import.js:139
-#: accounts/doctype/journal_entry/journal_entry.js:560
+#: accounts/doctype/journal_entry/journal_entry.js:550
 #: accounts/doctype/ledger_merge/ledger_merge.js:75
 #: accounts/doctype/purchase_invoice/purchase_invoice.js:252
 #: accounts/doctype/purchase_invoice/purchase_invoice.js:288
@@ -62658,7 +62730,7 @@
 msgid "Savings"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:191
+#: public/js/utils/barcode_scanner.js:206
 msgid "Scan Barcode"
 msgstr ""
 
@@ -62734,7 +62806,7 @@
 msgid "Scan Barcode"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:147
+#: public/js/utils/serial_no_batch_selector.js:151
 msgid "Scan Batch No"
 msgstr ""
 
@@ -62750,11 +62822,11 @@
 msgid "Scan Mode"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:132
+#: public/js/utils/serial_no_batch_selector.js:136
 msgid "Scan Serial No"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:157
+#: public/js/utils/barcode_scanner.js:172
 msgid "Scan barcode for item {0}"
 msgstr ""
 
@@ -62768,7 +62840,7 @@
 msgid "Scanned Cheque"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:223
+#: public/js/utils/barcode_scanner.js:238
 msgid "Scanned Quantity"
 msgstr ""
 
@@ -63060,36 +63132,11 @@
 msgid "Secondary Role"
 msgstr ""
 
-#. Label of a Select field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Section Based On"
-msgstr ""
-
-#. Label of a Section Break field in DocType 'Homepage Section'
-#. Label of a Table field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Section Cards"
-msgstr ""
-
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:169
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:174
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:117
 msgid "Section Code"
 msgstr ""
 
-#. Label of a Code field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Section HTML"
-msgstr ""
-
-#. Label of a Int field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Section Order"
-msgstr ""
-
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:95
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:140
 msgid "Secured Loans"
@@ -63109,7 +63156,7 @@
 msgstr ""
 
 #: buying/doctype/purchase_order/purchase_order.js:180
-#: selling/doctype/sales_order/sales_order.js:894
+#: selling/doctype/sales_order/sales_order.js:888
 msgid "Select"
 msgstr ""
 
@@ -63129,19 +63176,19 @@
 msgid "Select Attribute Values"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:695
+#: selling/doctype/sales_order/sales_order.js:689
 msgid "Select BOM"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:684
+#: selling/doctype/sales_order/sales_order.js:678
 msgid "Select BOM and Qty for Production"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:809
+#: selling/doctype/sales_order/sales_order.js:803
 msgid "Select BOM, Qty and For Warehouse"
 msgstr ""
 
-#: public/js/utils/sales_common.js:316
+#: 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
 msgid "Select Batch No"
@@ -63190,7 +63237,7 @@
 msgid "Select Default Supplier"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:231
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:252
 msgid "Select Difference Account"
 msgstr ""
 
@@ -63212,19 +63259,19 @@
 msgid "Select Finished Good"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:968
+#: selling/doctype/sales_order/sales_order.js:962
 msgid "Select Items"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:867
+#: selling/doctype/sales_order/sales_order.js:861
 msgid "Select Items based on Delivery Date"
 msgstr ""
 
-#: public/js/controllers/transaction.js:2129
+#: public/js/controllers/transaction.js:2159
 msgid "Select Items for Quality Inspection"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:719
+#: selling/doctype/sales_order/sales_order.js:713
 msgid "Select Items to Manufacture"
 msgstr ""
 
@@ -63248,13 +63295,13 @@
 msgid "Select Quantity"
 msgstr ""
 
-#: public/js/utils/sales_common.js:316
+#: 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
 msgid "Select Serial No"
 msgstr ""
 
-#: public/js/utils/sales_common.js:319 stock/doctype/pick_list/pick_list.js:321
+#: public/js/utils/sales_common.js:328 stock/doctype/pick_list/pick_list.js:321
 msgid "Select Serial and Batch"
 msgstr ""
 
@@ -63290,6 +63337,11 @@
 msgid "Select Time"
 msgstr ""
 
+#: accounts/report/balance_sheet/balance_sheet.js:14
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:14
+msgid "Select View"
+msgstr ""
+
 #: public/js/bank_reconciliation_tool/dialog_manager.js:248
 msgid "Select Vouchers to Match"
 msgstr ""
@@ -63330,7 +63382,7 @@
 msgid "Select a company"
 msgstr ""
 
-#: stock/doctype/item/item.js:823
+#: stock/doctype/item/item.js:809
 msgid "Select an Item Group."
 msgstr ""
 
@@ -63342,7 +63394,7 @@
 msgid "Select an item from each set to be used in the Sales Order."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1566
+#: accounts/doctype/sales_invoice/sales_invoice.py:1549
 msgid "Select change amount account"
 msgstr ""
 
@@ -63357,7 +63409,7 @@
 msgid "Select company name first."
 msgstr ""
 
-#: controllers/accounts_controller.py:2325
+#: controllers/accounts_controller.py:2394
 msgid "Select finance book for the item {0} at row {1}"
 msgstr ""
 
@@ -63429,7 +63481,7 @@
 msgid "Selected POS Opening Entry should be open."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2221
+#: accounts/doctype/sales_invoice/sales_invoice.py:2192
 msgid "Selected Price List should have buying and selling fields checked."
 msgstr ""
 
@@ -63711,7 +63763,7 @@
 msgid "Serial / Batch Bundle"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:364
+#: accounts/doctype/pos_invoice/pos_invoice.py:362
 msgid "Serial / Batch Bundle Missing"
 msgstr ""
 
@@ -63728,14 +63780,14 @@
 #. 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.py:116
-#: public/js/controllers/transaction.js:2114
-#: public/js/utils/serial_no_batch_selector.js:278
+#: public/js/controllers/transaction.js:2144
+#: public/js/utils/serial_no_batch_selector.js:350
 #: 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.py:58
+#: stock/report/serial_no_ledger/serial_no_ledger.py:57
 #: stock/report/stock_ledger/stock_ledger.py:246
 msgid "Serial No"
 msgstr ""
@@ -63940,7 +63992,7 @@
 msgid "Serial No and Batch for Finished Good"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:574
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:577
 msgid "Serial No is mandatory"
 msgstr ""
 
@@ -63948,11 +64000,11 @@
 msgid "Serial No is mandatory for Item {0}"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:388
+#: public/js/utils/serial_no_batch_selector.js:480
 msgid "Serial No {0} already exists"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:296
+#: public/js/utils/barcode_scanner.js:311
 msgid "Serial No {0} already scanned"
 msgstr ""
 
@@ -63969,12 +64021,16 @@
 msgid "Serial No {0} does not exist"
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:387
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2112
+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:482
-#: public/js/utils/barcode_scanner.js:489
+#: public/js/utils/barcode_scanner.js:499
+#: public/js/utils/barcode_scanner.js:506
 msgid "Serial No {0} is already added"
 msgstr ""
 
@@ -63994,19 +64050,19 @@
 msgid "Serial No: {0} has already been transacted into another POS Invoice."
 msgstr ""
 
-#: public/js/utils/barcode_scanner.js:247
+#: public/js/utils/barcode_scanner.js:262
 #: public/js/utils/serial_no_batch_selector.js:15
-#: public/js/utils/serial_no_batch_selector.js:174
+#: public/js/utils/serial_no_batch_selector.js:178
 #: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:48
 msgid "Serial Nos"
 msgstr ""
 
 #: public/js/utils/serial_no_batch_selector.js:20
-#: public/js/utils/serial_no_batch_selector.js:179
+#: public/js/utils/serial_no_batch_selector.js:183
 msgid "Serial Nos / Batch Nos"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1715
+#: accounts/doctype/sales_invoice/sales_invoice.py:1692
 msgid "Serial Nos Mismatch"
 msgstr ""
 
@@ -64016,11 +64072,11 @@
 msgid "Serial Nos and Batches"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1048
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1074
 msgid "Serial Nos are created successfully"
 msgstr ""
 
-#: stock/stock_ledger.py:1883
+#: stock/stock_ledger.py:1972
 msgid "Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding."
 msgstr ""
 
@@ -64141,11 +64197,11 @@
 msgid "Serial and Batch Bundle"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1227
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1253
 msgid "Serial and Batch Bundle created"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1269
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1295
 msgid "Serial and Batch Bundle updated"
 msgstr ""
 
@@ -64200,11 +64256,11 @@
 msgid "Serial and Batch Summary"
 msgstr ""
 
-#: stock/utils.py:380
+#: stock/utils.py:427
 msgid "Serial number {0} entered more than once"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:555
+#: accounts/doctype/journal_entry/journal_entry.js:545
 msgid "Series"
 msgstr ""
 
@@ -64743,11 +64799,11 @@
 msgid "Service Stop Date"
 msgstr ""
 
-#: accounts/deferred_revenue.py:48 public/js/controllers/transaction.js:1237
+#: accounts/deferred_revenue.py:48 public/js/controllers/transaction.js:1239
 msgid "Service Stop Date cannot be after Service End Date"
 msgstr ""
 
-#: accounts/deferred_revenue.py:45 public/js/controllers/transaction.js:1234
+#: accounts/deferred_revenue.py:45 public/js/controllers/transaction.js:1236
 msgid "Service Stop Date cannot be before Service Start Date"
 msgstr ""
 
@@ -64825,10 +64881,6 @@
 msgid "Set Loyalty Program"
 msgstr ""
 
-#: portal/doctype/homepage/homepage.js:6
-msgid "Set Meta Tags"
-msgstr ""
-
 #: accounts/doctype/purchase_invoice/purchase_invoice.js:272
 msgid "Set New Release Date"
 msgstr ""
@@ -64945,7 +64997,7 @@
 msgid "Set Valuation Rate Based on Source Warehouse"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:190
+#: selling/doctype/sales_order/sales_order.js:184
 msgid "Set Warehouse"
 msgstr ""
 
@@ -64958,7 +65010,7 @@
 msgid "Set as Completed"
 msgstr ""
 
-#: public/js/utils/sales_common.js:397
+#: public/js/utils/sales_common.js:406
 #: selling/doctype/quotation/quotation.js:124
 msgid "Set as Lost"
 msgstr ""
@@ -64968,11 +65020,11 @@
 msgid "Set as Open"
 msgstr ""
 
-#: setup/doctype/company/company.py:418
+#: setup/doctype/company/company.py:419
 msgid "Set default inventory account for perpetual inventory"
 msgstr ""
 
-#: setup/doctype/company/company.py:428
+#: setup/doctype/company/company.py:429
 msgid "Set default {0} account for non stock items"
 msgstr ""
 
@@ -65022,15 +65074,15 @@
 msgid "Set up your Warehouse"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:664
+#: assets/doctype/asset/asset.py:672
 msgid "Set {0} in asset category {1} for company {2}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:949
+#: assets/doctype/asset/asset.py:953
 msgid "Set {0} in asset category {1} or company {2}"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:945
+#: assets/doctype/asset/asset.py:949
 msgid "Set {0} in company {1}"
 msgstr ""
 
@@ -65110,12 +65162,11 @@
 msgid "Setting up company"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:954
+#: manufacturing/doctype/bom/bom.py:956
 #: manufacturing/doctype/work_order/work_order.py:978
 msgid "Setting {} is required"
 msgstr ""
 
-#. Label of a Card Break in the Accounting Workspace
 #. Label of a Card Break in the Buying Workspace
 #. Label of a Card Break in the CRM Workspace
 #. Label of a Card Break in the Manufacturing Workspace
@@ -65124,7 +65175,6 @@
 #. Name of a Workspace
 #. Label of a Card Break in the Stock Workspace
 #. Label of a Card Break in the Support Workspace
-#: accounts/workspace/accounting/accounting.json
 #: buying/workspace/buying/buying.json crm/workspace/crm/crm.json
 #: manufacturing/workspace/manufacturing/manufacturing.json
 #: projects/workspace/projects/projects.json
@@ -65281,7 +65331,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: stock/doctype/delivery_note/delivery_note.js:175
+#: stock/doctype/delivery_note/delivery_note.js:166
 #: stock/doctype/shipment/shipment.json
 msgid "Shipment"
 msgstr ""
@@ -65701,7 +65751,7 @@
 msgid "Show Completed"
 msgstr ""
 
-#: accounts/report/budget_variance_report/budget_variance_report.js:111
+#: accounts/report/budget_variance_report/budget_variance_report.js:107
 msgid "Show Cumulative Amount"
 msgstr ""
 
@@ -65862,7 +65912,7 @@
 msgid "Show only the Immediate Upcoming Term"
 msgstr ""
 
-#: stock/utils.py:541
+#: stock/utils.py:588
 msgid "Show pending entries"
 msgstr ""
 
@@ -66036,12 +66086,6 @@
 msgid "Skype ID"
 msgstr ""
 
-#. Option for the 'Hero Section Based On' (Select) field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Slideshow"
-msgstr ""
-
 #: setup/setup_wizard/operations/install_fixtures.py:223
 msgid "Small"
 msgstr ""
@@ -66052,7 +66096,7 @@
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:32
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:45
-msgid "Softwares"
+msgid "Software"
 msgstr ""
 
 #: assets/doctype/asset/asset_list.js:11
@@ -66318,7 +66362,7 @@
 msgid "Spacer"
 msgstr ""
 
-#: assets/doctype/asset/asset.js:467 stock/doctype/batch/batch.js:146
+#: assets/doctype/asset/asset.js:467 stock/doctype/batch/batch.js:143
 #: support/doctype/issue/issue.js:100
 msgid "Split"
 msgstr ""
@@ -66327,7 +66371,7 @@
 msgid "Split Asset"
 msgstr ""
 
-#: stock/doctype/batch/batch.js:145
+#: stock/doctype/batch/batch.js:142
 msgid "Split Batch"
 msgstr ""
 
@@ -66352,11 +66396,11 @@
 msgid "Split Qty"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1044
+#: assets/doctype/asset/asset.py:1050
 msgid "Split qty cannot be grater than or equal to asset qty"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1810
+#: accounts/doctype/payment_entry/payment_entry.py:1827
 msgid "Splitting {0} {1} into {2} rows as per Payment Terms"
 msgstr ""
 
@@ -66451,7 +66495,7 @@
 #: assets/report/fixed_asset_register/fixed_asset_register.js:68
 #: projects/report/project_summary/project_summary.py:70
 #: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:52
-#: public/js/financial_statements.js:131
+#: public/js/financial_statements.js:184
 #: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:17
 msgid "Start Date"
 msgstr ""
@@ -66574,11 +66618,11 @@
 #: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:48
 #: accounts/report/financial_ratios/financial_ratios.js:17
 #: assets/report/fixed_asset_register/fixed_asset_register.js:82
-#: public/js/financial_statements.js:145
+#: public/js/financial_statements.js:198
 msgid "Start Year"
 msgstr ""
 
-#: accounts/report/financial_statements.py:134
+#: accounts/report/financial_statements.py:122
 msgid "Start Year and End Year are mandatory"
 msgstr ""
 
@@ -66693,22 +66737,22 @@
 #: projects/report/delayed_tasks_summary/delayed_tasks_summary.py:92
 #: projects/report/project_summary/project_summary.js:24
 #: projects/report/project_summary/project_summary.py:58
-#: selling/doctype/sales_order/sales_order.js:523
-#: selling/doctype/sales_order/sales_order.js:527
-#: selling/doctype/sales_order/sales_order.js:534
-#: selling/doctype/sales_order/sales_order.js:545
-#: selling/doctype/sales_order/sales_order.js:547
+#: 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
 #: 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.py:228
-#: stock/doctype/delivery_note/delivery_note.js:219
-#: stock/doctype/delivery_note/delivery_note.js:238
+#: 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/report/reserved_stock/reserved_stock.py:178
-#: stock/report/serial_no_ledger/serial_no_ledger.py:52
+#: 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
@@ -67236,7 +67280,7 @@
 
 #: 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:1211
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1187
 #: accounts/report/account_balance/account_balance.js:56
 msgid "Stock Adjustment"
 msgstr ""
@@ -67400,7 +67444,7 @@
 msgid "Stock Entry {0} created"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1254
+#: accounts/doctype/journal_entry/journal_entry.py:1140
 msgid "Stock Entry {0} is not submitted"
 msgstr ""
 
@@ -67412,7 +67456,7 @@
 #. Label of a Date field in DocType 'Stock Settings'
 #: stock/doctype/stock_settings/stock_settings.json
 msgctxt "Stock Settings"
-msgid "Stock Frozen Upto"
+msgid "Stock Frozen Up To"
 msgstr ""
 
 #: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:20
@@ -67481,6 +67525,7 @@
 msgstr ""
 
 #. Name of a role
+#: accounts/doctype/fiscal_year/fiscal_year.json
 #: assets/doctype/asset_movement/asset_movement.json
 #: assets/doctype/location/location.json
 #: buying/doctype/buying_settings/buying_settings.json
@@ -67488,6 +67533,7 @@
 #: selling/doctype/product_bundle/product_bundle.json
 #: setup/doctype/incoterm/incoterm.json
 #: setup/doctype/item_group/item_group.json setup/doctype/uom/uom.json
+#: stock/doctype/bin/bin.json
 #: stock/doctype/customs_tariff_number/customs_tariff_number.json
 #: stock/doctype/delivery_note/delivery_note.json
 #: stock/doctype/inventory_dimension/inventory_dimension.json
@@ -67533,7 +67579,7 @@
 msgstr ""
 
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:254
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:299
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:306
 #: stock/report/stock_qty_vs_serial_no_count/stock_qty_vs_serial_no_count.py:34
 msgid "Stock Qty"
 msgstr ""
@@ -67629,11 +67675,11 @@
 #: 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:184
+#: 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:466
+#: 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
@@ -67658,7 +67704,7 @@
 msgstr ""
 
 #. Name of a DocType
-#: selling/doctype/sales_order/sales_order.js:389
+#: selling/doctype/sales_order/sales_order.js:383
 #: stock/doctype/stock_reservation_entry/stock_reservation_entry.json
 #: stock/report/reserved_stock/reserved_stock.js:56
 #: stock/report/reserved_stock/reserved_stock.py:171
@@ -67693,7 +67739,7 @@
 msgid "Stock Reserved Qty (in Stock UOM)"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:1502
+#: stock/doctype/stock_entry/stock_entry.py:1498
 msgid "Stock Return"
 msgstr ""
 
@@ -67733,7 +67779,7 @@
 msgstr ""
 
 #: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:256
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:301
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:308
 #: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:215
 #: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:232
 #: stock/report/batch_item_expiry_status/batch_item_expiry_status.py:35
@@ -67917,7 +67963,7 @@
 msgid "Stock UOM Quantity"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:374
+#: selling/doctype/sales_order/sales_order.js:368
 msgid "Stock Unreservation"
 msgstr ""
 
@@ -68028,7 +68074,7 @@
 msgid "Stock cannot be reserved in the group warehouse {0}."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1008
+#: accounts/doctype/sales_invoice/sales_invoice.py:1011
 msgid "Stock cannot be updated against Delivery Note {0}"
 msgstr ""
 
@@ -68062,7 +68108,7 @@
 msgid "Stock will be reserved on submission of <b>Purchase Receipt</b> created against Material Receipt for Sales Order."
 msgstr ""
 
-#: stock/utils.py:532
+#: stock/utils.py:579
 msgid "Stock/Accounts can not be frozen as processing of backdated entries is going on. Please try again later."
 msgstr ""
 
@@ -68147,7 +68193,7 @@
 msgid "Stopped Work Order cannot be cancelled, Unstop it first to cancel"
 msgstr ""
 
-#: setup/doctype/company/company.py:259
+#: setup/doctype/company/company.py:260
 #: setup/setup_wizard/operations/defaults_setup.py:34
 #: setup/setup_wizard/operations/install_fixtures.py:481
 #: stock/doctype/item/item.py:282
@@ -68305,7 +68351,7 @@
 
 #. Name of a DocType
 #: buying/doctype/purchase_order/purchase_order.js:318
-#: controllers/subcontracting_controller.py:802
+#: controllers/subcontracting_controller.py:806
 #: subcontracting/doctype/subcontracting_order/subcontracting_order.json
 #: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:78
 msgid "Subcontracting Order"
@@ -68357,7 +68403,7 @@
 msgid "Subcontracting Order Supplied Item"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:857
+#: buying/doctype/purchase_order/purchase_order.py:861
 msgid "Subcontracting Order {0} created."
 msgstr ""
 
@@ -68482,7 +68528,7 @@
 msgid "Submit"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:853
+#: buying/doctype/purchase_order/purchase_order.py:857
 #: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:698
 msgid "Submit Action Failed"
 msgstr ""
@@ -68636,7 +68682,7 @@
 #: accounts/doctype/subscription/subscription.json
 #: buying/doctype/supplier_quotation/supplier_quotation_dashboard.py:16
 #: selling/doctype/quotation/quotation_dashboard.py:12
-#: stock/doctype/delivery_note/delivery_note_dashboard.py:24
+#: stock/doctype/delivery_note/delivery_note_dashboard.py:25
 #: stock/doctype/purchase_receipt/purchase_receipt_dashboard.py:31
 msgid "Subscription"
 msgstr ""
@@ -68673,11 +68719,11 @@
 msgid "Subscription End Date"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:350
+#: accounts/doctype/subscription/subscription.py:380
 msgid "Subscription End Date is mandatory to follow calendar months"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:340
+#: accounts/doctype/subscription/subscription.py:370
 msgid "Subscription End Date must be after {0} as per the subscription plan"
 msgstr ""
 
@@ -68776,12 +68822,6 @@
 msgid "Subscriptions"
 msgstr ""
 
-#. Label of a Data field in DocType 'Homepage Section Card'
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgctxt "Homepage Section Card"
-msgid "Subtitle"
-msgstr ""
-
 #. Label of a Int field in DocType 'Bulk Transaction Log'
 #: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.json
 msgctxt "Bulk Transaction Log"
@@ -68827,7 +68867,7 @@
 msgid "Successful"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:516
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:538
 msgid "Successfully Reconciled"
 msgstr ""
 
@@ -68839,10 +68879,6 @@
 msgid "Successfully changed Stock UOM, please redefine conversion factors for new UOM."
 msgstr ""
 
-#: setup/doctype/company/company.js:164
-msgid "Successfully deleted all transactions related to this company!"
-msgstr ""
-
 #: accounts/doctype/bank_statement_import/bank_statement_import.js:468
 msgid "Successfully imported {0}"
 msgstr ""
@@ -69044,7 +69080,7 @@
 #: public/js/purchase_trends_filters.js:66
 #: regional/report/irs_1099/irs_1099.py:79
 #: selling/doctype/customer/customer.js:207
-#: selling/doctype/sales_order/sales_order.js:1011
+#: selling/doctype/sales_order/sales_order.js:1005
 #: stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.js:8
 msgid "Supplier"
 msgstr ""
@@ -69211,11 +69247,11 @@
 msgid "Supplier"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
 #. Label of a Link in the Buying Workspace
 #. Label of a Link in the Home Workspace
 #. Label of a shortcut in the Home Workspace
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
 #: buying/workspace/buying/buying.json setup/workspace/home/home.json
 msgctxt "Supplier"
 msgid "Supplier"
@@ -69352,7 +69388,7 @@
 #. 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:1087
+#: accounts/report/accounts_receivable/accounts_receivable.py:1110
 #: 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
@@ -69440,7 +69476,7 @@
 msgid "Supplier Invoice"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:213
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:218
 msgid "Supplier Invoice Date"
 msgstr ""
 
@@ -69450,13 +69486,13 @@
 msgid "Supplier Invoice Date"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1536
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1494
 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:653
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:207
+#: accounts/report/general_ledger/general_ledger.py:656
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:212
 msgid "Supplier Invoice No"
 msgstr ""
 
@@ -69472,7 +69508,7 @@
 msgid "Supplier Invoice No"
 msgstr ""
 
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1561
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1519
 msgid "Supplier Invoice No exists in Purchase Invoice {0}"
 msgstr ""
 
@@ -69494,13 +69530,15 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
+#. Label of a Link in the Payables Workspace
 #: accounts/report/supplier_ledger_summary/supplier_ledger_summary.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
+#: accounts/workspace/payables/payables.json
 msgid "Supplier Ledger Summary"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1018
+#: accounts/report/accounts_receivable/accounts_receivable.py:1041
 #: 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
@@ -70008,8 +70046,6 @@
 #: manufacturing/doctype/bom_update_log/bom_update_log.json
 #: manufacturing/doctype/downtime_entry/downtime_entry.json
 #: manufacturing/doctype/job_card/job_card.json
-#: portal/doctype/homepage/homepage.json
-#: portal/doctype/homepage_section/homepage_section.json
 #: projects/doctype/activity_type/activity_type.json
 #: projects/doctype/project_template/project_template.json
 #: projects/doctype/project_type/project_type.json
@@ -70097,7 +70133,7 @@
 msgid "System will fetch all the entries if limit value is zero."
 msgstr ""
 
-#: controllers/accounts_controller.py:1640
+#: controllers/accounts_controller.py:1673
 msgid "System will not check over billing since amount for Item {0} in {1} is zero"
 msgstr ""
 
@@ -70108,7 +70144,7 @@
 msgid "System will notify to increase or decrease quantity or amount "
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:224
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:229
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:125
 msgid "TCS Rate %"
 msgstr ""
@@ -70122,7 +70158,7 @@
 msgid "TDS Payable"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:224
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:229
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:125
 msgid "TDS Rate %"
 msgstr ""
@@ -70137,12 +70173,6 @@
 msgid "Tag"
 msgstr ""
 
-#. Label of a Data field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Tag Line"
-msgstr ""
-
 #. Label of an action in the Onboarding Step 'Accounts Settings'
 #: accounts/onboarding_step/accounts_settings/accounts_settings.json
 msgid "Take a quick walk-through of Accounts Settings"
@@ -70219,23 +70249,23 @@
 msgid "Target Asset Location"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:239
+#: assets/doctype/asset_capitalization/asset_capitalization.py:248
 msgid "Target Asset {0} cannot be cancelled"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:237
+#: assets/doctype/asset_capitalization/asset_capitalization.py:246
 msgid "Target Asset {0} cannot be submitted"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:233
+#: assets/doctype/asset_capitalization/asset_capitalization.py:242
 msgid "Target Asset {0} cannot be {1}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:243
+#: assets/doctype/asset_capitalization/asset_capitalization.py:252
 msgid "Target Asset {0} does not belong to company {1}"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:224
+#: assets/doctype/asset_capitalization/asset_capitalization.py:233
 msgid "Target Asset {0} needs to be composite asset"
 msgstr ""
 
@@ -70315,15 +70345,15 @@
 msgid "Target Item Name"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:194
+#: assets/doctype/asset_capitalization/asset_capitalization.py:203
 msgid "Target Item {0} is neither a Fixed Asset nor a Stock Item"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:198
+#: assets/doctype/asset_capitalization/asset_capitalization.py:207
 msgid "Target Item {0} must be a Fixed Asset item"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:200
+#: assets/doctype/asset_capitalization/asset_capitalization.py:209
 msgid "Target Item {0} must be a Stock Item"
 msgstr ""
 
@@ -70363,7 +70393,7 @@
 msgid "Target Qty"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:205
+#: assets/doctype/asset_capitalization/asset_capitalization.py:214
 msgid "Target Qty must be a positive number"
 msgstr ""
 
@@ -70433,7 +70463,7 @@
 msgid "Target Warehouse Address"
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:215
+#: assets/doctype/asset_capitalization/asset_capitalization.py:224
 msgid "Target Warehouse is mandatory for Decapitalization"
 msgstr ""
 
@@ -70631,7 +70661,7 @@
 msgid "Tax Account"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:242
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:247
 #: accounts/report/tds_computation_summary/tds_computation_summary.py:137
 msgid "Tax Amount"
 msgstr ""
@@ -70896,6 +70926,11 @@
 msgid "Tax Id: "
 msgstr ""
 
+#. Label of a Card Break in the Accounting Workspace
+#: accounts/workspace/accounting/accounting.json
+msgid "Tax Masters"
+msgstr ""
+
 #: accounts/doctype/account/account_tree.js:119
 msgid "Tax Rate"
 msgstr ""
@@ -70906,6 +70941,18 @@
 msgid "Tax Rate"
 msgstr ""
 
+#. Label of a Float field in DocType 'Purchase Taxes and Charges'
+#: accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.json
+msgctxt "Purchase Taxes and Charges"
+msgid "Tax Rate"
+msgstr ""
+
+#. Label of a Float field in DocType 'Sales Taxes and Charges'
+#: accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.json
+msgctxt "Sales Taxes and Charges"
+msgid "Tax Rate"
+msgstr ""
+
 #. Label of a Table field in DocType 'Item Tax Template'
 #: accounts/doctype/item_tax_template/item_tax_template.json
 msgctxt "Item Tax Template"
@@ -71102,7 +71149,7 @@
 msgid "Tax will be withheld only for amount exceeding the cumulative threshold"
 msgstr ""
 
-#: controllers/taxes_and_totals.py:1009
+#: controllers/taxes_and_totals.py:1018
 msgid "Taxable Amount"
 msgstr ""
 
@@ -71112,12 +71159,10 @@
 msgid "Taxable Amount"
 msgstr ""
 
-#. Label of a Card Break in the Accounting Workspace
 #: accounts/doctype/pos_closing_entry/closing_voucher_details.html:60
 #: accounts/doctype/tax_category/tax_category_dashboard.py:12
 #: accounts/report/sales_payment_summary/sales_payment_summary.py:26
 #: accounts/report/sales_payment_summary/sales_payment_summary.py:42
-#: accounts/workspace/accounting/accounting.json
 msgid "Taxes"
 msgstr ""
 
@@ -71656,7 +71701,9 @@
 msgid "Terms and Conditions"
 msgstr ""
 
+#. Label of a Link in the Accounting Workspace
 #. Label of a Text Editor field in DocType 'Terms and Conditions'
+#: accounts/workspace/accounting/accounting.json
 #: setup/doctype/terms_and_conditions/terms_and_conditions.json
 msgctxt "Terms and Conditions"
 msgid "Terms and Conditions"
@@ -71704,10 +71751,8 @@
 msgid "Terms and Conditions Help"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
 #. Label of a Link in the Buying Workspace
 #. Label of a Link in the Selling Workspace
-#: accounts/workspace/accounting/accounting.json
 #: buying/workspace/buying/buying.json selling/workspace/selling/selling.json
 msgctxt "Terms and Conditions"
 msgid "Terms and Conditions Template"
@@ -71715,7 +71760,7 @@
 
 #. Name of a DocType
 #: accounts/report/accounts_receivable/accounts_receivable.js:145
-#: accounts/report/accounts_receivable/accounts_receivable.py:1071
+#: accounts/report/accounts_receivable/accounts_receivable.py:1094
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:111
 #: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:185
 #: accounts/report/customer_ledger_summary/customer_ledger_summary.js:68
@@ -71723,7 +71768,7 @@
 #: 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.py:21
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:247
+#: 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.py:34
@@ -71974,7 +72019,7 @@
 msgid "The Loyalty Program isn't valid for the selected company"
 msgstr ""
 
-#: accounts/doctype/payment_request/payment_request.py:723
+#: accounts/doctype/payment_request/payment_request.py:747
 msgid "The Payment Request {0} is already paid, cannot process payment twice"
 msgstr ""
 
@@ -71986,7 +72031,7 @@
 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:1765
+#: stock/doctype/stock_entry/stock_entry.py:1761
 msgid "The Process Loss Qty has reset as per job cards Process Loss Qty"
 msgstr ""
 
@@ -72162,7 +72207,7 @@
 msgid "The selected BOMs are not for the same item"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:417
+#: accounts/doctype/pos_invoice/pos_invoice.py:415
 msgid "The selected change account {} doesn't belongs to Company {}."
 msgstr ""
 
@@ -72178,7 +72223,7 @@
 msgid "The seller and the buyer cannot be the same"
 msgstr ""
 
-#: stock/doctype/batch/batch.py:376
+#: stock/doctype/batch/batch.py:378
 msgid "The serial no {0} does not belong to item {1}"
 msgstr ""
 
@@ -72194,7 +72239,7 @@
 msgid "The shares don't exist with the {0}"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:460
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:461
 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 ""
 
@@ -72202,6 +72247,11 @@
 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
+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 ""
@@ -72210,11 +72260,11 @@
 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:753
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:754
 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:764
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:765
 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 ""
 
@@ -72237,7 +72287,7 @@
 msgid "The value of {0} differs between Items {1} and {2}"
 msgstr ""
 
-#: controllers/item_variant.py:147
+#: controllers/item_variant.py:151
 msgid "The value {0} is already assigned to an existing Item {1}."
 msgstr ""
 
@@ -72258,14 +72308,14 @@
 msgstr ""
 
 #: stock/doctype/material_request/material_request.py:779
-msgid "The {0} {1} created sucessfully"
+msgid "The {0} {1} created successfully"
 msgstr ""
 
 #: manufacturing/doctype/job_card/job_card.py:762
 msgid "The {0} {1} is used to calculate the valuation cost for the finished good {2}."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:500
+#: assets/doctype/asset/asset.py:501
 msgid "There are active maintenance or repairs against the asset. You must complete all of them before cancelling the asset."
 msgstr ""
 
@@ -72285,7 +72335,7 @@
 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:843
+#: stock/doctype/item/item.js:829
 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 ""
 
@@ -72309,7 +72359,7 @@
 msgid "There is already an active Subcontracting BOM {0} for the Finished Good {1}."
 msgstr ""
 
-#: stock/doctype/batch/batch.py:384
+#: stock/doctype/batch/batch.py:386
 msgid "There is no batch found against the {0}: {1}"
 msgstr ""
 
@@ -72346,7 +72396,7 @@
 msgid "There were errors while sending email. Please try again."
 msgstr ""
 
-#: accounts/utils.py:896
+#: accounts/utils.py:924
 msgid "There were issues unlinking payment entry {0}."
 msgstr ""
 
@@ -72393,11 +72443,11 @@
 msgid "This covers all scorecards tied to this Setup"
 msgstr ""
 
-#: controllers/status_updater.py:341
+#: controllers/status_updater.py:350
 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:369
+#: stock/doctype/delivery_note/delivery_note.js:360
 msgid "This field is used to set the 'Customer'."
 msgstr ""
 
@@ -72465,10 +72515,6 @@
 msgid "This is a root territory and cannot be edited."
 msgstr ""
 
-#: portal/doctype/homepage/homepage.py:31
-msgid "This is an example website auto-generated from ERPNext"
-msgstr ""
-
 #: stock/doctype/item/item_dashboard.py:7
 msgid "This is based on stock movement. See {0} for details"
 msgstr ""
@@ -72501,7 +72547,7 @@
 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:833
+#: stock/doctype/item/item.js:819
 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 ""
 
@@ -72509,7 +72555,7 @@
 msgid "This item filter has already been applied for the {0}"
 msgstr ""
 
-#: stock/doctype/delivery_note/delivery_note.js:380
+#: stock/doctype/delivery_note/delivery_note.js:371
 msgid "This option can be checked to edit the 'Posting Date' and 'Posting Time' fields."
 msgstr ""
 
@@ -72517,7 +72563,7 @@
 msgid "This schedule was created when Asset {0} was adjusted through Asset Value Adjustment {1}."
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:509
+#: assets/doctype/asset_capitalization/asset_capitalization.py:516
 msgid "This schedule was created when Asset {0} was consumed through Asset Capitalization {1}."
 msgstr ""
 
@@ -72525,7 +72571,7 @@
 msgid "This schedule was created when Asset {0} was repaired through Asset Repair {1}."
 msgstr ""
 
-#: assets/doctype/asset_capitalization/asset_capitalization.py:676
+#: assets/doctype/asset_capitalization/asset_capitalization.py:674
 msgid "This schedule was created when Asset {0} was restored on Asset Capitalization {1}'s cancellation."
 msgstr ""
 
@@ -72533,7 +72579,7 @@
 msgid "This schedule was created when Asset {0} was restored."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1328
+#: accounts/doctype/sales_invoice/sales_invoice.py:1325
 msgid "This schedule was created when Asset {0} was returned through Sales Invoice {1}."
 msgstr ""
 
@@ -72541,11 +72587,11 @@
 msgid "This schedule was created when Asset {0} was scrapped."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1339
+#: accounts/doctype/sales_invoice/sales_invoice.py:1336
 msgid "This schedule was created when Asset {0} was sold through Sales Invoice {1}."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1111
+#: assets/doctype/asset/asset.py:1117
 msgid "This schedule was created when Asset {0} was updated after being split into new Asset {1}."
 msgstr ""
 
@@ -72561,7 +72607,7 @@
 msgid "This schedule was created when Asset {0}'s shifts were adjusted through Asset Shift Allocation {1}."
 msgstr ""
 
-#: assets/doctype/asset/asset.py:1174
+#: assets/doctype/asset/asset.py:1180
 msgid "This schedule was created when new Asset {0} was split from Asset {1}."
 msgstr ""
 
@@ -72572,7 +72618,7 @@
 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:374
+#: stock/doctype/delivery_note/delivery_note.js:365
 msgid "This table is used to set details about the 'Item', 'Qty', 'Basic Rate', etc."
 msgstr ""
 
@@ -72880,7 +72926,7 @@
 msgid "Timesheet for tasks."
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:753
+#: accounts/doctype/sales_invoice/sales_invoice.py:756
 msgid "Timesheet {0} is already completed or cancelled"
 msgstr ""
 
@@ -72895,7 +72941,7 @@
 msgstr ""
 
 #: utilities/activation.py:126
-msgid "Timesheets help keep track of time, cost and billing for activites done by your team"
+msgid "Timesheets help keep track of time, cost and billing for activities done by your team"
 msgstr ""
 
 #. Label of a Section Break field in DocType 'Communication Medium'
@@ -72927,18 +72973,6 @@
 msgid "Title"
 msgstr ""
 
-#. Label of a Data field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Title"
-msgstr ""
-
-#. Label of a Data field in DocType 'Homepage Section Card'
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgctxt "Homepage Section Card"
-msgid "Title"
-msgstr ""
-
 #. Label of a Data field in DocType 'Incoterm'
 #: setup/doctype/incoterm/incoterm.json
 msgctxt "Incoterm"
@@ -73122,9 +73156,9 @@
 msgid "To Be Paid"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:20
-#: selling/doctype/sales_order/sales_order_list.js:34
-#: selling/doctype/sales_order/sales_order_list.js:37
+#: 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
 msgid "To Bill"
@@ -73356,7 +73390,7 @@
 msgid "To Date"
 msgstr ""
 
-#: controllers/accounts_controller.py:377
+#: controllers/accounts_controller.py:380
 #: setup/doctype/holiday_list/holiday_list.py:115
 msgid "To Date cannot be before From Date"
 msgstr ""
@@ -73367,7 +73401,7 @@
 msgid "To Date cannot be before From Date."
 msgstr ""
 
-#: accounts/report/financial_statements.py:145
+#: accounts/report/financial_statements.py:133
 msgid "To Date cannot be less than From Date"
 msgstr ""
 
@@ -73385,8 +73419,8 @@
 msgid "To Datetime"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order_list.js:20
-#: selling/doctype/sales_order/sales_order_list.js:28
+#: selling/doctype/sales_order/sales_order_list.js:22
+#: selling/doctype/sales_order/sales_order_list.js:30
 msgid "To Deliver"
 msgstr ""
 
@@ -73403,7 +73437,7 @@
 msgid "To Deliver"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order_list.js:24
+#: selling/doctype/sales_order/sales_order_list.js:26
 msgid "To Deliver and Bill"
 msgstr ""
 
@@ -73482,6 +73516,17 @@
 msgid "To Package No."
 msgstr ""
 
+#: buying/doctype/purchase_order/purchase_order_list.js:12
+#: selling/doctype/sales_order/sales_order_list.js:14
+msgid "To Pay"
+msgstr ""
+
+#. Option for the 'Status' (Select) field in DocType 'Sales Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "To Pay"
+msgstr ""
+
 #. Label of a Date field in DocType 'Payment Reconciliation'
 #: accounts/doctype/payment_reconciliation/payment_reconciliation.json
 msgctxt "Payment Reconciliation"
@@ -73511,7 +73556,7 @@
 msgid "To Range"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:16
+#: buying/doctype/purchase_order/purchase_order_list.js:18
 msgid "To Receive"
 msgstr ""
 
@@ -73521,7 +73566,7 @@
 msgid "To Receive"
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order_list.js:13
+#: buying/doctype/purchase_order/purchase_order_list.js:15
 msgid "To Receive and Bill"
 msgstr ""
 
@@ -73656,11 +73701,11 @@
 msgid "To add subcontracted Item's raw materials if include exploded items is disabled."
 msgstr ""
 
-#: controllers/status_updater.py:336
+#: controllers/status_updater.py:345
 msgid "To allow over billing, update \"Over Billing Allowance\" in Accounts Settings or the Item."
 msgstr ""
 
-#: controllers/status_updater.py:332
+#: controllers/status_updater.py:341
 msgid "To allow over receipt / delivery, update \"Over Receipt/Delivery Allowance\" in Stock Settings or the Item."
 msgstr ""
 
@@ -73677,7 +73722,7 @@
 msgid "To be Delivered to Customer"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:520
+#: accounts/doctype/sales_invoice/sales_invoice.py:521
 msgid "To cancel a {} you need to cancel the POS Closing Entry {}."
 msgstr ""
 
@@ -73697,8 +73742,8 @@
 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:1615
-#: controllers/accounts_controller.py:2490
+#: accounts/doctype/payment_entry/payment_entry.py:1625
+#: controllers/accounts_controller.py:2559
 msgid "To include tax in row {0} in Item rate, taxes in rows {1} must also be included"
 msgstr ""
 
@@ -73710,7 +73755,7 @@
 msgid "To overrule this, enable '{0}' in company {1}"
 msgstr ""
 
-#: controllers/item_variant.py:150
+#: controllers/item_variant.py:154
 msgid "To still proceed with editing this Attribute Value, enable {0} in Item Variant Settings."
 msgstr ""
 
@@ -73727,7 +73772,7 @@
 msgid "To use a different finance book, please uncheck 'Include Default FB Assets'"
 msgstr ""
 
-#: accounts/report/financial_statements.py:588
+#: accounts/report/financial_statements.py:576
 #: accounts/report/general_ledger/general_ledger.py:273
 #: accounts/report/trial_balance/trial_balance.py:278
 msgid "To use a different finance book, please uncheck 'Include Default FB Entries'"
@@ -73768,9 +73813,9 @@
 #: 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/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py:233
-#: accounts/report/financial_statements.py:664
+#: 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:621
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:636
 #: accounts/report/profitability_analysis/profitability_analysis.py:93
 #: accounts/report/profitability_analysis/profitability_analysis.py:98
 #: accounts/report/trial_balance/trial_balance.py:344
@@ -74024,7 +74069,7 @@
 msgid "Total Allocations"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:230
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:235
 #: 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
@@ -74251,7 +74296,7 @@
 msgid "Total Credit"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:208
+#: accounts/doctype/journal_entry/journal_entry.py:225
 msgid "Total Credit/ Debit Amount should be same as linked Journal Entry"
 msgstr ""
 
@@ -74261,7 +74306,7 @@
 msgid "Total Debit"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:850
+#: accounts/doctype/journal_entry/journal_entry.py:802
 msgid "Total Debit must be equal to Total Credit. The difference is {0}"
 msgstr ""
 
@@ -74459,7 +74504,7 @@
 msgid "Total Order Value"
 msgstr ""
 
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:614
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:629
 msgid "Total Other Charges"
 msgstr ""
 
@@ -74491,7 +74536,7 @@
 msgid "Total Paid Amount"
 msgstr ""
 
-#: controllers/accounts_controller.py:2197
+#: controllers/accounts_controller.py:2266
 msgid "Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total"
 msgstr ""
 
@@ -74675,7 +74720,7 @@
 msgid "Total Tasks"
 msgstr ""
 
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:607
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:622
 #: accounts/report/purchase_register/purchase_register.py:263
 msgid "Total Tax"
 msgstr ""
@@ -74907,7 +74952,7 @@
 msgid "Total Working Hours"
 msgstr ""
 
-#: controllers/accounts_controller.py:1800
+#: controllers/accounts_controller.py:1838
 msgid "Total advance ({0}) against Order {1} cannot be greater than the Grand Total ({2})"
 msgstr ""
 
@@ -74915,12 +74960,12 @@
 msgid "Total allocated percentage for sales team should be 100"
 msgstr ""
 
-#: selling/doctype/customer/customer.py:156
+#: selling/doctype/customer/customer.py:157
 msgid "Total contribution percentage should be equal to 100"
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:446
-#: accounts/doctype/sales_invoice/sales_invoice.py:504
+#: accounts/doctype/pos_invoice/pos_invoice.py:444
+#: accounts/doctype/sales_invoice/sales_invoice.py:505
 msgid "Total payments amount can't be greater than {}"
 msgstr ""
 
@@ -74930,8 +74975,8 @@
 
 #: accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:765
 #: accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:766
-#: accounts/report/financial_statements.py:351
-#: accounts/report/financial_statements.py:352
+#: accounts/report/financial_statements.py:339
+#: accounts/report/financial_statements.py:340
 msgid "Total {0} ({1})"
 msgstr ""
 
@@ -75178,7 +75223,7 @@
 msgid "Transaction Settings"
 msgstr ""
 
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:253
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:258
 msgid "Transaction Type"
 msgstr ""
 
@@ -75192,11 +75237,15 @@
 msgid "Transaction currency must be same as Payment Gateway currency"
 msgstr ""
 
+#: accounts/doctype/bank_transaction/bank_transaction.py:64
+msgid "Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2}"
+msgstr ""
+
 #: manufacturing/doctype/job_card/job_card.py:647
 msgid "Transaction not allowed against stopped Work Order {0}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1092
+#: accounts/doctype/payment_entry/payment_entry.py:1112
 msgid "Transaction reference no {0} dated {1}"
 msgstr ""
 
@@ -75290,7 +75339,7 @@
 msgstr ""
 
 #: stock/doctype/material_request/material_request_list.js:27
-msgid "Transfered"
+msgid "Transferred"
 msgstr ""
 
 #. Option for the 'Status' (Select) field in DocType 'Material Request'
@@ -75428,10 +75477,11 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
 #. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/trial_balance/trial_balance.json
 #: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Trial Balance"
 msgstr ""
 
@@ -75441,9 +75491,9 @@
 msgstr ""
 
 #. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #: accounts/report/trial_balance_for_party/trial_balance_for_party.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 msgid "Trial Balance for Party"
 msgstr ""
 
@@ -75453,7 +75503,7 @@
 msgid "Trial Period End Date"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:326
+#: accounts/doctype/subscription/subscription.py:356
 msgid "Trial Period End Date Cannot be before Trial Period Start Date"
 msgstr ""
 
@@ -75463,18 +75513,18 @@
 msgid "Trial Period Start Date"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:332
+#: accounts/doctype/subscription/subscription.py:362
 msgid "Trial Period Start date cannot be after Subscription Start Date"
 msgstr ""
 
 #: accounts/doctype/subscription/subscription_list.js:4
-msgid "Trialling"
+msgid "Trialing"
 msgstr ""
 
 #. Option for the 'Status' (Select) field in DocType 'Subscription'
 #: accounts/doctype/subscription/subscription.json
 msgctxt "Subscription"
-msgid "Trialling"
+msgid "Trialing"
 msgstr ""
 
 #. Description of the 'General Ledger' (Int) field in DocType 'Accounts
@@ -75669,9 +75719,9 @@
 msgid "Types of activities for Time Logs"
 msgstr ""
 
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
 #. Name of a report
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
 #: regional/report/uae_vat_201/uae_vat_201.json
 msgid "UAE VAT 201"
 msgstr ""
@@ -75699,7 +75749,7 @@
 #: 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:1005
+#: selling/doctype/sales_order/sales_order.js:999
 #: 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
@@ -76044,7 +76094,7 @@
 msgid "UOM Name"
 msgstr ""
 
-#: stock/doctype/stock_entry/stock_entry.py:2777
+#: stock/doctype/stock_entry/stock_entry.py:2773
 msgid "UOM conversion factor required for UOM: {0} in Item: {1}"
 msgstr ""
 
@@ -76092,10 +76142,6 @@
 msgid "UnReconcile"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:791
-msgid "Unable to automatically determine {0} accounts. Set them up in the {1} table if needed."
-msgstr ""
-
 #: setup/utils.py:117
 msgid "Unable to find exchange rate for {0} to {1} for key date {2}. Please create a Currency Exchange record manually"
 msgstr ""
@@ -76381,11 +76427,11 @@
 msgid "Unreserve"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:424
+#: selling/doctype/sales_order/sales_order.js:418
 msgid "Unreserve Stock"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:436
+#: selling/doctype/sales_order/sales_order.js:430
 #: stock/doctype/pick_list/pick_list.js:252
 msgid "Unreserving Stock..."
 msgstr ""
@@ -76472,9 +76518,9 @@
 #: 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:161
+#: public/js/utils/barcode_scanner.js:176
 #: public/js/utils/serial_no_batch_selector.js:17
-#: public/js/utils/serial_no_batch_selector.js:176
+#: public/js/utils/serial_no_batch_selector.js:180
 #: stock/doctype/stock_reconciliation/stock_reconciliation.js:160
 msgid "Update"
 msgstr ""
@@ -76690,7 +76736,7 @@
 msgid "Update latest price in all BOMs"
 msgstr ""
 
-#: assets/doctype/asset/asset.py:337
+#: assets/doctype/asset/asset.py:338
 msgid "Update stock must be enabled for the purchase invoice {0}"
 msgstr ""
 
@@ -76819,12 +76865,6 @@
 msgid "Use for Shopping Cart"
 msgstr ""
 
-#. Description of the 'Section HTML' (Code) field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Use this field to render any custom HTML in the section."
-msgstr ""
-
 #. Label of a Int field in DocType 'Coupon Code'
 #: accounts/doctype/coupon_code/coupon_code.json
 msgctxt "Coupon Code"
@@ -76904,7 +76944,8 @@
 msgstr ""
 
 #. Label of a Link field in DocType 'Employee'
-#. Option for the 'Prefered Contact Email' (Select) field in DocType 'Employee'
+#. Option for the 'Preferred Contact Email' (Select) field in DocType
+#. 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
 msgid "User ID"
@@ -76914,7 +76955,7 @@
 msgid "User ID not set for Employee {0}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.js:554
+#: accounts/doctype/journal_entry/journal_entry.js:544
 msgid "User Remark"
 msgstr ""
 
@@ -77009,10 +77050,6 @@
 msgid "Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts"
 msgstr ""
 
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:77
-msgid "Using CSV File"
-msgstr ""
-
 #: stock/doctype/stock_settings/stock_settings.js:22
 msgid "Using negative stock disables FIFO/Moving average valuation when inventory is negative."
 msgstr ""
@@ -77094,7 +77131,7 @@
 msgstr ""
 
 #: stock/doctype/item_price/item_price.py:62
-msgid "Valid From Date must be lesser than Valid Upto Date."
+msgid "Valid From Date must be lesser than Valid Up To Date."
 msgstr ""
 
 #: regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py:45
@@ -77125,45 +77162,45 @@
 #. Label of a Date field in DocType 'Coupon Code'
 #: accounts/doctype/coupon_code/coupon_code.json
 msgctxt "Coupon Code"
-msgid "Valid Upto"
+msgid "Valid Up To"
 msgstr ""
 
 #. Label of a Date field in DocType 'Employee'
 #: setup/doctype/employee/employee.json
 msgctxt "Employee"
-msgid "Valid Upto"
+msgid "Valid Up To"
 msgstr ""
 
 #. Label of a Date field in DocType 'Item Price'
 #: stock/doctype/item_price/item_price.json
 msgctxt "Item Price"
-msgid "Valid Upto"
+msgid "Valid Up To"
 msgstr ""
 
 #. Label of a Date field in DocType 'Lower Deduction Certificate'
 #: regional/doctype/lower_deduction_certificate/lower_deduction_certificate.json
 msgctxt "Lower Deduction Certificate"
-msgid "Valid Upto"
+msgid "Valid Up To"
 msgstr ""
 
 #. Label of a Date field in DocType 'Pricing Rule'
 #: accounts/doctype/pricing_rule/pricing_rule.json
 msgctxt "Pricing Rule"
-msgid "Valid Upto"
+msgid "Valid Up To"
 msgstr ""
 
 #. Label of a Date field in DocType 'Promotional Scheme'
 #: accounts/doctype/promotional_scheme/promotional_scheme.json
 msgctxt "Promotional Scheme"
-msgid "Valid Upto"
+msgid "Valid Up To"
 msgstr ""
 
 #: regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py:40
-msgid "Valid Upto date cannot be before Valid From date"
+msgid "Valid Up To date cannot be before Valid From date"
 msgstr ""
 
 #: regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py:48
-msgid "Valid Upto date not in Fiscal Year {0}"
+msgid "Valid Up To date not in Fiscal Year {0}"
 msgstr ""
 
 #. Label of a Table field in DocType 'Shipping Rule'
@@ -77180,7 +77217,7 @@
 msgid "Valid till Date cannot be before Transaction Date"
 msgstr ""
 
-#: selling/doctype/quotation/quotation.py:145
+#: selling/doctype/quotation/quotation.py:146
 msgid "Valid till date cannot be before transaction date"
 msgstr ""
 
@@ -77238,7 +77275,7 @@
 msgid "Validity in Days"
 msgstr ""
 
-#: selling/doctype/quotation/quotation.py:343
+#: selling/doctype/quotation/quotation.py:344
 msgid "Validity period of this quotation has ended."
 msgstr ""
 
@@ -77266,7 +77303,7 @@
 
 #: 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:65
+#: 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
 msgid "Valuation Rate"
@@ -77355,11 +77392,11 @@
 msgid "Valuation Rate (In / Out)"
 msgstr ""
 
-#: stock/stock_ledger.py:1599
+#: stock/stock_ledger.py:1688
 msgid "Valuation Rate Missing"
 msgstr ""
 
-#: stock/stock_ledger.py:1577
+#: stock/stock_ledger.py:1666
 msgid "Valuation Rate for the Item {0}, is required to do accounting entries for {1} {2}."
 msgstr ""
 
@@ -77367,7 +77404,7 @@
 msgid "Valuation Rate is mandatory if Opening Stock entered"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:513
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:514
 msgid "Valuation Rate required for Item {0} at row {1}"
 msgstr ""
 
@@ -77378,16 +77415,16 @@
 msgid "Valuation and Total"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:730
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:731
 msgid "Valuation rate for customer provided items has been set to zero."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1639
-#: controllers/accounts_controller.py:2514
+#: accounts/doctype/payment_entry/payment_entry.py:1649
+#: controllers/accounts_controller.py:2583
 msgid "Valuation type charges can not be marked as Inclusive"
 msgstr ""
 
-#: public/js/controllers/accounts.js:202
+#: public/js/controllers/accounts.js:203
 msgid "Valuation type charges can not marked as Inclusive"
 msgstr ""
 
@@ -77477,7 +77514,7 @@
 msgid "Value Proposition"
 msgstr ""
 
-#: controllers/item_variant.py:121
+#: controllers/item_variant.py:125
 msgid "Value for Attribute {0} must be within the range of {1} to {2} in the increments of {3} for Item {4}"
 msgstr ""
 
@@ -77862,12 +77899,12 @@
 msgid "Voucher Name"
 msgstr ""
 
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:252
-#: accounts/report/accounts_receivable/accounts_receivable.py:1027
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:273
+#: accounts/report/accounts_receivable/accounts_receivable.py:1050
 #: 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:622
+#: accounts/report/general_ledger/general_ledger.py:625
 #: accounts/report/payment_ledger/payment_ledger.js:65
 #: accounts/report/payment_ledger/payment_ledger.py:167
 #: accounts/report/voucher_wise_balance/voucher_wise_balance.py:19
@@ -77880,7 +77917,7 @@
 #: 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
-#: stock/report/serial_no_ledger/serial_no_ledger.py:31
+#: stock/report/serial_no_ledger/serial_no_ledger.py:30
 #: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:118
 #: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:142
 #: stock/report/stock_ledger_variance/stock_ledger_variance.py:72
@@ -77951,7 +77988,7 @@
 msgid "Voucher Qty"
 msgstr ""
 
-#: accounts/report/general_ledger/general_ledger.py:616
+#: accounts/report/general_ledger/general_ledger.py:619
 msgid "Voucher Subtype"
 msgstr ""
 
@@ -77961,9 +77998,9 @@
 msgid "Voucher Subtype"
 msgstr ""
 
-#: accounts/report/accounts_receivable/accounts_receivable.py:1025
+#: accounts/report/accounts_receivable/accounts_receivable.py:1048
 #: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:203
-#: accounts/report/general_ledger/general_ledger.py:614
+#: accounts/report/general_ledger/general_ledger.py:617
 #: accounts/report/payment_ledger/payment_ledger.py:158
 #: accounts/report/purchase_register/purchase_register.py:158
 #: accounts/report/sales_register/sales_register.py:172
@@ -78051,11 +78088,11 @@
 msgid "Voucher Type"
 msgstr ""
 
-#: accounts/doctype/bank_transaction/bank_transaction.py:159
+#: accounts/doctype/bank_transaction/bank_transaction.py:177
 msgid "Voucher {0} is over-allocated by {1}"
 msgstr ""
 
-#: accounts/doctype/bank_transaction/bank_transaction.py:231
+#: accounts/doctype/bank_transaction/bank_transaction.py:249
 msgid "Voucher {0} value is broken: {1}"
 msgstr ""
 
@@ -78165,9 +78202,9 @@
 #: 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:86
-#: selling/doctype/sales_order/sales_order.js:306
-#: selling/doctype/sales_order/sales_order.js:407
+#: 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
 #: selling/report/sales_order_analysis/sales_order_analysis.py:334
 #: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:78
@@ -78192,7 +78229,7 @@
 #: 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.py:45
+#: 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
@@ -78406,6 +78443,10 @@
 msgid "Warehouse"
 msgstr ""
 
+#: stock/page/warehouse_capacity_summary/warehouse_capacity_summary.js:4
+msgid "Warehouse Capacity Summary"
+msgstr ""
+
 #: stock/doctype/putaway_rule/putaway_rule.py:78
 msgid "Warehouse Capacity for Item '{0}' must be greater than the existing stock level of {1} {2}."
 msgstr ""
@@ -78527,11 +78568,11 @@
 msgid "Warehouse not found against the account {0}"
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:366
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:367
 msgid "Warehouse not found in the system"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1002
+#: accounts/doctype/sales_invoice/sales_invoice.py:1005
 #: stock/doctype/delivery_note/delivery_note.py:362
 msgid "Warehouse required for stock Item {0}"
 msgstr ""
@@ -78554,11 +78595,11 @@
 msgid "Warehouse {0} does not belong to Company {1}."
 msgstr ""
 
-#: stock/utils.py:394
+#: stock/utils.py:441
 msgid "Warehouse {0} does not belong to company {1}"
 msgstr ""
 
-#: controllers/stock_controller.py:252
+#: controllers/stock_controller.py:244
 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 ""
 
@@ -78680,8 +78721,8 @@
 msgid "Warn for new Request for Quotations"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:637
-#: controllers/accounts_controller.py:1643
+#: accounts/doctype/payment_entry/payment_entry.py:639
+#: controllers/accounts_controller.py:1676
 #: stock/doctype/delivery_trip/delivery_trip.js:123
 #: utilities/transaction_base.py:122
 msgid "Warning"
@@ -78695,7 +78736,7 @@
 msgid "Warning!"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:1260
+#: accounts/doctype/journal_entry/journal_entry.py:1146
 msgid "Warning: Another {0} # {1} exists against stock entry {2}"
 msgstr ""
 
@@ -78703,7 +78744,7 @@
 msgid "Warning: Material Requested Qty is less than Minimum Order Qty"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.py:249
+#: selling/doctype/sales_order/sales_order.py:252
 msgid "Warning: Sales Order {0} already exists against Customer's Purchase Order {1}"
 msgstr ""
 
@@ -79236,7 +79277,7 @@
 msgid "Wheels"
 msgstr ""
 
-#: stock/doctype/item/item.js:848
+#: stock/doctype/item/item.js:834
 msgid "When creating an Item, entering a value for this field will automatically create an Item Price at the backend."
 msgstr ""
 
@@ -79323,7 +79364,7 @@
 msgid "Work Done"
 msgstr ""
 
-#: setup/doctype/company/company.py:260
+#: setup/doctype/company/company.py:261
 msgid "Work In Progress"
 msgstr ""
 
@@ -79363,7 +79404,7 @@
 #: 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_stock_report/work_order_stock_report.py:104
-#: selling/doctype/sales_order/sales_order.js:566
+#: selling/doctype/sales_order/sales_order.js:560
 #: stock/doctype/material_request/material_request.js:152
 #: stock/doctype/material_request/material_request.py:779
 #: templates/pages/material_request_info.html:45
@@ -79476,7 +79517,7 @@
 msgid "Work Order has been {0}"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:673
+#: selling/doctype/sales_order/sales_order.js:667
 msgid "Work Order not created"
 msgstr ""
 
@@ -79489,7 +79530,7 @@
 msgid "Work Orders"
 msgstr ""
 
-#: selling/doctype/sales_order/sales_order.js:737
+#: selling/doctype/sales_order/sales_order.js:731
 msgid "Work Orders Created: {0}"
 msgstr ""
 
@@ -79686,7 +79727,7 @@
 
 #: 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:509
+#: setup/doctype/company/company.py:510
 msgid "Write Off"
 msgstr ""
 
@@ -79877,7 +79918,7 @@
 msgid "Wrong Company"
 msgstr ""
 
-#: setup/doctype/company/company.js:167
+#: setup/doctype/company/company.js:172
 msgid "Wrong Password"
 msgstr ""
 
@@ -79941,7 +79982,7 @@
 #: 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:167
+#: public/js/financial_statements.js:220
 #: 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
@@ -80082,11 +80123,11 @@
 msgid "Yes"
 msgstr ""
 
-#: controllers/accounts_controller.py:3092
+#: controllers/accounts_controller.py:3151
 msgid "You are not allowed to update as per the conditions set in {} Workflow."
 msgstr ""
 
-#: accounts/general_ledger.py:666
+#: accounts/general_ledger.py:665
 msgid "You are not authorized to add or update entries before {0}"
 msgstr ""
 
@@ -80114,7 +80155,7 @@
 msgid "You can also set default CWIP account in Company {}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:870
+#: accounts/doctype/sales_invoice/sales_invoice.py:873
 msgid "You can change the parent account to a Balance Sheet account or select a different account."
 msgstr ""
 
@@ -80122,11 +80163,11 @@
 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:567
+#: accounts/doctype/journal_entry/journal_entry.py:583
 msgid "You can not enter current voucher in 'Against Journal Entry' column"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:184
+#: accounts/doctype/subscription/subscription.py:183
 msgid "You can only have Plans with the same billing cycle in a Subscription"
 msgstr ""
 
@@ -80172,11 +80213,11 @@
 msgid "You cannot create or cancel any accounting entries with in the closed Accounting Period {0}"
 msgstr ""
 
-#: accounts/general_ledger.py:690
+#: accounts/general_ledger.py:689
 msgid "You cannot create/amend any accounting entries till this date."
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:857
+#: accounts/doctype/journal_entry/journal_entry.py:809
 msgid "You cannot credit and debit same account at the same time"
 msgstr ""
 
@@ -80196,7 +80237,7 @@
 msgid "You cannot repost item valuation before {}"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:703
+#: accounts/doctype/subscription/subscription.py:735
 msgid "You cannot restart a Subscription that is not cancelled."
 msgstr ""
 
@@ -80208,7 +80249,7 @@
 msgid "You cannot submit the order without payment."
 msgstr ""
 
-#: controllers/accounts_controller.py:3068
+#: controllers/accounts_controller.py:3127
 msgid "You do not have permissions to {} items in a {}."
 msgstr ""
 
@@ -80252,7 +80293,7 @@
 msgid "You must select a customer before adding an item."
 msgstr ""
 
-#: accounts/doctype/pos_invoice/pos_invoice.py:253
+#: accounts/doctype/pos_invoice/pos_invoice.py:251
 msgid "You need to cancel POS Closing Entry {} to be able to cancel this document."
 msgstr ""
 
@@ -80337,11 +80378,11 @@
 msgid "Zip File"
 msgstr ""
 
-#: stock/reorder_item.py:244
+#: stock/reorder_item.py:283
 msgid "[Important] [ERPNext] Auto Reorder Errors"
 msgstr ""
 
-#: controllers/status_updater.py:238
+#: controllers/status_updater.py:247
 msgid "`Allow Negative rates for Items`"
 msgstr ""
 
@@ -80545,7 +80586,7 @@
 msgid "old_parent"
 msgstr ""
 
-#: controllers/accounts_controller.py:999
+#: controllers/accounts_controller.py:1033
 msgid "or"
 msgstr ""
 
@@ -80553,7 +80594,7 @@
 msgid "or its descendants"
 msgstr ""
 
-#: templates/includes/macros.html:239 templates/includes/macros.html:243
+#: templates/includes/macros.html:207 templates/includes/macros.html:211
 msgid "out of 5"
 msgstr ""
 
@@ -80598,7 +80639,7 @@
 msgid "per hour"
 msgstr ""
 
-#: stock/stock_ledger.py:1592
+#: stock/stock_ledger.py:1681
 msgid "performing either one below:"
 msgstr ""
 
@@ -80622,11 +80663,11 @@
 msgid "quotation_item"
 msgstr ""
 
-#: templates/includes/macros.html:234
+#: templates/includes/macros.html:202
 msgid "ratings"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1085
+#: accounts/doctype/payment_entry/payment_entry.py:1105
 msgid "received from"
 msgstr ""
 
@@ -80703,15 +80744,15 @@
 msgid "sandbox"
 msgstr ""
 
-#: public/js/controllers/transaction.js:919
+#: public/js/controllers/transaction.js:920
 msgid "selected Payment Terms Template"
 msgstr ""
 
-#: accounts/doctype/subscription/subscription.py:679
+#: accounts/doctype/subscription/subscription.py:711
 msgid "subscription is already cancelled."
 msgstr ""
 
-#: controllers/status_updater.py:344 controllers/status_updater.py:364
+#: controllers/status_updater.py:353 controllers/status_updater.py:373
 msgid "target_ref_field"
 msgstr ""
 
@@ -80727,12 +80768,12 @@
 msgid "title"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:1085
+#: accounts/doctype/payment_entry/payment_entry.py:1105
 #: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:27
 msgid "to"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2766
+#: accounts/doctype/sales_invoice/sales_invoice.py:2737
 msgid "to unallocate the amount of this Return Invoice before cancelling it."
 msgstr ""
 
@@ -80768,7 +80809,7 @@
 msgid "{0}"
 msgstr ""
 
-#: controllers/accounts_controller.py:844
+#: controllers/accounts_controller.py:878
 msgid "{0} '{1}' is disabled"
 msgstr ""
 
@@ -80788,7 +80829,7 @@
 msgid "{0} <b>{1}</b> has submitted Assets. Remove Item <b>{2}</b> from table to continue."
 msgstr ""
 
-#: controllers/accounts_controller.py:1824
+#: controllers/accounts_controller.py:1893
 msgid "{0} Account not found against Customer {1}."
 msgstr ""
 
@@ -80804,7 +80845,7 @@
 msgid "{0} Digest"
 msgstr ""
 
-#: accounts/utils.py:1258
+#: accounts/utils.py:1286
 msgid "{0} Number {1} is already used in {2} {3}"
 msgstr ""
 
@@ -80832,19 +80873,19 @@
 msgid "{0} account not found while submitting purchase receipt"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:978
+#: accounts/doctype/journal_entry/journal_entry.py:930
 msgid "{0} against Bill {1} dated {2}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:987
+#: accounts/doctype/journal_entry/journal_entry.py:939
 msgid "{0} against Purchase Order {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:954
+#: accounts/doctype/journal_entry/journal_entry.py:906
 msgid "{0} against Sales Invoice {1}"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:961
+#: accounts/doctype/journal_entry/journal_entry.py:913
 msgid "{0} against Sales Order {1}"
 msgstr ""
 
@@ -80878,11 +80919,11 @@
 msgid "{0} created"
 msgstr ""
 
-#: setup/doctype/company/company.py:190
+#: setup/doctype/company/company.py:191
 msgid "{0} currency must be same as company's default currency. Please select another account."
 msgstr ""
 
-#: buying/doctype/purchase_order/purchase_order.py:306
+#: buying/doctype/purchase_order/purchase_order.py:310
 msgid "{0} currently has a {1} Supplier Scorecard standing, and Purchase Orders to this supplier should be issued with caution."
 msgstr ""
 
@@ -80906,7 +80947,7 @@
 msgid "{0} for {1}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:362
+#: accounts/doctype/payment_entry/payment_entry.py:364
 msgid "{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section"
 msgstr ""
 
@@ -80914,7 +80955,7 @@
 msgid "{0} has been submitted successfully"
 msgstr ""
 
-#: controllers/accounts_controller.py:2143
+#: controllers/accounts_controller.py:2212
 msgid "{0} in row {1}"
 msgstr ""
 
@@ -80922,18 +80963,18 @@
 msgid "{0} is a mandatory Accounting Dimension. <br>Please set a value for {0} in Accounting Dimensions section."
 msgstr ""
 
-#: controllers/accounts_controller.py:159
+#: controllers/accounts_controller.py:162
 msgid "{0} is blocked so this transaction cannot proceed"
 msgstr ""
 
 #: accounts/doctype/budget/budget.py:57
-#: accounts/doctype/payment_entry/payment_entry.py:540
+#: accounts/doctype/payment_entry/payment_entry.py:542
 #: 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:972
+#: accounts/doctype/sales_invoice/sales_invoice.py:975
 msgid "{0} is mandatory for Item {1}"
 msgstr ""
 
@@ -80946,11 +80987,11 @@
 msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}"
 msgstr ""
 
-#: controllers/accounts_controller.py:2422
+#: controllers/accounts_controller.py:2491
 msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}."
 msgstr ""
 
-#: selling/doctype/customer/customer.py:198
+#: selling/doctype/customer/customer.py:199
 msgid "{0} is not a company bank account"
 msgstr ""
 
@@ -80962,7 +81003,7 @@
 msgid "{0} is not a stock Item"
 msgstr ""
 
-#: controllers/item_variant.py:140
+#: controllers/item_variant.py:144
 msgid "{0} is not a valid Value for Attribute {1} of Item {2}."
 msgstr ""
 
@@ -80978,7 +81019,7 @@
 msgid "{0} is not the default supplier for any items."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:2277
+#: accounts/doctype/payment_entry/payment_entry.py:2300
 msgid "{0} is on hold till {1}"
 msgstr ""
 
@@ -81001,11 +81042,11 @@
 msgid "{0} must be negative in return document"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:2011
+#: accounts/doctype/sales_invoice/sales_invoice.py:1988
 msgid "{0} not allowed to transact with {1}. Please change the Company."
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:465
+#: manufacturing/doctype/bom/bom.py:467
 msgid "{0} not found for item {1}"
 msgstr ""
 
@@ -81017,11 +81058,11 @@
 msgid "{0} payment entries can not be filtered by {1}"
 msgstr ""
 
-#: controllers/stock_controller.py:798
+#: controllers/stock_controller.py:899
 msgid "{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}."
 msgstr ""
 
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:450
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:451
 msgid "{0} units are reserved for Item {1} in Warehouse {2}, please un-reserve the same to {3} the Stock Reconciliation."
 msgstr ""
 
@@ -81037,20 +81078,20 @@
 msgid "{0} units of {1} are required in {2}{3}, on {4} {5} for {6} to complete the transaction."
 msgstr ""
 
-#: stock/stock_ledger.py:1235 stock/stock_ledger.py:1740
-#: stock/stock_ledger.py:1756
+#: stock/stock_ledger.py:1340 stock/stock_ledger.py:1829
+#: stock/stock_ledger.py:1845
 msgid "{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction."
 msgstr ""
 
-#: stock/stock_ledger.py:1866 stock/stock_ledger.py:1916
+#: stock/stock_ledger.py:1955 stock/stock_ledger.py:2005
 msgid "{0} units of {1} needed in {2} on {3} {4} to complete this transaction."
 msgstr ""
 
-#: stock/stock_ledger.py:1229
+#: stock/stock_ledger.py:1334
 msgid "{0} units of {1} needed in {2} to complete this transaction."
 msgstr ""
 
-#: stock/utils.py:385
+#: stock/utils.py:432
 msgid "{0} valid serial nos for Item {1}"
 msgstr ""
 
@@ -81066,6 +81107,10 @@
 msgid "{0} {1}"
 msgstr ""
 
+#: public/js/utils/serial_no_batch_selector.js:203
+msgid "{0} {1} Manually"
+msgstr ""
+
 #: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:433
 msgid "{0} {1} Partially Reconciled"
 msgstr ""
@@ -81078,9 +81123,9 @@
 msgid "{0} {1} created"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:504
-#: accounts/doctype/payment_entry/payment_entry.py:560
-#: accounts/doctype/payment_entry/payment_entry.py:2042
+#: accounts/doctype/payment_entry/payment_entry.py:506
+#: accounts/doctype/payment_entry/payment_entry.py:562
+#: accounts/doctype/payment_entry/payment_entry.py:2065
 msgid "{0} {1} does not exist"
 msgstr ""
 
@@ -81088,16 +81133,16 @@
 msgid "{0} {1} has accounting entries in currency {2} for company {3}. Please select a receivable or payable account with currency {2}."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:372
+#: accounts/doctype/payment_entry/payment_entry.py:374
 msgid "{0} {1} has already been fully paid."
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:382
+#: accounts/doctype/payment_entry/payment_entry.py:384
 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:445
-#: selling/doctype/sales_order/sales_order.py:478
+#: buying/doctype/purchase_order/purchase_order.py:449
+#: selling/doctype/sales_order/sales_order.py:481
 #: stock/doctype/material_request/material_request.py:198
 msgid "{0} {1} has been modified. Please refresh."
 msgstr ""
@@ -81106,16 +81151,16 @@
 msgid "{0} {1} has not been submitted so the action cannot be completed"
 msgstr ""
 
-#: accounts/doctype/bank_transaction/bank_transaction.py:72
+#: accounts/doctype/bank_transaction/bank_transaction.py:90
 msgid "{0} {1} is allocated twice in this Bank Transaction"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:589
+#: accounts/doctype/payment_entry/payment_entry.py:591
 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:802
+#: controllers/subcontracting_controller.py:806
 msgid "{0} {1} is cancelled or closed"
 msgstr ""
 
@@ -81127,7 +81172,7 @@
 msgid "{0} {1} is cancelled so the action cannot be completed"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:709
+#: accounts/doctype/journal_entry/journal_entry.py:725
 msgid "{0} {1} is closed"
 msgstr ""
 
@@ -81139,7 +81184,7 @@
 msgid "{0} {1} is frozen"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:706
+#: accounts/doctype/journal_entry/journal_entry.py:722
 msgid "{0} {1} is fully billed"
 msgstr ""
 
@@ -81147,7 +81192,7 @@
 msgid "{0} {1} is not active"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:567
+#: accounts/doctype/payment_entry/payment_entry.py:569
 msgid "{0} {1} is not associated with {2} {3}"
 msgstr ""
 
@@ -81155,12 +81200,12 @@
 msgid "{0} {1} is not in any active Fiscal Year"
 msgstr ""
 
-#: accounts/doctype/journal_entry/journal_entry.py:703
-#: accounts/doctype/journal_entry/journal_entry.py:744
+#: accounts/doctype/journal_entry/journal_entry.py:719
+#: accounts/doctype/journal_entry/journal_entry.py:760
 msgid "{0} {1} is not submitted"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:596
+#: accounts/doctype/payment_entry/payment_entry.py:598
 msgid "{0} {1} is on hold"
 msgstr ""
 
@@ -81168,7 +81213,7 @@
 msgid "{0} {1} is {2}"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.py:601
+#: accounts/doctype/payment_entry/payment_entry.py:603
 msgid "{0} {1} must be submitted"
 msgstr ""
 
@@ -81180,7 +81225,7 @@
 msgid "{0} {1} status is {2}"
 msgstr ""
 
-#: public/js/utils/serial_no_batch_selector.js:185
+#: public/js/utils/serial_no_batch_selector.js:189
 msgid "{0} {1} via CSV File"
 msgstr ""
 
@@ -81207,7 +81252,7 @@
 msgid "{0} {1}: Accounting Entry for {2} can only be made in currency: {3}"
 msgstr ""
 
-#: controllers/stock_controller.py:373
+#: controllers/stock_controller.py:365
 msgid "{0} {1}: Cost Center is mandatory for Item {2}"
 msgstr ""
 
@@ -81264,19 +81309,19 @@
 msgid "{0}: {1} does not exists"
 msgstr ""
 
-#: accounts/doctype/payment_entry/payment_entry.js:713
+#: accounts/doctype/payment_entry/payment_entry.js:724
 msgid "{0}: {1} must be less than {2}"
 msgstr ""
 
-#: manufacturing/doctype/bom/bom.py:212
+#: manufacturing/doctype/bom/bom.py:214
 msgid "{0}{1} Did you rename the item? Please contact Administrator / Tech support"
 msgstr ""
 
-#: controllers/stock_controller.py:1062
+#: controllers/stock_controller.py:1160
 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:1125
+#: accounts/report/accounts_receivable/accounts_receivable.py:1148
 msgid "{range4}-Above"
 msgstr ""
 
@@ -81288,7 +81333,7 @@
 msgid "{} Assets created for {}"
 msgstr ""
 
-#: accounts/doctype/sales_invoice/sales_invoice.py:1798
+#: accounts/doctype/sales_invoice/sales_invoice.py:1775
 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.py b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
index ceb4406..75d890c 100644
--- a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
@@ -222,7 +222,7 @@
 
 	def validate_maintenance_detail(self):
 		if not self.get("items"):
-			throw(_("Please enter Maintaince Details first"))
+			throw(_("Please enter Maintenance Details first"))
 
 		for d in self.get("items"):
 			if not d.item_code:
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index f034ed2..6f35206 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -176,8 +176,10 @@
 
 	def autoname(self):
 		# ignore amended documents while calculating current index
+
+		search_key = f"{self.doctype}-{self.item}%"
 		existing_boms = frappe.get_all(
-			"BOM", filters={"item": self.item, "amended_from": ["is", "not set"]}, pluck="name"
+			"BOM", filters={"name": ("like", search_key), "amended_from": ["is", "not set"]}, pluck="name"
 		)
 
 		if existing_boms:
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index 0acc2b1..aa7bc5b 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -1520,7 +1520,7 @@
 
 	if row.get("qty") > row.get("pending_qty"):
 		frappe.throw(
-			_("For operation {0}: Quantity ({1}) can not be greter than pending quantity({2})").format(
+			_("For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})").format(
 				frappe.bold(row.get("operation")),
 				frappe.bold(row.get("qty")),
 				frappe.bold(row.get("pending_qty")),
diff --git a/erpnext/patches/v14_0/migrate_gl_to_payment_ledger.py b/erpnext/patches/v14_0/migrate_gl_to_payment_ledger.py
index 72c8c07..95b5bc5 100644
--- a/erpnext/patches/v14_0/migrate_gl_to_payment_ledger.py
+++ b/erpnext/patches/v14_0/migrate_gl_to_payment_ledger.py
@@ -188,4 +188,4 @@
 						raise err
 				else:
 					break
-			print(f"{processed} records have been sucessfully migrated")
+			print(f"{processed} records have been successfully migrated")
diff --git a/erpnext/public/js/controllers/accounts.js b/erpnext/public/js/controllers/accounts.js
index 7879173..f0d8cbb 100644
--- a/erpnext/public/js/controllers/accounts.js
+++ b/erpnext/public/js/controllers/accounts.js
@@ -160,7 +160,7 @@
 				let tax = frappe.get_doc(cdt, cdn);
 				try {
 					me.validate_taxes_and_charges(cdt, cdn);
-					me.validate_inclusive_tax(tax);
+					me.validate_inclusive_tax(tax, frm);
 				} catch(e) {
 					tax.included_in_print_rate = 0;
 					refresh_field("included_in_print_rate", tax.name, tax.parentfield);
@@ -170,7 +170,8 @@
 		});
 	},
 
-	validate_inclusive_tax: function(tax) {
+	validate_inclusive_tax: function(tax, frm) {
+		this.frm = this.frm || frm;
 		let actual_type_error = function() {
 			var msg = __("Actual type tax cannot be included in Item rate in row {0}", [tax.idx])
 			frappe.throw(msg);
@@ -186,12 +187,12 @@
 			if(tax.charge_type == "Actual") {
 				// inclusive tax cannot be of type Actual
 				actual_type_error();
-			} else if(tax.charge_type == "On Previous Row Amount" &&
+			} else if (tax.charge_type == "On Previous Row Amount" && this.frm &&
 				!cint(this.frm.doc["taxes"][tax.row_id - 1].included_in_print_rate)
 			) {
 				// referred row should also be an inclusive tax
 				on_previous_row_error(tax.row_id);
-			} else if(tax.charge_type == "On Previous Row Total") {
+			} else if (tax.charge_type == "On Previous Row Total" && this.frm) {
 				var taxes_not_included = $.map(this.frm.doc["taxes"].slice(0, tax.row_id),
 					function(t) { return cint(t.included_in_print_rate) ? null : t; });
 				if(taxes_not_included.length > 0) {
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index d24c4e6..bd5a136 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -103,7 +103,7 @@
 		this.determine_exclusive_rate();
 		this.calculate_net_total();
 		this.calculate_taxes();
-		this.manipulate_grand_total_for_inclusive_tax();
+		this.adjust_grand_total_for_inclusive_tax();
 		this.calculate_totals();
 		this._cleanup();
 	}
@@ -185,7 +185,7 @@
 
 			if (!this.discount_amount_applied) {
 				erpnext.accounts.taxes.validate_taxes_and_charges(tax.doctype, tax.name);
-				erpnext.accounts.taxes.validate_inclusive_tax(tax);
+				erpnext.accounts.taxes.validate_inclusive_tax(tax, this.frm);
 			}
 			frappe.model.round_floats_in(tax);
 		});
@@ -248,7 +248,7 @@
 
 			if(!me.discount_amount_applied && item.qty && (total_inclusive_tax_amount_per_qty || cumulated_tax_fraction)) {
 				var amount = flt(item.amount) - total_inclusive_tax_amount_per_qty;
-				item.net_amount = flt(amount / (1 + cumulated_tax_fraction));
+				item.net_amount = flt(amount / (1 + cumulated_tax_fraction), precision("net_amount", item));
 				item.net_rate = item.qty ? flt(item.net_amount / item.qty, precision("net_rate", item)) : 0;
 
 				me.set_in_company_currency(item, ["net_rate", "net_amount"]);
@@ -303,6 +303,8 @@
 			me.frm.doc.net_total += item.net_amount;
 			me.frm.doc.base_net_total += item.base_net_amount;
 		});
+
+		frappe.model.round_floats_in(this.frm.doc, ["total", "base_total", "net_total", "base_net_total"]);
 	}
 
 	calculate_shipping_charges() {
@@ -521,8 +523,17 @@
 		}
 	}
 
+	/**
+	* @deprecated Use adjust_grand_total_for_inclusive_tax instead.
+	*/
 	manipulate_grand_total_for_inclusive_tax() {
+		// for backward compatablility - if in case used by an external application
+		this.adjust_grand_total_for_inclusive_tax()
+	}
+
+	adjust_grand_total_for_inclusive_tax() {
 		var me = this;
+
 		// if fully inclusive taxes and diff
 		if (this.frm.doc["taxes"] && this.frm.doc["taxes"].length) {
 			var any_inclusive_tax = false;
@@ -548,7 +559,9 @@
 				diff = flt(diff, precision("rounding_adjustment"));
 
 				if ( diff && Math.abs(diff) <= (5.0 / Math.pow(10, precision("tax_amount", last_tax))) ) {
-					me.frm.doc.rounding_adjustment = diff;
+					me.frm.doc.grand_total_diff = diff;
+				} else {
+					me.frm.doc.grand_total_diff = 0;
 				}
 			}
 		}
@@ -559,7 +572,7 @@
 		var me = this;
 		var tax_count = this.frm.doc["taxes"] ? this.frm.doc["taxes"].length : 0;
 		this.frm.doc.grand_total = flt(tax_count
-			? this.frm.doc["taxes"][tax_count - 1].total + flt(this.frm.doc.rounding_adjustment)
+			? 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)) {
@@ -619,7 +632,7 @@
 		if(frappe.meta.get_docfield(this.frm.doc.doctype, "rounded_total", this.frm.doc.name)) {
 			this.frm.doc.rounded_total = round_based_on_smallest_currency_fraction(this.frm.doc.grand_total,
 				this.frm.doc.currency, precision("rounded_total"));
-			this.frm.doc.rounding_adjustment += flt(this.frm.doc.rounded_total - this.frm.doc.grand_total,
+			this.frm.doc.rounding_adjustment = flt(this.frm.doc.rounded_total - this.frm.doc.grand_total,
 				precision("rounding_adjustment"));
 
 			this.set_in_company_currency(this.frm.doc, ["rounding_adjustment", "rounded_total"]);
@@ -687,8 +700,7 @@
 			if (total_for_discount_amount) {
 				$.each(this.frm._items || [], function(i, item) {
 					distributed_amount = flt(me.frm.doc.discount_amount) * item.net_amount / total_for_discount_amount;
-					item.net_amount = flt(item.net_amount - distributed_amount,
-						precision("base_amount", item));
+					item.net_amount = flt(item.net_amount - distributed_amount, precision("net_amount", item));
 					net_total += item.net_amount;
 
 					// discount amount rounding loss adjustment if no taxes
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 6406735..f831a88 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -790,24 +790,25 @@
 				if (me.frm.doc.price_list_currency == company_currency) {
 					me.frm.set_value('plc_conversion_rate', 1.0);
 				}
-				if (company_doc && company_doc.default_letter_head) {
-					if(me.frm.fields_dict.letter_head) {
-						me.frm.set_value("letter_head", company_doc.default_letter_head);
+				if (company_doc){
+					if (company_doc.default_letter_head) {
+						if(me.frm.fields_dict.letter_head) {
+							me.frm.set_value("letter_head", company_doc.default_letter_head);
+						}
+					}
+					let selling_doctypes_for_tc = ["Sales Invoice", "Quotation", "Sales Order", "Delivery Note"];
+					if (company_doc.default_selling_terms && frappe.meta.has_field(me.frm.doc.doctype, "tc_name") &&
+					selling_doctypes_for_tc.indexOf(me.frm.doc.doctype) != -1) {
+						me.frm.set_value("tc_name", company_doc.default_selling_terms);
+					}
+					let buying_doctypes_for_tc = ["Request for Quotation", "Supplier Quotation", "Purchase Order",
+						"Material Request", "Purchase Receipt"];
+					// Purchase Invoice is excluded as per issue #3345
+					if (company_doc.default_buying_terms && frappe.meta.has_field(me.frm.doc.doctype, "tc_name") &&
+					buying_doctypes_for_tc.indexOf(me.frm.doc.doctype) != -1) {
+						me.frm.set_value("tc_name", company_doc.default_buying_terms);
 					}
 				}
-				let selling_doctypes_for_tc = ["Sales Invoice", "Quotation", "Sales Order", "Delivery Note"];
-				if (company_doc.default_selling_terms && frappe.meta.has_field(me.frm.doc.doctype, "tc_name") &&
-				selling_doctypes_for_tc.indexOf(me.frm.doc.doctype) != -1) {
-					me.frm.set_value("tc_name", company_doc.default_selling_terms);
-				}
-				let buying_doctypes_for_tc = ["Request for Quotation", "Supplier Quotation", "Purchase Order",
-					"Material Request", "Purchase Receipt"];
-				// Purchase Invoice is excluded as per issue #3345
-				if (company_doc.default_buying_terms && frappe.meta.has_field(me.frm.doc.doctype, "tc_name") &&
-				buying_doctypes_for_tc.indexOf(me.frm.doc.doctype) != -1) {
-					me.frm.set_value("tc_name", company_doc.default_buying_terms);
-				}
-
 				frappe.run_serially([
 					() => me.frm.script_manager.trigger("currency"),
 					() => me.update_item_tax_map(),
diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js
index 17341d1..43e58c2 100644
--- a/erpnext/public/js/financial_statements.js
+++ b/erpnext/public/js/financial_statements.js
@@ -2,7 +2,58 @@
 
 erpnext.financial_statements = {
 	"filters": get_filters(),
+	"baseData": null,
 	"formatter": function(value, row, column, data, default_formatter, filter) {
+		if(frappe.query_report.get_filter_value("selected_view") == "Growth" && data && column.colIndex >= 3){
+			//Assuming that the first three columns are s.no, account name and the very first year of the accounting values, to calculate the relative percentage values of the successive columns.
+			const lastAnnualValue = row[column.colIndex - 1].content;
+			const currentAnnualvalue = data[column.fieldname];
+			if(currentAnnualvalue == undefined) return 'NA'; //making this not applicable for undefined/null values
+			let annualGrowth = 0;
+			if(lastAnnualValue == 0 && currentAnnualvalue > 0){
+				//If the previous year value is 0 and the current value is greater than 0
+				annualGrowth = 1;
+			}
+			else if(lastAnnualValue > 0){
+				annualGrowth  = (currentAnnualvalue - lastAnnualValue) / lastAnnualValue;
+			}
+
+			const growthPercent = (Math.round(annualGrowth*10000)/100); //calculating the rounded off percentage
+
+			value = $(`<span>${((growthPercent >=0)? '+':'' )+growthPercent+'%'}</span>`);
+			if(growthPercent < 0){
+				value = $(value).addClass("text-danger");
+			}
+			else{
+				value = $(value).addClass("text-success");
+			}
+			value = $(value).wrap("<p></p>").parent().html();
+
+			return value;
+		}
+		else if(frappe.query_report.get_filter_value("selected_view") == "Margin" && data){
+			if(column.fieldname =="account" && data.account_name == __("Income")){
+				//Taking the total income from each column (for all the financial years) as the base (100%)
+				this.baseData = row;
+			}
+			if(column.colIndex >= 2){
+				//Assuming that the first two columns are s.no and account name, to calculate the relative percentage values of the successive columns.
+				const currentAnnualvalue = data[column.fieldname];
+				const baseValue = this.baseData[column.colIndex].content;
+				if(currentAnnualvalue == undefined || baseValue <= 0) return 'NA';
+				const marginPercent = Math.round((currentAnnualvalue/baseValue)*10000)/100;
+
+				value = $(`<span>${marginPercent+'%'}</span>`);
+				if(marginPercent < 0)
+					value = $(value).addClass("text-danger");
+				else
+					value = $(value).addClass("text-success");
+				value = $(value).wrap("<p></p>").parent().html();
+				return value;
+			}
+
+		}
+
 		if (data && column.fieldname=="account") {
 			value = data.account_name || value;
 
@@ -74,22 +125,24 @@
 			});
 		});
 
-		const views_menu = report.page.add_custom_button_group(__('Financial Statements'));
+		if (report.page){
+			const views_menu = report.page.add_custom_button_group(__('Financial Statements'));
 
-		report.page.add_custom_menu_item(views_menu, __("Balance Sheet"), function() {
-			var filters = report.get_values();
-			frappe.set_route('query-report', 'Balance Sheet', {company: filters.company});
-		});
+			report.page.add_custom_menu_item(views_menu, __("Balance Sheet"), function() {
+				var filters = report.get_values();
+				frappe.set_route('query-report', 'Balance Sheet', {company: filters.company});
+			});
 
-		report.page.add_custom_menu_item(views_menu, __("Profit and Loss"), function() {
-			var filters = report.get_values();
-			frappe.set_route('query-report', 'Profit and Loss Statement', {company: filters.company});
-		});
+			report.page.add_custom_menu_item(views_menu, __("Profit and Loss"), function() {
+				var filters = report.get_values();
+				frappe.set_route('query-report', 'Profit and Loss Statement', {company: filters.company});
+			});
 
-		report.page.add_custom_menu_item(views_menu, __("Cash Flow Statement"), function() {
-			var filters = report.get_values();
-			frappe.set_route('query-report', 'Cash Flow', {company: filters.company});
-		});
+			report.page.add_custom_menu_item(views_menu, __("Cash Flow Statement"), function() {
+				var filters = report.get_values();
+				frappe.set_route('query-report', 'Cash Flow', {company: filters.company});
+			});
+		}
 	}
 };
 
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index 44a4957..80ade70 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -71,6 +71,10 @@
 		let warehouse = this.item?.type_of_transaction === "Outward" ?
 			(this.item.warehouse || this.item.s_warehouse) : "";
 
+		if (!warehouse && this.frm.doc.doctype === 'Stock Reconciliation') {
+			warehouse = this.get_warehouse();
+		}
+
 		return {
 			'item_code': this.item.item_code,
 			'warehouse': ["=", warehouse]
diff --git a/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.json b/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.json
index d332b4e..ecc198a 100644
--- a/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.json
+++ b/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.json
@@ -64,7 +64,7 @@
   {
    "fieldname": "valid_upto",
    "fieldtype": "Date",
-   "label": "Valid Upto",
+   "label": "Valid Up To",
    "reqd": 1
   },
   {
@@ -135,7 +135,7 @@
  ],
  "index_web_pages_for_search": 1,
  "links": [],
- "modified": "2023-04-18 08:25:35.302081",
+ "modified": "2024-01-24 02:20:26.145996",
  "modified_by": "Administrator",
  "module": "Regional",
  "name": "Lower Deduction Certificate",
diff --git a/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py b/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py
index 72b3a49..6982ad1 100644
--- a/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py
+++ b/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py
@@ -37,7 +37,7 @@
 
 	def validate_dates(self):
 		if getdate(self.valid_upto) < getdate(self.valid_from):
-			frappe.throw(_("Valid Upto date cannot be before Valid From date"))
+			frappe.throw(_("Valid Up To date cannot be before Valid From date"))
 
 		fiscal_year = get_fiscal_year(fiscal_year=self.fiscal_year, as_dict=True)
 
@@ -45,7 +45,7 @@
 			frappe.throw(_("Valid From date not in Fiscal Year {0}").format(frappe.bold(self.fiscal_year)))
 
 		if not (fiscal_year.year_start_date <= getdate(self.valid_upto) <= fiscal_year.year_end_date):
-			frappe.throw(_("Valid Upto date not in Fiscal Year {0}").format(frappe.bold(self.fiscal_year)))
+			frappe.throw(_("Valid Up To date not in Fiscal Year {0}").format(frappe.bold(self.fiscal_year)))
 
 	def validate_supplier_against_tax_category(self):
 		duplicate_certificate = frappe.db.get_value(
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index efb9820..2f6775f 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -124,6 +124,7 @@
 				),
 				title=_("Note"),
 				indicator="yellow",
+				alert=True,
 			)
 
 			return new_customer_name
diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py
index 29dbd4f..47153a8 100644
--- a/erpnext/selling/doctype/customer/test_customer.py
+++ b/erpnext/selling/doctype/customer/test_customer.py
@@ -427,11 +427,11 @@
 	if not allowed_to_interact_with:
 		allowed_to_interact_with = represents_company
 
-	exisiting_representative = frappe.db.get_value(
+	existing_representative = frappe.db.get_value(
 		"Customer", {"represents_company": represents_company}
 	)
-	if exisiting_representative:
-		return exisiting_representative
+	if existing_representative:
+		return existing_representative
 
 	if not frappe.db.exists("Customer", customer_name):
 		customer = frappe.get_doc(
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 654f297..13d17d6 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -346,8 +346,8 @@
 	return _make_sales_order(source_name, target_doc)
 
 
-def _make_sales_order(source_name, target_doc=None, customer_group=None, ignore_permissions=False):
-	customer = _make_customer(source_name, ignore_permissions, customer_group)
+def _make_sales_order(source_name, target_doc=None, ignore_permissions=False):
+	customer = _make_customer(source_name, ignore_permissions)
 	ordered_items = frappe._dict(
 		frappe.db.get_all(
 			"Sales Order Item",
@@ -391,7 +391,6 @@
 		balance_qty = obj.qty - ordered_items.get(obj.item_code, 0.0)
 		target.qty = balance_qty if balance_qty > 0 else 0
 		target.stock_qty = flt(target.qty) * flt(obj.conversion_factor)
-		target.delivery_date = nowdate()
 
 		if obj.against_blanket_order:
 			target.against_blanket_order = obj.against_blanket_order
@@ -507,50 +506,51 @@
 	return doclist
 
 
-def _make_customer(source_name, ignore_permissions=False, customer_group=None):
+def _make_customer(source_name, ignore_permissions=False):
 	quotation = frappe.db.get_value(
-		"Quotation", source_name, ["order_type", "party_name", "customer_name"], as_dict=1
+		"Quotation",
+		source_name,
+		["order_type", "quotation_to", "party_name", "customer_name"],
+		as_dict=1,
 	)
 
-	if quotation and quotation.get("party_name"):
-		if not frappe.db.exists("Customer", quotation.get("party_name")):
-			lead_name = quotation.get("party_name")
-			customer_name = frappe.db.get_value(
-				"Customer", {"lead_name": lead_name}, ["name", "customer_name"], as_dict=True
-			)
-			if not customer_name:
-				from erpnext.crm.doctype.lead.lead import _make_customer
+	if quotation.quotation_to == "Customer":
+		return frappe.get_doc("Customer", quotation.party_name)
 
-				customer_doclist = _make_customer(lead_name, ignore_permissions=ignore_permissions)
-				customer = frappe.get_doc(customer_doclist)
-				customer.flags.ignore_permissions = ignore_permissions
-				customer.customer_group = customer_group
+	# If the Quotation is not to a Customer, it must be to a Lead.
+	# Check if a Customer already exists for the Lead.
+	existing_customer_for_lead = frappe.db.get_value("Customer", {"lead_name": quotation.party_name})
+	if existing_customer_for_lead:
+		return frappe.get_doc("Customer", existing_customer_for_lead)
 
-				try:
-					customer.insert()
-					return customer
-				except frappe.NameError:
-					if frappe.defaults.get_global_default("cust_master_name") == "Customer Name":
-						customer.run_method("autoname")
-						customer.name += "-" + lead_name
-						customer.insert()
-						return customer
-					else:
-						raise
-				except frappe.MandatoryError as e:
-					mandatory_fields = e.args[0].split(":")[1].split(",")
-					mandatory_fields = [customer.meta.get_label(field.strip()) for field in mandatory_fields]
+	# If no Customer exists for the Lead, create a new Customer.
+	return create_customer_from_lead(quotation.party_name, ignore_permissions=ignore_permissions)
 
-					frappe.local.message_log = []
-					lead_link = frappe.utils.get_link_to_form("Lead", lead_name)
-					message = (
-						_("Could not auto create Customer due to the following missing mandatory field(s):") + "<br>"
-					)
-					message += "<br><ul><li>" + "</li><li>".join(mandatory_fields) + "</li></ul>"
-					message += _("Please create Customer from Lead {0}.").format(lead_link)
 
-					frappe.throw(message, title=_("Mandatory Missing"))
-			else:
-				return customer_name
-		else:
-			return frappe.get_doc("Customer", quotation.get("party_name"))
+def create_customer_from_lead(lead_name, ignore_permissions=False):
+	from erpnext.crm.doctype.lead.lead import _make_customer
+
+	customer = _make_customer(lead_name, ignore_permissions=ignore_permissions)
+	customer.flags.ignore_permissions = ignore_permissions
+
+	try:
+		customer.insert()
+		return customer
+	except frappe.MandatoryError as e:
+		handle_mandatory_error(e, customer, lead_name)
+
+
+def handle_mandatory_error(e, customer, lead_name):
+	from frappe.utils import get_link_to_form
+
+	mandatory_fields = e.args[0].split(":")[1].split(",")
+	mandatory_fields = [customer.meta.get_label(field.strip()) for field in mandatory_fields]
+
+	frappe.local.message_log = []
+	message = (
+		_("Could not auto create Customer due to the following missing mandatory field(s):") + "<br>"
+	)
+	message += "<br><ul><li>" + "</li><li>".join(mandatory_fields) + "</li></ul>"
+	message += _("Please create Customer from Lead {0}.").format(get_link_to_form("Lead", lead_name))
+
+	frappe.throw(message, title=_("Mandatory Missing"))
diff --git a/erpnext/selling/doctype/quotation/test_quotation.py b/erpnext/selling/doctype/quotation/test_quotation.py
index 2a4855e..0b0d6e7 100644
--- a/erpnext/selling/doctype/quotation/test_quotation.py
+++ b/erpnext/selling/doctype/quotation/test_quotation.py
@@ -99,7 +99,6 @@
 		self.assertEqual(sales_order.get("items")[0].prevdoc_docname, quotation.name)
 		self.assertEqual(sales_order.customer, "_Test Customer")
 
-		sales_order.delivery_date = "2014-01-01"
 		sales_order.naming_series = "_T-Quotation-"
 		sales_order.transaction_date = nowdate()
 		sales_order.insert()
@@ -132,7 +131,6 @@
 		self.assertEqual(sales_order.get("items")[0].prevdoc_docname, quotation.name)
 		self.assertEqual(sales_order.customer, "_Test Customer")
 
-		sales_order.delivery_date = "2014-01-01"
 		sales_order.naming_series = "_T-Quotation-"
 		sales_order.transaction_date = nowdate()
 		sales_order.insert()
@@ -609,6 +607,61 @@
 		quotation.items[0].conversion_factor = 2.23
 		self.assertRaises(frappe.ValidationError, quotation.save)
 
+	def test_item_tax_template_for_quotation(self):
+		from erpnext.stock.doctype.item.test_item import make_item
+
+		if not frappe.db.exists("Account", {"account_name": "_Test Vat", "company": "_Test Company"}):
+			frappe.get_doc(
+				{
+					"doctype": "Account",
+					"account_name": "_Test Vat",
+					"company": "_Test Company",
+					"account_type": "Tax",
+					"root_type": "Asset",
+					"is_group": 0,
+					"parent_account": "Tax Assets - _TC",
+					"tax_rate": 10,
+				}
+			).insert()
+
+		if not frappe.db.exists("Item Tax Template", "Vat Template - _TC"):
+			doc = frappe.get_doc(
+				{
+					"doctype": "Item Tax Template",
+					"name": "Vat Template",
+					"title": "Vat Template",
+					"company": "_Test Company",
+					"taxes": [
+						{
+							"tax_type": "_Test Vat - _TC",
+							"tax_rate": 5,
+						}
+					],
+				}
+			).insert()
+
+		item_doc = make_item("_Test Item Tax Template QTN", {"is_stock_item": 1})
+		if not frappe.db.exists(
+			"Item Tax", {"parent": item_doc.name, "item_tax_template": "Vat Template - _TC"}
+		):
+			item_doc.append("taxes", {"item_tax_template": "Vat Template - _TC"})
+			item_doc.save()
+
+		quotation = make_quotation(
+			item_code="_Test Item Tax Template QTN", qty=1, rate=100, do_not_submit=1
+		)
+		self.assertFalse(quotation.taxes)
+
+		quotation.append_taxes_from_item_tax_template()
+		quotation.save()
+		self.assertTrue(quotation.taxes)
+		for row in quotation.taxes:
+			self.assertEqual(row.account_head, "_Test Vat - _TC")
+			self.assertAlmostEqual(row.base_tax_amount, quotation.total * 5 / 100)
+
+		item_doc.taxes = []
+		item_doc.save()
+
 
 test_records = frappe.get_test_records("Quotation")
 
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 8a62926..66b803c 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -643,7 +643,7 @@
 					if not frappe.get_cached_value("Item", item.item_code, "has_serial_no"):
 						frappe.throw(
 							_(
-								"Item {0} has no Serial No. Only serilialized items can have delivery based on Serial No"
+								"Item {0} has no Serial No. Only serialized items can have delivery based on Serial No"
 							).format(item.item_code)
 						)
 					if not frappe.db.exists("BOM", {"item": item.item_code, "is_active": 1}):
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 87aeeac..9599980 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -118,6 +118,7 @@
    "oldfieldtype": "Link",
    "options": "Item",
    "print_width": "150px",
+   "reqd": 1,
    "width": "150px"
   },
   {
@@ -908,7 +909,7 @@
  "idx": 1,
  "istable": 1,
  "links": [],
- "modified": "2023-11-24 13:24:55.756320",
+ "modified": "2024-01-25 14:24:00.330219",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Sales Order Item",
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.py b/erpnext/selling/doctype/sales_order_item/sales_order_item.py
index 25f5b4b..fa7b9b9 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.py
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.py
@@ -43,7 +43,8 @@
 		gross_profit: DF.Currency
 		image: DF.Attach | None
 		is_free_item: DF.Check
-		item_code: DF.Link | None
+		is_stock_item: DF.Check
+		item_code: DF.Link
 		item_group: DF.Link | None
 		item_name: DF.Data
 		item_tax_rate: DF.Code | None
diff --git a/erpnext/selling/page/point_of_sale/pos_controller.js b/erpnext/selling/page/point_of_sale/pos_controller.js
index feecd9c..80e1c20 100644
--- a/erpnext/selling/page/point_of_sale/pos_controller.js
+++ b/erpnext/selling/page/point_of_sale/pos_controller.js
@@ -360,7 +360,7 @@
 							this.order_summary.load_summary_of(this.frm.doc, true);
 							frappe.show_alert({
 								indicator: 'green',
-								message: __('POS invoice {0} created succesfully', [r.doc.name])
+								message: __('POS invoice {0} created successfully', [r.doc.name])
 							});
 						});
 				}
diff --git a/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py b/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py
index 00acc80..72b7fa2 100644
--- a/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py
+++ b/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py
@@ -210,7 +210,6 @@
 		.where(
 			(so.docstatus == 1)
 			& (so.status.isin(["To Deliver and Bill", "To Bill", "To Pay"]))
-			& (so.payment_terms_template != "NULL")
 			& (so.company == conditions.company)
 			& (so.transaction_date[conditions.start_date : conditions.end_date])
 		)
diff --git a/erpnext/setup/doctype/authorization_control/authorization_control.py b/erpnext/setup/doctype/authorization_control/authorization_control.py
index 9446fb4..27313ae 100644
--- a/erpnext/setup/doctype/authorization_control/authorization_control.py
+++ b/erpnext/setup/doctype/authorization_control/authorization_control.py
@@ -54,7 +54,7 @@
 			if not has_common(appr_roles, frappe.get_roles()) and not has_common(
 				appr_users, [session["user"]]
 			):
-				frappe.msgprint(_("Not authroized since {0} exceeds limits").format(_(based_on)))
+				frappe.msgprint(_("Not authorized since {0} exceeds limits").format(_(based_on)))
 				frappe.throw(_("Can be approved by {0}").format(comma_or(appr_roles + appr_users)))
 
 	def validate_auth_rule(self, doctype_name, total, based_on, cond, company, master_name=""):
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 68a3854..876b6a4 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -908,8 +908,8 @@
 @frappe.whitelist()
 def is_deletion_job_running(company):
 	job_id = generate_id_for_deletion_job(company)
-	job_name = get_job(job_id).get_id()  # job name will have site prefix
 	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)
diff --git a/erpnext/setup/doctype/employee/employee.json b/erpnext/setup/doctype/employee/employee.json
index daf2df5..fc1fc9b 100644
--- a/erpnext/setup/doctype/employee/employee.json
+++ b/erpnext/setup/doctype/employee/employee.json
@@ -441,13 +441,13 @@
   {
    "fieldname": "prefered_contact_email",
    "fieldtype": "Select",
-   "label": "Prefered Contact Email",
+   "label": "Preferred Contact Email",
    "options": "\nCompany Email\nPersonal Email\nUser ID"
   },
   {
    "fieldname": "prefered_email",
    "fieldtype": "Data",
-   "label": "Prefered Email",
+   "label": "Preferred Email",
    "options": "Email",
    "read_only": 1
   },
@@ -524,7 +524,7 @@
   {
    "fieldname": "valid_upto",
    "fieldtype": "Date",
-   "label": "Valid Upto"
+   "label": "Valid Up To"
   },
   {
    "fieldname": "place_of_issue",
@@ -824,7 +824,7 @@
  "image_field": "image",
  "is_tree": 1,
  "links": [],
- "modified": "2024-01-03 17:36:20.984421",
+ "modified": "2024-01-24 02:20:26.145996",
  "modified_by": "Administrator",
  "module": "Setup",
  "name": "Employee",
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 319d435..844e786 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
@@ -4,9 +4,10 @@
 import unittest
 
 import frappe
+from frappe.tests.utils import FrappeTestCase
 
 
-class TestTransactionDeletionRecord(unittest.TestCase):
+class TestTransactionDeletionRecord(FrappeTestCase):
 	def setUp(self):
 		create_company("Dunder Mifflin Paper Co")
 
@@ -14,7 +15,7 @@
 		frappe.db.rollback()
 
 	def test_doctypes_contain_company_field(self):
-		tdr = create_transaction_deletion_request("Dunder Mifflin Paper Co")
+		tdr = create_transaction_deletion_doc("Dunder Mifflin Paper Co")
 		for doctype in tdr.doctypes:
 			contains_company = False
 			doctype_fields = frappe.get_meta(doctype.doctype_name).as_dict()["fields"]
@@ -27,17 +28,27 @@
 	def test_no_of_docs_is_correct(self):
 		for i in range(5):
 			create_task("Dunder Mifflin Paper Co")
-		tdr = create_transaction_deletion_request("Dunder Mifflin Paper Co")
+		tdr = create_transaction_deletion_doc("Dunder Mifflin Paper Co")
 		for doctype in tdr.doctypes:
 			if doctype.doctype_name == "Task":
 				self.assertEqual(doctype.no_of_docs, 5)
 
 	def test_deletion_is_successful(self):
 		create_task("Dunder Mifflin Paper Co")
-		create_transaction_deletion_request("Dunder Mifflin Paper Co")
+		create_transaction_deletion_doc("Dunder Mifflin Paper Co")
 		tasks_containing_company = frappe.get_all("Task", filters={"company": "Dunder Mifflin Paper Co"})
 		self.assertEqual(tasks_containing_company, [])
 
+	def test_company_transaction_deletion_request(self):
+		from erpnext.setup.doctype.company.company import create_transaction_deletion_request
+
+		# don't reuse below company for other test cases
+		company = "Deep Space Exploration"
+		create_company(company)
+
+		# below call should not raise any exceptions or throw errors
+		create_transaction_deletion_request(company)
+
 
 def create_company(company_name):
 	company = frappe.get_doc(
@@ -46,7 +57,7 @@
 	company.insert(ignore_if_duplicate=True)
 
 
-def create_transaction_deletion_request(company):
+def create_transaction_deletion_doc(company):
 	tdr = frappe.get_doc({"doctype": "Transaction Deletion Record", "company": company})
 	tdr.insert()
 	tdr.submit()
diff --git a/erpnext/stock/doctype/batch/batch.js b/erpnext/stock/doctype/batch/batch.js
index 7bf7a1f..f4a935a 100644
--- a/erpnext/stock/doctype/batch/batch.js
+++ b/erpnext/stock/doctype/batch/batch.js
@@ -52,7 +52,7 @@
 					// sort by qty
 					r.message.sort(function(a, b) { a.qty > b.qty ? 1 : -1 });
 
-					var rows = $('<div></div>').appendTo(section);
+					const rows = $('<div></div>').appendTo(section);
 
 					// show
 					(r.message || []).forEach(function(d) {
@@ -76,7 +76,7 @@
 
 					// move - ask for target warehouse and make stock entry
 					rows.find('.btn-move').on('click', function() {
-						var $btn = $(this);
+						const $btn = $(this);
 						const fields = [
 							{
 								fieldname: 'to_warehouse',
@@ -115,7 +115,7 @@
 					// split - ask for new qty and batch ID (optional)
 					// and make stock entry via batch.batch_split
 					rows.find('.btn-split').on('click', function() {
-						var $btn = $(this);
+						const $btn = $(this);
 						frappe.prompt([{
 							fieldname: 'qty',
 							label: __('New Batch Qty'),
@@ -128,19 +128,16 @@
 							fieldtype: 'Data',
 						}],
 						(data) => {
-							frappe.call({
-								method: 'erpnext.stock.doctype.batch.batch.split_batch',
-								args: {
+							frappe.xcall(
+								'erpnext.stock.doctype.batch.batch.split_batch',
+								{
 									item_code: frm.doc.item,
 									batch_no: frm.doc.name,
 									qty: data.qty,
 									warehouse: $btn.attr('data-warehouse'),
 									new_batch_id: data.new_batch_id
-								},
-								callback: (r) => {
-									frm.refresh();
-								},
-							});
+								}
+							).then(() => frm.reload_doc());
 						},
 						__('Split Batch'),
 						__('Split')
diff --git a/erpnext/stock/doctype/batch/batch.py b/erpnext/stock/doctype/batch/batch.py
index 7b23f9e..e8e94fd 100644
--- a/erpnext/stock/doctype/batch/batch.py
+++ b/erpnext/stock/doctype/batch/batch.py
@@ -9,7 +9,7 @@
 from frappe.model.document import Document
 from frappe.model.naming import make_autoname, revert_series_if_last
 from frappe.query_builder.functions import CurDate, Sum
-from frappe.utils import cint, flt, get_link_to_form, nowtime, today
+from frappe.utils import cint, flt, get_link_to_form
 from frappe.utils.data import add_days
 from frappe.utils.jinja import render_template
 
@@ -248,8 +248,9 @@
 
 
 @frappe.whitelist()
-def split_batch(batch_no, item_code, warehouse, qty, new_batch_id=None):
-
+def split_batch(
+	batch_no: str, item_code: str, warehouse: str, qty: float, new_batch_id: str | None = None
+):
 	"""Split the batch into a new batch"""
 	batch = frappe.get_doc(dict(doctype="Batch", item=item_code, batch_id=new_batch_id)).insert()
 	qty = flt(qty)
@@ -257,29 +258,21 @@
 	company = frappe.db.get_value("Warehouse", warehouse, "company")
 
 	from_bundle_id = make_batch_bundle(
-		frappe._dict(
-			{
-				"item_code": item_code,
-				"warehouse": warehouse,
-				"batches": frappe._dict({batch_no: qty}),
-				"company": company,
-				"type_of_transaction": "Outward",
-				"qty": qty,
-			}
-		)
+		item_code=item_code,
+		warehouse=warehouse,
+		batches=frappe._dict({batch_no: qty}),
+		company=company,
+		type_of_transaction="Outward",
+		qty=qty,
 	)
 
 	to_bundle_id = make_batch_bundle(
-		frappe._dict(
-			{
-				"item_code": item_code,
-				"warehouse": warehouse,
-				"batches": frappe._dict({batch.name: qty}),
-				"company": company,
-				"type_of_transaction": "Inward",
-				"qty": qty,
-			}
-		)
+		item_code=item_code,
+		warehouse=warehouse,
+		batches=frappe._dict({batch.name: qty}),
+		company=company,
+		type_of_transaction="Inward",
+		qty=qty,
 	)
 
 	stock_entry = frappe.get_doc(
@@ -304,21 +297,30 @@
 	return batch.name
 
 
-def make_batch_bundle(kwargs):
+def make_batch_bundle(
+	item_code: str,
+	warehouse: str,
+	batches: dict[str, float],
+	company: str,
+	type_of_transaction: str,
+	qty: float,
+):
+	from frappe.utils import nowtime, today
+
 	from erpnext.stock.serial_batch_bundle import SerialBatchCreation
 
 	return (
 		SerialBatchCreation(
 			{
-				"item_code": kwargs.item_code,
-				"warehouse": kwargs.warehouse,
+				"item_code": item_code,
+				"warehouse": warehouse,
 				"posting_date": today(),
 				"posting_time": nowtime(),
 				"voucher_type": "Stock Entry",
-				"qty": flt(kwargs.qty),
-				"type_of_transaction": kwargs.type_of_transaction,
-				"company": kwargs.company,
-				"batches": kwargs.batches,
+				"qty": qty,
+				"type_of_transaction": type_of_transaction,
+				"company": company,
+				"batches": batches,
 				"do_not_submit": True,
 			}
 		)
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 7d7b0cd..58990d4 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -796,36 +796,36 @@
 
 	updated_dn = []
 	for dnd in dn_details:
-		billed_amt_agianst_dn = 0
+		billed_amt_against_dn = 0
 
 		# If delivered against Sales Invoice
 		if dnd.si_detail:
-			billed_amt_agianst_dn = flt(dnd.amount)
-			billed_against_so -= billed_amt_agianst_dn
+			billed_amt_against_dn = flt(dnd.amount)
+			billed_against_so -= billed_amt_against_dn
 		else:
 			# Get billed amount directly against Delivery Note
-			billed_amt_agianst_dn = frappe.db.sql(
+			billed_amt_against_dn = frappe.db.sql(
 				"""select sum(amount) from `tabSales Invoice Item`
 				where dn_detail=%s and docstatus=1""",
 				dnd.name,
 			)
-			billed_amt_agianst_dn = billed_amt_agianst_dn and billed_amt_agianst_dn[0][0] or 0
+			billed_amt_against_dn = billed_amt_against_dn and billed_amt_against_dn[0][0] or 0
 
 		# Distribute billed amount directly against SO between DNs based on FIFO
-		if billed_against_so and billed_amt_agianst_dn < dnd.amount:
-			pending_to_bill = flt(dnd.amount) - billed_amt_agianst_dn
+		if billed_against_so and billed_amt_against_dn < dnd.amount:
+			pending_to_bill = flt(dnd.amount) - billed_amt_against_dn
 			if pending_to_bill <= billed_against_so:
-				billed_amt_agianst_dn += pending_to_bill
+				billed_amt_against_dn += pending_to_bill
 				billed_against_so -= pending_to_bill
 			else:
-				billed_amt_agianst_dn += billed_against_so
+				billed_amt_against_dn += billed_against_so
 				billed_against_so = 0
 
 		frappe.db.set_value(
 			"Delivery Note Item",
 			dnd.name,
 			"billed_amt",
-			billed_amt_agianst_dn,
+			billed_amt_against_dn,
 			update_modified=update_modified,
 		)
 
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note_dashboard.py b/erpnext/stock/doctype/delivery_note/delivery_note_dashboard.py
index d4a574d..2440701 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note_dashboard.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note_dashboard.py
@@ -8,6 +8,7 @@
 			"Stock Entry": "delivery_note_no",
 			"Quality Inspection": "reference_name",
 			"Auto Repeat": "reference_document",
+			"Purchase Receipt": "inter_company_reference",
 		},
 		"internal_links": {
 			"Sales Order": ["items", "against_sales_order"],
@@ -22,6 +23,9 @@
 			{"label": _("Reference"), "items": ["Sales Order", "Shipment", "Quality Inspection"]},
 			{"label": _("Returns"), "items": ["Stock Entry"]},
 			{"label": _("Subscription"), "items": ["Auto Repeat"]},
-			{"label": _("Internal Transfer"), "items": ["Material Request", "Purchase Order"]},
+			{
+				"label": _("Internal Transfer"),
+				"items": ["Material Request", "Purchase Order", "Purchase Receipt"],
+			},
 		],
 	}
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 3fdda2c..0f12f38 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -1597,8 +1597,8 @@
 		{
 			"item_code": args.item or args.item_code or "_Test Item",
 			"warehouse": args.warehouse or "_Test Warehouse - _TC",
-			"qty": args.qty if args.get("qty") is not None else 1,
-			"rate": args.rate if args.get("rate") is not None else 100,
+			"qty": args.get("qty", 1),
+			"rate": args.get("rate", 100),
 			"conversion_factor": 1.0,
 			"serial_and_batch_bundle": bundle_id,
 			"allow_zero_valuation_rate": args.allow_zero_valuation_rate or 1,
diff --git a/erpnext/stock/doctype/item_price/item_price.json b/erpnext/stock/doctype/item_price/item_price.json
index f4d9bb0..2390ee2 100644
--- a/erpnext/stock/doctype/item_price/item_price.json
+++ b/erpnext/stock/doctype/item_price/item_price.json
@@ -191,7 +191,7 @@
   {
    "fieldname": "valid_upto",
    "fieldtype": "Date",
-   "label": "Valid Upto"
+   "label": "Valid Up To"
   },
   {
    "fieldname": "section_break_24",
@@ -220,7 +220,7 @@
  "idx": 1,
  "index_web_pages_for_search": 1,
  "links": [],
- "modified": "2022-11-15 08:26:04.041861",
+ "modified": "2024-01-24 02:20:26.145996",
  "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 89a130a..de2add6 100644
--- a/erpnext/stock/doctype/item_price/item_price.py
+++ b/erpnext/stock/doctype/item_price/item_price.py
@@ -59,7 +59,7 @@
 	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 Upto Date."))
+				frappe.throw(_("Valid From Date must be lesser than Valid Up To Date."))
 
 	def update_price_list_details(self):
 		if self.price_list:
diff --git a/erpnext/stock/doctype/item_price/test_item_price.py b/erpnext/stock/doctype/item_price/test_item_price.py
index 8fd4938..63d717c 100644
--- a/erpnext/stock/doctype/item_price/test_item_price.py
+++ b/erpnext/stock/doctype/item_price/test_item_price.py
@@ -64,7 +64,7 @@
 		# Enter invalid dates valid_from  >= valid_upto
 		doc.valid_from = "2017-04-20"
 		doc.valid_upto = "2017-04-17"
-		# Valid Upto Date can not be less/equal than Valid From Date
+		# Valid Up To Date can not be less/equal than Valid From Date
 		self.assertRaises(frappe.ValidationError, doc.save)
 
 	def test_price_in_a_qty(self):
diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js
index d90b71a..e80218a 100644
--- a/erpnext/stock/doctype/material_request/material_request.js
+++ b/erpnext/stock/doctype/material_request/material_request.js
@@ -429,6 +429,9 @@
 
 	rate: function(frm, doctype, name) {
 		const item = locals[doctype][name];
+		item.amount = flt(item.qty) * flt(item.rate);
+		frappe.model.set_value(doctype, name, "amount", item.amount);
+		refresh_field("amount", item.name, item.parentfield);
 		frm.events.get_item_data(frm, item, false);
 	},
 
@@ -514,6 +517,13 @@
 	schedule_date() {
 		set_schedule_date(this.frm);
 	}
+
+	qty(doc, cdt, cdn) {
+		var row = frappe.get_doc(cdt, cdn);
+		row.amount = flt(row.qty) * flt(row.rate);
+		frappe.model.set_value(cdt, cdn, "amount", row.amount);
+		refresh_field("amount", row.name, row.parentfield);
+	}
 };
 
 // for backward compatibility: combine new and previous states
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index ad9b34c..e784b70 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -776,7 +776,7 @@
 			)
 		else:
 			msgprint(
-				_("The {0} {1} created sucessfully").format(frappe.bold(_("Work Order")), work_orders_list[0])
+				_("The {0} {1} created successfully").format(frappe.bold(_("Work Order")), work_orders_list[0])
 			)
 
 	if errors:
diff --git a/erpnext/stock/doctype/material_request/material_request_list.js b/erpnext/stock/doctype/material_request/material_request_list.js
index de7a3d0..c85bd71 100644
--- a/erpnext/stock/doctype/material_request/material_request_list.js
+++ b/erpnext/stock/doctype/material_request/material_request_list.js
@@ -24,7 +24,7 @@
 			} else if (doc.material_request_type == "Purchase") {
 				return [__("Ordered"), "green", "per_ordered,=,100"];
 			} else if (doc.material_request_type == "Material Transfer") {
-				return [__("Transfered"), "green", "per_ordered,=,100"];
+				return [__("Transferred"), "green", "per_ordered,=,100"];
 			} else if (doc.material_request_type == "Material Issue") {
 				return [__("Issued"), "green", "per_ordered,=,100"];
 			} else if (doc.material_request_type == "Customer Provided") {
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index 3e44049..48397a3 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -774,6 +774,62 @@
 		self.assertEqual(mr.per_ordered, 100)
 		self.assertEqual(existing_requested_qty, current_requested_qty)
 
+	def test_auto_email_users_with_company_user_permissions(self):
+		from erpnext.stock.reorder_item import get_email_list
+
+		comapnywise_users = {
+			"_Test Company": "test_auto_email_@example.com",
+			"_Test Company 1": "test_auto_email_1@example.com",
+		}
+
+		permissions = []
+
+		for company, user in comapnywise_users.items():
+			if not frappe.db.exists("User", user):
+				frappe.get_doc(
+					{
+						"doctype": "User",
+						"email": user,
+						"first_name": user,
+						"send_notifications": 0,
+						"enabled": 1,
+						"user_type": "System User",
+						"roles": [{"role": "Purchase Manager"}],
+					}
+				).insert(ignore_permissions=True)
+
+			if not frappe.db.exists(
+				"User Permission", {"user": user, "allow": "Company", "for_value": company}
+			):
+				perm_doc = frappe.get_doc(
+					{
+						"doctype": "User Permission",
+						"user": user,
+						"allow": "Company",
+						"for_value": company,
+						"apply_to_all_doctypes": 1,
+					}
+				).insert(ignore_permissions=True)
+
+				permissions.append(perm_doc)
+
+		comapnywise_mr_list = frappe._dict({})
+		mr1 = make_material_request()
+		comapnywise_mr_list.setdefault(mr1.company, []).append(mr1.name)
+
+		mr2 = make_material_request(
+			company="_Test Company 1", warehouse="Stores - _TC1", cost_center="Main - _TC1"
+		)
+		comapnywise_mr_list.setdefault(mr2.company, []).append(mr2.name)
+
+		for company, mr_list in comapnywise_mr_list.items():
+			emails = get_email_list(company)
+
+			self.assertTrue(comapnywise_users[company] in emails)
+
+		for perm in permissions:
+			perm.delete()
+
 
 def get_in_transit_warehouse(company):
 	if not frappe.db.exists("Warehouse Type", "Transit"):
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index fcb7a6d..bf6080b 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -951,32 +951,32 @@
 		billed_against_po = flt(po_billed_amt_details.get(pr_item.purchase_order_item))
 
 		# Get billed amount directly against Purchase Receipt
-		billed_amt_agianst_pr = flt(pr_items_billed_amount.get(pr_item.name, 0))
+		billed_amt_against_pr = flt(pr_items_billed_amount.get(pr_item.name, 0))
 
 		# Distribute billed amount directly against PO between PRs based on FIFO
-		if billed_against_po and billed_amt_agianst_pr < pr_item.amount:
-			pending_to_bill = flt(pr_item.amount) - billed_amt_agianst_pr
+		if billed_against_po and billed_amt_against_pr < pr_item.amount:
+			pending_to_bill = flt(pr_item.amount) - billed_amt_against_pr
 			if pending_to_bill <= billed_against_po:
-				billed_amt_agianst_pr += pending_to_bill
+				billed_amt_against_pr += pending_to_bill
 				billed_against_po -= pending_to_bill
 			else:
-				billed_amt_agianst_pr += billed_against_po
+				billed_amt_against_pr += billed_against_po
 				billed_against_po = 0
 
 		po_billed_amt_details[pr_item.purchase_order_item] = billed_against_po
 
-		if pr_item.billed_amt != billed_amt_agianst_pr:
+		if pr_item.billed_amt != billed_amt_against_pr:
 			# update existing doc if possible
 			if pr_doc and pr_item.parent == pr_doc.name:
 				pr_item = next((item for item in pr_doc.items if item.name == pr_item.name), None)
-				pr_item.db_set("billed_amt", billed_amt_agianst_pr, update_modified=update_modified)
+				pr_item.db_set("billed_amt", billed_amt_against_pr, update_modified=update_modified)
 
 			else:
 				frappe.db.set_value(
 					"Purchase Receipt Item",
 					pr_item.name,
 					"billed_amt",
-					billed_amt_agianst_pr,
+					billed_amt_against_pr,
 					update_modified=update_modified,
 				)
 
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
index 4029f0c..f19f1ff 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
@@ -8,8 +8,10 @@
 			return [__("Closed"), "green", "status,=,Closed"];
 		} else if (flt(doc.per_returned, 2) === 100) {
 			return [__("Return Issued"), "grey", "per_returned,=,100"];
-		} else if (flt(doc.grand_total) !== 0 && flt(doc.per_billed, 2) < 100) {
+		} else if (flt(doc.grand_total) !== 0 && flt(doc.per_billed, 2) == 0) {
 			return [__("To Bill"), "orange", "per_billed,<,100"];
+		} else if (flt(doc.per_billed, 2) > 0 && flt(doc.per_billed, 2) < 100) {
+			return [__("Partly Billed"), "yellow", "per_billed,<,100"];
 		} else if (flt(doc.grand_total) === 0 || flt(doc.per_billed, 2) === 100) {
 			return [__("Completed"), "green", "per_billed,=,100"];
 		}
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index 57ba5bb..65c08c1 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -21,9 +21,7 @@
 	get_serial_nos_from_bundle,
 	make_serial_batch_bundle,
 )
-from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
 from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
-from erpnext.stock.stock_ledger import SerialNoExistsInFutureTransaction
 
 
 class TestPurchaseReceipt(FrappeTestCase):
@@ -722,7 +720,7 @@
 		pr2.load_from_db()
 		self.assertEqual(pr2.get("items")[0].billed_amt, 2000)
 		self.assertEqual(pr2.per_billed, 80)
-		self.assertEqual(pr2.status, "To Bill")
+		self.assertEqual(pr2.status, "Partly Billed")
 
 		pr2.cancel()
 		pi2.reload()
@@ -735,7 +733,6 @@
 		po.cancel()
 
 	def test_serial_no_against_purchase_receipt(self):
-		from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
 
 		item_code = "Test Manual Created Serial No"
 		if not frappe.db.exists("Item", item_code):
@@ -1020,6 +1017,11 @@
 	def test_stock_transfer_from_purchase_receipt_with_valuation(self):
 		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
+		from erpnext.stock.doctype.stock_reconciliation.test_stock_reconciliation import (
+			create_stock_reconciliation,
+		)
+		from erpnext.stock.get_item_details import get_valuation_rate
+		from erpnext.stock.utils import get_stock_balance
 
 		prepare_data_for_internal_transfer()
 
@@ -1034,6 +1036,22 @@
 			company="_Test Company with perpetual inventory",
 		)
 
+		if (
+			get_valuation_rate(
+				pr1.items[0].item_code, "_Test Company with perpetual inventory", warehouse="Stores - TCP1"
+			)
+			!= 50
+		):
+			balance = get_stock_balance(item_code=pr1.items[0].item_code, warehouse="Stores - TCP1")
+			create_stock_reconciliation(
+				item_code=pr1.items[0].item_code,
+				company="_Test Company with perpetual inventory",
+				warehouse="Stores - TCP1",
+				qty=balance,
+				rate=50,
+				do_not_save=True,
+			)
+
 		customer = "_Test Internal Customer 2"
 		company = "_Test Company with perpetual inventory"
 
@@ -1071,7 +1089,8 @@
 		sl_entries = get_sl_entries("Purchase Receipt", pr.name)
 
 		expected_gle = [
-			["Stock In Hand - TCP1", 272.5, 0.0],
+			["Stock In Hand - TCP1", 250.0, 0.0],
+			["Cost of Goods Sold - TCP1", 22.5, 0.0],
 			["_Test Account Stock In Hand - TCP1", 0.0, 250.0],
 			["_Test Account Shipping Charges - TCP1", 0.0, 22.5],
 		]
@@ -1133,7 +1152,7 @@
 		pi.load_from_db()
 		pr.load_from_db()
 
-		self.assertEqual(pr.status, "To Bill")
+		self.assertEqual(pr.status, "Partly Billed")
 		self.assertAlmostEqual(pr.per_billed, 50.0, places=2)
 
 	def test_purchase_receipt_with_exchange_rate_difference(self):
@@ -1656,9 +1675,10 @@
 		make_stock_entry(
 			purpose="Material Receipt",
 			item_code=item.name,
-			qty=15,
+			qty=20,
 			company=company,
 			to_warehouse=from_warehouse,
+			posting_date=add_days(today(), -3),
 		)
 
 		# Step 3: Create Delivery Note with Internal Customer
@@ -1681,13 +1701,15 @@
 		from erpnext.stock.doctype.delivery_note.delivery_note import make_inter_company_purchase_receipt
 
 		pr = make_inter_company_purchase_receipt(dn.name)
+		pr.set_posting_time = 1
+		pr.posting_date = today()
 		pr.items[0].qty = 15
 		pr.items[0].from_warehouse = target_warehouse
 		pr.items[0].warehouse = to_warehouse
 		pr.items[0].rejected_warehouse = from_warehouse
 		pr.save()
 
-		self.assertRaises(OverAllowanceError, pr.submit)
+		self.assertRaises(frappe.ValidationError, pr.submit)
 
 		# Step 5: Test Over Receipt Allowance
 		frappe.db.set_single_value("Stock Settings", "over_delivery_receipt_allowance", 50)
@@ -1699,8 +1721,10 @@
 			company=company,
 			from_warehouse=from_warehouse,
 			to_warehouse=target_warehouse,
+			posting_date=add_days(pr.posting_date, -1),
 		)
 
+		pr.reload()
 		pr.submit()
 
 		frappe.db.set_single_value("Stock Settings", "over_delivery_receipt_allowance", 0)
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 63cc938..9cad8f6 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
@@ -250,6 +250,7 @@
 
 		for d in self.entries:
 			available_qty = 0
+
 			if self.has_serial_no:
 				d.incoming_rate = abs(sn_obj.serial_no_incoming_rate.get(d.serial_no, 0.0))
 			else:
@@ -892,6 +893,13 @@
 		elif batch_nos:
 			self.set("entries", batch_nos)
 
+	def delete_serial_batch_entries(self):
+		SBBE = frappe.qb.DocType("Serial and Batch Entry")
+
+		frappe.qb.from_(SBBE).delete().where(SBBE.parent == self.name).run()
+
+		self.set("entries", [])
+
 
 @frappe.whitelist()
 def download_blank_csv_template(content):
@@ -1374,10 +1382,12 @@
 	elif kwargs.based_on == "Expiry":
 		order_by = "amc_expiry_date asc"
 
-	filters = {"item_code": kwargs.item_code, "warehouse": ("is", "set")}
+	filters = {"item_code": kwargs.item_code}
 
-	if kwargs.warehouse:
-		filters["warehouse"] = kwargs.warehouse
+	if not kwargs.get("ignore_warehouse"):
+		filters["warehouse"] = ("is", "set")
+		if kwargs.warehouse:
+			filters["warehouse"] = kwargs.warehouse
 
 	# Since SLEs are not present against Reserved Stock [POS invoices, SRE], need to ignore reserved serial nos.
 	ignore_serial_nos = get_reserved_serial_nos(kwargs)
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 96c249f..faccfa3 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -228,7 +228,6 @@
 			self.fg_completed_qty = 0.0
 
 		self.validate_serialized_batch()
-		self.set_actual_qty()
 		self.calculate_rate_and_amount()
 		self.validate_putaway_capacity()
 
@@ -640,7 +639,7 @@
 				frappe.throw(_("Source and target warehouse cannot be same for row {0}").format(d.idx))
 
 			if not (d.s_warehouse or d.t_warehouse):
-				frappe.throw(_("Atleast one warehouse is mandatory"))
+				frappe.throw(_("At least one warehouse is mandatory"))
 
 	def validate_work_order(self):
 		if self.purpose in (
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 6819968..788ae0d 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -156,6 +156,7 @@
 							"warehouse": item.warehouse,
 							"posting_date": self.posting_date,
 							"posting_time": self.posting_time,
+							"ignore_warehouse": 1,
 						}
 					)
 				)
@@ -780,7 +781,20 @@
 
 			current_qty = 0.0
 			if row.current_serial_and_batch_bundle:
-				current_qty = self.get_qty_for_serial_and_batch_bundle(row)
+				current_qty = self.get_current_qty_for_serial_or_batch(row)
+			elif row.serial_no:
+				item_dict = get_stock_balance_for(
+					row.item_code,
+					row.warehouse,
+					self.posting_date,
+					self.posting_time,
+					voucher_no=self.name,
+				)
+
+				current_qty = item_dict.get("qty")
+				row.current_serial_no = item_dict.get("serial_nos")
+				row.current_valuation_rate = item_dict.get("rate")
+				val_rate = item_dict.get("rate")
 			elif row.batch_no:
 				current_qty = get_batch_qty_for_stock_reco(
 					row.item_code, row.warehouse, row.batch_no, self.posting_date, self.posting_time, self.name
@@ -788,15 +802,16 @@
 
 			precesion = row.precision("current_qty")
 			if flt(current_qty, precesion) != flt(row.current_qty, precesion):
-				val_rate = get_valuation_rate(
-					row.item_code,
-					row.warehouse,
-					self.doctype,
-					self.name,
-					company=self.company,
-					batch_no=row.batch_no,
-					serial_and_batch_bundle=row.current_serial_and_batch_bundle,
-				)
+				if not row.serial_no:
+					val_rate = get_valuation_rate(
+						row.item_code,
+						row.warehouse,
+						self.doctype,
+						self.name,
+						company=self.company,
+						batch_no=row.batch_no,
+						serial_and_batch_bundle=row.current_serial_and_batch_bundle,
+					)
 
 				row.current_valuation_rate = val_rate
 				row.current_qty = current_qty
@@ -842,11 +857,56 @@
 
 		return allow_negative_stock
 
-	def get_qty_for_serial_and_batch_bundle(self, row):
+	def get_current_qty_for_serial_or_batch(self, row):
 		doc = frappe.get_doc("Serial and Batch Bundle", row.current_serial_and_batch_bundle)
-		precision = doc.entries[0].precision("qty")
+		current_qty = 0.0
+		if doc.has_serial_no:
+			current_qty = self.get_current_qty_for_serial_nos(doc)
+		elif doc.has_batch_no:
+			current_qty = self.get_current_qty_for_batch_nos(doc)
 
-		current_qty = 0
+		return abs(current_qty)
+
+	def get_current_qty_for_serial_nos(self, doc):
+		serial_nos_details = get_available_serial_nos(
+			frappe._dict(
+				{
+					"item_code": doc.item_code,
+					"warehouse": doc.warehouse,
+					"posting_date": self.posting_date,
+					"posting_time": self.posting_time,
+					"voucher_no": self.name,
+					"ignore_warehouse": 1,
+				}
+			)
+		)
+
+		if not serial_nos_details:
+			return 0.0
+
+		doc.delete_serial_batch_entries()
+		current_qty = 0.0
+		for serial_no_row in serial_nos_details:
+			current_qty += 1
+			doc.append(
+				"entries",
+				{
+					"serial_no": serial_no_row.serial_no,
+					"qty": -1,
+					"warehouse": doc.warehouse,
+					"batch_no": serial_no_row.batch_no,
+				},
+			)
+
+		doc.set_incoming_rate(save=True)
+		doc.calculate_qty_and_amount(save=True)
+		doc.db_update_all()
+
+		return current_qty
+
+	def get_current_qty_for_batch_nos(self, doc):
+		current_qty = 0.0
+		precision = doc.entries[0].precision("qty")
 		for d in doc.entries:
 			qty = (
 				get_batch_qty(
@@ -864,7 +924,7 @@
 
 			current_qty += qty
 
-		return abs(current_qty)
+		return current_qty
 
 
 def get_batch_qty_for_stock_reco(
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index 70e9fb2..0bbfed4 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -925,6 +925,74 @@
 
 			self.assertEqual(len(serial_batch_bundle), 0)
 
+	def test_backdated_purchase_receipt_with_stock_reco(self):
+		item_code = self.make_item(
+			properties={
+				"is_stock_item": 1,
+				"has_serial_no": 1,
+				"serial_no_series": "TEST-SERIAL-.###",
+			}
+		).name
+
+		warehouse = "_Test Warehouse - _TC"
+
+		# Step - 1: Create a Backdated Purchase Receipt
+
+		pr1 = make_purchase_receipt(
+			item_code=item_code, warehouse=warehouse, qty=10, rate=100, posting_date=add_days(nowdate(), -3)
+		)
+		pr1.reload()
+
+		serial_nos = sorted(get_serial_nos_from_bundle(pr1.items[0].serial_and_batch_bundle))[:5]
+
+		# Step - 2: Create a Stock Reconciliation
+		sr1 = create_stock_reconciliation(
+			item_code=item_code,
+			warehouse=warehouse,
+			qty=5,
+			serial_no=serial_nos,
+		)
+
+		data = frappe.get_all(
+			"Stock Ledger Entry",
+			fields=["serial_no", "actual_qty", "stock_value_difference"],
+			filters={"voucher_no": sr1.name, "is_cancelled": 0},
+			order_by="creation",
+		)
+
+		for d in data:
+			if d.actual_qty < 0:
+				self.assertEqual(d.actual_qty, -10.0)
+				self.assertAlmostEqual(d.stock_value_difference, -1000.0)
+			else:
+				self.assertEqual(d.actual_qty, 5.0)
+				self.assertAlmostEqual(d.stock_value_difference, 500.0)
+
+		# Step - 3: Create a Purchase Receipt before the first Purchase Receipt
+		make_purchase_receipt(
+			item_code=item_code, warehouse=warehouse, qty=10, rate=200, posting_date=add_days(nowdate(), -5)
+		)
+
+		data = frappe.get_all(
+			"Stock Ledger Entry",
+			fields=["serial_no", "actual_qty", "stock_value_difference"],
+			filters={"voucher_no": sr1.name, "is_cancelled": 0},
+			order_by="creation",
+		)
+
+		for d in data:
+			if d.actual_qty < 0:
+				self.assertEqual(d.actual_qty, -20.0)
+				self.assertAlmostEqual(d.stock_value_difference, -3000.0)
+			else:
+				self.assertEqual(d.actual_qty, 5.0)
+				self.assertAlmostEqual(d.stock_value_difference, 500.0)
+
+		active_serial_no = frappe.get_all(
+			"Serial No", filters={"status": "Active", "item_code": item_code}
+		)
+		self.assertEqual(len(active_serial_no), 5)
+
 
 def create_batch_item_with_batch(item_name, batch_id):
 	batch_item_doc = create_item(item_name, is_stock_item=1)
diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.json b/erpnext/stock/doctype/stock_settings/stock_settings.json
index 1228290..f84456a 100644
--- a/erpnext/stock/doctype/stock_settings/stock_settings.json
+++ b/erpnext/stock/doctype/stock_settings/stock_settings.json
@@ -176,7 +176,7 @@
    "description": "No stock transactions can be created or modified before this date.",
    "fieldname": "stock_frozen_upto",
    "fieldtype": "Date",
-   "label": "Stock Frozen Upto"
+   "label": "Stock Frozen Up To"
   },
   {
    "description": "Stock transactions that are older than the mentioned days cannot be modified.",
@@ -427,7 +427,7 @@
  "index_web_pages_for_search": 1,
  "issingle": 1,
  "links": [],
- "modified": "2023-10-18 12:35:30.068799",
+ "modified": "2024-01-24 02:20:26.145996",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Stock Settings",
diff --git a/erpnext/stock/reorder_item.py b/erpnext/stock/reorder_item.py
index 4cd9cbb..276531a 100644
--- a/erpnext/stock/reorder_item.py
+++ b/erpnext/stock/reorder_item.py
@@ -145,6 +145,7 @@
 
 		mr.log_error("Unable to create material request")
 
+	company_wise_mr = frappe._dict({})
 	for request_type in material_requests:
 		for company in material_requests[request_type]:
 			try:
@@ -206,17 +207,19 @@
 				mr.submit()
 				mr_list.append(mr)
 
+				company_wise_mr.setdefault(company, []).append(mr)
+
 			except Exception:
 				_log_exception(mr)
 
-	if mr_list:
+	if company_wise_mr:
 		if getattr(frappe.local, "reorder_email_notify", None) is None:
 			frappe.local.reorder_email_notify = cint(
 				frappe.db.get_single_value("Stock Settings", "reorder_email_notify")
 			)
 
 		if frappe.local.reorder_email_notify:
-			send_email_notification(mr_list)
+			send_email_notification(company_wise_mr)
 
 	if exceptions_list:
 		notify_errors(exceptions_list)
@@ -224,20 +227,56 @@
 	return mr_list
 
 
-def send_email_notification(mr_list):
+def send_email_notification(company_wise_mr):
 	"""Notify user about auto creation of indent"""
 
-	email_list = frappe.db.sql_list(
-		"""select distinct r.parent
-		from `tabHas Role` r, tabUser p
-		where p.name = r.parent and p.enabled = 1 and p.docstatus < 2
-		and r.role in ('Purchase Manager','Stock Manager')
-		and p.name not in ('Administrator', 'All', 'Guest')"""
+	for company, mr_list in company_wise_mr.items():
+		email_list = get_email_list(company)
+
+		if not email_list:
+			continue
+
+		msg = frappe.render_template("templates/emails/reorder_item.html", {"mr_list": mr_list})
+
+		frappe.sendmail(
+			recipients=email_list, subject=_("Auto Material Requests Generated"), message=msg
+		)
+
+
+def get_email_list(company):
+	users = get_comapny_wise_users(company)
+	user_table = frappe.qb.DocType("User")
+	role_table = frappe.qb.DocType("Has Role")
+
+	query = (
+		frappe.qb.from_(user_table)
+		.inner_join(role_table)
+		.on(user_table.name == role_table.parent)
+		.select(user_table.email)
+		.where(
+			(role_table.role.isin(["Purchase Manager", "Stock Manager"]))
+			& (user_table.name.notin(["Administrator", "All", "Guest"]))
+			& (user_table.enabled == 1)
+			& (user_table.docstatus < 2)
+		)
 	)
 
-	msg = frappe.render_template("templates/emails/reorder_item.html", {"mr_list": mr_list})
+	if users:
+		query = query.where(user_table.name.isin(users))
 
-	frappe.sendmail(recipients=email_list, subject=_("Auto Material Requests Generated"), message=msg)
+	emails = query.run(as_dict=True)
+
+	return list(set([email.email for email in emails]))
+
+
+def get_comapny_wise_users(company):
+	users = frappe.get_all(
+		"User Permission",
+		filters={"allow": "Company", "for_value": company, "apply_to_all_doctypes": 1},
+		fields=["user"],
+	)
+
+	return [user.user for user in users]
 
 
 def notify_errors(exceptions_list):
@@ -246,7 +285,7 @@
 		_("Dear System Manager,")
 		+ "<br>"
 		+ _(
-			"An error occured for certain Items while creating Material Requests based on Re-order level. Please rectify these issues :"
+			"An error occurred for certain Items while creating Material Requests based on Re-order level. Please rectify these issues :"
 		)
 		+ "<br>"
 	)
diff --git a/erpnext/stock/report/stock_balance/stock_balance.js b/erpnext/stock/report/stock_balance/stock_balance.js
index 6de5f00..fe6e83e 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.js
+++ b/erpnext/stock/report/stock_balance/stock_balance.js
@@ -99,7 +99,7 @@
 			"fieldname": 'ignore_closing_balance',
 			"label": __('Ignore Closing Balance'),
 			"fieldtype": 'Check',
-			"default": 1
+			"default": 0
 		},
 	],
 
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 0370666..45764f3 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -9,9 +9,18 @@
 import frappe
 from frappe import _, scrub
 from frappe.model.meta import get_field_precision
-from frappe.query_builder import Case
 from frappe.query_builder.functions import CombineDatetime, Sum
-from frappe.utils import cint, flt, get_link_to_form, getdate, now, nowdate, nowtime, parse_json
+from frappe.utils import (
+	cint,
+	cstr,
+	flt,
+	get_link_to_form,
+	getdate,
+	now,
+	nowdate,
+	nowtime,
+	parse_json,
+)
 
 import erpnext
 from erpnext.stock.doctype.bin.bin import update_qty as update_bin_qty
@@ -712,11 +721,10 @@
 
 		if (
 			sle.voucher_type == "Stock Reconciliation"
-			and (
-				sle.batch_no or (sle.has_batch_no and sle.serial_and_batch_bundle and not sle.has_serial_no)
-			)
+			and (sle.batch_no or sle.serial_no or sle.serial_and_batch_bundle)
 			and sle.voucher_detail_no
 			and not self.args.get("sle_id")
+			and sle.is_cancelled == 0
 		):
 			self.reset_actual_qty_for_stock_reco(sle)
 
@@ -737,6 +745,23 @@
 
 		if sle.serial_and_batch_bundle:
 			self.calculate_valuation_for_serial_batch_bundle(sle)
+		elif sle.serial_no and not self.args.get("sle_id"):
+			# Only run in reposting
+			self.get_serialized_values(sle)
+			self.wh_data.qty_after_transaction += flt(sle.actual_qty)
+			if sle.voucher_type == "Stock Reconciliation" and not sle.batch_no:
+				self.wh_data.qty_after_transaction = sle.qty_after_transaction
+
+			self.wh_data.stock_value = flt(self.wh_data.qty_after_transaction) * flt(
+				self.wh_data.valuation_rate
+			)
+		elif (
+			sle.batch_no
+			and frappe.db.get_value("Batch", sle.batch_no, "use_batchwise_valuation", cache=True)
+			and not self.args.get("sle_id")
+		):
+			# Only run in reposting
+			self.update_batched_values(sle)
 		else:
 			if sle.voucher_type == "Stock Reconciliation" and not sle.batch_no and not has_dimensions:
 				# assert
@@ -782,6 +807,45 @@
 		):
 			self.update_outgoing_rate_on_transaction(sle)
 
+	def get_serialized_values(self, sle):
+		incoming_rate = flt(sle.incoming_rate)
+		actual_qty = flt(sle.actual_qty)
+		serial_nos = cstr(sle.serial_no).split("\n")
+
+		if incoming_rate < 0:
+			# wrong incoming rate
+			incoming_rate = self.wh_data.valuation_rate
+
+		stock_value_change = 0
+		if actual_qty > 0:
+			stock_value_change = actual_qty * incoming_rate
+		else:
+			# In case of delivery/stock issue, get average purchase rate
+			# of serial nos of current entry
+			if not sle.is_cancelled:
+				outgoing_value = self.get_incoming_value_for_serial_nos(sle, serial_nos)
+				stock_value_change = -1 * outgoing_value
+			else:
+				stock_value_change = actual_qty * sle.outgoing_rate
+
+		new_stock_qty = self.wh_data.qty_after_transaction + actual_qty
+
+		if new_stock_qty > 0:
+			new_stock_value = (
+				self.wh_data.qty_after_transaction * self.wh_data.valuation_rate
+			) + stock_value_change
+			if new_stock_value >= 0:
+				# calculate new valuation rate only if stock value is positive
+				# else it remains the same as that of previous entry
+				self.wh_data.valuation_rate = new_stock_value / new_stock_qty
+
+		if not self.wh_data.valuation_rate and sle.voucher_detail_no:
+			allow_zero_rate = self.check_if_allow_zero_valuation_rate(
+				sle.voucher_type, sle.voucher_detail_no
+			)
+			if not allow_zero_rate:
+				self.wh_data.valuation_rate = self.get_fallback_rate(sle)
+
 	def reset_actual_qty_for_stock_reco(self, sle):
 		doc = frappe.get_cached_doc("Stock Reconciliation", sle.voucher_no)
 		doc.recalculate_current_qty(sle.voucher_detail_no, sle.creation, sle.actual_qty > 0)
@@ -795,6 +859,36 @@
 			if abs(sle.actual_qty) == 0.0:
 				sle.is_cancelled = 1
 
+		if sle.serial_and_batch_bundle and frappe.get_cached_value(
+			"Item", sle.item_code, "has_serial_no"
+		):
+			self.update_serial_no_status(sle)
+
+	def update_serial_no_status(self, sle):
+		from erpnext.stock.serial_batch_bundle import get_serial_nos
+
+		serial_nos = get_serial_nos(sle.serial_and_batch_bundle)
+		if not serial_nos:
+			return
+
+		warehouse = None
+		status = "Inactive"
+
+		if sle.actual_qty > 0:
+			warehouse = sle.warehouse
+			status = "Active"
+
+		sn_table = frappe.qb.DocType("Serial No")
+
+		query = (
+			frappe.qb.update(sn_table)
+			.set(sn_table.warehouse, warehouse)
+			.set(sn_table.status, status)
+			.where(sn_table.name.isin(serial_nos))
+		)
+
+		query.run()
+
 	def calculate_valuation_for_serial_batch_bundle(self, sle):
 		doc = frappe.get_cached_doc("Serial and Batch Bundle", sle.serial_and_batch_bundle)
 
@@ -1171,11 +1265,12 @@
 			outgoing_rate = get_batch_incoming_rate(
 				item_code=sle.item_code,
 				warehouse=sle.warehouse,
-				serial_and_batch_bundle=sle.serial_and_batch_bundle,
+				batch_no=sle.batch_no,
 				posting_date=sle.posting_date,
 				posting_time=sle.posting_time,
 				creation=sle.creation,
 			)
+
 			if outgoing_rate is None:
 				# This can *only* happen if qty available for the batch is zero.
 				# in such case fall back various other rates.
@@ -1449,11 +1544,10 @@
 
 
 def get_batch_incoming_rate(
-	item_code, warehouse, serial_and_batch_bundle, posting_date, posting_time, creation=None
+	item_code, warehouse, batch_no, posting_date, posting_time, creation=None
 ):
 
 	sle = frappe.qb.DocType("Stock Ledger Entry")
-	batch_ledger = frappe.qb.DocType("Serial and Batch Entry")
 
 	timestamp_condition = CombineDatetime(sle.posting_date, sle.posting_time) < CombineDatetime(
 		posting_date, posting_time
@@ -1464,28 +1558,13 @@
 			== CombineDatetime(posting_date, posting_time)
 		) & (sle.creation < creation)
 
-	batches = frappe.get_all(
-		"Serial and Batch Entry", fields=["batch_no"], filters={"parent": serial_and_batch_bundle}
-	)
-
 	batch_details = (
 		frappe.qb.from_(sle)
-		.inner_join(batch_ledger)
-		.on(sle.serial_and_batch_bundle == batch_ledger.parent)
-		.select(
-			Sum(
-				Case()
-				.when(sle.actual_qty > 0, batch_ledger.qty * batch_ledger.incoming_rate)
-				.else_(batch_ledger.qty * batch_ledger.outgoing_rate * -1)
-			).as_("batch_value"),
-			Sum(Case().when(sle.actual_qty > 0, batch_ledger.qty).else_(batch_ledger.qty * -1)).as_(
-				"batch_qty"
-			),
-		)
+		.select(Sum(sle.stock_value_difference).as_("batch_value"), Sum(sle.actual_qty).as_("batch_qty"))
 		.where(
 			(sle.item_code == item_code)
 			& (sle.warehouse == warehouse)
-			& (batch_ledger.batch_no.isin([row.batch_no for row in batches]))
+			& (sle.batch_no == batch_no)
 			& (sle.is_cancelled == 0)
 		)
 		.where(timestamp_condition)
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index f29e7ea..76af5d7 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -289,6 +289,21 @@
 
 		in_rate = batch_obj.get_incoming_rate()
 
+	elif (args.get("serial_no") or "").strip() and not args.get("serial_and_batch_bundle"):
+		in_rate = get_avg_purchase_rate(args.get("serial_no"))
+	elif (
+		args.get("batch_no")
+		and frappe.db.get_value("Batch", args.get("batch_no"), "use_batchwise_valuation", cache=True)
+		and not args.get("serial_and_batch_bundle")
+	):
+		in_rate = get_batch_incoming_rate(
+			item_code=args.get("item_code"),
+			warehouse=args.get("warehouse"),
+			batch_no=args.get("batch_no"),
+			posting_date=args.get("posting_date"),
+			posting_time=args.get("posting_time"),
+		)
+
 	else:
 		valuation_method = get_valuation_method(args.get("item_code"))
 		previous_sle = get_previous_sle(args)
@@ -319,6 +334,38 @@
 	return flt(in_rate)
 
 
+def get_batch_incoming_rate(
+	item_code, warehouse, batch_no, posting_date, posting_time, creation=None
+):
+
+	sle = frappe.qb.DocType("Stock Ledger Entry")
+
+	timestamp_condition = CombineDatetime(sle.posting_date, sle.posting_time) < CombineDatetime(
+		posting_date, posting_time
+	)
+	if creation:
+		timestamp_condition |= (
+			CombineDatetime(sle.posting_date, sle.posting_time)
+			== CombineDatetime(posting_date, posting_time)
+		) & (sle.creation < creation)
+
+	batch_details = (
+		frappe.qb.from_(sle)
+		.select(Sum(sle.stock_value_difference).as_("batch_value"), Sum(sle.actual_qty).as_("batch_qty"))
+		.where(
+			(sle.item_code == item_code)
+			& (sle.warehouse == warehouse)
+			& (sle.batch_no == batch_no)
+			& (sle.serial_and_batch_bundle.isnull())
+			& (sle.is_cancelled == 0)
+		)
+		.where(timestamp_condition)
+	).run(as_dict=True)
+
+	if batch_details and batch_details[0].batch_qty:
+		return batch_details[0].batch_value / batch_details[0].batch_qty
+
+
 def get_avg_purchase_rate(serial_nos):
 	"""get average value of serial numbers"""
 
diff --git a/erpnext/utilities/activation.py b/erpnext/utilities/activation.py
index 4c8379e..581b53d 100644
--- a/erpnext/utilities/activation.py
+++ b/erpnext/utilities/activation.py
@@ -124,7 +124,7 @@
 			doctype="Timesheet",
 			title=_("Add Timesheets"),
 			description=_(
-				"Timesheets help keep track of time, cost and billing for activites done by your team"
+				"Timesheets help keep track of time, cost and billing for activities done by your team"
 			),
 			action=_("Create Timesheet"),
 			route="List/Timesheet",
diff --git a/erpnext/utilities/web_form/addresses/addresses.json b/erpnext/utilities/web_form/addresses/addresses.json
index 2f5e180..4e2d8e3 100644
--- a/erpnext/utilities/web_form/addresses/addresses.json
+++ b/erpnext/utilities/web_form/addresses/addresses.json
@@ -8,26 +8,29 @@
  "allow_print": 0,
  "amount": 0.0,
  "amount_based_on_field": 0,
+ "anonymous": 0,
+ "apply_document_permissions": 1,
+ "condition_json": "[]",
  "creation": "2016-06-24 15:50:33.196990",
  "doc_type": "Address",
  "docstatus": 0,
  "doctype": "Web Form",
  "idx": 0,
  "is_standard": 1,
+ "list_columns": [],
+ "list_title": "",
  "login_required": 1,
  "max_attachment_size": 0,
- "modified": "2019-10-15 06:55:30.405119",
- "modified_by": "Administrator",
+ "modified": "2024-01-24 10:28:35.026064",
+ "modified_by": "rohitw1991@gmail.com",
  "module": "Utilities",
  "name": "addresses",
  "owner": "Administrator",
  "published": 1,
  "route": "address",
- "route_to_success_link": 0,
  "show_attachments": 0,
- "show_in_grid": 0,
+ "show_list": 1,
  "show_sidebar": 0,
- "sidebar_items": [],
  "success_url": "/addresses",
  "title": "Address",
  "web_form_fields": [