diff --git a/accounts/doctype/gl_entry/gl_entry.py b/accounts/doctype/gl_entry/gl_entry.py
index 3a0b28c..d3c6317 100644
--- a/accounts/doctype/gl_entry/gl_entry.py
+++ b/accounts/doctype/gl_entry/gl_entry.py
@@ -5,8 +5,7 @@
 import webnotes
 
 from webnotes.utils import flt, fmt_money, getdate
-from webnotes.model.code import get_obj
-from webnotes import msgprint, _
+from webnotes import _
 	
 class DocType:
 	def __init__(self,d,dl):
@@ -130,11 +129,12 @@
 		against_voucher_amount = flt(webnotes.conn.sql("""
 			select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))
 			from `tabGL Entry` where voucher_type = 'Journal Voucher' and voucher_no = %s
-			and account = %s""", (against_voucher, account))[0][0])
+			and account = %s and ifnull(against_voucher, '') = ''""", 
+			(against_voucher, account))[0][0])
 		bal = against_voucher_amount + bal
 		if against_voucher_amount < 0:
 			bal = -bal
-		
+	
 	# Validation : Outstanding can not be negative
 	if bal < 0 and not on_cancel:
 		webnotes.throw(_("Outstanding for Voucher ") + against_voucher + _(" will become ") + 
@@ -158,4 +158,4 @@
 		elif frozen_accounts_modifier not in webnotes.user.get_roles():
 			webnotes.throw(account + _(" is a frozen account. ") + 
 				_("To create / edit transactions against this account, you need role") + ": " +  
-				frozen_accounts_modifier)
+				frozen_accounts_modifier)
\ No newline at end of file
diff --git a/accounts/report/accounts_receivable/accounts_receivable.py b/accounts/report/accounts_receivable/accounts_receivable.py
index ad0d925..945bae4 100644
--- a/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/accounts/report/accounts_receivable/accounts_receivable.py
@@ -85,7 +85,7 @@
 	def get_account_map(self):
 		if not hasattr(self, "account_map"):
 			self.account_map = dict(((r.name, r) for r in webnotes.conn.sql("""select 
-				account.name, customer.customer_name, customer.territory
+				account.name, customer.name as customer_name, customer.territory
 				from `tabAccount` account, `tabCustomer` customer 
 				where account.master_type="Customer" 
 				and customer.name=account.master_name""", as_dict=True)))
diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py
index b2873c5..2435d0c 100644
--- a/buying/doctype/supplier/supplier.py
+++ b/buying/doctype/supplier/supplier.py
@@ -27,6 +27,14 @@
 		else:
 			self.doc.name = make_autoname(self.doc.naming_series + '.#####')
 
+	def update_address(self):
+		webnotes.conn.sql("""update `tabAddress` set supplier_name=%s, modified=NOW() 
+			where supplier=%s""", (self.doc.supplier_name, self.doc.name))
+
+	def update_contact(self):
+		webnotes.conn.sql("""update `tabContact` set supplier_name=%s, modified=NOW() 
+			where supplier=%s""", (self.doc.supplier_name, self.doc.name))
+
 	def update_credit_days_limit(self):
 		webnotes.conn.sql("""update tabAccount set credit_days = %s where name = %s""", 
 			(cint(self.doc.credit_days), self.doc.name + " - " + self.get_company_abbr()))
@@ -35,6 +43,9 @@
 		if not self.doc.naming_series:
 			self.doc.naming_series = ''
 
+		self.update_address()
+		self.update_contact()
+
 		# create account head
 		self.create_account_head()
 
@@ -151,10 +162,19 @@
 	def before_rename(self, olddn, newdn, merge=False):
 		from accounts.utils import rename_account_for
 		rename_account_for("Supplier", olddn, newdn, merge)
-		
+
 	def after_rename(self, olddn, newdn, merge=False):
+		set_field = ''
 		if webnotes.defaults.get_global_default('supp_master_name') == 'Supplier Name':
 			webnotes.conn.set(self.doc, "supplier_name", newdn)
+			self.update_contact()
+			set_field = ", supplier_name=%(newdn)s"
+		self.update_supplier_address(newdn, set_field)
+
+	def update_supplier_address(self, newdn, set_field):
+		webnotes.conn.sql("""update `tabAddress` set address_title=%(newdn)s 
+			{set_field} where supplier=%(newdn)s"""\
+			.format(set_field=set_field), ({"newdn": newdn}))
 
 @webnotes.whitelist()
 def get_dashboard_info(supplier):
diff --git a/config.json b/config.json
index bc72fa9..779f063 100644
--- a/config.json
+++ b/config.json
@@ -1,6 +1,6 @@
 {
  "app_name": "ERPNext", 
- "app_version": "3.1.2", 
+ "app_version": "3.2.0", 
  "base_template": "app/portal/templates/base.html", 
  "modules": {
   "Accounts": {
@@ -74,5 +74,5 @@
    "type": "module"
   }
  }, 
- "requires_framework_version": "==3.1.1"
+ "requires_framework_version": "==3.2.0"
 }
\ No newline at end of file
diff --git a/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/manufacturing/doctype/production_planning_tool/production_planning_tool.py
index f3626a3..ce93d80 100644
--- a/manufacturing/doctype/production_planning_tool/production_planning_tool.py
+++ b/manufacturing/doctype/production_planning_tool/production_planning_tool.py
@@ -72,9 +72,9 @@
 				and (exists (select name from `tabItem` item where item.name=so_item.item_code
 					and (ifnull(item.is_pro_applicable, 'No') = 'Yes' 
 						or ifnull(item.is_sub_contracted_item, 'No') = 'Yes') %s)
-					or exists (select name from `tabPacked Item` dnpi
-						where dnpi.parent = so.name and dnpi.parent_item = so_item.item_code
-							and exists (select name from `tabItem` item where item.name=dnpi.item_code
+					or exists (select name from `tabPacked Item` pi
+						where pi.parent = so.name and pi.parent_item = so_item.item_code
+							and exists (select name from `tabItem` item where item.name=pi.item_code
 								and (ifnull(item.is_pro_applicable, 'No') = 'Yes' 
 									or ifnull(item.is_sub_contracted_item, 'No') = 'Yes') %s)))
 			""" % ('%s', so_filter, item_filter, item_filter), self.doc.company, as_dict=1)
