[fix] [wip] daily work summary
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 4a98470..1cede90 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -183,7 +183,8 @@
scheduler_events = {
"hourly": [
- "erpnext.controllers.recurring_document.create_recurring_documents"
+ "erpnext.controllers.recurring_document.create_recurring_documents",
+ 'erpnext.hr.doctype.daily_work_summary_settings.daily_work_summary_settings.trigger_emails'
],
"daily": [
"erpnext.stock.reorder_item.reorder_item",
diff --git a/erpnext/hr/doctype/daily_work_summary/__init__.py b/erpnext/hr/doctype/daily_work_summary/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary/__init__.py
diff --git a/erpnext/hr/doctype/daily_work_summary/daily_work_summary.js b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.js
new file mode 100644
index 0000000..1ac173a
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Daily Work Summary', {
+ refresh: function(frm) {
+
+ }
+});
diff --git a/erpnext/hr/doctype/daily_work_summary/daily_work_summary.json b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.json
new file mode 100644
index 0000000..281a6ab
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.json
@@ -0,0 +1,139 @@
+{
+ "allow_copy": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "beta": 0,
+ "creation": "2016-11-08 04:58:20.001780",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Document",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "company",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Company",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Company",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "responses",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Responses",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Daily Work Summary Response",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "in_dialog": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2016-11-08 06:03:21.121442",
+ "modified_by": "Administrator",
+ "module": "HR",
+ "name": "Daily Work Summary",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 0,
+ "delete": 0,
+ "email": 0,
+ "export": 0,
+ "if_owner": 0,
+ "import": 0,
+ "is_custom": 0,
+ "permlevel": 0,
+ "print": 0,
+ "read": 1,
+ "report": 0,
+ "role": "Employee",
+ "set_user_permissions": 0,
+ "share": 0,
+ "submit": 0,
+ "write": 0
+ },
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "if_owner": 0,
+ "import": 0,
+ "is_custom": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "HR User",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 1
+ }
+ ],
+ "quick_entry": 1,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary/daily_work_summary.py b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.py
new file mode 100644
index 0000000..d3e92e9
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.py
@@ -0,0 +1,45 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+from frappe import _
+
+class DailyWorkSummary(Document):
+ def send_mails(self, settings):
+ '''Send emails to get daily work summary to all employees'''
+ frappe.sendmail(recipients = self.get_employee_emails(), message = settings.message,
+ subject = settings.subject, reference_doctype=self.doctype, reference_name=self.name)
+
+ def send_summary(self):
+ '''Send summary of all replies'''
+ settings = frappe.get_doc('Daily Work Summary Settings')
+
+ replies = frappe.get_doc('Communication', fields=['content', 'sender'],
+ filters=dict(reference_doctype=self.doctype, reference_name=self.name,
+ communication_type='Email', sent_or_received='Received'))
+
+ message = frappe.render_template(template, dict(replies=replies,
+ original_message=settings.message))
+
+ frappe.sendmail(recipients = self.get_employee_emails(), message = message,
+ subject = _('Daily Work Summary for {0}').format(self.company),
+ reference_doctype=self.doctype, reference_name=self.name)
+
+ def get_employee_emails(self):
+ return filter(None, [d.user_id for d in
+ frappe.get_all('Employee', fields=['user_id'],
+ filters={'status': 'Active', 'company': self.company})])
+
+template = '''
+<p>Summary of replies:</p>
+
+{% for reply in replies %}
+<h5>{{ frappe.db.get_value("Employee", reply.sender, "full_name") }}<h5>
+<div style="padding-bottom: 20px">
+ {{ reply.content.split(original_message)[0].strip() }}
+</div>
+{% endfor %}
+'''
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py b/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py
new file mode 100644
index 0000000..7cc2bc2
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import unittest
+import frappe.utils
+
+# test_records = frappe.get_test_records('Daily Work Summary')
+
+class TestDailyWorkSummary(unittest.TestCase):
+ def test_email_trigger(self):
+ settings, employees, emails = self.setup_and_prepare_test(frappe.utils.nowtime().split(':')[0])
+
+ for d in employees:
+ # check that email is sent to this employee
+ self.assertTrue(d.user_id in [d.recipient for d in emails
+ if settings.subject in d.message])
+
+ def test_email_trigger_failed(self):
+ hour = '00'
+ if frappe.utils.nowtime().split(':')[0]=='00':
+ hour = '01'
+
+ settings, employees, emails = self.setup_and_prepare_test(hour)
+
+ for d in employees:
+ # check that email is sent to this employee
+ self.assertFalse(d.user_id in [d.recipient for d in emails
+ if settings.subject in d.message])
+
+ def setup_and_prepare_test(self, hour):
+ frappe.db.sql('delete from `tabEmail Queue`')
+
+ # setup email to trigger at this our
+ settings = frappe.get_doc('Daily Work Summary Settings')
+ settings.companies = []
+
+ settings.append('companies', dict(company='_Test Company',
+ send_emails_at=hour + ':00'))
+ settings.test_subject = 'this is a subject for testing summary emails'
+ settings.save()
+
+ from erpnext.hr.doctype.daily_work_summary_settings.daily_work_summary_settings \
+ import trigger_emails
+ trigger_emails()
+
+ # check if emails are created
+ employees = frappe.get_all('Employee', fields = ['user_id'],
+ filters=dict(company='_Test Company', status='Active'))
+
+ emails = frappe.get_all('Email Queue', fields=['recipient', 'message'])
+
+ return settings, employees, emails
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary_response/__init__.py b/erpnext/hr/doctype/daily_work_summary_response/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_response/__init__.py
diff --git a/erpnext/hr/doctype/daily_work_summary_response/daily_work_summary_response.json b/erpnext/hr/doctype/daily_work_summary_response/daily_work_summary_response.json
new file mode 100644
index 0000000..b4295d4
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_response/daily_work_summary_response.json
@@ -0,0 +1,95 @@
+{
+ "allow_copy": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "beta": 0,
+ "creation": "2016-11-08 04:56:39.588230",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Document",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "employee",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Employee",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Employee",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "response",
+ "fieldtype": "Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Response",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "in_dialog": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 1,
+ "max_attachments": 0,
+ "modified": "2016-11-08 04:56:39.588230",
+ "modified_by": "Administrator",
+ "module": "HR",
+ "name": "Daily Work Summary Response",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [],
+ "quick_entry": 1,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary_response/daily_work_summary_response.py b/erpnext/hr/doctype/daily_work_summary_response/daily_work_summary_response.py
new file mode 100644
index 0000000..739eaa7
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_response/daily_work_summary_response.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class DailyWorkSummaryResponse(Document):
+ pass
diff --git a/erpnext/hr/doctype/daily_work_summary_settings/__init__.py b/erpnext/hr/doctype/daily_work_summary_settings/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_settings/__init__.py
diff --git a/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.js b/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.js
new file mode 100644
index 0000000..cb0b608
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.js
@@ -0,0 +1,7 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Daily Work Summary Settings', {
+ onload: function(frm) {
+ }
+});
diff --git a/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.json b/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.json
new file mode 100644
index 0000000..00e90ea
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.json
@@ -0,0 +1,203 @@
+{
+ "allow_copy": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "beta": 0,
+ "creation": "2016-11-08 04:55:08.231715",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Document",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "select_companies",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Select Companies",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "companies",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Companies",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Daily Work Summary Settings Company",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "message_section",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Message",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "default": "What did you work on today?",
+ "fieldname": "subject",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Subject",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "default": "<p>Please share what did you do today. If you reply by midnight, your response will be recorded!</p>",
+ "fieldname": "message",
+ "fieldtype": "Text Editor",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Message",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "in_dialog": 0,
+ "is_submittable": 0,
+ "issingle": 1,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2016-11-08 05:48:53.068957",
+ "modified_by": "Administrator",
+ "module": "HR",
+ "name": "Daily Work Summary Settings",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 0,
+ "if_owner": 0,
+ "import": 0,
+ "is_custom": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 0,
+ "role": "HR Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 1
+ }
+ ],
+ "quick_entry": 1,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.py b/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.py
new file mode 100644
index 0000000..d36f348
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+import frappe.utils
+
+class DailyWorkSummarySettings(Document):
+ pass
+
+def trigger_emails():
+ settings = frappe.get_doc('Daily Work Summary Settings')
+ for d in settings.companies:
+ # if current hour
+ if frappe.utils.nowtime().split(':')[0] == d.send_emails_at.split(':')[0]:
+ work_summary = frappe.get_doc(dict(doctype='Daily Work Summary',
+ company=d.company)).insert()
+ work_summary.send_mails(settings)
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary_settings_company/__init__.py b/erpnext/hr/doctype/daily_work_summary_settings_company/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_settings_company/__init__.py
diff --git a/erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.json b/erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.json
new file mode 100644
index 0000000..be27fa3
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.json
@@ -0,0 +1,97 @@
+{
+ "allow_copy": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "beta": 0,
+ "creation": "2016-11-08 05:44:02.502527",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "company",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Company",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Company",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "default": "17:00",
+ "fieldname": "send_emails_at",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Send Emails At",
+ "length": 0,
+ "no_copy": 0,
+ "options": "00:00\n01:00\n02:00\n03:00\n04:00\n05:00\n06:00\n07:00\n08:00\n09:00\n10:00\n11:00\n12:00\n13:00\n14:00\n15:00\n16:00\n17:00\n18:00\n19:00\n20:00\n21:00\n22:00\n23:00",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "in_dialog": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 1,
+ "max_attachments": 0,
+ "modified": "2016-11-08 05:46:09.198788",
+ "modified_by": "Administrator",
+ "module": "HR",
+ "name": "Daily Work Summary Settings Company",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [],
+ "quick_entry": 1,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.py b/erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.py
new file mode 100644
index 0000000..cd051b4
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class DailyWorkSummarySettingsCompany(Document):
+ pass
diff --git a/erpnext/patches/v7_1/set_prefered_contact_email.py b/erpnext/patches/v7_1/set_prefered_contact_email.py
index d083811..3b68e22 100644
--- a/erpnext/patches/v7_1/set_prefered_contact_email.py
+++ b/erpnext/patches/v7_1/set_prefered_contact_email.py
@@ -2,6 +2,7 @@
import frappe
def execute():
+ frappe.reload_doctype('User')
for d in frappe.get_all("Employee"):
employee = frappe.get_doc("Employee", d.name)
if employee.company_email:
@@ -13,5 +14,4 @@
elif employee.user_id:
employee.prefered_contact_email = "User ID"
employee.prefered_email = employee.user_id
-
- employee.db_update()
\ No newline at end of file
+ employee.db_update()
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index 9971baa..7b71675 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -27,7 +27,7 @@
def set_single_defaults():
for dt in ('Accounts Settings', 'Print Settings', 'HR Settings', 'Buying Settings',
- 'Selling Settings', 'Stock Settings'):
+ 'Selling Settings', 'Stock Settings', 'Daily Work Summary Settings'):
default_values = frappe.db.sql("""select fieldname, `default` from `tabDocField`
where parent=%s""", dt)
if default_values: