diff --git a/accounts/doctype/payment_to_invoice_matching_tool/test_payment_to_invoice_matching_tool.py b/accounts/doctype/payment_to_invoice_matching_tool/test_payment_to_invoice_matching_tool.py
index 92c9e78..870147a 100644
--- a/accounts/doctype/payment_to_invoice_matching_tool/test_payment_to_invoice_matching_tool.py
+++ b/accounts/doctype/payment_to_invoice_matching_tool/test_payment_to_invoice_matching_tool.py
@@ -18,169 +18,171 @@
 import unittest
 import webnotes
 
-from webnotes.model.doc import Document
-from webnotes.model.code import get_obj
-from webnotes.utils import cstr, flt
-sql = webnotes.conn.sql
+test_records = []
 
-class TestInternalReco(unittest.TestCase):
-	def setUp(self):
-		webnotes.conn.begin()
-		
-		comp1.save(1)
-		cust1.save(1)
-		bank1.save(1)
-		rv1.save(1)
-		rv_gle.save(1)
-
-
-		for t in jv1: t.save(1)
-		for t in jv1[1:]:
-			sql("update `tabJournal Voucher Detail` set parent = '%s' where name = '%s'" % (jv1[0].name, t.name))
-			
-		ir[0].save()
-		for t in ir[1:]:
-			t.save(1)
-			sql("update `tabPayment to Invoice Matching Tool Detail` set voucher_no = '%s', voucher_detail_no = '%s' where parent = 'Payment to Invoice Matching Tool'" % (jv1[0].name, jv1[1].name))
-		
-		
-		sql("update `tabGL Entry` set voucher_no = %s, against_voucher = %s where voucher_no = 'rv1'", (rv1.name, rv1.name))
-		sql("update `tabSingles` set value = %s where doctype = 'Payment to Invoice Matching Tool' and field = 'voucher_no'", rv1.name)
-		
-		
-		self.ir = get_obj('Payment to Invoice Matching Tool', with_children=1)		
-		self.ir.reconcile()
-		
-	#===========================
-	def test_jv(self):
-		"""
-			Test whether JV has benn properly splitted and against doc has been updated
-		"""
-		amt_against_doc = [[cstr(d[0]), flt(d[1]), flt(d[2])]for d in sql("select against_invoice, debit, credit from `tabJournal Voucher Detail` where parent = %s and account = 'cust1 - c1'", jv1[0].name)]
-		self.assertTrue(amt_against_doc == [[rv1.name, 0, 100.0], ['', 0, 400.0]])
-
-	#============================		
-	def test_gl_entry(self):
-		"""
-			Check proper gl entry has been made
-		"""
-		gle = [[cstr(d[0]), flt(d[1])] for d in sql("select against_voucher, sum(credit) - sum(debit) from `tabGL Entry` where voucher_no = %s and account = 'cust1 - c1' and ifnull(is_cancelled, 'No') = 'No' group by against_voucher", jv1[0].name)]
-
-		self.assertTrue([rv1.name, 100.0] in gle)
-		self.assertTrue(['', 400.0] in gle)
-		
-	#============================
-	def test_outstanding(self):
-		"""
-			Check whether Outstanding amount has been properly updated in RV
-		"""
-		amt = sql("select outstanding_amount from `tabSales Invoice` where name = '%s'" % rv1.name)[0][0]
-		self.assertTrue(amt == 0)
-		
-	#============================
-	def tearDown(self):
-		webnotes.conn.rollback()
-	
-
-
-
-# test data
-#---------------
-rv1 = Document(fielddata={
-		'doctype':'Sales Invoice',
-		'docstatus':1,
-		'debit_to':'cust1 - c1',
-		'grand_total': 100,
-		'outstanding_amount': 100,
-		'name': 'rv1'
-	})
-	
-jv1 = [Document(fielddata={
-		'doctype':'Journal Voucher',
-		'docstatus':1,
-		'cheque_no': '163567',
-		'docstatus':1,
-		'company': 'comp1',
-		'posting_date' : '2011-05-02',
-		'remark': 'test data',
-		'fiscal_year': '2011-2012',
-		'total_debit': 500,
-		'total_credit': 500
-	}),
-	Document(fielddata = {
-		'parenttype':'Journal Voucher',
-		'parentfield':'entries',
-		'doctype':'Journal Voucher Detail',
-		'account' : 'cust1 - c1',
-		'credit':500,
-		'debit' : 0,
-		'docstatus':1
-	}),
-	Document(fielddata = {
-		'parenttype':'Journal Voucher',
-		'parentfield':'entries',
-		'doctype':'Journal Voucher Detail',
-		'account' : 'bank1 - c1',
-		'credit':0,
-		'debit' : 500,
-		'docstatus':1
-	})]
-	
-ir = [Document(fielddata = {
-		'doctype':'Payment to Invoice Matching Tool',
-		'name' : 'Payment to Invoice Matching Tool',
-		'account':'cust1 - c1',
-		'voucher_type' : 'Sales Invoice',
-		'voucher_no': 'rv1'
-	}),
-	Document(fielddata = {
-		'parenttype':'Payment to Invoice Matching Tool',
-		'parentfield':'ir_payment_details',
-		'doctype':'Payment to Invoice Matching Tool Detail',
-		'parent': 'Payment to Invoice Matching Tool',
-		'voucher_no': 'jv1',
-		'name' : '123112',
-		'voucher_detail_no' : 'jvd1',
-		'selected' : 1,
-		'amt_due' : 500,
-		'amt_to_be_reconciled':100
-	})]
-	
-cust1 = Document(fielddata={
-		'doctype':'Account',
-		'docstatus':0,
-		'account_name' : 'cust1',
-		'debit_or_credit': 'Debit',
-		'company' : 'comp1',
-		'lft': 1,
-		'rgt': 2
-	})
-	
-bank1 = Document(fielddata={
-		'doctype':'Account',
-		'docstatus':0,
-		'account_name' : 'bank1',
-		'debit_or_credit': 'Debit',
-		'company' : 'comp1',
-		'lft': 3,
-		'rgt': 4
-	})	
-	
-comp1 = Document(fielddata={
-		'doctype':'Company',
-		'abbr': 'c1',
-		'company_name' : 'comp1',
-		'name': 'comp1'
-	})
-	
-rv_gle = Document(fielddata={
-		'doctype':'GL Entry',
-		'account': 'cust1 - c1',
-		'company' : 'comp1',
-		'voucher_no': 'rv1',
-		'against_voucher': 'rv1',
-		'against_voucher_type': 'Sales Invoice',
-		'voucher_type' : 'Sales Invoice',
-		'debit': 100,
-		'credit': 0
-	})
+# from webnotes.model.doc import Document
+# from webnotes.model.code import get_obj
+# from webnotes.utils import cstr, flt
+# sql = webnotes.conn.sql
+# 
+# class TestInternalReco(unittest.TestCase):
+# 	def setUp(self):
+# 		webnotes.conn.begin()
+# 		
+# 		comp1.save(1)
+# 		cust1.save(1)
+# 		bank1.save(1)
+# 		rv1.save(1)
+# 		rv_gle.save(1)
+# 
+# 
+# 		for t in jv1: t.save(1)
+# 		for t in jv1[1:]:
+# 			sql("update `tabJournal Voucher Detail` set parent = '%s' where name = '%s'" % (jv1[0].name, t.name))
+# 			
+# 		ir[0].save()
+# 		for t in ir[1:]:
+# 			t.save(1)
+# 			sql("update `tabPayment to Invoice Matching Tool Detail` set voucher_no = '%s', voucher_detail_no = '%s' where parent = 'Payment to Invoice Matching Tool'" % (jv1[0].name, jv1[1].name))
+# 		
+# 		
+# 		sql("update `tabGL Entry` set voucher_no = %s, against_voucher = %s where voucher_no = 'rv1'", (rv1.name, rv1.name))
+# 		sql("update `tabSingles` set value = %s where doctype = 'Payment to Invoice Matching Tool' and field = 'voucher_no'", rv1.name)
+# 		
+# 		
+# 		self.ir = get_obj('Payment to Invoice Matching Tool', with_children=1)		
+# 		self.ir.reconcile()
+# 		
+# 	#===========================
+# 	def test_jv(self):
+# 		"""
+# 			Test whether JV has benn properly splitted and against doc has been updated
+# 		"""
+# 		amt_against_doc = [[cstr(d[0]), flt(d[1]), flt(d[2])]for d in sql("select against_invoice, debit, credit from `tabJournal Voucher Detail` where parent = %s and account = 'cust1 - c1'", jv1[0].name)]
+# 		self.assertTrue(amt_against_doc == [[rv1.name, 0, 100.0], ['', 0, 400.0]])
+# 
+# 	#============================		
+# 	def test_gl_entry(self):
+# 		"""
+# 			Check proper gl entry has been made
+# 		"""
+# 		gle = [[cstr(d[0]), flt(d[1])] for d in sql("select against_voucher, sum(credit) - sum(debit) from `tabGL Entry` where voucher_no = %s and account = 'cust1 - c1' and ifnull(is_cancelled, 'No') = 'No' group by against_voucher", jv1[0].name)]
+# 
+# 		self.assertTrue([rv1.name, 100.0] in gle)
+# 		self.assertTrue(['', 400.0] in gle)
+# 		
+# 	#============================
+# 	def test_outstanding(self):
+# 		"""
+# 			Check whether Outstanding amount has been properly updated in RV
+# 		"""
+# 		amt = sql("select outstanding_amount from `tabSales Invoice` where name = '%s'" % rv1.name)[0][0]
+# 		self.assertTrue(amt == 0)
+# 		
+# 	#============================
+# 	def tearDown(self):
+# 		webnotes.conn.rollback()
+# 	
+# 
+# 
+# 
+# # test data
+# #---------------
+# rv1 = Document(fielddata={
+# 		'doctype':'Sales Invoice',
+# 		'docstatus':1,
+# 		'debit_to':'cust1 - c1',
+# 		'grand_total': 100,
+# 		'outstanding_amount': 100,
+# 		'name': 'rv1'
+# 	})
+# 	
+# jv1 = [Document(fielddata={
+# 		'doctype':'Journal Voucher',
+# 		'docstatus':1,
+# 		'cheque_no': '163567',
+# 		'docstatus':1,
+# 		'company': 'comp1',
+# 		'posting_date' : '2011-05-02',
+# 		'remark': 'test data',
+# 		'fiscal_year': '2011-2012',
+# 		'total_debit': 500,
+# 		'total_credit': 500
+# 	}),
+# 	Document(fielddata = {
+# 		'parenttype':'Journal Voucher',
+# 		'parentfield':'entries',
+# 		'doctype':'Journal Voucher Detail',
+# 		'account' : 'cust1 - c1',
+# 		'credit':500,
+# 		'debit' : 0,
+# 		'docstatus':1
+# 	}),
+# 	Document(fielddata = {
+# 		'parenttype':'Journal Voucher',
+# 		'parentfield':'entries',
+# 		'doctype':'Journal Voucher Detail',
+# 		'account' : 'bank1 - c1',
+# 		'credit':0,
+# 		'debit' : 500,
+# 		'docstatus':1
+# 	})]
+# 	
+# ir = [Document(fielddata = {
+# 		'doctype':'Payment to Invoice Matching Tool',
+# 		'name' : 'Payment to Invoice Matching Tool',
+# 		'account':'cust1 - c1',
+# 		'voucher_type' : 'Sales Invoice',
+# 		'voucher_no': 'rv1'
+# 	}),
+# 	Document(fielddata = {
+# 		'parenttype':'Payment to Invoice Matching Tool',
+# 		'parentfield':'ir_payment_details',
+# 		'doctype':'Payment to Invoice Matching Tool Detail',
+# 		'parent': 'Payment to Invoice Matching Tool',
+# 		'voucher_no': 'jv1',
+# 		'name' : '123112',
+# 		'voucher_detail_no' : 'jvd1',
+# 		'selected' : 1,
+# 		'amt_due' : 500,
+# 		'amt_to_be_reconciled':100
+# 	})]
+# 	
+# cust1 = Document(fielddata={
+# 		'doctype':'Account',
+# 		'docstatus':0,
+# 		'account_name' : 'cust1',
+# 		'debit_or_credit': 'Debit',
+# 		'company' : 'comp1',
+# 		'lft': 1,
+# 		'rgt': 2
+# 	})
+# 	
+# bank1 = Document(fielddata={
+# 		'doctype':'Account',
+# 		'docstatus':0,
+# 		'account_name' : 'bank1',
+# 		'debit_or_credit': 'Debit',
+# 		'company' : 'comp1',
+# 		'lft': 3,
+# 		'rgt': 4
+# 	})	
+# 	
+# comp1 = Document(fielddata={
+# 		'doctype':'Company',
+# 		'abbr': 'c1',
+# 		'company_name' : 'comp1',
+# 		'name': 'comp1'
+# 	})
+# 	
+# rv_gle = Document(fielddata={
+# 		'doctype':'GL Entry',
+# 		'account': 'cust1 - c1',
+# 		'company' : 'comp1',
+# 		'voucher_no': 'rv1',
+# 		'against_voucher': 'rv1',
+# 		'against_voucher_type': 'Sales Invoice',
+# 		'voucher_type' : 'Sales Invoice',
+# 		'debit': 100,
+# 		'credit': 0
+# 	})
diff --git a/accounts/doctype/pos_setting/test_pos_setting.py b/accounts/doctype/pos_setting/test_pos_setting.py
index 2c45c4d..2373f85 100644
--- a/accounts/doctype/pos_setting/test_pos_setting.py
+++ b/accounts/doctype/pos_setting/test_pos_setting.py
@@ -7,8 +7,10 @@
 		"price_list_name": "_Test Price List",
 		"company": "_Test Company",
 		"warehouse": "_Test Warehouse",
