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/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js
index a7a148a..c0bad94 100644
--- a/home/page/latest_updates/latest_updates.js
+++ b/home/page/latest_updates/latest_updates.js
@@ -1,5 +1,7 @@
 erpnext.updates = [
 	["27th March", ["Rename multiple items together. Go to Setup > Rename Tool"]],
+	["26th March", ["Added project to Stock Ledger and Balance",
+		"Added Default Cash Account in Company."]],
 	["19th March", ["Sales and Purchase Return Tool deprecated. Use Stock Entry instead."]],
 	["12th March", ["Updates to website module. Added more options in Style Settings and Website Settings."]],
 	["5th March", ["Refactored Upload Attendance Tool"]],
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/march_2013/p11_update_attach_files.py b/patches/march_2013/p11_update_attach_files.py
new file mode 100644
index 0000000..769463a
--- /dev/null
+++ b/patches/march_2013/p11_update_attach_files.py
@@ -0,0 +1,16 @@
+import webnotes
+
+def execute():
+	for f in webnotes.conn.sql("""select parent, fieldname 
+		from tabDocField where options="attach_files:" """, as_dict=1):
+		if webnotes.conn.get_value("DocType", f.parent, "issingle"):
+			fname = webnotes.conn.get_value(f.parent, None, f.fieldname)
+			if fname:
+				if not (fname.startswith("http") or fname.startswith("files")):
+					webnotes.conn.set_value(f.parent, None, f.fieldname, "files/" + fname)
+		else:
+			webnotes.conn.sql("""update `tab%(parent)s`
+				set %(fieldname)s = 
+					if(substr(%(fieldname)s,0,4)='http' or substr(%(fieldname)s, 0, 5)='files',
+					 	%(fieldname)s, 
+						concat('files/', %(fieldname)s))""" % f)
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 0c5427b..5502385 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -216,7 +216,13 @@
 	"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",
+	"patches.march_2013.p11_update_attach_files",
 ]
\ No newline at end of file
diff --git a/projects/doctype/activity_type/activity_type.txt b/projects/doctype/activity_type/activity_type.txt
index 028db2b..9866500 100644
--- a/projects/doctype/activity_type/activity_type.txt
+++ b/projects/doctype/activity_type/activity_type.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-03-05 12:53:23", 
+  "creation": "2013-03-05 10:14:59", 
   "docstatus": 0, 
-  "modified": "2013-03-05 12:54:22", 
+  "modified": "2013-03-28 07:18:24", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -10,7 +10,7 @@
   "autoname": "field:activity_type", 
   "doctype": "DocType", 
   "document_type": "Master", 
-  "in_dialog": 1, 
+  "in_dialog": 0, 
   "module": "Projects", 
   "name": "__common__"
  }, 
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/setup/doctype/brand/brand.txt b/setup/doctype/brand/brand.txt
index 2264678..cddd918 100644
--- a/setup/doctype/brand/brand.txt
+++ b/setup/doctype/brand/brand.txt
@@ -1,74 +1,74 @@
 [
  {
-  "owner": "Administrator", 
+  "creation": "2013-02-22 01:27:54", 
   "docstatus": 0, 
-  "creation": "2012-07-03 13:30:03", 
+  "modified": "2013-03-28 07:18:30", 
   "modified_by": "Administrator", 
-  "modified": "2012-12-25 13:20:51"
+  "owner": "Administrator"
  }, 
  {
-  "name": "__common__", 
   "autoname": "field:brand", 
-  "module": "Setup", 
   "doctype": "DocType", 
-  "in_dialog": 1, 
-  "document_type": "Master"
+  "document_type": "Master", 
+  "in_dialog": 0, 
+  "module": "Setup", 
+  "name": "__common__"
  }, 
  {
-  "read_only": 0, 
+  "doctype": "DocField", 
   "name": "__common__", 
   "parent": "Brand", 
-  "doctype": "DocField", 
+  "parentfield": "fields", 
   "parenttype": "DocType", 
   "permlevel": 0, 
-  "parentfield": "fields"
+  "read_only": 0
  }, 
  {
-  "name": "__common__", 
-  "parent": "Brand", 
-  "read": 1, 
   "doctype": "DocPerm", 
+  "name": "__common__", 
+  "parent": "Brand", 
+  "parentfield": "permissions", 
   "parenttype": "DocType", 
-  "report": 1, 
   "permlevel": 0, 
-  "parentfield": "permissions"
+  "read": 1, 
+  "report": 1
  }, 
  {
-  "name": "Brand", 
-  "doctype": "DocType"
+  "doctype": "DocType", 
+  "name": "Brand"
  }, 
  {
-  "oldfieldtype": "Data", 
   "doctype": "DocField", 
-  "label": "Brand Name", 
-  "oldfieldname": "brand", 
   "fieldname": "brand", 
   "fieldtype": "Data", 
+  "label": "Brand Name", 
+  "oldfieldname": "brand", 
+  "oldfieldtype": "Data", 
   "reqd": 1
  }, 
  {
-  "oldfieldtype": "Text", 
   "doctype": "DocField", 
+  "fieldname": "description", 
+  "fieldtype": "Text", 
   "label": "Description", 
   "oldfieldname": "description", 
-  "width": "300px", 
-  "fieldname": "description", 
-  "fieldtype": "Text"
+  "oldfieldtype": "Text", 
+  "width": "300px"
  }, 
  {
+  "cancel": 1, 
   "create": 1, 
   "doctype": "DocPerm", 
-  "write": 1, 
   "role": "Material Master Manager", 
-  "cancel": 1
+  "write": 1
  }, 
  {
   "amend": 0, 
+  "cancel": 0, 
   "create": 0, 
   "doctype": "DocPerm", 
-  "submit": 0, 
-  "write": 0, 
   "role": "Material User", 
-  "cancel": 0
+  "submit": 0, 
+  "write": 0
  }
 ]
