diff --git a/.github/workflows/initiate_release.yml b/.github/workflows/initiate_release.yml
index ef38974..ee60bad 100644
--- a/.github/workflows/initiate_release.yml
+++ b/.github/workflows/initiate_release.yml
@@ -9,7 +9,7 @@
   workflow_dispatch:
 
 jobs:
-  release:
+  stable-release:
     name: Release
     runs-on: ubuntu-latest
     strategy:
@@ -30,3 +30,23 @@
           head: version-${{ matrix.version }}-hotfix
         env:
           GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
+
+  beta-release:
+    name: Release
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+
+    steps:
+      - uses: octokit/request-action@v2.x
+        with:
+          route: POST /repos/{owner}/{repo}/pulls
+          owner: frappe
+          repo: erpnext
+          title: |-
+            "chore: release v15 beta"
+          body: "Automated beta release."
+          base: version-15-beta
+          head: develop
+        env:
+          GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
diff --git a/erpnext/accounts/deferred_revenue.py b/erpnext/accounts/deferred_revenue.py
index 45e04ee..fb49ef3 100644
--- a/erpnext/accounts/deferred_revenue.py
+++ b/erpnext/accounts/deferred_revenue.py
@@ -136,7 +136,7 @@
 		send_mail(deferred_process)
 
 
-def get_booking_dates(doc, item, posting_date=None):
+def get_booking_dates(doc, item, posting_date=None, prev_posting_date=None):
 	if not posting_date:
 		posting_date = add_days(today(), -1)
 
@@ -146,39 +146,42 @@
 		"deferred_revenue_account" if doc.doctype == "Sales Invoice" else "deferred_expense_account"
 	)
 
