diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index a6040f0..823132d 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1 +1 @@
-__version__ = '4.21.0'
+__version__ = '4.21.1'
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 99aaff0..8013529 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -4,7 +4,7 @@
 app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "4.21.0"
+app_version = "4.21.1"
 
 error_report_email = "support@erpnext.com"
 
diff --git a/erpnext/public/js/transaction.js b/erpnext/public/js/transaction.js
index 6d38b46..e1e78a3 100644
--- a/erpnext/public/js/transaction.js
+++ b/erpnext/public/js/transaction.js
@@ -404,23 +404,27 @@
 	_set_values_for_item_list: function(children) {
 		var me = this;
 		var price_list_rate_changed = false;
-		$.each(children, function(i, d) {
+		for(var i=0, l=children.length; i<l; i++) {
+			var d = children[i];
 			var existing_pricing_rule = frappe.model.get_value(d.doctype, d.name, "pricing_rule");
-			$.each(d, function(k, v) {
+
+			for(var k in d) {
+				var v = d[k];
 				if (["doctype", "name"].indexOf(k)===-1) {
 					if(k=="price_list_rate") {
 						if(flt(v) != flt(d.price_list_rate)) price_list_rate_changed = true;
 					}
 					frappe.model.set_value(d.doctype, d.name, k, v);
 				}
-			});
+			}
+
 			// if pricing rule set as blank from an existing value, apply price_list
 			if(!me.frm.doc.ignore_pricing_rule && existing_pricing_rule && !d.pricing_rule) {
 				me.apply_price_list(frappe.get_doc(d.doctype, d.name));
 			}
+		}
 
-			if(!price_list_rate_changed) me.calculate_taxes_and_totals();
-		});
+		if(!price_list_rate_changed) me.calculate_taxes_and_totals();
 	},
 
 	apply_price_list: function(item) {
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index e04abbb..abc0859 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -138,10 +138,11 @@
 				pr_qty = flt(d.qty) * flt(d.conversion_factor)
 
 				if pr_qty:
+					val_rate_db_precision = 6 if cint(self.precision("valuation_rate")) <= 6 else 9
 					sl_entries.append(self.get_sl_entries(d, {
 						"actual_qty": flt(pr_qty),
 						"serial_no": cstr(d.serial_no).strip(),
-						"incoming_rate": d.valuation_rate
+						"incoming_rate": flt(d.valuation_rate, val_rate_db_precision)
 					}))
 
 				if flt(d.rejected_qty) > 0:
@@ -288,14 +289,16 @@
 			if d.item_code in stock_items and flt(d.valuation_rate) and flt(d.qty):
 				if warehouse_account.get(d.warehouse):
 
+					val_rate_db_precision = 6 if cint(self.precision("valuation_rate")) <= 6 else 9
+
 					# warehouse account
 					gl_entries.append(self.get_gl_dict({
 						"account": warehouse_account[d.warehouse],
 						"against": stock_rbnb,
 						"cost_center": d.cost_center,
 						"remarks": self.get("remarks") or _("Accounting Entry for Stock"),
-						"debit": flt(flt(d.valuation_rate) * flt(d.qty) * flt(d.conversion_factor),
-							self.precision("valuation_rate", d))
+						"debit": flt(flt(d.valuation_rate, val_rate_db_precision) * flt(d.qty) * flt(d.conversion_factor),
+							self.precision("base_amount", d))
 					}))
 
 					# stock received but not billed
@@ -329,6 +332,24 @@
 							"credit": flt(d.rm_supp_cost)
 						}))
 
+					# divisional loss adjustment
+					if not self.get("other_charges"):
+						sle_valuation_amount = flt(flt(d.valuation_rate, val_rate_db_precision) * flt(d.qty) * flt(d.conversion_factor),
+								self.precision("base_amount", d))
+
+						distributed_amount = flt(flt(d.base_amount, self.precision("base_amount", d))) + \
+							flt(d.landed_cost_voucher_amount) + flt(d.rm_supp_cost)
+
+						divisional_loss = flt(distributed_amount - sle_valuation_amount, self.precision("base_amount", d))
+						if divisional_loss:
+							gl_entries.append(self.get_gl_dict({
+								"account": stock_rbnb,
+								"against": warehouse_account[d.warehouse],
+								"cost_center": d.cost_center,
+								"remarks": self.get("remarks") or _("Accounting Entry for Stock"),
+								"debit": divisional_loss
+							}))
+
 				elif d.warehouse not in warehouse_with_no_account or \
 					d.rejected_warehouse not in warehouse_with_no_account:
 						warehouse_with_no_account.append(d.warehouse)
diff --git a/setup.py b/setup.py
index aa408de..d87fb62 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 from setuptools import setup, find_packages
 import os
 
-version = "4.21.0"
+version = "4.21.1"
 
 with open("requirements.txt", "r") as f:
 	install_requires = f.readlines()