\ No newline at end of file
diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py
index 931b776..802771c 100644
--- a/stock/doctype/item/item.py
+++ b/stock/doctype/item/item.py
@@ -235,9 +235,8 @@
 			clear_cache(self.doc.page_name)
 			
 	def prepare_template_args(self):
-		from website.helpers.product import get_parent_item_groups, url_for_website
+		from website.helpers.product import get_parent_item_groups
 		self.parent_groups = get_parent_item_groups(self.doc.item_group) + [{"name":self.doc.name}]
-		self.doc.website_image = url_for_website(self.doc.website_image)
 		self.doc.title = self.doc.item_name
 
 		if self.doc.slideshow:
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",
diff --git a/website/doctype/about_us_settings/about_us_settings.py b/website/doctype/about_us_settings/about_us_settings.py
index e291aa8..fb3dcc9 100644
--- a/website/doctype/about_us_settings/about_us_settings.py
+++ b/website/doctype/about_us_settings/about_us_settings.py
@@ -2,7 +2,6 @@
 
 from __future__ import unicode_literals
 import webnotes
-from website.utils import url_for_website
 
 class DocType:
 	def __init__(self, d, dl):
@@ -14,9 +13,6 @@
 		
 def get_args():
 	obj = webnotes.get_obj("About Us Settings")
-	for d in obj.doclist.get({"doctype":"About Us Team Member"}):
-		if not "/" in d.image_link:
-			d.image_link = "files/" + d.image_link
 	return {
 		"obj": obj
 	}
\ No newline at end of file
diff --git a/website/doctype/blog_post/blog_post.py b/website/doctype/blog_post/blog_post.py
index ff6cc99..90f72f2 100644
--- a/website/doctype/blog_post/blog_post.py
+++ b/website/doctype/blog_post/blog_post.py
@@ -78,8 +78,6 @@
 		self.doc.content_html = self.doc.content
 		if self.doc.blogger:
 			self.doc.blogger_info = webnotes.doc("Blogger", self.doc.blogger).fields
-			if self.doc.blogger_info.avatar and not "/" in self.doc.blogger_info.avatar:
-				self.doc.blogger_info.avatar = "files/" + self.doc.blogger_info.avatar
 		
 		self.doc.description = self.doc.blog_intro or self.doc.content[:140]
 		
diff --git a/website/doctype/style_settings/custom_template.css b/website/doctype/style_settings/custom_template.css
index fcb2276..f055b78 100644
--- a/website/doctype/style_settings/custom_template.css
+++ b/website/doctype/style_settings/custom_template.css
@@ -4,7 +4,7 @@
 
 body {
 {% if doc.background_image %}
-	background: url("../files/{{ doc.background_image }}") repeat;
+	background: url("../{{ doc.background_image }}") repeat;
 {% elif doc.background_color %}
 	background-color: #{{ doc.background_color }};
 	background-image: none;
@@ -67,16 +67,10 @@
 
 /* Bootstrap Navbar */
 .navbar-inverse .navbar-inner {
+	box-shadow: none;
     background-color: #{{ doc.top_bar_background or "444444"}};
     background-repeat: repeat-x;
 	background-image: none;
-}
-
-.navbar-inner {
-	box-shadow: none;
-}
-
-.navbar-inner {
 	border-bottom: 1px solid {% if doc.top_bar_background == doc.page_background -%}
 		#{{ get_hex_shade(doc.page_background or "ffffff", 15) }};
 	{%- else -%}
diff --git a/website/doctype/website_settings/website_settings.js b/website/doctype/website_settings/website_settings.js
index 67e4941..5858926 100644
--- a/website/doctype/website_settings/website_settings.js
+++ b/website/doctype/website_settings/website_settings.js
@@ -48,7 +48,6 @@
 		msgprint(wn._("Select a Banner Image first."));
 	}
 	var src = doc.banner_image;
-	if(src.indexOf("/")==-1) src = "files/" + src;
 	cur_frm.set_value("banner_html", "<a href='/'><img src='"+ src
 		+"' style='max-width: 200px;'></a>");
 }
