diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 0144108..d1b6584 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -363,3 +363,31 @@
 
 	from frappe.utils import get_number_format_info
 	return get_number_format_info(currency_format)[2]
+
+def get_stock_rbnb_difference(posting_date, company):
+	stock_items = frappe.db.sql_list("""select distinct item_code
+		from `tabStock Ledger Entry` where company=%s""", company)
+
+	pr_valuation_amount = frappe.db.sql("""
+		select sum(ifnull(pr_item.valuation_rate, 0) * ifnull(pr_item.qty, 0) * ifnull(pr_item.conversion_factor, 0))
+		from `tabPurchase Receipt Item` pr_item, `tabPurchase Receipt` pr
+	    where pr.name = pr_item.parent and pr.docstatus=1 and pr.company=%s
+		and pr.posting_date <= %s and pr_item.item_code in (%s)""" %
+	    ('%s', '%s', ', '.join(['%s']*len(stock_items))), tuple([company, posting_date] + stock_items))[0][0]
+
+	pi_valuation_amount = frappe.db.sql("""
+		select sum(ifnull(pi_item.valuation_rate, 0) * ifnull(pi_item.qty, 0) * ifnull(pi_item.conversion_factor, 0))
+		from `tabPurchase Invoice Item` pi_item, `tabPurchase Invoice` pi
+	    where pi.name = pi_item.parent and pi.docstatus=1 and pi.company=%s
+		and pi.posting_date <= %s and pi_item.item_code in (%s)""" %
+	    ('%s', '%s', ', '.join(['%s']*len(stock_items))), tuple([company, posting_date] + stock_items))[0][0]
+
+	# Balance should be
+	stock_rbnb = flt(pr_valuation_amount, 2) - flt(pi_valuation_amount, 2)
+
+	# Balance as per system
+	stock_rbnb_account = "Stock Received But Not Billed - " + frappe.db.get_value("Company", company, "abbr")
+	sys_bal = get_balance_on(stock_rbnb_account, posting_date)
+
+	# Amount should be credited
+	return flt(stock_rbnb) + flt(sys_bal)
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 7fc858d..1ae0a95 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -73,3 +73,4 @@
 execute:frappe.delete_doc("Page", "trial-balance") #2014-07-22
 erpnext.patches.v4_2.delete_old_print_formats #2014-07-29
 erpnext.patches.v4_2.toggle_rounded_total #2014-07-30
+erpnext.patches.v4_2.fix_account_master_type
diff --git a/erpnext/patches/v4_2/fix_account_master_type.py b/erpnext/patches/v4_2/fix_account_master_type.py
new file mode 100644
index 0000000..09fa789
--- /dev/null
+++ b/erpnext/patches/v4_2/fix_account_master_type.py
@@ -0,0 +1,12 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+	for d in frappe.db.sql("""select name from `tabAccount`
+		where ifnull(master_type, '') not in ('Customer', 'Supplier', 'Employee', '')"""):
+			ac = frappe.get_doc("Account", d[0])
+			ac.master_type = None
+			ac.save()
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 7dca72a..96b2cd5 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -211,10 +211,9 @@
 				},
 				callback: function(r) {
 					if(!r.exc) {
-						var jv_name = frappe.model.make_new_doc_and_get_name('Journal Voucher');
-						var jv = locals["Journal Voucher"][jv_name];
-						$.extend(jv, r.message);
-						loaddoc("Journal Voucher", jv_name);
+						var doclist = frappe.model.sync(r.message);
+						frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
+
 					}
 				}
 			});
@@ -266,20 +265,20 @@
 
 	customer: function() {
 		this.get_party_details({
-			party: this.frm.doc.customer, 
-			party_type:"Customer", 
+			party: this.frm.doc.customer,
+			party_type:"Customer",
 			doctype: this.frm.doc.doctype
 		});
 	},
 
 	supplier: function() {
 		this.get_party_details({
-			party: this.frm.doc.supplier, 
-			party_type:"Supplier", 
+			party: this.frm.doc.supplier,
+			party_type:"Supplier",
 			doctype: this.frm.doc.doctype
 		});
 	},
-	
+
 	get_party_details: function(args) {
 		var me = this;
 		frappe.call({
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 7629c3c..861d967 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -780,14 +780,10 @@
 	from erpnext.accounts.utils import get_balance_on
 	for r in result:
 		jv.append("entries", {
-			"__islocal": 1,
-			"doctype": "Journal Voucher Detail",
-			"parentfield": "entries",
 			"account": r.get("account"),
 			"against_invoice": r.get("against_invoice"),
 			"against_voucher": r.get("against_voucher"),
-			"balance": get_balance_on(r.get("account"), se.posting_date) \
-				if r.get("account") else 0
+			"balance": get_balance_on(r.get("account"), se.posting_date) if r.get("account") else 0
 		})
 
 	return jv
