diff --git a/erpnext/accounts/doctype/budget/budget.py b/erpnext/accounts/doctype/budget/budget.py
index 26243ea..d28a5f9 100644
--- a/erpnext/accounts/doctype/budget/budget.py
+++ b/erpnext/accounts/doctype/budget/budget.py
@@ -58,15 +58,15 @@
 				b.action_if_annual_budget_exceeded, b.action_if_accumulated_monthly_budget_exceeded
 			from `tabBudget` b, `tabBudget Account` ba
 			where 
-				b.name=ba.parent and b.fiscal_year=%s and ba.account=%s
+				b.name=ba.parent and b.fiscal_year=%s and ba.account=%s and b.docstatus=1
 				and exists(select name from `tabCost Center` where lft<=%s and rgt>=%s and name=b.cost_center)
 		""", (args.fiscal_year, args.account, cc_lft, cc_rgt), as_dict=True)
-		
+
 		for budget in budget_records:
 			if budget.budget_amount:
 				yearly_action = budget.action_if_annual_budget_exceeded
 				monthly_action = budget.action_if_accumulated_monthly_budget_exceeded
-			
+
 				if monthly_action in ["Stop", "Warn"]:
 					budget_amount = get_accumulated_monthly_budget(budget.monthly_distribution,
 						args.posting_date, args.fiscal_year, budget.budget_amount)
diff --git a/erpnext/accounts/doctype/budget/test_budget.py b/erpnext/accounts/doctype/budget/test_budget.py
index 60373e4..78f5690 100644
--- a/erpnext/accounts/doctype/budget/test_budget.py
+++ b/erpnext/accounts/doctype/budget/test_budget.py
@@ -10,44 +10,50 @@
 
 class TestBudget(unittest.TestCase):		
 	def test_monthly_budget_crossed_ignore(self):
-		budget = make_budget()
-		frappe.db.set_value("Budget", budget, "action_if_accumulated_monthly_budget_exceeded", "Ignore")
-
 		set_total_expense_zero("2013-02-28")
 
+		budget = make_budget()
+		
 		jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC",
 			"_Test Bank - _TC", 40000, "_Test Cost Center - _TC", submit=True)
 
 		self.assertTrue(frappe.db.get_value("GL Entry",
 			{"voucher_type": "Journal Entry", "voucher_no": jv.name}))
+			
+		budget.cancel()
 
 	def test_monthly_budget_crossed_stop(self):
-		budget = make_budget()		
-		frappe.db.set_value("Budget", budget, "action_if_accumulated_monthly_budget_exceeded", "Stop")
-
 		set_total_expense_zero("2013-02-28")
 
+		budget = make_budget()
+		
+		frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
+
 		jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC",
 			"_Test Bank - _TC", 40000, "_Test Cost Center - _TC")
 
 		self.assertRaises(BudgetError, jv.submit)
+		
+		budget.load_from_db()
+		budget.cancel()
 
 	def test_yearly_budget_crossed_stop(self):
-		self.test_monthly_budget_crossed_ignore()
-
 		set_total_expense_zero("2013-02-28")
 
+		budget = make_budget()
+		
 		jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC",
 			"_Test Bank - _TC", 150000, "_Test Cost Center - _TC")
 
 		self.assertRaises(BudgetError, jv.submit)
+		
+		budget.cancel()
 
 	def test_monthly_budget_on_cancellation(self):
-		budget = make_budget()
-		frappe.db.set_value("Budget", budget, "action_if_accumulated_monthly_budget_exceeded", "Ignore")
-		
 		set_total_expense_zero("2013-02-28")
 
+		budget = make_budget()
+				
 		jv1 = make_journal_entry("_Test Account Cost for Goods Sold - _TC",
 			"_Test Bank - _TC", 20000, "_Test Cost Center - _TC", submit=True)
 
@@ -60,21 +66,27 @@
 		self.assertTrue(frappe.db.get_value("GL Entry",
 			{"voucher_type": "Journal Entry", "voucher_no": jv2.name}))
 
-		frappe.db.set_value("Budget", budget, "action_if_accumulated_monthly_budget_exceeded", "Stop")
+		frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
 		
 		self.assertRaises(BudgetError, jv1.cancel)
 		
+		budget.load_from_db()
+		budget.cancel()
+		
 	def test_monthly_budget_against_group_cost_center(self):
-		budget = make_budget("_Test Company - _TC")		
-		frappe.db.set_value("Budget", budget, "action_if_accumulated_monthly_budget_exceeded", "Stop")
-
 		set_total_expense_zero("2013-02-28")
 		set_total_expense_zero("2013-02-28", "_Test Cost Center 2 - _TC")
+		
+		budget = make_budget("_Test Company - _TC")
+		frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
 
 		jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC",
 			"_Test Bank - _TC", 40000, "_Test Cost Center 2 - _TC")
 
 		self.assertRaises(BudgetError, jv.submit)
+		
+		budget.load_from_db()
+		budget.cancel()
 
 def set_total_expense_zero(posting_date, cost_center=None):
 	existing_expense = get_actual_expense({
@@ -89,27 +101,20 @@
 		"_Test Bank - _TC", -existing_expense, "_Test Cost Center - _TC", submit=True)
 		
 def make_budget(cost_center=None):
-	existing_budget = frappe.db.get_value("Budget", 
-		{"cost_center": cost_center or "_Test Cost Center - _TC", 
-		"fiscal_year": "_Test Fiscal Year 2013", "company": "_Test Company"})
+	budget = frappe.new_doc("Budget")
+	budget.cost_center = cost_center or "_Test Cost Center - _TC"
+	budget.fiscal_year = "_Test Fiscal Year 2013"
+	budget.monthly_distribution = "_Test Distribution"
+	budget.company = "_Test Company"
+	budget.action_if_annual_budget_exceeded = "Stop"
+	budget.action_if_accumulated_monthly_budget_exceeded = "Ignore"
+	
+	budget.append("accounts", {
+		"account": "_Test Account Cost for Goods Sold - _TC",
+		"budget_amount": 100000
+	})
+	
+	budget.insert()
+	budget.submit()
 
-	if not existing_budget:
-		budget = frappe.new_doc("Budget")
-		budget.cost_center = cost_center or "_Test Cost Center - _TC"
-		budget.fiscal_year = "_Test Fiscal Year 2013"
-		budget.monthly_distribution = "_Test Distribution"
-		budget.company = "_Test Company"
-		budget.action_if_annual_budget_exceeded = "Stop"
-		budget.action_if_accumulated_monthly_budget_exceeded = "Stop"
-		
-		budget.append("accounts", {
-			"account": "_Test Account Cost for Goods Sold - _TC",
-			"budget_amount": 100000
-		})
-		
-		budget.insert()
-		budget.submit()
-
-		return budget.name
-	else:
-		return existing_budget
\ No newline at end of file
+	return budget
\ No newline at end of file
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_utils.py b/erpnext/stock/doctype/stock_entry/stock_entry_utils.py
index 0ac9410..b75eeea 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry_utils.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry_utils.py
@@ -70,7 +70,8 @@
 		"basic_rate": args.rate or args.basic_rate,
 		"conversion_factor": 1.0,
 		"serial_no": args.serial_no,
-		'cost_center': args.cost_center
+		'cost_center': args.cost_center,
+		'expense_account': args.expense_account
 	})
 
 	if not args.do_not_save:
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index 221724f..0c33ff7 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -122,8 +122,8 @@
 		set_perpetual_inventory()
 
 		mr = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
-			qty=50, basic_rate=100)
-
+			qty=50, basic_rate=100, expense_account="Stock Adjustment - _TC")
+					
 		stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
 			"warehouse": mr.get("items")[0].t_warehouse})
 
@@ -149,9 +149,10 @@
 		set_perpetual_inventory()
 
 		make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
-			qty=50, basic_rate=100)
+			qty=50, basic_rate=100, expense_account="Stock Adjustment - _TC")
 
-		mi = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC", qty=40)
+		mi = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC", 
+			qty=40, expense_account="Stock Adjustment - _TC")
 
 		self.check_stock_ledger_entries("Stock Entry", mi.name,
 			[["_Test Item", "_Test Warehouse - _TC", -40.0]])
