feature to set / unset birthday reminders webnotes/erpnext#851
diff --git a/hr/doctype/employee/employee.py b/hr/doctype/employee/employee.py
index e8396eb..b46123a 100644
--- a/hr/doctype/employee/employee.py
+++ b/hr/doctype/employee/employee.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import getdate, validate_email_add, cstr
+from webnotes.utils import getdate, validate_email_add, cstr, cint
 from webnotes.model.doc import make_autoname
 from webnotes import msgprint, _
 
@@ -39,12 +39,12 @@
 		self.validate_email()
 		self.validate_status()
 		self.validate_employee_leave_approver()
+		self.update_dob_event()
 		
 	def on_update(self):
 		if self.doc.user_id:
 			self.update_user_default()
 			self.update_profile()
-		self.update_dob_event()
 				
 	def update_user_default(self):
 		webnotes.conn.set_default("employee", self.doc.name, self.doc.user_id)
@@ -155,10 +155,11 @@
 					raise_exception=InvalidLeaveApproverError)
 
 	def update_dob_event(self):
-		if self.doc.status == "Active" and self.doc.date_of_birth:
+		if self.doc.status == "Active" and self.doc.date_of_birth \
+			and not cint(webnotes.conn.get_value("HR Settings", None, "stop_birthday_reminders")):
 			birthday_event = webnotes.conn.sql("""select name from `tabEvent` where repeat_on='Every Year' 
 				and ref_type='Employee' and ref_name=%s""", self.doc.name)
-
+			
 			starts_on = self.doc.date_of_birth + " 00:00:00"
 			ends_on = self.doc.date_of_birth + " 00:15:00"
 
diff --git a/hr/doctype/hr_settings/hr_settings.py b/hr/doctype/hr_settings/hr_settings.py
index 784339d..101905c 100644
--- a/hr/doctype/hr_settings/hr_settings.py
+++ b/hr/doctype/hr_settings/hr_settings.py
@@ -6,6 +6,24 @@
 from __future__ import unicode_literals
 import webnotes
 
+from webnotes.utils import cint
+
 class DocType:
 	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
+		self.doc, self.doclist = d, dl
+		
+	def validate(self):
+		self.original_stop_birthday_reminders = cint(webnotes.conn.get_value("HR Settings", 
+			None, "stop_birthday_reminders"))
+			
+	def on_update(self):
+		# reset birthday reminders
+		if cint(self.doc.stop_birthday_reminders) != self.original_stop_birthday_reminders:
+			webnotes.conn.sql("""delete from `tabEvent` where repeat_on='Every Year' and ref_type='Employee'""")
+		
+			if not self.doc.stop_birthday_reminders:
+				for employee in webnotes.conn.sql_list("""select name from `tabEmployee` where status='Active' and 
+					ifnull(date_of_birth, '')!=''"""):
+					webnotes.get_obj("Employee", employee).update_dob_event()
+					
+			webnotes.msgprint(webnotes._("Updated Birthday Reminders"))
\ No newline at end of file
diff --git a/hr/doctype/hr_settings/hr_settings.txt b/hr/doctype/hr_settings/hr_settings.txt
index e3694d0..bf4b011 100644
--- a/hr/doctype/hr_settings/hr_settings.txt
+++ b/hr/doctype/hr_settings/hr_settings.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-08-02 13:45:23", 
   "docstatus": 0, 
-  "modified": "2013-08-02 14:22:26", 
+  "modified": "2013-10-02 15:44:38", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -39,6 +39,12 @@
   "name": "HR Settings"
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "employee_settings", 
+  "fieldtype": "Section Break", 
+  "label": "Employee Settings"
+ }, 
+ {
   "description": "Employee record is created using selected field. ", 
   "doctype": "DocField", 
   "fieldname": "emp_created_by", 
@@ -47,6 +53,19 @@
   "options": "Naming Series\nEmployee Number"
  }, 
  {
+  "description": "Don't send Employee Birthday Reminders", 
+  "doctype": "DocField", 
+  "fieldname": "stop_birthday_reminders", 
+  "fieldtype": "Check", 
+  "label": "Stop Birthday Reminders"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "payroll_settings", 
+  "fieldtype": "Section Break", 
+  "label": "Payroll Settings"
+ }, 
+ {
   "description": "If checked, Total no. of Working Days will include holidays, and this will reduce the value of Salary Per Day", 
   "doctype": "DocField", 
   "fieldname": "include_holidays_in_total_working_days",