Merge branch 'master' of github.com:webnotes/erpnext into cms2
diff --git a/erpnext/patches/june_2012/series_unique_patch.py b/erpnext/patches/june_2012/series_unique_patch.py
new file mode 100644
index 0000000..6f85f21
--- /dev/null
+++ b/erpnext/patches/june_2012/series_unique_patch.py
@@ -0,0 +1,6 @@
+def execute():
+	"""add unique constraint to series table's name column"""
+	import webnotes
+	webnotes.conn.commit()
+	webnotes.conn.sql("alter table `tabSeries` add unique (name)")
+	webnotes.conn.begin()
\ No newline at end of file
diff --git a/erpnext/patches/june_2012/support_ticket_autoreply.py b/erpnext/patches/june_2012/support_ticket_autoreply.py
new file mode 100644
index 0000000..cdb47a2
--- /dev/null
+++ b/erpnext/patches/june_2012/support_ticket_autoreply.py
@@ -0,0 +1,15 @@
+def execute():
+	"""New Send Autoreply checkbox in Email Settings"""
+	import webnotes
+	import webnotes.utils
+	
+	import webnotes.model.sync
+	webnotes.conn.commit()
+	webnotes.model.sync.sync('setup', 'email_settings')
+	webnotes.conn.begin()
+	
+	sync_support_mails = webnotes.utils.cint(webnotes.conn.get_value('Email Settings',
+							None, 'sync_support_mails'))
+							
+	if sync_support_mails:
+		webnotes.conn.set_value('Email Settings', None, 'send_autoreply', 1)
\ No newline at end of file
diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py
index b471780..98c3aff 100644
--- a/erpnext/patches/patch_list.py
+++ b/erpnext/patches/patch_list.py
@@ -432,4 +432,14 @@
 		'patch_file': 'reports_list_permission',
 		'description': 'allow read permission to all for report list'
 	},
+	{
+		'patch_module': 'patches.june_2012',
+		'patch_file': 'support_ticket_autoreply',
+		'description': 'New Send Autoreply checkbox in Email Settings'
+	},
+	{
+		'patch_module': 'patches.june_2012',
+		'patch_file': 'series_unique_patch',
+		'description': "add unique constraint to series table's name column"
+	},
 ]
\ No newline at end of file
diff --git a/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.js b/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.js
index 4879183..335df7a 100755
--- a/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.js
+++ b/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.js
@@ -41,7 +41,7 @@
   date_fld = 'transaction_date';
   if(based_on == 'Sales Invoice') {
     based_on = 'Sales Invoice';
-    date_fld = 'voucher_date';
+    date_fld = 'posting_date';
   }
 
   sp_cond = '';
diff --git a/erpnext/setup/doctype/email_settings/email_settings.py b/erpnext/setup/doctype/email_settings/email_settings.py
index 3e17636..755b91d 100644
--- a/erpnext/setup/doctype/email_settings/email_settings.py
+++ b/erpnext/setup/doctype/email_settings/email_settings.py
@@ -45,28 +45,33 @@
 			out_email.port = cint(self.doc.mail_port)
 			out_email.use_ssl = self.doc.use_ssl
 			try:
+				err_msg = "Login Id or Mail Password missing. Please enter and try again."
+				if not (self.doc.mail_login and self.doc.mail_password):
+					raise AttributeError, err_msg
 				out_email.login = self.doc.mail_login.encode('utf-8')
 				out_email.password =  self.doc.mail_password.encode('utf-8')
 			except AttributeError, e:
-				webnotes.msgprint('Login Id or Mail Password missing. Please enter and try again.')
-				webnotes.msgprint(e)
+				webnotes.msgprint(err_msg)
+				raise e
 			
 			try:
 				sess = out_email.smtp_connect()
+				
 				try:
 					sess.quit()
 				except:
 					pass
 			except _socket.error, e:
 				# Invalid mail server -- due to refusing connection
-				webnotes.msgprint('Invalid Outgoing Mail Server. Please rectify and try again.')
-				webnotes.msgprint(e)
+				webnotes.msgprint('Invalid Outgoing Mail Server or Port. Please rectify and try again.')
+				raise e
 			except smtplib.SMTPAuthenticationError, e:
 				webnotes.msgprint('Invalid Login Id or Mail Password. Please rectify and try again.')
+				raise e
 			except smtplib.SMTPException, e:
 				webnotes.msgprint('There is something wrong with your Outgoing Mail Settings. \
 				Please contact us at support@erpnext.com')
-				webnotes.msgprint(e)
+				raise e
 		
 
 	def validate_incoming(self):
@@ -81,11 +86,14 @@
 			inc_email.host = self.doc.support_host.encode('utf-8')
 			inc_email.use_ssl = self.doc.support_use_ssl
 			try:
+				err_msg = 'User Name or Support Password missing. Please enter and try again.'
+				if not (self.doc.support_username and self.doc.support_password):
+					raise AttributeError, err_msg
 				inc_email.username = self.doc.support_username.encode('utf-8')
 				inc_email.password = self.doc.support_password.encode('utf-8')
 			except AttributeError, e:
-				webnotes.msgprint('User Name or Support Password missing. Please enter and try again.')
-				webnotes.msgprint(e)
+				webnotes.msgprint(err_msg)
+				raise e
 
 			pop_mb = POP3Mailbox(inc_email)
 			
@@ -94,7 +102,7 @@
 			except _socket.error, e:
 				# Invalid mail server -- due to refusing connection
 				webnotes.msgprint('Invalid POP3 Mail Server. Please rectify and try again.')