+		"territory": "_Test Territory", 
 		"cash_bank_account": "_Test Account Bank Account - _TC",
 		"income_account": "Sales - _TC",
 		"cost_center": "_Test Cost Center - _TC",
+		"expense_account": "_Test Account Cost for Goods Sold - _TC",
 	}]
 ]
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice/test_sales_invoice.py b/accounts/doctype/sales_invoice/test_sales_invoice.py
index 7aa0c27..fd8dc64 100644
--- a/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -217,21 +217,11 @@
 		return dn
 		
 	def _insert_pos_settings(self):
+		from accounts.doctype.pos_setting.test_pos_setting \
+			import test_records as pos_setting_test_records
 		webnotes.conn.sql("""delete from `tabPOS Setting`""")
-		ps = webnotes.bean([
-			{
-				"cash_bank_account": "_Test Account Bank Account - _TC", 
-				"company": "_Test Company", 
-				"conversion_rate": 1.0, 
-				"cost_center": "_Test Cost Center - _TC", 
-				"currency": "INR", 
-				"doctype": "POS Setting", 
-				"income_account": "_Test Account Bank Account - _TC", 
-				"price_list_name": "_Test Price List", 
-				"territory": "_Test Territory", 
-				"warehouse": "_Test Warehouse"
-			}
-		])
+		
+		ps = webnotes.bean(copy=pos_setting_test_records[0])
 		ps.insert()
 		
 	def test_sales_invoice_with_advance(self):
