diff --git a/erpnext/home/page/desktop/desktop.js b/erpnext/home/page/desktop/desktop.js index 7bc2aba9cdb..0db20fb0c6e 100644 --- a/erpnext/home/page/desktop/desktop.js +++ b/erpnext/home/page/desktop/desktop.js @@ -125,6 +125,7 @@ erpnext.desktop.show_pending_notifications = function() { add_circle('support', 'open_support_tickets', 'Open Support Tickets'); add_circle('todo', 'things_todo', 'Things To Do'); add_circle('calendar', 'todays_events', 'Todays Events'); + add_circle('project', 'open_tasks', 'Open Tasks'); erpnext.update_messages(); diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py index 909a8b28d65..552a4c86be3 100644 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -59,13 +59,6 @@ class DocType: def validate(self): - if not self.doc.opening_date: - msgprint("Please enter Opening Date.") - raise Exception - elif getdate(self.doc.opening_date) > getdate(nowdate()): - msgprint("Opening date can not be future date") - raise Exception - if self.doc.exp_start_date and self.doc.exp_end_date and getdate(self.doc.exp_start_date) > getdate(self.doc.exp_end_date): msgprint("'Expected Start Date' can not be greater than 'Expected End Date'") raise Exception @@ -73,43 +66,32 @@ class DocType: if self.doc.act_start_date and self.doc.act_end_date and getdate(self.doc.act_start_date) > getdate(self.doc.act_end_date): msgprint("'Actual Start Date' can not be greater than 'Actual End Date'") raise Exception - - if self.doc.opening_date and self.doc.review_date and getdate(self.doc.opening_date) > getdate(self.doc.review_date): - msgprint("Review Date should be greater than or equal to Opening Date ") - raise Exception - - if self.doc.closing_date and self.doc.review_date and getdate(self.doc.closing_date) < getdate(self.doc.review_date): - msgprint("Closing Date should be greater than or equal to Review Date ") - raise Exception # on update #-------------------------------------------- def on_update(self): if self.doc.status =='Open' and self.doc.allocated_to: - if self.doc.task_email_notify and (self.doc.allocated_to != self.doc.allocated_to_old): - self.doc.sent_reminder = 0 - self.doc.allocated_to_old = self.doc.allocated_to - self.sent_notification() + if self.doc.task_email_notify: + self.send_notification() if self.doc.exp_start_date: sql("delete from tabEvent where ref_type='Task' and ref_name=%s", self.doc.name) self.add_calendar_event() else: - msgprint("An Expeted start date has not been set for this task.Please set 'Expected Start date'\ - to add an event to allocated persons calender.You can save a task without this also.") + msgprint("Tip: Add an expected start date to create a calendar event.") def validate_for_pending_review(self): if not self.doc.allocated_to: - msgprint("Please enter allocated_to.") + msgprint("Please enter Allocated To.") raise Exception self.validate_with_timesheet_dates() #Sent Notification - def sent_notification(self): + def send_notification(self): i = { 'name' : self.doc.name, - 'senders_name': self.doc.allocated_to, + 'senders_name': self.doc.senders_name, 'opening_date': self.doc.opening_date, 'exp_start_date': self.doc.exp_start_date, 'exp_end_date' : self.doc.exp_end_date, @@ -119,8 +101,12 @@ class DocType: 'description': self.doc.description } + task_label = '[Task Updated] ' + if self.doc.creation==self.doc.modified: + task_label = '[New Task] ' + msg2="""
This is a Notification for the task %(name)s that has been assigned to you +
This is a Notification for the task %(name)s that has been assigned / updated to you by %(senders_name)s on %(opening_date)s
Subject: %(subject)s
Project: %(project)s
@@ -128,11 +114,9 @@ class DocType:Expected Start Date: %(exp_start_date)s
Expected End Date: %(exp_end_date)s
Details: %(description)s
-You will also recieve another reminder 2 days before the commencement of the task
-Good Luck!
(This notification is autogenerated)
""" % i sendmail(self.doc.allocated_to, sender='automail@webnotestech.com', msg=msg2,send_now=1,\ - subject='A task has been assigned') + subject= task_label + self.doc.subject) diff --git a/erpnext/projects/doctype/task/task.txt b/erpnext/projects/doctype/task/task.txt index 811071979bb..eedb651f38a 100644 --- a/erpnext/projects/doctype/task/task.txt +++ b/erpnext/projects/doctype/task/task.txt @@ -3,9 +3,9 @@ # These values are common in all dictionaries { - 'creation': '2012-03-27 14:36:06', + 'creation': '2012-04-02 16:02:06', 'docstatus': 0, - 'modified': '2012-03-27 14:36:06', + 'modified': '2012-06-04 12:33:35', 'modified_by': u'Administrator', 'owner': u'Administrator' }, @@ -26,7 +26,7 @@ 'show_in_menu': 0, 'subject': u'%(subject)s', 'tag_fields': u'status', - 'version': 254 + 'version': 1 }, # These values are common for all DocField @@ -62,6 +62,7 @@ 'doctype': u'DocPerm', 'permlevel': 0, 'role': u'All', + 'submit': 0, 'write': 1 }, @@ -75,6 +76,7 @@ # DocPerm { + 'amend': 1, 'cancel': 1, 'create': 1, 'doctype': u'DocPerm', @@ -115,6 +117,79 @@ 'reqd': 1 }, + # DocField + { + 'colour': u'White:FFF', + 'doctype': u'DocField', + 'fieldname': u'allocated_to', + 'fieldtype': u'Link', + 'label': u'Allocated To', + 'oldfieldname': u'allocated_to', + 'oldfieldtype': u'Link', + 'options': u'Profile', + 'permlevel': 0, + 'trigger': u'Client' + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'task_email_notify', + 'fieldtype': u'Check', + 'label': u'Send Mail Notification', + 'permlevel': 0 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'exp_start_date', + 'fieldtype': u'Date', + 'label': u'Expected Start Date', + 'oldfieldname': u'exp_start_date', + 'oldfieldtype': u'Date', + 'permlevel': 0, + 'reqd': 0 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'exp_end_date', + 'fieldtype': u'Date', + 'in_filter': 1, + 'label': u'Expected End Date', + 'oldfieldname': u'exp_end_date', + 'oldfieldtype': u'Date', + 'permlevel': 0, + 'reqd': 0, + 'search_index': 1 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'column_break0', + 'fieldtype': u'Column Break', + 'oldfieldtype': u'Column Break', + 'permlevel': 0, + 'width': u'50%' + }, + + # DocField + { + 'colour': u'White:FFF', + 'doctype': u'DocField', + 'fieldname': u'project', + 'fieldtype': u'Link', + 'label': u'Project', + 'oldfieldname': u'project', + 'oldfieldtype': u'Link', + 'options': u'Project', + 'permlevel': 0, + 'trigger': u'Client' + }, + # DocField { 'doctype': u'DocField', @@ -129,46 +204,6 @@ 'trigger': u'Client' }, - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'opening_date', - 'fieldtype': u'Date', - 'label': u'Creation Date', - 'oldfieldname': u'opening_date', - 'oldfieldtype': u'Date', - 'permlevel': 0, - 'reqd': 1 - }, - - # DocField - { - 'colour': u'White:FFF', - 'depends_on': u'eval:doc.status == "Closed" || doc.status == "Pending Review"', - 'doctype': u'DocField', - 'fieldname': u'review_date', - 'fieldtype': u'Date', - 'hidden': 1, - 'label': u'Review Date', - 'oldfieldname': u'review_date', - 'oldfieldtype': u'Date', - 'permlevel': 0 - }, - - # DocField - { - 'colour': u'White:FFF', - 'depends_on': u'eval:doc.status == "Closed"', - 'doctype': u'DocField', - 'fieldname': u'closing_date', - 'fieldtype': u'Date', - 'hidden': 1, - 'label': u'Closing Date', - 'oldfieldname': u'closing_date', - 'oldfieldtype': u'Date', - 'permlevel': 0 - }, - # DocField { 'doctype': u'DocField', @@ -186,16 +221,60 @@ # DocField { - 'colour': u'White:FFF', 'doctype': u'DocField', - 'fieldname': u'project', - 'fieldtype': u'Link', - 'label': u'Project', - 'oldfieldname': u'project', - 'oldfieldtype': u'Link', - 'options': u'Project', + 'fieldname': u'allocated_to_name', + 'fieldtype': u'Data', + 'hidden': 1, + 'label': u'Allocated To Name', + 'oldfieldname': u'allocated_to_name', + 'oldfieldtype': u'Data', + 'permlevel': 0 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'section_break0', + 'fieldtype': u'Section Break', + 'oldfieldtype': u'Section Break', + 'options': u'Simple', + 'permlevel': 0 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'description', + 'fieldtype': u'Text Editor', + 'label': u'Details', + 'oldfieldname': u'description', + 'oldfieldtype': u'Text Editor', 'permlevel': 0, - 'trigger': u'Client' + 'reqd': 0, + 'width': u'300px' + }, + + # DocField + { + 'colour': u'White:FFF', + 'description': u'If linked to a Customer', + 'doctype': u'DocField', + 'fieldname': u'customer_details', + 'fieldtype': u'Section Break', + 'label': u'Customer Details', + 'permlevel': 0 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'external_or_internal', + 'fieldtype': u'Select', + 'label': u'External or Internal', + 'oldfieldname': u'external_or_internal', + 'oldfieldtype': u'Select', + 'options': u'External\nInternal', + 'permlevel': 0 }, # DocField @@ -223,73 +302,6 @@ 'permlevel': 1 }, - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'column_break0', - 'fieldtype': u'Column Break', - 'oldfieldtype': u'Column Break', - 'permlevel': 0, - 'width': u'50%' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'allocated_to_old', - 'fieldtype': u'Link', - 'hidden': 1, - 'label': u'Allocated To Old', - 'no_copy': 1, - 'permlevel': 0 - }, - - # DocField - { - 'colour': u'White:FFF', - 'doctype': u'DocField', - 'fieldname': u'allocated_to', - 'fieldtype': u'Link', - 'label': u'Allocated To', - 'oldfieldname': u'allocated_to', - 'oldfieldtype': u'Link', - 'options': u'Profile', - 'permlevel': 0, - 'trigger': u'Client' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'task_email_notify', - 'fieldtype': u'Check', - 'label': u'Sent Mail Notification', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'allocated_to_name', - 'fieldtype': u'Data', - 'hidden': 1, - 'label': u'Allocated To Name', - 'oldfieldname': u'allocated_to_name', - 'oldfieldtype': u'Data', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'sent_reminder', - 'fieldtype': u'Data', - 'hidden': 1, - 'label': u'Sent Reminder', - 'no_copy': 1, - 'permlevel': 0 - }, - # DocField { 'doctype': u'DocField', @@ -316,6 +328,14 @@ 'reqd': 0 }, + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'column_break25', + 'fieldtype': u'Column Break', + 'permlevel': 0 + }, + # DocField { 'doctype': u'DocField', @@ -337,102 +357,6 @@ 'oldfieldtype': u'Data', 'permlevel': 0 }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'external_or_internal', - 'fieldtype': u'Select', - 'label': u'External or Internal', - 'oldfieldname': u'external_or_internal', - 'oldfieldtype': u'Select', - 'options': u'External\nInternal', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'amended_from', - 'fieldtype': u'Data', - 'hidden': 1, - 'label': u'Amended From', - 'no_copy': 1, - 'oldfieldname': u'amended_from', - 'oldfieldtype': u'Data', - 'permlevel': 1, - 'print_hide': 1, - 'report_hide': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'amendment_date', - 'fieldtype': u'Date', - 'hidden': 1, - 'label': u'Amendment Date', - 'no_copy': 1, - 'oldfieldname': u'amendment_date', - 'oldfieldtype': u'Date', - 'permlevel': 1, - 'print_hide': 1, - 'report_hide': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'section_break0', - 'fieldtype': u'Section Break', - 'oldfieldtype': u'Section Break', - 'options': u'Simple', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'description', - 'fieldtype': u'Text Editor', - 'label': u'Details', - 'oldfieldname': u'description', - 'oldfieldtype': u'Text Editor', - 'permlevel': 0, - 'reqd': 0, - 'width': u'300px' - }, - - # DocField - { - 'colour': u'White:FFF', - 'doctype': u'DocField', - 'fieldname': u'first_creation_flag', - 'fieldtype': u'Int', - 'hidden': 1, - 'in_filter': 0, - 'label': u'First Creation Flag', - 'no_copy': 1, - 'oldfieldname': u'first_creation_flag', - 'oldfieldtype': u'Int', - 'permlevel': 0, - 'print_hide': 1, - 'search_index': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'second_creation_flag', - 'fieldtype': u'Int', - 'hidden': 1, - 'label': u'Second Creation Flag', - 'no_copy': 1, - 'oldfieldname': u'second_creation_flag', - 'oldfieldtype': u'Int', - 'permlevel': 0, - 'print_hide': 1 - }, # DocField { @@ -455,32 +379,6 @@ 'width': u'50%' }, - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'exp_start_date', - 'fieldtype': u'Date', - 'label': u'Expected Start Date', - 'oldfieldname': u'exp_start_date', - 'oldfieldtype': u'Date', - 'permlevel': 0, - 'reqd': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'exp_end_date', - 'fieldtype': u'Date', - 'in_filter': 1, - 'label': u'Expected End Date', - 'oldfieldname': u'exp_end_date', - 'oldfieldtype': u'Date', - 'permlevel': 0, - 'reqd': 0, - 'search_index': 1 - }, - # DocField { 'doctype': u'DocField', @@ -557,5 +455,84 @@ 'oldfieldname': u'actual_budget', 'oldfieldtype': u'Currency', 'permlevel': 0 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'more_details', + 'fieldtype': u'Section Break', + 'label': u'More Details', + 'permlevel': 0 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'opening_date', + 'fieldtype': u'Date', + 'label': u'Creation Date', + 'oldfieldname': u'opening_date', + 'oldfieldtype': u'Date', + 'permlevel': 0, + 'reqd': 1 + }, + + # DocField + { + 'colour': u'White:FFF', + 'depends_on': u'eval:doc.status == "Closed" || doc.status == "Pending Review"', + 'doctype': u'DocField', + 'fieldname': u'review_date', + 'fieldtype': u'Date', + 'hidden': 1, + 'label': u'Review Date', + 'oldfieldname': u'review_date', + 'oldfieldtype': u'Date', + 'permlevel': 0 + }, + + # DocField + { + 'colour': u'White:FFF', + 'depends_on': u'eval:doc.status == "Closed"', + 'doctype': u'DocField', + 'fieldname': u'closing_date', + 'fieldtype': u'Date', + 'hidden': 1, + 'label': u'Closing Date', + 'oldfieldname': u'closing_date', + 'oldfieldtype': u'Date', + 'permlevel': 0 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'amended_from', + 'fieldtype': u'Data', + 'hidden': 1, + 'label': u'Amended From', + 'no_copy': 1, + 'oldfieldname': u'amended_from', + 'oldfieldtype': u'Data', + 'permlevel': 1, + 'print_hide': 1, + 'report_hide': 1 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'amendment_date', + 'fieldtype': u'Date', + 'hidden': 1, + 'label': u'Amendment Date', + 'no_copy': 1, + 'oldfieldname': u'amendment_date', + 'oldfieldtype': u'Date', + 'permlevel': 1, + 'print_hide': 1, + 'report_hide': 1 } -] +] \ No newline at end of file diff --git a/erpnext/projects/page/projects_home/projects_home.html b/erpnext/projects/page/projects_home/projects_home.html index e86aa03d98c..81235a2f90d 100644 --- a/erpnext/projects/page/projects_home/projects_home.html +++ b/erpnext/projects/page/projects_home/projects_home.html @@ -4,12 +4,12 @@