diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.js b/accounts/doctype/purchase_invoice/purchase_invoice.js
index bfcf0a4..b4fe62e 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -33,6 +33,21 @@
 		}
 		
 		cur_frm.cscript.is_opening(doc);
+	},
+	onload_post_render: function(doc, dt, dn) {	
+		var me = this;	
+		var callback1 = function(doc, dt, dn) {
+			var callback2 = function(doc, dt, dn) {
+				if(doc.__islocal && doc.supplier) cur_frm.cscript.supplier(doc, dt, dn);			
+			}
+			me.update_item_details(doc, dt, dn, callback2);
+		}
+		
+		// TODO: improve this
+		if(this.frm.doc.__islocal && this.frm.fields_dict.price_list_name 
+				&& this.frm.doc.price_list_name) {
+			this.price_list_name(callback1);
+		}
 	}
 });
 
@@ -46,16 +61,6 @@
 	if(!doc.posting_date) set_multiple(dt,dn,{posting_date:get_today()});
 }
 
-cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
-	var callback = function(doc, dt, dn) {
-		if(doc.__islocal && doc.supplier) cur_frm.cscript.supplier(doc,dt,dn);
-	}
-
-	// defined in purchase_common.js
-	cur_frm.cscript.update_item_details(doc, dt, dn, callback);
-	
-}
-
 cur_frm.cscript.supplier = function(doc,dt,dn) {
 	var callback = function(r,rt) {
 			var doc = locals[cur_frm.doctype][cur_frm.docname];		
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index be55e8a..a39df41 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -518,16 +518,17 @@
 
 	def on_update(self):
 		pass
+		
 	def update_raw_material_cost(self):
 		if self.sub_contracted_items:
 			for d in self.doclist.get({"parentfield": "entries"}):
-				rm_cost = webnotes.conn.sql(""" select raw_material_cost / quantity 
-					from `tabBOM` where item = %s and is_default = 1 and docstatus = 1 
-					and is_active = 1 """, (d.item_code,))
-				rm_cost = rm_cost and flt(rm_cost[0][0]) or 0
+					rm_cost = webnotes.conn.sql(""" select raw_material_cost / quantity 
+						from `tabBOM` where item = %s and is_default = 1 and docstatus = 1 
+						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(
-					"UOM Conversion Detail", {"parent": d.item_code, "uom": d.uom}, 
-					"conversion_factor") or 1
+					d.conversion_factor = d.conversion_factor or webnotes.conn.get_value(
+						"UOM Conversion Detail", {"parent": d.item_code, "uom": d.uom}, 
+						"conversion_factor") or 1
 			
-				d.rm_supp_cost = rm_cost * flt(d.qty) * flt(d.conversion_factor)
+					d.rm_supp_cost = rm_cost * flt(d.qty) * flt(d.conversion_factor)
diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.py b/accounts/page/voucher_import_tool/voucher_import_tool.py
index b94864c..1819e07 100644
--- a/accounts/page/voucher_import_tool/voucher_import_tool.py
+++ b/accounts/page/voucher_import_tool/voucher_import_tool.py
@@ -160,6 +160,12 @@
 					raise Exception
 					
 				doclist = Bean([jv]+details)
+				
+				# validate datatype
+				from core.page.data_import_tool.data_import_tool import check_record
+				for d in doclist:
+					check_record(d.fields, d.parenttype)
+				
 				doclist.submit()
 			
 				messages.append("""<p style='color: green'>[row #%s] 
diff --git a/buying/doctype/purchase_common/purchase_common.js b/buying/doctype/purchase_common/purchase_common.js
index b3f62d5..7775426 100644
--- a/buying/doctype/purchase_common/purchase_common.js
+++ b/buying/doctype/purchase_common/purchase_common.js
@@ -51,18 +51,9 @@
 		
 		if(this.frm.fields_dict.currency)
 			this.set_dynamic_labels();
-		
-		// TODO: improve this
-		if(this.frm.doc.__islocal && this.frm.fields_dict.price_list_name 
-				&& this.frm.doc.price_list_name && this.frm.doc.price_list_currency) {
-			this.price_list_name();
-		}
 	},
 	
-	price_list_name: function() {
-		this.frm.toggle_reqd(["price_list_currency", "plc_conversion_rate"],
-			!!(this.frm.doc.price_list_name));
-		
+	price_list_name: function(callback_fn) {
 		var me = this;
 		
 		if(this.frm.doc.price_list_name) {
@@ -77,6 +68,8 @@
 					callback: function(r) {
 						if(!r.exc) {
 							me.price_list_currency();
+							if (callback_fn) callback_fn(me.frm.doc, me.frm.doc.doctype, 
+									me.frm.doc.name);
 						}
 					}
 				});
@@ -89,6 +82,7 @@
 	item_code: function(doc, cdt, cdn) {
 		var me = this;
 		var item = locals[cdt][cdn];
+		
 		if(item.item_code) {
 			this.frm.call({
 				method: "buying.utils.get_item_details",
@@ -140,12 +134,15 @@
 	},
 	
 	price_list_currency: function() {
-		this.set_dynamic_labels();
+		this.frm.toggle_reqd("plc_conversion_rate",
+			!!(this.frm.doc.price_list_name && this.frm.doc.price_list_currency));
 		
+		this.set_dynamic_labels();
+				
 		if(this.frm.doc.price_list_currency === this.get_company_currency())
 			this.frm.set_value("plc_conversion_rate", 1.0);
 		else if(this.frm.doc.price_list_currency === this.frm.doc.currency)
-			this.frm.set_value("plc_conversion_rate", this.frm.doc.conversion_rate || 1.0);
+			this.frm.set_value("plc_conversion_rate", this.frm.doc.conversion_rate || 1.0);		
 	},
 	
 	set_dynamic_labels: function(doc, dt, dn) {
diff --git a/buying/doctype/purchase_order/purchase_order.js b/buying/doctype/purchase_order/purchase_order.js
index cf1db14..4bcd828 100644
--- a/buying/doctype/purchase_order/purchase_order.js
+++ b/buying/doctype/purchase_order/purchase_order.js
@@ -40,12 +40,22 @@
 			
 	},
 	
-	onload_post_render: function(doc, dt, dn) {
-		var callback = function(doc, dt, dn) {
-			if(doc.__islocal) cur_frm.cscript.get_default_schedule_date(doc);
+	onload_post_render: function(doc, dt, dn) {	
+		var me = this;	
+		var callback1 = function(doc, dt, dn) {
+			var callback2 = function(doc, dt, dn) {
+				if(doc.__islocal) cur_frm.cscript.get_default_schedule_date(doc);				
+			}
+			me.update_item_details(doc, dt, dn, callback2);
 		}
-		this.update_item_details(doc, dt, dn, callback);
+		
+		// TODO: improve this
+		if(this.frm.doc.__islocal && this.frm.fields_dict.price_list_name 
+				&& this.frm.doc.price_list_name) {
+			this.price_list_name(callback1);
+		}
 	}
+	
 });
 
 var new_cscript = new erpnext.buying.PurchaseOrderController({frm: cur_frm});
@@ -53,7 +63,7 @@
 // for backward compatibility: combine new and previous states
 $.extend(cur_frm.cscript, new_cscript);
 
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
+cur_frm.cscript.onload = function(doc, cdt, cdn) {	
 	// set missing values in parent doc
 	set_missing_values(doc, {
 		fiscal_year: sys_defaults.fiscal_year,
diff --git a/buying/doctype/supplier_quotation/supplier_quotation.js b/buying/doctype/supplier_quotation/supplier_quotation.js
index 6cb764e..36f9be8 100644
--- a/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -27,12 +27,25 @@
 	refresh: function() {
 		this._super();
 		
-		cur_frm.cscript.load_taxes(this.frm.doc);
 
 		if (this.frm.doc.docstatus === 1) {
 			cur_frm.add_custom_button("Make Purchase Order", cur_frm.cscript.make_purchase_order);
 		}
+	},
+	
+	onload_post_render: function(doc, dt, dn) {	
+		var me = this;
+		var callback = function(doc, dt, dn) {
+			cur_frm.cscript.load_taxes(me.frm.doc);
+		}
+		
+		// TODO: improve this
+		if(this.frm.doc.__islocal && this.frm.fields_dict.price_list_name 
+				&& this.frm.doc.price_list_name) {
+			this.price_list_name(callback);
+		}
 	}
+	
 });
 
 var new_cscript = new erpnext.buying.SupplierQuotationController({frm: cur_frm});
diff --git a/buying/utils.py b/buying/utils.py
index 9d125de..0431e64 100644
--- a/buying/utils.py
+++ b/buying/utils.py
@@ -53,7 +53,7 @@
 		"qty": 0,
 		"stock_uom": item.stock_uom,
 		"uom": item.stock_uom,
-		"conversion_factor": 1,
+		"conversion_factor": 1.0,
 		"warehouse": args.warehouse or item.default_warehouse,
 		"item_tax_rate": json.dumps(dict(([d.tax_type, d.tax_rate] for d in 
 			item_wrapper.doclist.get({"parentfield": "item_tax"})))),
diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py
index c49bf2a..8b247cc 100644
--- a/controllers/buying_controller.py
+++ b/controllers/buying_controller.py
@@ -331,7 +331,12 @@
 	# update valuation rate
 	def update_valuation_rate(self, parentfield):
 		for d in self.doclist.get({"parentfield": parentfield}):
-			if d.qty:
+			d.conversion_factor = d.conversion_factor or webnotes.conn.get_value(
+				"UOM Conversion Detail", {"parent": d.item_code, "uom": d.uom}, 
+				"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
 				d.valuation_rate = (flt(d.purchase_rate or d.rate)
 					+ (flt(d.item_tax_amount) + flt(d.rm_supp_cost)) / flt(d.qty)
 					) / flt(d.conversion_factor)
diff --git a/home/page/desktop/desktop.js b/home/page/desktop/desktop.js
index c298b68..87181d8 100644
--- a/home/page/desktop/desktop.js
+++ b/home/page/desktop/desktop.js
@@ -23,9 +23,10 @@
 		module.name = m;
 		module.label = wn._(module.label);
 		module.gradient_css = wn.get_gradient_css(module.color, 45);
+		module._link = module.link.toLowerCase().replace("/", "-");
 		
 		$module_icon = $(repl('\
-			<div id="module-icon-%(link)s" class="case-wrapper" \
+			<div id="module-icon-%(_link)s" class="case-wrapper" \
 				data-name="%(name)s" data-link="%(link)s">\
 				<div class="case-border" style="%(gradient_css)s">\
 					<i class="%(icon)s"></i>\
@@ -84,7 +85,7 @@
 	add_circle('module-icon-messages', 'unread_messages', 'Unread Messages');
 	add_circle('module-icon-support-home', 'open_support_tickets', 'Open Support Tickets');
 	add_circle('module-icon-todo', 'things_todo', 'Things To Do');
-	add_circle('module-icon-calendar', 'todays_events', 'Todays Events');
+	add_circle('module-icon-calendar-event', 'todays_events', 'Todays Events');
 	add_circle('module-icon-projects-home', 'open_tasks', 'Open Tasks');
 	add_circle('module-icon-questions', 'unanswered_questions', 'Unanswered Questions');
 	add_circle('module-icon-selling-home', 'open_leads', 'Open Leads');
diff --git a/hr/doctype/attendance_control_panel/attendance_control_panel.py b/hr/doctype/attendance_control_panel/attendance_control_panel.py
index dd0deb1..8b86cee 100644
--- a/hr/doctype/attendance_control_panel/attendance_control_panel.py
+++ b/hr/doctype/attendance_control_panel/attendance_control_panel.py
@@ -16,12 +16,8 @@
 
 from __future__ import unicode_literals
 import webnotes
-import webnotes.default
-
-from webnotes.utils import cint, cstr, date_diff, formatdate, getdate, now
-from webnotes.model import db_exists
-from webnotes.model.bean import copy_doclist
-from webnotes import form, msgprint
+from webnotes.utils import cint, cstr, formatdate, getdate
+from webnotes import msgprint
 
 sql = webnotes.conn.sql
 	
@@ -49,13 +45,8 @@
 	# get date list inbetween from date and to date
 	def date_diff_list(self):
 		import datetime
-		#get from date 
-		att_fr_date = self.doc.att_fr_date and self.doc.att_fr_date or ''
-		
-		#get to date
-		att_to_date = self.doc.att_to_date and self.doc.att_to_date or ''
 
-		if att_to_date:
+		if self.doc.att_to_date:
 			r = (getdate(self.doc.att_to_date)+datetime.timedelta(days=1)-getdate(self.doc.att_fr_date)).days
 		else:
 			r = 1
@@ -65,6 +56,7 @@
 		return dt
 
 	def get_att_data(self):
+		import webnotes.defaults
 		fy = webnotes.defaults.get_global_default('fiscal_year')
 		comp = webnotes.defaults.get_user_default('company')
 		
diff --git a/hr/report/employee_leave_balance/employee_leave_balance.py b/hr/report/employee_leave_balance/employee_leave_balance.py
index 6d34c8a..9d859da 100644
--- a/hr/report/employee_leave_balance/employee_leave_balance.py
+++ b/hr/report/employee_leave_balance/employee_leave_balance.py
@@ -33,6 +33,7 @@
 	for leave_type in leave_types:
 		columns.append(leave_type + " Allocated:Float")
 		columns.append(leave_type + " Taken:Float")
+		columns.append(leave_type + " Balance:Float")
 
 	data = {}
 	for d in allocations:
@@ -52,5 +53,6 @@
 				tmp = data.get((fiscal_year, employee.name, leave_type), webnotes._dict())
 				row.append(tmp.allocation or 0)
 				row.append(tmp.leaves or 0)
+				row.append((tmp.allocation or 0) - (tmp.leaves or 0))
 
 	return columns, result
\ No newline at end of file
diff --git a/patches/february_2013/p09_remove_cancelled_warehouses.py b/patches/february_2013/p09_remove_cancelled_warehouses.py
new file mode 100644
index 0000000..05e569a
--- /dev/null
+++ b/patches/february_2013/p09_remove_cancelled_warehouses.py
@@ -0,0 +1,9 @@
+import webnotes
+
+def execute():
+	for w in webnotes.conn.sql("""select name from `tabWarehouse` where docstatus=2"""):
+		try:
+			webnotes.delete_doc("Warehouse", w[0])
+		except webnotes.ValidationError:
+			pass
+		
\ No newline at end of file
diff --git a/patches/march_2013/__init__.py b/patches/march_2013/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/patches/march_2013/__init__.py
diff --git a/patches/march_2013/update_po_prevdoc_doctype.py b/patches/march_2013/update_po_prevdoc_doctype.py
new file mode 100644
index 0000000..35e7a25
--- /dev/null
+++ b/patches/march_2013/update_po_prevdoc_doctype.py
@@ -0,0 +1,6 @@
+import webnotes
+def execute():
+	webnotes.conn.sql("""update `tabPurchase Order Item` set prevdoc_doctype = 'Material Request' 
+		where prevdoc_doctype = 'Purchase Request'""")
+	webnotes.conn.sql("""update `tabSupplier Quotation Item` 
+		set prevdoc_doctype = 'Material Request' where prevdoc_doctype = 'Purchase Request'""")
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 42fc554..0870cee 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -201,4 +201,6 @@
 	'execute:webnotes.reload_doc("accounts", "Print Format", "Sales Invoice Spartan") # 2013-02-26',
 	"execute:(not webnotes.conn.exists('Role', 'Projects Manager')) and webnotes.doc({'doctype':'Role', 'role_name':'Projects Manager'}).insert()",
 	"execute:(not webnotes.conn.exists('UOM', 'Hour')) and webnotes.doc({'uom_name': 'Unit', 'doctype': 'UOM', 'name': 'Hour'}).insert()",
+	"patches.february_2013.p09_remove_cancelled_warehouses",
+	"patches.march_2013.update_po_prevdoc_doctype",
 ]
\ No newline at end of file
diff --git a/projects/doctype/time_log/time_log.py b/projects/doctype/time_log/time_log.py
index 34969a9..870c51c 100644
--- a/projects/doctype/time_log/time_log.py
+++ b/projects/doctype/time_log/time_log.py
@@ -23,10 +23,10 @@
 
 	def set_status(self):
 		self.doc.status = {
-			"0": "Draft",
-			"1": "Submitted",
-			"2": "Cancelled"
-		}[str(self.doc.docstatus or 0)]
+			0: "Draft",
+			1: "Submitted",
+			2: "Cancelled"
+		}[self.doc.docstatus or 0]
 		
 		if self.doc.time_log_batch:
 			self.doc.status="Batched for Billing"
diff --git a/setup/utils.py b/setup/utils.py
index 1b61ea9..1a86921 100644
--- a/setup/utils.py
+++ b/setup/utils.py
@@ -40,7 +40,7 @@
 	if isinstance(args, basestring):
 		args = json.loads(args)
 	
-	result = webnotes.conn.sql("""select ref_currency from `tabItem Price`
+	result = webnotes.conn.sql("""select distinct ref_currency from `tabItem Price`
 		where price_list_name=%s and `%s`=1""" % ("%s", args.get("use_for")),
 		(args.get("price_list_name"),))
 	if result and len(result)==1:
diff --git a/startup/startup.py b/startup/startup.py
index c74c596..89c0336 100644
--- a/startup/startup.py
+++ b/startup/startup.py
@@ -55,7 +55,7 @@
 		SELECT COUNT(*) FROM `tabEvent`
 		WHERE owner = %s
 		AND event_type != 'Cancel'
-		AND event_date = %s""", (
+		AND %s between date(starts_on) and date(ends_on)""", (
 		webnotes.session.user, nowdate()))
 	return todays_events[0][0]
 
diff --git a/stock/doctype/batch/batch.txt b/stock/doctype/batch/batch.txt
index cad4a0d..6a6de8b 100644
--- a/stock/doctype/batch/batch.txt
+++ b/stock/doctype/batch/batch.txt
@@ -1,15 +1,17 @@
 [
  {
-  "creation": "2013-01-10 16:34:25", 
+  "creation": "2013-03-01 08:21:54", 
   "docstatus": 0, 
-  "modified": "2013-01-29 13:40:32", 
+  "modified": "2013-03-01 08:22:16", 
   "modified_by": "Administrator", 
   "owner": "harshada@webnotestech.com"
  }, 
  {
+  "allow_attach": 1, 
   "autoname": "field:batch_id", 
   "doctype": "DocType", 
   "document_type": "Master", 
+  "max_attachments": 5, 
   "module": "Stock", 
   "name": "__common__"
  }, 
@@ -106,6 +108,15 @@
   "read_only": 1
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "file_list", 
+  "fieldtype": "Text", 
+  "hidden": 1, 
+  "label": "File List", 
+  "no_copy": 1, 
+  "print_hide": 1
+ }, 
+ {
   "doctype": "DocPerm"
  }
 ]
\ No newline at end of file
diff --git a/stock/doctype/item/item.js b/stock/doctype/item/item.js
index 6c2c882..5b32a34 100644
--- a/stock/doctype/item/item.js
+++ b/stock/doctype/item/item.js
@@ -22,13 +22,11 @@
 
 	if ((!doc.__islocal) && (doc.is_stock_item == 'Yes')) {
 		var callback = function(r, rt) {
-			var enabled = (r.message == 'exists') ? false : true;				
+			var enabled = (r.message == 'exists') ? false : true;
 			cur_frm.toggle_enable(['has_serial_no', 'is_stock_item', 'valuation_method'], enabled);
 		}
 		$c_obj(make_doclist(doc.doctype, doc.name),'check_if_sle_exists','',callback);
 	}
-	
-	cur_frm.cscript.hide_website_fields(doc);
 }
 
 cur_frm.cscript.item_code = function(doc) {
diff --git a/stock/doctype/item/item.txt b/stock/doctype/item/item.txt
index 6b1a60f..1a48368 100644
--- a/stock/doctype/item/item.txt
+++ b/stock/doctype/item/item.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-02-20 13:26:14", 
+  "creation": "2013-02-21 14:54:43", 
   "docstatus": 0, 
-  "modified": "2013-02-20 18:14:06", 
+  "modified": "2013-02-28 10:43:02", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -28,13 +28,14 @@
   "permlevel": 0
  }, 
  {
-  "amend": 0, 
   "doctype": "DocPerm", 
   "name": "__common__", 
   "parent": "Item", 
   "parentfield": "permissions", 
   "parenttype": "DocType", 
+  "permlevel": 0, 
   "read": 1, 
+  "report": 1, 
   "submit": 0
  }, 
  {
@@ -596,7 +597,6 @@
   "label": "Price Lists and Rates"
  }, 
  {
-  "depends_on": "eval:doc.is_sales_item==\"Yes\"", 
   "description": "Create a price list from Price List master and enter standard ref rates against each of them. On selection of a price list in Quotation, Sales Order or Delivery Note, corresponding ref rate will be fetched for this item.", 
   "doctype": "DocField", 
   "fieldname": "ref_rate_details", 
@@ -813,75 +813,26 @@
   "label": "Website Description"
  }, 
  {
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 1, 
-  "report": 0, 
-  "role": "Material Manager", 
-  "write": 0
- }, 
- {
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 0, 
-  "report": 1, 
-  "role": "Material Manager", 
-  "write": 0
- }, 
- {
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 1, 
-  "report": 0, 
-  "role": "Material User", 
-  "write": 0
- }, 
- {
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 0, 
-  "report": 1, 
-  "role": "Material User", 
-  "write": 0
- }, 
- {
   "cancel": 1, 
   "create": 1, 
   "doctype": "DocPerm", 
-  "permlevel": 0, 
-  "report": 1, 
   "role": "Material Master Manager", 
   "write": 1
  }, 
  {
+  "amend": 0, 
   "cancel": 0, 
   "create": 0, 
   "doctype": "DocPerm", 
-  "permlevel": 1, 
-  "report": 0, 
-  "role": "Material Master Manager", 
+  "role": "Material Manager", 
   "write": 0
  }, 
  {
-  "cancel": 1, 
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "permlevel": 0, 
-  "report": 1, 
-  "role": "System Manager", 
-  "write": 1
- }, 
- {
+  "amend": 0, 
   "cancel": 0, 
   "create": 0, 
   "doctype": "DocPerm", 
-  "permlevel": 1, 
-  "report": 0, 
-  "role": "System Manager", 
+  "role": "Material User", 
   "write": 0
  }
 ]
\ No newline at end of file
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.js b/stock/doctype/purchase_receipt/purchase_receipt.js
index df2825b..c7d2e50 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -37,6 +37,18 @@
 		if(wn.boot.control_panel.country == 'India') {
 			unhide_field(['challan_no', 'challan_date']);
 		}
+	}, 
+	onload_post_render: function(doc, dt, dn) {	
+		var me = this;
+		var callback = function(doc, dt, dn) {
+			me.update_item_details(doc, dt, dn, function(r,rt) { });
+		}
+		
+		// TODO: improve this
+		if(this.frm.doc.__islocal && this.frm.fields_dict.price_list_name 
+				&& this.frm.doc.price_list_name) {
+			this.price_list_name(callback);
+		}
 	}
 });
 
@@ -45,7 +57,6 @@
 // for backward compatibility: combine new and previous states
 $.extend(cur_frm.cscript, new_cscript);
 
-//========================== On Load ================================================================
 cur_frm.cscript.onload = function(doc, cdt, cdn) {
 	if(!doc.fiscal_year && doc.__islocal){ wn.model.set_default_values(doc);}
 	if (!doc.posting_date) doc.posting_date = dateutil.obj_to_str(new Date());
@@ -53,15 +64,6 @@
 	if (!doc.status) doc.status = 'Draft';
 }
 
-cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
-	var callback = function(doc, dt, dn) {
-		// defined in purchase_common.js
-		cur_frm.cscript.update_item_details(doc, dt, dn, function(r,rt) { });	
-	}
-	cur_frm.cscript.dynamic_label(doc, dt, dn, callback);
-}
-
-//Supplier
 cur_frm.cscript.supplier = function(doc,dt,dn) {
 	if (doc.supplier) {
 		get_server_fields('get_default_supplier_address',
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
index 6772103..2f8835f 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -214,7 +214,8 @@
 
 	def validate_inspection(self):
 		for d in getlist(self.doclist, 'purchase_receipt_details'):		 #Enter inspection date for all items that require inspection
-			ins_reqd = sql("select inspection_required from `tabItem` where name = %s", (d.item_code), as_dict = 1)
+			ins_reqd = sql("select inspection_required from `tabItem` where name = %s",
+				(d.item_code,), as_dict = 1)
 			ins_reqd = ins_reqd and ins_reqd[0]['inspection_required'] or 'No'
 			if ins_reqd == 'Yes' and not d.qa_no:
 				msgprint("Item: " + d.item_code + " requires QA Inspection. Please enter QA No or report to authorized person to create Quality Inspection")
@@ -289,17 +290,17 @@
 		self.make_gl_entries()
 
 	def validate_for_subcontracting(self):
-		if self.sub_contracted_items and self.purchase_items and not self.doc.is_subcontracted:
+		if not self.doc.is_subcontracted and self.sub_contracted_items:
 			webnotes.msgprint(_("""Please enter whether Purchase Recipt is made for subcontracting 
 				or purchasing, in 'Is Subcontracted' field"""), raise_exception=1)
 			
-		if self.doc.is_subcontracted and not self.doc.supplier_warehouse:
+		if self.doc.is_subcontracted=="Yes" and not self.doc.supplier_warehouse:
 			webnotes.msgprint(_("Please Enter Supplier Warehouse for subcontracted Items"), 
 				raise_exception=1)
 				
 	def update_raw_materials_supplied(self):
 		self.doclist = self.doc.clear_table(self.doclist, 'pr_raw_material_details')
-		if self.sub_contracted_items:
+		if self.doc.is_subcontracted=="Yes":
 			for item in self.doclist.get({"parentfield": "purchase_receipt_details"}):
 				if item.item_code in self.sub_contracted_items:
 					self.add_bom_items(item)
diff --git a/stock/page/stock_balance/stock_balance.js b/stock/page/stock_balance/stock_balance.js
index dccf498..9494f0d 100644
--- a/stock/page/stock_balance/stock_balance.js
+++ b/stock/page/stock_balance/stock_balance.js
@@ -102,8 +102,7 @@
 
 		for(var i=0, j=data.length; i<j; i++) {
 			var sl = data[i];
-			sl.posting_datetime = sl.posting_date + " " + sl.posting_time;
-			var posting_datetime = dateutil.str_to_obj(sl.posting_datetime);
+			var sl_posting_date = dateutil.str_to_obj(sl.posting_date);
 			
 			if(me.is_default("warehouse") ? true : me.warehouse == sl.warehouse) {
 				var item = me.item_by_name[sl.item_code];
@@ -115,10 +114,10 @@
 				var qty_diff = sl.qty;
 				var value_diff = me.get_value_diff(wh, sl, is_fifo);
 
-				if(posting_datetime < from_date) {
+				if(sl_posting_date < from_date) {
 					item.opening_qty += qty_diff;
 					item.opening_value += value_diff;
-				} else if(posting_datetime <= to_date) {
+				} else if(sl_posting_date <= to_date) {
 					var ignore_inflow_outflow = this.is_default("warehouse")
 						&& sl.voucher_type=="Stock Entry" 
 						&& this.stock_entry_map[sl.voucher_no].purpose=="Material Transfer";
diff --git a/support/doctype/support_ticket/get_support_mails.py b/support/doctype/support_ticket/get_support_mails.py
index a91d483..d1fe0dc 100644
--- a/support/doctype/support_ticket/get_support_mails.py
+++ b/support/doctype/support_ticket/get_support_mails.py
@@ -36,6 +36,7 @@
 			return
 		thread_id = mail.get_thread_id()
 		ticket = None
+		new_ticket = False
 
 		if thread_id and webnotes.conn.exists("Support Ticket", thread_id):
 			ticket = webnotes.bean("Support Ticket", thread_id)
@@ -52,16 +53,17 @@
 				"status": "Open"
 			}])
 			ticket.insert()
-
-			if cint(self.email_settings.send_autoreply):
-				if "mailer-daemon" not in mail.from_email.lower():
-					self.send_auto_reply(ticket.doc)
+			new_ticket = True
 
 		mail.save_attachments_in_doc(ticket.doc)
 				
 		make(content=mail.content, sender=mail.from_email, subject = ticket.doc.subject,
 			doctype="Support Ticket", name=ticket.doc.name, 
 			lead = ticket.doc.lead, contact=ticket.doc.contact, date=mail.date)
+			
+		if new_ticket and cint(self.email_settings.send_autoreply) and \
+			"mailer-daemon" not in mail.from_email.lower():
+				self.send_auto_reply(ticket.doc)
 
 	def send_auto_reply(self, d):
 		signature = self.email_settings.fields.get('support_signature') or ''
diff --git a/utilities/transaction_base.py b/utilities/transaction_base.py
index b84b374..61486c5 100644
--- a/utilities/transaction_base.py
+++ b/utilities/transaction_base.py
@@ -75,7 +75,7 @@
 			details = webnotes.conn.sql("select name, address_line1, address_line2, city, country, pincode, state, phone, fax from `tabAddress` where %s and docstatus != 2 order by is_primary_address desc limit 1" % cond, as_dict = 1)
 		
 		extract = lambda x: details and details[0] and details[0].get(x,'') or ''
-		address_fields = [('','address_line1'),('\n','address_line2'),('\n','city'),(' ','pincode'),('\n','state'),('\n','country'),('\nPhone: ','phone'),('\nFax: ', 'fax')]
+		address_fields = [('','address_line1'),('\n','address_line2'),('\n','city'),('\n','state'),(' ','pincode'),('\n','country'),('\nPhone: ','phone'),('\nFax: ', 'fax')]
 		address_display = ''.join([a[0]+extract(a[1]) for a in address_fields if extract(a[1])])
 		if address_display.startswith('\n'): address_display = address_display[1:]		
 