@@ -83,6 +83,8 @@
 
 	def add_so_in_table(self, open_so):
 		""" Add sales orders in the table"""
+		self.clear_so_table()
+
 		so_list = [d.sales_order for d in getlist(self.doclist, 'pp_so_details')]
 		for r in open_so:
 			if cstr(r['name']) not in so_list:
@@ -116,19 +118,19 @@
 					or ifnull(item.is_sub_contracted_item, 'No') = 'Yes'))""" % \
 			(", ".join(["%s"] * len(so_list))), tuple(so_list), as_dict=1)
 		
-		dnpi_items = webnotes.conn.sql("""select distinct dnpi.parent, dnpi.item_code, dnpi.warehouse as reserved_warhouse,
-			(((so_item.qty - ifnull(so_item.delivered_qty, 0)) * dnpi.qty) / so_item.qty) 
+		packed_items = webnotes.conn.sql("""select distinct pi.parent, pi.item_code, pi.warehouse as reserved_warhouse,
+			(((so_item.qty - ifnull(so_item.delivered_qty, 0)) * pi.qty) / so_item.qty) 
 				as pending_qty
-			from `tabSales Order Item` so_item, `tabPacked Item` dnpi
-			where so_item.parent = dnpi.parent and so_item.docstatus = 1 
-			and dnpi.parent_item = so_item.item_code
+			from `tabSales Order Item` so_item, `tabPacked Item` pi
+			where so_item.parent = pi.parent and so_item.docstatus = 1 
+			and pi.parent_item = so_item.item_code
 			and so_item.parent in (%s) and ifnull(so_item.qty, 0) > ifnull(so_item.delivered_qty, 0)
-			and exists (select * from `tabItem` item where item.name=dnpi.item_code
+			and exists (select * from `tabItem` item where item.name=pi.item_code
 				and (ifnull(item.is_pro_applicable, 'No') = 'Yes' 
 					or ifnull(item.is_sub_contracted_item, 'No') = 'Yes'))""" % \
 			(", ".join(["%s"] * len(so_list))), tuple(so_list), as_dict=1)
 
-		return items + dnpi_items
+		return items + packed_items
 		
 
 	def add_items(self, items):
diff --git a/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py
index d00926f..49296b0 100644
--- a/selling/doctype/customer/customer.py
+++ b/selling/doctype/customer/customer.py
@@ -47,6 +47,14 @@
 		if self.doc.lead_name:
 			webnotes.conn.sql("update `tabLead` set status='Converted' where name = %s", self.doc.lead_name)
 
+	def update_address(self):
+		webnotes.conn.sql("""update `tabAddress` set customer_name=%s, modified=NOW() 
+			where customer=%s""", (self.doc.customer_name, self.doc.name))
+
+	def update_contact(self):
+		webnotes.conn.sql("""update `tabContact` set customer_name=%s, modified=NOW() 
+			where customer=%s""", (self.doc.customer_name, self.doc.name))
+
 	def create_account_head(self):
 		if self.doc.company :
 			abbr = self.get_company_abbr()
@@ -99,6 +107,9 @@
 		self.validate_name_with_customer_group()
 		
 		self.update_lead_status()
+		self.update_address()
+		self.update_contact()
+
 		# create account head
 		self.create_account_head()
 		# update credit days and limit in account
@@ -146,10 +157,19 @@
 	def before_rename(self, olddn, newdn, merge=False):
 		from accounts.utils import rename_account_for
 		rename_account_for("Customer", olddn, newdn, merge)
-			
+
 	def after_rename(self, olddn, newdn, merge=False):
+		set_field = ''
 		if webnotes.defaults.get_global_default('cust_master_name') == 'Customer Name':
 			webnotes.conn.set(self.doc, "customer_name", newdn)