\ No newline at end of file
diff --git a/website/helpers/blog.py b/website/helpers/blog.py
index 1f25ac0..4044353 100644
--- a/website/helpers/blog.py
+++ b/website/helpers/blog.py
@@ -46,8 +46,6 @@
 		if not res['content']:
 			res['content'] = website.utils.get_html(res['page_name'])
 		res['content'] = res['content'][:140]
-		if res.avatar and not "/" in res.avatar:
-			res.avatar = "files/" + res.avatar
 		
 	return result
 
@@ -133,9 +131,6 @@
 def get_writers_args():
 	bloggers = webnotes.conn.sql("""select * from `tabBlogger` 
 	 	order by posts desc""", as_dict=1)
-	for blogger in bloggers:
-		if blogger.avatar and not "/" in blogger.avatar:
-			blogger.avatar = "files/" + blogger.avatar
 		
 	args = {
 		"bloggers": bloggers,
diff --git a/website/helpers/product.py b/website/helpers/product.py
index ef433b1..f79d207 100644
--- a/website/helpers/product.py
+++ b/website/helpers/product.py
@@ -5,7 +5,7 @@
 
 import webnotes
 from webnotes.utils import cstr
-from website.utils import build_html, url_for_website, delete_page_cache
+from website.utils import build_html, delete_page_cache
 
 
 @webnotes.whitelist(allow_guest=True)
@@ -90,7 +90,6 @@
 		r.website_description = "No description given"
 	if len(r.website_description.split(" ")) > 24:
 		r.website_description = " ".join(r.website_description.split(" ")[:24]) + "..."
-	r.website_image = url_for_website(r.website_image)
 
 def get_parent_item_groups(item_group_name):
 	item_group = webnotes.doc("Item Group", item_group_name)
diff --git a/website/helpers/slideshow.py b/website/helpers/slideshow.py
index 0afd80a..4c64c55 100644
--- a/website/helpers/slideshow.py
+++ b/website/helpers/slideshow.py
@@ -20,7 +20,4 @@
 	slideshow = webnotes.bean("Website Slideshow", obj.doc.slideshow)
 	obj.slides = slideshow.doclist.get({"doctype":"Website Slideshow Item"})
 	obj.doc.slideshow_header = slideshow.doc.header or ""
-	for s in obj.slides:
-		if s.image and not s.image.lower().startswith("http"):
-			s.image = "files/" + s.image
 	
\ No newline at end of file
diff --git a/website/templates/html/base.html b/website/templates/html/base.html
index 6889d67..cfba1a5 100644
--- a/website/templates/html/base.html
+++ b/website/templates/html/base.html
@@ -10,13 +10,8 @@
 	<script type="text/javascript" src="js/wn-web.js"></script>
 	<link type="text/css" rel="stylesheet" href="css/all-web.css">
 	<link type="text/css" rel="stylesheet" href="css/wn-web.css">
-	{%- if favicon %}
-	<link rel="shortcut icon" href="files/{{ favicon }}" type="image/x-icon">
-	<link rel="icon" href="files/{{ favicon }}" type="image/x-icon">
-	{% else %}
-	<link rel="shortcut icon" href="app/images/favicon.ico" type="image/x-icon">
-	<link rel="icon" href="app/images/favicon.ico" type="image/x-icon">
-	{% endif -%}	
+	<link rel="shortcut icon" href="{{ favicon }}" type="image/x-icon">
+	<link rel="icon" href="{{ favicon }}" type="image/x-icon">
 	{% if description -%}
 	<meta name="description" content="{{ description }}">	
 	{%- endif %}
diff --git a/website/utils.py b/website/utils.py
index 14e3e13..2528859 100644
--- a/website/utils.py
+++ b/website/utils.py
@@ -192,6 +192,7 @@
 	return None, None
 	
 def get_outer_env(page_name, args):
+	
 	from webnotes.utils import get_request_site_address
 	from urllib import quote
 	
@@ -238,7 +239,7 @@
 	args.update(ret)
 	
 	settings = webnotes.doc("Website Settings", "Website Settings")
-	for k in ["banner_html", "brand_html", "copyright", "address", "twitter_share_via"
+	for k in ["banner_html", "brand_html", "copyright", "address", "twitter_share_via",
 		"favicon", "facebook_share", "google_plus_one", "twitter_share", "linked_in_share"]:
 		if k in settings.fields:
 			args[k] = settings.fields.get(k)
@@ -280,13 +281,7 @@
 def delete_page_cache(page_name):
 	if page_name:
 		webnotes.cache().delete_value("page:" + page_name)
-	
-def url_for_website(url):
-	if url and not url.lower().startswith("http"):
-		return "files/" + url
-	else:
-		return url
-		
+			
 def get_hex_shade(color, percent):
 	
 	def p(c):