-	prev_gl_entry = frappe.db.sql(
-		"""
-		select name, posting_date from `tabGL Entry` where company=%s and account=%s and
-		voucher_type=%s and voucher_no=%s and voucher_detail_no=%s
-		and is_cancelled = 0
-		order by posting_date desc limit 1
-	""",
-		(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
-		as_dict=True,
-	)
+	if not prev_posting_date:
+		prev_gl_entry = frappe.db.sql(
+			"""
+			select name, posting_date from `tabGL Entry` where company=%s and account=%s and
+			voucher_type=%s and voucher_no=%s and voucher_detail_no=%s
+			and is_cancelled = 0
+			order by posting_date desc limit 1
+		""",
+			(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
+			as_dict=True,
+		)
 
-	prev_gl_via_je = frappe.db.sql(
-		"""
-		SELECT p.name, p.posting_date FROM `tabJournal Entry` p, `tabJournal Entry Account` c
-		WHERE p.name = c.parent and p.company=%s and c.account=%s
-		and c.reference_type=%s and c.reference_name=%s
-		and c.reference_detail_no=%s and c.docstatus < 2 order by posting_date desc limit 1
-	""",
-		(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
-		as_dict=True,
-	)
+		prev_gl_via_je = frappe.db.sql(
+			"""
+			SELECT p.name, p.posting_date FROM `tabJournal Entry` p, `tabJournal Entry Account` c
+			WHERE p.name = c.parent and p.company=%s and c.account=%s
+			and c.reference_type=%s and c.reference_name=%s
+			and c.reference_detail_no=%s and c.docstatus < 2 order by posting_date desc limit 1
+		""",
+			(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
+			as_dict=True,
+		)
 
-	if prev_gl_via_je:
-		if (not prev_gl_entry) or (
-			prev_gl_entry and prev_gl_entry[0].posting_date < prev_gl_via_je[0].posting_date
-		):
-			prev_gl_entry = prev_gl_via_je
+		if prev_gl_via_je:
+			if (not prev_gl_entry) or (
+				prev_gl_entry and prev_gl_entry[0].posting_date < prev_gl_via_je[0].posting_date
+			):
+				prev_gl_entry = prev_gl_via_je
 
-	if prev_gl_entry:
-		start_date = getdate(add_days(prev_gl_entry[0].posting_date, 1))
+		if prev_gl_entry:
+			start_date = getdate(add_days(prev_gl_entry[0].posting_date, 1))
+		else:
+			start_date = item.service_start_date
+
 	else:
-		start_date = item.service_start_date
-
+		start_date = getdate(add_days(prev_posting_date, 1))
 	end_date = get_last_day(start_date)
 	if end_date >= item.service_end_date:
 		end_date = item.service_end_date
@@ -341,9 +344,15 @@
 	accounts_frozen_upto = frappe.get_cached_value("Accounts Settings", "None", "acc_frozen_upto")
 
 	def _book_deferred_revenue_or_expense(
-		item, via_journal_entry, submit_journal_entry, book_deferred_entries_based_on
+		item,
+		via_journal_entry,
+		submit_journal_entry,
+		book_deferred_entries_based_on,
+		prev_posting_date=None,
 	):
-		start_date, end_date, last_gl_entry = get_booking_dates(doc, item, posting_date=posting_date)
+		start_date, end_date, last_gl_entry = get_booking_dates(
+			doc, item, posting_date=posting_date, prev_posting_date=prev_posting_date
+		)
 		if not (start_date and end_date):
 			return
 
@@ -377,9 +386,12 @@
 		if not amount:
 			return
 
+		gl_posting_date = end_date
+		prev_posting_date = None
 		# check if books nor frozen till endate:
 		if accounts_frozen_upto and getdate(end_date) <= getdate(accounts_frozen_upto):
-			end_date = get_last_day(add_days(accounts_frozen_upto, 1))
+			gl_posting_date = get_last_day(add_days(accounts_frozen_upto, 1))
+			prev_posting_date = end_date
 
 		if via_journal_entry:
 			book_revenue_via_journal_entry(
@@ -388,7 +400,7 @@
 				debit_account,
 				amount,
 				base_amount,
-				end_date,
+				gl_posting_date,
 				project,
 				account_currency,
 				item.cost_center,
@@ -404,7 +416,7 @@
 				against,
 				amount,
 				base_amount,
-				end_date,
+				gl_posting_date,
 				project,
 				account_currency,
 				item.cost_center,
@@ -418,7 +430,11 @@
 
 		if getdate(end_date) < getdate(posting_date) and not last_gl_entry:
 			_book_deferred_revenue_or_expense(
-				item, via_journal_entry, submit_journal_entry, book_deferred_entries_based_on
+				item,
+				via_journal_entry,
+				submit_journal_entry,
+				book_deferred_entries_based_on,
+				prev_posting_date,
 			)
 
 	via_journal_entry = cint(
diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js
index 0647a5c..d961ead 100644
--- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js
+++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js
@@ -19,7 +19,7 @@
 
 	onload: function (frm) {
 		// Set default filter dates
-		today = frappe.datetime.get_today()
+		let today = frappe.datetime.get_today()
 		frm.doc.bank_statement_from_date = frappe.datetime.add_months(today, -1);
 		frm.doc.bank_statement_to_date = today;
 		frm.trigger('bank_account');
diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
index 598db64..c52ea24 100644
--- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
+++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
@@ -93,6 +93,12 @@
 
 		return True
 
+	def fetch_and_calculate_accounts_data(self):
+		accounts = self.get_accounts_data()
+		if accounts:
+			for acc in accounts:
+				self.append("accounts", acc)
+
 	@frappe.whitelist()
 	def get_accounts_data(self):
 		self.validate_mandatory()
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index c0fd63e..65ed466 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -8,6 +8,7 @@
 import frappe
 from frappe import ValidationError, _, qb, scrub, throw
 from frappe.utils import cint, comma_or, flt, getdate, nowdate
+from frappe.utils.data import comma_and, fmt_money
 
 import erpnext
 from erpnext.accounts.doctype.bank_account.bank_account import (
@@ -124,13 +125,16 @@
 
 		self.set(self.party_account_field, liability_account)
 
-		msg = "Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}.".format(
-			frappe.bold(self.party_account),
-			frappe.bold(liability_account),
+		frappe.msgprint(
+			_(
+				"Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}."
+			).format(
+				frappe.bold(self.party_account),
+				frappe.bold(liability_account),
+			),
+			alert=True,
 		)
 
-		frappe.msgprint(_(msg), alert=True)
-
 	def on_cancel(self):
 		self.ignore_linked_doctypes = (
 			"GL Entry",
@@ -230,17 +234,17 @@
 			# The reference has already been fully paid
 			if not latest:
 				frappe.throw(
-					_("{0} {1} has already been fully paid.").format(d.reference_doctype, d.reference_name)
+					_("{0} {1} has already been fully paid.").format(_(d.reference_doctype), d.reference_name)
 				)
 			# The reference has already been partly paid
 			elif (
 				latest.outstanding_amount < latest.invoice_amount
-				and d.outstanding_amount != latest.outstanding_amount
+				and flt(d.outstanding_amount, d.precision("outstanding_amount")) != latest.outstanding_amount
 			):
 				frappe.throw(
 					_(
 						"{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."
-					).format(d.reference_doctype, d.reference_name)
+					).format(_(d.reference_doctype), d.reference_name)
 				)
 
 			fail_message = _("Row #{0}: Allocated Amount cannot be greater than outstanding amount.")
@@ -342,7 +346,7 @@
 	def validate_party_details(self):
 		if self.party:
 			if not frappe.db.exists(self.party_type, self.party):
-				frappe.throw(_("Invalid {0}: {1}").format(self.party_type, self.party))
+				frappe.throw(_("{0} {1} does not exist").format(_(self.party_type), self.party))
 
 	def set_exchange_rate(self, ref_doc=None):
 		self.set_source_exchange_rate(ref_doc)
@@ -391,7 +395,9 @@
 				continue
 			if d.reference_doctype not in valid_reference_doctypes:
 				frappe.throw(
-					_("Reference Doctype must be one of {0}").format(comma_or(valid_reference_doctypes))
+					_("Reference Doctype must be one of {0}").format(
+						comma_or((_(d) for d in valid_reference_doctypes))
+					)
 				)
 
 			elif d.reference_name:
@@ -404,7 +410,7 @@
 						if self.party != ref_doc.get(scrub(self.party_type)):
 							frappe.throw(
 								_("{0} {1} is not associated with {2} {3}").format(
-									d.reference_doctype, d.reference_name, self.party_type, self.party
+									_(d.reference_doctype), d.reference_name, _(self.party_type), self.party
 								)
 							)
 					else:
@@ -426,18 +432,18 @@
 						):
 							frappe.throw(
 								_("{0} {1} is associated with {2}, but Party Account is {3}").format(
-									d.reference_doctype, d.reference_name, ref_party_account, self.party_account
+									_(d.reference_doctype), d.reference_name, ref_party_account, self.party_account
 								)
 							)
 
 						if ref_doc.doctype == "Purchase Invoice" and ref_doc.get("on_hold"):
 							frappe.throw(
-								_("{0} {1} is on hold").format(d.reference_doctype, d.reference_name),
-								title=_("Invalid Invoice"),
+								_("{0} {1} is on hold").format(_(d.reference_doctype), d.reference_name),
+								title=_("Invalid Purchase Invoice"),
 							)
 
 					if ref_doc.docstatus != 1:
-						frappe.throw(_("{0} {1} must be submitted").format(d.reference_doctype, d.reference_name))
+						frappe.throw(_("{0} {1} must be submitted").format(_(d.reference_doctype), d.reference_name))
 
 	def get_valid_reference_doctypes(self):
 		if self.party_type == "Customer":
@@ -463,14 +469,13 @@
 				if outstanding_amount <= 0 and not is_return:
 					no_oustanding_refs.setdefault(d.reference_doctype, []).append(d)
 
-		for k, v in no_oustanding_refs.items():
+		for reference_doctype, references in no_oustanding_refs.items():
 			frappe.msgprint(
 				_(
-					"{} - {} now has {} as it had no outstanding amount left before submitting the Payment Entry."
+					"References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount."
 				).format(
-					_(k),
-					frappe.bold(", ".join(d.reference_name for d in v)),
-					frappe.bold(_("negative outstanding amount")),
+					frappe.bold(comma_and((d.reference_name for d in references))),
+					_(reference_doctype),
 				)
 				+ "<br><br>"
 				+ _("If this is undesirable please cancel the corresponding Payment Entry."),
@@ -505,7 +510,7 @@
 					if not valid:
 						frappe.throw(
 							_("Against Journal Entry {0} does not have any unmatched {1} entry").format(
-								d.reference_name, dr_or_cr
+								d.reference_name, _(dr_or_cr)
 							)
 						)
 
@@ -572,7 +577,7 @@
 				if allocated_amount > outstanding:
 					frappe.throw(
 						_("Row #{0}: Cannot allocate more than {1} against payment term {2}").format(
-							idx, outstanding, key[0]
+							idx, fmt_money(outstanding), key[0]
 						)
 					)
 
@@ -876,7 +881,7 @@
 		elif paid_amount - additional_charges > total_negative_outstanding:
 			frappe.throw(
 				_("Paid Amount cannot be greater than total negative outstanding amount {0}").format(
-					total_negative_outstanding
+					fmt_money(total_negative_outstanding)
 				),
 				InvalidPaymentEntry,
 			)
@@ -1546,7 +1551,7 @@
 				_(
 					"No outstanding {0} found for the {1} {2} which qualify the filters you have specified."
 				).format(
-					ref_document_type, _(args.get("party_type")).lower(), frappe.bold(args.get("party"))
+					_(ref_document_type), _(args.get("party_type")).lower(), frappe.bold(args.get("party"))
 				)
 			)
 
@@ -1758,7 +1763,7 @@
 def get_party_details(company, party_type, party, date, cost_center=None):
 	bank_account = ""
 	if not frappe.db.exists(party_type, party):
-		frappe.throw(_("Invalid {0}: {1}").format(party_type, party))
+		frappe.throw(_("{0} {1} does not exist").format(_(party_type), party))
 
 	party_account = get_party_account(party_type, party, company)
 	account_currency = get_account_currency(party_account)
@@ -1912,7 +1917,7 @@
 	if dt in ("Sales Order", "Purchase Order") and flt(doc.per_billed, 2) >= (
 		100.0 + over_billing_allowance
 	):
-		frappe.throw(_("Can only make payment against unbilled {0}").format(dt))
+		frappe.throw(_("Can only make payment against unbilled {0}").format(_(dt)))
 
 	if not party_type:
 		party_type = set_party_type(dt)
diff --git a/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py b/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py
index 83646c9..263621d 100644
--- a/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py
+++ b/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py
@@ -16,8 +16,10 @@
 class TestProcessDeferredAccounting(unittest.TestCase):
 	def test_creation_of_ledger_entry_on_submit(self):
 		"""test creation of gl entries on submission of document"""
+		change_acc_settings(acc_frozen_upto="2023-05-31", book_deferred_entries_based_on="Months")
+
 		deferred_account = create_account(
-			account_name="Deferred Revenue",
+			account_name="Deferred Revenue for Accounts Frozen",
 			parent_account="Current Liabilities - _TC",
 			company="_Test Company",
 		)
@@ -29,21 +31,21 @@
 		item.save()
 
 		si = create_sales_invoice(
-			item=item.name, update_stock=0, posting_date="2019-01-10", do_not_submit=True
+			item=item.name, rate=3000, update_stock=0, posting_date="2023-07-01", do_not_submit=True
 		)
 		si.items[0].enable_deferred_revenue = 1
-		si.items[0].service_start_date = "2019-01-10"
-		si.items[0].service_end_date = "2019-03-15"
+		si.items[0].service_start_date = "2023-05-01"
+		si.items[0].service_end_date = "2023-07-31"
 		si.items[0].deferred_revenue_account = deferred_account
 		si.save()
 		si.submit()
 
-		process_deferred_accounting = frappe.get_doc(
+		process_deferred_accounting = doc = frappe.get_doc(
 			dict(
 				doctype="Process Deferred Accounting",
-				posting_date="2019-01-01",
-				start_date="2019-01-01",
-				end_date="2019-01-31",
+				posting_date="2023-07-01",
+				start_date="2023-05-01",
+				end_date="2023-06-30",
 				type="Income",
 			)
 		)
@@ -52,11 +54,16 @@
 		process_deferred_accounting.submit()
 
 		expected_gle = [
-			[deferred_account, 33.85, 0.0, "2019-01-31"],
-			["Sales - _TC", 0.0, 33.85, "2019-01-31"],
+			["Debtors - _TC", 3000, 0.0, "2023-07-01"],
+			[deferred_account, 0.0, 3000, "2023-07-01"],
+			["Sales - _TC", 0.0, 1000, "2023-06-30"],
+			[deferred_account, 1000, 0.0, "2023-06-30"],
+			["Sales - _TC", 0.0, 1000, "2023-06-30"],
+			[deferred_account, 1000, 0.0, "2023-06-30"],
 		]
 
-		check_gl_entries(self, si.name, expected_gle, "2019-01-31")
+		check_gl_entries(self, si.name, expected_gle, "2023-07-01")
+		change_acc_settings()
 
 	def test_pda_submission_and_cancellation(self):
 		pda = frappe.get_doc(
@@ -70,3 +77,10 @@
 		)
 		pda.submit()
 		pda.cancel()
+
+
+def change_acc_settings(acc_frozen_upto="", book_deferred_entries_based_on="Days"):
+	acc_settings = frappe.get_doc("Accounts Settings", "Accounts Settings")
+	acc_settings.acc_frozen_upto = acc_frozen_upto
+	acc_settings.book_deferred_entries_based_on = book_deferred_entries_based_on
+	acc_settings.save()
diff --git a/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py b/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
index e3127b3..7e0bdea 100644
--- a/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
+++ b/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
@@ -73,7 +73,7 @@
 
 	return sorted(
 		entries,
-		key=lambda k: k[2] or getdate(nowdate()),
+		key=lambda k: k[2].strftime("%H%M%S") or getdate(nowdate()),
 	)
 
 
diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
index a644754..6e39ee9 100644
--- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
+++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
@@ -650,7 +650,7 @@
 		if filters and filters.get("presentation_currency") != d.default_currency:
 			currency_info["company"] = d.name
 			currency_info["company_currency"] = d.default_currency
-			convert_to_presentation_currency(gl_entries, currency_info, filters.get("company"))
+			convert_to_presentation_currency(gl_entries, currency_info)
 
 		for entry in gl_entries:
 			if entry.account_number:
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index 8a47e1c..f3a892b 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -462,7 +462,7 @@
 		)
 
 		if filters and filters.get("presentation_currency"):
-			convert_to_presentation_currency(gl_entries, get_currency(filters), filters.get("company"))
+			convert_to_presentation_currency(gl_entries, get_currency(filters))
 
 		for entry in gl_entries:
 			gl_entries_by_account.setdefault(entry.account, []).append(entry)
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index d47e3da..d7af167 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -204,7 +204,7 @@
 	)
 
 	if filters.get("presentation_currency"):
-		return convert_to_presentation_currency(gl_entries, currency_map, filters.get("company"))
+		return convert_to_presentation_currency(gl_entries, currency_map)
 	else:
 		return gl_entries
 
diff --git a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
index 6fdb2f3..050e6bc 100644
--- a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
+++ b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
@@ -15,20 +15,21 @@
 	get_group_by_conditions,
 	get_tax_accounts,
 )
+from erpnext.accounts.report.utils import get_query_columns, get_values_for_columns
 
 
 def execute(filters=None):
 	return _execute(filters)
 
 
-def _execute(filters=None, additional_table_columns=None, additional_query_columns=None):
+def _execute(filters=None, additional_table_columns=None):
 	if not filters:
 		filters = {}
 	columns = get_columns(additional_table_columns, filters)
 
 	company_currency = erpnext.get_company_currency(filters.company)
 
-	item_list = get_items(filters, additional_query_columns)
+	item_list = get_items(filters, get_query_columns(additional_table_columns))
 	aii_account_map = get_aii_accounts()
 	if item_list:
 		itemised_tax, tax_columns = get_tax_accounts(
@@ -79,28 +80,20 @@
 			"posting_date": d.posting_date,
 			"supplier": d.supplier,
 			"supplier_name": d.supplier_name,
+			**get_values_for_columns(additional_table_columns, d),
+			"credit_to": d.credit_to,
+			"mode_of_payment": d.mode_of_payment,
+			"project": d.project,
+			"company": d.company,
+			"purchase_order": d.purchase_order,
+			"purchase_receipt": purchase_receipt,
+			"expense_account": expense_account,
+			"stock_qty": d.stock_qty,
+			"stock_uom": d.stock_uom,
+			"rate": d.base_net_amount / d.stock_qty if d.stock_qty else d.base_net_amount,
+			"amount": d.base_net_amount,
 		}
 
-		if additional_query_columns:
-			for col in additional_query_columns:
-				row.update({col: d.get(col)})
-
-		row.update(
-			{
-				"credit_to": d.credit_to,
-				"mode_of_payment": d.mode_of_payment,
-				"project": d.project,
-				"company": d.company,
-				"purchase_order": d.purchase_order,
-				"purchase_receipt": purchase_receipt,
-				"expense_account": expense_account,
-				"stock_qty": d.stock_qty,
-				"stock_uom": d.stock_uom,
-				"rate": d.base_net_amount / d.stock_qty if d.stock_qty else d.base_net_amount,
-				"amount": d.base_net_amount,
-			}
-		)
-
 		total_tax = 0
 		for tax in tax_columns:
 			item_tax = itemised_tax.get(d.name, {}).get(tax, {})
@@ -317,11 +310,6 @@
 def get_items(filters, additional_query_columns):
 	conditions = get_conditions(filters)
 
-	if additional_query_columns:
-		additional_query_columns = ", " + ", ".join(additional_query_columns)
-	else:
-		additional_query_columns = ""
-
 	return frappe.db.sql(
 		"""
 		select
@@ -340,11 +328,10 @@
 		from `tabPurchase Invoice`, `tabPurchase Invoice Item`, `tabItem`
 		where `tabPurchase Invoice`.name = `tabPurchase Invoice Item`.`parent` and
 			`tabItem`.name = `tabPurchase Invoice Item`.`item_code` and
-			`tabPurchase Invoice`.docstatus = 1 %s
+			`tabPurchase Invoice`.docstatus = 1 {1}
 	""".format(
-			additional_query_columns
-		)
-		% (conditions),
+			additional_query_columns, conditions
+		),
 		filters,
 		as_dict=1,
 	)
diff --git a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
index bd7d02e..4d24dd9 100644
--- a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
+++ b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
@@ -9,6 +9,7 @@
 from frappe.utils.xlsxutils import handle_html
 
 from erpnext.accounts.report.sales_register.sales_register import get_mode_of_payments
+from erpnext.accounts.report.utils import get_query_columns, get_values_for_columns
 from erpnext.selling.report.item_wise_sales_history.item_wise_sales_history import (
 	get_customer_details,
 )
@@ -18,19 +19,14 @@
 	return _execute(filters)
 
 
-def _execute(
-	filters=None,
-	additional_table_columns=None,
-	additional_query_columns=None,
-	additional_conditions=None,
-):
+def _execute(filters=None, additional_table_columns=None, additional_conditions=None):
 	if not filters:
 		filters = {}
 	columns = get_columns(additional_table_columns, filters)
 
 	company_currency = frappe.get_cached_value("Company", filters.get("company"), "default_currency")
 
-	item_list = get_items(filters, additional_query_columns, additional_conditions)
+	item_list = get_items(filters, get_query_columns(additional_table_columns), additional_conditions)
 	if item_list:
 		itemised_tax, tax_columns = get_tax_accounts(item_list, columns, company_currency)
 
@@ -79,30 +75,22 @@
 			"customer": d.customer,
 			"customer_name": customer_record.customer_name,
 			"customer_group": customer_record.customer_group,
+			**get_values_for_columns(additional_table_columns, d),
+			"debit_to": d.debit_to,
+			"mode_of_payment": ", ".join(mode_of_payments.get(d.parent, [])),
+			"territory": d.territory,
+			"project": d.project,
+			"company": d.company,
+			"sales_order": d.sales_order,
+			"delivery_note": d.delivery_note,
+			"income_account": d.unrealized_profit_loss_account
+			if d.is_internal_customer == 1
+			else d.income_account,
+			"cost_center": d.cost_center,
+			"stock_qty": d.stock_qty,
+			"stock_uom": d.stock_uom,
 		}
 
-		if additional_query_columns:
-			for col in additional_query_columns:
-				row.update({col: d.get(col)})
-
-		row.update(
-			{
-				"debit_to": d.debit_to,
-				"mode_of_payment": ", ".join(mode_of_payments.get(d.parent, [])),
-				"territory": d.territory,
-				"project": d.project,
-				"company": d.company,
-				"sales_order": d.sales_order,
-				"delivery_note": d.delivery_note,
-				"income_account": d.unrealized_profit_loss_account
-				if d.is_internal_customer == 1
-				else d.income_account,
-				"cost_center": d.cost_center,
-				"stock_qty": d.stock_qty,
-				"stock_uom": d.stock_uom,
-			}
-		)
-
 		if d.stock_uom != d.uom and d.stock_qty:
 			row.update({"rate": (d.base_net_rate * d.qty) / d.stock_qty, "amount": d.base_net_amount})
 		else:
@@ -394,11 +382,6 @@
 def get_items(filters, additional_query_columns, additional_conditions=None):
 	conditions = get_conditions(filters, additional_conditions)
 
-	if additional_query_columns:
-		additional_query_columns = ", " + ", ".join(additional_query_columns)
-	else:
-		additional_query_columns = ""
-
 	return frappe.db.sql(
 		"""
 		select
@@ -424,7 +407,7 @@
 			`tabItem`.name = `tabSales Invoice Item`.`item_code` and
 			`tabSales Invoice`.docstatus = 1 {1}
 		""".format(
-			additional_query_columns or "", conditions
+			additional_query_columns, conditions
 		),
 		filters,
 		as_dict=1,
diff --git a/erpnext/accounts/report/purchase_register/purchase_register.py b/erpnext/accounts/report/purchase_register/purchase_register.py
index a05d581..69827ac 100644
--- a/erpnext/accounts/report/purchase_register/purchase_register.py
+++ b/erpnext/accounts/report/purchase_register/purchase_register.py
@@ -10,17 +10,18 @@
 	get_accounting_dimensions,
 	get_dimension_with_children,
 )
+from erpnext.accounts.report.utils import get_query_columns, get_values_for_columns
 
 
 def execute(filters=None):
 	return _execute(filters)
 
 
-def _execute(filters=None, additional_table_columns=None, additional_query_columns=None):
+def _execute(filters=None, additional_table_columns=None):
 	if not filters:
 		filters = {}
 
-	invoice_list = get_invoices(filters, additional_query_columns)
+	invoice_list = get_invoices(filters, get_query_columns(additional_table_columns))
 	columns, expense_accounts, tax_accounts, unrealized_profit_loss_accounts = get_columns(
 		invoice_list, additional_table_columns
 	)
@@ -47,13 +48,12 @@
 		purchase_receipt = list(set(invoice_po_pr_map.get(inv.name, {}).get("purchase_receipt", [])))
 		project = list(set(invoice_po_pr_map.get(inv.name, {}).get("project", [])))
 
-		row = [inv.name, inv.posting_date, inv.supplier, inv.supplier_name]
-
-		if additional_query_columns:
-			for col in additional_query_columns:
-				row.append(inv.get(col))
-
-		row += [
+		row = [
+			inv.name,
+			inv.posting_date,
+			inv.supplier,
+			inv.supplier_name,
+			*get_values_for_columns(additional_table_columns, inv).values(),
 			supplier_details.get(inv.supplier),  # supplier_group
 			inv.tax_id,
 			inv.credit_to,
@@ -244,9 +244,6 @@
 
 
 def get_invoices(filters, additional_query_columns):
-	if additional_query_columns:
-		additional_query_columns = ", " + ", ".join(additional_query_columns)
-
 	conditions = get_conditions(filters)
 	return frappe.db.sql(
 		"""
@@ -255,11 +252,10 @@
 			remarks, base_net_total, base_grand_total, outstanding_amount,
 			mode_of_payment {0}
 		from `tabPurchase Invoice`
-		where docstatus = 1 %s
+		where docstatus = 1 {1}
 		order by posting_date desc, name desc""".format(
-			additional_query_columns or ""
-		)
-		% conditions,
+			additional_query_columns, conditions
+		),
 		filters,
 		as_dict=1,
 	)
diff --git a/erpnext/accounts/report/sales_register/sales_register.py b/erpnext/accounts/report/sales_register/sales_register.py
index b333901..291c7d9 100644
--- a/erpnext/accounts/report/sales_register/sales_register.py
+++ b/erpnext/accounts/report/sales_register/sales_register.py
@@ -11,17 +11,18 @@
 	get_accounting_dimensions,
 	get_dimension_with_children,
 )
+from erpnext.accounts.report.utils import get_query_columns, get_values_for_columns
 
 
 def execute(filters=None):
 	return _execute(filters)
 
 
-def _execute(filters, additional_table_columns=None, additional_query_columns=None):
+def _execute(filters, additional_table_columns=None):
 	if not filters:
 		filters = frappe._dict({})
 
-	invoice_list = get_invoices(filters, additional_query_columns)
+	invoice_list = get_invoices(filters, get_query_columns(additional_table_columns))
 	columns, income_accounts, tax_accounts, unrealized_profit_loss_accounts = get_columns(
 		invoice_list, additional_table_columns
 	)
@@ -54,30 +55,22 @@
 			"posting_date": inv.posting_date,
 			"customer": inv.customer,
 			"customer_name": inv.customer_name,
+			**get_values_for_columns(additional_table_columns, inv),
+			"customer_group": inv.get("customer_group"),
+			"territory": inv.get("territory"),
+			"tax_id": inv.get("tax_id"),
+			"receivable_account": inv.debit_to,
+			"mode_of_payment": ", ".join(mode_of_payments.get(inv.name, [])),
+			"project": inv.project,
+			"owner": inv.owner,
+			"remarks": inv.remarks,
+			"sales_order": ", ".join(sales_order),
+			"delivery_note": ", ".join(delivery_note),
+			"cost_center": ", ".join(cost_center),
+			"warehouse": ", ".join(warehouse),
+			"currency": company_currency,
 		}
 
-		if additional_query_columns:
-			for col in additional_query_columns:
-				row.update({col: inv.get(col)})
-
-		row.update(
-			{
-				"customer_group": inv.get("customer_group"),
-				"territory": inv.get("territory"),
-				"tax_id": inv.get("tax_id"),
-				"receivable_account": inv.debit_to,
-				"mode_of_payment": ", ".join(mode_of_payments.get(inv.name, [])),
-				"project": inv.project,
-				"owner": inv.owner,
-				"remarks": inv.remarks,
-				"sales_order": ", ".join(sales_order),
-				"delivery_note": ", ".join(delivery_note),
-				"cost_center": ", ".join(cost_center),
-				"warehouse": ", ".join(warehouse),
-				"currency": company_currency,
-			}
-		)
-
 		# map income values
 		base_net_total = 0
 		for income_acc in income_accounts:
@@ -402,9 +395,6 @@
 
 
 def get_invoices(filters, additional_query_columns):
-	if additional_query_columns:
-		additional_query_columns = ", " + ", ".join(additional_query_columns)
-
 	conditions = get_conditions(filters)
 	return frappe.db.sql(
 		"""
@@ -413,10 +403,10 @@
 		base_net_total, base_grand_total, base_rounded_total, outstanding_amount,
 		is_internal_customer, represents_company, company {0}
 		from `tabSales Invoice`
-		where docstatus = 1 %s order by posting_date desc, name desc""".format(
-			additional_query_columns or ""
-		)
-		% conditions,
+		where docstatus = 1 {1}
+		order by posting_date desc, name desc""".format(
+			additional_query_columns, conditions
+		),
 		filters,
 		as_dict=1,
 	)
diff --git a/erpnext/accounts/report/share_ledger/share_ledger.py b/erpnext/accounts/report/share_ledger/share_ledger.py
index d6c3bd0..629528e 100644
--- a/erpnext/accounts/report/share_ledger/share_ledger.py
+++ b/erpnext/accounts/report/share_ledger/share_ledger.py
@@ -67,8 +67,9 @@
 	# 	condition = 'AND company = %(company)s '
 	return frappe.db.sql(
 		"""SELECT * FROM `tabShare Transfer`
-		WHERE (DATE(date) <= %(date)s AND from_shareholder = %(shareholder)s {condition})
-		OR (DATE(date) <= %(date)s AND to_shareholder = %(shareholder)s {condition})
+		WHERE ((DATE(date) <= %(date)s AND from_shareholder = %(shareholder)s {condition})
+		OR (DATE(date) <= %(date)s AND to_shareholder = %(shareholder)s {condition}))
+		AND docstatus = 1
 		ORDER BY date""".format(
 			condition=condition
 		),
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py
index 22bebb7..d51c4c4 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.py
+++ b/erpnext/accounts/report/trial_balance/trial_balance.py
@@ -17,6 +17,7 @@
 	filter_out_zero_value_rows,
 	set_gl_entries_by_account,
 )
+from erpnext.accounts.report.utils import convert_to_presentation_currency, get_currency
 
 value_fields = (
 	"opening_debit",
@@ -178,8 +179,8 @@
 				"opening_credit": 0.0,
 			},
 		)
-		opening[d.account]["opening_debit"] += flt(d.opening_debit)
-		opening[d.account]["opening_credit"] += flt(d.opening_credit)
+		opening[d.account]["opening_debit"] += flt(d.debit)
+		opening[d.account]["opening_credit"] += flt(d.credit)
 
 	return opening
 
@@ -194,8 +195,11 @@
 		frappe.qb.from_(closing_balance)
 		.select(
 			closing_balance.account,
-			Sum(closing_balance.debit).as_("opening_debit"),
-			Sum(closing_balance.credit).as_("opening_credit"),
+			closing_balance.account_currency,
+			Sum(closing_balance.debit).as_("debit"),
+			Sum(closing_balance.credit).as_("credit"),
+			Sum(closing_balance.debit_in_account_currency).as_("debit_in_account_currency"),
+			Sum(closing_balance.credit_in_account_currency).as_("credit_in_account_currency"),
 		)
 		.where(
 			(closing_balance.company == filters.company)
@@ -282,6 +286,9 @@
 
 	gle = opening_balance.run(as_dict=1)
 
+	if filters and filters.get("presentation_currency"):
+		convert_to_presentation_currency(gle, get_currency(filters))
+
 	return gle
 
 
diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py
index 97cc1c4..7ea1fac 100644
--- a/erpnext/accounts/report/utils.py
+++ b/erpnext/accounts/report/utils.py
@@ -1,5 +1,5 @@
 import frappe
-from frappe.utils import flt, formatdate, get_datetime_str
+from frappe.utils import flt, formatdate, get_datetime_str, get_table_name
 
 from erpnext import get_company_currency, get_default_company
 from erpnext.accounts.doctype.fiscal_year.fiscal_year import get_from_and_to_date
@@ -78,7 +78,7 @@
 	return rate
 
 
-def convert_to_presentation_currency(gl_entries, currency_info, company):
+def convert_to_presentation_currency(gl_entries, currency_info):
 	"""
 	Take a list of GL Entries and change the 'debit' and 'credit' values to currencies
 	in `currency_info`.
@@ -93,7 +93,6 @@
 	account_currencies = list(set(entry["account_currency"] for entry in gl_entries))
 
 	for entry in gl_entries:
-		account = entry["account"]
 		debit = flt(entry["debit"])
 		credit = flt(entry["credit"])
 		debit_in_account_currency = flt(entry["debit_in_account_currency"])
@@ -151,3 +150,32 @@
 		result = sum(d.gross_profit for d in result)
 
 	return result
+
+
+def get_query_columns(report_columns):
+	if not report_columns:
+		return ""
+
+	columns = []
+	for column in report_columns:
+		fieldname = column["fieldname"]
+
+		if doctype := column.get("_doctype"):
+			columns.append(f"`{get_table_name(doctype)}`.`{fieldname}`")
+		else:
+			columns.append(fieldname)
+
+	return ", " + ", ".join(columns)
+
+
+def get_values_for_columns(report_columns, report_row):
+	values = {}
+
+	if not report_columns:
+		return values
+
+	for column in report_columns:
+		fieldname = column["fieldname"]
+		values[fieldname] = report_row.get(fieldname)
+
+	return values
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 9000b0d..31473db 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -1408,6 +1408,50 @@
 			frappe.delete_doc("Desktop Icon", icon)
 
 
+def create_err_and_its_journals(companies: list = None) -> None:
+	if companies:
+		for company in companies:
+			err = frappe.new_doc("Exchange Rate Revaluation")
+			err.company = company.name
+			err.posting_date = nowdate()
+			err.rounding_loss_allowance = 0.0
+
+			err.fetch_and_calculate_accounts_data()
+			if err.accounts:
+				err.save().submit()
+				response = err.make_jv_entries()
+
+				if company.submit_err_jv:
+					jv = response.get("revaluation_jv", None)
+					jv and frappe.get_doc("Journal Entry", jv).submit()
+					jv = response.get("zero_balance_jv", None)
+					jv and frappe.get_doc("Journal Entry", jv).submit()
+
+
+def auto_create_exchange_rate_revaluation_daily() -> None:
+	"""
+	Executed by background job
+	"""
+	companies = frappe.db.get_all(
+		"Company",
+		filters={"auto_exchange_rate_revaluation": 1, "auto_err_frequency": "Daily"},
+		fields=["name", "submit_err_jv"],
+	)
+	create_err_and_its_journals(companies)
+
+
+def auto_create_exchange_rate_revaluation_weekly() -> None:
+	"""
+	Executed by background job
+	"""
+	companies = frappe.db.get_all(
+		"Company",
+		filters={"auto_exchange_rate_revaluation": 1, "auto_err_frequency": "Weekly"},
+		fields=["name", "submit_err_jv"],
+	)
+	create_err_and_its_journals(companies)
+
+
 def get_payment_ledger_entries(gl_entries, cancel=0):
 	ple_map = []
 	if gl_entries:
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index a6d939e..d02d318 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -415,6 +415,10 @@
 		"erpnext.selling.doctype.quotation.quotation.set_expired_status",
 		"erpnext.buying.doctype.supplier_quotation.supplier_quotation.set_expired_status",
 		"erpnext.accounts.doctype.process_statement_of_accounts.process_statement_of_accounts.send_auto_email",
+		"erpnext.accounts.utils.auto_create_exchange_rate_revaluation_daily",
+	],
+	"weekly": [
+		"erpnext.accounts.utils.auto_create_exchange_rate_revaluation_weekly",
 	],
 	"daily_long": [
 		"erpnext.setup.doctype.email_digest.email_digest.send",
diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json
index 6292ad7..ed2852e 100644
--- a/erpnext/setup/doctype/company/company.json
+++ b/erpnext/setup/doctype/company/company.json
@@ -95,6 +95,10 @@
   "depreciation_cost_center",
   "capital_work_in_progress_account",
   "asset_received_but_not_billed",
+  "exchange_rate_revaluation_settings_section",
+  "auto_exchange_rate_revaluation",
+  "auto_err_frequency",
+  "submit_err_jv",
   "budget_detail",
   "exception_budget_approver_role",
   "registration_info",
@@ -731,6 +735,29 @@
    "fieldname": "book_advance_payments_in_separate_party_account",
    "fieldtype": "Check",
    "label": "Book Advance Payments in Separate Party Account"
+  },
+  {
+   "fieldname": "exchange_rate_revaluation_settings_section",
+   "fieldtype": "Section Break",
+   "label": "Exchange Rate Revaluation Settings"
+  },
+  {
+   "default": "0",
+   "fieldname": "auto_exchange_rate_revaluation",
+   "fieldtype": "Check",
+   "label": "Auto Create Exchange Rate Revaluation"
+  },
+  {
+   "fieldname": "auto_err_frequency",
+   "fieldtype": "Select",
+   "label": "Frequency",
+   "options": "Daily\nWeekly"
+  },
+  {
+   "default": "0",
+   "fieldname": "submit_err_jv",
+   "fieldtype": "Check",
+   "label": "Submit ERR Journals?"
   }
  ],
  "icon": "fa fa-building",
@@ -738,7 +765,7 @@
  "image_field": "company_logo",
  "is_tree": 1,
  "links": [],
- "modified": "2023-06-23 18:22:27.219706",
+ "modified": "2023-07-07 05:41:41.537256",
  "modified_by": "Administrator",
  "module": "Setup",
  "name": "Company",
diff --git a/erpnext/stock/doctype/batch/batch.js b/erpnext/stock/doctype/batch/batch.js
index fa8b2be..3b07e4e 100644
--- a/erpnext/stock/doctype/batch/batch.js
+++ b/erpnext/stock/doctype/batch/batch.js
@@ -47,8 +47,6 @@
 						return;
 					}
 
-					debugger
-
 					const section = frm.dashboard.add_section('', __("Stock Levels"));
 
 					// sort by qty
diff --git a/erpnext/stock/doctype/batch/test_batch.py b/erpnext/stock/doctype/batch/test_batch.py
index 0e4132d..7fb672c 100644
--- a/erpnext/stock/doctype/batch/test_batch.py
+++ b/erpnext/stock/doctype/batch/test_batch.py
@@ -59,6 +59,73 @@
 
 		return receipt
 
+	def test_batch_stock_levels(self, batch_qty=100):
+		"""Test automated batch creation from Purchase Receipt"""
+		self.make_batch_item("ITEM-BATCH-1")
+
+		receipt = frappe.get_doc(
+			dict(
+				doctype="Purchase Receipt",
+				supplier="_Test Supplier",
+				company="_Test Company",
+				items=[dict(item_code="ITEM-BATCH-1", qty=10, rate=10, warehouse="Stores - _TC")],
+			)
+		).insert()
+		receipt.submit()
+
+		receipt.load_from_db()
+		batch_no = get_batch_from_bundle(receipt.items[0].serial_and_batch_bundle)
+
+		bundle_id = (
+			SerialBatchCreation(
+				{
+					"item_code": "ITEM-BATCH-1",
+					"warehouse": "_Test Warehouse - _TC",
+					"actual_qty": 20,
+					"voucher_type": "Purchase Receipt",
+					"batches": frappe._dict({batch_no: 20}),
+					"type_of_transaction": "Inward",
+					"company": receipt.company,
+				}
+			)
+			.make_serial_and_batch_bundle()
+			.name
+		)
+
+		receipt2 = frappe.get_doc(
+			dict(
+				doctype="Purchase Receipt",
+				supplier="_Test Supplier",
+				company="_Test Company",
+				items=[
+					dict(
+						item_code="ITEM-BATCH-1",
+						qty=20,
+						rate=10,
+						warehouse="_Test Warehouse - _TC",
+						serial_and_batch_bundle=bundle_id,
+					)
+				],
+			)
+		).insert()
+		receipt2.submit()
+
+		receipt.load_from_db()
+		receipt2.load_from_db()
+
+		self.assertTrue(receipt.items[0].serial_and_batch_bundle)
+		self.assertTrue(receipt2.items[0].serial_and_batch_bundle)
+
+		batchwise_qty = frappe._dict({})
+		for receipt in [receipt, receipt2]:
+			batch_no = get_batch_from_bundle(receipt.items[0].serial_and_batch_bundle)
+			key = (batch_no, receipt.items[0].warehouse)
+			batchwise_qty[key] = receipt.items[0].qty
+
+		batches = get_batch_qty(batch_no)
+		for d in batches:
+			self.assertEqual(d.qty, batchwise_qty[(d.batch_no, d.warehouse)])
+
 	def test_stock_entry_incoming(self):
 		"""Test batch creation via Stock Entry (Work Order)"""
 
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 75b6ec7..0c6d33b 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
@@ -1272,24 +1272,29 @@
 
 	if ids:
 		for d in get_serial_batch_ledgers(kwargs.item_code, docstatus=1, name=ids):
-			if d.batch_no not in pos_batches:
-				pos_batches[d.batch_no] = frappe._dict(
+			key = (d.batch_no, d.warehouse)
+			if key not in pos_batches:
+				pos_batches[key] = frappe._dict(
 					{
 						"qty": d.qty,
 						"warehouse": d.warehouse,
 					}
 				)
 			else:
-				pos_batches[d.batch_no].qty += d.qty
+				pos_batches[key].qty += d.qty
 
 	for row in pos_invoices:
 		if not row.batch_no:
 			continue
 
-		if row.batch_no in pos_batches:
-			pos_batches[row.batch_no] -= row.qty * -1 if row.is_return else row.qty
+		if kwargs.get("batch_no") and row.batch_no != kwargs.get("batch_no"):
+			continue
+
+		key = (row.batch_no, row.warehouse)
+		if key in pos_batches:
+			pos_batches[key] -= row.qty * -1 if row.is_return else row.qty
 		else:
-			pos_batches[row.batch_no] = frappe._dict(
+			pos_batches[key] = frappe._dict(
 				{
 					"qty": (row.qty * -1 if row.is_return else row.qty),
 					"warehouse": row.warehouse,
@@ -1309,6 +1314,7 @@
 		update_available_batches(available_batches, stock_ledgers_batches, pos_invoice_batches)
 
 	available_batches = list(filter(lambda x: x.qty > 0, available_batches))
+
 	if not qty:
 		return available_batches
 
@@ -1351,10 +1357,11 @@
 def update_available_batches(available_batches, reserved_batches=None, pos_invoice_batches=None):
 	for batches in [reserved_batches, pos_invoice_batches]:
 		if batches:
-			for batch_no, data in batches.items():
+			for key, data in batches.items():
+				batch_no, warehouse = key
 				batch_not_exists = True
 				for batch in available_batches:
-					if batch.batch_no == batch_no and batch.warehouse == data.warehouse:
+					if batch.batch_no == batch_no and batch.warehouse == warehouse:
 						batch.qty += data.qty
 						batch_not_exists = False
 
@@ -1563,7 +1570,7 @@
 		.groupby(stock_ledger_entry.batch_no, stock_ledger_entry.warehouse)
 	)
 
-	for field in ["warehouse", "item_code"]:
+	for field in ["warehouse", "item_code", "batch_no"]:
 		if not kwargs.get(field):
 			continue
 
@@ -1582,6 +1589,10 @@
 	data = query.run(as_dict=True)
 	batches = {}
 	for d in data:
-		batches[d.batch_no] = d
+		key = (d.batch_no, d.warehouse)
+		if key not in batches:
+			batches[key] = d
+		else:
+			batches[key].qty += d.qty
 
 	return batches
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv
index 26a775e..5f0a8dc 100644
--- a/erpnext/translations/de.csv
+++ b/erpnext/translations/de.csv
@@ -158,7 +158,7 @@
 Aerospace,Luft- und Raumfahrt,
 Against,Zu,
 Against Account,Gegenkonto,
-Against Journal Entry {0} does not have any unmatched {1} entry,"""Zu Buchungssatz"" {0} hat nur abgeglichene {1} Buchungen",
+Against Journal Entry {0} does not have any unmatched {1} entry,Buchungssatz {0} hat keinen offenen Eintrag auf der {1}-Seite,
 Against Journal Entry {0} is already adjusted against some other voucher,"""Zu Buchungssatz"" {0} ist bereits mit einem anderen Beleg abgeglichen",
 Against Supplier Invoice {0} dated {1},Zu Eingangsrechnung {0} vom {1},
 Against Voucher,Gegenbeleg,
@@ -209,10 +209,10 @@
 Amount of TDS Deducted,Betrag der abgezogenen TDS,
 Amount should not be less than zero.,Betrag sollte nicht kleiner als Null sein.,
 Amount to Bill,Rechnungsbetrag,
-Amount {0} {1} against {2} {3},Menge {0} {1} gegen {2} {3},
-Amount {0} {1} deducted against {2},Menge {0} {1} abgezogen gegen {2},
-Amount {0} {1} transferred from {2} to {3},Menge {0} {1} übertragen von {2} auf {3},
-Amount {0} {1} {2} {3},Menge {0} {1} {2} {3},
+Amount {0} {1} against {2} {3},Betrag {0} {1} gegen {2} {3},
+Amount {0} {1} deducted against {2},Betrag {0} {1} abgezogen gegen {2},
+Amount {0} {1} transferred from {2} to {3},Betrag {0} {1} wurde von {2} zu {3} transferiert,
+Amount {0} {1} {2} {3},Betrag {0} {1} {2} {3},
 Amt,Menge,
 "An Item Group exists with same name, please change the item name or rename the item group",Eine Artikelgruppe mit dem gleichen Namen existiert bereits. Bitte den Artikelnamen ändern oder die Artikelgruppe umbenennen,
 An academic term with this 'Academic Year' {0} and 'Term Name' {1} already exists. Please modify these entries and try again.,"Ein Semester mit ""Semesterjahr""'{0} und ""Semesternamen"" {1} ist bereits vorhanden. Bitte ändern Sie diese entsprechend und versuchen Sie es erneut.",
@@ -279,7 +279,7 @@
 Asset Received But Not Billed,"Vermögenswert erhalten, aber nicht in Rechnung gestellt",
 Asset Value Adjustment,Anpassung Vermögenswert,
 "Asset cannot be cancelled, as it is already {0}","Vermögenswert kann nicht rückgängig gemacht werden, da es ohnehin schon {0} ist",
-Asset scrapped via Journal Entry {0},Vermögenswert über Journaleintrag {0} entsorgt,
+Asset scrapped via Journal Entry {0},Vermögenswert über Buchungssatz {0} entsorgt,
 "Asset {0} cannot be scrapped, as it is already {1}",Anlagewert-{0} ist bereits entsorgt {1},
 Asset {0} does not belong to company {1},Vermögenswert {0} gehört nicht zu Unternehmen {1}.,
 Asset {0} must be submitted,Vermögenswert {0} muss eingereicht werden.,
@@ -440,7 +440,7 @@
 "Can not filter based on Account, if grouped by Account","Wenn nach Konto gruppiert wurde, kann nicht auf Grundlage des Kontos gefiltert werden.",
 "Can not filter based on Voucher No, if grouped by Voucher","Wenn nach Beleg gruppiert wurde, kann nicht auf Grundlage von Belegen gefiltert werden.",
 "Can not mark Inpatient Record Discharged, there are Unbilled Invoices {0}","Kann den entlassenen Krankenhauskatheter nicht markieren, es gibt keine fakturierten Rechnungen {0}",
-Can only make payment against unbilled {0},Zahlung kann nur zu einer noch nicht abgerechneten {0} erstellt werden,
+Can only make payment against unbilled {0},Zahlung kann nur zu einem noch nicht abgerechneten Beleg vom Typ {0} erstellt werden,
 Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total',"Kann sich nur auf eine Zeile beziehen, wenn die Berechnungsart der Kosten entweder ""auf vorherige Zeilensumme"" oder ""auf vorherigen Zeilenbetrag"" ist",
 "Can't change valuation method, as there are transactions against some items which does not have it's own valuation method","Kann die Bewertungsmethode nicht ändern, da es Transaktionen gegen einige Posten gibt, für die es keine eigene Bewertungsmethode gibt",
 Can't create standard criteria. Please rename the criteria,Kann keine Standardkriterien erstellen. Bitte benennen Sie die Kriterien um,
@@ -448,7 +448,7 @@
 Cancel Material Visit {0} before cancelling this Warranty Claim,Materialkontrolle {0} stornieren vor Abbruch dieses Garantieantrags,
 Cancel Material Visits {0} before cancelling this Maintenance Visit,Materialkontrolle {0} stornieren vor Abbruch dieses Wartungsbesuchs,
 Cancel Subscription,Abonnement beenden,
-Cancel the journal entry {0} first,Brechen Sie zuerst den Journaleintrag {0} ab,
+Cancel the journal entry {0} first,Brechen Sie zuerst den Buchungssatz {0} ab,
 Canceled,Abgebrochen,
 "Cannot Submit, Employees left to mark attendance","Kann nicht übergeben werden, Mitarbeiter sind zur Teilnahme zugelassen",
 Cannot be a fixed asset item as Stock Ledger is created.,"Kann keine Anlageposition sein, wenn das Stock Ledger erstellt wird.",
@@ -473,9 +473,11 @@
 Cannot enroll more than {0} students for this student group.,Kann nicht mehr als {0} Studenten für diese Studentengruppe einschreiben.,
 Cannot find active Leave Period,Aktive Abwesenheitszeit kann nicht gefunden werden,
 Cannot produce more Item {0} than Sales Order quantity {1},"Es können nicht mehr Artikel {0} produziert werden, als die über den Auftrag bestellte Stückzahl {1}",
+Cannot pay to Customer without any negative outstanding invoice,"Es kann nicht an den Kunden gezahlt werden, ohne dass eine Gutschrift vorhanden ist",
 Cannot promote Employee with status Left,Mitarbeiter mit Status &quot;Links&quot; kann nicht gefördert werden,
+Cannot receive from Supplier without any negative outstanding invoice,"Es kann nicht vom Lieferanten empfangen werden, ohne dass eine Gutschrift vorhanden ist",
 Cannot refer row number greater than or equal to current row number for this Charge type,"Für diese Berechnungsart kann keine Zeilennummern zugeschrieben werden, die größer oder gleich der aktuellen Zeilennummer ist",
-Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row,"Die Berechnungsart kann für die erste Zeile nicht auf ""bezogen auf Menge der vorhergenden Zeile"" oder auf ""bezogen auf Gesamtmenge der vorhergenden Zeile"" gesetzt werden",
+Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row,"Die Berechnungsart kann für die erste Zeile nicht auf „Bezogen auf Betrag der vorhergenden Zeile“ oder auf „Bezogen auf Gesamtbetrag der vorhergenden Zeilen“ gesetzt werden",
 Cannot set as Lost as Sales Order is made.,"Kann nicht als verloren gekennzeichnet werden, da ein Auftrag dazu existiert.",
 Cannot set authorization on basis of Discount for {0},Genehmigung kann nicht auf der Basis des Rabattes für {0} festgelegt werden,
 Cannot set multiple Item Defaults for a company.,Es können nicht mehrere Artikelstandards für ein Unternehmen festgelegt werden.,
@@ -512,7 +514,7 @@
 Changing Customer Group for the selected Customer is not allowed.,Die Änderung der Kundengruppe für den ausgewählten Kunden ist nicht zulässig.,
 Chapter,Gruppe,
 Chapter information.,Gruppeninformation,
-Charge of type 'Actual' in row {0} cannot be included in Item Rate,"Kosten für den Typ ""real"" in Zeile {0} können nicht in den Artikelpreis mit eingeschlossen werden",
+Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount,"Kosten für den Typ „Tatsächlich“ in Zeile {0} können nicht in den Artikelpreis oder den bezahlen Betrag einfließen",
 Chargeble,Belastung,
 Charges are updated in Purchase Receipt against each item,Kosten werden im Kaufbeleg für jede Position aktualisiert,
 "Charges will be distributed proportionately based on item qty or amount, as per your selection",Die Kosten werden gemäß Ihrer Wahl anteilig verteilt basierend auf Artikelmenge oder -preis,
@@ -655,7 +657,7 @@
 Create Invoice,Rechnung erstellen,
 Create Invoices,Rechnungen erstellen,
 Create Job Card,Jobkarte erstellen,
-Create Journal Entry,Journaleintrag erstellen,
+Create Journal Entry,Buchungssatz erstellen,
 Create Lead,Lead erstellen,
 Create Leads,Leads erstellen,
 Create Maintenance Visit,Wartungsbesuch anlegen,
@@ -835,7 +837,7 @@
 Diff Qty,Diff Menge,
 Difference Account,Differenzkonto,
 "Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry","Differenzkonto muss ein Vermögens-/Verbindlichkeiten-Konto sein, da dieser Lagerabgleich eine Eröffnungsbuchung ist",
-Difference Amount,Differenzmenge,
+Difference Amount,Differenzbetrag,
 Difference Amount must be zero,Differenzbetrag muss Null sein,
 Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM.,"Unterschiedliche Maßeinheiten für Artikel führen zu falschen Werten für das (Gesamt-)Nettogewicht. Es muss sicher gestellt sein, dass das Nettogewicht jedes einzelnen Artikels in der gleichen Maßeinheit angegeben ist.",
 Direct Expenses,Direkte Aufwendungen,
@@ -1031,7 +1033,7 @@
 Fields,Felder,
 Fill the form and save it,Formular ausfüllen und speichern,
 Filter Employees By (Optional),Mitarbeiter filtern nach (optional),
-"Filter Fields Row #{0}: Fieldname <b>{1}</b> must be of type ""Link"" or ""Table MultiSelect""",Filterfelder Zeile # {0}: Feldname <b>{1}</b> muss vom Typ &quot;Link&quot; oder &quot;Tabelle MultiSelect&quot; sein,
+"Filter Fields Row #{0}: Fieldname <b>{1}</b> must be of type ""Link"" or ""Table MultiSelect""",Filterfelder Zeile {0}: Feldname <b>{1}</b> muss vom Typ &quot;Link&quot; oder &quot;Tabelle MultiSelect&quot; sein,
 Filter Total Zero Qty,Gesamtmenge filtern,
 Finance Book,Finanzbuch,
 Financial / accounting year.,Finanz-/Rechnungsjahr,
@@ -1307,6 +1309,7 @@
 Invalid GSTIN! First 2 digits of GSTIN should match with State number {0}.,Ungültige GSTIN! Die ersten beiden Ziffern von GSTIN sollten mit der Statusnummer {0} übereinstimmen.,
 Invalid GSTIN! The input you've entered doesn't match the format of GSTIN.,Ungültige GSTIN! Die von Ihnen eingegebene Eingabe stimmt nicht mit dem Format von GSTIN überein.,
 Invalid Posting Time,Ungültige Buchungszeit,
+Invalid Purchase Invoice,Ungültige Einkaufsrechnung,
 Invalid attribute {0} {1},Ungültiges Attribut {0} {1},
 Invalid quantity specified for item {0}. Quantity should be greater than 0.,Ungültzige Anzahl für Artikel {0} angegeben. Anzahl sollte größer als 0 sein.,
 Invalid reference {0} {1},Ungültige Referenz {0} {1},
@@ -1769,7 +1772,7 @@
 Office Equipments,Büroausstattung,
 Office Maintenance Expenses,Büro-Wartungskosten,
 Office Rent,Büromiete,
-On Hold,In Wartestellung,
+On Hold,Auf Eis gelegt,
 On Net Total,Auf Nettosumme,
 One customer can be part of only single Loyalty Program.,Ein Kunde kann Teil eines einzigen Treueprogramms sein.,
 Online Auctions,Online-Auktionen,
@@ -1859,7 +1862,7 @@
 Packing Slip(s) cancelled,Packzettel storniert,
 Paid,Bezahlt,
 Paid Amount,Gezahlter Betrag,
-Paid Amount cannot be greater than total negative outstanding amount {0},Gezahlten Betrag kann nicht größer sein als die Gesamt negativ ausstehenden Betrag {0},
+Paid Amount cannot be greater than total negative outstanding amount {0},"Der gezahlte Betrag darf nicht größer sein als der gesamte, negative, ausstehende Betrag {0}",
 Paid amount + Write Off Amount can not be greater than Grand Total,Summe aus gezahltem Betrag + ausgebuchter Betrag darf nicht größer der Gesamtsumme sein,
 Paid and Not Delivered,Bezahlt und nicht ausgeliefert,
 Parameter,Parameter,
@@ -1911,7 +1914,7 @@
 Payment Terms Template,Vorlage Zahlungsbedingungen,
 Payment Terms based on conditions,Zahlungsbedingungen basieren auf Bedingungen,
 Payment Type,Zahlungsart,
-"Payment Type must be one of Receive, Pay and Internal Transfer","Zahlungsart muss eine der Receive sein, Pay und interne Übertragung",
+"Payment Type must be one of Receive, Pay and Internal Transfer","Zahlungsart muss entweder 'Empfangen', 'Zahlen' oder 'Interner Transfer' sein",
 Payment against {0} {1} cannot be greater than Outstanding Amount {2},Zahlung zu {0} {1} kann nicht größer als ausstehender Betrag {2} sein,
 Payment of {0} from {1} to {2},Zahlung von {0} von {1} an {2},
 Payment request {0} created,Zahlungsaufforderung {0} erstellt,
@@ -2293,9 +2296,9 @@
 Read the ERPNext Manual,Lesen Sie das ERPNext-Handbuch,
 Reading Uploaded File,Hochgeladene Datei lesen,
 Real Estate,Immobilien,
-Reason For Putting On Hold,Grund für das Halten,
-Reason for Hold,Grund für das Halten,
-Reason for hold: ,Grund für das Halten:,
+Reason For Putting On Hold,Grund für das auf Eis legen,
+Reason for Hold,Grund für das auf Eis legen,
+Reason for hold: ,Grund für das auf Eis legen:,
 Receipt,Kaufbeleg,
 Receipt document must be submitted,Eingangsbeleg muss vorgelegt werden,
 Receivable,Forderung,
@@ -2315,18 +2318,20 @@
 Reference,Referenz,
 Reference #{0} dated {1},Referenz #{0} vom {1},
 Reference Date,Referenzdatum,
-Reference Doctype must be one of {0},Referenz Doctype muss man von {0},
+Reference Doctype must be one of {0},Referenz-Typ muss eine von {0} sein,
 Reference Document,Referenzdokument,
 Reference Document Type,Referenz-Dokumententyp,
 Reference No & Reference Date is required for {0},Referenznr. & Referenz-Tag sind erforderlich für {0},
-Reference No and Reference Date is mandatory for Bank transaction,Referenznummer und Referenzdatum ist obligatorisch für Bankengeschäft,
-Reference No is mandatory if you entered Reference Date,"Referenznr. ist zwingend erforderlich, wenn Referenz-Tag eingegeben wurde",
+Reference No and Reference Date is mandatory for Bank transaction,Referenznummer und Referenzdatum sind Pflichtfelder,
+Reference No is mandatory if you entered Reference Date,"Referenznummer ist ein Pflichtfeld, wenn ein Referenzdatum eingegeben wurde",
 Reference No.,Referenznummer.,
 Reference Number,Referenznummer,
 Reference Owner,Referenz Besitzer,
 Reference Type,Referenz-Typ,
 "Reference: {0}, Item Code: {1} and Customer: {2}","Referenz: {0}, Item Code: {1} und Kunde: {2}",
 References,Referenzen,
+References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount.,"Die Referenzen {0} vom Typ {1} hatten keinen ausstehenden Betrag mehr, bevor die Zahlung gebucht wurde. Jetzt haben sie einen negativen ausstehenden Betrag.",
+If this is undesirable please cancel the corresponding Payment Entry.,"Falls dies nicht erwünscht ist, stornieren Sie bitte die entsprechende Zahlung.",
 Refresh Token,Aktualisieren Token,
 Region,Region,
 Register,Neu registrieren,
@@ -2405,7 +2410,7 @@
 Return / Credit Note,Return / Gutschrift,
 Return / Debit Note,Return / Lastschrift,
 Returns,Retouren,
-Reverse Journal Entry,Journaleintrag umkehren,
+Reverse Journal Entry,Buchungssatz umkehren,
 Review Invitation Sent,Einladung überprüfen gesendet,
 Review and Action,Überprüfung und Aktion,
 Role,Rolle,
@@ -2418,63 +2423,64 @@
 Round Off,Abschliessen,
 Rounded Total,Gerundete Gesamtsumme,
 Route,Route,
-Row # {0}: ,Zeile # {0}:,
-Row # {0}: Batch No must be same as {1} {2},Zeile # {0}: Chargennummer muss dieselbe sein wie {1} {2},
-Row # {0}: Cannot return more than {1} for Item {2},Zeile # {0}: Es kann nicht mehr als {1} für Artikel {2} zurückgegeben werden,
-Row # {0}: Rate cannot be greater than the rate used in {1} {2},"Row # {0}: Die Rate kann nicht größer sein als die Rate, die in {1} {2}",
-Row # {0}: Serial No is mandatory,Zeile # {0}: Seriennummer ist zwingend erforderlich,
-Row # {0}: Serial No {1} does not match with {2} {3},Zeile # {0}: Seriennummer {1} stimmt nicht mit {2} {3} überein,
-Row #{0} (Payment Table): Amount must be negative,Zeilennr. {0} (Zahlungstabelle): Betrag muss negativ sein,
-Row #{0} (Payment Table): Amount must be positive,Zeile # {0} (Zahlungstabelle): Betrag muss positiv sein,
-Row #{0}: Account {1} does not belong to company {2},Zeile # {0}: Konto {1} gehört nicht zur Unternehmen {2},
-Row #{0}: Allocated Amount cannot be greater than outstanding amount.,Zeile # {0}: Zugeordneter Betrag darf nicht größer als ausstehender Betrag sein.,
-"Row #{0}: Asset {1} cannot be submitted, it is already {2}","Zeile Nr. {0}: Vermögenswert {1} kann nicht vorgelegt werden, es ist bereits {2}",
-Row #{0}: Cannot set Rate if amount is greater than billed amount for Item {1}.,"Zeilennr. {0}: Die Rate kann nicht festgelegt werden, wenn der Betrag für Artikel {1} höher als der Rechnungsbetrag ist.",
-Row #{0}: Clearance date {1} cannot be before Cheque Date {2},Row # {0}: Räumungsdatum {1} kann nicht vor dem Scheck Datum sein {2},
-Row #{0}: Duplicate entry in References {1} {2},Zeile # {0}: Eintrag in Referenzen {1} {2} duplizieren,
-Row #{0}: Expected Delivery Date cannot be before Purchase Order Date,Row # {0}: Voraussichtlicher Liefertermin kann nicht vor Bestelldatum sein,
-Row #{0}: Item added,Zeile # {0}: Element hinzugefügt,
-Row #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher,Row # {0}: Journal Entry {1} nicht Konto {2} oder bereits abgestimmt gegen einen anderen Gutschein,
-Row #{0}: Not allowed to change Supplier as Purchase Order already exists,"Zeile #{0}: Es ist nicht erlaubt den Lieferanten zu wechseln, da bereits eine Bestellung vorhanden ist",
-Row #{0}: Please set reorder quantity,Zeile #{0}: Bitte Nachbestellmenge angeben,
-Row #{0}: Please specify Serial No for Item {1},Zeile #{0}: Bitte Seriennummer für Artikel {1} angeben,
-Row #{0}: Qty increased by 1,Zeile # {0}: Menge um 1 erhöht,
-Row #{0}: Rate must be same as {1}: {2} ({3} / {4}) ,Zeile #{0}: Preis muss derselbe wie {1}: {2} ({3} / {4}) sein,
-Row #{0}: Reference Document Type must be one of Expense Claim or Journal Entry,Row # {0}: Referenzdokumenttyp muss entweder 'Auslagenabrechnung' oder 'Journaleintrag' sein,
-"Row #{0}: Reference Document Type must be one of Purchase Order, Purchase Invoice or Journal Entry","Row # {0}: Referenzdokumenttyp muss eine der Bestellung, Rechnung oder Kaufjournaleintrag sein",
-Row #{0}: Rejected Qty can not be entered in Purchase Return,Zeile #{0}: Abgelehnte Menge kann nicht in Kaufrückgabe eingegeben werden,
-Row #{0}: Rejected Warehouse is mandatory against rejected Item {1},Row # {0}: Abgelehnt Warehouse ist obligatorisch gegen zurückgewiesen Artikel {1},
-Row #{0}: Reqd by Date cannot be before Transaction Date,Zeilennr. {0}: Erforderlich nach Datum darf nicht vor dem Transaktionsdatum liegen,
-Row #{0}: Set Supplier for item {1},Zeile #{0}: Lieferanten für Artikel {1} einstellen,
-Row #{0}: Status must be {1} for Invoice Discounting {2},Zeile # {0}: Status muss {1} für Rechnungsrabatt {2} sein,
-"Row #{0}: The batch {1} has only {2} qty. Please select another batch which has {3} qty available or split the row into multiple rows, to deliver/issue from multiple batches","Zeile # {0}: Der Batch {1} hat nur {2} Menge. Bitte wähle eine andere Charge aus, die {3} Menge zur Verfügung hat oder die Zeile in mehrere Zeilen aufteilt, um aus mehreren Chargen zu liefern / auszutauschen",
-Row #{0}: Timings conflicts with row {1},Zeile #{0}: Timing-Konflikte mit Zeile {1},
-Row #{0}: {1} can not be negative for item {2},Row # {0}: {1} kann für Artikel nicht negativ sein {2},
-Row No {0}: Amount cannot be greater than Pending Amount against Expense Claim {1}. Pending Amount is {2},Zeile Nr. {0}: Der Betrag kann nicht größer als der ausstehende Betrag der Auslagenabrechnung {1} sein. Der ausstehende Betrag ist {2},
+Row # {0}: ,Zeile {0}:,
+Row # {0}: Batch No must be same as {1} {2},Zeile {0}: Chargennummer muss dieselbe sein wie {1} {2},
+Row # {0}: Cannot return more than {1} for Item {2},Zeile {0}: Es kann nicht mehr als {1} für Artikel {2} zurückgegeben werden,
+Row # {0}: Rate cannot be greater than the rate used in {1} {2},"Zeile {0}: Die Rate kann nicht größer sein als die Rate, die in {1} {2}",
+Row # {0}: Serial No is mandatory,Zeile {0}: Seriennummer ist zwingend erforderlich,
+Row # {0}: Serial No {1} does not match with {2} {3},Zeile {0}: Seriennummer {1} stimmt nicht mit {2} {3} überein,
+Row #{0} (Payment Table): Amount must be negative,Zeile {0} (Zahlungstabelle): Betrag muss negativ sein,
+Row #{0} (Payment Table): Amount must be positive,Zeile {0} (Zahlungstabelle): Betrag muss positiv sein,
+Row #{0}: Account {1} does not belong to company {2},Zeile {0}: Konto {1} gehört nicht zur Unternehmen {2},
+Row #{0}: Allocated Amount cannot be greater than outstanding amount.,Zeile {0}: Zugeordneter Betrag darf nicht größer als ausstehender Betrag sein.,
+"Row #{0}: Asset {1} cannot be submitted, it is already {2}","Zeile {0}: Vermögenswert {1} kann nicht vorgelegt werden, es ist bereits {2}",
+Row #{0}: Cannot set Rate if amount is greater than billed amount for Item {1}.,"Zeile {0}: Die Rate kann nicht festgelegt werden, wenn der Betrag für Artikel {1} höher als der Rechnungsbetrag ist.",
+Row #{0}: Cannot allocate more than {1} against payment term {2},Zeile {0}: Es kann nicht mehr als {1} zu Zahlungsbedingung {2} zugeordnet werden,
+Row #{0}: Clearance date {1} cannot be before Cheque Date {2},Zeile {0}: Räumungsdatum {1} kann nicht vor dem Scheck Datum sein {2},
+Row #{0}: Duplicate entry in References {1} {2},Referenz {1} {2} in Zeile {0} kommt doppelt vor,
+Row #{0}: Expected Delivery Date cannot be before Purchase Order Date,Zeile {0}: Voraussichtlicher Liefertermin kann nicht vor Bestelldatum sein,
+Row #{0}: Item added,Zeile {0}: Element hinzugefügt,
+Row #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher,Zeile {0}: Buchungssatz {1} betrifft nicht Konto {2} oder bereits mit einem anderen Beleg verrechnet,
+Row #{0}: Not allowed to change Supplier as Purchase Order already exists,"Zeile {0}: Es ist nicht erlaubt den Lieferanten zu wechseln, da bereits eine Bestellung vorhanden ist",
+Row #{0}: Please set reorder quantity,Zeile {0}: Bitte Nachbestellmenge angeben,
+Row #{0}: Please specify Serial No for Item {1},Zeile {0}: Bitte Seriennummer für Artikel {1} angeben,
+Row #{0}: Qty increased by 1,Zeile {0}: Menge um 1 erhöht,
+Row #{0}: Rate must be same as {1}: {2} ({3} / {4}) ,Zeile {0}: Preis muss derselbe wie {1}: {2} ({3} / {4}) sein,
+Row #{0}: Reference Document Type must be one of Expense Claim or Journal Entry,Zeile {0}: Referenzdokumenttyp muss entweder 'Auslagenabrechnung' oder 'Buchungssatz' sein,
+"Row #{0}: Reference Document Type must be one of Purchase Order, Purchase Invoice or Journal Entry","Zeile {0}: Referenzdokumenttyp muss eine der Bestellung, Eingangsrechnung oder Buchungssatz sein",
+Row #{0}: Rejected Qty can not be entered in Purchase Return,Zeile {0}: Abgelehnte Menge kann nicht in Kaufrückgabe eingegeben werden,
+Row #{0}: Rejected Warehouse is mandatory against rejected Item {1},Zeile {0}: Abgelehnt Warehouse ist obligatorisch gegen zurückgewiesen Artikel {1},
+Row #{0}: Reqd by Date cannot be before Transaction Date,Zeile {0}: Erforderlich nach Datum darf nicht vor dem Transaktionsdatum liegen,
+Row #{0}: Set Supplier for item {1},Zeile {0}: Lieferanten für Artikel {1} einstellen,
+Row #{0}: Status must be {1} for Invoice Discounting {2},Zeile {0}: Status muss {1} für Rechnungsrabatt {2} sein,
+"Row #{0}: The batch {1} has only {2} qty. Please select another batch which has {3} qty available or split the row into multiple rows, to deliver/issue from multiple batches","Zeile {0}: Der Batch {1} hat nur {2} Menge. Bitte wähle eine andere Charge aus, die {3} Menge zur Verfügung hat oder die Zeile in mehrere Zeilen aufteilt, um aus mehreren Chargen zu liefern / auszutauschen",
+Row #{0}: Timings conflicts with row {1},Zeile {0}: Timing-Konflikte mit Zeile {1},
+Row #{0}: {1} can not be negative for item {2},Zeile {0}: {1} kann für Artikel nicht negativ sein {2},
+Row No {0}: Amount cannot be greater than Pending Amount against Expense Claim {1}. Pending Amount is {2},Zeile {0}: Der Betrag kann nicht größer als der ausstehende Betrag der Auslagenabrechnung {1} sein. Der ausstehende Betrag ist {2},
 Row {0} : Operation is required against the raw material item {1},Zeile {0}: Vorgang ist für die Rohmaterialposition {1} erforderlich,
 Row {0}# Allocated amount {1} cannot be greater than unclaimed amount {2},Zeile {0} # Der zugewiesene Betrag {1} darf nicht größer sein als der nicht beanspruchte Betrag {2},
 Row {0}# Item {1} cannot be transferred more than {2} against Purchase Order {3},Zeile {0} # Artikel {1} kann nicht mehr als {2} gegen Bestellung {3} übertragen werden.,
-Row {0}# Paid Amount cannot be greater than requested advance amount,Zeile Nr. {0}: Bezahlter Betrag darf nicht größer sein als der geforderte Anzahlungsbetrag,
-Row {0}: Activity Type is mandatory.,Row {0}: Leistungsart ist obligatorisch.,
-Row {0}: Advance against Customer must be credit,Row {0}: Voraus gegen Kunde muss Kredit,
-Row {0}: Advance against Supplier must be debit,Row {0}: Voraus gegen Lieferant muss belasten werden,
+Row {0}# Paid Amount cannot be greater than requested advance amount,Zeile {0}: Bezahlter Betrag darf nicht größer sein als der geforderte Anzahlungsbetrag,
+Row {0}: Activity Type is mandatory.,Zeile {0}: Leistungsart ist obligatorisch.,
+Row {0}: Advance against Customer must be credit,Zeile {0}: Voraus gegen Kunde muss Kredit,
+Row {0}: Advance against Supplier must be debit,Zeile {0}: Voraus gegen Lieferant muss belasten werden,
 Row {0}: Allocated amount {1} must be less than or equals to Payment Entry amount {2},Zeile {0}: Zugewiesener Betrag {1} muss kleiner oder gleich der Zahlungsmenge {2} sein,
 Row {0}: Allocated amount {1} must be less than or equals to invoice outstanding amount {2},Zeile {0}: Zugeteilte Menge {1} muss kleiner als oder gleich dem ausstehenden Betrag in Rechnung {2} sein,
 Row {0}: An Reorder entry already exists for this warehouse {1},Zeile {0}: Es gibt bereits eine Nachbestellungsbuchung für dieses Lager {1},
 Row {0}: Bill of Materials not found for the Item {1},Zeile {0}: Bill of Materials nicht für den Artikel gefunden {1},
-Row {0}: Conversion Factor is mandatory,Row {0}: Umrechnungsfaktor ist zwingend erfoderlich,
+Row {0}: Conversion Factor is mandatory,Zeile {0}: Umrechnungsfaktor ist zwingend erfoderlich,
 Row {0}: Cost center is required for an item {1},Zeile {0}: Kostenstelle ist für einen Eintrag {1} erforderlich,
 Row {0}: Credit entry can not be linked with a {1},Zeile {0}: Habenbuchung kann nicht mit ein(em) {1} verknüpft werden,
 Row {0}: Currency of the BOM #{1} should be equal to the selected currency {2},Zeile {0}: Währung der Stückliste # {1} sollte der gewählten Währung entsprechen {2},
 Row {0}: Debit entry can not be linked with a {1},Zeile {0}: Sollbuchung kann nicht mit ein(em) {1} verknüpft werden,
 Row {0}: Depreciation Start Date is required,Zeile {0}: Das Abschreibungsstartdatum ist erforderlich,
-Row {0}: Enter location for the asset item {1},Zeile Nr. {0}: Geben Sie den Speicherort für das Vermögenswert {1} ein.,
+Row {0}: Enter location for the asset item {1},Zeile {0}: Geben Sie einen Ort für den Vermögenswert {1} ein.,
 Row {0}: Exchange Rate is mandatory,Zeile {0}: Wechselkurs ist erforderlich,
 Row {0}: Expected Value After Useful Life must be less than Gross Purchase Amount,Zeile {0}: Erwarteter Wert nach Nutzungsdauer muss kleiner als Brutto Kaufbetrag sein,
-Row {0}: From Time and To Time is mandatory.,Row {0}: Von Zeit und zu Zeit ist obligatorisch.,
+Row {0}: From Time and To Time is mandatory.,Zeile {0}: Von Zeit und zu Zeit ist obligatorisch.,
 Row {0}: From Time and To Time of {1} is overlapping with {2},Zeile {0}: Zeitüberlappung in {1} mit {2},
 Row {0}: From time must be less than to time,Zeile {0}: Von Zeit zu Zeit muss kleiner sein,
-Row {0}: Hours value must be greater than zero.,Row {0}: Stunden-Wert muss größer als Null sein.,
+Row {0}: Hours value must be greater than zero.,Zeile {0}: Stunden-Wert muss größer als Null sein.,
 Row {0}: Invalid reference {1},Zeile {0}: Ungültige Referenz {1},
 Row {0}: Party / Account does not match with {1} / {2} in {3} {4},Zeile {0}: Partei / Konto stimmt nicht mit {1} / {2} in {3} {4} überein,
 Row {0}: Party Type and Party is required for Receivable / Payable account {1},Zeile {0}: Partei-Typ und Partei sind für Forderungen-/Verbindlichkeiten-Konto {1} zwingend erforderlich,
@@ -2869,7 +2875,7 @@
 Supplier Id,Lieferanten-ID,
 Supplier Invoice Date cannot be greater than Posting Date,Lieferant Rechnungsdatum kann nicht größer sein als Datum der Veröffentlichung,
 Supplier Invoice No,Lieferantenrechnungsnr.,
-Supplier Invoice No exists in Purchase Invoice {0},Lieferantenrechnung existiert in Kauf Rechnung {0},
+Supplier Invoice No exists in Purchase Invoice {0},Die Rechnungsnummer des Lieferanten wurde bereits in Eingangsrechnung {0} verwendet,
 Supplier Name,Lieferantenname,
 Supplier Part No,Lieferant Teile-Nr,
 Supplier Quotation,Lieferantenangebot,
@@ -2929,7 +2935,7 @@
 Templates of supplier scorecard criteria.,Vorlagen der Lieferanten-Scorecard-Kriterien.,
 Templates of supplier scorecard variables.,Vorlagen der Lieferanten-Scorecard-Variablen.,
 Templates of supplier standings.,Vorlagen der Lieferantenwertung.,
-Temporarily on Hold,Vorübergehend in der Warteschleife,
+Temporarily on Hold,Vorübergehend auf Eis gelegt,
 Temporary,Temporär,
 Temporary Accounts,Temporäre Konten,
 Temporary Opening,Temporäre Eröffnungskonten,
@@ -3071,7 +3077,7 @@
 Total Collected: {0},Gesammelt gesammelt: {0},
 Total Commission,Gesamtprovision,
 Total Contribution Amount: {0},Gesamtbeitragsbetrag: {0},
-Total Credit/ Debit Amount should be same as linked Journal Entry,Der Gesamtkreditbetrag sollte identisch mit dem verknüpften Journaleintrag sein,
+Total Credit/ Debit Amount should be same as linked Journal Entry,Der Gesamtkreditbetrag sollte identisch mit dem verknüpften Buchungssatz sein,
 Total Debit must be equal to Total Credit. The difference is {0},Gesamt-Soll muss gleich Gesamt-Haben sein. Die Differenz ist {0},
 Total Deduction,Gesamtabzug,
 Total Invoiced Amount,Gesamtrechnungsbetrag,
@@ -3404,7 +3410,7 @@
 {0} is not in Optional Holiday List,{0} befindet sich nicht in der optionalen Feiertagsliste,
 {0} is not in a valid Payroll Period,{0} befindet sich nicht in einer gültigen Abrechnungsperiode,
 {0} is now the default Fiscal Year. Please refresh your browser for the change to take effect.,"{0} ist jetzt das Standardgeschäftsjahr. Bitte aktualisieren Sie Ihren Browser, damit die Änderungen wirksam werden.",
-{0} is on hold till {1},{0} ist zurückgestellt bis {1},
+{0} is on hold till {1},{0} ist auf Eis gelegt bis {1},
 {0} item found.,{0} Artikel gefunden.,
 {0} items found.,{0} Artikel gefunden.,
 {0} items in progress,{0} Elemente in Bearbeitung,
@@ -3424,6 +3430,8 @@
 {0} variants created.,{0} Varianten erstellt.,
 {0} {1} created,{0} {1} erstellt,
 {0} {1} does not exist,{0} {1} existiert nicht,
+{0} {1} has already been fully paid.,{0} {1} wurde bereits vollständig bezahlt.,
+{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.,"{0} {1} wurde bereits teilweise bezahlt. Bitte nutzen Sie den Button 'Ausstehende Rechnungen aufrufen', um die aktuell ausstehenden Beträge zu erhalten.",
 {0} {1} has been modified. Please refresh.,{0} {1} wurde geändert. Bitte aktualisieren.,
 {0} {1} has not been submitted so the action cannot be completed,"{0} {1} sind nicht gebucht, deshalb kann die Aktion nicht abgeschlossen werden",
 "{0} {1} is associated with {2}, but Party Account is {3}","{0} {1} ist mit {2} verbunden, aber das Gegenkonto ist {3}",
@@ -3435,9 +3443,10 @@
 {0} {1} is frozen,{0} {1} ist gesperrt,
 {0} {1} is fully billed,{0} {1} wird voll in Rechnung gestellt,
 {0} {1} is not active,{0} {1} ist nicht aktiv,
-{0} {1} is not associated with {2} {3},{0} {1} ist nicht mit {2} {3} verknüpft,
+{0} {1} is not associated with {2} {3},{0} {1} gehört nicht zu {2} {3},
 {0} {1} is not present in the parent company,{0} {1} ist in der Muttergesellschaft nicht vorhanden,
 {0} {1} is not submitted,{0} {1} wurde nicht übertragen,
+{0} {1} is on hold,{0} {1} liegt derzeit auf Eis,
 {0} {1} is {2},{0} {1} ist {2},
 {0} {1} must be submitted,{0} {1} muss vorgelegt werden,
 {0} {1} not in any active Fiscal Year.,{0} {1} nicht in einem aktiven Geschäftsjahr.,
@@ -3566,7 +3575,7 @@
 Account is not set for the dashboard chart {0},Konto ist nicht für das Dashboard-Diagramm {0} festgelegt.,
 Account {0} does not exists in the dashboard chart {1},Konto {0} ist im Dashboard-Diagramm {1} nicht vorhanden,
 Account: <b>{0}</b> is capital Work in progress and can not be updated by Journal Entry,Konto: <b>{0}</b> ist in Bearbeitung und kann von Journal Entry nicht aktualisiert werden,
-Account: {0} is not permitted under Payment Entry,Konto: {0} ist unter Zahlungseingang nicht zulässig,
+Account: {0} is not permitted under Payment Entry,Konto {0} kann nicht in Zahlung verwendet werden,
 Accounting Dimension <b>{0}</b> is required for 'Balance Sheet' account {1}.,Die Buchhaltungsdimension <b>{0}</b> ist für das Bilanzkonto <b>{1}</b> erforderlich.,
 Accounting Dimension <b>{0}</b> is required for 'Profit and Loss' account {1}.,Die Buchhaltungsdimension <b>{0}</b> ist für das Konto {1} &quot;Gewinn und Verlust&quot; erforderlich.,
 Accounting Masters,Accounting Masters,
@@ -3626,6 +3635,8 @@
 Blue,Blau,
 Book,Buchen,
 Book Appointment,Einen Termin verabreden,
+Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}.,"Die Option 'Anzahlungen als Verbindlichkeit buchen' ist aktiviert. Das Ausgangskonto wurde von {0} auf {1} geändert.",
+Book Advance Payments in Separate Party Account,Anzahlungen als Verbindlichkeit buchen,
 Brand,Marke,
 Browse,Durchsuchen,
 Call Connected,Anruf verbunden,
@@ -3835,10 +3846,12 @@
 No description,Keine Beschreibung,
 No issue has been raised by the caller.,Der Anrufer hat kein Problem angesprochen.,
 No items to publish,Keine Artikel zu veröffentlichen,
+No outstanding {0} found for the {1} {2} which qualify the filters you have specified.,"Für {1} {2} wurden kein ausstehender Beleg vom Typ {0} gefunden, der den angegebenen Filtern entspricht.",
 No outstanding invoices found,Keine offenen Rechnungen gefunden,
 No outstanding invoices found for the {0} {1} which qualify the filters you have specified.,"Für {0} {1} wurden keine ausstehenden Rechnungen gefunden, die die von Ihnen angegebenen Filter qualifizieren.",
 No outstanding invoices require exchange rate revaluation,Keine ausstehenden Rechnungen erfordern eine Neubewertung des Wechselkurses,
 No reviews yet,Noch keine Bewertungen,
+No Stock Available Currently,Derzeit kein Lagerbestand verfügbar,
 No views yet,Noch keine Ansichten,
 Non stock items,Nicht vorrätige Artikel,
 Not Allowed,Nicht Erlaubt,
@@ -3924,8 +3937,8 @@
 Publish Your First Items,Veröffentlichen Sie Ihre ersten Artikel,
 Publish {0} Items,{0} Elemente veröffentlichen,
 Published Items,Veröffentlichte Artikel,
-Purchase Invoice cannot be made against an existing asset {0},Kaufrechnung kann nicht für ein vorhandenes Asset erstellt werden {0},
-Purchase Invoices,Rechnungen kaufen,
+Purchase Invoice cannot be made against an existing asset {0},Eingangsrechnung kann nicht für ein vorhandenes Asset erstellt werden {0},
+Purchase Invoices,Eingangsrechnungen,
 Purchase Orders,Kauforder,
 Purchase Receipt doesn't have any Item for which Retain Sample is enabled.,"Der Kaufbeleg enthält keinen Artikel, für den die Option &quot;Probe aufbewahren&quot; aktiviert ist.",
 Purchase Return,Warenrücksendung,
@@ -3961,20 +3974,20 @@
 Room,Zimmer,
 Room Type,Zimmertyp,
 Row # ,Zeile #,
-Row #{0}: Accepted Warehouse and Supplier Warehouse cannot be same,Zeile # {0}: Akzeptiertes Lager und Lieferantenlager können nicht identisch sein,
-Row #{0}: Cannot delete item {1} which has already been billed.,Zeile # {0}: Der bereits abgerechnete Artikel {1} kann nicht gelöscht werden.,
-Row #{0}: Cannot delete item {1} which has already been delivered,"Zeile # {0}: Element {1}, das bereits geliefert wurde, kann nicht gelöscht werden",
-Row #{0}: Cannot delete item {1} which has already been received,"Zeile # {0}: Element {1}, das bereits empfangen wurde, kann nicht gelöscht werden",
-Row #{0}: Cannot delete item {1} which has work order assigned to it.,"Zeile # {0}: Element {1}, dem ein Arbeitsauftrag zugewiesen wurde, kann nicht gelöscht werden.",
-Row #{0}: Cannot delete item {1} which is assigned to customer's purchase order.,"Zeile # {0}: Artikel {1}, der der Bestellung des Kunden zugeordnet ist, kann nicht gelöscht werden.",
-Row #{0}: Cannot select Supplier Warehouse while suppling raw materials to subcontractor,"Zeile # {0}: Supplier Warehouse kann nicht ausgewählt werden, während Rohstoffe an Subunternehmer geliefert werden",
-Row #{0}: Cost Center {1} does not belong to company {2},Zeile # {0}: Kostenstelle {1} gehört nicht zu Firma {2},
-Row #{0}: Operation {1} is not completed for {2} qty of finished goods in Work Order {3}. Please update operation status via Job Card {4}.,Zeile # {0}: Vorgang {1} ist für {2} Fertigwarenmenge im Fertigungsauftrag {3} nicht abgeschlossen. Bitte aktualisieren Sie den Betriebsstatus über die Jobkarte {4}.,
-Row #{0}: Payment document is required to complete the transaction,"Zeile # {0}: Der Zahlungsbeleg ist erforderlich, um die Transaktion abzuschließen",
-Row #{0}: Serial No {1} does not belong to Batch {2},Zeile # {0}: Seriennummer {1} gehört nicht zu Charge {2},
-Row #{0}: Service End Date cannot be before Invoice Posting Date,Zeile # {0}: Das Service-Enddatum darf nicht vor dem Rechnungsbuchungsdatum liegen,
-Row #{0}: Service Start Date cannot be greater than Service End Date,Zeile # {0}: Das Servicestartdatum darf nicht höher als das Serviceenddatum sein,
-Row #{0}: Service Start and End Date is required for deferred accounting,Zeile # {0}: Das Start- und Enddatum des Service ist für die aufgeschobene Abrechnung erforderlich,
+Row #{0}: Accepted Warehouse and Supplier Warehouse cannot be same,Zeile {0}: Akzeptiertes Lager und Lieferantenlager können nicht identisch sein,
+Row #{0}: Cannot delete item {1} which has already been billed.,Zeile {0}: Der bereits abgerechnete Artikel {1} kann nicht gelöscht werden.,
+Row #{0}: Cannot delete item {1} which has already been delivered,"Zeile {0}: Element {1}, das bereits geliefert wurde, kann nicht gelöscht werden",
+Row #{0}: Cannot delete item {1} which has already been received,"Zeile {0}: Element {1}, das bereits empfangen wurde, kann nicht gelöscht werden",
+Row #{0}: Cannot delete item {1} which has work order assigned to it.,"Zeile {0}: Element {1}, dem ein Arbeitsauftrag zugewiesen wurde, kann nicht gelöscht werden.",
+Row #{0}: Cannot delete item {1} which is assigned to customer's purchase order.,"Zeile {0}: Artikel {1}, der der Bestellung des Kunden zugeordnet ist, kann nicht gelöscht werden.",
+Row #{0}: Cannot select Supplier Warehouse while suppling raw materials to subcontractor,"Zeile {0}: Supplier Warehouse kann nicht ausgewählt werden, während Rohstoffe an Subunternehmer geliefert werden",
+Row #{0}: Cost Center {1} does not belong to company {2},Zeile {0}: Kostenstelle {1} gehört nicht zu Firma {2},
+Row #{0}: Operation {1} is not completed for {2} qty of finished goods in Work Order {3}. Please update operation status via Job Card {4}.,Zeile {0}: Vorgang {1} ist für {2} Fertigwarenmenge im Fertigungsauftrag {3} nicht abgeschlossen. Bitte aktualisieren Sie den Betriebsstatus über die Jobkarte {4}.,
+Row #{0}: Payment document is required to complete the transaction,"Zeile {0}: Der Zahlungsbeleg ist erforderlich, um die Transaktion abzuschließen",
+Row #{0}: Serial No {1} does not belong to Batch {2},Zeile {0}: Seriennummer {1} gehört nicht zu Charge {2},
+Row #{0}: Service End Date cannot be before Invoice Posting Date,Zeile {0}: Das Service-Enddatum darf nicht vor dem Rechnungsbuchungsdatum liegen,
+Row #{0}: Service Start Date cannot be greater than Service End Date,Zeile {0}: Das Servicestartdatum darf nicht höher als das Serviceenddatum sein,
+Row #{0}: Service Start and End Date is required for deferred accounting,Zeile {0}: Das Start- und Enddatum des Service ist für die aufgeschobene Abrechnung erforderlich,
 Row {0}: Invalid Item Tax Template for item {1},Zeile {0}: Ungültige Artikelsteuervorlage für Artikel {1},
 Row {0}: Quantity not available for {4} in warehouse {1} at posting time of the entry ({2} {3}),Zeile {0}: Menge für {4} in Lager {1} zum Buchungszeitpunkt des Eintrags nicht verfügbar ({2} {3}),
 Row {0}: user has not applied the rule {1} on the item {2},Zeile {0}: Der Nutzer hat die Regel {1} nicht auf das Element {2} angewendet.,
@@ -4236,7 +4249,7 @@
 Cards,Karten,
 Percentage,Prozentsatz,
 Failed to setup defaults for country {0}. Please contact support@erpnext.com,Fehler beim Einrichten der Standardeinstellungen für Land {0}. Bitte wenden Sie sich an support@erpnext.com,
-Row #{0}: Item {1} is not a Serialized/Batched Item. It cannot have a Serial No/Batch No against it.,Zeile # {0}: Element {1} ist kein serialisiertes / gestapeltes Element. Es kann keine Seriennummer / Chargennummer dagegen haben.,
+Row #{0}: Item {1} is not a Serialized/Batched Item. It cannot have a Serial No/Batch No against it.,Zeile {0}: Element {1} ist kein serialisiertes / gestapeltes Element. Es kann keine Seriennummer / Chargennummer dagegen haben.,
 Please set {0},Bitte {0} setzen,
 Please set {0},Bitte setzen Sie {0},supplier
 Draft,Entwurf,"docstatus,=,0"
@@ -4323,7 +4336,7 @@
 Set the default account for the {0} {1},Legen Sie das Standardkonto für {0} {1} fest,
 (Half Day),(Halber Tag),
 Income Tax Slab,Einkommensteuerplatte,
-Row #{0}: Cannot set amount or formula for Salary Component {1} with Variable Based On Taxable Salary,Zeile # {0}: Betrag oder Formel für Gehaltskomponente {1} mit Variable basierend auf steuerpflichtigem Gehalt kann nicht festgelegt werden,
+Row #{0}: Cannot set amount or formula for Salary Component {1} with Variable Based On Taxable Salary,Zeile {0}: Betrag oder Formel für Gehaltskomponente {1} mit Variable basierend auf steuerpflichtigem Gehalt kann nicht festgelegt werden,
 Row #{}: {} of {} should be {}. Please modify the account or select a different account.,Zeile # {}: {} von {} sollte {} sein. Bitte ändern Sie das Konto oder wählen Sie ein anderes Konto aus.,
 Row #{}: Please asign task to a member.,Zeile # {}: Bitte weisen Sie einem Mitglied eine Aufgabe zu.,
 Process Failed,Prozess fehlgeschlagen,
@@ -4332,10 +4345,11 @@
 Row {0}: Delivery Warehouse ({1}) and Customer Warehouse ({2}) can not be same,Zeile {0}: Lieferlager ({1}) und Kundenlager ({2}) können nicht identisch sein,
 Row {0}: Due Date in the Payment Terms table cannot be before Posting Date,Zeile {0}: Fälligkeitsdatum in der Tabelle &quot;Zahlungsbedingungen&quot; darf nicht vor dem Buchungsdatum liegen,
 Cannot find {} for item {}. Please set the same in Item Master or Stock Settings.,{} Für Element {} kann nicht gefunden werden. Bitte stellen Sie dasselbe in den Artikelstamm- oder Lagereinstellungen ein.,
-Row #{0}: The batch {1} has already expired.,Zeile # {0}: Der Stapel {1} ist bereits abgelaufen.,
+Row #{0}: The batch {1} has already expired.,Zeile {0}: Der Stapel {1} ist bereits abgelaufen.,
 Start Year and End Year are mandatory,Startjahr und Endjahr sind obligatorisch,
 GL Entry,Buchung zum Hauptbuch,
 Cannot allocate more than {0} against payment term {1},Es kann nicht mehr als {0} für die Zahlungsbedingung {1} zugeordnet werden.,
+Cannot receive from customer against negative outstanding,Negativer Gesamtbetrag kann nicht vom Kunden empfangen werden,
 The root account {0} must be a group,Das Root-Konto {0} muss eine Gruppe sein,
 Shipping rule not applicable for country {0} in Shipping Address,Versandregel gilt nicht für Land {0} in Versandadresse,
 Get Payments from,Zahlungen erhalten von,
@@ -4475,7 +4489,7 @@
 Over Billing Allowance (%),Mehr als Abrechnungsbetrag (%),
 Credit Controller,Kredit-Controller,
 Check Supplier Invoice Number Uniqueness,"Aktivieren, damit dieselbe Lieferantenrechnungsnummer nur einmal vorkommen kann",
-Make Payment via Journal Entry,Zahlung über Journaleintrag,
+Make Payment via Journal Entry,Zahlung über Buchungssatz,
 Unlink Payment on Cancellation of Invoice,Zahlung bei Stornierung der Rechnung aufheben,
 Book Asset Depreciation Entry Automatically,Vermögensabschreibung automatisch verbuchen,
 Automatically Add Taxes and Charges from Item Tax Template,Steuern und Gebühren aus Artikelsteuervorlage automatisch hinzufügen,
@@ -4544,7 +4558,7 @@
 Bank Transaction Entries,Banktransaktionseinträge,
 New Transactions,Neue Transaktionen,
 Match Transaction to Invoices,Transaktion mit Rechnungen abgleichen,
-Create New Payment/Journal Entry,Erstellen Sie eine neue Zahlung / Journaleintrag,
+Create New Payment/Journal Entry,Erstellen Sie eine neue Zahlung / Buchungssatz,
 Submit/Reconcile Payments,Zahlungen absenden / abstimmen,
 Matching Invoices,Passende Rechnungen,
 Payment Invoice Items,Zahlung Rechnungspositionen,
@@ -4797,6 +4811,7 @@
 Paid Amount (Company Currency),Gezahlter Betrag (Unternehmenswährung),
 Received Amount,erhaltenen Betrag,
 Received Amount (Company Currency),Erhaltene Menge (Gesellschaft Währung),
+Received Amount cannot be greater than Paid Amount,Der erhaltene Betrag darf nicht größer sein als der gezahlte Betrag,
 Get Outstanding Invoice,Erhalten Sie eine ausstehende Rechnung,
 Payment References,Bezahlung Referenzen,
 Writeoff,Abschreiben,
@@ -4945,7 +4960,7 @@
 Accounting Dimensions ,Buchhaltung Dimensionen,
 Supplier Invoice Details,Lieferant Rechnungsdetails,
 Supplier Invoice Date,Lieferantenrechnungsdatum,
-Return Against Purchase Invoice,Zurück zur Eingangsrechnung,
+Return Against Purchase Invoice,Gutschrift zur Eingangsrechnung,
 Select Supplier Address,Lieferantenadresse auswählen,
 Contact Person,Kontaktperson,
 Select Shipping Address,Lieferadresse auswählen,
@@ -4995,7 +5010,7 @@
 Terms and Conditions1,Allgemeine Geschäftsbedingungen1,
 Group same items,Gruppe gleichen Artikel,
 Print Language,Drucksprache,
-"Once set, this invoice will be on hold till the set date","Einmal eingestellt, wird diese Rechnung bis zum festgelegten Datum gehalten",
+"Once set, this invoice will be on hold till the set date","Einmal eingestellt, liegt diese Rechnung bis zum festgelegten Datum auf Eis",
 Credit To,Gutschreiben auf,
 Party Account Currency,Währung des Kontos der Partei,
 Against Expense Account,Zu Aufwandskonto,
@@ -5319,7 +5334,7 @@
 Asset Owner Company,Eigentümergesellschaft,
 Custodian,Depotbank,
 Disposal Date,Verkauf Datum,
-Journal Entry for Scrap,Journaleintrag für Ausschuss,
+Journal Entry for Scrap,Buchungssatz für Ausschuss,
 Available-for-use Date,Verfügbarkeitsdatum,
 Calculate Depreciation,Abschreibung berechnen,
 Allow Monthly Depreciation,Monatliche Abschreibung zulassen,
@@ -5481,8 +5496,8 @@
 Is Transporter,Ist Transporter,
 Represents Company,Repräsentiert das Unternehmen,
 Supplier Type,Lieferantentyp,
-Allow Purchase Invoice Creation Without Purchase Order,Erstellen von Kaufrechnungen ohne Bestellung zulassen,
-Allow Purchase Invoice Creation Without Purchase Receipt,Zulassen der Erstellung von Kaufrechnungen ohne Kaufbeleg,
+Allow Purchase Invoice Creation Without Purchase Order,Erstellen von Eingangsrechnung ohne Bestellung zulassen,
+Allow Purchase Invoice Creation Without Purchase Receipt,Erstellen von Eingangsrechnung ohne Kaufbeleg ohne Kaufbeleg zulassen,
 Warn RFQs,Warnung Ausschreibungen,
 Warn POs,Warnen Sie POs,
 Prevent RFQs,Vermeidung von Ausschreibungen,
@@ -7667,7 +7682,7 @@
 Default Inventory Account,Standard Inventurkonto,
 Stock Adjustment Account,Bestandskorrektur-Konto,
 Fixed Asset Depreciation Settings,Einstellungen Abschreibung von Anlagevermögen,
-Series for Asset Depreciation Entry (Journal Entry),Serie für Abschreibungs-Eintrag (Journaleintrag),
+Series for Asset Depreciation Entry (Journal Entry),Serie für Abschreibungs-Eintrag (Buchungssatz),
 Gain/Loss Account on Asset Disposal,Gewinn-/Verlustrechnung auf die Veräußerung von Vermögenswerten,
 Asset Depreciation Cost Center,Kostenstelle für Vermögenswertabschreibung,
 Budget Detail,Budget-Detail,
@@ -8079,7 +8094,7 @@
 Applicable for Countries,Anwenden für Länder,
 Price List Country,Preisliste Land,
 MAT-PRE-.YYYY.-,MAT-PRE-.JJJJ.-,
-Supplier Delivery Note,Lieferumfang,
+Supplier Delivery Note,Lieferschein Nr.,
 Time at which materials were received,"Zeitpunkt, zu dem Materialien empfangen wurden",
 Return Against Purchase Receipt,Zurück zum Kaufbeleg,
 Rate at which supplier's currency is converted to company's base currency,"Kurs, zu dem die Währung des Lieferanten in die Basiswährung des Unternehmens umgerechnet wird",
@@ -8453,10 +8468,10 @@
 Bank Clearance,Bankfreigabe,
 Bank Clearance Detail,Bankfreigabedetail,
 Update Cost Center Name / Number,Name / Nummer der Kostenstelle aktualisieren,
-Journal Entry Template,Journaleintragsvorlage,
+Journal Entry Template,Buchungssatz-Vorlage,
 Template Title,Vorlagentitel,
-Journal Entry Type,Journaleintragstyp,
-Journal Entry Template Account,Journaleintragsvorlagenkonto,
+Journal Entry Type,Buchungssatz-Typ,
+Journal Entry Template Account,Buchungssatzvorlagenkonto,
 Process Deferred Accounting,Aufgeschobene Buchhaltung verarbeiten,
 Manual entry cannot be created! Disable automatic entry for deferred accounting in accounts settings and try again,Manuelle Eingabe kann nicht erstellt werden! Deaktivieren Sie die automatische Eingabe für die verzögerte Buchhaltung in den Konteneinstellungen und versuchen Sie es erneut,
 End date cannot be before start date,Das Enddatum darf nicht vor dem Startdatum liegen,
@@ -8531,7 +8546,7 @@
 Book Deferred Entries Based On,Buch verzögerte Einträge basierend auf,
 Days,Tage,
 Months,Monate,
-Book Deferred Entries Via Journal Entry,Buch verzögerte Einträge über Journaleintrag,
+Book Deferred Entries Via Journal Entry,Separaten Buchungssatz für latente Buchungen erstellen,
 Submit Journal Entries,Journaleinträge senden,
 If this is unchecked Journal Entries will be saved in a Draft state and will have to be submitted manually,"Wenn dieses Kontrollkästchen deaktiviert ist, werden Journaleinträge in einem Entwurfsstatus gespeichert und müssen manuell übermittelt werden",
 Enable Distributed Cost Center,Aktivieren Sie die verteilte Kostenstelle,
@@ -8559,7 +8574,7 @@
 Reference Detail No,Referenz Detail Nr,
 Custom Remarks,Benutzerdefinierte Bemerkungen,
 Please select a Company first.,Bitte wählen Sie zuerst eine Firma aus.,
-"Row #{0}: Reference Document Type must be one of Sales Order, Sales Invoice, Journal Entry or Dunning","Zeile # {0}: Der Referenzdokumenttyp muss Auftrag, Ausgangsrechnung, Journaleintrag oder Mahnwesen sein",
+"Row #{0}: Reference Document Type must be one of Sales Order, Sales Invoice, Journal Entry or Dunning","Zeile {0}: Der Referenzdokumenttyp muss Auftrag, Ausgangsrechnung, Buchungssatz oder Mahnung sein",
 POS Closing Entry,POS Closing Entry,
 POS Opening Entry,POS-Eröffnungseintrag,
 POS Transactions,POS-Transaktionen,
@@ -8678,9 +8693,9 @@
 "By default, the Supplier Name is set as per the Supplier Name entered. If you want Suppliers to be named by a  ","Standardmäßig wird der Lieferantenname gemäß dem eingegebenen Lieferantennamen festgelegt. Wenn Sie möchten, dass Lieferanten von a benannt werden",
  choose the 'Naming Series' option.,Wählen Sie die Option &quot;Naming Series&quot;.,
 Configure the default Price List when creating a new Purchase transaction. Item prices will be fetched from this Price List.,Konfigurieren Sie die Standardpreisliste beim Erstellen einer neuen Kauftransaktion. Artikelpreise werden aus dieser Preisliste abgerufen.,
-"If this option is configured 'Yes', ERPNext will prevent you from creating a Purchase Invoice or Receipt without creating a Purchase Order first. This configuration can be overridden for a particular supplier by enabling the 'Allow Purchase Invoice Creation Without Purchase Order' checkbox in the Supplier master.","Wenn diese Option auf &quot;Ja&quot; konfiguriert ist, verhindert ERPNext, dass Sie eine Kaufrechnung oder einen Beleg erstellen können, ohne zuvor eine Bestellung zu erstellen. Diese Konfiguration kann für einen bestimmten Lieferanten überschrieben werden, indem das Kontrollkästchen &quot;Erstellung von Eingangsrechnungen ohne Bestellung zulassen&quot; im Lieferantenstamm aktiviert wird.",
-"If this option is configured 'Yes', ERPNext will prevent you from creating a Purchase Invoice without creating a Purchase Receipt first. This configuration can be overridden for a particular supplier by enabling the 'Allow Purchase Invoice Creation Without Purchase Receipt' checkbox in the Supplier master.","Wenn diese Option auf &quot;Ja&quot; konfiguriert ist, verhindert ERPNext, dass Sie eine Kaufrechnung erstellen können, ohne zuvor einen Kaufbeleg zu erstellen. Diese Konfiguration kann für einen bestimmten Lieferanten überschrieben werden, indem das Kontrollkästchen &quot;Erstellung von Kaufrechnungen ohne Kaufbeleg zulassen&quot; im Lieferantenstamm aktiviert wird.",
-Quantity & Stock,Menge &amp; Lager,
+"If this option is configured 'Yes', ERPNext will prevent you from creating a Purchase Invoice or Receipt without creating a Purchase Order first. This configuration can be overridden for a particular supplier by enabling the 'Allow Purchase Invoice Creation Without Purchase Order' checkbox in the Supplier master.","Wenn diese Option auf 'Ja' gesetzt ist, validiert ERPNext, dass Sie eine Bestellung angelegt haben, bevor Sie eine Eingangsrechnung oder einen Kaufbeleg erfassen können. Diese Konfiguration kann für einzelne Lieferanten überschrieben werden, indem Sie die Option 'Erstellung von Eingangsrechnungen ohne Bestellung zulassen' im Lieferantenstamm aktivieren.",
+"If this option is configured 'Yes', ERPNext will prevent you from creating a Purchase Invoice without creating a Purchase Receipt first. This configuration can be overridden for a particular supplier by enabling the 'Allow Purchase Invoice Creation Without Purchase Receipt' checkbox in the Supplier master.","Wenn diese Option auf 'Ja' gesetzt ist, validiert ERPNext, dass Sie einen Kaufbeleg angelegt haben, bevor Sie eine Eingangsrechnung erfasen können. Diese Konfiguration kann für einzelne Lieferanten überschrieben werden, indem Sie die Option 'Erstellung von Kaufrechnungen ohne Kaufbeleg zulassen' im Lieferantenstamm aktivieren.",
+Quantity & Stock,Menge & Lager,
 Call Details,Anrufdetails,
 Authorised By,Authorisiert von,
 Signee (Company),Unterzeichner (Firma),
@@ -8914,7 +8929,7 @@
 Monthly Eligible Amount,Monatlicher förderfähiger Betrag,
 Total Eligible HRA Exemption,Insgesamt berechtigte HRA-Befreiung,
 Validating Employee Attendance...,Überprüfung der Mitarbeiterbeteiligung ...,
-Submitting Salary Slips and creating Journal Entry...,Einreichen von Gehaltsabrechnungen und Erstellen eines Journaleintrags ...,
+Submitting Salary Slips and creating Journal Entry...,Gehaltsabrechnungen werden gebucht und Buchungssätze erstellt...,
 Calculate Payroll Working Days Based On,Berechnen Sie die Arbeitstage der Personalabrechnung basierend auf,
 Consider Unmarked Attendance As,Betrachten Sie die nicht markierte Teilnahme als,
 Fraction of Daily Salary for Half Day,Bruchteil des Tagesgehalts für einen halben Tag,
@@ -8967,12 +8982,12 @@
 "If blank, parent Warehouse Account or company default will be considered in transactions","Wenn leer, wird das übergeordnete Lagerkonto oder der Firmenstandard bei Transaktionen berücksichtigt",
 Service Level Agreement Details,Details zum Service Level Agreement,
 Service Level Agreement Status,Status des Service Level Agreements,
-On Hold Since,In der Warteschleife seit,
+On Hold Since,Auf Eis gelegt seit,
 Total Hold Time,Gesamte Haltezeit,
 Response Details,Antwortdetails,
 Average Response Time,Durchschnittliche Reaktionszeit,
 User Resolution Time,Benutzerauflösungszeit,
-SLA is on hold since {0},"SLA wird gehalten, da {0}",
+SLA is on hold since {0},"SLA ist seit {0} auf Eis gelegt",
 Pause SLA On Status,SLA On Status anhalten,
 Pause SLA On,SLA anhalten Ein,
 Greetings Section,Grüße Abschnitt,
@@ -9186,6 +9201,7 @@
 New Assets (This Year),Neue Vermögenswerte (dieses Jahr),
 Row #{}: Depreciation Posting Date should not be equal to Available for Use Date.,Zeile # {}: Das Buchungsdatum der Abschreibung sollte nicht dem Datum der Verfügbarkeit entsprechen.,
 Incorrect Date,Falsches Datum,
+Incorrect Payment Type,Falsche Zahlungsart,
 Invalid Gross Purchase Amount,Ungültiger Bruttokaufbetrag,
 There are active maintenance or repairs against the asset. You must complete all of them before cancelling the asset.,"Es gibt aktive Wartungs- oder Reparaturarbeiten am Vermögenswert. Sie müssen alle Schritte ausführen, bevor Sie das Asset stornieren können.",
 % Complete,% Komplett,
@@ -9208,7 +9224,7 @@
 Bank transaction creation error,Fehler beim Erstellen der Banküberweisung,
 Unit of Measurement,Maßeinheit,
 Fiscal Year {0} Does Not Exist,Geschäftsjahr {0} existiert nicht,
-Row # {0}: Returned Item {1} does not exist in {2} {3},Zeile # {0}: Zurückgegebenes Element {1} ist in {2} {3} nicht vorhanden,
+Row # {0}: Returned Item {1} does not exist in {2} {3},Zeile {0}: Zurückgegebenes Element {1} ist in {2} {3} nicht vorhanden,
 Valuation type charges can not be marked as Inclusive,Bewertungsgebühren können nicht als Inklusiv gekennzeichnet werden,
 You do not have permissions to {} items in a {}.,Sie haben keine Berechtigungen für {} Elemente in einem {}.,
 Insufficient Permissions,Nicht ausreichende Berechtigungen,
@@ -9219,7 +9235,7 @@
 The value {0} is already assigned to an existing Item {1}.,Der Wert {0} ist bereits einem vorhandenen Element {1} zugeordnet.,
 "To still proceed with editing this Attribute Value, enable {0} in Item Variant Settings.","Aktivieren Sie {0} in den Einstellungen für Elementvarianten, um mit der Bearbeitung dieses Attributwerts fortzufahren.",
 Edit Not Allowed,Bearbeiten nicht erlaubt,
-Row #{0}: Item {1} is already fully received in Purchase Order {2},Zeile # {0}: Artikel {1} ist bereits vollständig in der Bestellung {2} eingegangen.,
+Row #{0}: Item {1} is already fully received in Purchase Order {2},Zeile {0}: Artikel {1} ist bereits vollständig in der Bestellung {2} eingegangen.,
 You cannot create or cancel any accounting entries with in the closed Accounting Period {0},Sie können im abgeschlossenen Abrechnungszeitraum {0} keine Buchhaltungseinträge mit erstellen oder stornieren.,
 POS Invoice should have {} field checked.,Für die POS-Rechnung sollte das Feld {} aktiviert sein.,
 Invalid Item,Ungültiger Artikel,
@@ -9314,7 +9330,7 @@
 Operation {0} does not belong to the work order {1},Operation {0} gehört nicht zum Arbeitsauftrag {1},
 Print UOM after Quantity,UOM nach Menge drucken,
 Set default {0} account for perpetual inventory for non stock items,Legen Sie das Standardkonto {0} für die fortlaufende Bestandsaufnahme für nicht vorrätige Artikel fest,
-Row #{0}: Child Item should not be a Product Bundle. Please remove Item {1} and Save,Zeile # {0}: Untergeordnetes Element sollte kein Produktpaket sein. Bitte entfernen Sie Artikel {1} und speichern Sie,
+Row #{0}: Child Item should not be a Product Bundle. Please remove Item {1} and Save,Zeile {0}: Untergeordnetes Element sollte kein Produktpaket sein. Bitte entfernen Sie Artikel {1} und speichern Sie,
 Credit limit reached for customer {0},Kreditlimit für Kunde erreicht {0},
 Could not auto create Customer due to the following missing mandatory field(s):,Der Kunde konnte aufgrund der folgenden fehlenden Pflichtfelder nicht automatisch erstellt werden:,
 Please create Customer from Lead {0}.,Bitte erstellen Sie einen Kunden aus Lead {0}.,
@@ -9326,7 +9342,7 @@
 From date can not be less than employee's joining date.,Ab dem Datum darf das Beitrittsdatum des Mitarbeiters nicht unterschritten werden.,
 To date can not be greater than employee's relieving date.,Bisher kann das Entlastungsdatum des Mitarbeiters nicht überschritten werden.,
 Payroll date can not be greater than employee's relieving date.,Das Abrechnungsdatum darf nicht größer sein als das Entlastungsdatum des Mitarbeiters.,
-Row #{0}: Please enter the result value for {1},Zeile # {0}: Bitte geben Sie den Ergebniswert für {1} ein,
+Row #{0}: Please enter the result value for {1},Zeile {0}: Bitte geben Sie den Ergebniswert für {1} ein,
 Mandatory Results,Obligatorische Ergebnisse,
 Sales Invoice or Patient Encounter is required to create Lab Tests,Für die Erstellung von Labortests ist eine Ausgangsrechnung oder eine Patientenbegegnung erforderlich,
 Insufficient Data,Unzureichende Daten,
@@ -9334,12 +9350,12 @@
 Test :,Prüfung :,
 Sample Collection {0} has been created,Die Probensammlung {0} wurde erstellt,
 Normal Range: ,Normalbereich:,
-Row #{0}: Check Out datetime cannot be less than Check In datetime,Zeile # {0}: Die Check-out-Datumszeit darf nicht kleiner als die Check-In-Datumszeit sein,
+Row #{0}: Check Out datetime cannot be less than Check In datetime,Zeile {0}: Die Check-out-Datumszeit darf nicht kleiner als die Check-In-Datumszeit sein,
 "Missing required details, did not create Inpatient Record","Fehlende erforderliche Details, keine stationäre Aufzeichnung erstellt",
 Unbilled Invoices,Nicht in Rechnung gestellte Rechnungen,
 Standard Selling Rate should be greater than zero.,Die Standardverkaufsrate sollte größer als Null sein.,
 Conversion Factor is mandatory,Der Umrechnungsfaktor ist obligatorisch,
-Row #{0}: Conversion Factor is mandatory,Zeile # {0}: Der Umrechnungsfaktor ist obligatorisch,
+Row #{0}: Conversion Factor is mandatory,Zeile {0}: Der Umrechnungsfaktor ist obligatorisch,
 Sample Quantity cannot be negative or 0,Die Probenmenge darf nicht negativ oder 0 sein,
 Invalid Quantity,Ungültige Menge,
 "Please set defaults for Customer Group, Territory and Selling Price List in Selling Settings","Bitte legen Sie in den Verkaufseinstellungen die Standardeinstellungen für Kundengruppe, Gebiet und Verkaufspreisliste fest",
@@ -9531,7 +9547,7 @@
 Payment amount cannot be less than or equal to 0,Der Zahlungsbetrag darf nicht kleiner oder gleich 0 sein,
 Please enter the phone number first,Bitte geben Sie zuerst die Telefonnummer ein,
 Row #{}: {} {} does not exist.,Zeile # {}: {} {} existiert nicht.,
-Row #{0}: {1} is required to create the Opening {2} Invoices,"Zeile # {0}: {1} ist erforderlich, um die Eröffnungsrechnungen {2} zu erstellen",
+Row #{0}: {1} is required to create the Opening {2} Invoices,"Zeile {0}: {1} ist erforderlich, um die Eröffnungsrechnungen {2} zu erstellen",
 You had {} errors while creating opening invoices. Check {} for more details,Beim Erstellen von Eröffnungsrechnungen sind {} Fehler aufgetreten. Überprüfen Sie {} auf weitere Details,
 Error Occured,Fehler aufgetreten,
 Opening Invoice Creation In Progress,Öffnen der Rechnungserstellung läuft,
@@ -9543,7 +9559,7 @@
 Posting future stock transactions are not allowed due to Immutable Ledger,Das Buchen zukünftiger Lagertransaktionen ist aufgrund des unveränderlichen Hauptbuchs nicht zulässig,
 A BOM with name {0} already exists for item {1}.,Für Artikel {1} ist bereits eine Stückliste mit dem Namen {0} vorhanden.,
 {0}{1} Did you rename the item? Please contact Administrator / Tech support,{0} {1} Haben Sie den Artikel umbenannt? Bitte wenden Sie sich an den Administrator / technischen Support,
-At row #{0}: the sequence id {1} cannot be less than previous row sequence id {2},In Zeile # {0}: Die Sequenz-ID {1} darf nicht kleiner sein als die vorherige Zeilen-Sequenz-ID {2}.,
+At row #{0}: the sequence id {1} cannot be less than previous row sequence id {2},In Zeile {0}: Die Sequenz-ID {1} darf nicht kleiner sein als die vorherige Zeilen-Sequenz-ID {2}.,
 The {0} ({1}) must be equal to {2} ({3}),Die {0} ({1}) muss gleich {2} ({3}) sein.,
 "{0}, complete the operation {1} before the operation {2}.","{0}, schließen Sie die Operation {1} vor der Operation {2} ab.",
 Cannot ensure delivery by Serial No as Item {0} is added with and without Ensure Delivery by Serial No.,"Die Lieferung per Seriennummer kann nicht sichergestellt werden, da Artikel {0} mit und ohne Lieferung per Seriennummer hinzugefügt wird.",
diff --git a/erpnext/translations/vi.csv b/erpnext/translations/vi.csv
index 23290a1..e376137 100644
--- a/erpnext/translations/vi.csv
+++ b/erpnext/translations/vi.csv
@@ -100,7 +100,7 @@
 Activity Cost exists for Employee {0} against Activity Type - {1},Chi phí hoạt động tồn tại cho Nhân viên {0} đối với Kiểu công việc - {1},
 Activity Cost per Employee,Chi phí hoạt động cho một nhân viên,
 Activity Type,Loại hoạt động,
-Actual Cost,Gia thật,
+Actual Cost,Giá thật,
 Actual Delivery Date,Ngày giao hàng thực tế,
 Actual Qty,Số lượng thực tế,
 Actual Qty is mandatory,Số lượng thực tế là bắt buộc,
@@ -727,14 +727,14 @@
 Current invoice {0} is missing,Hóa đơn hiện tại {0} bị thiếu,
 Custom HTML,Tuỳ chỉnh HTML,
 Custom?,Tùy chỉnh?,
-Customer,khách hàng,
+Customer,Khách Hàng,
 Customer Addresses And Contacts,Địa chỉ Khách hàng Và Liên hệ,
 Customer Contact,Liên hệ Khách hàng,
 Customer Database.,Cơ sở dữ liệu khách hàng.,
 Customer Group,Nhóm khách hàng,
 Customer LPO,Khách hàng LPO,
 Customer LPO No.,Số LPO của khách hàng,
-Customer Name,tên khách hàng,
+Customer Name,Tên khách hàng,
 Customer POS Id,POS ID Khách hàng,
 Customer Service,Dịch vụ chăm sóc khách hàng,
 Customer and Supplier,Khách hàng và nhà cung cấp,
@@ -743,7 +743,7 @@
 Customer required for 'Customerwise Discount',"Khách hàng phải có cho 'Giảm giá phù hợp KH """,
 Customer {0} does not belong to project {1},Khách hàng {0} không thuộc về dự án {1},
 Customer {0} is created.,Đã tạo {0} khách hàng.,
-Customers in Queue,Khách hàng ở Queue,
+Customers in Queue,Khách hàng trong hàng đợi,
 Customize Homepage Sections,Tùy chỉnh phần Trang chủ,
 Customizing Forms,Các hình thức tùy biến,
 Daily Project Summary for {0},Tóm tắt dự án hàng ngày cho {0},
@@ -3641,7 +3641,7 @@
 Close,Đóng,
 Communication,Liên lạc,
 Compact Item Print,Nhỏ gọn mục Print,
-Company,Giỏ hàng Giá liệt kê,
+Company,Công ty,
 Company of asset {0} and purchase document {1} doesn't matches.,Công ty tài sản {0} và tài liệu mua hàng {1} không khớp.,
 Compare BOMs for changes in Raw Materials and Operations,So sánh các BOM cho những thay đổi trong Nguyên liệu thô và Hoạt động,
 Compare List function takes on list arguments,Chức năng So sánh Danh sách đảm nhận đối số danh sách,
@@ -7589,7 +7589,7 @@
 Contribution to Net Total,Đóng góp cho tổng số,
 Selling Settings,thiết lập thông số bán hàng,
 Settings for Selling Module,Thiết lập module bán hàng,
-Customer Naming By,đặt tên khách hàng theo,
+Customer Naming By,Đặt tên khách hàng theo,
 Campaign Naming By,Đặt tên chiến dịch theo,
 Default Customer Group,Nhóm khách hàng mặc định,
 Default Territory,Địa bàn mặc định,
@@ -7617,7 +7617,7 @@
 Customerwise Discount,Giảm giá 1 cách thông minh,
 Itemwise Discount,Mẫu hàng thông minh giảm giá,
 Customer or Item,Khách hàng hoặc mục,
-Customer / Item Name,Khách hàng / tên hàng hóa,
+Customer / Item Name,Khách hàng / Tên hàng hóa,
 Authorized Value,Giá trị được ủy quyền,
 Applicable To (Role),Để áp dụng (Role),
 Applicable To (Employee),Để áp dụng (nhân viên),
@@ -7686,8 +7686,8 @@
 To Currency,Tới tiền tệ,
 For Buying,Để mua,
 For Selling,Để bán,
-Customer Group Name,Tên Nhóm khách hàng,
-Parent Customer Group,Nhóm mẹ của nhóm khách hàng,
+Customer Group Name,Tên Nhóm Khách Hàng,
+Parent Customer Group,Nhóm cha của nhóm khách hàng,
 Only leaf nodes are allowed in transaction,Chỉ các nút lá được cho phép trong giao dịch,
 Mention if non-standard receivable account applicable,Đề cập đến nếu tài khoản phải thu phi tiêu chuẩn áp dụng,
 Credit Limits,Hạn mức tín dụng,
@@ -9065,7 +9065,7 @@
 From Posting Date,Từ ngày đăng,
 To Posting Date,Đến ngày đăng,
 No records found,Không có dữ liệu được tìm thấy,
-Customer/Lead Name,Tên khách hàng / khách hàng tiềm năng,
+Customer/Lead Name,Tên khách hàng / Khách hàng tiềm năng,
 Unmarked Days,Ngày không đánh dấu,
 Jan,tháng một,
 Feb,Tháng hai,
