diff --git a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
index b67e2b6..0be0b3d 100644
--- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
+++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
@@ -64,7 +64,7 @@
 	return frappe.db.sql("""
 			select b.cost_center, b.monthly_distribution, ba.account, ba.budget_amount
 			from `tabBudget` b, `tabBudget Account` ba
-			where b.name=ba.parent and b.fiscal_year=%s and b.company=%s
+			where b.name=ba.parent and b.docstatus = 1 and b.fiscal_year=%s and b.company=%s 
 		""", (filters.fiscal_year, filters.company), as_dict=True)
 
 #Get target distribution details of accounts of cost center
@@ -84,8 +84,9 @@
 	ac_details = frappe.db.sql("""select gl.account, gl.debit, gl.credit,
 		MONTHNAME(gl.posting_date) as month_name, b.cost_center
 		from `tabGL Entry` gl, `tabBudget Account` ba, `tabBudget` b
-		where 
+		where
 			b.name = ba.parent
+			and b.docstatus = 1
 			and ba.account=gl.account 
 			and gl.fiscal_year=%s 
 			and b.cost_center=%s
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.py b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
index 2287e9c..db98e2b 100644
--- a/erpnext/hr/doctype/salary_slip/test_salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
@@ -17,8 +17,6 @@
 		for dt in ["Leave Application", "Leave Allocation", "Salary Slip"]:
 			frappe.db.sql("delete from `tab%s`" % dt)
 
-		make_allocation_record(leave_type="_Test Leave Type LWP")
-		
 		self.make_holiday_list()
 		frappe.db.set_value("Company", erpnext.get_default_company(), "default_holiday_list", "Salary Slip Test Holiday List")
 
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py
index d29544b..49db299 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py
@@ -10,7 +10,9 @@
 from erpnext.manufacturing.doctype.production_order.production_order \
 	import make_stock_entry, ItemHasVariantError
 from erpnext.stock.doctype.stock_entry import test_stock_entry
+from erpnext.stock.doctype.item.test_item import get_total_projected_qty
 from erpnext.stock.utils import get_bin
+from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
 
 class TestProductionOrder(unittest.TestCase):
 	def setUp(self):
@@ -172,6 +174,28 @@
 		self.assertEqual(self.bin1_at_start.projected_qty,
 			cint(bin1_on_cancel.projected_qty))
 
+	def test_projected_qty_for_production_and_sales_order(self):
+		before_production_order = get_bin(self.item, self.warehouse)
+		before_production_order.update_reserved_qty_for_production()
+
+		self.pro_order = make_prod_order_test_record(item="_Test FG Item", qty=2,
+			source_warehouse=self.warehouse)
+
+		after_production_order = get_bin(self.item, self.warehouse)
+
+		sales_order = make_sales_order(item = self.item, qty = 2)
+		after_sales_order = get_bin(self.item, self.warehouse)
+
+		self.assertEqual(cint(before_production_order.reserved_qty_for_production) + 2,
+			cint(after_sales_order.reserved_qty_for_production))
+		self.assertEqual(cint(before_production_order.projected_qty),
+			cint(after_sales_order.projected_qty) + 2)
+
+		total_projected_qty = get_total_projected_qty(self.item)
+
+		item_doc = frappe.get_doc('Item', self.item)
+		self.assertEqual(total_projected_qty,  item_doc.total_projected_qty)
+
 	def test_reserved_qty_for_production_on_stock_entry(self):
 		test_stock_entry.make_stock_entry(item_code="_Test Item",
 			target= self.warehouse, qty=100, basic_rate=100)
diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
index a0b3f4c..8521b5e 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
@@ -473,21 +473,20 @@
 				material_request.update({"material_request_type": item_wrapper.default_material_request_type})
 
 				for sales_order, requested_qty in items_to_be_requested[item].items():
-					if sales_order != 'No Sales Order':
-						material_request.append("items", {
-							"doctype": "Material Request Item",
-							"__islocal": 1,
-							"item_code": item,
-							"item_name": item_wrapper.item_name,
-							"description": item_wrapper.description,
-							"uom": item_wrapper.stock_uom,
-							"item_group": item_wrapper.item_group,
-							"brand": item_wrapper.brand,
-							"qty": requested_qty,
-							"schedule_date": add_days(nowdate(), cint(item_wrapper.lead_time_days)),
-							"warehouse": self.purchase_request_for_warehouse,
-							"sales_order": sales_order if sales_order!="No Sales Order" else None
-						})
+					material_request.append("items", {
+						"doctype": "Material Request Item",
+						"__islocal": 1,
+						"item_code": item,
+						"item_name": item_wrapper.item_name,
+						"description": item_wrapper.description,
+						"uom": item_wrapper.stock_uom,
+						"item_group": item_wrapper.item_group,
+						"brand": item_wrapper.brand,
+						"qty": requested_qty,
+						"schedule_date": add_days(nowdate(), cint(item_wrapper.lead_time_days)),
+						"warehouse": self.purchase_request_for_warehouse,
+						"sales_order": sales_order if sales_order!="No Sales Order" else None
+					})
 
 				material_request.flags.ignore_permissions = 1
 				material_request.submit()
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index b9cb3fe..31eb2c5 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -338,3 +338,4 @@
 finally:erpnext.patches.v7_0.update_timesheet_communications
 erpnext.patches.v7_0.update_status_of_zero_amount_sales_order
 erpnext.patches.v7_1.add_field_for_task_dependent
+erpnext.patches.v7_0.repost_bin_qty_and_item_projected_qty
diff --git a/erpnext/patches/v7_0/repost_bin_qty_and_item_projected_qty.py b/erpnext/patches/v7_0/repost_bin_qty_and_item_projected_qty.py
new file mode 100644
index 0000000..97af20a
--- /dev/null
+++ b/erpnext/patches/v7_0/repost_bin_qty_and_item_projected_qty.py
@@ -0,0 +1,28 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from erpnext.stock.doctype.bin.bin import update_item_projected_qty
+
+def execute():
+	repost_bin_qty()
+	repost_item_projected_qty()
+
+def repost_bin_qty():
+	for bin in frappe.db.sql(""" select name from `tabBin` 
+		where (actual_qty + ordered_qty + indented_qty + planned_qty- reserved_qty - reserved_qty_for_production) != projected_qty """, as_dict=1):
+		bin_doc = frappe.get_doc('Bin', bin.name)
+		bin_doc.set_projected_qty()
+		bin_doc.db_set("projected_qty", bin_doc.projected_qty, update_modified = False)
+
+def repost_item_projected_qty():
+	for data in frappe.db.sql(""" select 
+			`tabBin`.item_code as item_code,
+			sum(`tabBin`.projected_qty) as projected_qty, 
+			`tabItem`.total_projected_qty as total_projected_qty 
+		from 
+			`tabBin`, `tabItem` 
+		where `tabBin`.item_code = `tabItem`.name 
+		group by `tabBin`.item_code having projected_qty <>  total_projected_qty """, as_dict=1):
+		update_item_projected_qty(data.item_code)
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index f687868..9922a15 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -5,6 +5,7 @@
 from frappe.utils import flt, add_days
 import frappe.permissions
 import unittest
+from erpnext.stock.doctype.item.test_item import get_total_projected_qty
 from erpnext.selling.doctype.sales_order.sales_order \
 	import make_material_request, make_delivery_note, make_sales_invoice, WarehouseRequired
 
@@ -124,8 +125,16 @@
 		dn = create_dn_against_so(so.name, 15)
 		self.assertEqual(get_reserved_qty(), existing_reserved_qty)
 
+		total_projected_qty = get_total_projected_qty('_Test Item')
+		item_doc_before_cancel = frappe.get_doc('Item', '_Test Item')
+		self.assertEqual(total_projected_qty,  item_doc_before_cancel.total_projected_qty)
+
 		dn.cancel()
 		self.assertEqual(get_reserved_qty(), existing_reserved_qty + 10)
+
+		total_projected_qty = get_total_projected_qty('_Test Item')
+		item_doc_after_cancel = frappe.get_doc('Item', '_Test Item')
+		self.assertEqual(total_projected_qty,  item_doc_after_cancel.total_projected_qty)
 		
 	def test_reserved_qty_for_over_delivery_via_sales_invoice(self):
 		# set over-delivery tolerance
@@ -141,6 +150,10 @@
 		si.get("items")[0].qty = 12
 		si.insert()
 		si.submit()
+
+		total_projected_qty = get_total_projected_qty('_Test Item')
+		item_doc = frappe.get_doc('Item', '_Test Item')
+		self.assertEqual(total_projected_qty,  item_doc.total_projected_qty)
 		
 		self.assertEqual(get_reserved_qty(), existing_reserved_qty)
 		
@@ -150,6 +163,9 @@
 
 		si.cancel()
 		self.assertEqual(get_reserved_qty(), existing_reserved_qty + 10)
+		total_projected_qty = get_total_projected_qty('_Test Item')
+		item_doc = frappe.get_doc('Item', '_Test Item')
+		self.assertEqual(total_projected_qty,  item_doc.total_projected_qty)
 		
 		so.load_from_db()
 		self.assertEqual(so.get("items")[0].delivered_qty, 0)
@@ -178,6 +194,10 @@
 		self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1)
 		self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2)
 
+		total_projected_qty = get_total_projected_qty('_Test Item')
+		item_doc = frappe.get_doc('Item', '_Test Item')
+		self.assertEqual(total_projected_qty,  item_doc.total_projected_qty)
+
 		# unclose so
 		so.load_from_db()
 		so.update_status('Draft')
@@ -211,6 +231,10 @@
 
 		dn = create_dn_against_so(so.name, 15)
 
+		total_projected_qty = get_total_projected_qty('_Test Item')
+		item_doc = frappe.get_doc('Item', '_Test Item')
+		self.assertEqual(total_projected_qty,  item_doc.total_projected_qty)
+
 		self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1)
 		self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"),
 			existing_reserved_qty_item2)
@@ -427,6 +451,13 @@
 
 		self.assertEquals(abs(flt(reserved_qty)), existing_reserved_qty_for_dn_item)
 
+	def test_total_projected_qty_against_sales_order(self):
+		so = make_sales_order(item = '_Test Item')
+		total_projected_qty = get_total_projected_qty('_Test Item')
+
+		item_doc = frappe.get_doc('Item', '_Test Item')
+		self.assertEqual(total_projected_qty,  item_doc.total_projected_qty)
+
 	def test_reserved_qty_for_closing_so(self):
 		bin = frappe.get_all("Bin", filters={"item_code": "_Test Item", "warehouse": "_Test Warehouse - _TC"},
 			fields=["reserved_qty"])
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 2378e3f..ece8220 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -14,18 +14,18 @@
 			self.stock_uom = frappe.db.get_value('Item', self.item_code, 'stock_uom')
 
 		self.validate_mandatory()
-
-		self.projected_qty = flt(self.actual_qty) + flt(self.ordered_qty) + \
-			flt(self.indented_qty) + flt(self.planned_qty) - flt(self.reserved_qty)
-		
+		self.set_projected_qty()
 		self.block_transactions_against_group_warehouse()
 
+	def on_update(self):
+		update_item_projected_qty(self.item_code)
+
 	def validate_mandatory(self):
 		qf = ['actual_qty', 'reserved_qty', 'ordered_qty', 'indented_qty']
 		for f in qf:
 			if (not getattr(self, f, None)) or (not self.get(f)):
 				self.set(f, 0.0)
-	
+
 	def block_transactions_against_group_warehouse(self):
 		from erpnext.stock.utils import is_group_warehouse
 		is_group_warehouse(self.warehouse)
@@ -72,9 +72,7 @@
 		self.indented_qty = flt(self.indented_qty) + flt(args.get("indented_qty"))
 		self.planned_qty = flt(self.planned_qty) + flt(args.get("planned_qty"))
 
-		self.set_projected_qty()
 		self.save()
-		update_item_projected_qty(self.item_code)
 
 	def set_projected_qty(self):
 		self.projected_qty = (flt(self.actual_qty) + flt(self.ordered_qty)
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index bd617c6..aceefc0 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -177,4 +177,10 @@
 		variant.item_name = "_Test Variant Item-S"
 		variant.save()
 
+def get_total_projected_qty(item):
+	total_qty = frappe.db.sql(""" select sum(projected_qty) as projected_qty from tabBin
+		where item_code = %(item)s""", {'item': item}, as_dict=1)
+
+	return total_qty[0].projected_qty if total_qty else 0.0
+
 test_records = frappe.get_test_records('Item')
diff --git a/erpnext/templates/print_formats/includes/item_table_description.html b/erpnext/templates/print_formats/includes/item_table_description.html
index 16e98e0..e99d712 100644
--- a/erpnext/templates/print_formats/includes/item_table_description.html
+++ b/erpnext/templates/print_formats/includes/item_table_description.html
@@ -2,7 +2,7 @@
 {%- set compact_fields = doc.flags.compact_item_fields -%}
 
 {% if doc.in_format_data("image") and doc.get("image") and not doc.is_print_hide("image")-%}
-<div class="pull-left" style="width: 20%; margin-right: 10px;">
+<div class="pull-left" style="max-width: 40%; margin-right: 10px;">
 	<img class="print-item-image" src="{{ doc.image }}" alt="">
 </div>
 {%- endif %}
