From cb144bfcd45935142e40a98a0246f96e9adfc494 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 31 Mar 2016 14:27:35 +0530 Subject: [PATCH] [cleanup] projects --- .../leave_application/leave_application.py | 2 +- erpnext/projects/doctype/project/project.js | 99 ++++++++++--------- erpnext/projects/doctype/project/project.json | 5 +- erpnext/projects/doctype/project/project.py | 8 +- .../includes/{ => projects}/project_row.html | 4 +- .../templates/includes/projects/timeline.html | 17 ---- erpnext/templates/pages/projects.html | 2 +- 7 files changed, 62 insertions(+), 75 deletions(-) rename erpnext/templates/includes/{ => projects}/project_row.html (86%) delete mode 100644 erpnext/templates/includes/projects/timeline.html diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py index 6882034b0d..fee39aad3c 100755 --- a/erpnext/hr/doctype/leave_application/leave_application.py +++ b/erpnext/hr/doctype/leave_application/leave_application.py @@ -239,7 +239,7 @@ class LeaveApplication(Document): def notify(self, args): args = frappe._dict(args) - from frappe.desk.page.messages.messages import post + from frappe.desk.page.chat.chat import post post(**{"txt": args.message, "contact": args.message_to, "subject": args.subject, "notify": cint(self.follow_via_email)}) diff --git a/erpnext/projects/doctype/project/project.js b/erpnext/projects/doctype/project/project.js index d190f348b1..e4ac8647bf 100644 --- a/erpnext/projects/doctype/project/project.js +++ b/erpnext/projects/doctype/project/project.js @@ -11,6 +11,57 @@ frappe.ui.form.on("Project", { "project_name": frm.doc.name } } + + frm.set_query('customer', 'erpnext.controllers.queries.customer_query'); + + // sales order + frm.set_query('sales_order', function() { + var filters = { + 'project': ["in", frm.doc.__islocal ? [""] : [frm.doc.name, ""]] + }; + + if (frm.doc.customer) { + filters["customer"] = frm.doc.customer; + } + + return { + filters: filters + } + }); + }, + refresh: function(frm) { + if(frm.doc.__islocal) { + frm.web_link && frm.web_link.remove(); + } else { + frm.add_web_link("/projects?project=" + encodeURIComponent(frm.doc.name)); + + if(frappe.model.can_read("Task")) { + frm.add_custom_button(__("Gantt Chart"), function() { + frappe.route_options = {"project": frm.doc.name, + "start": frm.doc.expected_start_date, "end": frm.doc.expected_end_date}; + frappe.set_route("Gantt", "Task"); + }, __("View"), true); + frm.add_custom_button(__("Tasks"), function() { + frappe.route_options = {"project": frm.doc.name} + frappe.set_route("List", "Task"); + }, __("View"), true); + } + + if(frappe.model.can_read("Time Log")) { + frm.add_custom_button(__("Time Logs"), function() { + frappe.route_options = {"project": frm.doc.name} + frappe.set_route("List", "Time Log"); + }, __("View"), true); + } + + if(frappe.model.can_read("Expense Claim")) { + frm.add_custom_button(__("Expense Claims"), function() { + frappe.route_options = {"project": frm.doc.name} + frappe.set_route("List", "Expense Claim"); + }, __("View"), true); + } + } + } }); @@ -23,51 +74,3 @@ frappe.ui.form.on("Project Task", "edit_task", function(frm, doctype, name) { } }) -// show tasks -cur_frm.cscript.refresh = function(doc) { - if(!doc.__islocal) { - if(frappe.model.can_read("Task")) { - cur_frm.add_custom_button(__("Gantt Chart"), function() { - frappe.route_options = {"project": doc.name, "start": doc.expected_start_date, "end": doc.expected_end_date}; - frappe.set_route("Gantt", "Task"); - }, __("View"), true); - cur_frm.add_custom_button(__("Tasks"), function() { - frappe.route_options = {"project": doc.name} - frappe.set_route("List", "Task"); - }, __("View"), true); - } - if(frappe.model.can_read("Time Log")) { - cur_frm.add_custom_button(__("Time Logs"), function() { - frappe.route_options = {"project": doc.name} - frappe.set_route("List", "Time Log"); - }, __("View"), true); - } - - if(frappe.model.can_read("Expense Claim")) { - cur_frm.add_custom_button(__("Expense Claims"), function() { - frappe.route_options = {"project": doc.name} - frappe.set_route("List", "Expense Claim"); - }, __("View"), true); - } - } -} - -cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) { - return{ - query: "erpnext.controllers.queries.customer_query" - } -} - -cur_frm.fields_dict['sales_order'].get_query = function(doc) { - var filters = { - 'project': ["in", doc.__islocal ? [""] : [doc.name, ""]] - }; - - if (doc.customer) { - filters["customer"] = doc.customer; - } - - return { - filters: filters - } -} diff --git a/erpnext/projects/doctype/project/project.json b/erpnext/projects/doctype/project/project.json index 34bb36f320..ada59092c8 100644 --- a/erpnext/projects/doctype/project/project.json +++ b/erpnext/projects/doctype/project/project.json @@ -352,6 +352,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "description": "Project will be accessible on the website to these users", "fieldname": "users", "fieldtype": "Table", "hidden": 0, @@ -965,14 +966,14 @@ "hide_heading": 0, "hide_toolbar": 0, "icon": "icon-puzzle-piece", - "idx": 1, + "idx": 24, "in_create": 0, "in_dialog": 0, "is_submittable": 0, "issingle": 0, "istable": 0, "max_attachments": 4, - "modified": "2016-03-25 06:46:29.485193", + "modified": "2016-03-31 01:34:05.703925", "modified_by": "Administrator", "module": "Projects", "name": "Project", diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py index edfd964f0c..90a2cb289c 100644 --- a/erpnext/projects/doctype/project/project.py +++ b/erpnext/projects/doctype/project/project.py @@ -37,7 +37,7 @@ class Project(Document): self.sync_tasks() self.tasks = [] self.send_welcome_email() - + def validate_dates(self): if self.expected_start_date and self.expected_end_date: if getdate(self.expected_end_date) < getdate(self.expected_start_date): @@ -124,7 +124,7 @@ class Project(Document): from `tabPurchase Invoice Item` where project = %s and docstatus=1""", self.name) self.total_purchase_cost = total_purchase_cost and total_purchase_cost[0][0] or 0 - + def send_welcome_email(self): url = get_url("/project/{0}".format(self.name)) messages = ( @@ -143,7 +143,7 @@ class Project(Document): print user.welcome_email_sent frappe.sendmail(user.user, subject=_("Project Collaboration Invitation"), content=content.format(*messages), bulk=True) user.welcome_email_sent=1 - + def get_project_list(doctype, txt, filters, limit_start, limit_page_length=20): return frappe.db.sql('''select distinct project.* @@ -163,7 +163,7 @@ def get_list_context(context=None): return { "title": _("My Projects"), "get_list": get_project_list, - "row_template": "templates/includes/project_row.html" + "row_template": "templates/includes/projects/project_row.html" } @frappe.whitelist() diff --git a/erpnext/templates/includes/project_row.html b/erpnext/templates/includes/projects/project_row.html similarity index 86% rename from erpnext/templates/includes/project_row.html rename to erpnext/templates/includes/projects/project_row.html index fc264c1051..fcd0e229f8 100644 --- a/erpnext/templates/includes/project_row.html +++ b/erpnext/templates/includes/projects/project_row.html @@ -3,13 +3,13 @@
- + {{ doc.name }}
{% if doc.percent_complete %}
-
diff --git a/erpnext/templates/includes/projects/timeline.html b/erpnext/templates/includes/projects/timeline.html deleted file mode 100644 index 605404bb9f..0000000000 --- a/erpnext/templates/includes/projects/timeline.html +++ /dev/null @@ -1,17 +0,0 @@ -{% for timeline in doc.timelines %} -
-
-
-
-
- - - {{timeline.reference_name}} {{timeline.subject }} - - - {{ frappe.utils.pretty_date(timeline.creation) }} - -
-
-
-{% endfor %} \ No newline at end of file diff --git a/erpnext/templates/pages/projects.html b/erpnext/templates/pages/projects.html index 0663dbf304..6ecdfb6bb6 100644 --- a/erpnext/templates/pages/projects.html +++ b/erpnext/templates/pages/projects.html @@ -38,7 +38,7 @@
{% if doc.percent_complete %}
-