diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index f535d56..fb9977c 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -33,6 +33,47 @@
 		self.doc, self.doclist = d, dl 
 		self.tname = 'Purchase Invoice Item'
 		self.fname = 'entries'
+		
+	def validate(self):
+		super(DocType, self).validate()
+		
+		self.po_required()
+		self.pr_required()
+		self.check_active_purchase_items()
+		self.check_conversion_rate()
+		self.validate_bill_no_date()
+		self.validate_bill_no()
+		self.validate_reference_value()
+		self.validate_credit_acc()
+		self.clear_unallocated_advances("Purchase Invoice Advance", "advance_allocation_details")
+		self.check_for_acc_head_of_supplier()
+		self.check_for_stopped_status()
+
+		self.po_list, self.pr_list = [], []
+		for d in getlist(self.doclist, 'entries'):
+			self.validate_supplier(d)
+			self.validate_po_pr(d)
+			if not d.purchase_order in self.po_list:
+				self.po_list.append(d.purchase_order)
+			if not d.purhcase_receipt in self.pr_list:
+				self.pr_list.append(d.purchase_receipt)
+
+
+		if not self.doc.is_opening:
+			self.doc.is_opening = 'No'
+
+		self.set_aging_date()
+
+		#set against account for credit to
+		self.set_against_expense_account()
+
+		#FY validation
+		get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,
+		 	self.doc.posting_date,'Posting Date')
+		
+		self.validate_write_off_account()
+		self.update_raw_material_cost()
+		self.update_valuation_rate("entries")
 
 	def get_credit_to(self):
 		acc_head = sql("select name, credit_days from `tabAccount` where (name = %s or (master_name = %s and master_type = 'supplier')) and docstatus != 2", (cstr(self.doc.supplier) + " - " + self.company_abbr,self.doc.supplier))		
@@ -265,7 +306,7 @@
 	def set_against_expense_account(self):
 		auto_inventory_accounting = \
 			cint(webnotes.defaults.get_global_default("auto_inventory_accounting"))
-		stock_not_billed_account = "Stock Received But Not Billed - %s" % self.company_abbr
+		stock_not_billed_account = self.get_company_default("stock_received_but_not_billed")
 		
 		against_accounts = []
 		for item in self.doclist.get({"parentfield": "entries"}):
@@ -277,6 +318,10 @@
 				if stock_not_billed_account not in against_accounts:
 					against_accounts.append(stock_not_billed_account)
 			
+			elif not item.expense_head:
+				msgprint(_("""Expense account is mandatory for item: """) + item.item_code, 
+					raise_exception=1)
+			
 			elif item.expense_head not in against_accounts:
 				# if no auto_inventory_accounting or not a stock item
 				against_accounts.append(item.expense_head)
@@ -303,47 +348,6 @@
 		if self.doc.write_off_amount and not self.doc.write_off_account:
 			msgprint("Please enter Write Off Account", raise_exception=1)
 
-	def validate(self):
-		super(DocType, self).validate()
-		
-		self.po_required()
-		self.pr_required()
-		self.check_active_purchase_items()
-		self.check_conversion_rate()
-		self.validate_bill_no_date()
-		self.validate_bill_no()
-		self.validate_reference_value()
-		self.validate_credit_acc()
-		self.clear_unallocated_advances("Purchase Invoice Advance", "advance_allocation_details")
-		self.check_for_acc_head_of_supplier()
-		self.check_for_stopped_status()
-
-		self.po_list, self.pr_list = [], []
-		for d in getlist(self.doclist, 'entries'):
-			self.validate_supplier(d)
-			self.validate_po_pr(d)
-			if not d.purchase_order in self.po_list:
-				self.po_list.append(d.purchase_order)
-			if not d.purhcase_receipt in self.pr_list:
-				self.pr_list.append(d.purchase_receipt)
-
-
-		if not self.doc.is_opening:
-			self.doc.is_opening = 'No'
-
-		self.set_aging_date()
-
-		#set against account for credit to
-		self.set_against_expense_account()
-
-		#FY validation
-		get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,
-		 	self.doc.posting_date,'Posting Date')
-		
-		self.validate_write_off_account()
-		self.update_raw_material_cost()
-		self.update_valuation_rate("entries")
-
 	def check_prev_docstatus(self):
 		for d in getlist(self.doclist,'entries'):
 			if d.purchase_order:
