diff --git a/hr/doctype/employee/employee.py b/hr/doctype/employee/employee.py index e8396eb5392..b46123a6d1f 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 @@ class DocType: 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 @@ class DocType: 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 784339de7db..101905c57b4 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 e3694d05727..bf4b0119aaf 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" }, @@ -38,6 +38,12 @@ "doctype": "DocType", "name": "HR Settings" }, + { + "doctype": "DocField", + "fieldname": "employee_settings", + "fieldtype": "Section Break", + "label": "Employee Settings" + }, { "description": "Employee record is created using selected field. ", "doctype": "DocField", @@ -46,6 +52,19 @@ "label": "Employee Records to be created by", "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",