+			self.update_contact()
+			set_field = ", customer_name=%(newdn)s"
+		self.update_customer_address(newdn, set_field)
+
+	def update_customer_address(self, newdn, set_field):
+		webnotes.conn.sql("""update `tabAddress` set address_title=%(newdn)s 
+			{set_field} where customer=%(newdn)s"""\
+			.format(set_field=set_field), ({"newdn": newdn}))
 
 @webnotes.whitelist()
 def get_dashboard_info(customer):
diff --git a/setup/doctype/email_settings/email_settings.txt b/setup/doctype/email_settings/email_settings.txt
index 3689718..6b28f10 100644
--- a/setup/doctype/email_settings/email_settings.txt
+++ b/setup/doctype/email_settings/email_settings.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-03-25 17:53:21", 
   "docstatus": 0, 
-  "modified": "2013-11-28 11:54:42", 
+  "modified": "2013-12-06 13:12:25", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -103,6 +103,7 @@
   "label": "Auto Email Id"
  }, 
  {
+  "default": "1", 
   "description": "If checked, an email with an attached HTML format will be added to part of the EMail body as well as attachment. To only send as attachment, uncheck this.", 
   "doctype": "DocField", 
   "fieldname": "send_print_in_body_and_attachment", 
diff --git a/stock/doctype/serial_no/serial_no.py b/stock/doctype/serial_no/serial_no.py
index dc067ec..bd2704d 100644
--- a/stock/doctype/serial_no/serial_no.py
+++ b/stock/doctype/serial_no/serial_no.py
@@ -150,7 +150,7 @@
 			where serial_no like %s and item_code=%s and ifnull(is_cancelled, 'No')='No' 
 			order by posting_date desc, posting_time desc, name desc""", 
 			("%%%s%%" % self.doc.name, self.doc.item_code), as_dict=1):
-				if self.doc.name in get_serial_nos(sle.serial_no):
+				if self.doc.name.upper() in get_serial_nos(sle.serial_no):
 					if sle.actual_qty > 0:
 						sle_dict.setdefault("incoming", []).append(sle)
 					else:
@@ -268,7 +268,8 @@
 		from tabItem where name=%s""", item_code, as_dict=True)[0]
 		
 def get_serial_nos(serial_no):
-	return [s.strip() for s in cstr(serial_no).strip().replace(',', '\n').split('\n') if s.strip()]
+	return [s.strip() for s in cstr(serial_no).strip().upper().replace(',', '\n').split('\n') 
+		if s.strip()]
 
 def make_serial_no(serial_no, sle):
 	sr = webnotes.new_bean("Serial No")
diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js
index 76284ea..73fd441 100644
--- a/stock/doctype/stock_entry/stock_entry.js
+++ b/stock/doctype/stock_entry/stock_entry.js
@@ -244,7 +244,7 @@
 
 cur_frm.cscript.toggle_related_fields = function(doc) {
 	disable_from_warehouse = inList(["Material Receipt", "Sales Return"], doc.purpose);
-	disable_to_warehouse = inList(["Material Issue", "Purchase Return"], doc.purpose)
+	disable_to_warehouse = inList(["Material Issue", "Purchase Return"], doc.purpose);
 	
 	cur_frm.toggle_enable("from_warehouse", !disable_from_warehouse);
 	cur_frm.toggle_enable("to_warehouse", !disable_to_warehouse);
@@ -302,7 +302,7 @@
 }
 
 cur_frm.cscript.purpose = function(doc, cdt, cdn) {
-	cur_frm.cscript.toggle_related_fields(doc, cdt, cdn);
+	cur_frm.cscript.toggle_related_fields(doc);
 }
 
 // Overloaded query for link batch_no
diff --git a/utilities/doctype/address/address.txt b/utilities/doctype/address/address.txt
index 09be67e..5b4ada9 100644
--- a/utilities/doctype/address/address.txt
+++ b/utilities/doctype/address/address.txt
@@ -2,11 +2,12 @@
  {
   "creation": "2013-01-10 16:34:32", 
   "docstatus": 0, 
-  "modified": "2013-07-11 17:02:12", 
+  "modified": "2013-12-12 12:17:46", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
  {
+  "allow_rename": 1, 
   "doctype": "DocType", 
   "document_type": "Master", 
   "icon": "icon-map-marker", 
diff --git a/utilities/doctype/contact/contact.txt b/utilities/doctype/contact/contact.txt
index 199aaea..1c8a5cf 100644
--- a/utilities/doctype/contact/contact.txt
+++ b/utilities/doctype/contact/contact.txt
@@ -2,11 +2,12 @@
  {
   "creation": "2013-01-10 16:34:32", 
   "docstatus": 0, 
-  "modified": "2013-10-08 16:48:50", 
+  "modified": "2013-12-12 12:18:19", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
  {
+  "allow_rename": 1, 
   "doctype": "DocType", 
   "document_type": "Master", 
   "icon": "icon-user", 