-				webnotes.msgprint(e)
+				raise e
 			except poplib.error_proto, e:
 				webnotes.msgprint('Invalid User Name or Support Password. Please rectify and try again.')
-				webnotes.msgprint(e)
+				raise e
diff --git a/erpnext/setup/doctype/email_settings/email_settings.txt b/erpnext/setup/doctype/email_settings/email_settings.txt
index fdf1cf0..2772367 100644
--- a/erpnext/setup/doctype/email_settings/email_settings.txt
+++ b/erpnext/setup/doctype/email_settings/email_settings.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:20',
+		'creation': '2012-05-15 12:15:01',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:36:20',
+		'modified': '2012-06-14 14:47:49',
 		'modified_by': u'Administrator',
 		'owner': u'harshada@webnotestech.com'
 	},
@@ -25,7 +25,7 @@
 		'name': '__common__',
 		'section_style': u'Simple',
 		'server_code_error': u' ',
-		'version': 35
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -233,10 +233,20 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
+		'default': u'1',
+		'doctype': u'DocField',
+		'fieldname': u'send_autoreply',
+		'fieldtype': u'Check',
+		'label': u'Send Autoreply'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
 		'description': u'Autoreply when a new mail is received',
 		'doctype': u'DocField',
 		'fieldname': u'support_autoreply',
 		'fieldtype': u'Text',
-		'label': u'Autoreply'
+		'label': u'Custom Autoreply Message'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/support/doctype/support_ticket/__init__.py b/erpnext/support/doctype/support_ticket/__init__.py
index d2dbe60..de596f9 100644
--- a/erpnext/support/doctype/support_ticket/__init__.py
+++ b/erpnext/support/doctype/support_ticket/__init__.py
@@ -15,7 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import webnotes
-from webnotes.utils import cstr
+from webnotes.utils import cstr, cint
 
 from webnotes.utils.email_lib.receive import POP3Mailbox
 
@@ -113,7 +113,8 @@
 			update_feed(d, 'on_update')
 
 			# send auto reply
-			self.send_auto_reply(d)
+			if cint(self.email_settings.send_autoreply):
+				self.send_auto_reply(d)
 
 			webnotes.conn.commit()
 			
@@ -177,5 +178,6 @@
 		Gets new emails from support inbox and updates / creates Support Ticket records
 	"""
 	import webnotes
-	if webnotes.conn.get_value('Email Settings', None, 'sync_support_mails'):
+	from webnotes.utils import cint
+	if cint(webnotes.conn.get_value('Email Settings', None, 'sync_support_mails')):
 		SupportMailbox().get_messages()
\ No newline at end of file
diff --git a/erpnext/utilities/page/todo/todo.html b/erpnext/utilities/page/todo/todo.html
index 8c50218..d49fc23 100644
--- a/erpnext/utilities/page/todo/todo.html
+++ b/erpnext/utilities/page/todo/todo.html
@@ -1,18 +1,21 @@
-<div class="layout-wrapper" style="min-height: 300px; background-color: #FFFDC9">	
-	<a class="close" onclick="window.history.back();">&times;</a>
-	<h1>To Do</h1>
-	<br>
+<div class="layout-wrapper" style="min-height: 300px; background-color: #FFFDC9">
+	<div class="appframe-area"></div>
 	<div>
-		<div id="todo-list">
-			<h4>My List</h4><br>
-			<div class="todo-content"></div>
+		<a class="close" onclick="window.history.back();">&times;</a>
+		<h1>To Do</h1>
+		<br>
+		<div>
+			<div id="todo-list">
+				<h4>My List</h4><br>
+				<div class="todo-content"></div>
+			</div>
+			<div id="assigned-todo-list">
+				<h4>Assigned to others</h4><br>
+				<div class="todo-content"></div>
+			</div>
 		</div>
-		<div id="assigned-todo-list">
-			<h4>Assigned to others</h4><br>
-			<div class="todo-content"></div>
+		<div style="margin-top: 21px; clear: both">
+			<button id="add-todo" class="btn btn-small"><i class="icon-plus"></i> Add</button>
 		</div>
 	</div>
-	<div style="margin-top: 21px; clear: both">
-		<button id="add-todo" class="btn btn-small"><i class="icon-plus"></i> Add</button>
-	</div>
 </div>
\ No newline at end of file
diff --git a/erpnext/utilities/page/todo/todo.js b/erpnext/utilities/page/todo/todo.js
index 8cd8fc1..206becf 100644
--- a/erpnext/utilities/page/todo/todo.js
+++ b/erpnext/utilities/page/todo/todo.js
@@ -67,16 +67,18 @@
 		
 		todo.fullname = '';
 		if(todo.assigned_by) {
+			var assigned_by = wn.boot.user_info[todo.assigned_by]
 			todo.fullname = repl("[By %(fullname)s] &nbsp;", {
-				fullname: wn.boot.user_info[todo.assigned_by].fullname
+				fullname: (assigned_by ? assigned_by.fullname : todo.assigned_by),
 			});
 		}
 		
 		var parent_list = "#todo-list";
 		if(todo.owner !== user) {
 			parent_list = "#assigned-todo-list";
+			var owner = wn.boot.user_info[todo.owner];
 			todo.fullname = repl("[To %(fullname)s] &nbsp;", {
-				fullname: wn.boot.user_info[todo.owner].fullname
+				fullname: (owner ? owner.fullname : todo.owner),
 			});
 		}
 		parent_list += " div.todo-content";
@@ -197,4 +199,4 @@
 wn.pages.todo.onload = function() {
 	// load todos
 	erpnext.todo.refresh();
-}
+}
\ No newline at end of file