mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-06 23:10:26 +00:00
fix(HR): Leave application company field made read-only and filter in Monthly attendance sheet (#20912)
* fix(HR): Leave application company field made Readonly * fix: in monthly report attandance employee filter based on company * fix: minor typo * fix: Fetch company from employee * Update monthly_attendance_sheet.py Co-authored-by: Nabin Hait <nabinhait@gmail.com>
This commit is contained in:
@@ -1,332 +1,337 @@
|
|||||||
{
|
{
|
||||||
"allow_import": 1,
|
"actions": [],
|
||||||
"autoname": "naming_series:",
|
"allow_import": 1,
|
||||||
"creation": "2013-02-20 11:18:11",
|
"autoname": "naming_series:",
|
||||||
"description": "Apply / Approve Leaves",
|
"creation": "2013-02-20 11:18:11",
|
||||||
"doctype": "DocType",
|
"description": "Apply / Approve Leaves",
|
||||||
"document_type": "Document",
|
"doctype": "DocType",
|
||||||
"engine": "InnoDB",
|
"document_type": "Document",
|
||||||
"field_order": [
|
"engine": "InnoDB",
|
||||||
"naming_series",
|
"field_order": [
|
||||||
"employee",
|
"naming_series",
|
||||||
"employee_name",
|
"employee",
|
||||||
"column_break_4",
|
"employee_name",
|
||||||
"leave_type",
|
"column_break_4",
|
||||||
"department",
|
"leave_type",
|
||||||
"leave_balance",
|
"department",
|
||||||
"section_break_5",
|
"leave_balance",
|
||||||
"from_date",
|
"section_break_5",
|
||||||
"to_date",
|
"from_date",
|
||||||
"half_day",
|
"to_date",
|
||||||
"half_day_date",
|
"half_day",
|
||||||
"total_leave_days",
|
"half_day_date",
|
||||||
"column_break1",
|
"total_leave_days",
|
||||||
"description",
|
"column_break1",
|
||||||
"section_break_7",
|
"description",
|
||||||
"leave_approver",
|
"section_break_7",
|
||||||
"leave_approver_name",
|
"leave_approver",
|
||||||
"column_break_18",
|
"leave_approver_name",
|
||||||
"status",
|
"column_break_18",
|
||||||
"salary_slip",
|
"status",
|
||||||
"sb10",
|
"salary_slip",
|
||||||
"posting_date",
|
"sb10",
|
||||||
"follow_via_email",
|
"posting_date",
|
||||||
"color",
|
"follow_via_email",
|
||||||
"column_break_17",
|
"color",
|
||||||
"company",
|
"column_break_17",
|
||||||
"letter_head",
|
"company",
|
||||||
"amended_from"
|
"letter_head",
|
||||||
],
|
"amended_from"
|
||||||
"fields": [
|
],
|
||||||
{
|
"fields": [
|
||||||
"fieldname": "naming_series",
|
{
|
||||||
"fieldtype": "Select",
|
"fieldname": "naming_series",
|
||||||
"label": "Series",
|
"fieldtype": "Select",
|
||||||
"no_copy": 1,
|
"label": "Series",
|
||||||
"options": "HR-LAP-.YYYY.-",
|
"no_copy": 1,
|
||||||
"print_hide": 1,
|
"options": "HR-LAP-.YYYY.-",
|
||||||
"reqd": 1,
|
"print_hide": 1,
|
||||||
"set_only_once": 1
|
"reqd": 1,
|
||||||
},
|
"set_only_once": 1
|
||||||
{
|
},
|
||||||
"fieldname": "employee",
|
{
|
||||||
"fieldtype": "Link",
|
"fieldname": "employee",
|
||||||
"in_global_search": 1,
|
"fieldtype": "Link",
|
||||||
"in_standard_filter": 1,
|
"in_global_search": 1,
|
||||||
"label": "Employee",
|
"in_standard_filter": 1,
|
||||||
"options": "Employee",
|
"label": "Employee",
|
||||||
"reqd": 1,
|
"options": "Employee",
|
||||||
"search_index": 1
|
"reqd": 1,
|
||||||
},
|
"search_index": 1
|
||||||
{
|
},
|
||||||
"fieldname": "employee_name",
|
{
|
||||||
"fieldtype": "Data",
|
"fieldname": "employee_name",
|
||||||
"in_global_search": 1,
|
"fieldtype": "Data",
|
||||||
"label": "Employee Name",
|
"in_global_search": 1,
|
||||||
"read_only": 1
|
"label": "Employee Name",
|
||||||
},
|
"read_only": 1
|
||||||
{
|
},
|
||||||
"fieldname": "column_break_4",
|
{
|
||||||
"fieldtype": "Column Break"
|
"fieldname": "column_break_4",
|
||||||
},
|
"fieldtype": "Column Break"
|
||||||
{
|
},
|
||||||
"fieldname": "leave_type",
|
{
|
||||||
"fieldtype": "Link",
|
"fieldname": "leave_type",
|
||||||
"ignore_user_permissions": 1,
|
"fieldtype": "Link",
|
||||||
"in_standard_filter": 1,
|
"ignore_user_permissions": 1,
|
||||||
"label": "Leave Type",
|
"in_standard_filter": 1,
|
||||||
"options": "Leave Type",
|
"label": "Leave Type",
|
||||||
"reqd": 1,
|
"options": "Leave Type",
|
||||||
"search_index": 1
|
"reqd": 1,
|
||||||
},
|
"search_index": 1
|
||||||
{
|
},
|
||||||
"fetch_from": "employee.department",
|
{
|
||||||
"fieldname": "department",
|
"fetch_from": "employee.department",
|
||||||
"fieldtype": "Link",
|
"fieldname": "department",
|
||||||
"label": "Department",
|
"fieldtype": "Link",
|
||||||
"options": "Department",
|
"label": "Department",
|
||||||
"read_only": 1
|
"options": "Department",
|
||||||
},
|
"read_only": 1
|
||||||
{
|
},
|
||||||
"fieldname": "leave_balance",
|
{
|
||||||
"fieldtype": "Float",
|
"fieldname": "leave_balance",
|
||||||
"label": "Leave Balance Before Application",
|
"fieldtype": "Float",
|
||||||
"no_copy": 1,
|
"label": "Leave Balance Before Application",
|
||||||
"read_only": 1
|
"no_copy": 1,
|
||||||
},
|
"read_only": 1
|
||||||
{
|
},
|
||||||
"fieldname": "section_break_5",
|
{
|
||||||
"fieldtype": "Section Break"
|
"fieldname": "section_break_5",
|
||||||
},
|
"fieldtype": "Section Break"
|
||||||
{
|
},
|
||||||
"fieldname": "from_date",
|
{
|
||||||
"fieldtype": "Date",
|
"fieldname": "from_date",
|
||||||
"in_list_view": 1,
|
"fieldtype": "Date",
|
||||||
"label": "From Date",
|
"in_list_view": 1,
|
||||||
"reqd": 1,
|
"label": "From Date",
|
||||||
"search_index": 1
|
"reqd": 1,
|
||||||
},
|
"search_index": 1
|
||||||
{
|
},
|
||||||
"fieldname": "to_date",
|
{
|
||||||
"fieldtype": "Date",
|
"fieldname": "to_date",
|
||||||
"label": "To Date",
|
"fieldtype": "Date",
|
||||||
"reqd": 1,
|
"label": "To Date",
|
||||||
"search_index": 1
|
"reqd": 1,
|
||||||
},
|
"search_index": 1
|
||||||
{
|
},
|
||||||
"default": "0",
|
{
|
||||||
"fieldname": "half_day",
|
"default": "0",
|
||||||
"fieldtype": "Check",
|
"fieldname": "half_day",
|
||||||
"label": "Half Day"
|
"fieldtype": "Check",
|
||||||
},
|
"label": "Half Day"
|
||||||
{
|
},
|
||||||
"depends_on": "eval:doc.half_day && (doc.from_date != doc.to_date)",
|
{
|
||||||
"fieldname": "half_day_date",
|
"depends_on": "eval:doc.half_day && (doc.from_date != doc.to_date)",
|
||||||
"fieldtype": "Date",
|
"fieldname": "half_day_date",
|
||||||
"label": "Half Day Date"
|
"fieldtype": "Date",
|
||||||
},
|
"label": "Half Day Date"
|
||||||
{
|
},
|
||||||
"fieldname": "total_leave_days",
|
{
|
||||||
"fieldtype": "Float",
|
"fieldname": "total_leave_days",
|
||||||
"in_list_view": 1,
|
"fieldtype": "Float",
|
||||||
"label": "Total Leave Days",
|
"in_list_view": 1,
|
||||||
"no_copy": 1,
|
"label": "Total Leave Days",
|
||||||
"precision": "1",
|
"no_copy": 1,
|
||||||
"read_only": 1
|
"precision": "1",
|
||||||
},
|
"read_only": 1
|
||||||
{
|
},
|
||||||
"fieldname": "column_break1",
|
{
|
||||||
"fieldtype": "Column Break",
|
"fieldname": "column_break1",
|
||||||
"print_width": "50%",
|
"fieldtype": "Column Break",
|
||||||
"width": "50%"
|
"print_width": "50%",
|
||||||
},
|
"width": "50%"
|
||||||
{
|
},
|
||||||
"fieldname": "description",
|
{
|
||||||
"fieldtype": "Small Text",
|
"fieldname": "description",
|
||||||
"label": "Reason"
|
"fieldtype": "Small Text",
|
||||||
},
|
"label": "Reason"
|
||||||
{
|
},
|
||||||
"fieldname": "section_break_7",
|
{
|
||||||
"fieldtype": "Section Break"
|
"fieldname": "section_break_7",
|
||||||
},
|
"fieldtype": "Section Break"
|
||||||
{
|
},
|
||||||
"fieldname": "leave_approver",
|
{
|
||||||
"fieldtype": "Link",
|
"fieldname": "leave_approver",
|
||||||
"label": "Leave Approver",
|
"fieldtype": "Link",
|
||||||
"options": "User"
|
"label": "Leave Approver",
|
||||||
},
|
"options": "User"
|
||||||
{
|
},
|
||||||
"fieldname": "leave_approver_name",
|
{
|
||||||
"fieldtype": "Data",
|
"fieldname": "leave_approver_name",
|
||||||
"label": "Leave Approver Name",
|
"fieldtype": "Data",
|
||||||
"read_only": 1
|
"label": "Leave Approver Name",
|
||||||
},
|
"read_only": 1
|
||||||
{
|
},
|
||||||
"fieldname": "column_break_18",
|
{
|
||||||
"fieldtype": "Column Break"
|
"fieldname": "column_break_18",
|
||||||
},
|
"fieldtype": "Column Break"
|
||||||
{
|
},
|
||||||
"default": "Open",
|
{
|
||||||
"fieldname": "status",
|
"default": "Open",
|
||||||
"fieldtype": "Select",
|
"fieldname": "status",
|
||||||
"in_standard_filter": 1,
|
"fieldtype": "Select",
|
||||||
"label": "Status",
|
"in_standard_filter": 1,
|
||||||
"no_copy": 1,
|
"label": "Status",
|
||||||
"options": "Open\nApproved\nRejected\nCancelled"
|
"no_copy": 1,
|
||||||
},
|
"options": "Open\nApproved\nRejected\nCancelled",
|
||||||
{
|
"permlevel": 1
|
||||||
"fieldname": "sb10",
|
},
|
||||||
"fieldtype": "Section Break"
|
{
|
||||||
},
|
"fieldname": "sb10",
|
||||||
{
|
"fieldtype": "Section Break"
|
||||||
"default": "Today",
|
},
|
||||||
"fieldname": "posting_date",
|
{
|
||||||
"fieldtype": "Date",
|
"default": "Today",
|
||||||
"label": "Posting Date",
|
"fieldname": "posting_date",
|
||||||
"no_copy": 1,
|
"fieldtype": "Date",
|
||||||
"reqd": 1
|
"label": "Posting Date",
|
||||||
},
|
"no_copy": 1,
|
||||||
{
|
"reqd": 1
|
||||||
"fieldname": "company",
|
},
|
||||||
"fieldtype": "Link",
|
{
|
||||||
"label": "Company",
|
"fieldname": "company",
|
||||||
"options": "Company",
|
"fieldtype": "Link",
|
||||||
"remember_last_selected_value": 1,
|
"label": "Company",
|
||||||
"reqd": 1
|
"options": "Company",
|
||||||
},
|
"read_only": 1,
|
||||||
{
|
"remember_last_selected_value": 1,
|
||||||
"allow_on_submit": 1,
|
"reqd": 1,
|
||||||
"default": "1",
|
"fetch_from": "employee.company",
|
||||||
"fieldname": "follow_via_email",
|
},
|
||||||
"fieldtype": "Check",
|
{
|
||||||
"label": "Follow via Email",
|
"allow_on_submit": 1,
|
||||||
"print_hide": 1
|
"default": "1",
|
||||||
},
|
"fieldname": "follow_via_email",
|
||||||
{
|
"fieldtype": "Check",
|
||||||
"fieldname": "column_break_17",
|
"label": "Follow via Email",
|
||||||
"fieldtype": "Column Break"
|
"print_hide": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "salary_slip",
|
"fieldname": "column_break_17",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Column Break"
|
||||||
"label": "Salary Slip",
|
},
|
||||||
"options": "Salary Slip",
|
{
|
||||||
"print_hide": 1
|
"fieldname": "salary_slip",
|
||||||
},
|
"fieldtype": "Link",
|
||||||
{
|
"label": "Salary Slip",
|
||||||
"allow_on_submit": 1,
|
"options": "Salary Slip",
|
||||||
"fieldname": "letter_head",
|
"print_hide": 1
|
||||||
"fieldtype": "Link",
|
},
|
||||||
"ignore_user_permissions": 1,
|
{
|
||||||
"label": "Letter Head",
|
"allow_on_submit": 1,
|
||||||
"options": "Letter Head",
|
"fieldname": "letter_head",
|
||||||
"print_hide": 1
|
"fieldtype": "Link",
|
||||||
},
|
"ignore_user_permissions": 1,
|
||||||
{
|
"label": "Letter Head",
|
||||||
"allow_on_submit": 1,
|
"options": "Letter Head",
|
||||||
"fieldname": "color",
|
"print_hide": 1
|
||||||
"fieldtype": "Color",
|
},
|
||||||
"label": "Color",
|
{
|
||||||
"print_hide": 1
|
"allow_on_submit": 1,
|
||||||
},
|
"fieldname": "color",
|
||||||
{
|
"fieldtype": "Color",
|
||||||
"fieldname": "amended_from",
|
"label": "Color",
|
||||||
"fieldtype": "Link",
|
"print_hide": 1
|
||||||
"ignore_user_permissions": 1,
|
},
|
||||||
"label": "Amended From",
|
{
|
||||||
"no_copy": 1,
|
"fieldname": "amended_from",
|
||||||
"options": "Leave Application",
|
"fieldtype": "Link",
|
||||||
"print_hide": 1,
|
"ignore_user_permissions": 1,
|
||||||
"read_only": 1
|
"label": "Amended From",
|
||||||
}
|
"no_copy": 1,
|
||||||
],
|
"options": "Leave Application",
|
||||||
"icon": "fa fa-calendar",
|
"print_hide": 1,
|
||||||
"idx": 1,
|
"read_only": 1
|
||||||
"is_submittable": 1,
|
}
|
||||||
"max_attachments": 3,
|
],
|
||||||
"modified": "2019-08-13 13:32:04.860848",
|
"icon": "fa fa-calendar",
|
||||||
"modified_by": "Administrator",
|
"idx": 1,
|
||||||
"module": "HR",
|
"is_submittable": 1,
|
||||||
"name": "Leave Application",
|
"links": [],
|
||||||
"owner": "Administrator",
|
"max_attachments": 3,
|
||||||
"permissions": [
|
"modified": "2020-03-10 22:40:43.487721",
|
||||||
{
|
"modified_by": "Administrator",
|
||||||
"create": 1,
|
"module": "HR",
|
||||||
"email": 1,
|
"name": "Leave Application",
|
||||||
"print": 1,
|
"owner": "Administrator",
|
||||||
"read": 1,
|
"permissions": [
|
||||||
"report": 1,
|
{
|
||||||
"role": "Employee",
|
"create": 1,
|
||||||
"share": 1,
|
"email": 1,
|
||||||
"write": 1
|
"print": 1,
|
||||||
},
|
"read": 1,
|
||||||
{
|
"report": 1,
|
||||||
"amend": 1,
|
"role": "Employee",
|
||||||
"cancel": 1,
|
"share": 1,
|
||||||
"create": 1,
|
"write": 1
|
||||||
"delete": 1,
|
},
|
||||||
"email": 1,
|
{
|
||||||
"export": 1,
|
"amend": 1,
|
||||||
"print": 1,
|
"cancel": 1,
|
||||||
"read": 1,
|
"create": 1,
|
||||||
"report": 1,
|
"delete": 1,
|
||||||
"role": "HR Manager",
|
"email": 1,
|
||||||
"set_user_permissions": 1,
|
"export": 1,
|
||||||
"share": 1,
|
"print": 1,
|
||||||
"submit": 1,
|
"read": 1,
|
||||||
"write": 1
|
"report": 1,
|
||||||
},
|
"role": "HR Manager",
|
||||||
{
|
"set_user_permissions": 1,
|
||||||
"permlevel": 1,
|
"share": 1,
|
||||||
"read": 1,
|
"submit": 1,
|
||||||
"role": "All"
|
"write": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amend": 1,
|
"permlevel": 1,
|
||||||
"cancel": 1,
|
"read": 1,
|
||||||
"create": 1,
|
"role": "All"
|
||||||
"delete": 1,
|
},
|
||||||
"email": 1,
|
{
|
||||||
"print": 1,
|
"amend": 1,
|
||||||
"read": 1,
|
"cancel": 1,
|
||||||
"report": 1,
|
"create": 1,
|
||||||
"role": "HR User",
|
"delete": 1,
|
||||||
"set_user_permissions": 1,
|
"email": 1,
|
||||||
"share": 1,
|
"print": 1,
|
||||||
"submit": 1,
|
"read": 1,
|
||||||
"write": 1
|
"report": 1,
|
||||||
},
|
"role": "HR User",
|
||||||
{
|
"set_user_permissions": 1,
|
||||||
"amend": 1,
|
"share": 1,
|
||||||
"cancel": 1,
|
"submit": 1,
|
||||||
"delete": 1,
|
"write": 1
|
||||||
"email": 1,
|
},
|
||||||
"print": 1,
|
{
|
||||||
"read": 1,
|
"amend": 1,
|
||||||
"report": 1,
|
"cancel": 1,
|
||||||
"role": "Leave Approver",
|
"delete": 1,
|
||||||
"share": 1,
|
"email": 1,
|
||||||
"submit": 1,
|
"print": 1,
|
||||||
"write": 1
|
"read": 1,
|
||||||
},
|
"report": 1,
|
||||||
{
|
"role": "Leave Approver",
|
||||||
"permlevel": 1,
|
"share": 1,
|
||||||
"read": 1,
|
"submit": 1,
|
||||||
"report": 1,
|
"write": 1
|
||||||
"role": "HR User",
|
},
|
||||||
"write": 1
|
{
|
||||||
},
|
"permlevel": 1,
|
||||||
{
|
"read": 1,
|
||||||
"permlevel": 1,
|
"report": 1,
|
||||||
"read": 1,
|
"role": "HR User",
|
||||||
"report": 1,
|
"write": 1
|
||||||
"role": "Leave Approver",
|
},
|
||||||
"write": 1
|
{
|
||||||
}
|
"permlevel": 1,
|
||||||
],
|
"read": 1,
|
||||||
"search_fields": "employee,employee_name,leave_type,from_date,to_date,total_leave_days",
|
"report": 1,
|
||||||
"sort_field": "modified",
|
"role": "Leave Approver",
|
||||||
"sort_order": "DESC",
|
"write": 1
|
||||||
"timeline_field": "employee",
|
}
|
||||||
"title_field": "employee_name"
|
],
|
||||||
}
|
"search_fields": "employee,employee_name,leave_type,from_date,to_date,total_leave_days",
|
||||||
|
"sort_field": "modified",
|
||||||
|
"sort_order": "DESC",
|
||||||
|
"timeline_field": "employee",
|
||||||
|
"title_field": "employee_name"
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ def execute(filters=None):
|
|||||||
conditions, filters = get_conditions(filters)
|
conditions, filters = get_conditions(filters)
|
||||||
columns = get_columns(filters)
|
columns = get_columns(filters)
|
||||||
att_map = get_attendance_list(conditions, filters)
|
att_map = get_attendance_list(conditions, filters)
|
||||||
emp_map = get_employee_details()
|
emp_map = get_employee_details(filters)
|
||||||
|
|
||||||
holiday_list = [emp_map[d]["holiday_list"] for d in emp_map if emp_map[d]["holiday_list"]]
|
holiday_list = [emp_map[d]["holiday_list"] for d in emp_map if emp_map[d]["holiday_list"]]
|
||||||
default_holiday_list = frappe.get_cached_value('Company', filters.get("company"), "default_holiday_list")
|
default_holiday_list = frappe.get_cached_value('Company', filters.get("company"), "default_holiday_list")
|
||||||
@@ -140,10 +140,10 @@ def get_conditions(filters):
|
|||||||
|
|
||||||
return conditions, filters
|
return conditions, filters
|
||||||
|
|
||||||
def get_employee_details():
|
def get_employee_details(filters):
|
||||||
emp_map = frappe._dict()
|
emp_map = frappe._dict()
|
||||||
for d in frappe.db.sql("""select name, employee_name, designation, department, branch, company,
|
for d in frappe.db.sql("""select name, employee_name, designation, department, branch, company,
|
||||||
holiday_list from tabEmployee""", as_dict=1):
|
holiday_list from tabEmployee where company = %s""", (filters.get("company")), as_dict=1):
|
||||||
emp_map.setdefault(d.name, d)
|
emp_map.setdefault(d.name, d)
|
||||||
|
|
||||||
return emp_map
|
return emp_map
|
||||||
|
|||||||
Reference in New Issue
Block a user