diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index a55d0e7..d1e9417 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -4,7 +4,7 @@
 import frappe
 from erpnext.hooks import regional_overrides
 
-__version__ = '9.2.13'
+__version__ = '9.2.14'
 
 def get_default_company(user=None):
 	'''Get default company for user'''
diff --git a/erpnext/accounts/doctype/pos_settings/pos_settings.py b/erpnext/accounts/doctype/pos_settings/pos_settings.py
index 13a5004..bdfd969 100644
--- a/erpnext/accounts/doctype/pos_settings/pos_settings.py
+++ b/erpnext/accounts/doctype/pos_settings/pos_settings.py
@@ -12,8 +12,5 @@
 
 	def set_link_for_pos(self):
 		link = 'pos' if self.use_pos_in_offline_mode else 'point-of-sale'
-		desktop_icon = frappe.db.get_value('Desktop Icon',
-			{'standard': 1, 'module_name': 'POS'}, 'name')
-
-		if desktop_icon:
-			frappe.db.set_value('Desktop Icon', desktop_icon, 'link', link)
\ No newline at end of file
+		frappe.db.sql(""" update `tabDesktop Icon` set link = '{0}'
+			where module_name like '%pos%'""".format(link))
\ No newline at end of file
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index f7aa341..bcce6a1 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -593,7 +593,9 @@
 				select ifnull(sum({payment_dr_or_cr}), 0)
 				from `tabGL Entry` payment_gl_entry
 				where payment_gl_entry.against_voucher_type = invoice_gl_entry.voucher_type
-					and payment_gl_entry.against_voucher = invoice_gl_entry.against_voucher
+					and if(invoice_gl_entry.voucher_type='Journal Entry',
+						payment_gl_entry.against_voucher = invoice_gl_entry.voucher_no,
+						payment_gl_entry.against_voucher = invoice_gl_entry.against_voucher)
 					and payment_gl_entry.party_type = invoice_gl_entry.party_type
 					and payment_gl_entry.party = invoice_gl_entry.party
 					and payment_gl_entry.account = invoice_gl_entry.account
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 1ae99a3..e3d61d9 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -460,3 +460,4 @@
 execute:frappe.delete_doc_if_exists("DocType", "Program Fee")
 erpnext.patches.v9_0.update_employee_loan_details
 erpnext.patches.v9_2.delete_healthcare_domain_default_items