diff --git a/accounts/report/gross_profit/gross_profit.py b/accounts/report/gross_profit/gross_profit.py
index 5c06637..7f6354b 100644
--- a/accounts/report/gross_profit/gross_profit.py
+++ b/accounts/report/gross_profit/gross_profit.py
@@ -12,7 +12,7 @@
 	
 	item_sales_bom = get_item_sales_bom()
 	
-	columns = ["Delivery Note/Sales Invoice::120", "Posting Date:Date", "Posting Time", 
+	columns = ["Delivery Note/Sales Invoice::120", "Link::30", "Posting Date:Date", "Posting Time", 
 		"Item Code:Link/Item", "Item Name", "Description", "Warehouse:Link/Warehouse",
 		"Qty:Float", "Selling Rate:Currency", "Selling Amount:Currency", "Buying Amount:Currency",
 		"Gross Profit:Currency", "Gross Profit %:Percent", "Project:Link/Project"]
@@ -32,8 +32,9 @@
 		else:
 			gross_profit = gross_profit_percent = 0.0
 		
-		name = """<a href="%s">%s</a>""" % ("/".join(["#Form", row.parenttype, row.name]), row.name)
-		data.append([name, row.posting_date, row.posting_time, row.item_code, row.item_name,
+		icon = """<a href="%s"><i class="icon icon-share" style="cursor: pointer;"></i></a>""" \
+			% ("/".join(["#Form", row.parenttype, row.name]),)
+		data.append([row.name, icon, row.posting_date, row.posting_time, row.item_code, row.item_name,
 			row.description, row.warehouse, row.qty, row.basic_rate, row.amount, buying_amount,
 			gross_profit, gross_profit_percent, row.project])
 			
@@ -57,7 +58,7 @@
 	item_sales_bom = {}
 	
 	for d in webnotes.conn.sql("""select parenttype, parent, parent_item,
-		item_code, warehouse, -1*qty as total_qty
+		item_code, warehouse, -1*qty as total_qty, parent_detail_docname
 		from `tabDelivery Note Packing Item` where docstatus=1""", as_dict=True):
 		item_sales_bom.setdefault(d.parenttype, webnotes._dict()).setdefault(d.parent,
 			webnotes._dict()).setdefault(d.parent_item, []).append(d)
diff --git a/accounts/search_criteria/purchase_register/purchase_register.py b/accounts/search_criteria/purchase_register/purchase_register.py
index 93fc323..82ab047 100644
--- a/accounts/search_criteria/purchase_register/purchase_register.py
+++ b/accounts/search_criteria/purchase_register/purchase_register.py
@@ -77,14 +77,10 @@
 	r.append(net_total)
 
 	#Get tax for account heads
-	acc_head_tax = sql("""select account_head, sum(tax_amount) 
-						  from `tabPurchase Taxes and Charges` 
-						  where parent = '%s' 
-						  and parenttype = 'Purchase Invoice' 
-						  and add_deduct_tax = 'Add' 
-						  and category in ('Total', 'Valuation and Total')
-						  group by account_head
-						""" %(r[col_idx['ID']],))
+	acc_head_tax = sql("""select account_head, 
+		sum(if(add_deduct_tax='Add', tax_amount, -tax_amount)) 
+		from `tabPurchase Taxes and Charges` where parent = %s and parenttype = 'Purchase Invoice' 
+		and category in ('Total', 'Valuation and Total') group by account_head""", r[col_idx['ID']])
 
 	#Convert the result to dictionary for easy retrieval
 	acc_head_tax_dict = {}
diff --git a/hr/doctype/department/test_department.py b/hr/doctype/department/test_department.py
index 4012583..a5ac6c7 100644
--- a/hr/doctype/department/test_department.py
+++ b/hr/doctype/department/test_department.py
@@ -1,3 +1,5 @@
+test_ignore = ["Leave Block List"]
+
 test_records = [
 	[{"doctype":"Department", "department_name":"_Test Department"}],
 	[{"doctype":"Department", "department_name":"_Test Department 1"}]
diff --git a/hr/doctype/leave_application/test_leave_application.py b/hr/doctype/leave_application/test_leave_application.py
index bc4a38c..672e668 100644
--- a/hr/doctype/leave_application/test_leave_application.py
+++ b/hr/doctype/leave_application/test_leave_application.py
@@ -29,7 +29,7 @@
 		
 		application = self.get_application(test_records[1])
 		self.assertTrue(application.insert())
-
+		
 	def test_overlap(self):
 		application = self.get_application(test_records[1])
 		self.assertRaises(OverlapError, application.insert)
@@ -57,6 +57,7 @@
 		application.doc.status = "Approved"
 		self.assertRaises(LeaveDayBlockedError, application.submit)
 		
+test_dependencies = ["Leave Block List"]		
 
 test_records = [
 	[{
diff --git a/hr/doctype/salary_manager/test_salary_manager.py b/hr/doctype/salary_manager/test_salary_manager.py
index b689b51..eb990f8 100644
--- a/hr/doctype/salary_manager/test_salary_manager.py
+++ b/hr/doctype/salary_manager/test_salary_manager.py
@@ -18,199 +18,201 @@
 import unittest
 import webnotes
 
-from webnotes.model.doc import Document
-from webnotes.model.code import get_obj
-sql = webnotes.conn.sql
+test_records = []
 
-class TestSalaryManager(unittest.TestCase):
-	def setUp(self):
-		webnotes.conn.begin()
-		for rec in [des1, dep1, branch1, grade1, comp1, emp1, emp2]:
-			rec.save(1)
-					
-		ss1[0].employee = emp1.name
-		for s in ss1: s.save(1)
-		for s in ss1[1:]:
-			sql("update `tabSalary Structure Earning` set parent = '%s' where name = '%s'" % (ss1[0].name, s.name))
-			sql("update `tabSalary Structure Deduction` set parent = '%s' where name = '%s'" % (ss1[0].name, s.name))
-			
-		
-		ss2[0].employee = emp2.name
-		for s in ss2: s.save(1)		
-		for s in ss2[1:]:
-			sql("update `tabSalary Structure Earning` set parent = '%s' where name = '%s'" % (ss2[0].name, s.name))
-			sql("update `tabSalary Structure Deduction` set parent = '%s' where name = '%s'" % (ss2[0].name, s.name))
-			
-		sman.save()
-		self.sm = get_obj('Salary Manager')	
-		leave.save(1)
-		self.sm.create_sal_slip()
-		
-	def test_creation(self):
-		ssid = sql("""
-			select name, department 
-			from `tabSalary Slip` 
-			where month = '08' and fiscal_year='2011-2012'""")
-
-		self.assertTrue(len(ssid)==1)
-		self.assertTrue(ssid[0][1] == 'dep1')
-		
-		
-	def test_lwp_calc(self):
-		ss = sql("""
-			select payment_days
-			from `tabSalary Slip` 
-			where month = '08' and fiscal_year='2011-2012' and employee = '%s'
-		""" % emp1.name)
-		
-		self.assertTrue(ss[0][0]==27)
-		
-	def test_net_pay(self):
-		ss = webnotes.conn.sql("""
-			select rounded_total 
-			from `tabSalary Slip` 
-			where month = '08'
-			and fiscal_year='2011-2012' and employee = '%s'""" % emp1.name)
-		self.assertTrue(ss[0][0]==67)
-
-	def test_submit(self):
-		self.sm.submit_salary_slip()
-		ss = webnotes.conn.sql("""
-			select docstatus 
-			from `tabSalary Slip` 
-			where month = '08'
-			and fiscal_year='2011-2012' and employee = '%s'""" % emp1.name)
-		self.assertTrue(ss[0][0]==1)
-		
-	def tearDown(self):
-		webnotes.conn.rollback()
-		
-#--------------------------------------------
-# test data
-#--------------------------------------------
-des1 = Document(fielddata={
-	'name':'des1',
-	'doctype':'Designation',
-	'designation_name':'des1'
-})
-
-dep1 = Document(fielddata={
-	'name':'dep1',
-	'doctype':'Department',
-	'department_name' : 'dep1'
-})
-
-branch1 = Document(fielddata={
-	'name':'branch1',
-	'doctype':'Branch',
-	'branch' : 'branch1'
-})
-
-comp1 = Document(fielddata={
-	'name':'comp1',
-	'doctype':'Company',
-	'abbr':'c1',
-	'company_name' : 'comp1'
-})
-
-grade1 = Document(fielddata={
-	'name':'grade1',
-	'doctype':'Grade',
-	'grade_name' : 'grade1'	
-})
-	
-emp1 = Document(fielddata={
-	'doctype':'Employee',
-	'employee_number':'emp1',
-	'department':'dep1',
-	'designation':'des1',
-	'branch' : 'branch1',
-	'company':'comp1',
-	'grade':'grade1',
-	'naming_series':'EMP/',
-	'status':'Active',
-	'docstatus':0,
-	'employee_name':'emp1'
-})
-
-emp2 = Document(fielddata={
-	'doctype':'Employee',
-	'employee_number':'emp2',
-	'department':'dep1',
-	'designation':'des2',
-	'branch' : 'branch1',
-	'company':'comp1',
-	'naming_series':'EMP/',
-	'grade':'grade1',
-	'status':'Active',
-
-})
-
-ss1 = [
-	Document(fielddata={
-		'doctype':'Salary Structure',
-		'docstatus':0,
-		'employee':'emp1',
-		'is_active':'Yes',
-		'department': 'dep1',
-		'designation' : 'des1',
-		'employee_name': 'emp1'
-	}),
-	Document(fielddata={
-		'parenttype':'Salary Structure',
-		'parentfield':'earning_details',
-		'doctype':'Salary Structure Earning',
-		'e_type' : 'Basic',
-		'depend_on_lwp':1,
-		'modified_value':100
-	}),
-	Document(fielddata={
-		'parenttype':'Salary Structure',
-		'parentfield':'earning_details',
-		'doctype':'Salary Structure Deduction',
-		'd_type':'TDS',
-		'd_modified_amt':20
-	})
-]
-
-ss2 = [
-	Document(fielddata={
-		'doctype':'Salary Structure',
-		'is_active':'Yes',
-		'docstatus':0,
-	}),
-	Document(fielddata={
-		'parenttype':'Salary Structure',
-		'parentfield':'deduction_details',
-		'doctype':'Salary Structure Earning',
-		'e_type' : 'Basic',
-		'modified_value':100
-	}),
-	Document(fielddata={
-		'parenttype':'Salary Structure',
-		'parentfield':'deduction_details',
-		'doctype':'Salary Structure Deduction',
-		'd_type':'TDS',
-		'd_modified_amt':20
-	})
-]
-
-sman = Document(fielddata={
-		'name':'Salary Manager',
-		'doctype':'Salary Manager',
-		'company': 'comp1',
-		'department':'dep1',
-		'designation':'des1',
-		'month': '08',
-		'fiscal_year':'2011-2012'
-	})
-	
-leave = Document(fielddata = {
-		'doctype':'Leave Application',
-		'employee':'emp1',
-		'from_date':'2011-08-12',
-		'to_date':'2011-08-15',
-		'total_leave_days':'4',
-		'leave_type':'Leave Without Pay',
-		'docstatus':1
-	})
+# from webnotes.model.doc import Document
+# from webnotes.model.code import get_obj
+# sql = webnotes.conn.sql
+# 
+# class TestSalaryManager(unittest.TestCase):
+# 	def setUp(self):
+# 		webnotes.conn.begin()
+# 		for rec in [des1, dep1, branch1, grade1, comp1, emp1, emp2]:
+# 			rec.save(1)
+# 					
+# 		ss1[0].employee = emp1.name
+# 		for s in ss1: s.save(1)
+# 		for s in ss1[1:]:
+# 			sql("update `tabSalary Structure Earning` set parent = '%s' where name = '%s'" % (ss1[0].name, s.name))
+# 			sql("update `tabSalary Structure Deduction` set parent = '%s' where name = '%s'" % (ss1[0].name, s.name))
+# 			
+# 		
+# 		ss2[0].employee = emp2.name
+# 		for s in ss2: s.save(1)		
+# 		for s in ss2[1:]:
+# 			sql("update `tabSalary Structure Earning` set parent = '%s' where name = '%s'" % (ss2[0].name, s.name))
+# 			sql("update `tabSalary Structure Deduction` set parent = '%s' where name = '%s'" % (ss2[0].name, s.name))
+# 			
+# 		sman.save()
+# 		self.sm = get_obj('Salary Manager')	
+# 		leave.save(1)
+# 		self.sm.create_sal_slip()
+# 		
+# 	def test_creation(self):
+# 		ssid = sql("""
+# 			select name, department 
+# 			from `tabSalary Slip` 
+# 			where month = '08' and fiscal_year='2011-2012'""")
+# 
+# 		self.assertTrue(len(ssid)==1)
+# 		self.assertTrue(ssid[0][1] == 'dep1')
+# 		
+# 		
+# 	def test_lwp_calc(self):
+# 		ss = sql("""
+# 			select payment_days
+# 			from `tabSalary Slip` 
+# 			where month = '08' and fiscal_year='2011-2012' and employee = '%s'
+# 		""" % emp1.name)
+# 		
+# 		self.assertTrue(ss[0][0]==27)
+# 		
+# 	def test_net_pay(self):
+# 		ss = webnotes.conn.sql("""
+# 			select rounded_total 
+# 			from `tabSalary Slip` 
+# 			where month = '08'
+# 			and fiscal_year='2011-2012' and employee = '%s'""" % emp1.name)
+# 		self.assertTrue(ss[0][0]==67)
+# 
+# 	def test_submit(self):
+# 		self.sm.submit_salary_slip()
+# 		ss = webnotes.conn.sql("""
+# 			select docstatus 
+# 			from `tabSalary Slip` 
+# 			where month = '08'
+# 			and fiscal_year='2011-2012' and employee = '%s'""" % emp1.name)
+# 		self.assertTrue(ss[0][0]==1)
+# 		
+# 	def tearDown(self):
+# 		webnotes.conn.rollback()
+# 		
+# #--------------------------------------------
+# # test data
+# #--------------------------------------------
+# des1 = Document(fielddata={
+# 	'name':'des1',
+# 	'doctype':'Designation',
+# 	'designation_name':'des1'
+# })
+# 
+# dep1 = Document(fielddata={
+# 	'name':'dep1',
+# 	'doctype':'Department',
+# 	'department_name' : 'dep1'
+# })
+# 
+# branch1 = Document(fielddata={
+# 	'name':'branch1',
+# 	'doctype':'Branch',
+# 	'branch' : 'branch1'
+# })
+# 
+# comp1 = Document(fielddata={
+# 	'name':'comp1',
+# 	'doctype':'Company',
+# 	'abbr':'c1',
+# 	'company_name' : 'comp1'
+# })
+# 
+# grade1 = Document(fielddata={
+# 	'name':'grade1',
+# 	'doctype':'Grade',
+# 	'grade_name' : 'grade1'	
+# })
+# 	
+# emp1 = Document(fielddata={
+# 	'doctype':'Employee',
+# 	'employee_number':'emp1',
+# 	'department':'dep1',
+# 	'designation':'des1',
+# 	'branch' : 'branch1',
+# 	'company':'comp1',
+# 	'grade':'grade1',
+# 	'naming_series':'EMP/',
+# 	'status':'Active',
+# 	'docstatus':0,
+# 	'employee_name':'emp1'
+# })
+# 
+# emp2 = Document(fielddata={
+# 	'doctype':'Employee',
+# 	'employee_number':'emp2',
+# 	'department':'dep1',
+# 	'designation':'des2',
+# 	'branch' : 'branch1',
+# 	'company':'comp1',
+# 	'naming_series':'EMP/',
+# 	'grade':'grade1',
+# 	'status':'Active',
+# 
+# })
+# 
+# ss1 = [
+# 	Document(fielddata={
+# 		'doctype':'Salary Structure',
+# 		'docstatus':0,
+# 		'employee':'emp1',
+# 		'is_active':'Yes',
+# 		'department': 'dep1',
+# 		'designation' : 'des1',
+# 		'employee_name': 'emp1'
+# 	}),
+# 	Document(fielddata={
+# 		'parenttype':'Salary Structure',
+# 		'parentfield':'earning_details',
+# 		'doctype':'Salary Structure Earning',
+# 		'e_type' : 'Basic',
+# 		'depend_on_lwp':1,
+# 		'modified_value':100
+# 	}),
+# 	Document(fielddata={
+# 		'parenttype':'Salary Structure',
+# 		'parentfield':'earning_details',
+# 		'doctype':'Salary Structure Deduction',
+# 		'd_type':'TDS',
+# 		'd_modified_amt':20
+# 	})
+# ]
+# 
+# ss2 = [
+# 	Document(fielddata={
+# 		'doctype':'Salary Structure',
+# 		'is_active':'Yes',
+# 		'docstatus':0,
+# 	}),
+# 	Document(fielddata={
+# 		'parenttype':'Salary Structure',
+# 		'parentfield':'deduction_details',
+# 		'doctype':'Salary Structure Earning',
+# 		'e_type' : 'Basic',
+# 		'modified_value':100
+# 	}),
+# 	Document(fielddata={
+# 		'parenttype':'Salary Structure',
+# 		'parentfield':'deduction_details',
+# 		'doctype':'Salary Structure Deduction',
+# 		'd_type':'TDS',
+# 		'd_modified_amt':20
+# 	})
+# ]
+# 
+# sman = Document(fielddata={
+# 		'name':'Salary Manager',
+# 		'doctype':'Salary Manager',
+# 		'company': 'comp1',
+# 		'department':'dep1',
+# 		'designation':'des1',
+# 		'month': '08',
+# 		'fiscal_year':'2011-2012'
+# 	})
+# 	
+# leave = Document(fielddata = {
+# 		'doctype':'Leave Application',
+# 		'employee':'emp1',
+# 		'from_date':'2011-08-12',
+# 		'to_date':'2011-08-15',
+# 		'total_leave_days':'4',
+# 		'leave_type':'Leave Without Pay',
+# 		'docstatus':1
+# 	})
diff --git a/patches/february_2013/p03_material_request.py b/patches/february_2013/p03_material_request.py
index 612c108..66b2bf6 100644
--- a/patches/february_2013/p03_material_request.py
+++ b/patches/february_2013/p03_material_request.py
@@ -3,8 +3,11 @@
 def execute():
 	webnotes.reload_doc("core", "doctype", "doctype")
 	
-	webnotes.rename_doc("DocType", "Purchase Request Item", "Material Request Item", force=True)
-	webnotes.rename_doc("DocType", "Purchase Request", "Material Request", force=True)
+	tables = webnotes.conn.sql_list("show tables")
+	if not "tabMaterial Request Item" in tables:
+		webnotes.rename_doc("DocType", "Purchase Request Item", "Material Request Item", force=True)
+	if not "tabMaterial Request" in tables:
+		webnotes.rename_doc("DocType", "Purchase Request", "Material Request", force=True)
 	webnotes.reload_doc("buying", "search_criteria", "pending_po_items_to_bill")
 	webnotes.reload_doc("buying", "search_criteria", "pending_po_items_to_receive")
 
@@ -19,4 +22,4 @@
 	os.system("rm -rf app/hr/doctype/holiday_block_list")
 	os.system("rm -rf app/hr/doctype/holiday_block_list_allow")
 	os.system("rm -rf app/hr/doctype/holiday_block_list_date")
-	
\ No newline at end of file
+	
diff --git a/patches/march_2013/p10_set_fiscal_year_for_stock.py b/patches/march_2013/p10_set_fiscal_year_for_stock.py
new file mode 100644
index 0000000..c9d5202
--- /dev/null
+++ b/patches/march_2013/p10_set_fiscal_year_for_stock.py
@@ -0,0 +1,18 @@
+import webnotes
+from accounts.utils import get_fiscal_year, FiscalYearError
+
+def execute():
+	webnotes.reload_doc("stock", "doctype", "stock_entry")
+	webnotes.reload_doc("stock", "doctype", "stock_reconciliation")
+	
+	for doctype in ["Stock Entry", "Stock Reconciliation"]:
+		for name, posting_date in webnotes.conn.sql("""select name, posting_date from `tab%s`
+				where ifnull(fiscal_year,'')='' and docstatus=1""" % doctype):
+			try:
+				fiscal_year = get_fiscal_year(posting_date, 0)[0]
+				webnotes.conn.sql("""update `tab%s` set fiscal_year=%s where name=%s""" % \
+					(doctype, "%s", "%s"), (fiscal_year, name))
+			except FiscalYearError:
+				pass
+			
+	
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 0c5427b..2ea10cd 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -216,7 +216,12 @@
 	"patches.march_2013.p06_remove_sales_purchase_return_tool",
 	"execute:webnotes.bean('Global Defaults').save()",
 	"patches.march_2013.p07_update_project_in_stock_ledger",
+	"execute:webnotes.reload_doc('stock', 'doctype', 'item') #2013-03-25",
+	"execute:webnotes.reload_doc('setup', 'doctype', 'item_group') #2013-03-25",
+	"execute:webnotes.reload_doc('website', 'doctype', 'blog_post') #2013-03-25",
+	"execute:webnotes.reload_doc('website', 'doctype', 'web_page') #2013-03-25",
 	"execute:webnotes.bean('Style Settings').save() #2013-03-25",
 	"execute:webnotes.conn.set_value('Email Settings', None, 'send_print_in_body_and_attachment', 1)",
 	"patches.march_2013.p09_unset_user_type_partner",
+	"patches.march_2013.p10_set_fiscal_year_for_stock",
 ]
\ No newline at end of file
diff --git a/projects/doctype/time_log/test_time_log.py b/projects/doctype/time_log/test_time_log.py
index 1168c01..8f1848f 100644
--- a/projects/doctype/time_log/test_time_log.py
+++ b/projects/doctype/time_log/test_time_log.py
@@ -9,6 +9,7 @@
 		self.assertRaises(OverlapError, ts.insert)
 
 test_records = [[{
+	"doctype": "Time Log",
 	"from_time": "2013-01-01 10:00:00",
 	"to_time": "2013-01-01 11:00:00",
 	"activity_type": "_Test Activity Type",
diff --git a/stock/doctype/material_request/test_material_request.py b/stock/doctype/material_request/test_material_request.py
index 44f82d2..080989f 100644
--- a/stock/doctype/material_request/test_material_request.py
+++ b/stock/doctype/material_request/test_material_request.py
@@ -24,7 +24,8 @@
 				"doctype": "Stock Entry", 
 				"posting_date": "2013-03-01", 
 				"posting_time": "00:00:00", 
-				"purpose": "Material Receipt"
+				"purpose": "Material Receipt",
+				"fiscal_year": "_Test Fiscal Year 2013",
 			}, 
 			{
 				"conversion_factor": 1.0, 
@@ -125,7 +126,8 @@
 			["Material Request Item", "Stock Entry Detail"]], mr.doc.name)
 		se_doclist[0].fields.update({
 			"posting_date": "2013-03-01",
-			"posting_time": "01:00"
+			"posting_time": "01:00",
+			"fiscal_year": "_Test Fiscal Year 2013",
 		})
 		se_doclist[1].fields.update({
 			"qty": 27.0,
@@ -186,7 +188,8 @@
 			["Material Request Item", "Stock Entry Detail"]], mr.doc.name)
 		se_doclist[0].fields.update({
 			"posting_date": "2013-03-01",
-			"posting_time": "00:00"
+			"posting_time": "00:00",
+			"fiscal_year": "_Test Fiscal Year 2013",
 		})
 		se_doclist[1].fields.update({
 			"qty": 60.0,
@@ -239,7 +242,8 @@
 			["Material Request Item", "Stock Entry Detail"]], mr.doc.name)
 		se_doclist[0].fields.update({
 			"posting_date": "2013-03-01",
-			"posting_time": "00:00"
+			"posting_time": "00:00",
+			"fiscal_year": "_Test Fiscal Year 2013",
 		})
 		se_doclist[1].fields.update({
 			"qty": 60.0,
diff --git a/stock/utils.py b/stock/utils.py
index 1406af6..d75c1d4 100644
--- a/stock/utils.py
+++ b/stock/utils.py
@@ -170,9 +170,10 @@
 		# sales bom item
 		buying_amount = 0.0
 		for bom_item in item_sales_bom[item_code]:
-			buying_amount += _get_buying_amount(voucher_type, voucher_no, "[** No Item Row **]",
-				bom_item.item_code, bom_item.warehouse or warehouse, 
-				bom_item.total_qty or (bom_item.qty * qty), stock_ledger_entries)
+			if bom_item.get("parent_detail_docname")==voucher_detail_no:
+				buying_amount += _get_buying_amount(voucher_type, voucher_no, "[** No Item Row **]",
+					bom_item.item_code, bom_item.warehouse or warehouse, 
+					bom_item.total_qty or (bom_item.qty * qty), stock_ledger_entries)
 		return buying_amount
 	else:
 		# doesn't have sales bom
@@ -181,13 +182,16 @@
 		
 def _get_buying_amount(voucher_type, voucher_no, item_row, item_code, warehouse, qty, 
 		stock_ledger_entries):
-	for i, sle in enumerate(stock_ledger_entries):
+	relevant_stock_ledger_entries = [sle for sle in stock_ledger_entries 
+		if sle.item_code == item_code and sle.warehouse == warehouse]
+		
+	for i, sle in enumerate(relevant_stock_ledger_entries):
 		if sle.voucher_type == voucher_type and sle.voucher_no == voucher_no and \
-			(sle.voucher_detail_no == item_row or (sle.voucher_type != "Stock Reconciliation" 
-			and sle.item_code == item_code and sle.warehouse == warehouse and flt(sle.qty) == qty)):
-				previous_stock_value = len(stock_ledger_entries) > i+1 and \
-					flt(stock_ledger_entries[i+1].stock_value) or 0.0
-					
+			((sle.voucher_detail_no == item_row) or (sle.voucher_type != "Stock Reconciliation" 
+			and flt(sle.qty) == qty)):
+				previous_stock_value = len(relevant_stock_ledger_entries) > i+1 and \
+					flt(relevant_stock_ledger_entries[i+1].stock_value) or 0.0
+				
 				buying_amount =  previous_stock_value - flt(sle.stock_value)						
 				
 				return buying_amount
diff --git a/support/doctype/newsletter/test_newsletter.py b/support/doctype/newsletter/test_newsletter.py
index 4650c0a..0813cfe 100644
--- a/support/doctype/newsletter/test_newsletter.py
+++ b/support/doctype/newsletter/test_newsletter.py
@@ -38,18 +38,21 @@
 
 test_records =[
 	[{
+		"doctype": "Newsletter",
 		"subject": "_Test Newsletter to Lead",
 		"send_to_type": "Lead",
 		"lead_source": "All",
 		"message": "This is a test newsletter"
 	}],
 	[{
+		"doctype": "Newsletter",
 		"subject": "_Test Newsletter to Contact",
 		"send_to_type": "Contact",
 		"contact_type": "Customer",
 		"message": "This is a test newsletter"
 	}],
 	[{
+		"doctype": "Newsletter",
 		"subject": "_Test Newsletter to Custom",
 		"send_to_type": "Custom",
 		"email_list": "test_custom@example.com, test_custom1@example.com, test_custom2@example.com",