@@ -445,7 +449,7 @@
 		# item gl entries
 		stock_item_and_auto_inventory_accounting = False
 		if auto_inventory_accounting:
-			stock_acocunt = self.get_default_account("stock_received_but_not_billed")
+			stock_account = self.get_company_default("stock_received_but_not_billed")
 			
 		for item in self.doclist.get({"parentfield": "entries"}):
 			if auto_inventory_accounting and item.item_code in self.stock_items:
@@ -458,7 +462,7 @@
 					
 					gl_entries.append(
 						self.get_gl_dict({
-							"account": stock_acocunt,
+							"account": stock_account,
 							"against": self.doc.credit_to,
 							"debit": flt(item.valuation_rate) * flt(item.conversion_factor) \
 								*  flt(item.qty),
@@ -483,8 +487,8 @@
 			# this will balance out valuation amount included in cost of goods sold
 			gl_entries.append(
 				self.get_gl_dict({
-					"account": self.get_default_account("expenses_included_in_valuation"),
-					"cost_center": "Auto Inventory Accounting - %s" % self.company_abbr,
+					"account": self.get_company_default("expenses_included_in_valuation"),
+					"cost_center": self.get_company_default("stock_adjustment_cost_center"),
 					"against": self.doc.credit_to,
 					"credit": valuation_tax,
 					"remarks": self.doc.remarks or "Accounting Entry for Stock"
@@ -525,8 +529,8 @@
 					and is_active = 1 """, (d.item_code,))
 				rm_cost = rm_cost and flt(rm_cost[0][0]) or 0
 				
-				d.conversion_factor = d.conversion_factor or webnotes.conn.get_value(
+				d.conversion_factor = d.conversion_factor or flt(webnotes.conn.get_value(
 					"UOM Conversion Detail", {"parent": d.item_code, "uom": d.uom}, 
-					"conversion_factor") or 1
+					"conversion_factor")) or 1
 		
 				d.rm_supp_cost = rm_cost * flt(d.qty) * flt(d.conversion_factor)
\ No newline at end of file
diff --git a/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index 6d9cfca..621604b 100644
--- a/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -109,12 +109,49 @@
 			# print tax.account_head, tax.tax_amount, tax.item_wise_tax_detail
 
 		expected_values = [
-			["_Test Item Home Desktop 100", 90],
-			["_Test Item Home Desktop 200", 135]
+			["_Test Item Home Desktop 100", 90, 59],
+			["_Test Item Home Desktop 200", 135, 177]
 		]
 		for i, item in enumerate(wrapper.doclist.get({"parentfield": "entries"})):
 			self.assertEqual(item.item_code, expected_values[i][0])
 			self.assertEqual(item.item_tax_amount, expected_values[i][1])
+			self.assertEqual(item.valuation_rate, expected_values[i][2])
+			
+	def test_purchase_invoice_with_subcontracted_item(self):
+		wrapper = webnotes.bean(copy=test_records[0])
+		wrapper.doclist[1].item_code = "_Test FG Item"
+		wrapper.run_method("calculate_taxes_and_totals")
+		wrapper.insert()
+		wrapper.load_from_db()
+
+		self.assertEqual(wrapper.doclist[0].net_total, 1250)
+
+		# tax amounts
+		expected_values = [
+			["_Test Account Shipping Charges - _TC", 100, 1350],
+			["_Test Account Customs Duty - _TC", 125, 1350],
+			["_Test Account Excise Duty - _TC", 140, 1490],
+			["_Test Account Education Cess - _TC", 2.8, 1492.8],
+			["_Test Account S&H Education Cess - _TC", 1.4, 1494.2],
+			["_Test Account CST - _TC", 29.88, 1524.08],
+			["_Test Account VAT - _TC", 156.25, 1680.33],
+			["_Test Account Discount - _TC", 168.03, 1512.30],
+		]
+
+		for i, tax in enumerate(wrapper.doclist.get({"parentfield": "purchase_tax_details"})):
+			self.assertEqual(tax.account_head, expected_values[i][0])
+			self.assertEqual(tax.tax_amount, expected_values[i][1])
+			self.assertEqual(tax.total, expected_values[i][2])
+			# print tax.account_head, tax.tax_amount, tax.item_wise_tax_detail
+
+		expected_values = [
+			["_Test FG Item", 90, 7059],
+			["_Test Item Home Desktop 200", 135, 177]
+		]
+		for i, item in enumerate(wrapper.doclist.get({"parentfield": "entries"})):
+			self.assertEqual(item.item_code, expected_values[i][0])
+			self.assertEqual(item.item_tax_amount, expected_values[i][1])
+			self.assertEqual(item.valuation_rate, expected_values[i][2])
 			
 	def test_purchase_invoice_with_advance(self):
 		from accounts.doctype.journal_voucher.test_journal_voucher \
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index 9b5c80c..4b0f3b1 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -249,7 +249,7 @@
 					['Delivery Note Item', 'Sales Invoice Item'],
 					['Sales Taxes and Charges','Sales Taxes and Charges'],
 					['Sales Team','Sales Team']]""")								
-			self.get_income_account('entries')
+			self.get_income_expense_account('entries')
 			
 		elif self.doc.sales_order_main:
 			self.validate_prev_docname('sales order')
@@ -259,7 +259,7 @@
 				"""[['Sales Order', 'Sales Invoice'],['Sales Order Item', 'Sales Invoice Item'], 
 				['Sales Taxes and Charges','Sales Taxes and Charges'], 
 				['Sales Team', 'Sales Team']]""")
-			self.get_income_account('entries')
+			self.get_income_expense_account('entries')
 			
 		ret = self.get_debit_to()
 		self.doc.debit_to = ret.get('debit_to')
@@ -269,16 +269,21 @@
 		"""
 			Loads default accounts from items, customer when called from mapper
 		"""
-		self.get_income_account('entries')
+		self.get_income_expense_account('entries')
 		
 		
-	def get_income_account(self,doctype):		
+	def get_income_expense_account(self,doctype):		
 		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"], as_dict=True)
+				item = webnotes.conn.get_value("Item", d.item_code, ["default_income_account", 
+					"default_sales_cost_center", "purchase_account", "cost_center"], as_dict=True)
 				d.income_account = item['default_income_account'] or ""
-				d.cost_center = item['default_sales_cost_center'] 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):
@@ -294,8 +299,10 @@
 						'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')
-					};
+						'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)
 					for r in ret:
diff --git a/accounts/doctype/sales_invoice_item/sales_invoice_item.txt b/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
index bc51198..221359c 100644
--- a/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
+++ b/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-03-07 11:42:55", 
   "docstatus": 0, 
-  "modified": "2013-03-21 18:35:47", 
+  "modified": "2013-03-22 18:40:48", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -222,7 +222,7 @@
   "fieldname": "cost_center", 
   "fieldtype": "Link", 
   "in_filter": 1, 
-  "label": "Cost Center", 
+  "label": "Sales Cost Center", 
   "oldfieldname": "cost_center", 
   "oldfieldtype": "Link", 
   "options": "Cost Center", 
@@ -234,6 +234,17 @@
  }, 
  {
   "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/accounts/utils.py b/accounts/utils.py
index 051cdd1..92173ab 100644
--- a/accounts/utils.py
+++ b/accounts/utils.py
@@ -248,3 +248,64 @@
 		and voucher_no != ifnull(against_voucher, "")
 		and ifnull(is_cancelled, "No")="No" """,
 		(now(), webnotes.session.user, ref_type, ref_no))
+
+@webnotes.whitelist()
+def get_company_default(company, fieldname):
+	value = webnotes.conn.get_value("Company", company, fieldname)
+	
+	if not value:
+		msgprint(_("Please mention default value for '") + 
+			_(webnotes.get_doctype("company").get_label(fieldname) + 
+			_("' in Company: ") + company), raise_exception=True)
+			
+	return value
+		
+def create_stock_in_hand_jv(reverse=False):
+	from webnotes.utils import nowdate
+	today = nowdate()
+	fiscal_year = get_fiscal_year(today)[0]
+	
+	for company in webnotes.conn.sql_list("select name from `tabCompany`"):
+		stock_rbnb_value = get_stock_rbnb_value(company)
+		
+		jv = webnotes.bean([
+			{
+				"doctype": "Journal Voucher",
+				"naming_series": "_PATCH-",
+				"company": company,
+				"posting_date": today,
+				"fiscal_year": fiscal_year,
+				"voucher_type": "Journal Entry"
+			},
+			{
+				"doctype": "Journal Voucher Detail",
+				"parentfield": "entries",
+				"account": get_company_default(company, "stock_received_but_not_billed"),
+				(reverse and "debit" or "credit"): stock_rbnb_value
+			},
+			{
+				"doctype": "Journal Voucher Detail",
+				"parentfield": "entries",
+				"account": get_company_default(company, "stock_adjustment_account"),
+				(reverse and "credit" or "debit"): stock_rbnb_value
+			},
+		])
+		jv.insert()
+		jv.submit()
+		
+def get_stock_rbnb_value(company):	
+	total_received_amount = webnotes.conn.sql("""select sum(valuation_amount) 
+		from `tabPurchase Receipt Item` pr_item where docstatus=1 
+		and exists(select name from `tabItem` where name = pr_item.item_code 
+			and is_stock_item='Yes')
+		and exist(select name from `tabPurchase Receipt` 
+			where name = pr_item.parent and company = %s)""", company)
+		
+	total_billed_amount = webnotes.conn.sql("""select sum(valuation_amount) 
+		from `tabPurchase Invoice Item` pi_item where docstatus=1 
+		and exists(select name from `tabItem` where name = pi_item.item_code 
+			and is_stock_item='Yes')
+		and exist(select name from `tabPurchase Invoice` 
+			where name = pi_item.parent and company = %s)""", company)
+		
+	return flt(total_received_amount[0][0]) - flt(total_billed_amount[0][0])
diff --git a/buying/doctype/purchase_common/purchase_common.py b/buying/doctype/purchase_common/purchase_common.py
index 6af08c6..d5b563b 100644
--- a/buying/doctype/purchase_common/purchase_common.py
+++ b/buying/doctype/purchase_common/purchase_common.py
@@ -402,7 +402,7 @@
 		yed=add_days(str(ysd),365)		
 		if str(transaction_date) < str(ysd) or str(transaction_date) > str(yed):
 			msgprint("'%s' Not Within The Fiscal Year"%(dn))
-			raise Exception			
+			raise Exception
 
 	def load_default_taxes(self, obj):
 		return self.get_purchase_tax_details(obj, 1)
diff --git a/controllers/accounts_controller.py b/controllers/accounts_controller.py
index ac6481c..0e7c108 100644
--- a/controllers/accounts_controller.py
+++ b/controllers/accounts_controller.py
@@ -76,14 +76,9 @@
 				"allocate_amount": 0
 			})
 		
-	def get_default_account(self, account_for):
-		account = webnotes.conn.get_value("Company", self.doc.company, account_for)
-		if not account:
-			msgprint(_("Please mention default account for '") + 
-				_(webnotes.get_doctype("company").get_label(account_for) + 
-				_("' in Company: ") + self.doc.company), raise_exception=True)
-				
-		return account
+	def get_company_default(self, fieldname):
+		from accounts.utils import get_company_default
+		return get_company_default(self.doc.company, fieldname)
 		
 	@property
 	def stock_items(self):
@@ -101,8 +96,3 @@
 			self._abbr = webnotes.conn.get_value("Company", self.doc.company, "abbr")
 			
 		return self._abbr
-
-
-@webnotes.whitelist()
-def get_default_account(account_for, company):
-	return webnotes.conn.get_value("Company", company, account_for)
diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py
index 2c2bb44..560dec2 100644
--- a/controllers/buying_controller.py
+++ b/controllers/buying_controller.py
@@ -332,9 +332,9 @@
 	# update valuation rate
 	def update_valuation_rate(self, parentfield):
 		for d in self.doclist.get({"parentfield": parentfield}):
-			d.conversion_factor = d.conversion_factor or webnotes.conn.get_value(
+			d.conversion_factor = d.conversion_factor or flt(webnotes.conn.get_value(
 				"UOM Conversion Detail", {"parent": d.item_code, "uom": d.uom}, 
-				"conversion_factor") or 1
+				"conversion_factor")) or 1
 			if d.item_code and d.qty:
 				# if no item code, which is sometimes the case in purchase invoice, 
 				# then it is not possible to track valuation against it
diff --git a/controllers/selling_controller.py b/controllers/selling_controller.py
index 538c5c1..ab002be 100644
--- a/controllers/selling_controller.py
+++ b/controllers/selling_controller.py
@@ -18,6 +18,7 @@
 import webnotes
 from webnotes.utils import cint
 from setup.utils import get_company_currency
+from webnotes import msgprint, _
 
 from controllers.stock_controller import StockController
 
@@ -58,5 +59,10 @@
 						self.doc.doctype, self.doc.name, item.name, stock_ledger_entries, 
 						item_sales_bom)
 					item.buying_amount = buying_amount > 0 and buying_amount or 0
-					webnotes.conn.set_value(self.tname, item.name, "buying_amount", 
-						item.buying_amount)
\ No newline at end of file
+					webnotes.conn.set_value(item.doctype, item.name, "buying_amount", 
+						item.buying_amount)
+						
+	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
diff --git a/controllers/stock_controller.py b/controllers/stock_controller.py
index c76865d..89f62aa 100644
--- a/controllers/stock_controller.py
+++ b/controllers/stock_controller.py
@@ -23,7 +23,9 @@
 	def get_gl_entries_for_stock(self, against_stock_account, amount, 
 			stock_in_hand_account=None, cost_center=None):
 		if not stock_in_hand_account:
-			stock_in_hand_account = self.get_default_account("stock_in_hand_account")
+			stock_in_hand_account = self.get_company_default("stock_in_hand_account")
+		if not cost_center:
+			cost_center = self.get_company_default("stock_adjustment_cost_center")
 		
 		if amount:
 			gl_entries = [
@@ -46,12 +48,6 @@
 			]
 			
 			return gl_entries
-			
-			
-	def check_expense_account(self, item):
-		if not item.expense_account:
-			msgprint(_("""Expense account is mandatory for item: """) + item.item_code, 
-				raise_exception=1)	
 		
 	def get_stock_ledger_entries(self, item_list=None, warehouse_list=None):
 		if not (item_list and warehouse_list):
diff --git a/selling/doctype/sales_common/sales_common.py b/selling/doctype/sales_common/sales_common.py
index 12ae4a8..fca96b8 100644
--- a/selling/doctype/sales_common/sales_common.py
+++ b/selling/doctype/sales_common/sales_common.py
@@ -17,11 +17,11 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import cint, cstr, flt, getdate, nowdate, formatdate
+from webnotes.utils import cint, cstr, flt, getdate, nowdate
 from webnotes.model.doc import addchild
 from webnotes.model.bean import getlist
 from webnotes.model.code import get_obj
-from webnotes import msgprint, _
+from webnotes import msgprint
 from setup.utils import get_company_currency
 
 get_value = webnotes.conn.get_value
@@ -127,7 +127,7 @@
 		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, 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)
+		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'])
 		t = {}
 		for x in tax: t[x[0]] = flt(x[1])
@@ -141,7 +141,9 @@
 			'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,
diff --git a/setup/doctype/company/company.js b/setup/doctype/company/company.js
index a898823..735f514 100644
--- a/setup/doctype/company/company.js
+++ b/setup/doctype/company/company.js
@@ -97,4 +97,11 @@
 			"company": doc.name
 		}
 	}
+}
+
+cur_frm.fields_dict["stock_adjustment_cost_center"].get_query = function(doc) {
+	return {
+		"query": "accounts.utils.get_cost_center_list", 
+		"filters": {"company": doc.name}
+	}
 }
\ No newline at end of file
diff --git a/setup/doctype/company/company.py b/setup/doctype/company/company.py
index 15241a2..a2e56eb 100644
--- a/setup/doctype/company/company.py
+++ b/setup/doctype/company/company.py
@@ -199,12 +199,7 @@
 		if not self.doc.payables_group and webnotes.conn.exists('Account', 
 			'Accounts Payable - ' + self.doc.abbr):
 				webnotes.conn.set(self.doc, 'payables_group', 'Accounts Payable - ' + self.doc.abbr)
-			
-		if not self.doc.stock_delivered_but_not_billed and webnotes.conn.exists("Account", 
-			"Stock Delivered But Not Billed - " + self.doc.abbr):
-				webnotes.conn.set(self.doc, "stock_delivered_but_not_billed", 
-					"Stock Delivered But Not Billed - " + self.doc.abbr)
-					
+								
 		if not self.doc.stock_received_but_not_billed and webnotes.conn.exists("Account", 
 			"Stock Received But Not Billed - " + self.doc.abbr):
 				webnotes.conn.set(self.doc, "stock_received_but_not_billed", 
@@ -219,7 +214,12 @@
 			"Expenses Included In Valuation - " + self.doc.abbr):
 				webnotes.conn.set(self.doc, "expenses_included_in_valuation", 
 					"Expenses Included In Valuation - " + self.doc.abbr)
-			
+		
+		if not self.doc.stock_adjustment_cost_center and webnotes.conn.exists("Cost Center", 
+			"Auto Inventory Accounting - " + self.doc.abbr):
+				webnotes.conn.set(self.doc, "stock_adjustment_cost_center", 
+					"Auto Inventory Accounting - " + self.doc.abbr)
+	
 	# Create default cost center
 	# ---------------------------------------------------
 	def create_default_cost_center(self):
diff --git a/setup/doctype/company/company.txt b/setup/doctype/company/company.txt
index 4d2dcda..e9976aa 100644
--- a/setup/doctype/company/company.txt
+++ b/setup/doctype/company/company.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-02-27 09:38:05", 
   "docstatus": 0, 
-  "modified": "2013-03-19 12:52:00", 
+  "modified": "2013-03-22 18:19:36", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -189,16 +189,10 @@
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "stock_adjustment_account", 
+  "fieldname": "stock_received_but_not_billed", 
   "fieldtype": "Link", 
-  "label": "Stock Adjustment Account", 
-  "options": "Account"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "expenses_included_in_valuation", 
-  "fieldtype": "Link", 
-  "label": "Expenses Included In Valuation", 
+  "label": "Stock Received But Not Billed", 
+  "no_copy": 1, 
   "options": "Account"
  }, 
  {
@@ -209,19 +203,29 @@
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "stock_delivered_but_not_billed", 
+  "fieldname": "stock_adjustment_account", 
   "fieldtype": "Link", 
-  "label": "Stock Delivered But Not Billed", 
+  "label": "Stock Adjustment Account", 
+  "no_copy": 1, 
   "options": "Account"
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "stock_received_but_not_billed", 
+  "fieldname": "expenses_included_in_valuation", 
   "fieldtype": "Link", 
-  "label": "Stock Received But Not Billed", 
+  "label": "Expenses Included In Valuation", 
+  "no_copy": 1, 
   "options": "Account"
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "stock_adjustment_cost_center", 
+  "fieldtype": "Link", 
+  "label": "Stock Adjustment Cost Center", 
+  "no_copy": 1, 
+  "options": "Cost Center"
+ }, 
+ {
   "description": "For reference only.", 
   "doctype": "DocField", 
   "fieldname": "company_info", 
diff --git a/setup/doctype/global_defaults/global_defaults.py b/setup/doctype/global_defaults/global_defaults.py
index 8d94a03..e755bb9 100644
--- a/setup/doctype/global_defaults/global_defaults.py
+++ b/setup/doctype/global_defaults/global_defaults.py
@@ -44,11 +44,20 @@
 	'session_expiry': 'session_expiry',
 	'disable_rounded_total': 'disable_rounded_total',
 	"update_stock": "update_stock",
+	# "auto_inventory_accounting": "auto_inventory_accounting",
 }
 
 class DocType:
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
+		
+	def validate(self):
+		previous_auto_inventory_accounting = cint(webnotes.conn.get_value("Global Defaults", None,
+			"auto_inventory_accounting"))
+		if cint(self.doc.auto_inventory_accounting) != previous_auto_inventory_accounting:
+			from accounts.utils import create_stock_in_hand_jv
+			create_stock_in_hand_jv(reverse = \
+				cint(self.doc.auto_inventory_accounting) < previous_auto_inventory_accounting)
 
 	def on_update(self):
 		"""update defaults"""
diff --git a/stock/doctype/delivery_note_item/delivery_note_item.txt b/stock/doctype/delivery_note_item/delivery_note_item.txt
index 94c6541..ffc19c3 100644
--- a/stock/doctype/delivery_note_item/delivery_note_item.txt
+++ b/stock/doctype/delivery_note_item/delivery_note_item.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-03-07 11:42:59", 
   "docstatus": 0, 
-  "modified": "2013-03-21 18:36:22", 
+  "modified": "2013-03-22 18:43:10", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -257,10 +257,10 @@
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "cost_center", 
+  "fieldname": "purchase_cost_center", 
   "fieldtype": "Link", 
   "hidden": 1, 
-  "label": "Cost Center", 
+  "label": "Purchase Cost Center", 
   "no_copy": 1, 
   "options": "Cost Center", 
   "print_hide": 1, 
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
index 7949a1c..11c294c 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -320,7 +320,7 @@
 		
 		from accounts.general_ledger import make_gl_entries
 		
-		against_stock_account = self.get_default_account("stock_received_but_not_billed")
+		against_stock_account = self.get_company_default("stock_received_but_not_billed")
 		total_valuation_amount = self.get_total_valuation_amount()
 		gl_entries = self.get_gl_entries_for_stock(against_stock_account, total_valuation_amount)
 		
diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js
index 447f503..dc57ec6 100644
--- a/stock/doctype/stock_entry/stock_entry.js
+++ b/stock/doctype/stock_entry/stock_entry.js
@@ -33,9 +33,9 @@
 			else account_for = "stock_adjustment_account";
 			
 			this.frm.call({
-				method: "controllers.accounts_controller.get_default_account",
+				method: "accounts.utils.get_company_default",
 				args: {
-					"account_for": account_for, 
+					"fieldname": account_for, 
 					"company": this.frm.doc.company
 				},
 				callback: function(r) {
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index f54ce60..a4a3f91 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -176,11 +176,10 @@
 		
 		from accounts.general_ledger import make_gl_entries
 		
-		cost_center = "Auto Inventory Accounting - %s" % (self.company_abbr,)
 		total_valuation_amount = self.get_total_valuation_amount()
 		
 		gl_entries = self.get_gl_entries_for_stock(self.doc.expense_adjustment_account, 
-			total_valuation_amount, cost_center=cost_center)
+			total_valuation_amount)
 		if gl_entries:
 			make_gl_entries(gl_entries, cancel=self.doc.docstatus == 2)
 				
diff --git a/stock/doctype/stock_reconciliation/stock_reconciliation.js b/stock/doctype/stock_reconciliation/stock_reconciliation.js
index 372166e..e66ae3b 100644
--- a/stock/doctype/stock_reconciliation/stock_reconciliation.js
+++ b/stock/doctype/stock_reconciliation/stock_reconciliation.js
@@ -27,9 +27,9 @@
 		
 		if (sys_defaults.auto_inventory_accounting && !this.frm.doc.expense_account) {
 			this.frm.call({
-				method: "controllers.accounts_controller.get_default_account",
+				method: "accounts.utils.get_company_default",
 				args: {
-					"account_for": "stock_adjustment_account", 
+					"fieldname": "stock_adjustment_account", 
 					"company": this.frm.doc.company
 				},
 				callback: function(r) {
diff --git a/stock/doctype/stock_reconciliation/stock_reconciliation.py b/stock/doctype/stock_reconciliation/stock_reconciliation.py
index ac0ab98..13c8ee4 100644
--- a/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -310,11 +310,9 @@
 			msgprint(_("Please enter Expense Account"), raise_exception=1)
 			
 		from accounts.general_ledger import make_gl_entries
-		
-		cost_center = "Auto Inventory Accounting - %s" % (self.company_abbr,)
-		
+				
 		gl_entries = self.get_gl_entries_for_stock(self.doc.expense_account, 
-			self.doc.stock_value_difference, cost_center=cost_center)
+			self.doc.stock_value_difference)
 		if gl_entries:
 			make_gl_entries(gl_entries, cancel=self.doc.docstatus == 2)
 		
