diff --git a/audit_management/audit_management/report/pending_audit_queries_aging_report/pending_audit_queries_aging_report.py b/audit_management/audit_management/report/pending_audit_queries_aging_report/pending_audit_queries_aging_report.py index 2da8a38..7aed615 100644 --- a/audit_management/audit_management/report/pending_audit_queries_aging_report/pending_audit_queries_aging_report.py +++ b/audit_management/audit_management/report/pending_audit_queries_aging_report/pending_audit_queries_aging_report.py @@ -6,6 +6,8 @@ from frappe.utils import getdate, nowdate from audit_management.audit_management.utils import get_working_days +from audit_management.audit_management.doctype.my_audits.my_audits import get_user_allowed_sol_ids + def execute(filters=None): columns = get_columns() data = get_data(filters) @@ -63,10 +65,28 @@ def get_columns(): def get_data(filters): query_filters = {"status": "Pending"} + user = frappe.session.user + roles = frappe.get_roles(user) + is_audit_manager = "Audit Manager" in roles or "Administrator" in roles or "System Manager" in roles + + if not is_audit_manager: + # SOL ID based access for others + allowed_sol_ids = get_user_allowed_sol_ids(user) + if allowed_sol_ids: + sol_list = [str(s) for s in allowed_sol_ids] + # Filter by branch linking to these sol ids + allowed_branches = frappe.get_all("Audit Level", + filters={"sahayog_branch": ["in", sol_list]}, pluck="name") + + query_filters["emp_branch"] = ["in", allowed_branches] + else: + # If no sol ids, only show owned + query_filters["owner"] = user + if filters.get("from_date"): query_filters["creation"] = [">=", filters.get("from_date")] if filters.get("to_date"): - if "creation" in query_filters: + if "creation" in query_filters and isinstance(query_filters["creation"], list) and query_filters["creation"][0] == ">=": query_filters["creation"] = ["between", [filters.get("from_date"), filters.get("to_date")]] else: query_filters["creation"] = ["<=", filters.get("to_date")] diff --git a/audit_management/audit_management/report/process_technical_improvement_commitment_report/process_technical_improvement_commitment_report.py b/audit_management/audit_management/report/process_technical_improvement_commitment_report/process_technical_improvement_commitment_report.py index 3a328f5..830d514 100644 --- a/audit_management/audit_management/report/process_technical_improvement_commitment_report/process_technical_improvement_commitment_report.py +++ b/audit_management/audit_management/report/process_technical_improvement_commitment_report/process_technical_improvement_commitment_report.py @@ -6,6 +6,8 @@ from frappe.utils import getdate, nowdate from audit_management.audit_management.utils import get_working_days +from audit_management.audit_management.doctype.my_audits.my_audits import get_user_allowed_sol_ids + def execute(filters=None): columns = get_columns() data = get_data(filters) @@ -20,6 +22,12 @@ def get_columns(): "options": "My Audits", "width": 150 }, + { + "label": _("Closure Date"), + "fieldname": "closing_date", + "fieldtype": "Date", + "width": 100 + }, { "label": _("Recommended Action"), "fieldname": "recommendations", @@ -59,6 +67,24 @@ def get_data(filters): # Only track those with an RCA Category (Commitment) query_filters["rca_category"] = ["is", "set"] + user = frappe.session.user + roles = frappe.get_roles(user) + is_audit_manager = "Audit Manager" in roles or "Administrator" in roles or "System Manager" in roles + + if not is_audit_manager: + # SOL ID based access for others + allowed_sol_ids = get_user_allowed_sol_ids(user) + if allowed_sol_ids: + sol_list = [str(s) for s in allowed_sol_ids] + # Filter by branch linking to these sol ids + allowed_branches = frappe.get_all("Audit Level", + filters={"sahayog_branch": ["in", sol_list]}, pluck="name") + + query_filters["emp_branch"] = ["in", allowed_branches] + else: + # If no sol ids, only show owned + query_filters["owner"] = user + if filters.get("rca_category"): query_filters["rca_category"] = filters.get("rca_category") @@ -67,7 +93,7 @@ def get_data(filters): audits = frappe.get_all("My Audits", filters=query_filters, - fields=["name", "recommendations", "rca_category", "action_point_with_tat", "status", "modified"] + fields=["name", "closing_date", "recommendations", "rca_category", "action_point_with_tat", "status", "modified"] ) for audit in audits: diff --git a/audit_management/audit_management/report/recurring_operational_reports/recurring_operational_reports.py b/audit_management/audit_management/report/recurring_operational_reports/recurring_operational_reports.py index 409ee29..a496e7a 100644 --- a/audit_management/audit_management/report/recurring_operational_reports/recurring_operational_reports.py +++ b/audit_management/audit_management/report/recurring_operational_reports/recurring_operational_reports.py @@ -3,6 +3,7 @@ import frappe from frappe import _ +from audit_management.audit_management.doctype.my_audits.my_audits import get_user_allowed_sol_ids def execute(filters=None): if not filters: filters = {} @@ -15,32 +16,55 @@ def execute(filters=None): else: # Final Closure Report return get_closure_columns(), get_closure_data(filters) +def get_perm_filters(): + user = frappe.session.user + roles = frappe.get_roles(user) + is_audit_manager = "Audit Manager" in roles or "Administrator" in roles or "System Manager" in roles + + if is_audit_manager: + return {} + + allowed_sol_ids = get_user_allowed_sol_ids(user) + if allowed_sol_ids: + sol_list = [str(s) for s in allowed_sol_ids] + allowed_branches = frappe.get_all("Audit Level", + filters={"sahayog_branch": ["in", sol_list]}, pluck="name") + return {"emp_branch": ["in", allowed_branches]} + + return {"owner": user} + def get_collateral_columns(): return [ {"label": _("Query ID"), "fieldname": "name", "fieldtype": "Link", "options": "My Audits", "width": 150}, + {"label": _("Closure Date"), "fieldname": "closing_date", "fieldtype": "Date", "width": 100}, {"label": _("Branch"), "fieldname": "emp_branch", "fieldtype": "Data", "width": 150}, {"label": _("Collateral Details"), "fieldname": "audit_query_box", "fieldtype": "Small Text", "width": 300}, {"label": _("Status"), "fieldname": "status", "fieldtype": "Data", "width": 100} ] def get_collateral_data(filters): + query_filters = get_perm_filters() + query_filters.update({"primary_nature": ["like", "%Collateral%"]}) return frappe.get_all("My Audits", - filters={"primary_nature": ["like", "%Collateral%"]}, - fields=["name", "emp_branch", "audit_query_box", "status"] + filters=query_filters, + fields=["name", "closing_date", "emp_branch", "audit_query_box", "status"] ) def get_interest_gl_columns(): return [ {"label": _("Query ID"), "fieldname": "name", "fieldtype": "Link", "options": "My Audits", "width": 150}, + {"label": _("Closure Date"), "fieldname": "closing_date", "fieldtype": "Date", "width": 100}, {"label": _("GL Details"), "fieldname": "audit_query_box", "fieldtype": "Small Text", "width": 300}, {"label": _("Deviation"), "fieldname": "root_cause_analysis", "fieldtype": "Small Text", "width": 200}, {"label": _("Status"), "fieldname": "status", "fieldtype": "Data", "width": 100} ] def get_interest_gl_data(filters): + query_filters = get_perm_filters() + query_filters.update({"primary_nature": ["like", "%Interest GL%"]}) return frappe.get_all("My Audits", - filters={"primary_nature": ["like", "%Interest GL%"]}, - fields=["name", "audit_query_box", "root_cause_analysis", "status"] + filters=query_filters, + fields=["name", "closing_date", "audit_query_box", "root_cause_analysis", "status"] ) def get_closure_columns(): @@ -48,10 +72,11 @@ def get_closure_columns(): {"label": _("Query ID"), "fieldname": "name", "fieldtype": "Link", "options": "My Audits", "width": 150}, {"label": _("Aging"), "fieldname": "aging", "fieldtype": "Int", "width": 100}, {"label": _("Status"), "fieldname": "status", "fieldtype": "Data", "width": 100}, - {"label": _("Closure Date"), "fieldname": "modified", "fieldtype": "Date", "width": 100} + {"label": _("Closure Date"), "fieldname": "closing_date", "fieldtype": "Date", "width": 100} ] def get_closure_data(filters): return frappe.get_all("My Audits", - fields=["name", "aging", "status", "modified"] + filters=get_perm_filters(), + fields=["name", "aging", "status", "closing_date"] )