+erpnext.patches.v9_2.rename_translated_domains_in_en
diff --git a/erpnext/patches/v9_2/rename_translated_domains_in_en.py b/erpnext/patches/v9_2/rename_translated_domains_in_en.py
new file mode 100644
index 0000000..88ffbb7
--- /dev/null
+++ b/erpnext/patches/v9_2/rename_translated_domains_in_en.py
@@ -0,0 +1,26 @@
+import frappe
+from frappe import _
+
+def execute():
+	language = frappe.get_single("System Settings").language
+
+	if language.startswith('en'): return
+
+	all_domains = frappe.get_hooks("domains")
+
+	for domain in all_domains:
+		translated_domain = _(domain, lang=language)
+		if frappe.db.exists("Domain", translated_domain):
+			frappe.rename_doc("Domain", translated_domain, domain, ignore_permissions=True, merge=True)
+
+	domain_settings = frappe.get_single("Domain Settings")
+	active_domains = [d.domain for d in domain_settings.active_domains]
+	
+	for domain in active_domains:
+		domain = frappe.get_doc("Domain", domain)
+		domain.setup_domain()
+
+		if int(frappe.db.get_single_value('System Settings', 'setup_complete')):
+			domain.setup_sidebar_items()
+			domain.setup_desktop_icons()
+			domain.set_default_portal_role()
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.js b/erpnext/selling/page/point_of_sale/point_of_sale.js
index adde913..b167bcd 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.js
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.js
@@ -991,7 +991,7 @@
 
 		this.get_items({search_value: search_term, item_group })
 			.then(({ items, serial_no, batch_no, barcode }) => {
-				if (search_term) {
+				if (search_term && !barcode) {
 					this.search_index[search_term] = items;
 				}
 
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.js b/erpnext/setup/doctype/sales_partner/sales_partner.js
index b1c18d6..30c2c91 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.js
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.js
@@ -3,7 +3,7 @@
 
 frappe.ui.form.on('Sales Partner', {
 	refresh: function(frm) {
-		frappe.dynamic_link = {doc: frm.doc, fieldname: 'name', doctype: 'Sales Person'}
+		frappe.dynamic_link = {doc: frm.doc, fieldname: 'name', doctype: 'Sales Partner'}
 
 		if(frm.doc.__islocal){
 			hide_field(['address_html', 'contact_html', 'address_contacts']);
diff --git a/erpnext/setup/setup_wizard/install_fixtures.py b/erpnext/setup/setup_wizard/install_fixtures.py
index e6a4a81..0f98214 100644
--- a/erpnext/setup/setup_wizard/install_fixtures.py
+++ b/erpnext/setup/setup_wizard/install_fixtures.py
@@ -14,12 +14,12 @@
 def install(country=None):
 	records = [
 		# domains
-		{ 'doctype': 'Domain', 'domain': _('Distribution')},
-		{ 'doctype': 'Domain', 'domain': _('Manufacturing')},
-		{ 'doctype': 'Domain', 'domain': _('Retail')},
-		{ 'doctype': 'Domain', 'domain': _('Services')},
-		{ 'doctype': 'Domain', 'domain': _('Education')},
-		{ 'doctype': 'Domain', 'domain': _('Healthcare')},
+		{ 'doctype': 'Domain', 'domain': 'Distribution'},
+		{ 'doctype': 'Domain', 'domain': 'Manufacturing'},
+		{ 'doctype': 'Domain', 'domain': 'Retail'},
+		{ 'doctype': 'Domain', 'domain': 'Services'},
+		{ 'doctype': 'Domain', 'domain': 'Education'},
+		{ 'doctype': 'Domain', 'domain': 'Healthcare'},
 
 		# Setup Progress
 		{'doctype': "Setup Progress", "actions": [
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index 766f9b5..28e617f 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -40,7 +40,7 @@
 
 	frappe.local.message_log = []
 	domain_settings = frappe.get_single('Domain Settings')
-	domain_settings.set_active_domains([_(args.get('domain'))])
+	domain_settings.set_active_domains([args.get('domain')])
 
 	frappe.db.commit()
 	login_as_first_user(args)
@@ -186,10 +186,6 @@
 	hr_settings.emp_created_by = "Naming Series"
 	hr_settings.save()
 
-	domain_settings = frappe.get_doc("Domain Settings")
-	domain_settings.append('active_domains', dict(domain=_(args.get('domain'))))
-	domain_settings.save()
-
 def create_feed_and_todo():
 	"""update Activity feed and create todo for creation of item, customer, vendor"""
 	add_info_comment(**{
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 9b49b69..626a9db 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -88,10 +88,11 @@
 				and item.source_warehouse = %s
 				and pro.status not in ("Stopped", "Completed")''', (self.item_code, self.warehouse))[0][0]
 
-		self.set_projected_qty()
+		if self.reserved_qty_for_production:
+			self.set_projected_qty()
 
-		self.db_set('reserved_qty_for_production', self.reserved_qty_for_production)
-		self.db_set('projected_qty', self.projected_qty)
+			self.db_set('reserved_qty_for_production', self.reserved_qty_for_production)
+			self.db_set('projected_qty', self.projected_qty)
 
 
 def update_item_projected_qty(item_code):
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 5315253..853b20d 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -14,8 +14,6 @@
 				]
 			}
 		});
-	// },
-	// onload_post_render: function(frm) {
 
 		frm.set_query('batch_no', 'items', function(doc, cdt, cdn) {
 			var item = locals[cdt][cdn];
@@ -40,9 +38,8 @@
 				}
 			}
 		});
-
-
 	},
+
 	refresh: function(frm) {
 		if(!frm.doc.docstatus) {
 			frm.add_custom_button(__('Make Material Request'), function() {
@@ -73,10 +70,12 @@
 			frm.trigger("toggle_display_account_head");
 		}
 	},
+
 	purpose: function(frm) {
 		frm.fields_dict.items.grid.refresh();
 		frm.cscript.toggle_related_fields(frm.doc);
 	},
+
 	company: function(frm) {
 		if(frm.doc.company) {
 			var company_doc = frappe.get_doc(":Company", frm.doc.company);
@@ -86,6 +85,7 @@
 			frm.trigger("toggle_display_account_head");
 		}
 	},
+
 	set_serial_no: function(frm, cdt, cdn) {
 		var d = frappe.model.get_doc(cdt, cdn);
 		if(!d.item_code && !d.s_warehouse && !d.qty) return;
@@ -104,20 +104,142 @@
 			}
 		});
 	},
+
 	toggle_display_account_head: function(frm) {
 		var enabled = erpnext.is_perpetual_inventory_enabled(frm.doc.company);
 		frm.fields_dict["items"].grid.set_column_disp(["cost_center", "expense_account"], enabled);
-	}
+	},
+
+	set_basic_rate: function(frm, cdt, cdn, callback) {
+		const item = locals[cdt][cdn];
+		item.transfer_qty = flt(item.qty) * flt(item.conversion_factor);
+
+		const args = {
+			'item_code'			: item.item_code,
+			'posting_date'		: frm.doc.posting_date,
+			'posting_time'		: frm.doc.posting_time,
+			'warehouse'			: cstr(item.s_warehouse) || cstr(item.t_warehouse),
+			'serial_no	'		: item.serial_no,
+			'company'			: frm.doc.company,
+			'qty'				: item.s_warehouse ? -1*flt(item.transfer_qty) : flt(item.transfer_qty)
+		};
+
+		frappe.call({
+			method: "erpnext.stock.utils.get_incoming_rate",
+			args: {
+				args: args
+			},
+			callback: function(r) {
+				frappe.model.set_value(cdt, cdn, 'basic_rate', r.message);
+				frm.events.calculate_basic_amount(frm, item);
+
+				if (callback) {
+					callback();
+				}
+			}
+		})
+	},
+
+	get_warehouse_details: function(frm, cdt, cdn, callback) {
+		var child = locals[cdt][cdn];
+		if(!child.bom_no) {
+			frappe.call({
+				method: "erpnext.stock.doctype.stock_entry.stock_entry.get_warehouse_details",
+				args: {
+					"args": {
+						'item_code': child.item_code,
+						'warehouse': cstr(child.s_warehouse) || cstr(child.t_warehouse),
+						'transfer_qty': child.transfer_qty,
+						'serial_no': child.serial_no,
+						'qty': child.s_warehouse ? -1* child.transfer_qty : child.transfer_qty,
+						'posting_date': frm.doc.posting_date,
+						'posting_time': frm.doc.posting_time
+					}
+				},
+				callback: function(r) {
+					if (!r.exc) {
+						$.extend(child, r.message);
+						frm.events.calculate_basic_amount(frm, child);
+					}
+
+					if (callback) {
+						callback();
+					}
+				}
+			});
+		}
+	},
+
+	calculate_basic_amount: function(frm, item) {
+		item.basic_amount = flt(flt(item.transfer_qty) * flt(item.basic_rate),
+			precision("basic_amount", item));
+
+		frm.events.calculate_amount(frm);
+	},
+
+	calculate_amount: function(frm) {
+		frm.events.calculate_total_additional_costs(frm);
+
+		const total_basic_amount = frappe.utils.sum(
+			(frm.doc.items || []).map(function(i) { return i.t_warehouse ? flt(i.basic_amount) : 0; })
+		);
+
+		for (let i in frm.doc.items) {
+			let item = frm.doc.items[i];
+
+			if (item.t_warehouse && total_basic_amount) {
+				item.additional_cost = (flt(item.basic_amount) / total_basic_amount) * frm.doc.total_additional_costs;
+			} else {
+				item.additional_cost = 0;
+			}
+
+			item.amount = flt(item.basic_amount + flt(item.additional_cost),
+				precision("amount", item));
+
+			item.valuation_rate = flt(flt(item.basic_rate)
+				+ (flt(item.additional_cost) / flt(item.transfer_qty)),
+				precision("valuation_rate", item));
+		}
+
+		refresh_field('items');
+	},
+
+	calculate_total_additional_costs: function(frm) {
+		const total_additional_costs = frappe.utils.sum(
+			(frm.doc.additional_costs || []).map(function(c) { return flt(c.amount); })
+		);
+
+		frm.set_value("total_additional_costs",
+			flt(total_additional_costs, precision("total_additional_costs")));
+	},
 })
 
 frappe.ui.form.on('Stock Entry Detail', {
 	qty: function(frm, cdt, cdn) {
-		frm.events.set_serial_no(frm, cdt, cdn);
+		frm.events.set_basic_rate(frm, cdt, cdn, () => {
+			frm.events.set_serial_no(frm, cdt, cdn);
+		});
+	},
+
+	conversion_factor: function(frm, cdt, cdn) {
+		frm.events.set_basic_rate(frm, cdt, cdn);
 	},
 
 	s_warehouse: function(frm, cdt, cdn) {
-		frm.events.set_serial_no(frm, cdt, cdn);
+		frm.events.get_warehouse_details(frm, cdt, cdn, () => {
+			frm.events.set_serial_no(frm, cdt, cdn);
+		});
 	},
+
+	t_warehouse: function(frm, cdt, cdn) {
+		frm.events.get_warehouse_details(frm, cdt, cdn);
+	},
+
+	basic_rate: function(frm, cdt, cdn) {
+		var item = locals[cdt][cdn];
+		frm.events.calculate_basic_amount(frm, item);
+	},
+
 	barcode: function(doc, cdt, cdn) {
 		var d = locals[cdt][cdn];
 		if (d.barcode) {
@@ -132,6 +254,7 @@
 			});
 		}
 	},
+
 	uom: function(doc, cdt, cdn) {
 		var d = locals[cdt][cdn];
 		if(d.uom && d.item_code){
@@ -150,6 +273,7 @@
 			});
 		}
 	},
+
 	item_code: function(frm, cdt, cdn) {
 		var d = locals[cdt][cdn];
 		if(d.item_code) {
@@ -191,7 +315,7 @@
 
 frappe.ui.form.on('Landed Cost Taxes and Charges', {
 	amount: function(frm) {
-		frm.events.calculate_amount();
+		frm.events.calculate_amount(frm);
 	}
 });
 
@@ -330,12 +454,6 @@
 		}
 	},
 
-	qty: function(doc, cdt, cdn) {
-		var d = locals[cdt][cdn];
-		d.transfer_qty = flt(d.qty) * flt(d.conversion_factor);
-		this.calculate_basic_amount(d);
-	},
-
 	production_order: function() {
 		var me = this;
 		this.toggle_enable_bom();
@@ -434,88 +552,6 @@
 		erpnext.setup_serial_no();
 	},
 
-	basic_rate: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
-		this.calculate_basic_amount(item);
-	},
-
-	s_warehouse: function(doc, cdt, cdn) {
-		this.get_warehouse_details(doc, cdt, cdn)
-	},
-
-	t_warehouse: function(doc, cdt, cdn) {
-		this.get_warehouse_details(doc, cdt, cdn)
-	},
-
-	get_warehouse_details: function(doc, cdt, cdn) {
-		var me = this;
-		var d = locals[cdt][cdn];
-		if(!d.bom_no) {
-			frappe.call({
-				method: "erpnext.stock.doctype.stock_entry.stock_entry.get_warehouse_details",
-				args: {
-					"args": {
-						'item_code': d.item_code,
-						'warehouse': cstr(d.s_warehouse) || cstr(d.t_warehouse),
-						'transfer_qty': d.transfer_qty,
-						'serial_no': d.serial_no,
-						'qty': d.s_warehouse ? -1* d.qty : d.qty,
-						'posting_date': this.frm.doc.posting_date,
-						'posting_time': this.frm.doc.posting_time
-					}
-				},
-				callback: function(r) {
-					if (!r.exc) {
-						$.extend(d, r.message);
-						me.calculate_basic_amount(d);
-					}
-				}
-			});
-		}
-	},
-
-	calculate_basic_amount: function(item) {
-		item.basic_amount = flt(flt(item.transfer_qty) * flt(item.basic_rate),
-			precision("basic_amount", item));
-
-		this.calculate_amount();
-	},
-
-	calculate_amount: function() {
-		this.calculate_total_additional_costs();
-
-		var total_basic_amount = frappe.utils.sum(
-			(this.frm.doc.items || []).map(function(i) { return i.t_warehouse ? flt(i.basic_amount) : 0; })
-		);
-
-		for (var i in this.frm.doc.items) {
-			var item = this.frm.doc.items[i];
-
-			if (item.t_warehouse && total_basic_amount) {
-				item.additional_cost = (flt(item.basic_amount) / total_basic_amount) * this.frm.doc.total_additional_costs;
-			} else {
-				item.additional_cost = 0;
-			}
-
-			item.amount = flt(item.basic_amount + flt(item.additional_cost),
-				precision("amount", item));
-
-			item.valuation_rate = flt(flt(item.basic_rate)
-				+ (flt(item.additional_cost) / flt(item.transfer_qty)),
-				precision("valuation_rate", item));
-		}
-
-		refresh_field('items');
-	},
-
-	calculate_total_additional_costs: function() {
-		var total_additional_costs = frappe.utils.sum(
-			(this.frm.doc.additional_costs || []).map(function(c) { return flt(c.amount); })
-		);
-
-		this.frm.set_value("total_additional_costs", flt(total_additional_costs, precision("total_additional_costs")));
-	},
-
 	toggle_related_fields: function(doc) {
 		this.frm.toggle_enable("from_warehouse", doc.purpose!='Material Receipt');
 		this.frm.toggle_enable("to_warehouse", doc.purpose!='Material Issue');
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index fc45f13..4d79e13 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -517,7 +517,7 @@
 		args['posting_date'] = self.posting_date
 		args['posting_time'] = self.posting_time
 
-		stock_and_rate = args.get('warehouse') and get_warehouse_details(args) or {}
+		stock_and_rate = get_warehouse_details(args) if args.get('warehouse') else {}
 		ret.update(stock_and_rate)
 
 		# automatically select batch for outgoing item
