diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index ca4ca92..0ac1b5e 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -188,11 +188,18 @@
 
 // Get Items based on SO or DN Selected
 cur_frm.cscript.get_items = function(doc, dt, dn) {
-	var callback = function(r,rt) {
-		unhide_field(['customer_address','contact_person', 'territory','customer_group']);
-		cur_frm.refresh_fields();
+	if(doc.delivery_note_main) {
+		wn.model.map_current_doc({
+			method: "selling.doctype.delivery_note.delivery_note.make_sales_invoice",
+			source_name: cur_frm.doc.delivery_note_main,
+		})
 	}
-	get_server_fields('pull_details','','',doc, dt, dn,1,callback);
+	else if(doc.sales_order_main) {
+		wn.model.map_current_doc({
+			method: "selling.doctype.sales_order.sales_order.make_sales_invoice",
+			source_name: cur_frm.doc.sales_order_main,
+		})
+	}
 }
 
 
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index aad79da..c155636 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -293,33 +293,25 @@
 		
 		if self.doc.debit_to:
 			self.doc.customer = webnotes.conn.get_value('Account',self.doc.debit_to,'master_name')
+		
+	def update_accounts(self):
+		if not self.doc.debit_to:
+			self.doc.debit_to = self.get_debit_to().get("debit_to")
 
+		self.get_income_expense_account('entries')
 
-	def pull_details(self):
-		"""Pull Details of Delivery Note or Sales Order Selected"""
-		if self.doc.delivery_note_main:
-			self.validate_prev_docname('delivery note')
-			self.doclist = self.doc.clear_table(self.doclist,'other_charges')			
-			self.doclist = get_obj('DocType Mapper', 'Delivery Note-Sales Invoice').dt_map(
-				'Delivery Note', 'Sales Invoice', self.doc.delivery_note_main, self.doc, 
-				self.doclist, """[['Delivery Note', 'Sales Invoice'],
-					['Delivery Note Item', 'Sales Invoice Item'],
-					['Sales Taxes and Charges','Sales Taxes and Charges'],
-					['Sales Team','Sales Team']]""")								
-			self.get_income_expense_account('entries')
-			
-		elif self.doc.sales_order_main:
-			self.validate_prev_docname('sales order')
-			self.doclist = self.doc.clear_table(self.doclist,'other_charges')
-			get_obj('DocType Mapper', 'Sales Order-Sales Invoice').dt_map('Sales Order', 
-				'Sales Invoice', self.doc.sales_order_main, self.doc, self.doclist, 
-				"""[['Sales Order', 'Sales Invoice'],['Sales Order Item', 'Sales Invoice Item'], 
-				['Sales Taxes and Charges','Sales Taxes and Charges'], 
-				['Sales Team', 'Sales Team']]""")
-			self.get_income_expense_account('entries')
-			
-		ret = self.get_debit_to()
-		self.doc.debit_to = ret.get('debit_to')
+	def get_income_expense_account(self,doctype):
+		auto_inventory_accounting = cint(webnotes.defaults.get_global_default("auto_inventory_accounting"))
+		default_cost_center = webnotes.conn.get_value("Company", self.doc.company, "cost_center")
+		for d in getlist(self.doclist, doctype):			
+			if d.item_code:
+				item = webnotes.conn.get_value("Item", d.item_code, ["default_income_account", 
+					"default_sales_cost_center", "purchase_account"], as_dict=True)
+				d.income_account = item['default_income_account'] or ""
+				d.cost_center = item['default_sales_cost_center'] or default_cost_center
+				
+				if auto_inventory_accounting and cint(self.doc.update_stock):
+					d.expense_account = item['purchase_account'] or ""
 
 	def get_barcode_details(self, barcode):
 		return get_obj('Sales Common').get_barcode_details(barcode)
@@ -345,18 +337,6 @@
 		
 	def get_company_abbr(self):
 		return webnotes.conn.sql("select abbr from tabCompany where name=%s", self.doc.company)[0][0]
-		
-		
-	def validate_prev_docname(self,doctype):
-		"""Check whether sales order / delivery note items already pulled"""
-		for d in getlist(self.doclist, 'entries'): 
-			if doctype == 'delivery note' and self.doc.delivery_note_main == d.delivery_note:
-				msgprint(cstr(self.doc.delivery_note_main) + " delivery note details have already been pulled.")
-				raise Exception , "Validation Error. Delivery note details have already been pulled."
-			elif doctype == 'sales order' and self.doc.sales_order_main == d.sales_order and not d.delivery_note:
-				msgprint(cstr(self.doc.sales_order_main) + " sales order details have already been pulled.")
-				raise Exception , "Validation Error. Sales order details have already been pulled."
-
 
 	def update_against_document_in_jv(self):
 		"""
diff --git a/selling/doctype/sales_order/sales_order.js b/selling/doctype/sales_order/sales_order.js
index daedfab..4bb2fa3 100644
--- a/selling/doctype/sales_order/sales_order.js
+++ b/selling/doctype/sales_order/sales_order.js
@@ -211,19 +211,10 @@
 
 
 cur_frm.cscript['Make Sales Invoice'] = function() {
-	var doc = cur_frm.doc;
-
-	n = wn.model.make_new_doc_and_get_name('Sales Invoice');
-	$c('dt_map', args={
-		'docs':wn.model.compress([locals['Sales Invoice'][n]]),
-		'from_doctype':doc.doctype,
-		'to_doctype':'Sales Invoice',
-		'from_docname':doc.name,
-		'from_to_list':"[['Sales Order','Sales Invoice'],['Sales Order Item','Sales Invoice Item'],['Sales Taxes and Charges','Sales Taxes and Charges'],['Sales Team','Sales Team']]"
-		}, function(r,rt) {
-			 loaddoc('Sales Invoice', n);
-		}
-	);
+	wn.model.open_mapped_doc({
+		method: "selling.doctype.sales_order.sales_order.make_sales_invoice",
+		source_name: cur_frm.doc.name
+	})
 }
 
 
diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py
index 019b699..b8362b5 100644
--- a/selling/doctype/sales_order/sales_order.py
+++ b/selling/doctype/sales_order/sales_order.py
@@ -84,9 +84,6 @@
 	def validate_fiscal_year(self):
 		get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,self.doc.transaction_date,'Sales Order Date')
 	
-	def validate_reference_value(self):
-		get_obj('DocType Mapper', 'Quotation-Sales Order', with_children = 1).validate_reference_value(self, self.doc.name)
-
 	def validate_mandatory(self):
 		# validate transaction date v/s delivery date
 		if self.doc.delivery_date:
@@ -190,7 +187,6 @@
 		self.validate_mandatory()
 		self.validate_proj_cust()
 		self.validate_po()
-		#self.validate_reference_value()
 		
 		if self.doc.docstatus == 1:
 			self.validate_for_items()
@@ -447,3 +443,43 @@
 	}, target_doclist)
 	
 	return [d.fields for d in doclist]
+
+@webnotes.whitelist()
+def make_sales_invoice(source_name, target_doclist=None):
+	from webnotes.model.mapper import get_mapped_doclist
+	
+	def update_item(obj, target):
+		target.export_amount = (flt(obj.amount) - flt(obj.billed_amt))* flt(obj.export_rate)/flt(obj.basic_rate)
+		target.qty = obj.basic_rate and (flt(obj.amount) - flt(obj.billed_amt))/flt(obj.basic_rate) or obj.qty
+		target.amount = flt(obj.amount) - flt(obj.billed_amt)
+		
+	def update_accounts(source, target):
+		si = webnotes.bean(target)
+		si.run_method("update_accounts")
+	
+	doclist = get_mapped_doclist("Sales Order", source_name, {
+		"Sales Order": {
+			"doctype": "Sales Invoice", 
+			"validation": {
+				"docstatus": ["=", 1]
+			}
+		}, 
+		"Sales Order Item": {
+			"doctype": "Sales Invoice Item", 
+			"field_map": {
+				"name": "so_detail", 
+				"parent": "sales_order", 
+				"reserved_warehouse": "warehouse"
+			},
+			"postprocess": update_item,
+			"condition": lambda doc: doc.amount==0 or doc.billed_amt < doc.amount
+		}, 
+		"Sales Taxes and Charges": {
+			"doctype": "Sales Taxes and Charges", 
+		}, 
+		"Sales Team": {
+			"doctype": "Sales Team", 
+		}
+	}, target_doclist, update_accounts)
+	
+	return [d.fields for d in doclist]
diff --git a/selling/doctype/sales_order/test_sales_order.py b/selling/doctype/sales_order/test_sales_order.py
index 00af81f..dd0cd44 100644
--- a/selling/doctype/sales_order/test_sales_order.py
+++ b/selling/doctype/sales_order/test_sales_order.py
@@ -33,6 +33,30 @@
 		self.assertEquals(dn[0]["doctype"], "Delivery Note")
 		self.assertEquals(len(dn), len(sales_order.doclist))
 
+	def test_make_sales_invoice(self):
+		from selling.doctype.sales_order.sales_order import make_sales_invoice
+
+		so = webnotes.bean(copy=test_records[0]).insert()
+
+		self.assertRaises(webnotes.ValidationError, make_sales_invoice, 
+			so.doc.name)
+
+		sales_order = webnotes.bean("Sales Order", so.doc.name)
+		sales_order.submit()
+		si = make_sales_invoice(so.doc.name)
+		
+		self.assertEquals(si[0]["doctype"], "Sales Invoice")
+		self.assertEquals(len(si), len(sales_order.doclist))
+		self.assertEquals(len([d for d in si if d["doctype"]=="Sales Invoice Item"]), 1)
+		
+		si = webnotes.bean(si)
+		si.insert()
+		si.submit()
+
+		si1 = make_sales_invoice(so.doc.name)
+		self.assertEquals(len([d for d in si1 if d["doctype"]=="Sales Invoice Item"]), 0)
+		
+
 	def create_so(self, so_doclist = None):
 		if not so_doclist:
 			so_doclist =test_records[0]
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index 2ae699e..5a3f0ca 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -108,7 +108,6 @@
 		sales_com_obj.check_stop_sales_order(self)
 		sales_com_obj.check_active_sales_items(self)
 		sales_com_obj.get_prevdoc_date(self)
-		self.validate_reference_value()
 		self.validate_for_items()
 		self.validate_warehouse()
 		
@@ -131,17 +130,6 @@
 				msgprint("Customer - %s does not belong to project - %s. \n\nIf you want to use project for multiple customers then please make customer details blank in project - %s."%(self.doc.customer,self.doc.project_name,self.doc.project_name))
 				raise Exception
 
-
-	def validate_reference_value(self):
-		"""Validate values with reference document with previous document"""
-		validate_ref = any([d.prevdoc_docname for d in self.doclist.get({"parentfield": self.fname})
-			if d.prevdoc_doctype == "Sales Order"])
-		
-		if validate_ref:
-			get_obj('DocType Mapper', 'Sales Order-Delivery Note', 
-				with_children = 1).validate_reference_value(self, self.doc.name)
-
-
 	def validate_for_items(self):
 		check_list, chk_dupl_itm = [], []
 		for d in getlist(self.doclist,'delivery_note_details'):
diff --git a/stock/doctype/item/item.js b/stock/doctype/item/item.js
index 2cc0b07..7a731d2 100644
--- a/stock/doctype/item/item.js
+++ b/stock/doctype/item/item.js
@@ -40,7 +40,7 @@
 
 cur_frm.cscript.make_dashboard = function() {
 	cur_frm.dashboard.reset();
-	if(doc.__islocal) 
+	if(cur_frm.doc.__islocal) 
 		return;
 }
 
diff --git a/stock/doctype/item/test_item.py b/stock/doctype/item/test_item.py
index 35cad9d..38f1d97 100644
--- a/stock/doctype/item/test_item.py
+++ b/stock/doctype/item/test_item.py
@@ -62,7 +62,8 @@
 		"is_pro_applicable": "No",
 		"is_sub_contracted_item": "No",
 		"stock_uom": "_Test UOM",
-		"default_warehouse": "_Test Warehouse"
+		"default_income_account": "Sales - _TC",
+		"default_warehouse": "_Test Warehouse",
 	}, {
 		"doctype": "Item Reorder",
 		"parentfield": "item_reorder",
@@ -85,6 +86,7 @@
 		"description": "_Test Item Home Desktop 100",
 		"item_group": "_Test Item Group Desktops",
 		"default_warehouse": "_Test Warehouse",
+		"default_income_account": "Sales - _TC",
 		"is_stock_item": "Yes",
 		"is_asset_item": "No",
 		"has_batch_no": "No",
@@ -110,6 +112,7 @@
 		"description": "_Test Item Home Desktop 200",
 		"item_group": "_Test Item Group Desktops",
 		"default_warehouse": "_Test Warehouse",
+		"default_income_account": "Sales - _TC",
 		"is_stock_item": "Yes",
 		"is_asset_item": "No",
 		"has_batch_no": "No",
@@ -129,6 +132,7 @@
 		"item_name": "_Test Sales BOM Item",
 		"description": "_Test Sales BOM Item",
 		"item_group": "_Test Item Group Desktops",
+		"default_income_account": "Sales - _TC",
 		"is_stock_item": "No",
 		"is_asset_item": "No",
 		"has_batch_no": "No",
@@ -150,6 +154,7 @@
 		"item_group": "_Test Item Group Desktops",
 		"is_stock_item": "Yes",
 		"default_warehouse": "_Test Warehouse",
+		"default_income_account": "Sales - _TC",
 		"is_asset_item": "No",
 		"has_batch_no": "No",
 		"has_serial_no": "No",
