Merge branch 'develop' of https://github.com/frappe/erpnext into opening_entry
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 ae84154..d977261 100644
--- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js
+++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js
@@ -18,6 +18,10 @@
 	},
 
 	onload: function (frm) {
+		// Set default filter dates
+		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');
 	},
 
@@ -32,6 +36,7 @@
 	},
 
 	refresh: function (frm) {
+		frm.disable_save();
 		frappe.require("bank-reconciliation-tool.bundle.js", () =>
 			frm.trigger("make_reconciliation_tool")
 		);
@@ -72,10 +77,12 @@
 				},
 			})
 		});
-	},
 
-	after_save: function (frm) {
-		frm.trigger("make_reconciliation_tool");
+		frm.add_custom_button(__('Get Unreconciled Entries'), function() {
+			frm.trigger("make_reconciliation_tool");
+		});
+		frm.change_custom_button_type('Get Unreconciled Entries', null, 'primary');
+
 	},
 
 	bank_account: function (frm) {
@@ -89,7 +96,7 @@
 					r.account,
 					"account_currency",
 					(r) => {
-						frm.currency = r.account_currency;
+						frm.doc.account_currency = r.account_currency;
 						frm.trigger("render_chart");
 					}
 				);
@@ -162,9 +169,9 @@
 					"reconciliation_tool_cards"
 				).$wrapper,
 				bank_statement_closing_balance:
-					frm.doc.bank_statement_closing_balance,
+				frm.doc.bank_statement_closing_balance,
 				cleared_balance: frm.cleared_balance,
-				currency: frm.currency,
+				currency: frm.doc.account_currency,
 			}
 		);
 	},
diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json
index 80993d6..93fc443 100644
--- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json
+++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json
@@ -14,6 +14,7 @@
   "to_reference_date",
   "filter_by_reference_date",
   "column_break_2",
+  "account_currency",
   "account_opening_balance",
   "bank_statement_closing_balance",
   "section_break_1",
@@ -59,7 +60,7 @@
    "fieldname": "account_opening_balance",
    "fieldtype": "Currency",
    "label": "Account Opening Balance",
-   "options": "Currency",
+   "options": "account_currency",
    "read_only": 1
   },
   {
@@ -67,7 +68,7 @@
    "fieldname": "bank_statement_closing_balance",
    "fieldtype": "Currency",
    "label": "Closing Balance",
-   "options": "Currency"
+   "options": "account_currency"
   },
   {
    "fieldname": "section_break_1",
@@ -104,13 +105,20 @@
    "fieldname": "filter_by_reference_date",
    "fieldtype": "Check",
    "label": "Filter by Reference Date"
+  },
+  {
+   "fieldname": "account_currency",
+   "fieldtype": "Link",
+   "hidden": 1,
+   "label": "Account Currency",
+   "options": "Currency"
   }
  ],
  "hide_toolbar": 1,
  "index_web_pages_for_search": 1,
  "issingle": 1,
  "links": [],
- "modified": "2023-01-13 13:00:02.022919",
+ "modified": "2023-03-07 11:02:24.535714",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Bank Reconciliation Tool",
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js
index 56b8579..cced375 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js
@@ -112,7 +112,8 @@
 				party_type: "Customer",
 				account: this.frm.doc.debit_to,
 				price_list: this.frm.doc.selling_price_list,
-				pos_profile: pos_profile
+				pos_profile: pos_profile,
+				company_address: this.frm.doc.company_address
 			}, () => {
 				this.apply_pricing_rule();
 			});
