From bb370f3b6ac5176240fe5661919027eba85cdf76 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 27 Aug 2014 16:57:13 +0530 Subject: [PATCH] HR - Leave Approver and Expense Approver fields changed to Link Fields, better default permissions --- erpnext/hr/doctype/employee/employee.js | 21 +- erpnext/hr/doctype/employee/employee.json | 13 +- erpnext/hr/doctype/employee/employee.py | 10 - .../employee_leave_approver.json | 7 +- .../hr/doctype/expense_claim/expense_claim.js | 14 +- .../doctype/expense_claim/expense_claim.json | 9 +- .../expense_claim/test_expense_claim.py | 10 + .../doctype/expense_claim/test_records.json | 1 + .../leave_application/leave_application.js | 19 +- .../leave_application/leave_application.json | 459 +++++++++--------- .../leave_application/leave_application.py | 3 +- .../test_leave_application.py | 2 + .../leave_application/test_records.json | 1 + .../hr/doctype/salary_slip/salary_slip.json | 4 +- erpnext/hr/utils.py | 18 - 15 files changed, 285 insertions(+), 306 deletions(-) create mode 100644 erpnext/hr/doctype/expense_claim/test_expense_claim.py create mode 100644 erpnext/hr/doctype/expense_claim/test_records.json create mode 100644 erpnext/hr/doctype/leave_application/test_records.json diff --git a/erpnext/hr/doctype/employee/employee.js b/erpnext/hr/doctype/employee/employee.js index 0934bc592e..b068bdea6f 100644 --- a/erpnext/hr/doctype/employee/employee.js +++ b/erpnext/hr/doctype/employee/employee.js @@ -11,8 +11,12 @@ erpnext.hr.EmployeeController = frappe.ui.form.Controller.extend({ }, onload: function() { - this.setup_leave_approver_select(); if(this.frm.doc.__islocal) this.frm.set_value("employee_name", ""); + this.frm.set_query("leave_approver", "employee_leave_approvers", function() { + return { + filters: [["UserRole", "role", "=", "Leave Approver"]] + } + }); }, refresh: function() { @@ -25,21 +29,6 @@ erpnext.hr.EmployeeController = frappe.ui.form.Controller.extend({ } }, - setup_leave_approver_select: function() { - var me = this; - return this.frm.call({ - method: "erpnext.hr.utils.get_leave_approver_list", - callback: function(r) { - var df = frappe.meta.get_docfield("Employee Leave Approver", "leave_approver", - me.frm.doc.name); - df.options = $.map(r.message, function(user) { - return {value: user, label: frappe.user_info(user).fullname}; - }); - me.frm.fields_dict.employee_leave_approvers.refresh(); - } - }); - }, - date_of_birth: function() { return cur_frm.call({ method: "get_retirement_date", diff --git a/erpnext/hr/doctype/employee/employee.json b/erpnext/hr/doctype/employee/employee.json index 254e76344d..7be1c40afa 100644 --- a/erpnext/hr/doctype/employee/employee.json +++ b/erpnext/hr/doctype/employee/employee.json @@ -1,5 +1,5 @@ { - "allow_import": 1, + "allow_import": 1, "allow_rename": 1, "autoname": "naming_series:", "creation": "2013-03-07 09:04:18", @@ -172,6 +172,7 @@ { "fieldname": "employment_type", "fieldtype": "Link", + "ignore_user_permissions": 1, "in_filter": 1, "in_list_view": 1, "label": "Employment Type", @@ -185,6 +186,7 @@ "description": "Applicable Holiday List", "fieldname": "holiday_list", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Holiday List", "oldfieldname": "holiday_list", "oldfieldtype": "Link", @@ -672,7 +674,7 @@ ], "icon": "icon-user", "idx": 1, - "modified": "2014-05-27 07:34:49.337586", + "modified": "2014-08-27 05:55:00.514660", "modified_by": "Administrator", "module": "HR", "name": "Employee", @@ -704,6 +706,7 @@ "report": 1, "role": "HR User", "submit": 0, + "user_permission_doctypes": "[\"Branch\",\"Company\",\"Department\",\"Designation\"]", "write": 1 }, { @@ -719,12 +722,6 @@ "set_user_permissions": 1, "submit": 0, "write": 1 - }, - { - "apply_user_permissions": 1, - "permlevel": 0, - "read": 1, - "role": "Leave Approver" } ], "search_fields": "employee_name", diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py index 01ab91db27..5d4beaf75d 100644 --- a/erpnext/hr/doctype/employee/employee.py +++ b/erpnext/hr/doctype/employee/employee.py @@ -50,21 +50,11 @@ class Employee(Document): self.update_user_permissions() self.update_dob_event() - self.update_leave_approver_user_permissions() def update_user_permissions(self): frappe.permissions.add_user_permission("Employee", self.name, self.user_id) frappe.permissions.set_user_permission_if_allowed("Company", self.company, self.user_id) - def update_leave_approver_user_permissions(self): - """add employee user permission for leave approver""" - employee_leave_approvers = [d.leave_approver for d in self.get("employee_leave_approvers")] - if self.reports_to and self.reports_to not in employee_leave_approvers: - employee_leave_approvers.append(frappe.db.get_value("Employee", self.reports_to, "user_id")) - - for user in employee_leave_approvers: - frappe.permissions.add_user_permission("Employee", self.name, user) - def update_user(self): # add employee role if missing user = frappe.get_doc("User", self.user_id) diff --git a/erpnext/hr/doctype/employee_leave_approver/employee_leave_approver.json b/erpnext/hr/doctype/employee_leave_approver/employee_leave_approver.json index 0302bc95fa..76335fb971 100644 --- a/erpnext/hr/doctype/employee_leave_approver/employee_leave_approver.json +++ b/erpnext/hr/doctype/employee_leave_approver/employee_leave_approver.json @@ -8,10 +8,11 @@ "fields": [ { "fieldname": "leave_approver", - "fieldtype": "Select", + "fieldtype": "Link", + "ignore_user_permissions": 1, "in_list_view": 1, "label": "Leave Approver", - "options": "[Select]", + "options": "User", "permlevel": 0, "print_hide": 1, "reqd": 1, @@ -20,7 +21,7 @@ ], "idx": 1, "istable": 1, - "modified": "2014-05-15 19:32:14.134420", + "modified": "2014-08-27 06:21:36.887205", "modified_by": "Administrator", "module": "HR", "name": "Employee Leave Approver", diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js index 4ef2efc722..70984458f7 100644 --- a/erpnext/hr/doctype/expense_claim/expense_claim.js +++ b/erpnext/hr/doctype/expense_claim/expense_claim.js @@ -57,14 +57,12 @@ cur_frm.cscript.onload = function(doc,cdt,cdn) { return{ query: "erpnext.controllers.queries.employee_query" } - } - var exp_approver = doc.exp_approver; - return cur_frm.call({ - method: "erpnext.hr.utils.get_expense_approver_list", - callback: function(r) { - cur_frm.set_df_property("exp_approver", "options", r.message); - if(exp_approver) cur_frm.set_value("exp_approver", exp_approver); - } + }; + + cur_frm.set_query("exp_approver", function() { + return { + filters: [["UserRole", "role", "=", "Expense Approver"]] + }; }); } diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.json b/erpnext/hr/doctype/expense_claim/expense_claim.json index c13710af3f..15ef03ed17 100644 --- a/erpnext/hr/doctype/expense_claim/expense_claim.json +++ b/erpnext/hr/doctype/expense_claim/expense_claim.json @@ -20,11 +20,13 @@ "search_index": 1 }, { + "description": "A user with \"Expense Approver\" role", "fieldname": "exp_approver", - "fieldtype": "Select", + "fieldtype": "Link", "label": "Approver", "oldfieldname": "exp_approver", "oldfieldtype": "Select", + "options": "User", "permlevel": 0, "width": "160px" }, @@ -188,7 +190,7 @@ "icon": "icon-money", "idx": 1, "is_submittable": 1, - "modified": "2014-06-23 07:55:48.580747", + "modified": "2014-08-27 07:08:48.454580", "modified_by": "Administrator", "module": "HR", "name": "Expense Claim", @@ -204,6 +206,7 @@ "read": 1, "report": 1, "role": "Employee", + "user_permission_doctypes": "[\"Company\",\"Employee\",\"Expense Claim\",\"Fiscal Year\"]", "write": 1 }, { @@ -219,6 +222,7 @@ "report": 1, "role": "Expense Approver", "submit": 1, + "user_permission_doctypes": "[\"Expense Claim\",\"User\"]", "write": 1 }, { @@ -234,6 +238,7 @@ "report": 1, "role": "HR User", "submit": 1, + "user_permission_doctypes": "[\"Company\",\"Expense Claim\",\"Fiscal Year\"]", "write": 1 } ], diff --git a/erpnext/hr/doctype/expense_claim/test_expense_claim.py b/erpnext/hr/doctype/expense_claim/test_expense_claim.py new file mode 100644 index 0000000000..5a55cbfa4e --- /dev/null +++ b/erpnext/hr/doctype/expense_claim/test_expense_claim.py @@ -0,0 +1,10 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and Contributors +# See license.txt + +import frappe +import unittest + +test_records = frappe.get_test_records('Expense Claim') + +class TestExpenseClaim(unittest.TestCase): + pass diff --git a/erpnext/hr/doctype/expense_claim/test_records.json b/erpnext/hr/doctype/expense_claim/test_records.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/erpnext/hr/doctype/expense_claim/test_records.json @@ -0,0 +1 @@ +[] diff --git a/erpnext/hr/doctype/leave_application/leave_application.js b/erpnext/hr/doctype/leave_application/leave_application.js index acb91c6bbf..0d8b37e9a4 100755 --- a/erpnext/hr/doctype/leave_application/leave_application.js +++ b/erpnext/hr/doctype/leave_application/leave_application.js @@ -11,20 +11,13 @@ cur_frm.cscript.onload = function(doc, dt, dn) { cur_frm.cscript.calculate_total_days(doc, dt, dn); } - var leave_approver = doc.leave_approver; - return cur_frm.call({ - method: "erpnext.hr.utils.get_leave_approver_list", - callback: function(r) { - cur_frm.set_df_property("leave_approver", "options", $.map(r.message, - function(user) { - return {value: user, label: frappe.user_info(user).fullname}; - })); - - if(leave_approver) cur_frm.set_value("leave_approver", leave_approver); - - cur_frm.cscript.get_leave_balance(cur_frm.doc); - } + cur_frm.set_query("leave_approver", function() { + return { + filters: [["UserRole", "role", "=", "Leave Approver"]] + }; }); + + cur_frm.cscript.get_leave_balance(cur_frm.doc); } cur_frm.cscript.refresh = function(doc, dt, dn) { diff --git a/erpnext/hr/doctype/leave_application/leave_application.json b/erpnext/hr/doctype/leave_application/leave_application.json index 959f30d4e3..9818150029 100644 --- a/erpnext/hr/doctype/leave_application/leave_application.json +++ b/erpnext/hr/doctype/leave_application/leave_application.json @@ -1,285 +1,294 @@ { - "autoname": "LAP/.#####", - "creation": "2013-02-20 11:18:11", - "description": "Apply / Approve Leaves", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Transaction", + "autoname": "LAP/.#####", + "creation": "2013-02-20 11:18:11", + "description": "Apply / Approve Leaves", + "docstatus": 0, + "doctype": "DocType", + "document_type": "Transaction", "fields": [ { - "default": "Open", - "fieldname": "status", - "fieldtype": "Select", - "in_list_view": 1, - "label": "Status", - "no_copy": 1, - "options": "Open\nApproved\nRejected", + "default": "Open", + "fieldname": "status", + "fieldtype": "Select", + "in_list_view": 1, + "label": "Status", + "no_copy": 1, + "options": "Open\nApproved\nRejected", "permlevel": 1 - }, + }, { - "description": "Leave can be approved by users with Role, \"Leave Approver\"", - "fieldname": "leave_approver", - "fieldtype": "Select", - "label": "Leave Approver", - "options": "[Select]", + "description": "Leave can be approved by users with Role, \"Leave Approver\"", + "fieldname": "leave_approver", + "fieldtype": "Link", + "label": "Leave Approver", + "options": "User", "permlevel": 0 - }, + }, { - "fieldname": "leave_type", - "fieldtype": "Link", - "in_filter": 1, - "in_list_view": 1, - "label": "Leave Type", - "options": "Leave Type", - "permlevel": 0, - "reqd": 1, + "fieldname": "leave_type", + "fieldtype": "Link", + "ignore_user_permissions": 1, + "in_filter": 1, + "in_list_view": 1, + "label": "Leave Type", + "options": "Leave Type", + "permlevel": 0, + "reqd": 1, "search_index": 1 - }, + }, { - "fieldname": "from_date", - "fieldtype": "Date", - "in_list_view": 1, - "label": "From Date", - "permlevel": 0, - "reqd": 1, + "fieldname": "from_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "From Date", + "permlevel": 0, + "reqd": 1, "search_index": 1 - }, + }, { - "fieldname": "to_date", - "fieldtype": "Date", - "in_list_view": 0, - "label": "To Date", - "permlevel": 0, - "reqd": 1, + "fieldname": "to_date", + "fieldtype": "Date", + "in_list_view": 0, + "label": "To Date", + "permlevel": 0, + "reqd": 1, "search_index": 1 - }, + }, { - "fieldname": "half_day", - "fieldtype": "Check", - "label": "Half Day", + "fieldname": "half_day", + "fieldtype": "Check", + "label": "Half Day", "permlevel": 0 - }, + }, { - "fieldname": "column_break1", - "fieldtype": "Column Break", - "permlevel": 0, - "print_width": "50%", + "fieldname": "column_break1", + "fieldtype": "Column Break", + "permlevel": 0, + "print_width": "50%", "width": "50%" - }, + }, { - "fieldname": "description", - "fieldtype": "Small Text", - "label": "Reason", + "fieldname": "description", + "fieldtype": "Small Text", + "label": "Reason", "permlevel": 0 - }, + }, { - "fieldname": "employee", - "fieldtype": "Link", - "in_filter": 1, - "label": "Employee", - "options": "Employee", - "permlevel": 0, - "reqd": 1, + "fieldname": "employee", + "fieldtype": "Link", + "in_filter": 1, + "label": "Employee", + "options": "Employee", + "permlevel": 0, + "reqd": 1, "search_index": 1 - }, + }, { - "fieldname": "employee_name", - "fieldtype": "Data", - "in_filter": 1, - "in_list_view": 1, - "label": "Employee Name", - "permlevel": 0, - "read_only": 1, + "fieldname": "employee_name", + "fieldtype": "Data", + "in_filter": 1, + "in_list_view": 1, + "label": "Employee Name", + "permlevel": 0, + "read_only": 1, "search_index": 0 - }, + }, { - "fieldname": "leave_balance", - "fieldtype": "Float", - "label": "Leave Balance Before Application", - "no_copy": 1, - "permlevel": 0, + "fieldname": "leave_balance", + "fieldtype": "Float", + "label": "Leave Balance Before Application", + "no_copy": 1, + "permlevel": 0, "read_only": 1 - }, + }, { - "fieldname": "total_leave_days", - "fieldtype": "Float", - "label": "Total Leave Days", - "no_copy": 1, - "permlevel": 0, + "fieldname": "total_leave_days", + "fieldtype": "Float", + "label": "Total Leave Days", + "no_copy": 1, + "permlevel": 0, "read_only": 1 - }, + }, { - "fieldname": "sb10", - "fieldtype": "Section Break", - "label": "More Info", + "fieldname": "sb10", + "fieldtype": "Section Break", + "label": "More Info", "permlevel": 0 - }, + }, { - "allow_on_submit": 1, - "default": "1", - "fieldname": "follow_via_email", - "fieldtype": "Check", - "label": "Follow via Email", - "permlevel": 0, + "allow_on_submit": 1, + "default": "1", + "fieldname": "follow_via_email", + "fieldtype": "Check", + "label": "Follow via Email", + "permlevel": 0, "print_hide": 1 - }, + }, { - "default": "Today", - "fieldname": "posting_date", - "fieldtype": "Date", - "label": "Posting Date", - "no_copy": 1, - "permlevel": 0, + "default": "Today", + "fieldname": "posting_date", + "fieldtype": "Date", + "label": "Posting Date", + "no_copy": 1, + "permlevel": 0, "reqd": 1 - }, + }, { - "fieldname": "fiscal_year", - "fieldtype": "Link", - "in_filter": 1, - "label": "Fiscal Year", - "options": "Fiscal Year", - "permlevel": 0, - "read_only": 0, - "reqd": 1, + "fieldname": "fiscal_year", + "fieldtype": "Link", + "in_filter": 1, + "label": "Fiscal Year", + "options": "Fiscal Year", + "permlevel": 0, + "read_only": 0, + "reqd": 1, "search_index": 0 - }, + }, { - "fieldname": "column_break_17", - "fieldtype": "Column Break", + "fieldname": "column_break_17", + "fieldtype": "Column Break", "permlevel": 0 - }, + }, { - "fieldname": "company", - "fieldtype": "Link", - "label": "Company", - "options": "Company", - "permlevel": 0, + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company", + "permlevel": 0, "reqd": 1 - }, + }, { - "fieldname": "letter_head", - "fieldtype": "Link", - "label": "Letter Head", - "options": "Letter Head", - "permlevel": 0, - "print_hide": 1, + "fieldname": "letter_head", + "fieldtype": "Link", + "ignore_user_permissions": 1, + "label": "Letter Head", + "options": "Letter Head", + "permlevel": 0, + "print_hide": 1, "read_only": 0 - }, + }, { - "fieldname": "amended_from", - "fieldtype": "Link", - "ignore_user_permissions": 1, - "label": "Amended From", - "no_copy": 1, - "options": "Leave Application", - "permlevel": 0, - "print_hide": 1, + "fieldname": "amended_from", + "fieldtype": "Link", + "ignore_user_permissions": 1, + "label": "Amended From", + "no_copy": 1, + "options": "Leave Application", + "permlevel": 0, + "print_hide": 1, "read_only": 1 } - ], - "icon": "icon-calendar", - "idx": 1, - "is_submittable": 1, - "max_attachments": 3, - "modified": "2014-06-06 05:06:44.594229", - "modified_by": "Administrator", - "module": "HR", - "name": "Leave Application", - "owner": "Administrator", + ], + "icon": "icon-calendar", + "idx": 1, + "is_submittable": 1, + "max_attachments": 3, + "modified": "2014-08-28 03:32:38.865202", + "modified_by": "Administrator", + "module": "HR", + "name": "Leave Application", + "owner": "Administrator", "permissions": [ { - "apply_user_permissions": 1, - "create": 1, - "delete": 0, - "email": 1, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Employee", + "apply_user_permissions": 1, + "create": 1, + "delete": 0, + "email": 1, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Employee", + "user_permission_doctypes": "[\"Company\",\"Employee\",\"Fiscal Year\",\"Leave Application\"]", "write": 1 - }, + }, { - "amend": 1, - "cancel": 1, - "create": 1, - "email": 1, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "HR Manager", - "set_user_permissions": 1, - "submit": 1, + "amend": 1, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "HR Manager", + "set_user_permissions": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "permlevel": 1, - "read": 1, - "role": "All", + "amend": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "permlevel": 1, + "read": 1, + "role": "All", "submit": 0 - }, + }, { - "amend": 1, - "apply_user_permissions": 1, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "HR User", - "set_user_permissions": 1, - "submit": 1, + "amend": 1, + "apply_user_permissions": 1, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "HR User", + "set_user_permissions": 1, + "submit": 1, + "user_permission_doctypes": "[\"Company\"]", "write": 1 - }, + }, { - "amend": 1, - "apply_user_permissions": 1, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 1, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Leave Approver", - "submit": 1, + "amend": 1, + "apply_user_permissions": 1, + "cancel": 0, + "create": 0, + "delete": 0, + "email": 1, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Leave Approver", + "submit": 1, + "user_permission_doctypes": "[\"Company\",\"User\"]", "write": 1 - }, + }, { - "amend": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "permlevel": 1, - "read": 1, - "report": 1, - "role": "HR User", - "submit": 0, + "amend": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "permlevel": 1, + "read": 1, + "report": 1, + "role": "HR User", + "submit": 0, "write": 1 - }, + }, { - "amend": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "permlevel": 1, - "read": 1, - "report": 1, - "role": "Leave Approver", - "submit": 0, + "amend": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "permlevel": 1, + "read": 1, + "report": 1, + "role": "Leave Approver", + "submit": 0, "write": 1 } - ], - "search_fields": "employee,employee_name,leave_type,from_date,to_date,total_leave_days,fiscal_year", - "sort_field": "modified", + ], + "search_fields": "employee,employee_name,leave_type,from_date,to_date,total_leave_days,fiscal_year", + "sort_field": "modified", "sort_order": "DESC" -} +} \ No newline at end of file diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py index 3222a0c216..32c4443261 100755 --- a/erpnext/hr/doctype/leave_application/leave_application.py +++ b/erpnext/hr/doctype/leave_application/leave_application.py @@ -155,8 +155,7 @@ class LeaveApplication(Document): def validate_leave_approver(self): employee = frappe.get_doc("Employee", self.employee) - leave_approvers = [l.leave_approver for l in - employee.get("employee_leave_approvers")] + leave_approvers = [l.leave_approver for l in employee.get("employee_leave_approvers")] if len(leave_approvers) and self.leave_approver not in leave_approvers: frappe.throw(_("Leave approver must be one of {0}").format(comma_or(leave_approvers)), InvalidLeaveApproverError) diff --git a/erpnext/hr/doctype/leave_application/test_leave_application.py b/erpnext/hr/doctype/leave_application/test_leave_application.py index f5476407bd..7ad28dec16 100644 --- a/erpnext/hr/doctype/leave_application/test_leave_application.py +++ b/erpnext/hr/doctype/leave_application/test_leave_application.py @@ -91,6 +91,7 @@ class TestLeaveApplication(unittest.TestCase): from frappe.utils.user import add_role add_role("test1@example.com", "HR User") + add_role("test1@example.com", "Leave Approver") clear_user_permissions_for_doctype("Employee") frappe.db.set_value("Department", "_Test Department", @@ -157,6 +158,7 @@ class TestLeaveApplication(unittest.TestCase): from frappe.utils.user import add_role add_role("test@example.com", "Employee") + add_role("test1@example.com", "HR User") add_role("test1@example.com", "Leave Approver") add_role("test2@example.com", "Leave Approver") diff --git a/erpnext/hr/doctype/leave_application/test_records.json b/erpnext/hr/doctype/leave_application/test_records.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/erpnext/hr/doctype/leave_application/test_records.json @@ -0,0 +1 @@ +[] diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.json b/erpnext/hr/doctype/salary_slip/salary_slip.json index 88a7ef2ae9..b288c50cec 100644 --- a/erpnext/hr/doctype/salary_slip/salary_slip.json +++ b/erpnext/hr/doctype/salary_slip/salary_slip.json @@ -74,6 +74,7 @@ { "fieldname": "letter_head", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Letter Head", "options": "Letter Head", "permlevel": 0, @@ -335,7 +336,7 @@ "icon": "icon-file-text", "idx": 1, "is_submittable": 1, - "modified": "2014-07-21 07:58:08.033784", + "modified": "2014-08-27 06:38:10.006224", "modified_by": "Administrator", "module": "HR", "name": "Salary Slip", @@ -353,6 +354,7 @@ "report": 1, "role": "HR User", "submit": 1, + "user_permission_doctypes": "[\"Branch\",\"Company\",\"Department\",\"Designation\",\"Fiscal Year\",\"Salary Slip\"]", "write": 1 }, { diff --git a/erpnext/hr/utils.py b/erpnext/hr/utils.py index 857f936e9e..5d165c3ee4 100644 --- a/erpnext/hr/utils.py +++ b/erpnext/hr/utils.py @@ -5,24 +5,6 @@ from __future__ import unicode_literals import frappe from frappe import _ -@frappe.whitelist() -def get_leave_approver_list(): - roles = [r[0] for r in frappe.db.sql("""select distinct parent from `tabUserRole` - where role='Leave Approver'""")] - if not roles: - frappe.msgprint(_("No Leave Approvers. Please assign 'Leave Approver' Role to atleast one user")) - - return roles - - -@frappe.whitelist() -def get_expense_approver_list(): - roles = [r[0] for r in frappe.db.sql("""select distinct parent from `tabUserRole` - where role='Expense Approver'""")] - if not roles: - frappe.msgprint(_("No Expense Approvers. Please assign 'Expense Approver' Role to atleast one user")) - return roles - def set_employee_name(doc): if doc.employee and not doc.employee_name: doc.employee_name = frappe.db.get_value("Employee", doc.employee, "employee_name")