Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index c3c43e0..f57cfe7 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -127,7 +127,7 @@
def get_pv_details(self, arg):
import json
- item_det = sql("select item_name, brand, description, item_group, purchase_account, cost_center from tabItem where name=%s",arg,as_dict=1)
+ item_det = sql("select item_name, brand, description, item_group, purchase_account, cost_center, stock_uom from tabItem where name=%s",arg,as_dict=1)
tax = sql("select tax_type, tax_rate from `tabItem Tax` where parent = %s" , arg)
t = {}
@@ -146,7 +146,8 @@
'discount_rate': 0.00,
'expense_head': item_det and item_det[0]['purchase_account'] or '',
'cost_center': item_det and item_det[0]['cost_center'] or '',
- 'item_tax_rate': json.dumps(t)
+ 'item_tax_rate': json.dumps(t),
+ 'uom': item_det and item_det[0]['stock_uom'] or ''
}
# get last purchase rate
diff --git a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt
index 236b75e..30493b3 100755
--- a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt
+++ b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-03-27 14:35:46',
+ 'creation': '2012-04-13 11:56:17',
'docstatus': 0,
- 'modified': '2012-03-27 14:35:46',
+ 'modified': '2012-06-04 12:10:22',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -22,7 +22,7 @@
'section_style': u'Tray',
'server_code_error': u' ',
'show_in_menu': 0,
- 'version': 46
+ 'version': 1
},
# These values are common for all DocField
@@ -232,6 +232,17 @@
# DocField
{
'doctype': u'DocField',
+ 'fieldname': u'uom',
+ 'fieldtype': u'Link',
+ 'label': u'UOM',
+ 'options': u'UOM',
+ 'permlevel': 0,
+ 'print_hide': 1
+ },
+
+ # DocField
+ {
+ 'doctype': u'DocField',
'fieldname': u'brand',
'fieldtype': u'Data',
'hidden': 1,
@@ -345,4 +356,4 @@
'print_hide': 1,
'report_hide': 1
}
-]
+]
\ No newline at end of file
diff --git a/erpnext/home/page/desktop/desktop.js b/erpnext/home/page/desktop/desktop.js
index 7bc2aba..0db20fb 100644
--- a/erpnext/home/page/desktop/desktop.js
+++ b/erpnext/home/page/desktop/desktop.js
@@ -125,6 +125,7 @@
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/hr/doctype/attendance_control_panel/attendance_control_panel.py b/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.py
index 06a9a76..7726980 100644
--- a/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.py
+++ b/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.py
@@ -85,7 +85,7 @@
msgprint("Please create naming series for Attendance.\nGo to Setup--> Numbering Series.")
raise Exception
else:
- sr = series[0][0] or ''
+ sr = series[0] or ''
return {'fy':fy,'comp':comp,'sr':sr}
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index 909a8b2..552a4c8 100644
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -59,13 +59,6 @@
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 @@
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 @@
'description': self.doc.description
}
+ task_label = '[Task Updated] '
+ if self.doc.creation==self.doc.modified:
+ task_label = '[New Task] '
+
msg2="""<h2>%(name)s</h2>
- <p>This is a Notification for the task %(name)s that has been assigned to you
+ <p>This is a Notification for the task %(name)s that has been assigned / updated to you
by %(senders_name)s on %(opening_date)s</p>
<p><b>Subject:</b> %(subject)s </p>
<p><b>Project:</b> %(project)s</p>
@@ -128,11 +114,9 @@
<p><b>Expected Start Date:</b> %(exp_start_date)s</p>
<p><b>Expected End Date:</b> %(exp_end_date)s</p>
<p><b>Details:</b> %(description)s</p>
- <p>You will also recieve another reminder 2 days before the commencement of the task</p>
- <p>Good Luck!</p>
<p>(This notification is autogenerated)</p>""" % 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 8110719..eedb651 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',
@@ -117,6 +119,79 @@
# 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',
'fieldname': u'status',
'fieldtype': u'Select',
@@ -132,46 +207,6 @@
# 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'priority',
'fieldtype': u'Select',
'in_filter': 1,
@@ -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
@@ -226,73 +305,6 @@
# 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',
'fieldname': u'senders_name',
'fieldtype': u'Data',
'in_filter': 1,
@@ -319,6 +331,14 @@
# DocField
{
'doctype': u'DocField',
+ 'fieldname': u'column_break25',
+ 'fieldtype': u'Column Break',
+ 'permlevel': 0
+ },
+
+ # DocField
+ {
+ 'doctype': u'DocField',
'fieldname': u'senders_contact_no',
'fieldtype': u'Data',
'label': u'Senders Contact No',
@@ -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
{
@@ -458,32 +382,6 @@
# 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'exp_total_hrs',
'fieldtype': u'Data',
'label': u'Total Hours (Expected)',
@@ -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 e86aa03..81235a2 100644
--- a/erpnext/projects/page/projects_home/projects_home.html
+++ b/erpnext/projects/page/projects_home/projects_home.html
@@ -4,12 +4,12 @@
<h1>Projects</h1>
<hr>
<div style="width: 48%; float: left;">
- <h4><a href="#!List/Project">Project</a></h4>
- <p class="help">Project master</p>
- <br>
<h4><a href="#!List/Task">Task</a></h4>
<p class="help">Project activity / task</p>
<br>
+ <h4><a href="#!List/Project">Project</a></h4>
+ <p class="help">Project master</p>
+ <br>
<h4><a href="#!List/Timesheet">Timesheet</a></h4>
<p class="help">Timesheet for tasks</p>
</div>
diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index 2efe55d..9ea3c89 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -135,6 +135,7 @@
show_in_circle('open_support_tickets', r.message.open_support_tickets);
show_in_circle('things_todo', r.message.things_todo);
show_in_circle('todays_events', r.message.todays_events);
+ show_in_circle('open_tasks', r.message.open_tasks);
} else {
clearInterval(wn.updates.id);
diff --git a/erpnext/startup/startup.py b/erpnext/startup/startup.py
index 8bc13f8..f21f251 100644
--- a/erpnext/startup/startup.py
+++ b/erpnext/startup/startup.py
@@ -20,6 +20,15 @@
WHERE status = 'Open'""")
return open_support_tickets and cint(open_support_tickets[0][0]) or 0
+def get_open_tasks():
+ """
+ Returns a count of open tasks
+ """
+ from webnotes.utils import cint
+ return webnotes.conn.sql("""\
+ SELECT COUNT(*) FROM `tabTask`
+ WHERE status = 'Open'""")[0][0]
+
def get_things_todo():
"""
Returns a count of incomplete todos
@@ -51,4 +60,5 @@
'open_support_tickets': get_open_support_tickets(),
'things_todo': get_things_todo(),
'todays_events': get_todays_events(),
+ 'open_tasks': get_open_tasks()
}
diff --git a/public/js/all-app.js b/public/js/all-app.js
index fd47281..b9d63fe 100644
--- a/public/js/all-app.js
+++ b/public/js/all-app.js
@@ -2270,7 +2270,7 @@
href="http://erpnext.com" target="_blank"></a>')}
erpnext.update_messages=function(reset){if(inList(['Guest'],user)||!wn.session_alive){return;}
if(!reset){var set_messages=function(r){if(!r.exc){erpnext.toolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}}
-show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);}else{clearInterval(wn.updates.id);}}
+show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);show_in_circle('open_tasks',r.message.open_tasks);}else{clearInterval(wn.updates.id);}}
wn.call({method:'startup.startup.get_global_status_messages',callback:set_messages});}else{erpnext.toolbar.set_new_comments(0);$('#unread_messages').toggle(false);}}
erpnext.startup.set_periodic_updates=function(){wn.updates={};if(wn.updates.id){clearInterval(wn.updates.id);}
wn.updates.id=setInterval(erpnext.update_messages,60000);}
diff --git a/public/js/all-web.js b/public/js/all-web.js
index 98da2b6..d1344e6 100644
--- a/public/js/all-web.js
+++ b/public/js/all-web.js
@@ -724,7 +724,7 @@
href="http://erpnext.com" target="_blank"></a>')}
erpnext.update_messages=function(reset){if(inList(['Guest'],user)||!wn.session_alive){return;}
if(!reset){var set_messages=function(r){if(!r.exc){erpnext.toolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}}
-show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);}else{clearInterval(wn.updates.id);}}
+show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);show_in_circle('open_tasks',r.message.open_tasks);}else{clearInterval(wn.updates.id);}}
wn.call({method:'startup.startup.get_global_status_messages',callback:set_messages});}else{erpnext.toolbar.set_new_comments(0);$('#unread_messages').toggle(false);}}
erpnext.startup.set_periodic_updates=function(){wn.updates={};if(wn.updates.id){clearInterval(wn.updates.id);}
wn.updates.id=setInterval(erpnext.update_messages,60000);}