Permission relogication continued

This commit is contained in:
Anand Doshi
2014-05-27 13:46:42 +05:30
parent fab0904af7
commit a8ce570635
89 changed files with 1611 additions and 1546 deletions

View File

@@ -196,7 +196,7 @@
"icon": "icon-thumbs-up",
"idx": 1,
"is_submittable": 1,
"modified": "2014-05-26 03:05:46.761819",
"modified": "2014-05-27 03:49:07.393120",
"modified_by": "Administrator",
"module": "HR",
"name": "Appraisal",
@@ -232,6 +232,7 @@
},
{
"amend": 1,
"apply_user_permissions": 1,
"cancel": 1,
"create": 1,
"delete": 1,

View File

@@ -1,7 +1,7 @@
{
"allow_import": 1,
"autoname": "field:kra_title",
"creation": "2012-07-03 13:30:39.000000",
"creation": "2012-07-03 13:30:39",
"docstatus": 0,
"doctype": "DocType",
"document_type": "Master",
@@ -9,6 +9,7 @@
{
"fieldname": "kra_title",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Appraisal Template Title",
"oldfieldname": "kra_title",
"oldfieldtype": "Data",
@@ -18,6 +19,7 @@
{
"fieldname": "description",
"fieldtype": "Small Text",
"in_list_view": 1,
"label": "Description",
"oldfieldname": "description",
"oldfieldtype": "Small Text",
@@ -37,19 +39,21 @@
{
"fieldname": "total_points",
"fieldtype": "Int",
"in_list_view": 1,
"label": "Total Points",
"permlevel": 0
}
],
"icon": "icon-file-text",
"idx": 1,
"modified": "2013-12-20 19:23:55.000000",
"modified": "2014-05-27 03:49:07.533203",
"modified_by": "Administrator",
"module": "HR",
"name": "Appraisal Template",
"owner": "ashwini@webnotestech.com",
"permissions": [
{
"apply_user_permissions": 1,
"create": 1,
"email": 1,
"permlevel": 0,

View File

@@ -129,7 +129,7 @@
"icon": "icon-ok",
"idx": 1,
"is_submittable": 1,
"modified": "2014-05-26 03:05:46.906637",
"modified": "2014-05-27 03:49:07.580876",
"modified_by": "Administrator",
"module": "HR",
"name": "Attendance",
@@ -149,6 +149,7 @@
"write": 1
},
{
"apply_user_permissions": 1,
"cancel": 1,
"create": 1,
"delete": 1,

View File

@@ -20,14 +20,14 @@
],
"icon": "icon-code-fork",
"idx": 1,
"modified": "2014-05-07 06:39:31.752490",
"modified": "2014-05-27 03:49:08.179137",
"modified_by": "Administrator",
"module": "HR",
"name": "Branch",
"owner": "Administrator",
"permissions": [
{
"cancel": 0,
"apply_user_permissions": 1,
"create": 1,
"delete": 1,
"email": 1,
@@ -40,7 +40,6 @@
"write": 1
},
{
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,

View File

@@ -30,14 +30,14 @@
],
"icon": "icon-flag",
"idx": 1,
"modified": "2014-05-07 06:39:38.154345",
"modified": "2014-05-27 03:49:09.624972",
"modified_by": "Administrator",
"module": "HR",
"name": "Deduction Type",
"owner": "Administrator",
"permissions": [
{
"cancel": 0,
"apply_user_permissions": 1,
"create": 1,
"delete": 1,
"email": 1,

View File

@@ -29,14 +29,14 @@
],
"icon": "icon-sitemap",
"idx": 1,
"modified": "2014-05-07 06:39:39.931091",
"modified": "2014-05-27 03:49:10.061057",
"modified_by": "Administrator",
"module": "HR",
"name": "Department",
"owner": "Administrator",
"permissions": [
{
"cancel": 0,
"apply_user_permissions": 1,
"create": 1,
"delete": 1,
"email": 1,

View File

@@ -20,14 +20,14 @@
],
"icon": "icon-bookmark",
"idx": 1,
"modified": "2014-05-07 06:39:38.265440",
"modified": "2014-05-27 03:49:10.099099",
"modified_by": "Administrator",
"module": "HR",
"name": "Designation",
"owner": "Administrator",
"permissions": [
{
"cancel": 0,
"apply_user_permissions": 1,
"create": 1,
"delete": 1,
"email": 1,

View File

@@ -53,14 +53,14 @@
],
"icon": "icon-flag",
"idx": 1,
"modified": "2014-05-07 06:39:38.414922",
"modified": "2014-05-27 03:49:10.133416",
"modified_by": "Administrator",
"module": "HR",
"name": "Earning Type",
"owner": "Administrator",
"permissions": [
{
"cancel": 0,
"apply_user_permissions": 1,
"create": 1,
"delete": 1,
"email": 1,

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,6 @@ from frappe.utils import getdate, validate_email_add, cint
from frappe.model.naming import make_autoname
from frappe import throw, _
import frappe.permissions
from frappe.defaults import get_user_permissions
from frappe.model.document import Document
from frappe.model.mapper import get_mapped_doc
@@ -45,36 +44,24 @@ class Employee(Document):
def on_update(self):
if self.user_id:
self.update_user_default()
self.update_user()
self.update_user_permissions()
self.update_dob_event()
self.restrict_leave_approver()
self.update_leave_approver_user_permissions()
def restrict_user(self):
"""restrict to this employee for user"""
self.add_restriction_if_required("Employee", self.user_id)
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_user_default(self):
self.restrict_user()
frappe.db.set_default("employee_name", self.employee_name, self.user_id)
frappe.db.set_default("company", self.company, self.user_id)
def restrict_leave_approver(self):
def update_leave_approver_user_permissions(self):
"""restrict to this employee 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:
self.add_restriction_if_required("Employee", user)
self.add_restriction_if_required("Leave Application", user)
def add_restriction_if_required(self, doctype, user):
if frappe.permissions.has_only_non_restrict_role(doctype, user) \
and self.name not in get_user_permissions(user).get("Employee", []):
frappe.defaults.add_default("Employee", self.name, user, "User Permission")
frappe.permissions.add_user_permission("Employee", self.name, user)
def update_user(self):
# add employee role if missing
@@ -85,7 +72,7 @@ class Employee(Document):
user.add_roles("Employee")
# copy details like Fullname, DOB and Image to User
if self.employee_name:
if self.employee_name and not (user.first_name and user.last_name):
employee_name = self.employee_name.split(" ")
if len(employee_name) >= 3:
user.last_name = " ".join(employee_name[2:])
@@ -111,7 +98,7 @@ class Employee(Document):
"attached_to_doctype": "User",
"attached_to_name": self.user_id
}).insert()
except frappe.DuplicateEntryError, e:
except frappe.DuplicateEntryError:
# already exists
pass
@@ -217,10 +204,13 @@ def make_salary_structure(source_name, target=None):
target.make_earn_ded_table()
return target
def update_user_default(doc, method):
def update_user_permissions(doc, method):
# called via User hook
try:
employee = frappe.get_doc("Employee", {"user_id": doc.name})
employee.update_user_default()
except frappe.DoesNotExistError:
pass
if "Employee" in [d.role for d in doc.get("user_roles")]:
try:
employee = frappe.get_doc("Employee", {"user_id": doc.name})
employee.update_user_permissions()
except frappe.DoesNotExistError:
frappe.msgprint("Please set User ID field in an Employee record to set Employee Role")
doc.get("user_roles").remove(doc.get("user_roles", {"role": "Employee"})[0])

View File

@@ -19,14 +19,14 @@
],
"icon": "icon-flag",
"idx": 1,
"modified": "2014-05-07 06:39:38.630562",
"modified": "2014-05-27 03:49:10.551828",
"modified_by": "Administrator",
"module": "HR",
"name": "Employment Type",
"owner": "Administrator",
"permissions": [
{
"cancel": 0,
"apply_user_permissions": 1,
"create": 1,
"delete": 1,
"email": 1,
@@ -39,7 +39,6 @@
"write": 1
},
{
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,

View File

@@ -187,7 +187,7 @@
"icon": "icon-money",
"idx": 1,
"is_submittable": 1,
"modified": "2014-05-26 03:05:48.690180",
"modified": "2014-05-27 03:49:10.736177",
"modified_by": "Administrator",
"module": "HR",
"name": "Expense Claim",
@@ -207,6 +207,7 @@
},
{
"amend": 1,
"apply_user_permissions": 1,
"cancel": 1,
"create": 1,
"delete": 1,
@@ -221,6 +222,7 @@
},
{
"amend": 1,
"apply_user_permissions": 1,
"cancel": 1,
"create": 1,
"delete": 1,

View File

@@ -1,7 +1,7 @@
{
"allow_attach": 1,
"autoname": "field:applicant_name",
"creation": "2013-01-29 19:25:37.000000",
"creation": "2013-01-29 19:25:37",
"description": "Applicant for a Job",
"docstatus": 0,
"doctype": "DocType",
@@ -66,14 +66,14 @@
],
"icon": "icon-user",
"idx": 1,
"modified": "2014-01-20 17:48:50.000000",
"modified": "2014-05-27 03:49:12.168814",
"modified_by": "Administrator",
"module": "HR",
"name": "Job Applicant",
"owner": "Administrator",
"permissions": [
{
"cancel": 1,
"apply_user_permissions": 1,
"create": 1,
"delete": 1,
"email": 1,

View File

@@ -1,6 +1,6 @@
{
"autoname": "field:job_title",
"creation": "2013-01-15 16:13:36.000000",
"creation": "2013-01-15 16:13:36",
"description": "Description of a Job Opening",
"docstatus": 0,
"doctype": "DocType",
@@ -9,6 +9,7 @@
{
"fieldname": "job_title",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Job Title",
"permlevel": 0,
"reqd": 1
@@ -16,6 +17,7 @@
{
"fieldname": "status",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Status",
"options": "Open\nClosed",
"permlevel": 0
@@ -24,20 +26,21 @@
"description": "Job profile, qualifications required etc.",
"fieldname": "description",
"fieldtype": "Text Editor",
"in_list_view": 1,
"label": "Description",
"permlevel": 0
}
],
"icon": "icon-bookmark",
"idx": 1,
"modified": "2014-01-20 17:48:51.000000",
"modified": "2014-05-27 03:49:12.248194",
"modified_by": "Administrator",
"module": "HR",
"name": "Job Opening",
"owner": "Administrator",
"permissions": [
{
"cancel": 1,
"apply_user_permissions": 1,
"create": 1,
"delete": 1,
"email": 1,

View File

@@ -136,7 +136,7 @@
"icon": "icon-ok",
"idx": 1,
"is_submittable": 1,
"modified": "2014-05-26 03:05:49.674303",
"modified": "2014-05-27 03:49:12.744348",
"modified_by": "Administrator",
"module": "HR",
"name": "Leave Allocation",

View File

@@ -1,269 +1,272 @@
{
"allow_attach": 1,
"autoname": "LAP/.#####",
"creation": "2013-02-20 11:18:11",
"description": "Apply / Approve Leaves",
"docstatus": 0,
"doctype": "DocType",
"document_type": "Transaction",
"allow_attach": 1,
"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": "Select",
"label": "Leave Approver",
"options": "[Select]",
"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",
"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",
"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-05-26 03:05:49.838899",
"modified_by": "Administrator",
"module": "HR",
"name": "Leave Application",
"owner": "Administrator",
],
"icon": "icon-calendar",
"idx": 1,
"is_submittable": 1,
"max_attachments": 3,
"modified": "2014-05-27 03:49:12.957706",
"modified_by": "Administrator",
"module": "HR",
"name": "Leave Application",
"owner": "Administrator",
"permissions": [
{
"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",
"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,
"cancel": 1,
"create": 1,
"delete": 1,
"email": 1,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"set_user_permissions": 1,
"role": "HR User",
"submit": 1,
"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,
"write": 1
},
},
{
"amend": 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,
"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"
}
}

View File

@@ -5,7 +5,7 @@ import frappe
import unittest
from erpnext.hr.doctype.leave_application.leave_application import LeaveDayBlockedError, OverlapError
from frappe.core.page.user_permissions.user_permissions import clear_user_permissions
from frappe.permissions import clear_user_permissions_for_doctype
test_dependencies = ["Leave Allocation", "Leave Block List"]
@@ -91,7 +91,7 @@ class TestLeaveApplication(unittest.TestCase):
from frappe.utils.user import add_role
add_role("test1@example.com", "HR User")
clear_user_permissions("Employee")
clear_user_permissions_for_doctype("Employee")
frappe.db.set_value("Department", "_Test Department",
"leave_block_list", "_Test Leave Block List")

View File

@@ -1,7 +1,7 @@
{
"allow_import": 1,
"autoname": "field:leave_block_list_name",
"creation": "2013-02-18 17:43:12.000000",
"creation": "2013-02-18 17:43:12",
"description": "Block Holidays on important days.",
"docstatus": 0,
"doctype": "DocType",
@@ -10,6 +10,7 @@
{
"fieldname": "leave_block_list_name",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Leave Block List Name",
"permlevel": 0,
"reqd": 1
@@ -17,6 +18,7 @@
{
"fieldname": "year",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Year",
"options": "Fiscal Year",
"permlevel": 0,
@@ -25,6 +27,7 @@
{
"fieldname": "company",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Company",
"options": "Company",
"permlevel": 0,
@@ -34,6 +37,7 @@
"description": "If not checked, the list will have to be added to each Department where it has to be applied.",
"fieldname": "applies_to_all_departments",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Applies to Company",
"permlevel": 0
},
@@ -68,13 +72,14 @@
],
"icon": "icon-calendar",
"idx": 1,
"modified": "2013-12-20 19:24:13.000000",
"modified": "2014-05-27 03:49:13.198735",
"modified_by": "Administrator",
"module": "HR",
"name": "Leave Block List",
"owner": "Administrator",
"permissions": [
{
"apply_user_permissions": 1,
"create": 1,
"email": 1,
"permlevel": 0,

View File

@@ -62,14 +62,14 @@
],
"icon": "icon-flag",
"idx": 1,
"modified": "2014-05-07 06:39:38.884656",
"modified": "2014-05-27 03:49:13.297832",
"modified_by": "Administrator",
"module": "HR",
"name": "Leave Type",
"owner": "Administrator",
"permissions": [
{
"cancel": 0,
"apply_user_permissions": 1,
"create": 1,
"delete": 1,
"email": 1,
@@ -82,7 +82,6 @@
"write": 1
},
{
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
@@ -95,6 +94,7 @@
"write": 1
},
{
"apply_user_permissions": 1,
"permlevel": 0,
"read": 1,
"role": "Employee"

View File

@@ -325,7 +325,7 @@
"icon": "icon-file-text",
"idx": 1,
"is_submittable": 1,
"modified": "2014-05-26 03:05:52.624169",
"modified": "2014-05-27 03:49:17.213045",
"modified_by": "Administrator",
"module": "HR",
"name": "Salary Slip",
@@ -333,6 +333,7 @@
"permissions": [
{
"amend": 0,
"apply_user_permissions": 1,
"create": 1,
"delete": 0,
"email": 1,
@@ -359,6 +360,7 @@
"write": 1
},
{
"apply_user_permissions": 1,
"permlevel": 0,
"read": 1,
"role": "Employee"

View File

@@ -227,7 +227,7 @@
],
"icon": "icon-file-text",
"idx": 1,
"modified": "2014-05-09 02:16:46.711184",
"modified": "2014-05-27 03:49:17.438605",
"modified_by": "Administrator",
"module": "HR",
"name": "Salary Structure",
@@ -235,6 +235,7 @@
"permissions": [
{
"amend": 0,
"apply_user_permissions": 1,
"create": 1,
"email": 1,
"permlevel": 0,