diff --git a/erpnext/accounts/report/tax_detail/__init__.py b/erpnext/accounts/report/tax_detail/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/accounts/report/tax_detail/__init__.py
+++ /dev/null
diff --git a/erpnext/accounts/report/tax_detail/tax_detail.js b/erpnext/accounts/report/tax_detail/tax_detail.js
deleted file mode 100644
index ed6fac4..0000000
--- a/erpnext/accounts/report/tax_detail/tax_detail.js
+++ /dev/null
@@ -1,451 +0,0 @@
-// Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-// Contributed by Case Solved and sponsored by Nulight Studios
-/* eslint-disable */
-
-frappe.provide('frappe.query_reports');
-
-frappe.query_reports["Tax Detail"] = {
-	filters: [
-		{
-			fieldname: "company",
-			label: __("Company"),
-			fieldtype: "Link",
-			options: "Company",
-			default: frappe.defaults.get_user_default("company"),
-			reqd: 1
-		},
-		{
-			fieldname: "from_date",
-			label: __("From Date"),
-			fieldtype: "Date",
-			default: frappe.datetime.month_start(frappe.datetime.get_today()),
-			reqd: 1,
-			width: "60px"
-		},
-		{
-			fieldname: "to_date",
-			label: __("To Date"),
-			fieldtype: "Date",
-			default: frappe.datetime.month_end(frappe.datetime.get_today()),
-			reqd: 1,
-			width: "60px"
-		},
-		{
-			fieldname: "report_name",
-			label: __("Report Name"),
-			fieldtype: "Read Only",
-			default: frappe.query_report.report_name,
-			hidden: 1,
-			reqd: 1
-		},
-		{
-			fieldname: "mode",
-			label: __("Mode"),
-			fieldtype: "Read Only",
-			default: "edit",
-			hidden: 1,
-			reqd: 1
-		}
-	],
-	onload: function onload(report) {
-		// Remove Add Column and Save from menu
-		report.page.add_inner_button(__("New Report"), () => new_report(), __("Custom Report"));
-		report.page.add_inner_button(__("Load Report"), () => load_report(), __("Custom Report"));
-		hide_filters(report);
-	}
-};
-
-function hide_filters(report) {
-	report.page.page_form[0].querySelectorAll('.form-group.frappe-control').forEach(function setHidden(field) {
-		if (field.dataset.fieldtype == "Read Only") {
-			field.classList.add("hidden");
-		}
-	});
-}
-
-erpnext.TaxDetail = class TaxDetail {
-	constructor() {
-		this.patch();
-		this.load_report();
-	}
-	// Monkey patch the QueryReport class
-	patch() {
-		this.qr = frappe.query_report;
-		this.super = {
-			refresh_report: this.qr.refresh_report,
-			show_footer_message: this.qr.show_footer_message
-		}
-		this.qr.refresh_report = () => this.refresh_report();
-		this.qr.show_footer_message = () => this.show_footer_message();
-	}
-	show_footer_message() {
-		// The last thing to run after datatable_render in refresh()
-		this.super.show_footer_message.apply(this.qr);
-		if (this.qr.report_name !== 'Tax Detail') {
-			this.show_help();
-			if (this.loading) {
-				this.set_section('');
-			} else {
-				this.reload_component('');
-			}
-		}
-		this.loading = false;
-	}
-	refresh_report() {
-		// Infrequent report build (onload), load filters & data
-		// super function runs a refresh() serially
-		// already run within frappe.run_serially
-		this.loading = true;
-		this.super.refresh_report.apply(this.qr);
-		if (this.qr.report_name !== 'Tax Detail') {
-			frappe.call({
-				method: 'erpnext.accounts.report.tax_detail.tax_detail.get_custom_reports',
-				args: {name: this.qr.report_name}
-			}).then((r) => {
-				const data = JSON.parse(r.message[this.qr.report_name]['json']);
-				this.create_controls();
-				this.sections = data.sections || {};
-				this.controls['show_detail'].set_input(data.show_detail);
-			});
-		}
-	}
-	load_report() {
-		// One-off report build like titles, menu, etc
-		// Run when this object is created which happens in qr.load_report
-		this.qr.menu_items = this.get_menu_items();
-	}
-	get_menu_items() {
-		// Replace Save action
-		let new_items = [];
-		const save = __('Save');
-
-		for (let item of this.qr.menu_items) {
-			if (item.label === save) {
-				new_items.push({
-					label: save,
-					action: () => this.save_report(),
-					standard: false
-				});
-			} else {
-				new_items.push(item);
-			}
-		}
-		return new_items;
-	}
-	save_report() {
-		this.check_datatable();
-		if (this.qr.report_name !== 'Tax Detail') {
-			frappe.call({
-				method:'erpnext.accounts.report.tax_detail.tax_detail.save_custom_report',
-				args: {
-					reference_report: 'Tax Detail',
-					report_name: this.qr.report_name,
-					data: {
-						columns: this.qr.get_visible_columns(),
-						sections: this.sections,
-						show_detail: this.controls['show_detail'].get_input_value()
-					}
-				},
-				freeze: true
-			}).then((r) => {
-				this.set_section('');
-			});
-		}
-	}
-	check_datatable() {
-		if (!this.qr.datatable) {
-			frappe.throw(__('Please change the date range to load data first'));
-		}
-	}
-	set_section(name) {
-		// Sets the given section name and then reloads the data
-		if (name && !this.sections[name]) {
-			this.sections[name] = {};
-		}
-		let options = Object.keys(this.sections);
-		options.unshift('');
-		this.controls['section_name'].$wrapper.find("select").empty().add_options(options);
-		const org_mode = this.qr.get_filter_value('mode');
-		let refresh = false;
-		if (name) {
-			this.controls['section_name'].set_input(name);
-			this.qr.set_filter_value('mode', 'edit');
-			if (org_mode === 'run') {
-				refresh = true;
-			}
-		} else {
-			this.controls['section_name'].set_input('');
-			this.qr.set_filter_value('mode', 'run');
-			if (org_mode === 'edit') {
-				refresh = true;
-			}
-		}
-		if (refresh) {
-			this.qr.refresh();
-		}
-		this.reload_component('');
-	}
-	reload_component(component_name) {
-		const section_name = this.controls['section_name'].get_input_value();
-		if (section_name) {
-			const section = this.sections[section_name];
-			const component_names = Object.keys(section);
-			component_names.unshift('');
-			this.controls['component'].$wrapper.find("select").empty().add_options(component_names);
-			this.controls['component'].set_input(component_name);
-			if (component_name) {
-				this.controls['component_type'].set_input(section[component_name].type);
-			}
-		} else {
-			this.controls['component'].$wrapper.find("select").empty();
-			this.controls['component'].set_input('');
-		}
-		this.set_table_filters();
-	}
-	set_table_filters() {
-		let filters = {};
-		const section_name = this.controls['section_name'].get_input_value();
-		const component_name = this.controls['component'].get_input_value();
-		if (section_name && component_name) {
-			const component_type = this.sections[section_name][component_name].type;
-			if (component_type === 'filter') {
-				filters = this.sections[section_name][component_name]['filters'];
-			}
-		}
-		this.setAppliedFilters(filters);
-	}
-	setAppliedFilters(filters) {
-		if (this.qr.datatable) {
-			Array.from(this.qr.datatable.header.querySelectorAll('.dt-filter')).map(function setFilters(input) {
-				let idx = input.dataset.colIndex;
-				if (filters[idx]) {
-					input.value = filters[idx];
-				} else {
-					input.value = null;
-				}
-			});
-			this.qr.datatable.columnmanager.applyFilter(filters);
-		}
-	}
-	delete(name, type) {
-		if (type === 'section') {
-			delete this.sections[name];
-			const new_section = Object.keys(this.sections)[0] || '';
-			this.set_section(new_section);
-		}
-		if (type === 'component') {
-			const cur_section = this.controls['section_name'].get_input_value();
-			delete this.sections[cur_section][name];
-			this.reload_component('');
-		}
-	}
-	create_controls() {
-		let controls = {};
-		// SELECT in data.js
-		controls['section_name'] = this.qr.page.add_field({
-			label: __('Section'),
-			fieldtype: 'Select',
-			fieldname: 'section_name',
-			change: (e) => {
-				this.set_section(this.controls['section_name'].get_input_value());
-			}
-		});
-		// BUTTON in button.js
-		controls['new_section'] = this.qr.page.add_field({
-			label: __('New Section'),
-			fieldtype: 'Button',
-			fieldname: 'new_section',
-			click: () => {
-				frappe.prompt({
-					label: __('Section Name'),
-					fieldname: 'name',
-					fieldtype: 'Data'
-				}, (values) => {
-					this.set_section(values.name);
-				});
-			}
-		});
-		controls['delete_section'] = this.qr.page.add_field({
-			label: __('Delete Section'),
-			fieldtype: 'Button',
-			fieldname: 'delete_section',
-			click: () => {
-				let cur_section = this.controls['section_name'].get_input_value();
-				if (cur_section) {
-					frappe.confirm(__('Are you sure you want to delete section') + ' ' + cur_section + '?',
-					() => {this.delete(cur_section, 'section')});
-				}
-			}
-		});
-		controls['component'] = this.qr.page.add_field({
-			label: __('Component'),
-			fieldtype: 'Select',
-			fieldname: 'component',
-			change: (e) => {
-				this.reload_component(this.controls['component'].get_input_value());
-			}
-		});
-		controls['component_type'] = this.qr.page.add_field({
-			label: __('Component Type'),
-			fieldtype: 'Select',
-			fieldname: 'component_type',
-			default: 'filter',
-			options: [
-				{label: __('Filtered Row Subtotal'), value: 'filter'},
-				{label: __('Section Subtotal'), value: 'section'}
-			]
-		});
-		controls['add_component'] = this.qr.page.add_field({
-			label: __('Add Component'),
-			fieldtype: 'Button',
-			fieldname: 'add_component',
-			click: () => {
-				this.check_datatable();
-				let section_name = this.controls['section_name'].get_input_value();
-				if (section_name) {
-					const component_type = this.controls['component_type'].get_input_value();
-					let idx = 0;
-					const names = Object.keys(this.sections[section_name]);
-					if (names.length > 0) {
-						const idxs = names.map((key) => parseInt(key.match(/\d+$/)) || 0);
-						idx = Math.max(...idxs) + 1;
-					}
-					const filters = this.qr.datatable.columnmanager.getAppliedFilters();
-					if (component_type === 'filter') {
-						const name = 'Filter' + idx.toString();
-						let data = {
-							type: component_type,
-							filters: filters
-						}
-						this.sections[section_name][name] = data;
-						this.reload_component(name);
-					} else if (component_type === 'section') {
-						if (filters && Object.keys(filters).length !== 0) {
-							frappe.show_alert({
-								message: __('Column filters ignored'),
-								indicator: 'yellow'
-							});
-						}
-						let data = {
-							type: component_type
-						}
-						frappe.prompt({
-							label: __('Section'),
-							fieldname: 'section',
-							fieldtype: 'Select',
-							options: Object.keys(this.sections)
-						}, (values) => {
-							this.sections[section_name][values.section] = data;
-							this.reload_component(values.section);
-						});
-					} else {
-						frappe.throw(__('Please select the Component Type first'));
-					}
-				} else {
-					frappe.throw(__('Please select the Section first'));
-				}
-			}
-		});
-		controls['delete_component'] = this.qr.page.add_field({
-			label: __('Delete Component'),
-			fieldtype: 'Button',
-			fieldname: 'delete_component',
-			click: () => {
-				const component = this.controls['component'].get_input_value();
-				if (component) {
-					frappe.confirm(__('Are you sure you want to delete component') + ' ' + component + '?',
-					() => {this.delete(component, 'component')});
-				}
-			}
-		});
-		controls['save'] = this.qr.page.add_field({
-			label: __('Save & Run'),
-			fieldtype: 'Button',
-			fieldname: 'save',
-			click: () => {
-				this.save_report();
-			}
-		});
-		controls['show_detail'] = this.qr.page.add_field({
-			label: __('Show Detail'),
-			fieldtype: 'Check',
-			fieldname: 'show_detail',
-			default: 1
-		});
-		this.controls = controls;
-	}
-	show_help() {
-		const help = __('Your custom report is built from General Ledger Entries within the date range. You can add multiple sections to the report using the New Section button. Each component added to a section adds a subset of the data into the specified section. Beware of duplicated data rows. The Filtered Row component type saves the datatable column filters to specify the added data. The Section component type refers to the data in a previously defined section, but it cannot refer to its parent section. The Amount column is summed to give the section subtotal. Use the Show Detail box to see the data rows included in each section in the final report. Once finished, hit Save & Run. Report contributed by');
-		this.qr.$report_footer.append('<div class="col-md-12"><strong>' + __('Help') + `: </strong>${help}<a href="https://www.casesolved.co.uk"> Case Solved</a></div>`);
-	}
-}
-
-if (!window.taxdetail) {
-	window.taxdetail = new erpnext.TaxDetail();
-}
-
-function get_reports(cb) {
-	frappe.call({
-		method: 'erpnext.accounts.report.tax_detail.tax_detail.get_custom_reports',
-		freeze: true
-	}).then((r) => {
-		cb(r.message);
-	})
-}
-
-function new_report() {
-	const dialog = new frappe.ui.Dialog({
-		title: __('New Report'),
-		fields: [
-			{
-				fieldname: 'report_name',
-				label: __('Report Name'),
-				fieldtype: 'Data',
-				default: 'VAT Return'
-			}
-		],
-		primary_action_label: __('Create'),
-		primary_action: function new_report_pa(values) {
-			frappe.call({
-				method:'erpnext.accounts.report.tax_detail.tax_detail.save_custom_report',
-				args: {
-					reference_report: 'Tax Detail',
-					report_name: values.report_name,
-					data: {
-						columns: [],
-						sections: {},
-						show_detail: 1
-					}
-				},
-				freeze: true
-			}).then((r) => {
-				frappe.set_route('query-report', values.report_name);
-			});
-			dialog.hide();
-		}
-	});
-	dialog.show();
-}
-
-function load_report() {
-	get_reports(function load_report_cb(reports) {
-		const dialog = new frappe.ui.Dialog({
-			title: __('Load Report'),
-			fields: [
-				{
-					fieldname: 'report_name',
-					label: __('Report Name'),
-					fieldtype: 'Select',
-					options: Object.keys(reports)
-				}
-			],
-			primary_action_label: __('Load'),
-			primary_action: function load_report_pa(values) {
-				dialog.hide();
-				frappe.set_route('query-report', values.report_name);
-			}
-		});
-		dialog.show();
-	});
-}
diff --git a/erpnext/accounts/report/tax_detail/tax_detail.json b/erpnext/accounts/report/tax_detail/tax_detail.json
deleted file mode 100644
index d52ffd0..0000000
--- a/erpnext/accounts/report/tax_detail/tax_detail.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "add_total_row": 0,
- "columns": [],
- "creation": "2021-02-19 16:44:21.175113",
- "disable_prepared_report": 0,
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Report",
- "filters": [],
- "idx": 0,
- "is_standard": "Yes",
- "modified": "2021-02-19 16:44:21.175113",
- "modified_by": "Administrator",
- "module": "Accounts",
- "name": "Tax Detail",
- "owner": "Administrator",
- "prepared_report": 0,
- "ref_doctype": "GL Entry",
- "report_name": "Tax Detail",
- "report_type": "Script Report",
- "roles": [
-  {
-   "role": "Accounts User"
-  },
-  {
-   "role": "Accounts Manager"
-  },
-  {
-   "role": "Auditor"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/accounts/report/tax_detail/tax_detail.py b/erpnext/accounts/report/tax_detail/tax_detail.py
deleted file mode 100644
index ba733c2..0000000
--- a/erpnext/accounts/report/tax_detail/tax_detail.py
+++ /dev/null
@@ -1,325 +0,0 @@
-# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors
-# For license information, please see license.txt
-# Contributed by Case Solved and sponsored by Nulight Studios
-
-
-import json
-
-import frappe
-from frappe import _
-
-# NOTE: Payroll is implemented using Journal Entries which are included as GL Entries
-
-# field lists in multiple doctypes will be coalesced
-required_sql_fields = {
-	("GL Entry", 1): ["posting_date"],
-	("Account",): ["root_type", "account_type"],
-	("GL Entry", 2): ["account", "voucher_type", "voucher_no", "debit", "credit"],
-	("Purchase Invoice Item", "Sales Invoice Item"): [
-		"base_net_amount",
-		"item_tax_rate",
-		"item_tax_template",
-		"item_group",
-		"item_name",
-	],
-	("Purchase Invoice", "Sales Invoice"): ["taxes_and_charges", "tax_category"],
-}
-
-
-def execute(filters=None):
-	if not filters:
-		return [], []
-
-	fieldlist = required_sql_fields
-	fieldstr = get_fieldstr(fieldlist)
-
-	gl_entries = frappe.db.sql(
-		"""
-		select {fieldstr}
-		from `tabGL Entry` ge
-		inner join `tabAccount` a on
-			ge.account=a.name and ge.company=a.company
-		left join `tabSales Invoice` si on
-			ge.company=si.company and ge.voucher_type='Sales Invoice' and ge.voucher_no=si.name
-		left join `tabSales Invoice Item` sii on
-			a.root_type='Income' and si.name=sii.parent
-		left join `tabPurchase Invoice` pi on
-			ge.company=pi.company and ge.voucher_type='Purchase Invoice' and ge.voucher_no=pi.name
-		left join `tabPurchase Invoice Item` pii on
-			a.root_type='Expense' and pi.name=pii.parent
-		where
-			ge.company=%(company)s and
-			ge.posting_date>=%(from_date)s and
-			ge.posting_date<=%(to_date)s
-		order by ge.posting_date, ge.voucher_no
-		""".format(
-			fieldstr=fieldstr
-		),
-		filters,
-		as_dict=1,
-	)
-
-	report_data = modify_report_data(gl_entries)
-	summary = None
-	if filters["mode"] == "run" and filters["report_name"] != "Tax Detail":
-		report_data, summary = run_report(filters["report_name"], report_data)
-
-	# return columns, data, message, chart, report_summary
-	return get_columns(fieldlist), report_data, None, None, summary
-
-
-def run_report(report_name, data):
-	"Applies the sections and filters saved in the custom report"
-	report_config = json.loads(frappe.get_doc("Report", report_name).json)
-	# Columns indexed from 1 wrt colno
-	columns = report_config.get("columns")
-	sections = report_config.get("sections", {})
-	show_detail = report_config.get("show_detail", 1)
-	report = {}
-	new_data = []
-	summary = []
-	for section_name, section in sections.items():
-		report[section_name] = {"rows": [], "subtotal": 0.0}
-		for component_name, component in section.items():
-			if component["type"] == "filter":
-				for row in data:
-					matched = True
-					for colno, filter_string in component["filters"].items():
-						filter_field = columns[int(colno) - 1]["fieldname"]
-						if not filter_match(row[filter_field], filter_string):
-							matched = False
-							break
-					if matched:
-						report[section_name]["rows"] += [row]
-						report[section_name]["subtotal"] += row["amount"]
-			if component["type"] == "section":
-				if component_name == section_name:
-					frappe.throw(_("A report component cannot refer to its parent section") + ": " + section_name)
-				try:
-					report[section_name]["rows"] += report[component_name]["rows"]
-					report[section_name]["subtotal"] += report[component_name]["subtotal"]
-				except KeyError:
-					frappe.throw(
-						_("A report component can only refer to an earlier section") + ": " + section_name
-					)
-
-		if show_detail:
-			new_data += report[section_name]["rows"]
-		new_data += [{"voucher_no": section_name, "amount": report[section_name]["subtotal"]}]
-		summary += [
-			{"label": section_name, "datatype": "Currency", "value": report[section_name]["subtotal"]}
-		]
-		if show_detail:
-			new_data += [{}]
-	return new_data or data, summary or None
-
-
-def filter_match(value, string):
-	"Approximation to datatable filters"
-	import datetime
-
-	if string == "":
-		return True
-	if value is None:
-		value = -999999999999999
-	elif isinstance(value, datetime.date):
-		return True
-
-	if isinstance(value, str):
-		value = value.lower()
-		string = string.lower()
-		if string[0] == "<":
-			return True if string[1:].strip() else False
-		elif string[0] == ">":
-			return False if string[1:].strip() else True
-		elif string[0] == "=":
-			return string[1:] in value if string[1:] else False
-		elif string[0:2] == "!=":
-			return string[2:] not in value
-		elif len(string.split(":")) == 2:
-			pre, post = string.split(":")
-			return True if not pre.strip() and post.strip() in value else False
-		else:
-			return string in value
-	else:
-		if string[0] in ["<", ">", "="]:
-			operator = string[0]
-			if operator == "=":
-				operator = "=="
-			string = string[1:].strip()
-		elif string[0:2] == "!=":
-			operator = "!="
-			string = string[2:].strip()
-		elif len(string.split(":")) == 2:
-			pre, post = string.split(":")
-			try:
-				return True if float(pre) <= value and float(post) >= value else False
-			except ValueError:
-				return False if pre.strip() else True
-		else:
-			return string in str(value)
-
-	try:
-		num = float(string) if string.strip() else 0
-		return frappe.safe_eval(f"{value} {operator} {num}")
-	except ValueError:
-		if operator == "<":
-			return True
-		return False
-
-
-def abbrev(dt):
-	return "".join(l[0].lower() for l in dt.split(" ")) + "."
-
-
-def doclist(dt, dfs):
-	return [abbrev(dt) + f for f in dfs]
-
-
-def as_split(fields):
-	for field in fields:
-		split = field.split(" as ")
-		yield (split[0], split[1] if len(split) > 1 else split[0])
-
-
-def coalesce(doctypes, fields):
-	coalesce = []
-	for name, new_name in as_split(fields):
-		sharedfields = ", ".join(abbrev(dt) + name for dt in doctypes)
-		coalesce += [f"coalesce({sharedfields}) as {new_name}"]
-	return coalesce
-
-
-def get_fieldstr(fieldlist):
-	fields = []
-	for doctypes, docfields in fieldlist.items():
-		if len(doctypes) == 1 or isinstance(doctypes[1], int):
-			fields += doclist(doctypes[0], docfields)
-		else:
-			fields += coalesce(doctypes, docfields)
-	return ", ".join(fields)
-
-
-def get_columns(fieldlist):
-	columns = {}
-	for doctypes, docfields in fieldlist.items():
-		fieldmap = {name: new_name for name, new_name in as_split(docfields)}
-		for doctype in doctypes:
-			if isinstance(doctype, int):
-				break
-			meta = frappe.get_meta(doctype)
-			# get column field metadata from the db
-			fieldmeta = {}
-			for field in meta.get("fields"):
-				if field.fieldname in fieldmap.keys():
-					new_name = fieldmap[field.fieldname]
-					fieldmeta[new_name] = {
-						"label": _(field.label),
-						"fieldname": new_name,
-						"fieldtype": field.fieldtype,
-						"options": field.options,
-					}
-			# edit the columns to match the modified data
-			for field in fieldmap.values():
-				col = modify_report_columns(doctype, field, fieldmeta[field])
-				if col:
-					columns[col["fieldname"]] = col
-	# use of a dict ensures duplicate columns are removed
-	return list(columns.values())
-
-
-def modify_report_columns(doctype, field, column):
-	"Because data is rearranged into other columns"
-	if doctype in ["Sales Invoice Item", "Purchase Invoice Item"]:
-		if field in ["item_tax_rate", "base_net_amount"]:
-			return None
-
-	if doctype == "GL Entry":
-		if field in ["debit", "credit"]:
-			column.update({"label": _("Amount"), "fieldname": "amount"})
-		elif field == "voucher_type":
-			column.update({"fieldtype": "Data", "options": ""})
-
-	if field == "taxes_and_charges":
-		column.update({"label": _("Taxes and Charges Template")})
-	return column
-
-
-def modify_report_data(data):
-	import json
-
-	new_data = []
-	for line in data:
-		if line.debit:
-			line.amount = -line.debit
-		else:
-			line.amount = line.credit
-		# Remove Invoice GL Tax Entries and generate Tax entries from the invoice lines
-		if "Invoice" in line.voucher_type:
-			if line.account_type not in ("Tax", "Round Off"):
-				new_data += [line]
-				if line.item_tax_rate:
-					tax_rates = json.loads(line.item_tax_rate)
-					for account, rate in tax_rates.items():
-						tax_line = line.copy()
-						tax_line.account_type = "Tax"
-						tax_line.account = account
-						if line.voucher_type == "Sales Invoice":
-							line.amount = line.base_net_amount
-							tax_line.amount = line.base_net_amount * (rate / 100)
-						if line.voucher_type == "Purchase Invoice":
-							line.amount = -line.base_net_amount
-							tax_line.amount = -line.base_net_amount * (rate / 100)
-						new_data += [tax_line]
-		else:
-			new_data += [line]
-	return new_data
-
-
-# JS client utilities
-
-custom_report_dict = {
-	"ref_doctype": "GL Entry",
-	"report_type": "Custom Report",
-	"reference_report": "Tax Detail",
-}
-
-
-@frappe.whitelist()
-def get_custom_reports(name=None):
-	filters = custom_report_dict.copy()
-	if name:
-		filters["name"] = name
-	reports = frappe.get_list("Report", filters=filters, fields=["name", "json"], as_list=False)
-	reports_dict = {rep.pop("name"): rep for rep in reports}
-	# Prevent custom reports with the same name
-	reports_dict["Tax Detail"] = {"json": None}
-	return reports_dict
-
-
-@frappe.whitelist()
-def save_custom_report(reference_report, report_name, data):
-	if reference_report != "Tax Detail":
-		frappe.throw(_("The wrong report is referenced."))
-	if report_name == "Tax Detail":
-		frappe.throw(_("The parent report cannot be overwritten."))
-
-	doc = {
-		"doctype": "Report",
-		"report_name": report_name,
-		"is_standard": "No",
-		"module": "Accounts",
-		"json": data,
-	}
-	doc.update(custom_report_dict)
-
-	try:
-		newdoc = frappe.get_doc(doc)
-		newdoc.insert()
-		frappe.msgprint(_("Report created successfully"))
-	except frappe.exceptions.DuplicateEntryError:
-		dbdoc = frappe.get_doc("Report", report_name)
-		dbdoc.update(doc)
-		dbdoc.save()
-		frappe.msgprint(_("Report updated successfully"))
-	return report_name
diff --git a/erpnext/accounts/report/tax_detail/test_tax_detail.json b/erpnext/accounts/report/tax_detail/test_tax_detail.json
deleted file mode 100644
index e490316..0000000
--- a/erpnext/accounts/report/tax_detail/test_tax_detail.json
+++ /dev/null
@@ -1,840 +0,0 @@
-[
- {
-  "account_manager": null,
-  "accounts": [],
-  "companies": [],
-  "credit_limits": [],
-  "customer_details": null,
-  "customer_group": "All Customer Groups",
-  "customer_name": "_Test Customer",
-  "customer_pos_id": null,
-  "customer_primary_address": null,
-  "customer_primary_contact": null,
-  "customer_type": "Company",
-  "default_bank_account": null,
-  "default_commission_rate": 0.0,
-  "default_currency": null,
-  "default_price_list": null,
-  "default_sales_partner": null,
-  "disabled": 0,
-  "dn_required": 0,
-  "docstatus": 0,
-  "doctype": "Customer",
-  "email_id": null,
-  "gender": null,
-  "image": null,
-  "industry": null,
-  "is_frozen": 0,
-  "is_internal_customer": 0,
-  "language": "en",
-  "lead_name": null,
-  "loyalty_program": null,
-  "loyalty_program_tier": null,
-  "market_segment": null,
-  "mobile_no": null,
-  "modified": "2021-02-15 05:18:03.624724",
-  "name": "_Test Customer",
-  "naming_series": "CUST-.YYYY.-",
-  "pan": null,
-  "parent": null,
-  "parentfield": null,
-  "parenttype": null,
-  "payment_terms": null,
-  "primary_address": null,
-  "represents_company": "",
-  "sales_team": [],
-  "salutation": null,
-  "so_required": 0,
-  "tax_category": null,
-  "tax_id": null,
-  "tax_withholding_category": null,
-  "territory": "All Territories",
-  "website": null
- },{
-  "accounts": [],
-  "allow_purchase_invoice_creation_without_purchase_order": 0,
-  "allow_purchase_invoice_creation_without_purchase_receipt": 0,
-  "companies": [],
-  "country": "United Kingdom",
-  "default_bank_account": null,
-  "default_currency": null,
-  "default_price_list": null,
-  "disabled": 0,
-  "docstatus": 0,
-  "doctype": "Supplier",
-  "hold_type": "",
-  "image": null,
-  "is_frozen": 0,
-  "is_internal_supplier": 0,
-  "is_transporter": 0,
-  "language": "en",
-  "modified": "2021-03-31 16:47:10.109316",
-  "name": "_Test Supplier",
-  "naming_series": "SUP-.YYYY.-",
-  "on_hold": 0,
-  "pan": null,
-  "parent": null,
-  "parentfield": null,
-  "parenttype": null,
-  "payment_terms": null,
-  "prevent_pos": 0,
-  "prevent_rfqs": 0,
-  "release_date": null,
-  "represents_company": null,
-  "supplier_details": null,
-  "supplier_group": "Raw Material",
-  "supplier_name": "_Test Supplier",
-  "supplier_type": "Company",
-  "tax_category": null,
-  "tax_id": null,
-  "tax_withholding_category": null,
-  "warn_pos": 0,
-  "warn_rfqs": 0,
-  "website": null
- },{
-  "account_currency": "GBP",
-  "account_name": "Debtors",
-  "account_number": "",
-  "account_type": "Receivable",
-  "balance_must_be": "",
-  "company": "_T",
-  "disabled": 0,
-  "docstatus": 0,
-  "doctype": "Account",
-  "freeze_account": "No",
-  "include_in_gross": 0,
-  "inter_company_account": 0,
-  "is_group": 0,
-  "lft": 58,
-  "modified": "2021-03-26 04:44:19.955468",
-  "name": "Debtors - _T",
-  "old_parent": null,
-  "parent": null,
-  "parent_account": "Application of Funds (Assets) - _T",
-  "parentfield": null,
-  "parenttype": null,
-  "report_type": "Balance Sheet",
-  "rgt": 59,
-  "root_type": "Asset",
-  "tax_rate": 0.0
- },{
-  "account_currency": "GBP",
-  "account_name": "Sales",
-  "account_number": "",
-  "account_type": "Income Account",
-  "balance_must_be": "",
-  "company": "_T",
-  "disabled": 0,
-  "docstatus": 0,
-  "doctype": "Account",
-  "freeze_account": "No",
-  "include_in_gross": 0,
-  "inter_company_account": 0,
-  "is_group": 0,
-  "lft": 291,
-  "modified": "2021-03-26 04:50:21.697703",
-  "name": "Sales - _T",
-  "old_parent": null,
-  "parent": null,
-  "parent_account": "Income - _T",
-  "parentfield": null,
-  "parenttype": null,
-  "report_type": "Profit and Loss",
-  "rgt": 292,
-  "root_type": "Income",
-  "tax_rate": 0.0
- },{
-  "account_currency": "GBP",
-  "account_name": "VAT on Sales",
-  "account_number": "",
-  "account_type": "Tax",
-  "balance_must_be": "",
-  "company": "_T",
-  "disabled": 0,
-  "docstatus": 0,
-  "doctype": "Account",
-  "freeze_account": "No",
-  "include_in_gross": 0,
-  "inter_company_account": 0,
-  "is_group": 0,
-  "lft": 317,
-  "modified": "2021-03-26 04:50:21.697703",
-  "name": "VAT on Sales - _T",
-  "old_parent": null,
-  "parent": null,
-  "parent_account": "Source of Funds (Liabilities) - _T",
-  "parentfield": null,
-  "parenttype": null,
-  "report_type": "Balance Sheet",
-  "rgt": 318,
-  "root_type": "Liability",
-  "tax_rate": 0.0
- },{
-  "account_currency": "GBP",
-  "account_name": "Cost of Goods Sold",
-  "account_number": "",
-  "account_type": "Cost of Goods Sold",
-  "balance_must_be": "",
-  "company": "_T",
-  "disabled": 0,
-  "docstatus": 0,
-  "doctype": "Account",
-  "freeze_account": "No",
-  "include_in_gross": 0,
-  "inter_company_account": 0,
-  "is_group": 0,
-  "lft": 171,
-  "modified": "2021-03-26 04:44:19.994857",
-  "name": "Cost of Goods Sold - _T",
-  "old_parent": null,
-  "parent": null,
-  "parent_account": "Expenses - _T",
-  "parentfield": null,
-  "parenttype": null,
-  "report_type": "Profit and Loss",
-  "rgt": 172,
-  "root_type": "Expense",
-  "tax_rate": 0.0
- },{
-  "account_currency": "GBP",
-  "account_name": "VAT on Purchases",
-  "account_number": "",
-  "account_type": "Tax",
-  "balance_must_be": "",
-  "company": "_T",
-  "disabled": 0,
-  "docstatus": 0,
-  "doctype": "Account",
-  "freeze_account": "No",
-  "include_in_gross": 0,
-  "inter_company_account": 0,
-  "is_group": 0,
-  "lft": 80,
-  "modified": "2021-03-26 04:44:19.961983",
-  "name": "VAT on Purchases - _T",
-  "old_parent": null,
-  "parent": null,
-  "parent_account": "Application of Funds (Assets) - _T",
-  "parentfield": null,
-  "parenttype": null,
-  "report_type": "Balance Sheet",
-  "rgt": 81,
-  "root_type": "Asset",
-  "tax_rate": 0.0
- },{
-  "account_currency": "GBP",
-  "account_name": "Creditors",
-  "account_number": "",
-  "account_type": "Payable",
-  "balance_must_be": "",
-  "company": "_T",
-  "disabled": 0,
-  "docstatus": 0,
-  "doctype": "Account",
-  "freeze_account": "No",
-  "include_in_gross": 0,
-  "inter_company_account": 0,
-  "is_group": 0,
-  "lft": 302,
-  "modified": "2021-03-26 04:50:21.697703",
-  "name": "Creditors - _T",
-  "old_parent": null,
-  "parent": null,
-  "parent_account": "Source of Funds (Liabilities) - _T",
-  "parentfield": null,
-  "parenttype": null,
-  "report_type": "Balance Sheet",
-  "rgt": 303,
-  "root_type": "Liability",
-  "tax_rate": 0.0
- },{
-  "additional_discount_percentage": 0.0,
-  "address_display": null,
-  "adjust_advance_taxes": 0,
-  "advances": [],
-  "against_expense_account": "Cost of Goods Sold - _T",
-  "allocate_advances_automatically": 0,
-  "amended_from": null,
-  "apply_discount_on": "Grand Total",
-  "apply_tds": 0,
-  "auto_repeat": null,
-  "base_discount_amount": 0.0,
-  "base_grand_total": 511.68,
-  "base_in_words": "GBP Five Hundred And Eleven and Sixty Eight Pence only.",
-  "base_net_total": 426.4,
-  "base_paid_amount": 0.0,
-  "base_rounded_total": 511.68,
-  "base_rounding_adjustment": 0.0,
-  "base_taxes_and_charges_added": 85.28,
-  "base_taxes_and_charges_deducted": 0.0,
-  "base_total": 426.4,
-  "base_total_taxes_and_charges": 85.28,
-  "base_write_off_amount": 0.0,
-  "bill_date": null,
-  "bill_no": null,
-  "billing_address": null,
-  "billing_address_display": null,
-  "buying_price_list": "Standard Buying",
-  "cash_bank_account": null,
-  "clearance_date": null,
-  "company": "_T",
-  "contact_display": null,
-  "contact_email": null,
-  "contact_mobile": null,
-  "contact_person": null,
-  "conversion_rate": 1.0,
-  "cost_center": null,
-  "credit_to": "Creditors - _T",
-  "currency": "GBP",
-  "disable_rounded_total": 0,
-  "discount_amount": 0.0,
-  "docstatus": 0,
-  "doctype": "Purchase Invoice",
-  "due_date": null,
-  "from_date": null,
-  "grand_total": 511.68,
-  "group_same_items": 0,
-  "hold_comment": null,
-  "ignore_pricing_rule": 0,
-  "in_words": "GBP Five Hundred And Eleven and Sixty Eight Pence only.",
-  "inter_company_invoice_reference": null,
-  "is_internal_supplier": 0,
-  "is_opening": "No",
-  "is_paid": 0,
-  "is_return": 0,
-  "is_subcontracted": 0,
-  "items": [
-   {
-    "allow_zero_valuation_rate": 0,
-    "amount": 426.4,
-    "asset_category": null,
-    "asset_location": null,
-    "base_amount": 426.4,
-    "base_net_amount": 426.4,
-    "base_net_rate": 5.33,
-    "base_price_list_rate": 5.33,
-    "base_rate": 5.33,
-    "base_rate_with_margin": 0.0,
-    "batch_no": null,
-    "bom": null,
-    "brand": null,
-    "conversion_factor": 0.0,
-    "cost_center": "Main - _T",
-    "deferred_expense_account": null,
-    "description": "<div class=\"ql-editor read-mode\"><p>Fluid to make widgets</p></div>",
-    "discount_amount": 0.0,
-    "discount_percentage": 0.0,
-    "enable_deferred_expense": 0,
-    "expense_account": "Cost of Goods Sold - _T",
-    "from_warehouse": null,
-    "image": null,
-    "include_exploded_items": 0,
-    "is_fixed_asset": 0,
-    "is_free_item": 0,
-    "item_code": null,
-    "item_group": null,
-    "item_name": "Widget Fluid 1Litre",
-    "item_tax_amount": 0.0,
-    "item_tax_rate": "{\"VAT on Purchases - _T\": 20.0}",
-    "item_tax_template": null,
-    "landed_cost_voucher_amount": 0.0,
-    "manufacturer": null,
-    "manufacturer_part_no": null,
-    "margin_rate_or_amount": 0.0,
-    "margin_type": "",
-    "net_amount": 426.4,
-    "net_rate": 5.33,
-    "page_break": 0,
-    "parent": null,
-    "parentfield": "items",
-    "parenttype": "Purchase Invoice",
-    "po_detail": null,
-    "pr_detail": null,
-    "price_list_rate": 5.33,
-    "pricing_rules": null,
-    "project": null,
-    "purchase_invoice_item": null,
-    "purchase_order": null,
-    "purchase_receipt": null,
-    "qty": 80.0,
-    "quality_inspection": null,
-    "rate": 5.33,
-    "rate_with_margin": 0.0,
-    "received_qty": 0.0,
-    "rejected_qty": 0.0,
-    "rejected_serial_no": null,
-    "rejected_warehouse": null,
-    "rm_supp_cost": 0.0,
-    "sales_invoice_item": null,
-    "serial_no": null,
-    "service_end_date": null,
-    "service_start_date": null,
-    "service_stop_date": null,
-    "stock_qty": 0.0,
-    "stock_uom": "Nos",
-    "stock_uom_rate": 0.0,
-    "total_weight": 0.0,
-    "uom": "Nos",
-    "valuation_rate": 0.0,
-    "warehouse": null,
-    "weight_per_unit": 0.0,
-    "weight_uom": null
-   }
-  ],
-  "language": "en",
-  "letter_head": null,
-  "mode_of_payment": null,
-  "modified": "2021-04-03 03:33:09.180453",
-  "name": null,
-  "naming_series": "ACC-PINV-.YYYY.-",
-  "net_total": 426.4,
-  "on_hold": 0,
-  "other_charges_calculation": "<div class=\"tax-break-up\" style=\"overflow-x: auto;\">\n\t<table class=\"table table-bordered table-hover\">\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t<th class=\"text-left\">Item</th>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t<th class=\"text-right\">Taxable Amount</th>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t<th class=\"text-right\">VAT on Purchases</th>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Widget Fluid 1Litre</td>\n\t\t\t\t\t<td class='text-right'>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\u00a3 426.40\n\t\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t<td class='text-right'>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t(20.0%)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\u00a3 85.28\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t\t\t\n\t\t</tbody>\n\t</table>\n</div>",
-  "outstanding_amount": 511.68,
-  "paid_amount": 0.0,
-  "parent": null,
-  "parentfield": null,
-  "parenttype": null,
-  "party_account_currency": "GBP",
-  "payment_schedule": [],
-  "payment_terms_template": null,
-  "plc_conversion_rate": 1.0,
-  "posting_date": null,
-  "posting_time": "16:59:56.789522",
-  "price_list_currency": "GBP",
-  "pricing_rules": [],
-  "project": null,
-  "rejected_warehouse": null,
-  "release_date": null,
-  "remarks": "No Remarks",
-  "represents_company": null,
-  "return_against": null,
-  "rounded_total": 511.68,
-  "rounding_adjustment": 0.0,
-  "scan_barcode": null,
-  "select_print_heading": null,
-  "set_from_warehouse": null,
-  "set_posting_time": 0,
-  "set_warehouse": null,
-  "shipping_address": null,
-  "shipping_address_display": "",
-  "shipping_rule": null,
-  "status": "Unpaid",
-  "supplied_items": [],
-  "supplier": "_Test Supplier",
-  "supplier_address": null,
-  "supplier_name": "_Test Supplier",
-  "supplier_warehouse": "Stores - _T",
-  "tax_category": null,
-  "tax_id": null,
-  "tax_withholding_category": null,
-  "taxes": [
-   {
-    "account_head": "VAT on Purchases - _T",
-    "add_deduct_tax": "Add",
-    "base_tax_amount": 85.28,
-    "base_tax_amount_after_discount_amount": 85.28,
-    "base_total": 511.68,
-    "category": "Total",
-    "charge_type": "On Net Total",
-    "cost_center": "Main - _T",
-    "description": "VAT on Purchases",
-    "included_in_print_rate": 0,
-    "item_wise_tax_detail": "{\"Widget Fluid 1Litre\":[20.0,85.28]}",
-    "parent": null,
-    "parentfield": "taxes",
-    "parenttype": "Purchase Invoice",
-    "rate": 0.0,
-    "row_id": null,
-    "tax_amount": 85.28,
-    "tax_amount_after_discount_amount": 85.28,
-    "total": 511.68
-   }
-  ],
-  "taxes_and_charges": null,
-  "taxes_and_charges_added": 85.28,
-  "taxes_and_charges_deducted": 0.0,
-  "tc_name": null,
-  "terms": null,
-  "title": "_Purchase Invoice",
-  "to_date": null,
-  "total": 426.4,
-  "total_advance": 0.0,
-  "total_net_weight": 0.0,
-  "total_qty": 80.0,
-  "total_taxes_and_charges": 85.28,
-  "unrealized_profit_loss_account": null,
-  "update_stock": 0,
-  "write_off_account": null,
-  "write_off_amount": 0.0,
-  "write_off_cost_center": null
- },{
-  "account_for_change_amount": null,
-  "additional_discount_percentage": 0.0,
-  "address_display": null,
-  "advances": [],
-  "against_income_account": "Sales - _T",
-  "allocate_advances_automatically": 0,
-  "amended_from": null,
-  "apply_discount_on": "Grand Total",
-  "auto_repeat": null,
-  "base_change_amount": 0.0,
-  "base_discount_amount": 0.0,
-  "base_grand_total": 868.25,
-  "base_in_words": "GBP Eight Hundred And Sixty Eight and Twenty Five Pence only.",
-  "base_net_total": 825.0,
-  "base_paid_amount": 0.0,
-  "base_rounded_total": 868.25,
-  "base_rounding_adjustment": 0.0,
-  "base_total": 825.0,
-  "base_total_taxes_and_charges": 43.25,
-  "base_write_off_amount": 0.0,
-  "c_form_applicable": "No",
-  "c_form_no": null,
-  "campaign": null,
-  "cash_bank_account": null,
-  "change_amount": 0.0,
-  "commission_rate": 0.0,
-  "company": "_T",
-  "company_address": null,
-  "company_address_display": null,
-  "company_tax_id": null,
-  "contact_display": null,
-  "contact_email": null,
-  "contact_mobile": null,
-  "contact_person": null,
-  "conversion_rate": 1.0,
-  "cost_center": null,
-  "currency": "GBP",
-  "customer": "_Test Customer",
-  "customer_address": null,
-  "customer_group": "All Customer Groups",
-  "customer_name": "_Test Customer",
-  "debit_to": "Debtors - _T",
-  "discount_amount": 0.0,
-  "docstatus": 0,
-  "doctype": "Sales Invoice",
-  "due_date": null,
-  "from_date": null,
-  "grand_total": 868.25,
-  "group_same_items": 0,
-  "ignore_pricing_rule": 0,
-  "in_words": "GBP Eight Hundred And Sixty Eight and Twenty Five Pence only.",
-  "inter_company_invoice_reference": null,
-  "is_consolidated": 0,
-  "is_discounted": 0,
-  "is_internal_customer": 0,
-  "is_opening": "No",
-  "is_pos": 0,
-  "is_return": 0,
-  "items": [
-   {
-    "actual_batch_qty": 0.0,
-    "actual_qty": 0.0,
-    "allow_zero_valuation_rate": 0,
-    "amount": 200.0,
-    "asset": null,
-    "barcode": null,
-    "base_amount": 200.0,
-    "base_net_amount": 200.0,
-    "base_net_rate": 50.0,
-    "base_price_list_rate": 0.0,
-    "base_rate": 50.0,
-    "base_rate_with_margin": 0.0,
-    "batch_no": null,
-    "brand": null,
-    "conversion_factor": 1.0,
-    "cost_center": "Main - _T",
-    "customer_item_code": null,
-    "deferred_revenue_account": null,
-    "delivered_by_supplier": 0,
-    "delivered_qty": 0.0,
-    "delivery_note": null,
-    "description": "<div class=\"ql-editor read-mode\"><p>Used</p></div>",
-    "discount_amount": 0.0,
-    "discount_percentage": 0.0,
-    "dn_detail": null,
-    "enable_deferred_revenue": 0,
-    "expense_account": null,
-    "finance_book": null,
-    "image": null,
-    "income_account": "Sales - _T",
-    "incoming_rate": 0.0,
-    "is_fixed_asset": 0,
-    "is_free_item": 0,
-    "item_code": null,
-    "item_group": null,
-    "item_name": "Dunlop tyres",
-    "item_tax_rate": "{\"VAT on Sales - _T\": 20.0}",
-    "item_tax_template": null,
-    "margin_rate_or_amount": 0.0,
-    "margin_type": "",
-    "net_amount": 200.0,
-    "net_rate": 50.0,
-    "page_break": 0,
-    "parent": null,
-    "parentfield": "items",
-    "parenttype": "Sales Invoice",
-    "price_list_rate": 0.0,
-    "pricing_rules": null,
-    "project": null,
-    "qty": 4.0,
-    "quality_inspection": null,
-    "rate": 50.0,
-    "rate_with_margin": 0.0,
-    "sales_invoice_item": null,
-    "sales_order": null,
-    "serial_no": null,
-    "service_end_date": null,
-    "service_start_date": null,
-    "service_stop_date": null,
-    "so_detail": null,
-    "stock_qty": 4.0,
-    "stock_uom": "Nos",
-    "stock_uom_rate": 50.0,
-    "target_warehouse": null,
-    "total_weight": 0.0,
-    "uom": "Nos",
-    "warehouse": null,
-    "weight_per_unit": 0.0,
-    "weight_uom": null
-   },
-   {
-    "actual_batch_qty": 0.0,
-    "actual_qty": 0.0,
-    "allow_zero_valuation_rate": 0,
-    "amount": 65.0,
-    "asset": null,
-    "barcode": null,
-    "base_amount": 65.0,
-    "base_net_amount": 65.0,
-    "base_net_rate": 65.0,
-    "base_price_list_rate": 0.0,
-    "base_rate": 65.0,
-    "base_rate_with_margin": 0.0,
-    "batch_no": null,
-    "brand": null,
-    "conversion_factor": 1.0,
-    "cost_center": "Main - _T",
-    "customer_item_code": null,
-    "deferred_revenue_account": null,
-    "delivered_by_supplier": 0,
-    "delivered_qty": 0.0,
-    "delivery_note": null,
-    "description": "<div class=\"ql-editor read-mode\"><p>Used</p></div>",
-    "discount_amount": 0.0,
-    "discount_percentage": 0.0,
-    "dn_detail": null,
-    "enable_deferred_revenue": 0,
-    "expense_account": null,
-    "finance_book": null,
-    "image": null,
-    "income_account": "Sales - _T",
-    "incoming_rate": 0.0,
-    "is_fixed_asset": 0,
-    "is_free_item": 0,
-    "item_code": "",
-    "item_group": null,
-    "item_name": "Continental tyres",
-    "item_tax_rate": "{\"VAT on Sales - _T\": 5.0}",
-    "item_tax_template": null,
-    "margin_rate_or_amount": 0.0,
-    "margin_type": "",
-    "net_amount": 65.0,
-    "net_rate": 65.0,
-    "page_break": 0,
-    "parent": null,
-    "parentfield": "items",
-    "parenttype": "Sales Invoice",
-    "price_list_rate": 0.0,
-    "pricing_rules": null,
-    "project": null,
-    "qty": 1.0,
-    "quality_inspection": null,
-    "rate": 65.0,
-    "rate_with_margin": 0.0,
-    "sales_invoice_item": null,
-    "sales_order": null,
-    "serial_no": null,
-    "service_end_date": null,
-    "service_start_date": null,
-    "service_stop_date": null,
-    "so_detail": null,
-    "stock_qty": 1.0,
-    "stock_uom": null,
-    "stock_uom_rate": 65.0,
-    "target_warehouse": null,
-    "total_weight": 0.0,
-    "uom": "Nos",
-    "warehouse": null,
-    "weight_per_unit": 0.0,
-    "weight_uom": null
-   },
-   {
-    "actual_batch_qty": 0.0,
-    "actual_qty": 0.0,
-    "allow_zero_valuation_rate": 0,
-    "amount": 560.0,
-    "asset": null,
-    "barcode": null,
-    "base_amount": 560.0,
-    "base_net_amount": 560.0,
-    "base_net_rate": 70.0,
-    "base_price_list_rate": 0.0,
-    "base_rate": 70.0,
-    "base_rate_with_margin": 0.0,
-    "batch_no": null,
-    "brand": null,
-    "conversion_factor": 1.0,
-    "cost_center": "Main - _T",
-    "customer_item_code": null,
-    "deferred_revenue_account": null,
-    "delivered_by_supplier": 0,
-    "delivered_qty": 0.0,
-    "delivery_note": null,
-    "description": "<div class=\"ql-editor read-mode\"><p>New</p></div>",
-    "discount_amount": 0.0,
-    "discount_percentage": 0.0,
-    "dn_detail": null,
-    "enable_deferred_revenue": 0,
-    "expense_account": null,
-    "finance_book": null,
-    "image": null,
-    "income_account": "Sales - _T",
-    "incoming_rate": 0.0,
-    "is_fixed_asset": 0,
-    "is_free_item": 0,
-    "item_code": null,
-    "item_group": null,
-    "item_name": "Toyo tyres",
-    "item_tax_rate": "{\"VAT on Sales - _T\": 0.0}",
-    "item_tax_template": null,
-    "margin_rate_or_amount": 0.0,
-    "margin_type": "",
-    "net_amount": 560.0,
-    "net_rate": 70.0,
-    "page_break": 0,
-    "parent": null,
-    "parentfield": "items",
-    "parenttype": "Sales Invoice",
-    "price_list_rate": 0.0,
-    "pricing_rules": null,
-    "project": null,
-    "qty": 8.0,
-    "quality_inspection": null,
-    "rate": 70.0,
-    "rate_with_margin": 0.0,
-    "sales_invoice_item": null,
-    "sales_order": null,
-    "serial_no": null,
-    "service_end_date": null,
-    "service_start_date": null,
-    "service_stop_date": null,
-    "so_detail": null,
-    "stock_qty": 8.0,
-    "stock_uom": null,
-    "stock_uom_rate": 70.0,
-    "target_warehouse": null,
-    "total_weight": 0.0,
-    "uom": "Nos",
-    "warehouse": null,
-    "weight_per_unit": 0.0,
-    "weight_uom": null
-   }
-  ],
-  "language": "en",
-  "letter_head": null,
-  "loyalty_amount": 0.0,
-  "loyalty_points": 0,
-  "loyalty_program": null,
-  "loyalty_redemption_account": null,
-  "loyalty_redemption_cost_center": null,
-  "modified": "2021-02-16 05:18:59.755144",
-  "name": null,
-  "naming_series": "ACC-SINV-.YYYY.-",
-  "net_total": 825.0,
-  "other_charges_calculation": "<div class=\"tax-break-up\" style=\"overflow-x: auto;\">\n\t<table class=\"table table-bordered table-hover\">\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t<th class=\"text-left\">Item</th>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t<th class=\"text-right\">Taxable Amount</th>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t<th class=\"text-right\">VAT on Sales</th>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Dunlop tyres</td>\n\t\t\t\t\t<td class='text-right'>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\u00a3 200.00\n\t\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t<td class='text-right'>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t(20.0%)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\u00a3 40.00\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Continental tyres</td>\n\t\t\t\t\t<td class='text-right'>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\u00a3 65.00\n\t\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t<td class='text-right'>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t(5.0%)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\u00a3 3.25\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Toyo tyres</td>\n\t\t\t\t\t<td class='text-right'>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\u00a3 560.00\n\t\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t<td class='text-right'>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t(0.0%)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\u00a3 0.00\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t\t\t\n\t\t</tbody>\n\t</table>\n</div>",
-  "outstanding_amount": 868.25,
-  "packed_items": [],
-  "paid_amount": 0.0,
-  "parent": null,
-  "parentfield": null,
-  "parenttype": null,
-  "party_account_currency": "GBP",
-  "payment_schedule": [],
-  "payment_terms_template": null,
-  "payments": [],
-  "plc_conversion_rate": 1.0,
-  "po_date": null,
-  "po_no": "",
-  "pos_profile": null,
-  "posting_date": null,
-  "posting_time": "5:19:02.994077",
-  "price_list_currency": "GBP",
-  "pricing_rules": [],
-  "project": null,
-  "redeem_loyalty_points": 0,
-  "remarks": "No Remarks",
-  "represents_company": "",
-  "return_against": null,
-  "rounded_total": 868.25,
-  "rounding_adjustment": 0.0,
-  "sales_partner": null,
-  "sales_team": [],
-  "scan_barcode": null,
-  "select_print_heading": null,
-  "selling_price_list": "Standard Selling",
-  "set_posting_time": 0,
-  "set_target_warehouse": null,
-  "set_warehouse": null,
-  "shipping_address": null,
-  "shipping_address_name": "",
-  "shipping_rule": null,
-  "source": null,
-  "status": "Overdue",
-  "tax_category": "",
-  "tax_id": null,
-  "taxes": [
-   {
-    "account_head": "VAT on Sales - _T",
-    "base_tax_amount": 43.25,
-    "base_tax_amount_after_discount_amount": 43.25,
-    "base_total": 868.25,
-    "charge_type": "On Net Total",
-    "cost_center": "Main - _T",
-    "description": "VAT on Sales",
-    "included_in_print_rate": 0,
-    "item_wise_tax_detail": "{\"Dunlop tyres\":[20.0,40.0],\"Continental tyres\":[5.0,3.25],\"Toyo tyres\":[0.0,0.0]}",
-    "parent": null,
-    "parentfield": "taxes",
-    "parenttype": "Sales Invoice",
-    "rate": 0.0,
-    "row_id": null,
-    "tax_amount": 43.25,
-    "tax_amount_after_discount_amount": 43.25,
-    "total": 868.25
-   }
-  ],
-  "taxes_and_charges": null,
-  "tc_name": null,
-  "terms": null,
-  "territory": "All Territories",
-  "timesheets": [],
-  "title": "_Sales Invoice",
-  "to_date": null,
-  "total": 825.0,
-  "total_advance": 0.0,
-  "total_billing_amount": 0.0,
-  "total_commission": 0.0,
-  "total_net_weight": 0.0,
-  "total_qty": 13.0,
-  "total_taxes_and_charges": 43.25,
-  "unrealized_profit_loss_account": null,
-  "update_billed_amount_in_sales_order": 0,
-  "update_stock": 0,
-  "write_off_account": null,
-  "write_off_amount": 0.0,
-  "write_off_cost_center": null,
-  "write_off_outstanding_amount_automatically": 0
- }
-]
diff --git a/erpnext/accounts/report/tax_detail/test_tax_detail.py b/erpnext/accounts/report/tax_detail/test_tax_detail.py
deleted file mode 100644
index 869f245..0000000
--- a/erpnext/accounts/report/tax_detail/test_tax_detail.py
+++ /dev/null
@@ -1,213 +0,0 @@
-import datetime
-import json
-import os
-import unittest
-
-import frappe
-from frappe.utils import (
-	add_to_date,
-	get_first_day,
-	get_last_day,
-	get_year_ending,
-	get_year_start,
-	getdate,
-)
-
-from .tax_detail import filter_match, save_custom_report
-
-
-class TestTaxDetail(unittest.TestCase):
-	def load_testdocs(self):
-		from erpnext.accounts.utils import FiscalYearError, get_fiscal_year
-
-		datapath, _ = os.path.splitext(os.path.realpath(__file__))
-		with open(datapath + ".json", "r") as fp:
-			docs = json.load(fp)
-
-		now = getdate()
-		self.from_date = get_first_day(now)
-		self.to_date = get_last_day(now)
-
-		try:
-			get_fiscal_year(now, company="_T")
-		except FiscalYearError:
-			docs = [
-				{
-					"companies": [
-						{
-							"company": "_T",
-							"parent": "_Test Fiscal",
-							"parentfield": "companies",
-							"parenttype": "Fiscal Year",
-						}
-					],
-					"doctype": "Fiscal Year",
-					"year": "_Test Fiscal",
-					"year_end_date": get_year_ending(now),
-					"year_start_date": get_year_start(now),
-				}
-			] + docs
-
-		docs = [
-			{
-				"abbr": "_T",
-				"company_name": "_T",
-				"country": "United Kingdom",
-				"default_currency": "GBP",
-				"doctype": "Company",
-				"name": "_T",
-			}
-		] + docs
-
-		for doc in docs:
-			try:
-				db_doc = frappe.get_doc(doc)
-				if "Invoice" in db_doc.doctype:
-					db_doc.due_date = add_to_date(now, days=1)
-					db_doc.insert()
-					# Create GL Entries:
-					db_doc.submit()
-				else:
-					db_doc.insert(ignore_if_duplicate=True)
-			except frappe.exceptions.DuplicateEntryError:
-				pass
-
-	def load_defcols(self):
-		self.company = frappe.get_doc("Company", "_T")
-		custom_report = frappe.get_doc("Report", "Tax Detail")
-		self.default_columns, _ = custom_report.run_query_report(
-			filters={
-				"from_date": "2021-03-01",
-				"to_date": "2021-03-31",
-				"company": self.company.name,
-				"mode": "run",
-				"report_name": "Tax Detail",
-			},
-			user=frappe.session.user,
-		)
-
-	def rm_testdocs(self):
-		"Remove the Company and all data"
-		from erpnext.setup.doctype.company.company import create_transaction_deletion_request
-
-		create_transaction_deletion_request(self.company.name)
-
-	def test_report(self):
-		self.load_testdocs()
-		self.load_defcols()
-		report_name = save_custom_report(
-			"Tax Detail",
-			"_Test Tax Detail",
-			json.dumps(
-				{
-					"columns": self.default_columns,
-					"sections": {
-						"Box1": {"Filter0": {"type": "filter", "filters": {"4": "VAT on Sales"}}},
-						"Box2": {"Filter0": {"type": "filter", "filters": {"4": "Acquisition"}}},
-						"Box3": {"Box1": {"type": "section"}, "Box2": {"type": "section"}},
-						"Box4": {"Filter0": {"type": "filter", "filters": {"4": "VAT on Purchases"}}},
-						"Box5": {"Box3": {"type": "section"}, "Box4": {"type": "section"}},
-						"Box6": {"Filter0": {"type": "filter", "filters": {"3": "!=Tax", "4": "Sales"}}},
-						"Box7": {"Filter0": {"type": "filter", "filters": {"2": "Expense", "3": "!=Tax"}}},
-						"Box8": {"Filter0": {"type": "filter", "filters": {"3": "!=Tax", "4": "Sales", "12": "EU"}}},
-						"Box9": {
-							"Filter0": {"type": "filter", "filters": {"2": "Expense", "3": "!=Tax", "12": "EU"}}
-						},
-					},
-					"show_detail": 1,
-				}
-			),
-		)
-		data = frappe.desk.query_report.run(
-			report_name,
-			filters={
-				"from_date": self.from_date,
-				"to_date": self.to_date,
-				"company": self.company.name,
-				"mode": "run",
-				"report_name": report_name,
-			},
-			user=frappe.session.user,
-		)
-
-		self.assertListEqual(data.get("columns"), self.default_columns)
-		expected = (
-			("Box1", 43.25),
-			("Box2", 0.0),
-			("Box3", 43.25),
-			("Box4", -85.28),
-			("Box5", -42.03),
-			("Box6", 825.0),
-			("Box7", -426.40),
-			("Box8", 0.0),
-			("Box9", 0.0),
-		)
-		exrow = iter(expected)
-		for row in data.get("result"):
-			if row.get("voucher_no") and not row.get("posting_date"):
-				label, value = next(exrow)
-				self.assertDictEqual(row, {"voucher_no": label, "amount": value})
-		self.assertListEqual(
-			data.get("report_summary"),
-			[{"label": label, "datatype": "Currency", "value": value} for label, value in expected],
-		)
-
-		self.rm_testdocs()
-
-	def test_filter_match(self):
-		# None - treated as -inf number except range
-		self.assertTrue(filter_match(None, "!="))
-		self.assertTrue(filter_match(None, "<"))
-		self.assertTrue(filter_match(None, "<jjj"))
-		self.assertTrue(filter_match(None, "  :  "))
-		self.assertTrue(filter_match(None, ":56"))
-		self.assertTrue(filter_match(None, ":de"))
-		self.assertFalse(filter_match(None, "3.4"))
-		self.assertFalse(filter_match(None, "="))
-		self.assertFalse(filter_match(None, "=3.4"))
-		self.assertFalse(filter_match(None, ">3.4"))
-		self.assertFalse(filter_match(None, "   <"))
-		self.assertFalse(filter_match(None, "ew"))
-		self.assertFalse(filter_match(None, " "))
-		self.assertFalse(filter_match(None, " f :"))
-
-		# Numbers
-		self.assertTrue(filter_match(3.4, "3.4"))
-		self.assertTrue(filter_match(3.4, ".4"))
-		self.assertTrue(filter_match(3.4, "3"))
-		self.assertTrue(filter_match(-3.4, "< -3"))
-		self.assertTrue(filter_match(-3.4, "> -4"))
-		self.assertTrue(filter_match(3.4, "= 3.4 "))
-		self.assertTrue(filter_match(3.4, "!=4.5"))
-		self.assertTrue(filter_match(3.4, " 3 : 4 "))
-		self.assertTrue(filter_match(0.0, "  :  "))
-		self.assertFalse(filter_match(3.4, "=4.5"))
-		self.assertFalse(filter_match(3.4, " = 3.4 "))
-		self.assertFalse(filter_match(3.4, "!=3.4"))
-		self.assertFalse(filter_match(3.4, ">6"))
-		self.assertFalse(filter_match(3.4, "<-4.5"))
-		self.assertFalse(filter_match(3.4, "4.5"))
-		self.assertFalse(filter_match(3.4, "5:9"))
-
-		# Strings
-		self.assertTrue(filter_match("ACC-SINV-2021-00001", "SINV"))
-		self.assertTrue(filter_match("ACC-SINV-2021-00001", "sinv"))
-		self.assertTrue(filter_match("ACC-SINV-2021-00001", "-2021"))
-		self.assertTrue(filter_match(" ACC-SINV-2021-00001", " acc"))
-		self.assertTrue(filter_match("ACC-SINV-2021-00001", "=2021"))
-		self.assertTrue(filter_match("ACC-SINV-2021-00001", "!=zz"))
-		self.assertTrue(filter_match("ACC-SINV-2021-00001", "<   zzz  "))
-		self.assertTrue(filter_match("ACC-SINV-2021-00001", "  :  sinv  "))
-		self.assertFalse(filter_match("ACC-SINV-2021-00001", "  sinv  :"))
-		self.assertFalse(filter_match("ACC-SINV-2021-00001", " acc"))
-		self.assertFalse(filter_match("ACC-SINV-2021-00001", "= 2021 "))
-		self.assertFalse(filter_match("ACC-SINV-2021-00001", "!=sinv"))
-		self.assertFalse(filter_match("ACC-SINV-2021-00001", " >"))
-		self.assertFalse(filter_match("ACC-SINV-2021-00001", ">aa"))
-		self.assertFalse(filter_match("ACC-SINV-2021-00001", " <"))
-		self.assertFalse(filter_match("ACC-SINV-2021-00001", "<   "))
-		self.assertFalse(filter_match("ACC-SINV-2021-00001", " ="))
-		self.assertFalse(filter_match("ACC-SINV-2021-00001", "="))
-
-		# Date - always match
-		self.assertTrue(filter_match(datetime.date(2021, 3, 19), " kdsjkldfs "))
diff --git a/erpnext/accounts/test/test_reports.py b/erpnext/accounts/test/test_reports.py
index 3f06c30..609f74e 100644
--- a/erpnext/accounts/test/test_reports.py
+++ b/erpnext/accounts/test/test_reports.py
@@ -30,10 +30,6 @@
 	("Sales Register", {}),
 	("Sales Register", {"item_group": "All Item Groups"}),
 	("Purchase Register", {}),
-	(
-		"Tax Detail",
-		{"mode": "run", "report_name": "Tax Detail"},
-	),
 ]
 
 OPTIONAL_FILTERS = {}
diff --git a/erpnext/accounts/workspace/accounting/accounting.json b/erpnext/accounts/workspace/accounting/accounting.json
index b0c1124..595efcd 100644
--- a/erpnext/accounts/workspace/accounting/accounting.json
+++ b/erpnext/accounts/workspace/accounting/accounting.json
@@ -13,6 +13,7 @@
  "hide_custom": 0,
  "icon": "accounting",
  "idx": 0,
+ "is_hidden": 0,
  "label": "Accounting",
  "links": [
   {
@@ -497,17 +498,6 @@
    "dependencies": "GL Entry",
    "hidden": 0,
    "is_query_report": 1,
-   "label": "Tax Detail",
-   "link_count": 0,
-   "link_to": "Tax Detail",
-   "link_type": "Report",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
-   "dependencies": "GL Entry",
-   "hidden": 0,
-   "is_query_report": 1,
    "label": "UAE VAT 201",
    "link_count": 0,
    "link_to": "UAE VAT 201",
@@ -517,18 +507,6 @@
    "type": "Link"
   },
   {
-   "dependencies": "GL Entry",
-   "hidden": 0,
-   "is_query_report": 1,
-   "label": "KSA VAT Report",
-   "link_count": 0,
-   "link_to": "KSA VAT",
-   "link_type": "Report",
-   "onboard": 0,
-   "only_for": "Saudi Arabia",
-   "type": "Link"
-  },
-  {
    "hidden": 0,
    "is_query_report": 0,
    "label": "Financial Statements",
@@ -1032,17 +1010,6 @@
   {
    "hidden": 0,
    "is_query_report": 0,
-   "label": "KSA VAT Setting",
-   "link_count": 0,
-   "link_to": "KSA VAT Setting",
-   "link_type": "DocType",
-   "onboard": 0,
-   "only_for": "Saudi Arabia",
-   "type": "Link"
-  },
-  {
-   "hidden": 0,
-   "is_query_report": 0,
    "label": "Profitability",
    "link_count": 0,
    "onboard": 0,
@@ -1093,7 +1060,7 @@
    "type": "Link"
   }
  ],
- "modified": "2022-06-24 05:41:09.236458",
+ "modified": "2023-02-23 15:32:12.135355",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Accounting",
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index 7927beb..4590f8c 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -113,7 +113,10 @@
 
 	def get_link(self):
 		# RFQ link for supplier portal
-		return get_url("/app/request-for-quotation/" + self.name)
+		route = frappe.db.get_value(
+			"Portal Menu Item", {"reference_doctype": "Request for Quotation"}, ["route"]
+		)
+		return get_url("/app/{0}/".format(route) + self.name)
 
 	def update_supplier_part_no(self, supplier):
 		self.vendor = supplier
diff --git a/erpnext/e_commerce/variant_selector/utils.py b/erpnext/e_commerce/variant_selector/utils.py
index df62c23..1a3e737 100644
--- a/erpnext/e_commerce/variant_selector/utils.py
+++ b/erpnext/e_commerce/variant_selector/utils.py
@@ -1,5 +1,5 @@
 import frappe
-from frappe.utils import cint
+from frappe.utils import cint, flt
 
 from erpnext.e_commerce.doctype.e_commerce_settings.e_commerce_settings import (
 	get_shopping_cart_settings,
@@ -166,6 +166,27 @@
 	else:
 		product_info = None
 
+	product_id = ""
+	website_warehouse = ""
+	if exact_match or filtered_items:
+		if exact_match and len(exact_match) == 1:
+			product_id = exact_match[0]
+		elif filtered_items_count == 1:
+			product_id = list(filtered_items)[0]
+
+	if product_id:
+		website_warehouse = frappe.get_cached_value(
+			"Website Item", {"item_code": product_id}, "website_warehouse"
+		)
+
+	available_qty = 0.0
+	if website_warehouse:
+		available_qty = flt(
+			frappe.db.get_value(
+				"Bin", {"item_code": product_id, "warehouse": website_warehouse}, "actual_qty"
+			)
+		)
+
 	return {
 		"next_attribute": next_attribute,
 		"valid_options_for_attributes": valid_options_for_attributes,
@@ -173,6 +194,7 @@
 		"filtered_items": filtered_items if filtered_items_count < 10 else [],
 		"exact_match": exact_match,
 		"product_info": product_info,
+		"available_qty": available_qty,
 	}
 
 
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index a76fb6b..0ef51a9 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -329,3 +329,4 @@
 erpnext.patches.v14_0.update_closing_balances
 # below migration patches should always run last
 erpnext.patches.v14_0.migrate_gl_to_payment_ledger
+execute:frappe.delete_doc_if_exists("Report", "Tax Detail")
diff --git a/erpnext/patches/v14_0/update_opportunity_currency_fields.py b/erpnext/patches/v14_0/update_opportunity_currency_fields.py
index b803e9f..af73691 100644
--- a/erpnext/patches/v14_0/update_opportunity_currency_fields.py
+++ b/erpnext/patches/v14_0/update_opportunity_currency_fields.py
@@ -7,6 +7,9 @@
 
 
 def execute():
+	frappe.reload_doc(
+		"accounts", "doctype", "currency_exchange_settings"
+	)  # get_exchange_rate depends on Currency Exchange Settings
 	frappe.reload_doctype("Opportunity")
 	opportunities = frappe.db.get_list(
 		"Opportunity",
diff --git a/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js b/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js
index 321b812..1271e38 100644
--- a/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js
+++ b/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js
@@ -391,14 +391,14 @@
 				fieldname: "deposit",
 				fieldtype: "Currency",
 				label: "Deposit",
-				options: "currency",
+				options: "account_currency",
 				read_only: 1,
 			},
 			{
 				fieldname: "withdrawal",
 				fieldtype: "Currency",
 				label: "Withdrawal",
-				options: "currency",
+				options: "account_currency",
 				read_only: 1,
 			},
 			{
@@ -416,18 +416,18 @@
 				fieldname: "allocated_amount",
 				fieldtype: "Currency",
 				label: "Allocated Amount",
-				options: "Currency",
+				options: "account_currency",
 				read_only: 1,
 			},
 			{
 				fieldname: "unallocated_amount",
 				fieldtype: "Currency",
 				label: "Unallocated Amount",
-				options: "Currency",
+				options: "account_currency",
 				read_only: 1,
 			},
 			{
-				fieldname: "currency",
+				fieldname: "account_currency",
 				fieldtype: "Link",
 				label: "Currency",
 				options: "Currency",
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index d1a55e6..8e57ebd 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -135,7 +135,7 @@
 				}
 				else {
 					// allow for '0' qty on Credit/Debit notes
-					let qty = item.qty || -1
+					let qty = item.qty || me.frm.doc.is_debit_note ? 1 : -1;
 					item.net_amount = item.amount = flt(item.rate * qty, precision("amount", item));
 				}
 
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 81ef44d..83fa472 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -304,6 +304,7 @@
 					fieldname: "alternative_items",
 					fieldtype: "Table",
 					cannot_add_rows: true,
+					cannot_delete_rows: true,
 					in_place_edit: true,
 					reqd: 1,
 					data: this.data,
@@ -330,7 +331,7 @@
 		dialog.fields_dict.info.$wrapper.html(
 			`<p class="small text-muted">
 				<span class="indicator yellow"></span>
-				Alternative Items
+				${__("Alternative Items")}
 			</p>`
 		)
 		dialog.show();
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.py b/erpnext/selling/page/point_of_sale/point_of_sale.py
index 158ac1d..657623d 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.py
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.py
@@ -55,7 +55,7 @@
 			)
 
 	item_stock_qty, is_stock_item = get_stock_availability(item_code, warehouse)
-	item_stock_qty = item_stock_qty // item.get("conversion_factor")
+	item_stock_qty = item_stock_qty // item.get("conversion_factor", 1)
 	item.update({"actual_qty": item_stock_qty})
 
 	price = frappe.get_list(
diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
index 916ab2a..1763269 100644
--- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
+++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
@@ -636,7 +636,8 @@
    "no_copy": 1,
    "options": "Sales Invoice",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "search_index": 1
   },
   {
    "fieldname": "so_detail",
@@ -837,7 +838,7 @@
  "index_web_pages_for_search": 1,
  "istable": 1,
  "links": [],
- "modified": "2022-11-09 12:17:50.850142",
+ "modified": "2023-03-20 14:24:10.406746",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Delivery Note Item",
diff --git a/erpnext/templates/generators/item/item_configure.js b/erpnext/templates/generators/item/item_configure.js
index 231ae05..613c967 100644
--- a/erpnext/templates/generators/item/item_configure.js
+++ b/erpnext/templates/generators/item/item_configure.js
@@ -186,14 +186,14 @@
 		this.dialog.$status_area.empty();
 	}
 
-	get_html_for_item_found({ filtered_items_count, filtered_items, exact_match, product_info }) {
+	get_html_for_item_found({ filtered_items_count, filtered_items, exact_match, product_info, available_qty, settings }) {
 		const one_item = exact_match.length === 1
 			? exact_match[0]
 			: filtered_items_count === 1
 				? filtered_items[0]
 				: '';
 
-		const item_add_to_cart = one_item ? `
+		let item_add_to_cart = one_item ? `
 			<button data-item-code="${one_item}"
 				class="btn btn-primary btn-add-to-cart w-100"
 				data-action="btn_add_to_cart"
@@ -218,6 +218,9 @@
 						? '(' + product_info.price.formatted_price_sales_uom + ')'
 						: ''
 					}
+
+					${available_qty === 0 ? '<span class="text-danger">(' + __('Out of Stock') + ')</span>' : ''}
+
 				</div></div>
 				<a href data-action="btn_clear_values" data-item-code="${one_item}">
 					${__('Clear Values')}
@@ -233,6 +236,10 @@
 			</div>`;
 		/* eslint-disable indent */
 
+		if (!product_info?.allow_items_not_in_stock && available_qty === 0) {
+			item_add_to_cart = '';
+		}
+
 		return `
 			${item_found_status}
 			${item_add_to_cart}
@@ -257,12 +264,15 @@
 
 	btn_clear_values() {
 		this.dialog.fields_list.forEach(f => {
-			f.df.options = f.df.options.map(option => {
-				option.disabled = false;
-				return option;
-			});
+			if (f.df?.options) {
+				f.df.options = f.df.options.map(option => {
+					option.disabled = false;
+					return option;
+				});
+			}
 		});
 		this.dialog.clear();
+		this.dialog.$status_area.empty();
 		this.on_attribute_selection();
 	}
 
diff --git a/erpnext/translations/af.csv b/erpnext/translations/af.csv
index 265e85c..f2458e3 100644
--- a/erpnext/translations/af.csv
+++ b/erpnext/translations/af.csv
@@ -3505,7 +3505,6 @@
 Reviews,resensies,
 Sender,sender,
 Shop,Winkel,
-Sign Up,Teken aan,
 Subsidiary,filiaal,
 There is some problem with the file url: {0},Daar is &#39;n probleem met die lêer url: {0},
 There were errors while sending email. Please try again.,Daar was foute tydens die stuur van e-pos. Probeer asseblief weer.,
diff --git a/erpnext/translations/am.csv b/erpnext/translations/am.csv
index d131404..d4db285 100644
--- a/erpnext/translations/am.csv
+++ b/erpnext/translations/am.csv
@@ -3505,7 +3505,6 @@
 Reviews,ግምገማዎች,
 Sender,የላኪ,
 Shop,ሱቅ,
-Sign Up,ክፈት,
 Subsidiary,ተጪማሪ,
 There is some problem with the file url: {0},ፋይል ዩ አር ኤል ጋር አንድ ችግር አለ: {0},
 There were errors while sending email. Please try again.,ኢሜይል በመላክ ላይ ሳለ ስህተቶች ነበሩ. እባክዎ ዳግም ይሞክሩ.,
diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv
index c0da1c4..ea2777f 100644
--- a/erpnext/translations/ar.csv
+++ b/erpnext/translations/ar.csv
@@ -3505,7 +3505,6 @@
 Reviews,التعليقات,
 Sender,مرسل,
 Shop,تسوق,
-Sign Up,سجل,
 Subsidiary,شركة فرعية,
 There is some problem with the file url: {0},هناك بعض المشاكل مع رابط الملف: {0},
 There were errors while sending email. Please try again.,كانت هناك أخطاء أثناء إرسال البريد الإلكتروني. يرجى المحاولة مرة أخرى.,
diff --git a/erpnext/translations/bg.csv b/erpnext/translations/bg.csv
index ac6dc78..6839129 100644
--- a/erpnext/translations/bg.csv
+++ b/erpnext/translations/bg.csv
@@ -3505,7 +3505,6 @@
 Reviews,Отзиви,
 Sender,Подател,
 Shop,Магазин,
-Sign Up,Регистрирай се,
 Subsidiary,Филиал,
 There is some problem with the file url: {0},Има някакъв проблем с адреса на файл: {0},
 There were errors while sending email. Please try again.,"Имаше грешки при изпращане на имейл. Моля, опитайте отново.",
diff --git a/erpnext/translations/bn.csv b/erpnext/translations/bn.csv
index 52f7b1c..a944d99 100644
--- a/erpnext/translations/bn.csv
+++ b/erpnext/translations/bn.csv
@@ -3505,7 +3505,6 @@
 Reviews,পর্যালোচনা,
 Sender,প্রেরকের,
 Shop,দোকান,
-Sign Up,নিবন্ধন করুন,
 Subsidiary,সহায়ক,
 There is some problem with the file url: {0},ফাইলের URL সঙ্গে কিছু সমস্যা আছে: {0},
 There were errors while sending email. Please try again.,ইমেইল পাঠানোর সময় কিছু সমস্যা হয়েছে. অনুগ্রহ করে আবার চেষ্টা করুন.,
diff --git a/erpnext/translations/bs.csv b/erpnext/translations/bs.csv
index 267434f..2d9c26d 100644
--- a/erpnext/translations/bs.csv
+++ b/erpnext/translations/bs.csv
@@ -3505,7 +3505,6 @@
 Reviews,Recenzije,
 Sender,Pošiljaoc,
 Shop,Prodavnica,
-Sign Up,Prijaviti se,
 Subsidiary,Podružnica,
 There is some problem with the file url: {0},Postoji neki problem sa URL datoteku: {0},
 There were errors while sending email. Please try again.,Bilo je grešaka tijekom slanja e-pošte. Molimo pokušajte ponovno .,
diff --git a/erpnext/translations/ca.csv b/erpnext/translations/ca.csv
index d8c2ef6..85c6285 100644
--- a/erpnext/translations/ca.csv
+++ b/erpnext/translations/ca.csv
@@ -3505,7 +3505,6 @@
 Reviews,Ressenyes,
 Sender,Remitent,
 Shop,Botiga,
-Sign Up,Registra&#39;t,
 Subsidiary,Filial,
 There is some problem with the file url: {0},Hi ha una mica de problema amb la url de l&#39;arxiu: {0},
 There were errors while sending email. Please try again.,"Hi ha hagut errors a l'enviar el correu electrònic. Si us plau, torna a intentar-ho.",
diff --git a/erpnext/translations/cs.csv b/erpnext/translations/cs.csv
index 7d570bb..3fb67e7 100644
--- a/erpnext/translations/cs.csv
+++ b/erpnext/translations/cs.csv
@@ -3505,7 +3505,6 @@
 Reviews,Recenze,
 Sender,Odesilatel,
 Shop,Obchod,
-Sign Up,Přihlásit se,
 Subsidiary,Dceřiný,
 There is some problem with the file url: {0},Tam je nějaký problém s URL souboru: {0},
 There were errors while sending email. Please try again.,Narazili jsme na problémy při odesílání emailu. Prosím zkuste to znovu.,
diff --git a/erpnext/translations/da.csv b/erpnext/translations/da.csv
index 16b2e87..f0654b9 100644
--- a/erpnext/translations/da.csv
+++ b/erpnext/translations/da.csv
@@ -3505,7 +3505,6 @@
 Reviews,Anmeldelser,
 Sender,Afsender,
 Shop,Butik,
-Sign Up,Tilmelde,
 Subsidiary,Datterselskab,
 There is some problem with the file url: {0},Der er nogle problemer med filen url: {0},
 There were errors while sending email. Please try again.,Der var fejl under afsendelse af e-mail. Prøv venligst igen.,
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv
index bec3ce2..9599eed 100644
--- a/erpnext/translations/de.csv
+++ b/erpnext/translations/de.csv
@@ -2012,30 +2012,27 @@
 Please login as another user to register on Marketplace,"Bitte melden Sie sich als anderer Benutzer an, um sich auf dem Marktplatz zu registrieren",
 Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone.,"Bitte sicher stellen, dass wirklich alle Transaktionen dieses Unternehmens gelöscht werden sollen. Die Stammdaten bleiben bestehen. Diese Aktion kann nicht rückgängig gemacht werden.",
 Please mention Basic and HRA component in Company,Bitte erwähnen Sie die Basis- und HRA-Komponente in der Firma,
-Please mention Round Off Account in Company,Bitte Abschlusskonto in Unternehmen vermerken,
-Please mention Round Off Cost Center in Company,Bitte Abschlusskostenstelle in Unternehmen vermerken,
-Please mention no of visits required,"Bitte bei ""Besuche erforderlich"" NEIN angeben",
-Please mention the Lead Name in Lead {0},Bitte erwähnen Sie den Lead Name in Lead {0},
-Please pull items from Delivery Note,Bitte Artikel vom Lieferschein nehmen,
+Please mention Round Off Account in Company,Bitte ein Standardkonto Konto für Rundungsdifferenzen in Unternehmen einstellen,
+Please mention Round Off Cost Center in Company,Bitte eine Kostenstelle für Rundungsdifferenzen in Unternehmen einstellen,
+Please mention no of visits required,Bitte die Anzahl der benötigten Wartungsbesuche angeben,
+Please pull items from Delivery Note,Bitte Artikel aus dem Lieferschein ziehen,
 Please register the SIREN number in the company information file,Bitte registrieren Sie die SIREN-Nummer in der Unternehmensinformationsdatei,
 Please remove this Invoice {0} from C-Form {1},Bitte diese Rechnung {0} vom Kontaktformular {1} entfernen,
 Please save the patient first,Bitte speichern Sie den Patienten zuerst,
 Please save the report again to rebuild or update,"Speichern Sie den Bericht erneut, um ihn neu zu erstellen oder zu aktualisieren",
 "Please select Allocated Amount, Invoice Type and Invoice Number in atleast one row","Bitte zugewiesenen Betrag, Rechnungsart und Rechnungsnummer in mindestens einer Zeile auswählen",
 Please select Apply Discount On,"Bitte ""Rabatt anwenden auf"" auswählen",
-Please select BOM against item {0},Bitte wählen Sie Stückliste gegen Artikel {0},
-Please select BOM for Item in Row {0},Bitte Stückliste für Artikel in Zeile {0} auswählen,
-Please select BOM in BOM field for Item {0},Bitte aus dem Stücklistenfeld eine Stückliste für Artikel {0} auswählen,
-Please select Category first,Bitte zuerst Kategorie auswählen,
-Please select Charge Type first,Bitte zuerst Chargentyp auswählen,
-Please select Company,Bitte Unternehmen auswählen,
+Please select BOM against item {0},Bitte eine Stückliste für Artikel {0} auswählen,
+Please select BOM for Item in Row {0},Bitte eine Stückliste für den Artikel in Zeile {0} auswählen,
+Please select BOM in BOM field for Item {0},Bitte im Stücklistenfeld eine Stückliste für Artikel {0} auswählen,
+Please select Category first,Bitte zuerst eine Kategorie auswählen,
+Please select Charge Type first,Bitte zuerst einen Chargentyp auswählen,
+Please select Company,Bitte ein Unternehmen auswählen,
 Please select Company and Designation,Bitte wählen Sie Unternehmen und Position,
 Please select Company and Posting Date to getting entries,"Bitte wählen Sie Unternehmen und Buchungsdatum, um Einträge zu erhalten",
 Please select Company first,Bitte zuerst Unternehmen auswählen,
 Please select Completion Date for Completed Asset Maintenance Log,Bitte wählen Sie Fertigstellungsdatum für das abgeschlossene Wartungsprotokoll für den Vermögenswert,
 Please select Completion Date for Completed Repair,Bitte wählen Sie das Abschlussdatum für die abgeschlossene Reparatur,
-Please select Course,Bitte wählen Sie Kurs,
-Please select Drug,Bitte wählen Sie Arzneimittel,
 Please select Employee,Bitte wählen Sie Mitarbeiter,
 Please select Existing Company for creating Chart of Accounts,Bitte wählen Sie Bestehende Unternehmen für die Erstellung von Konten,
 Please select Healthcare Service,Bitte wählen Sie Gesundheitsdienst,
@@ -3514,7 +3511,6 @@
 Reviews,Bewertungen,
 Sender,Absender,
 Shop,Laden,
-Sign Up,Anmelden,
 Subsidiary,Tochtergesellschaft,
 There is some problem with the file url: {0},Es gibt irgend ein Problem mit der Datei-URL: {0},
 There were errors while sending email. Please try again.,Beim Versand der E-Mail ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.,
@@ -5067,7 +5063,7 @@
 Rate ,Preis,
 Rate (Company Currency),Preis (Unternehmenswährung),
 Amount (Company Currency),Betrag (Unternehmenswährung),
-Is Free Item,Ist freies Einzelteil,
+Is Free Item,Ist kostenlos,
 Net Rate,Nettopreis,
 Net Rate (Company Currency),Nettopreis (Unternehmenswährung),
 Net Amount (Company Currency),Nettobetrag (Unternehmenswährung),
@@ -7805,7 +7801,7 @@
 Default Cost of Goods Sold Account,Standard-Herstellkosten,
 Default Income Account,Standard-Ertragskonto,
 Default Deferred Revenue Account,Standardkonto für passive Rechnungsabgrenzung,
-Default Deferred Expense Account,Standard-Rechnungsabgrenzungsposten,
+Default Deferred Expense Account,Standardkonto für aktive Rechnungsabgrenzung,
 Default Payroll Payable Account,Standardkonto für Verbindlichkeiten aus Lohn und Gehalt,
 Default Expense Claim Payable Account,Standard-Expense Claim Zahlbares Konto,
 Stock Settings,Lager-Einstellungen,
@@ -8873,7 +8869,7 @@
 This topic is already added to the existing courses,Dieses Thema wurde bereits zu den bestehenden Kursen hinzugefügt,
 "If Shopify does not have a customer in the order, then while syncing the orders, the system will consider the default customer for the order","Wenn Shopify keinen Kunden in der Bestellung hat, berücksichtigt das System beim Synchronisieren der Bestellungen den Standardkunden für die Bestellung",
 The accounts are set by the system automatically but do confirm these defaults,"Die Konten werden vom System automatisch festgelegt, bestätigen jedoch diese Standardeinstellungen",
-Default Round Off Account,Standard-Rundungskonto,
+Default Round Off Account,Standardkonto für Rundungsdifferenzen,
 Failed Import Log,Importprotokoll fehlgeschlagen,
 Fixed Error Log,Fehlerprotokoll behoben,
 Company {0} already exists. Continuing will overwrite the Company and Chart of Accounts,Firma {0} existiert bereits. Durch Fortfahren werden das Unternehmen und der Kontenplan überschrieben,
@@ -9918,3 +9914,7 @@
 Delivered Duty Paid,Geliefert verzollt,
 Discount Validity,Frist für den Rabatt,
 Discount Validity Based On,Frist für den Rabatt berechnet sich nach,
+Select Alternative Items for Sales Order,Alternativpositionen für Auftragsbestätigung auswählen,
+Select an item from each set to be used in the Sales Order.,"Wählen Sie aus den Alternativen jeweils einen Artikel aus, der in die Auftragsbestätigung übernommen werden soll.",
+Is Alternative,Ist Alternative,
+Alternative Items,Alternativpositionen,
diff --git a/erpnext/translations/el.csv b/erpnext/translations/el.csv
index 06b8060..c241558 100644
--- a/erpnext/translations/el.csv
+++ b/erpnext/translations/el.csv
@@ -3505,7 +3505,6 @@
 Reviews,Κριτικές,
 Sender,Αποστολέας,
 Shop,Κατάστημα,
-Sign Up,Εγγραφείτε,
 Subsidiary,Θυγατρική,
 There is some problem with the file url: {0},Υπάρχει κάποιο πρόβλημα με το url αρχείο: {0},
 There were errors while sending email. Please try again.,Υπήρξαν σφάλματα κατά την αποστολή ηλεκτρονικού ταχυδρομείου. Παρακαλώ δοκιμάστε ξανά .,
diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv
index b216b86..9996fe5 100644
--- a/erpnext/translations/es.csv
+++ b/erpnext/translations/es.csv
@@ -3505,7 +3505,6 @@
 Reviews,Comentarios,
 Sender,Remitente,
 Shop,Tienda.,
-Sign Up,Regístrate,
 Subsidiary,Subsidiaria,
 There is some problem with the file url: {0},Hay un poco de problema con la url del archivo: {0},
 There were errors while sending email. Please try again.,"Ha ocurrido un error al enviar el correo electrónico. Por favor, inténtelo de nuevo.",
diff --git a/erpnext/translations/et.csv b/erpnext/translations/et.csv
index 5d67d81..6e60809 100644
--- a/erpnext/translations/et.csv
+++ b/erpnext/translations/et.csv
@@ -3505,7 +3505,6 @@
 Reviews,Ülevaated,
 Sender,Lähetaja,
 Shop,Kauplus,
-Sign Up,Registreeri,
 Subsidiary,Tütarettevõte,
 There is some problem with the file url: {0},Seal on mõned probleem faili url: {0},
 There were errors while sending email. Please try again.,Vigu samas saates email. Palun proovi uuesti.,
diff --git a/erpnext/translations/fa.csv b/erpnext/translations/fa.csv
index 040034d..7d18e27 100644
--- a/erpnext/translations/fa.csv
+++ b/erpnext/translations/fa.csv
@@ -3505,7 +3505,6 @@
 Reviews,بررسی ها,
 Sender,فرستنده,
 Shop,فروشگاه,
-Sign Up,ثبت نام,
 Subsidiary,فرعی,
 There is some problem with the file url: {0},بعضی از مشکل با آدرس فایل وجود دارد: {0},
 There were errors while sending email. Please try again.,بودند خطاهای هنگام ارسال ایمیل وجود دارد. لطفا دوباره تلاش کنید.,
diff --git a/erpnext/translations/fi.csv b/erpnext/translations/fi.csv
index 27ea3b8..c700f60 100644
--- a/erpnext/translations/fi.csv
+++ b/erpnext/translations/fi.csv
@@ -3505,7 +3505,6 @@
 Reviews,Arvostelut,
 Sender,Lähettäjä,
 Shop,Osta,
-Sign Up,Kirjaudu,
 Subsidiary,tytäryhtiö,
 There is some problem with the file url: {0},Tiedosto-URL:issa  {0} on ongelma,
 There were errors while sending email. Please try again.,"Lähetettäessä sähköpostia oli virheitä, yrita uudelleen",
diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv
index bace129..ab9bf7d 100644
--- a/erpnext/translations/fr.csv
+++ b/erpnext/translations/fr.csv
@@ -3505,7 +3505,6 @@
 Reviews,Avis,
 Sender,Expéditeur,
 Shop,Magasin,
-Sign Up,S'inscrire,
 Subsidiary,Filiale,
 There is some problem with the file url: {0},Il y a un problème avec l'url du fichier : {0},
 There were errors while sending email. Please try again.,Il y a eu des erreurs lors de l'envoi d’emails. Veuillez essayer à nouveau.,
diff --git a/erpnext/translations/gu.csv b/erpnext/translations/gu.csv
index 97adac9..b26d2f3 100644
--- a/erpnext/translations/gu.csv
+++ b/erpnext/translations/gu.csv
@@ -3505,7 +3505,6 @@
 Reviews,સમીક્ષાઓ,
 Sender,પ્રેષક,
 Shop,દુકાન,
-Sign Up,સાઇન અપ કરો,
 Subsidiary,સબસિડીયરી,
 There is some problem with the file url: {0},ફાઈલ URL સાથે કેટલાક સમસ્યા છે: {0},
 There were errors while sending email. Please try again.,ઇમેઇલ મોકલતી વખતે ભૂલો આવી હતી. ફરી પ્રયત્ન કરો.,
diff --git a/erpnext/translations/he.csv b/erpnext/translations/he.csv
index 22b2522..e40b68e 100644
--- a/erpnext/translations/he.csv
+++ b/erpnext/translations/he.csv
@@ -3505,7 +3505,6 @@
 Reviews,ביקורות,
 Sender,שולח,
 Shop,חנות,
-Sign Up,הירשם,
 Subsidiary,חברת בת,
 There is some problem with the file url: {0},יש קצת בעיה עם כתובת אתר הקובץ: {0},
 There were errors while sending email. Please try again.,היו שגיאות בעת שליחת דואר אלקטרוני. אנא נסה שוב.,
diff --git a/erpnext/translations/hi.csv b/erpnext/translations/hi.csv
index ca41cf3..78094d7 100644
--- a/erpnext/translations/hi.csv
+++ b/erpnext/translations/hi.csv
@@ -3505,7 +3505,6 @@
 Reviews,समीक्षा,
 Sender,प्रेषक,
 Shop,दुकान,
-Sign Up,साइन अप करें,
 Subsidiary,सहायक,
 There is some problem with the file url: {0},फ़ाइल यूआरएल के साथ कुछ समस्या है: {0},
 There were errors while sending email. Please try again.,ईमेल भेजने के दौरान त्रुटि . पुन: प्रयास करें .,
diff --git a/erpnext/translations/hr.csv b/erpnext/translations/hr.csv
index 319b80b..232832f 100644
--- a/erpnext/translations/hr.csv
+++ b/erpnext/translations/hr.csv
@@ -3505,7 +3505,6 @@
 Reviews,Recenzije,
 Sender,Pošiljalac,
 Shop,Dućan,
-Sign Up,Prijavite se,
 Subsidiary,Podružnica,
 There is some problem with the file url: {0},Postoji neki problem s datotečnog URL: {0},
 There were errors while sending email. Please try again.,Bilo je grešaka tijekom slanja e-pošte. Molimo pokušajte ponovno .,
diff --git a/erpnext/translations/hu.csv b/erpnext/translations/hu.csv
index 0664728..e3dcd61 100644
--- a/erpnext/translations/hu.csv
+++ b/erpnext/translations/hu.csv
@@ -3505,7 +3505,6 @@
 Reviews,Vélemények,
 Sender,Küldő,
 Shop,Bolt,
-Sign Up,Regisztrálj,
 Subsidiary,Leányvállalat,
 There is some problem with the file url: {0},Van valami probléma a fájl URL-el: {0},
 There were errors while sending email. Please try again.,"Email küldés közben hibák voltak. Kérjük, próbálja újra.",
diff --git a/erpnext/translations/id.csv b/erpnext/translations/id.csv
index 1e50747..ccbb002 100644
--- a/erpnext/translations/id.csv
+++ b/erpnext/translations/id.csv
@@ -3505,7 +3505,6 @@
 Reviews,Ulasan,
 Sender,Pengirim,
 Shop,Toko,
-Sign Up,Daftar,
 Subsidiary,Anak Perusahaan,
 There is some problem with the file url: {0},Ada beberapa masalah dengan url berkas: {0},
 There were errors while sending email. Please try again.,Ada kesalahan saat mengirim email. Silakan coba lagi.,
diff --git a/erpnext/translations/is.csv b/erpnext/translations/is.csv
index c20c21e..5f11c63 100644
--- a/erpnext/translations/is.csv
+++ b/erpnext/translations/is.csv
@@ -3505,7 +3505,6 @@
 Reviews,Umsagnir,
 Sender,sendanda,
 Shop,Shop,
-Sign Up,Skráðu þig,
 Subsidiary,dótturfélag,
 There is some problem with the file url: {0},Það er einhver vandamál með skrá url: {0},
 There were errors while sending email. Please try again.,Það komu upp villur við að senda tölvupóst. Vinsamlegast reyndu aftur.,
diff --git a/erpnext/translations/it.csv b/erpnext/translations/it.csv
index 3d15d55..0dbde45 100644
--- a/erpnext/translations/it.csv
+++ b/erpnext/translations/it.csv
@@ -3505,7 +3505,6 @@
 Reviews,Recensioni,
 Sender,Mittente,
 Shop,Negozio,
-Sign Up,Iscriviti,
 Subsidiary,Sussidiario,
 There is some problem with the file url: {0},C&#39;è qualche problema con il file url: {0},
 There were errors while sending email. Please try again.,Ci sono stati errori durante l'invio email. Riprova.,
diff --git a/erpnext/translations/ja.csv b/erpnext/translations/ja.csv
index a11a9a1..210c78e 100644
--- a/erpnext/translations/ja.csv
+++ b/erpnext/translations/ja.csv
@@ -3505,7 +3505,6 @@
 Reviews,レビュー,
 Sender,送信者,
 Shop,店,
-Sign Up,サインアップ,
 Subsidiary,子会社,
 There is some problem with the file url: {0},ファイルURLに問題があります:{0},
 There were errors while sending email. Please try again.,メールの送信中にエラーが発生しました。もう一度お試しください。,
diff --git a/erpnext/translations/km.csv b/erpnext/translations/km.csv
index bd70595..1eb85cc 100644
--- a/erpnext/translations/km.csv
+++ b/erpnext/translations/km.csv
@@ -3505,7 +3505,6 @@
 Reviews,ការពិនិត្យឡើងវិញ។,
 Sender,អ្នកផ្ញើ,
 Shop,ហាងលក់,
-Sign Up,ចុះឈ្មោះ,
 Subsidiary,ក្រុមហ៊ុនបុត្រសម្ព័ន្ធ,
 There is some problem with the file url: {0},មានបញ្ហាមួយចំនួនជាមួយនឹងឯកសារ URL គឺ: {0},
 There were errors while sending email. Please try again.,មានកំហុសខណៈពេលដែលការផ្ញើអ៊ីម៉ែលនោះទេ។ សូមព្យាយាមម្តងទៀត។,
diff --git a/erpnext/translations/kn.csv b/erpnext/translations/kn.csv
index 7572a09..4e40c63 100644
--- a/erpnext/translations/kn.csv
+++ b/erpnext/translations/kn.csv
@@ -3505,7 +3505,6 @@
 Reviews,ವಿಮರ್ಶೆಗಳು,
 Sender,ಪ್ರೇಷಕ,
 Shop,ಅಂಗಡಿ,
-Sign Up,ಸೈನ್ ಅಪ್,
 Subsidiary,ಸಹಕಾರಿ,
 There is some problem with the file url: {0},ಕಡತ URL ನೊಂದಿಗೆ ಕೆಲವು ಸಮಸ್ಯೆಯಿದೆ: {0},
 There were errors while sending email. Please try again.,ಇಮೇಲ್ ಕಳುಹಿಸುವಾಗ ದೋಷಗಳು ಇದ್ದವು. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ .,
diff --git a/erpnext/translations/ko.csv b/erpnext/translations/ko.csv
index b873b73..36ec3af 100644
--- a/erpnext/translations/ko.csv
+++ b/erpnext/translations/ko.csv
@@ -3505,7 +3505,6 @@
 Reviews,리뷰,
 Sender,보낸 사람,
 Shop,상점,
-Sign Up,가입,
 Subsidiary,자회사,
 There is some problem with the file url: {0},파일 URL 몇 가지 문제가 있습니다 : {0},
 There were errors while sending email. Please try again.,이메일을 보내는 동안 오류가 발생했습니다.재시도하십시오.,
diff --git a/erpnext/translations/ku.csv b/erpnext/translations/ku.csv
index 89e12c0..28927a0 100644
--- a/erpnext/translations/ku.csv
+++ b/erpnext/translations/ku.csv
@@ -3505,7 +3505,6 @@
 Reviews,Nirxandin,
 Sender,virrêkerî,
 Shop,Dikan,
-Sign Up,Tomar kirin,
 Subsidiary,Şîrketa girêdayî,
 There is some problem with the file url: {0},e hinek pirsgirêk bi url file hene: {0},
 There were errors while sending email. Please try again.,bûn çewtî dema şandina email heye. Ji kerema xwe careke din biceribîne.,
diff --git a/erpnext/translations/lo.csv b/erpnext/translations/lo.csv
index 778a59b..3904308 100644
--- a/erpnext/translations/lo.csv
+++ b/erpnext/translations/lo.csv
@@ -3505,7 +3505,6 @@
 Reviews,ການທົບທວນຄືນ,
 Sender,ຜູ້ສົ່ງ,
 Shop,ບໍລິການຜ່ານ,
-Sign Up,ລົງທະບຽນ,
 Subsidiary,ບໍລິສັດຍ່ອຍ,
 There is some problem with the file url: {0},ມີບັນຫາບາງຢ່າງກັບ url ໄຟລ໌ແມ່ນ: {0},
 There were errors while sending email. Please try again.,ມີຄວາມຜິດພາດໃນຂະນະທີ່ການສົ່ງອີເມວໄດ້. ກະລຸນາພະຍາຍາມອີກເທື່ອຫນຶ່ງ.,
diff --git a/erpnext/translations/lt.csv b/erpnext/translations/lt.csv
index 4721ce4..d05688c 100644
--- a/erpnext/translations/lt.csv
+++ b/erpnext/translations/lt.csv
@@ -3505,7 +3505,6 @@
 Reviews,Atsiliepimai,
 Sender,Siuntėjas,
 Shop,parduotuvė,
-Sign Up,Registruotis,
 Subsidiary,filialas,
 There is some problem with the file url: {0},Yra kai kurie su URL failui problema: {0},
 There were errors while sending email. Please try again.,"Nebuvo klaidos Nors siunčiant laišką. Prašau, pabandykite dar kartą.",
diff --git a/erpnext/translations/lv.csv b/erpnext/translations/lv.csv
index b8499b2..d5cf852 100644
--- a/erpnext/translations/lv.csv
+++ b/erpnext/translations/lv.csv
@@ -3505,7 +3505,6 @@
 Reviews,Atsauksmes,
 Sender,Nosūtītājs,
 Shop,Veikals,
-Sign Up,Pierakstīties,
 Subsidiary,Filiāle,
 There is some problem with the file url: {0},Ir dažas problēmas ar faila url: {0},
 There were errors while sending email. Please try again.,"Bija kļūdas, nosūtot e-pastu. Lūdzu, mēģiniet vēlreiz.",
diff --git a/erpnext/translations/mk.csv b/erpnext/translations/mk.csv
index 8ecae03..e01cb70 100644
--- a/erpnext/translations/mk.csv
+++ b/erpnext/translations/mk.csv
@@ -3505,7 +3505,6 @@
 Reviews,Прегледи,
 Sender,Испраќачот,
 Shop,Продавница,
-Sign Up,Регистрирај се,
 Subsidiary,Подружница,
 There is some problem with the file url: {0},Има некој проблем со URL-то на фајл: {0},
 There were errors while sending email. Please try again.,Имаше грешка при испраќање на е-мејл. Ве молиме обидете се повторно.,
diff --git a/erpnext/translations/ml.csv b/erpnext/translations/ml.csv
index f649e6c..c5a98b6 100644
--- a/erpnext/translations/ml.csv
+++ b/erpnext/translations/ml.csv
@@ -3505,7 +3505,6 @@
 Reviews,അവലോകനങ്ങൾ,
 Sender,അയച്ചയാളുടെ,
 Shop,കട,
-Sign Up,സൈൻ അപ്പ് ചെയ്യുക,
 Subsidiary,സഹായകന്,
 There is some problem with the file url: {0},ഫയൽ URL ഉള്ള ചില പ്രശ്നം ഉണ്ട്: {0},
 There were errors while sending email. Please try again.,ഇമെയിൽ അയയ്ക്കുമ്പോൾ പിശകുകളുണ്ടായിരുന്നു. വീണ്ടും ശ്രമിക്കുക.,
diff --git a/erpnext/translations/mr.csv b/erpnext/translations/mr.csv
index 38effc1..21aaa3f 100644
--- a/erpnext/translations/mr.csv
+++ b/erpnext/translations/mr.csv
@@ -3505,7 +3505,6 @@
 Reviews,पुनरावलोकने,
 Sender,प्रेषक,
 Shop,दुकान,
-Sign Up,साइन अप करा,
 Subsidiary,उपकंपनी,
 There is some problem with the file url: {0},फाइल URL सह काही समस्या आहे: {0},
 There were errors while sending email. Please try again.,ई-मेल पाठविताना त्रुटी होत्या. कृपया पुन्हा प्रयत्न करा.,
diff --git a/erpnext/translations/ms.csv b/erpnext/translations/ms.csv
index 4ee650b..5a3d986 100644
--- a/erpnext/translations/ms.csv
+++ b/erpnext/translations/ms.csv
@@ -3505,7 +3505,6 @@
 Reviews,Ulasan,
 Sender,Penghantar,
 Shop,Kedai,
-Sign Up,Daftar,
 Subsidiary,Anak Syarikat,
 There is some problem with the file url: {0},Terdapat beberapa masalah dengan url fail: {0},
 There were errors while sending email. Please try again.,Terdapat ralat semasa menghantar e-mel. Sila cuba sekali lagi.,
diff --git a/erpnext/translations/my.csv b/erpnext/translations/my.csv
index f0d216b..7638e76 100644
--- a/erpnext/translations/my.csv
+++ b/erpnext/translations/my.csv
@@ -3505,7 +3505,6 @@
 Reviews,reviews,
 Sender,ပေးပို့သူ,
 Shop,ကုန်ဆိုင်,
-Sign Up,အကောင့်ဖွင့်ရန်,
 Subsidiary,ထောက်ခံသောကုမ္ပဏီ,
 There is some problem with the file url: {0},ဖိုင်ကို url နှင့်အတူအချို့သောပြဿနာကိုလည်းရှိ၏: {0},
 There were errors while sending email. Please try again.,အီးမေးလ်ပို့သည့်အနေဖြင့်အမှားများရှိကြ၏။ ထပ်ကြိုးစားပါ။,
diff --git a/erpnext/translations/nl.csv b/erpnext/translations/nl.csv
index 6ec43a0..b559c69 100644
--- a/erpnext/translations/nl.csv
+++ b/erpnext/translations/nl.csv
@@ -3505,7 +3505,6 @@
 Reviews,beoordelingen,
 Sender,Afzender,
 Shop,Winkelen,
-Sign Up,Inschrijven,
 Subsidiary,Dochteronderneming,
 There is some problem with the file url: {0},Er is een probleem met het bestand url: {0},
 There were errors while sending email. Please try again.,Er zijn fouten opgetreden tijdens het versturen van e-mail. Probeer het opnieuw .,
diff --git a/erpnext/translations/no.csv b/erpnext/translations/no.csv
index df87e81..20b8916 100644
--- a/erpnext/translations/no.csv
+++ b/erpnext/translations/no.csv
@@ -3505,7 +3505,6 @@
 Reviews,anmeldelser,
 Sender,Avsender,
 Shop,Butikk,
-Sign Up,Melde deg på,
 Subsidiary,Datterselskap,
 There is some problem with the file url: {0},Det er noe problem med filen url: {0},
 There were errors while sending email. Please try again.,"Det oppstod feil under sending epost. Vær så snill, prøv på nytt.",
diff --git a/erpnext/translations/pl.csv b/erpnext/translations/pl.csv
index be81e29..4a93d49 100644
--- a/erpnext/translations/pl.csv
+++ b/erpnext/translations/pl.csv
@@ -3505,7 +3505,6 @@
 Reviews,Recenzje,
 Sender,Nadawca,
 Shop,Sklep,
-Sign Up,Zapisz się,
 Subsidiary,Pomocniczy,
 There is some problem with the file url: {0},Jest jakiś problem z adresem URL pliku: {0},
 There were errors while sending email. Please try again.,Wystąpiły błędy podczas wysyłki e-mail. Proszę spróbuj ponownie.,
diff --git a/erpnext/translations/ps.csv b/erpnext/translations/ps.csv
index 68add60..26cd0a9 100644
--- a/erpnext/translations/ps.csv
+++ b/erpnext/translations/ps.csv
@@ -3505,7 +3505,6 @@
 Reviews,بیاکتنې,
 Sender,استوونکی,
 Shop,شاپ,
-Sign Up,ګډون کول,
 Subsidiary,د متمم,
 There is some problem with the file url: {0},شتون سره د دوتنې url ځينو ستونزه دا ده: {0},
 There were errors while sending email. Please try again.,ایمیل استولو په داسې حال کې تېروتنې شوې دي. لطفا بیا هڅه وکړې.,
diff --git a/erpnext/translations/pt-BR.csv b/erpnext/translations/pt-BR.csv
index cc1c6af..edaaddd 100644
--- a/erpnext/translations/pt-BR.csv
+++ b/erpnext/translations/pt-BR.csv
@@ -3505,7 +3505,6 @@
 Reviews,Revisões,
 Sender,Remetente,
 Shop,Loja,
-Sign Up,Inscrever-se,
 Subsidiary,Subsidiário,
 There is some problem with the file url: {0},Há algum problema com a url do arquivo: {0},
 There were errors while sending email. Please try again.,Ocorreram erros durante o envio de email. Por favor tente novamente.,
diff --git a/erpnext/translations/pt.csv b/erpnext/translations/pt.csv
index 43bf227..5cc486d 100644
--- a/erpnext/translations/pt.csv
+++ b/erpnext/translations/pt.csv
@@ -3505,7 +3505,6 @@
 Reviews,Rever,
 Sender,Remetente,
 Shop,Loja,
-Sign Up,Inscrever-se,
 Subsidiary,Subsidiário,
 There is some problem with the file url: {0},Há algum problema com a url do arquivo: {0},
 There were errors while sending email. Please try again.,"Ocorreram erros durante o envio de e-mail. Por favor, tente novamente.",
diff --git a/erpnext/translations/ro.csv b/erpnext/translations/ro.csv
index 3aab431..8f97d07 100644
--- a/erpnext/translations/ro.csv
+++ b/erpnext/translations/ro.csv
@@ -3505,7 +3505,6 @@
 Reviews,opinii,
 Sender,Expeditor,
 Shop,Magazin,
-Sign Up,Inscrie-te,
 Subsidiary,Filială,
 There is some problem with the file url: {0},Există unele probleme cu URL-ul fișierului: {0},
 There were errors while sending email. Please try again.,Au fost erori în timp ce trimiterea de e-mail. Încercaţi din nou.,
diff --git a/erpnext/translations/ru.csv b/erpnext/translations/ru.csv
index 662346f..1fc37dd 100644
--- a/erpnext/translations/ru.csv
+++ b/erpnext/translations/ru.csv
@@ -3503,7 +3503,6 @@
 Reviews,Отзывы,
 Sender,Отправитель,
 Shop,Магазин,
-Sign Up,Регистрация,
 Subsidiary,Филиал,
 There is some problem with the file url: {0},Существует некоторая проблема с файловой URL: {0},
 There were errors while sending email. Please try again.,"При отправке электронной почты возникли ошибки. Пожалуйста, попробуйте ещё раз.",
diff --git a/erpnext/translations/rw.csv b/erpnext/translations/rw.csv
index 6c2b5dd..741f117 100644
--- a/erpnext/translations/rw.csv
+++ b/erpnext/translations/rw.csv
@@ -3505,7 +3505,6 @@
 Reviews,Isubiramo,
 Sender,Kohereza,
 Shop,Amaduka,
-Sign Up,Iyandikishe,
 Subsidiary,Inkunga,
 There is some problem with the file url: {0},Hano hari ikibazo na dosiye url: {0},
 There were errors while sending email. Please try again.,Habayeho amakosa mugihe wohereje imeri. Nyamuneka gerageza.,
diff --git a/erpnext/translations/si.csv b/erpnext/translations/si.csv
index 5b78235..e5ea9bf 100644
--- a/erpnext/translations/si.csv
+++ b/erpnext/translations/si.csv
@@ -3505,7 +3505,6 @@
 Reviews,සමාලෝචන,
 Sender,යවන්නාගේ,
 Shop,වෙළඳසැල්,
-Sign Up,ලියාපදිංචි වන්න,
 Subsidiary,අනුබද්ධිත සමාගමක්,
 There is some problem with the file url: {0},ගොනුව url එක සමග යම් ගැටළුවක් වේ: {0},
 There were errors while sending email. Please try again.,ඊ-තැපැල් යැවීම අතර දෝෂ ඇතිවිය. කරුණාකර නැවත උත්සාහ කරන්න.,
diff --git a/erpnext/translations/sk.csv b/erpnext/translations/sk.csv
index 446e0be..d16c492 100644
--- a/erpnext/translations/sk.csv
+++ b/erpnext/translations/sk.csv
@@ -3505,7 +3505,6 @@
 Reviews,recenzia,
 Sender,Odosielateľ,
 Shop,Obchod,
-Sign Up,Prihlásiť Se,
 Subsidiary,Dceřiný,
 There is some problem with the file url: {0},Tam je nejaký problém s URL súboru: {0},
 There were errors while sending email. Please try again.,Narazili jsme na problémy při odesílání emailu. Prosím zkuste to znovu.,
diff --git a/erpnext/translations/sl.csv b/erpnext/translations/sl.csv
index 8b8ed01..0890160 100644
--- a/erpnext/translations/sl.csv
+++ b/erpnext/translations/sl.csv
@@ -3505,7 +3505,6 @@
 Reviews,Ocene,
 Sender,Sender,
 Shop,Trgovina,
-Sign Up,Prijavite se,
 Subsidiary,Hčerinska družba,
 There is some problem with the file url: {0},Obstaja nekaj problem z datoteko url: {0},
 There were errors while sending email. Please try again.,Tam so bile napake pri pošiljanju e-pošte. Prosim poskusi znova.,
diff --git a/erpnext/translations/sq.csv b/erpnext/translations/sq.csv
index 6f4f8e0..987211a 100644
--- a/erpnext/translations/sq.csv
+++ b/erpnext/translations/sq.csv
@@ -3505,7 +3505,6 @@
 Reviews,Shqyrtime,
 Sender,Dërgues,
 Shop,Dyqan,
-Sign Up,Regjistrohuni,
 Subsidiary,Ndihmës,
 There is some problem with the file url: {0},Ka disa probleme me file url: {0},
 There were errors while sending email. Please try again.,Ka pasur gabime ndërsa dërguar një email. Ju lutemi provoni përsëri.,
diff --git a/erpnext/translations/sr.csv b/erpnext/translations/sr.csv
index 853c6f3..f6cbb57 100644
--- a/erpnext/translations/sr.csv
+++ b/erpnext/translations/sr.csv
@@ -3505,7 +3505,6 @@
 Reviews,Коментара,
 Sender,Пошиљалац,
 Shop,Продавница,
-Sign Up,Пријави се,
 Subsidiary,Подружница,
 There is some problem with the file url: {0},Постоји неки проблем са Филе УРЛ: {0},
 There were errors while sending email. Please try again.,"Были ошибки при отправке электронной почты . Пожалуйста, попробуйте еще раз .",
diff --git a/erpnext/translations/sv.csv b/erpnext/translations/sv.csv
index 2a4d6b1..ec443e9 100644
--- a/erpnext/translations/sv.csv
+++ b/erpnext/translations/sv.csv
@@ -3505,7 +3505,6 @@
 Reviews,recensioner,
 Sender,Avsändare,
 Shop,Shop,
-Sign Up,Bli Medlem,
 Subsidiary,Dotterbolag,
 There is some problem with the file url: {0},Det finns vissa problem med filen url: {0},
 There were errors while sending email. Please try again.,Det fanns fel när du skickar e-post. Var god försök igen.,
diff --git a/erpnext/translations/sw.csv b/erpnext/translations/sw.csv
index 234d33e..989f8b0 100644
--- a/erpnext/translations/sw.csv
+++ b/erpnext/translations/sw.csv
@@ -3505,7 +3505,6 @@
 Reviews,Maoni,
 Sender,Sender,
 Shop,Duka,
-Sign Up,Ingia,
 Subsidiary,Msaidizi,
 There is some problem with the file url: {0},Kuna tatizo fulani na url ya faili: {0},
 There were errors while sending email. Please try again.,Kulikuwa na makosa wakati wa kutuma barua pepe. Tafadhali jaribu tena.,
diff --git a/erpnext/translations/ta.csv b/erpnext/translations/ta.csv
index e7384b3..7314d4b 100644
--- a/erpnext/translations/ta.csv
+++ b/erpnext/translations/ta.csv
@@ -3505,7 +3505,6 @@
 Reviews,விமர்சனங்கள்,
 Sender,அனுப்புபவர்,
 Shop,ஷாப்பிங்,
-Sign Up,பதிவு செய்யவும்,
 Subsidiary,உப,
 There is some problem with the file url: {0},கோப்பு URL சில சிக்கல் உள்ளது: {0},
 There were errors while sending email. Please try again.,மின்னஞ்சல் அனுப்பும் போது பிழைகள் இருந்தன . மீண்டும் முயற்சிக்கவும்.,
diff --git a/erpnext/translations/te.csv b/erpnext/translations/te.csv
index cd14a77..3fb32dc 100644
--- a/erpnext/translations/te.csv
+++ b/erpnext/translations/te.csv
@@ -3505,7 +3505,6 @@
 Reviews,సమీక్షలు,
 Sender,పంపినవారు,
 Shop,షాప్,
-Sign Up,చేరడం,
 Subsidiary,అనుబంధ,
 There is some problem with the file url: {0},ఫైల్ URL కొన్ని సమస్య ఉంది: {0},
 There were errors while sending email. Please try again.,ఇమెయిల్ పంపడం అయితే కొన్ని లోపాలు ఉన్నాయి. మళ్ళి ప్రయత్నించండి.,
diff --git a/erpnext/translations/th.csv b/erpnext/translations/th.csv
index 4ab59bc..e371aed 100644
--- a/erpnext/translations/th.csv
+++ b/erpnext/translations/th.csv
@@ -3505,7 +3505,6 @@
 Reviews,ความคิดเห็น,
 Sender,ผู้ส่ง,
 Shop,ร้านค้า,
-Sign Up,ลงชื่อ,
 Subsidiary,บริษัท สาขา,
 There is some problem with the file url: {0},มีปัญหากับ url ของไฟล์เป็น: {0},
 There were errors while sending email. Please try again.,มีข้อผิดพลาด ในขณะที่ มี การส่งอีเมล์ โปรดลองอีกครั้ง,
diff --git a/erpnext/translations/tr.csv b/erpnext/translations/tr.csv
index 1b80f6c..69cdc2e 100644
--- a/erpnext/translations/tr.csv
+++ b/erpnext/translations/tr.csv
@@ -3505,7 +3505,6 @@
 Reviews,yorumlar,
 Sender,Sevkiyatçı,
 Shop,mağaza,
-Sign Up,Kaydol,
 Subsidiary,Yardımcı,
 There is some problem with the file url: {0},Dosya url ile bazı sorun var: {0},
 There were errors while sending email. Please try again.,E-posta gönderirken hatalar vardı. Lütfen tekrar deneyin.,
diff --git a/erpnext/translations/uk.csv b/erpnext/translations/uk.csv
index 4e2f63f..83c8d41 100644
--- a/erpnext/translations/uk.csv
+++ b/erpnext/translations/uk.csv
@@ -3505,7 +3505,6 @@
 Reviews,Відгуки,
 Sender,Відправник,
 Shop,Магазин,
-Sign Up,Зареєструватися,
 Subsidiary,Дочірня компанія,
 There is some problem with the file url: {0},Існує деяка проблема з файлової URL: {0},
 There were errors while sending email. Please try again.,Були помилки при відправленні електронної пошти. Будь ласка спробуйте ще раз.,
diff --git a/erpnext/translations/ur.csv b/erpnext/translations/ur.csv
index db6518e..8cf0707 100644
--- a/erpnext/translations/ur.csv
+++ b/erpnext/translations/ur.csv
@@ -3505,7 +3505,6 @@
 Reviews,جائزہ,
 Sender,مرسل,
 Shop,دکان,
-Sign Up,سائن اپ,
 Subsidiary,ماتحت,
 There is some problem with the file url: {0},فائل URL کے ساتھ کچھ مسئلہ ہے: {0},
 There were errors while sending email. Please try again.,ای میل بھیجنے جبکہ غلطیاں تھیں. برائے مہربانی دوبارہ کوشش کریں.,
diff --git a/erpnext/translations/uz.csv b/erpnext/translations/uz.csv
index bb64a15..1e50376 100644
--- a/erpnext/translations/uz.csv
+++ b/erpnext/translations/uz.csv
@@ -3505,7 +3505,6 @@
 Reviews,Sharhlar,
 Sender,Yuboruvchi,
 Shop,Do&#39;kon,
-Sign Up,Ro&#39;yxatdan o&#39;tish,
 Subsidiary,Sho&#39;ba korxonasi,
 There is some problem with the file url: {0},Fayl urlida muammo mavjud: {0},
 There were errors while sending email. Please try again.,"E-pochtani yuborishda xatolik yuz berdi. Iltimos, yana bir bor urinib ko&#39;ring.",
diff --git a/erpnext/translations/vi.csv b/erpnext/translations/vi.csv
index 7317b4b..28fecb6 100644
--- a/erpnext/translations/vi.csv
+++ b/erpnext/translations/vi.csv
@@ -3505,7 +3505,6 @@
 Reviews,Nhận xét,
 Sender,Người gửi,
 Shop,Cửa hàng,
-Sign Up,Đăng ký,
 Subsidiary,Công ty con,
 There is some problem with the file url: {0},Có một số vấn đề với các url của tệp: {0},
 There were errors while sending email. Please try again.,Có lỗi khi gửi email. Vui lòng thử lại sau.,
diff --git a/erpnext/translations/zh.csv b/erpnext/translations/zh.csv
index 2337bcb..035b3c5 100644
--- a/erpnext/translations/zh.csv
+++ b/erpnext/translations/zh.csv
@@ -3505,7 +3505,6 @@
 Reviews,评测,
 Sender,发件人,
 Shop,商店,
-Sign Up,注册,
 Subsidiary,子机构,
 There is some problem with the file url: {0},有一些问题与文件的URL:{0},
 There were errors while sending email. Please try again.,邮件发送曾发生错误,请重试。,
diff --git a/erpnext/translations/zh_tw.csv b/erpnext/translations/zh_tw.csv
index 1b7e186..ef49670 100644
--- a/erpnext/translations/zh_tw.csv
+++ b/erpnext/translations/zh_tw.csv
@@ -3282,7 +3282,6 @@
 Reviews,評測,
 Sender,寄件人,
 Shop,店,
-Sign Up,註冊,
 Subsidiary,副,
 There is some problem with the file url: {0},有一些問題與文件的URL:{0},
 There were errors while sending email. Please try again.,還有在發送電子郵件是錯誤的。請再試一次。,