diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index 48f9e96..ca3a2ae 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -162,7 +162,7 @@
 
 cur_frm.cscript.warehouse = function(doc, cdt , cdn) {
 	var d = locals[cdt][cdn];
-	if (!d.item_code) {alert("please enter item code first"); return};
+	if (!d.item_code) { msgprint("please enter item code first"); return };
 	if (d.warehouse) {
 		arg = "{'item_code':'" + d.item_code + "','warehouse':'" + d.warehouse +"'}";
 		get_server_fields('get_actual_qty',arg,'entries',doc,cdt,cdn,1);
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index 6b70d64..00a5bfa 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -902,7 +902,7 @@
 def get_bank_cash_account(mode_of_payment):
 	val = webnotes.conn.get_value("Mode of Payment", mode_of_payment, "default_account")
 	if not val:
-		webnotes.msgprint("Default Account not set in Mode of Payment: ")
+		webnotes.msgprint("Default Account not set in Mode of Payment: %s" % mode_of_payment)
 	return {
 		"cash_bank_account": val
 	}
\ No newline at end of file
diff --git a/production/doctype/bom/bom.js b/production/doctype/bom/bom.js
index aef14a9..9dffd6c 100644
--- a/production/doctype/bom/bom.js
+++ b/production/doctype/bom/bom.js
@@ -8,11 +8,11 @@
 // 
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 // GNU General Public License for more details.
 // 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 // On REFRESH
 cur_frm.cscript.refresh = function(doc,dt,dn){
@@ -50,33 +50,42 @@
 cur_frm.cscript.time_in_mins = cur_frm.cscript.hour_rate;
 
 
-cur_frm.cscript.item_code = function(doc,dt,dn) {
-	get_bom_material_detail(doc, dt, dn);
+cur_frm.cscript.item_code = function(doc, cdt, cdn) {
+	get_bom_material_detail(doc, cdt, cdn);
 }
 
 
-cur_frm.cscript.bom_no  = function(doc,dt,dn) {
-	get_bom_material_detail(doc, dt, dn);
+cur_frm.cscript.bom_no	= function(doc, cdt, cdn) {
+	get_bom_material_detail(doc, cdt, cdn);
 }
 
-
-var get_bom_material_detail= function(doc,dt,dn) {
-	var d = locals[dt][dn];
-	var callback = function(doc, dt, dn) {
-		calculate_rm_cost(doc, dt, dn);
-		calculate_total(doc);
-	}
-
-	var bom_no = (d.bom_no!=null) ? d.bom_no: ''
+var get_bom_material_detail= function(doc, cdt, cdn) {
+	var d = locals[cdt][cdn];
 	if (d.item_code) {
-		arg = {'item_code': d.item_code, 'bom_no': bom_no, 'qty': d.qty};
-		get_server_fields('get_bom_material_detail', JSON.stringify(arg), 'bom_materials', doc, dt, dn, 1, callback);
+		wn.call({
+			doc: cur_frm.doc,
+			method: "get_bom_material_detail",
+			args: {
+				'item_code': d.item_code, 
+				'bom_no': d.bom_no != null ? d.bom_no: '',
+				'qty': d.qty
+			},
+			callback: function(r) {
+				d = locals[cdt][cdn];
+				$.extend(d, r.message);
+				refresh_field("bom_materials");
+				doc = locals[doc.doctype][doc.name];
+				calculate_rm_cost(doc, cdt, cdn);
+				calculate_total(doc);
+			},
+			freeze: true
+		});
 	}
 }
 
 
-cur_frm.cscript.qty = function(doc, dt, dn) {
-	calculate_rm_cost(doc, dt, dn);
+cur_frm.cscript.qty = function(doc, cdt, cdn) {
+	calculate_rm_cost(doc, cdt, cdn);
 	calculate_total(doc);
 }
 
@@ -84,9 +93,9 @@
 cur_frm.cscript.rate = cur_frm.cscript.qty;
 
 
-cur_frm.cscript.is_default = function(doc, dt, dn) {
+cur_frm.cscript.is_default = function(doc, cdt, cdn) {
 	if (doc.docstatus == 1)
-		$c_obj(make_doclist(dt, dn), 'manage_default_bom', '', '');
+		$c_obj(make_doclist(cdt, cdn), 'manage_default_bom', '', '');
 }
 
 
@@ -97,11 +106,11 @@
 
 
 // Calculate Operating Cost
-var calculate_op_cost = function(doc, dt, dn) {  
+var calculate_op_cost = function(doc, dt, dn) {	
 	var op = getchildren('BOM Operation', doc.name, 'bom_operations');
 	total_op_cost = 0;
 	for(var i=0;i<op.length;i++) {
-		op_cost =  flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60;
+		op_cost =	flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60;
 		set_multiple('BOM Operation',op[i].name, {'operating_cost': op_cost}, 'bom_operations');
 		total_op_cost += op_cost;
 	}
@@ -111,11 +120,11 @@
 
 
 // Calculate Raw Material Cost
-var calculate_rm_cost = function(doc, dt, dn) {  
+var calculate_rm_cost = function(doc, dt, dn) {	
 	var rm = getchildren('BOM Item', doc.name, 'bom_materials');
 	total_rm_cost = 0;
 	for(var i=0;i<rm.length;i++) {
-		amt =  flt(rm[i].rate) * flt(rm[i].qty);
+		amt =	flt(rm[i].rate) * flt(rm[i].qty);
 		set_multiple('BOM Item',rm[i].name, {'amount': amt}, 'bom_materials');
 		set_multiple('BOM Item',rm[i].name, {'qty_consumed_per_unit': flt(rm[i].qty)/flt(doc.quantity)}, 'bom_materials');
 		total_rm_cost += amt;
diff --git a/production/doctype/bom/bom.py b/production/doctype/bom/bom.py
index c0ef31c..ac21d21 100644
--- a/production/doctype/bom/bom.py
+++ b/production/doctype/bom/bom.py
@@ -86,10 +86,13 @@
 
 
 
-	def get_bom_material_detail(self, arg):
+	def get_bom_material_detail(self):
 		""" Get raw material details like uom, desc and rate"""
+
+		arg = webnotes.form_dict.get('args')
 		import json
 		arg = json.loads(arg)
+		
 		item = self.get_item_det(arg['item_code'])
 		self.validate_rm_item(item)
 		
@@ -98,10 +101,10 @@
 
 		rate = self.get_rm_rate(arg)
 		ret_item = {
-					 'description'  : item and arg['description'] or '',
-					 'stock_uom'	: item and arg['stock_uom'] or '',
-					 'bom_no'		: arg['bom_no'],
-					 'rate'			: rate
+			 'description'  : item and arg['description'] or '',
+			 'stock_uom'	: item and arg['stock_uom'] or '',
+			 'bom_no'		: arg['bom_no'],
+			 'rate'			: rate
 		}
 		return ret_item
 
