diff --git a/hrms/payroll/doctype/salary_structure/salary_structure.py b/hrms/payroll/doctype/salary_structure/salary_structure.py index e22afa1023..d0e1749b79 100644 --- a/hrms/payroll/doctype/salary_structure/salary_structure.py +++ b/hrms/payroll/doctype/salary_structure/salary_structure.py @@ -374,6 +374,7 @@ def make_salary_slip( print_format: str | None = None, for_preview: int = 0, lwp_days_corrected: float | None = None, + ignore_permissions: bool = False, ) -> str | Document: def postprocess(source, target): if employee: @@ -400,6 +401,7 @@ def postprocess(source, target): }, target_doc, postprocess, + ignore_permissions=ignore_permissions, ignore_child_tables=True, cached=True, ) diff --git a/hrms/payroll/doctype/salary_structure_assignment/salary_structure_assignment.json b/hrms/payroll/doctype/salary_structure_assignment/salary_structure_assignment.json index ee35e6583c..767c24ec75 100644 --- a/hrms/payroll/doctype/salary_structure_assignment/salary_structure_assignment.json +++ b/hrms/payroll/doctype/salary_structure_assignment/salary_structure_assignment.json @@ -253,7 +253,7 @@ ], "is_submittable": 1, "links": [], - "modified": "2026-05-14 13:33:55.869281", + "modified": "2026-06-05 13:20:40.794089", "modified_by": "Administrator", "module": "Payroll", "name": "Salary Structure Assignment", @@ -298,6 +298,11 @@ "share": 1, "submit": 1, "write": 1 + }, + { + "read": 1, + "role": "Employee", + "select": 1 } ], "row_format": "Dynamic", diff --git a/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.js b/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.js index d51d66ae27..8df443f5b6 100644 --- a/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.js +++ b/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.js @@ -26,7 +26,24 @@ frappe.query_reports["Employee CTC Break-up"] = { }; }, on_change: function () { - frappe.query_report.set_filter_value("salary_structure_assignment", ""); + let employee = frappe.query_report.get_filter_value("employee"); + if (!employee) { + frappe.query_report.set_filter_value("salary_structure_assignment", ""); + return; + } + frappe.db + .get_list("Salary Structure Assignment", { + filters: { employee: employee, docstatus: 1 }, + fields: ["name"], + order_by: "from_date desc", + limit: 1, + }) + .then(function (result) { + frappe.query_report.set_filter_value( + "salary_structure_assignment", + (result[0] && result[0].name) || "", + ); + }); }, }, { @@ -43,10 +60,16 @@ frappe.query_reports["Employee CTC Break-up"] = { employee: employee, docstatus: 1, }, + order_by: "from_date desc", }; }, }, ], + onload: async function (report) { + const employee = await hrms.get_current_employee(); + if (!employee) return; + report.set_filter_value("employee", employee); + }, formatter: function (value, row, column, data, default_formatter) { value = default_formatter(value, row, column, data); if (data?.bold && value) value = `${value}`; diff --git a/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.json b/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.json index ba2cfadd01..0dddf0147e 100644 --- a/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.json +++ b/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.json @@ -9,13 +9,13 @@ "filters": [], "idx": 0, "is_standard": "Yes", - "modified": "2026-05-14 12:08:50.414476", + "modified": "2026-06-05 13:31:09.038894", "modified_by": "Administrator", "module": "Payroll", "name": "Employee CTC Break-up", "owner": "Administrator", "prepared_report": 0, - "ref_doctype": "Salary Structure Assignment", + "ref_doctype": "Salary Slip", "report_name": "Employee CTC Break-up", "report_type": "Script Report", "roles": [ @@ -27,6 +27,9 @@ }, { "role": "HR User" + }, + { + "role": "Employee" } ], "timeout": 0 diff --git a/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.py b/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.py index b73c122006..f92d15322d 100644 --- a/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.py +++ b/hrms/payroll/report/employee_ctc_break_up/employee_ctc_break_up.py @@ -29,6 +29,7 @@ def __init__(self, employee, salary_structure_assignment): for_preview=1, as_print=False, posting_date=frappe.flags.posting_date if frappe.flags.in_test else None, + ignore_permissions=True, ) self.net_pay = self.salary_slip.net_pay self.gross_pay = self.salary_slip.gross_pay