diff --git a/accounts/doctype/account/account.py b/accounts/doctype/account/account.py
index 3cd131f..410994f 100644
--- a/accounts/doctype/account/account.py
+++ b/accounts/doctype/account/account.py
@@ -48,15 +48,17 @@
 				from tabAccount where name =%s""", self.doc.parent_account)
 			if not par:
 				msgprint("Parent account does not exists", raise_exception=1)
-			elif par and par[0][0] == self.doc.name:
+			elif par[0][0] == self.doc.name:
 				msgprint("You can not assign itself as parent account", raise_exception=1)
-			elif par and par[0][1] != 'Group':
+			elif par[0][1] != 'Group':
 				msgprint("Parent account can not be a ledger", raise_exception=1)
-			elif par and self.doc.debit_or_credit and par[0][3] != self.doc.debit_or_credit:
+			elif self.doc.debit_or_credit and par[0][3] != self.doc.debit_or_credit:
 				msgprint("You can not move a %s account under %s account" % 
 					(self.doc.debit_or_credit, par[0][3]), raise_exception=1)
-			elif par and not self.doc.is_pl_account:
+			
+			if not self.doc.is_pl_account:
 				self.doc.is_pl_account = par[0][2]
+			if not self.doc.debit_or_credit:
 				self.doc.debit_or_credit = par[0][3]
 
 	def validate_max_root_accounts(self):
diff --git a/accounts/doctype/pos_setting/pos_setting.txt b/accounts/doctype/pos_setting/pos_setting.txt
index a91c443..a625ad8 100755
--- a/accounts/doctype/pos_setting/pos_setting.txt
+++ b/accounts/doctype/pos_setting/pos_setting.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-01-10 16:34:07", 
+  "creation": "2013-01-24 11:03:29", 
   "docstatus": 0, 
-  "modified": "2013-01-22 16:55:20", 
+  "modified": "2013-03-25 15:27:52", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -142,6 +142,14 @@
  }, 
  {
   "doctype": "DocField", 
+  "fieldname": "expense_account", 
+  "fieldtype": "Link", 
+  "label": "Expense Account", 
+  "options": "Account", 
+  "reqd": 1
+ }, 
+ {
+  "doctype": "DocField", 
   "fieldname": "warehouse", 
   "fieldtype": "Link", 
   "label": "Warehouse", 
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index 4b0f3b1..15b136b 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -27,8 +27,6 @@
 from webnotes.model.code import get_obj
 from webnotes import _, msgprint
 
-session = webnotes.session
-
 month_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6, 'Yearly': 12}
 
 
@@ -156,46 +154,57 @@
 
 	def set_pos_fields(self):
 		"""Set retail related fields from pos settings"""
-		pos = webnotes.conn.sql("select * from `tabPOS Setting` where ifnull(user,'') = '%s' and company = '%s'" % (session['user'], self.doc.company), as_dict=1)
-		if not pos:
-			pos = webnotes.conn.sql("select * from `tabPOS Setting` where ifnull(user,'') = '' and company = '%s'" % (self.doc.company), as_dict=1)
+		pos = self.pos_details
+
 		if pos:
-			val = webnotes.conn.sql("select name from `tabAccount` where name = %s and docstatus != 2", (cstr(self.doc.customer) + " - " + self.get_company_abbr()))
+			val = webnotes.conn.sql("""select name from `tabAccount` 
+				where name = %s and docstatus != 2""", 
+				(cstr(self.doc.customer) + " - " + self.get_company_abbr()))
+
 			val = val and val[0][0] or ''
-			if not val: val = pos and pos[0]['customer_account'] or ''
+			if not val: val = pos[0]['customer_account'] or ''
+			
 			if not self.doc.debit_to:
 				webnotes.conn.set(self.doc,'debit_to',val)
 			
-			lst = ['territory','naming_series','currency','charge','letter_head','tc_name','price_list_name','company','select_print_heading','cash_bank_account']
+			lst = ['territory', 'naming_series', 'currency', 'charge', 'letter_head', 'tc_name',
+				'price_list_name', 'company', 'select_print_heading', 'cash_bank_account']
 				
 			for i in lst:
-				val = pos and pos[0][i] or ''
-				self.doc.fields[i] = val
+				self.doc.fields[i] = pos[0][i] or ''
+
 			self.set_pos_item_values()
 			
-			val = pos and flt(pos[0]['conversion_rate']) or 0	
-			self.doc.conversion_rate = val
+			self.doc.conversion_rate = flt(pos[0]['conversion_rate']) or 0	
 
 			#fetch terms	
-			if self.doc.tc_name:	 self.get_tc_details()
+			if self.doc.tc_name:
+				self.get_tc_details()
 			
 			#fetch charges
-			if self.doc.charge:		self.get_other_charges()
+			if self.doc.charge:
+				self.get_other_charges()
 
 
 	def set_pos_item_values(self):
 		"""Set default values related to pos for previously created sales invoice."""
-		if cint(self.doc.is_pos) ==1:
-			dtl = webnotes.conn.sql("select income_account, warehouse, cost_center from `tabPOS Setting` where ifnull(user,'') = '%s' and company = '%s'" % (session['user'], self.doc.company), as_dict=1)
-			if not dtl:
-				dtl = webnotes.conn.sql("select income_account, warehouse, cost_center from `tabPOS Setting` where ifnull(user,'') = '' and company = '%s'" % (self.doc.company), as_dict=1)
+		if cint(self.doc.is_pos) == 1:
+			dtl = self.pos_details
+			
 			for d in getlist(self.doclist,'entries'):
 				# overwrite if mentioned in item
-				item = webnotes.conn.sql("select default_income_account, default_sales_cost_center, default_warehouse from tabItem where name = '%s'" %(d.item_code), as_dict=1)
-				d.income_account = item and item[0]['default_income_account'] or dtl and dtl[0]['income_account'] or d.income_account
-				d.cost_center = item and item[0]['default_sales_cost_center'] or dtl and dtl[0]['cost_center'] or d.cost_center
-				d.warehouse = item and item[0]['default_warehouse'] or dtl and dtl[0]['warehouse'] or d.warehouse
-
+				item = webnotes.conn.sql("""select default_income_account,
+					default_sales_cost_center, default_warehouse, purchase_account
+					from tabItem where name = %s""", (d.item_code,), as_dict=1)
+				
+				d.income_account = (item and item[0]['default_income_account']) \
+					or (dtl and dtl[0]['income_account']) or d.income_account
+				d.cost_center = (item and item[0]['default_sales_cost_center']) \
+					or (dtl and dtl[0]['cost_center']) or d.cost_center
+				d.warehouse = (item and item[0]['default_warehouse']) \
+					or (dtl and dtl[0]['warehouse']) or d.warehouse
+				d.expense_account = (item and item[0].purchase_account) \
+					or (dtl and dtl[0].expense_account) or d.expense_account
 
 	def get_customer_account(self):
 		"""Get Account Head to which amount needs to be Debited based on Customer"""
@@ -276,15 +285,13 @@
 		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", "cost_center"], as_dict=True)
+					"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 ""
 				
 				if cint(webnotes.defaults.get_global_default("auto_inventory_accounting")) \
 						and cint(self.doc.is_pos) and cint(self.doc.update_stock):
 					d.expense_account = item['purchase_account'] or ""
-					d.purchase_cost_center = item['cost_center'] or ""
-
 
 	def get_item_details(self, args=None):
 		import json
@@ -301,7 +308,6 @@
 						'cost_center': doc.fields.get('cost_center'), 
 						'warehouse': doc.fields.get('warehouse'),
 						'expense_account': doc.fields.get('expense_account'),
-						'purchase_cost_center': doc.fields.get('purchase_cost_center')
 					}
 
 					ret = self.get_pos_details(arg)
@@ -309,14 +315,27 @@
 						if not doc.fields.get(r):
 							doc.fields[r] = ret[r]		
 
+	@property
+	def pos_details(self):
+		if not hasattr(self, "_pos_details"):
+			dtl = webnotes.conn.sql("""select income_account, warehouse, cost_center, 
+				expense_account from `tabPOS Setting` where user = %s and company = %s""", 
+				(webnotes.session['user'], self.doc.company), as_dict=1)			 
+			if not dtl:
+				dtl = webnotes.conn.sql("""select income_account, warehouse, cost_center, 
+					expense_account from `tabPOS Setting` where ifnull(user,'') = '' 
+					and company = %s""", self.doc.company, as_dict=1)
+			self._pos_details = dtl
+			
+		return self._pos_details
 
 	def get_pos_details(self, args, ret = {}):
 		if args['item_code'] and cint(self.doc.is_pos) == 1:
-			dtl = webnotes.conn.sql("select income_account, warehouse, cost_center from `tabPOS Setting` where user = '%s' and company = '%s'" % (session['user'], self.doc.company), as_dict=1)				 
-			if not dtl:
-				dtl = webnotes.conn.sql("select income_account, warehouse, cost_center from `tabPOS Setting` where ifnull(user,'') = '' and company = '%s'" % (self.doc.company), as_dict=1)
+			dtl = self.pos_details
 
-			item = webnotes.conn.sql("select default_income_account, default_sales_cost_center, default_warehouse from tabItem where name = '%s'" %(args['item_code']), as_dict=1)
+			item = webnotes.conn.sql("""select default_income_account, default_sales_cost_center, 
+				default_warehouse, purchase_account from tabItem where name = %s""", 
+				args['item_code'], as_dict=1)
 
 			ret['income_account'] = item and item[0].get('default_income_account') \
 				or (dtl and dtl[0].get('income_account') or args.get('income_account'))
@@ -326,9 +345,14 @@
 			
 			ret['warehouse'] = item and item[0].get('default_warehouse') \
 				or (dtl and dtl[0].get('warehouse') or args.get('warehouse'))
+			
+			ret['expense_account'] = item and item[0].get('purchase_account') \
+				or (dtl and dtl[0].get('expense_account') or args.get('expense_account'))
 
 			if ret['warehouse']:
-				actual_qty = webnotes.conn.sql("select actual_qty from `tabBin` where item_code = '%s' and warehouse = '%s'" % (args['item_code'], ret['warehouse']))
+				actual_qty = webnotes.conn.sql("""select actual_qty from `tabBin` 
+					where item_code = %s and warehouse = %s""", 
+					(args['item_code'], ret['warehouse']))
 				ret['actual_qty']= actual_qty and flt(actual_qty[0][0]) or 0
 		return ret
 
@@ -545,7 +569,7 @@
 	 
 	
 	def get_warehouse(self):
-		w = webnotes.conn.sql("select warehouse from `tabPOS Setting` where ifnull(user,'') = '%s' and company = '%s'" % (session['user'], self.doc.company))
+		w = webnotes.conn.sql("select warehouse from `tabPOS Setting` where ifnull(user,'') = '%s' and company = '%s'" % (webnotes.session['user'], self.doc.company))
 		w = w and w[0][0] or ''
 		if not w:
 			ps = webnotes.conn.sql("select name, warehouse from `tabPOS Setting` where ifnull(user,'') = '' and company = '%s'" % self.doc.company)
diff --git a/accounts/doctype/sales_invoice_item/sales_invoice_item.txt b/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
index 221359c..ca5fae4 100644
--- a/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
+++ b/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-03-07 11:42:55", 
+  "creation": "2013-03-25 15:35:04", 
   "docstatus": 0, 
-  "modified": "2013-03-22 18:40:48", 
+  "modified": "2013-03-25 15:35:23", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -215,6 +215,7 @@
   "label": "Expense Account", 
   "options": "Account", 
   "print_hide": 1, 
+  "read_only": 0, 
   "width": "120px"
  }, 
  {
@@ -234,17 +235,6 @@
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "purchase_cost_center", 
-  "fieldtype": "Link", 
-  "hidden": 1, 
-  "in_filter": 1, 
-  "label": "Purchase Cost Center", 
-  "options": "Cost Center", 
-  "print_hide": 1, 
-  "width": "120px"
- }, 
- {
-  "doctype": "DocField", 
   "fieldname": "serial_no", 
   "fieldtype": "Small Text", 
   "in_filter": 1, 
diff --git a/controllers/selling_controller.py b/controllers/selling_controller.py
index ab002be..f3fb47f 100644
--- a/controllers/selling_controller.py
+++ b/controllers/selling_controller.py
@@ -65,4 +65,4 @@
 	def check_expense_account(self, item):
 		if item.buying_amount and not item.expense_account:
 			msgprint(_("""Expense account is mandatory for item: """) + item.item_code, 
-				raise_exception=1)	
\ No newline at end of file
+				raise_exception=1)
\ No newline at end of file
diff --git a/patches/march_2013/p08_create_aii_accounts.py b/patches/march_2013/p08_create_aii_accounts.py
new file mode 100644
index 0000000..c39c206
--- /dev/null
+++ b/patches/march_2013/p08_create_aii_accounts.py
@@ -0,0 +1,26 @@
+import webnotes
+def execute():
+	accounts_to_add = [
+		["Stock Assets", "Current Assets", "Group", ""],
+		["Stock In Hand", "Stock Assets", "Ledger", ""],
+		["Stock Debit But Not Billed", "Stock Assets", "Ledger", ""],
+		["Stock Expenses", "Direct Expenses", "Group", "Expense Account"],
+		["Cost of Goods Sold", "Stock Expenses", "Ledger", "Expense Account"],
+		["Stock Adjustment", "Stock Expenses", "Ledger", "Expense Account"],
+		["Expenses Included In Valuation", "Stock Expenses", "Ledger", "Expense Account"],
+		["Stock Liabilities", "Current Liabilities", "Group", ""],
+		["Stock Received But Not Billed", "Stock Liabilities", "Ledger", ""],
+	]
+	
+	for company, abbr in webnotes.conn.sql_list("""select name, abbr from `tabCompany`"""):
+		for account_name, parent_account_name, group_or_ledger, account_type in accounts_to_add:
+			if not webnotes.conn.exists("Account", "%s - %s" % (account_name, abbr)):
+				account = webnotes.bean({
+					"doctype": "Account",
+					"account_name": account_name,
+					"parent_account": "%s - %s" % (parent_account_name, abbr),
+					"group_or_ledger": group_or_ledger,
+					"account_type": account_type,
+					"company": company
+				})
+				account.insert()
\ No newline at end of file
diff --git a/selling/doctype/sales_common/sales_common.py b/selling/doctype/sales_common/sales_common.py
index fca96b8..729013f 100644
--- a/selling/doctype/sales_common/sales_common.py
+++ b/selling/doctype/sales_common/sales_common.py
@@ -127,29 +127,40 @@
 		if not obj.doc.price_list_name:
 			msgprint("Please Select Price List before selecting Items")
 			raise Exception
-		item = webnotes.conn.sql("select description, item_name, brand, item_group, stock_uom, default_warehouse, default_income_account, default_sales_cost_center, purchase_account, cost_center, description_html, barcode from `tabItem` where name = '%s' and (ifnull(end_of_life,'')='' or end_of_life >	now() or end_of_life = '0000-00-00') and (is_sales_item = 'Yes' or is_service_item = 'Yes')" % (args['item_code']), as_dict=1)
-		tax = webnotes.conn.sql("select tax_type, tax_rate from `tabItem Tax` where parent = %s" , args['item_code'])
+		item = webnotes.conn.sql("""select description, item_name, brand, item_group, stock_uom, 
+			default_warehouse, default_income_account, default_sales_cost_center, 
+			purchase_account, description_html, barcode from `tabItem` 
+			where name = %s and (ifnull(end_of_life,'')='' or end_of_life >	now() 
+			or end_of_life = '0000-00-00') and (is_sales_item = 'Yes' 
+			or is_service_item = 'Yes')""", args['item_code'], as_dict=1)
+		tax = webnotes.conn.sql("""select tax_type, tax_rate from `tabItem Tax` 
+			where parent = %s""", args['item_code'])
 		t = {}
 		for x in tax: t[x[0]] = flt(x[1])
 		ret = {
-			'description'			: item and item[0]['description_html'] or item[0]['description'],
-			'barcode'				: item and item[0]['barcode'] or '',
-			'item_group'			: item and item[0]['item_group'] or '',
-			'item_name'				: item and item[0]['item_name'] or '',
-			'brand'					: item and item[0]['brand'] or '',
-			'stock_uom'				: item and item[0]['stock_uom'] or '',
-			'reserved_warehouse'	: item and item[0]['default_warehouse'] or '',
-			'warehouse'				: item and item[0]['default_warehouse'] or args.get('warehouse'),
-			'income_account'		: item and item[0]['default_income_account'] or args.get('income_account'),
-			'expense_account'		: item and item[0]['purchase_account'] or args.get('expense_account'),
-			'cost_center'			: item and item[0]['default_sales_cost_center'] or args.get('cost_center'),
-			'purchase_cost_center'	: item and item[0]['cost_center'] or args.get('purchase_cost_center'),
-			'qty'					: 1.00,	 # this is done coz if item once fetched is fetched again thn its qty shld be reset to 1
-			'adj_rate'				: 0,
-			'amount'				: 0,
-			'export_amount'			: 0,
-			'item_tax_rate'			: json.dumps(t),
-			'batch_no'				: ''
+			'description': item and item[0]['description_html'] or \
+				item[0]['description'],
+			'barcode': item and item[0]['barcode'] or '',
+			'item_group': item and item[0]['item_group'] or '',
+			'item_name': item and item[0]['item_name'] or '',
+			'brand': item and item[0]['brand'] or '',
+			'stock_uom': item and item[0]['stock_uom'] or '',
+			'reserved_warehouse': item and item[0]['default_warehouse'] or '',
+			'warehouse': item and item[0]['default_warehouse'] or \
+				args.get('warehouse'),
+			'income_account': item and item[0]['default_income_account'] or \
+				args.get('income_account'),
+			'expense_account': item and item[0]['purchase_account'] or \
+			 	args.get('expense_account'),
+			'cost_center': item and item[0]['default_sales_cost_center'] or \
+				args.get('cost_center'),
+			# this is done coz if item once fetched is fetched again than its qty shld be reset to 1
+			'qty': 1.00, 
+			'adj_rate': 0,
+			'amount': 0,
+			'export_amount': 0,
+			'item_tax_rate': json.dumps(t),
+			'batch_no': ''
 		}
 		if(obj.doc.price_list_name and item):	#this is done to fetch the changed BASIC RATE and REF RATE based on PRICE LIST
 			base_ref_rate =	self.get_ref_rate(args['item_code'], obj.doc.price_list_name, obj.doc.price_list_currency, obj.doc.plc_conversion_rate)
@@ -174,14 +185,18 @@
 
 
 	def get_item_defaults(self, args):
-		item = webnotes.conn.sql("""select default_warehouse, default_income_account, default_sales_cost_center from `tabItem` 
-			where name = '%s' and (ifnull(end_of_life,'') = '' or end_of_life > now() or end_of_life = '0000-00-00') 
-			and (is_sales_item = 'Yes' or is_service_item = 'Yes') """ % (args['item_code']), as_dict=1)
+		item = webnotes.conn.sql("""select default_warehouse, default_income_account, 
+			default_sales_cost_center, purchase_account from `tabItem` where name = %s 
+			and (ifnull(end_of_life,'') = '' or end_of_life > now() or end_of_life = '0000-00-00') 
+			and (is_sales_item = 'Yes' or is_service_item = 'Yes') """, 
+			(args['item_code']), as_dict=1)
 		ret = {
-			'reserved_warehouse'	: item and item[0]['default_warehouse'] or '',
-			'warehouse'				: item and item[0]['default_warehouse'] or args.get('warehouse'),
-			'income_account'		: item and item[0]['default_income_account'] or args.get('income_account'),
-			'cost_center'			: item and item[0]['default_sales_cost_center'] or args.get('cost_center')
+			'reserved_warehouse': item and item[0]['default_warehouse'] or '',
+			'warehouse': item and item[0]['default_warehouse'] or args.get('warehouse'),
+			'income_account': item and item[0]['default_income_account'] or \
+				args.get('income_account'),
+			'expense_account': item and item[0]['purchase_account'] or args.get('expense_account'),
+			'cost_center': item and item[0]['default_sales_cost_center'] or args.get('cost_center'),
 		}
 
 		return ret
diff --git a/setup/doctype/company/company.py b/setup/doctype/company/company.py
index a2e56eb..47b250d 100644
--- a/setup/doctype/company/company.py
+++ b/setup/doctype/company/company.py
@@ -249,15 +249,17 @@
 			
 	def on_update(self):
 		self.set_letter_head()
-		ac = sql("select name from tabAccount where company=%s and docstatus<2 limit 1",
-			self.doc.name)
-		if not ac:
+
+		if not webnotes.conn.sql("""select name from tabAccount 
+			where company=%s and docstatus<2 limit 1""", self.doc.name):
 			self.create_default_accounts()
-		self.set_default_accounts()
-		cc = sql("select name from `tabCost Center` where cost_center_name = 'Root' and company_name = '%s'"%(self.doc.name))
-		if not cc:
+		
+		if not webnotes.conn.sql("""select name from `tabCost Center` 
+			where cost_center_name = 'Root' and company_name = %s""", self.doc.name):
 			self.create_default_cost_center()
 			
+		self.set_default_accounts()
+			
 		if self.doc.default_currency:
 			webnotes.conn.set_value("Currency", self.doc.default_currency, "enabled", 1)
 
diff --git a/setup/doctype/company/test_company.py b/setup/doctype/company/test_company.py
index fe793ff..e79bd07 100644
--- a/setup/doctype/company/test_company.py
+++ b/setup/doctype/company/test_company.py
@@ -1,4 +1,4 @@
-test_ignore = ["Account"]
+test_ignore = ["Account", "Cost Center"]
 
 test_records = [
 	[{
diff --git a/stock/doctype/delivery_note/delivery_note.js b/stock/doctype/delivery_note/delivery_note.js
index 7e6031c..c7feb1b 100644
--- a/stock/doctype/delivery_note/delivery_note.js
+++ b/stock/doctype/delivery_note/delivery_note.js
@@ -323,7 +323,7 @@
 }
 
 // cost center
-cur_frm.fields_dict["delivery_note_details"].grid.get_field("cost_center").get_query = function(doc) {
+cur_frm.fields_dict.delivery_note_details.grid.get_field("cost_center").get_query = function(doc) {
 	return {
 		query: "accounts.utils.get_cost_center_list",
 		filters: { company_name: doc.company}
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index 5e3c9e9..fce379e 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -85,8 +85,11 @@
 			obj = get_obj('Sales Common')
 			for doc in self.doclist:
 				if doc.fields.get('item_code'):
-					arg = {'item_code':doc.fields.get('item_code'), 'income_account':doc.fields.get('income_account'), 
-						'cost_center': doc.fields.get('cost_center'), 'warehouse': doc.fields.get('warehouse')};
+					arg = {
+						'item_code':doc.fields.get('item_code'),
+						'expense_account':doc.fields.get('expense_account'), 
+						'cost_center': doc.fields.get('cost_center'), 
+						'warehouse': doc.fields.get('warehouse')};
 					ret = obj.get_item_defaults(arg)
 					for r in ret:
 						if not doc.fields.get(r):
diff --git a/stock/doctype/delivery_note_item/delivery_note_item.txt b/stock/doctype/delivery_note_item/delivery_note_item.txt
index ffc19c3..1961e6c 100644
--- a/stock/doctype/delivery_note_item/delivery_note_item.txt
+++ b/stock/doctype/delivery_note_item/delivery_note_item.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-03-07 11:42:59", 
+  "creation": "2013-03-25 11:55:16", 
   "docstatus": 0, 
-  "modified": "2013-03-22 18:43:10", 
+  "modified": "2013-03-25 15:43:04", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -253,14 +253,15 @@
   "no_copy": 1, 
   "options": "Account", 
   "print_hide": 1, 
+  "read_only": 0, 
   "width": "120px"
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "purchase_cost_center", 
+  "fieldname": "cost_center", 
   "fieldtype": "Link", 
   "hidden": 1, 
-  "label": "Purchase Cost Center", 
+  "label": "Cost Center", 
   "no_copy": 1, 
   "options": "Cost Center", 
   "print_hide": 1, 
diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js
index dc57ec6..9b89d78 100644
--- a/stock/doctype/stock_entry/stock_entry.js
+++ b/stock/doctype/stock_entry/stock_entry.js
@@ -27,7 +27,7 @@
 		
 		if (sys_defaults.auto_inventory_accounting && !this.frm.doc.expense_adjustment_account) {
 			if (this.frm.doc.purpose == "Sales Return") 
-				account_for = "stock_delivered_but_not_billed";
+				account_for = "stock_in_hand_account";
 			else if (this.frm.doc.purpose == "Purchase Return") 
 				account_for = "stock_received_but_not_billed";
 			else account_for = "stock_adjustment_account";
