[mapper] sales order-sales invoice added condition
diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py
index ce32d9b..b8362b5 100644
--- a/selling/doctype/sales_order/sales_order.py
+++ b/selling/doctype/sales_order/sales_order.py
@@ -471,7 +471,8 @@
 				"parent": "sales_order", 
 				"reserved_warehouse": "warehouse"
 			},
-			"postprocess": update_item
+			"postprocess": update_item,
+			"condition": lambda doc: doc.amount==0 or doc.billed_amt < doc.amount
 		}, 
 		"Sales Taxes and Charges": {
 			"doctype": "Sales Taxes and Charges", 
diff --git a/selling/doctype/sales_order/test_sales_order.py b/selling/doctype/sales_order/test_sales_order.py
index 6ec8802..dd0cd44 100644
--- a/selling/doctype/sales_order/test_sales_order.py
+++ b/selling/doctype/sales_order/test_sales_order.py
@@ -43,10 +43,19 @@
 
 		sales_order = webnotes.bean("Sales Order", so.doc.name)
 		sales_order.submit()
-		dn = make_sales_invoice(so.doc.name)
+		si = make_sales_invoice(so.doc.name)
 		
-		self.assertEquals(dn[0]["doctype"], "Sales Invoice")
-		self.assertEquals(len(dn), len(sales_order.doclist))
+		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:
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",