From fd3df1fd7c2f2d9cb0948a365f885e8aeebdc534 Mon Sep 17 00:00:00 2001 From: Suraiyya Sutriya Date: Fri, 22 May 2026 13:13:00 +0530 Subject: [PATCH 1/3] fix: sync child stages to hardcoded fields robustly --- .../doctype/my_audits/my_audits.py | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/audit_management/audit_management/doctype/my_audits/my_audits.py b/audit_management/audit_management/doctype/my_audits/my_audits.py index 9bbedba..17d53e7 100755 --- a/audit_management/audit_management/doctype/my_audits/my_audits.py +++ b/audit_management/audit_management/doctype/my_audits/my_audits.py @@ -239,16 +239,28 @@ def sync_new_to_old(self): if not self.audit_stages: return - mapping = {m["label"]: m["prefix"] for m in self.get_prefix_mapping()} + mapping = self.get_prefix_mapping() max_level = 0 for row in self.audit_stages: - prefix = mapping.get(row.stage_name) + prefix = None + for m in mapping: + if m["label"].lower() in (row.stage_name or "").lower(): + prefix = m["prefix"] + break + + # Debugging log + frappe.log_error( + title="Stage Mapping Debug", + message=f"Stage Name: {row.stage_name} | Found Prefix: {prefix}" + ) + if prefix: + self.set(f"{prefix}_name", row.employee_name) + self.set(f"{prefix}_mail", row.email) self.set(f"{prefix}_user_status", row.status) self.set(f"{prefix}_response_box", row.response) self.set(f"{prefix}_attach_box", row.attachment) - self.set(f"{prefix}_mail", row.email) if row.pending_time: self.set(f"{prefix}_pending_time", row.pending_time) @@ -259,6 +271,8 @@ def sync_new_to_old(self): max_level = lvl except: pass + + # ... (rest of the function stays the same) # Update Operational Tracking Level if max_level > 0: @@ -290,7 +304,9 @@ def get_prefix_mapping(self): {"prefix": "zom", "stage": "4", "label": "ZOM"}, {"prefix": "gm", "stage": "5", "label": "GM"}, {"prefix": "hr", "stage": "6", "label": "HR"}, + {"prefix": "chro", "stage": "7", "label": "CHRO"}, {"prefix": "coo", "stage": "8", "label": "COO"}, + {"prefix": "cfo", "stage": "9", "label": "CFO"}, {"prefix": "ceo", "stage": "10", "label": "CEO"} ] From b8ef5c98d7df22c1a02b101ddacdcb9123ac2679 Mon Sep 17 00:00:00 2001 From: Suraiyya Sutriya Date: Fri, 22 May 2026 13:13:03 +0530 Subject: [PATCH 2/3] feat: add CFO and CHRO response filters to report --- .../my_audits_report/my_audits_report.js | 262 +++++++++--------- 1 file changed, 131 insertions(+), 131 deletions(-) diff --git a/audit_management/audit_management/report/my_audits_report/my_audits_report.js b/audit_management/audit_management/report/my_audits_report/my_audits_report.js index 79b22b6..31fb32d 100755 --- a/audit_management/audit_management/report/my_audits_report/my_audits_report.js +++ b/audit_management/audit_management/report/my_audits_report/my_audits_report.js @@ -3,136 +3,136 @@ /* eslint-disable */ frappe.query_reports["My Audits Report"] = { - "filters": [ - { - fieldname: "from_date", - label: "From Date", - fieldtype: "Date" - }, - { - fieldname: "to_date", - label: "To Date", - fieldtype: "Date" - }, - { - fieldname: "emp_branch", - label: "Branch", - fieldtype: "Link", - options: "Audit Level" - }, - { - fieldname: "query_generated_by_empid", - label: "Generated By (Emp ID)", - fieldtype: "Link", - options: "Employee", - get_query: () => { - return { - filters: { - status: "Active", - department: "Audit" - } - }; - } - }, - { - fieldname: "query_generated_by_name", - label: "Generated By (Name)", - fieldtype: "Link", - options: "Employee", - get_query: () => { - return { - filters: { - status: "Active", - department: "Audit" - } - }; - } - }, - { - fieldname: "query_type", - label: "Query Type", - fieldtype: "Select", - options: "\nAudit Report Compliance\nCritical Compliance" - }, - { - fieldname: "status", - label: "Query Status", - fieldtype: "Select", - options: "\nDraft\nPending\nClose" - }, - { - fieldname: "bm_user_status", - label: "BM Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - }, - { - fieldname: "dh_user_status", - label: "DH Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - }, - { - fieldname: "com_user_status", - label: "COM Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - }, - { - fieldname: "rm_user_status", - label: "RM Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - }, - { - fieldname: "rom_user_status", - label: "ROM Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - }, - { - fieldname: "zm_user_status", - label: "ZM Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - }, - { - fieldname: "zom_user_status", - label: "ZOM Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - }, - { - fieldname: "gm_user_status", - label: "GM Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - }, - { - fieldname: "hr_user_status", - label: "HR Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - }, - { - fieldname: "coo_user_status", - label: "COO Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - }, - { - fieldname: "ceo_user_status", - label: "CEO Response Status", - fieldtype: "Select", - options: "\nResponded\nNo response" - } - ], + filters: [ + { + fieldname: "from_date", + label: "From Date", + fieldtype: "Date", + }, + { + fieldname: "to_date", + label: "To Date", + fieldtype: "Date", + }, + { + fieldname: "emp_branch", + label: "Branch", + fieldtype: "Link", + options: "Audit Level", + }, + { + fieldname: "query_generated_by_empid", + label: "Generated By (Emp ID)", + fieldtype: "Link", + options: "Employee", + get_query: () => { + return { + filters: { + status: "Active", + department: "Audit", + }, + }; + }, + }, + { + fieldname: "query_generated_by_name", + label: "Generated By (Name)", + fieldtype: "Link", + options: "Employee", + get_query: () => { + return { + filters: { + status: "Active", + department: "Audit", + }, + }; + }, + }, + { + fieldname: "query_type", + label: "Query Type", + fieldtype: "Select", + options: "\nAudit Report Compliance\nCritical Compliance", + }, + { + fieldname: "status", + label: "Query Status", + fieldtype: "Select", + options: "\nDraft\nPending\nClosed", + }, + { + fieldname: "bm_user_status", + label: "BM Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + { + fieldname: "dh_user_status", + label: "DH Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + { + fieldname: "com_user_status", + label: "COM Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + { + fieldname: "rm_user_status", + label: "RM Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + { + fieldname: "rom_user_status", + label: "ROM Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + { + fieldname: "zm_user_status", + label: "ZM Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + { + fieldname: "zom_user_status", + label: "ZOM Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + { + fieldname: "gm_user_status", + label: "GM Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + { + fieldname: "hr_user_status", + label: "HR Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + { + fieldname: "coo_user_status", + label: "COO Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + { + fieldname: "ceo_user_status", + label: "CEO Response Status", + fieldtype: "Select", + options: "\nResponded\nNo response", + }, + ], - // clear filters button - onload: function (report) { - report.page.add_inner_button(__('Clear Filters'), function () { - report.filters.forEach(f => f.set_value('')); - report.refresh(); - }); - } + // clear filters button + onload: function (report) { + report.page.add_inner_button(__("Clear Filters"), function () { + report.filters.forEach((f) => f.set_value("")); + report.refresh(); + }); + }, }; From 3484302d04efc346685200bbc3e4cdd13e483174 Mon Sep 17 00:00:00 2001 From: Suraiyya Sutriya Date: Fri, 22 May 2026 13:13:14 +0530 Subject: [PATCH 3/3] feat: add CFO and CHRO columns to report data --- .../report/my_audits_report/my_audits_report.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/audit_management/audit_management/report/my_audits_report/my_audits_report.py b/audit_management/audit_management/report/my_audits_report/my_audits_report.py index 0673b38..71730bb 100755 --- a/audit_management/audit_management/report/my_audits_report/my_audits_report.py +++ b/audit_management/audit_management/report/my_audits_report/my_audits_report.py @@ -43,6 +43,10 @@ def get_columns(): {"label": "HR Response", "fieldname": "hr_response_box", "fieldtype": "Data", "width": 180}, {"label": "COO Name", "fieldname": "coo_name", "fieldtype": "Data", "width": 120}, {"label": "COO Response", "fieldname": "coo_response_box", "fieldtype": "Data", "width": 180}, + {"label": "CFO Name", "fieldname": "cfo_name", "fieldtype": "Data", "width": 120}, + {"label": "CFO Response", "fieldname": "cfo_response_box", "fieldtype": "Data", "width": 180}, + {"label": "CHRO Name", "fieldname": "chro_name", "fieldtype": "Data", "width": 120}, + {"label": "CHRO Response", "fieldname": "chro_response_box", "fieldtype": "Data", "width": 180}, {"label": "CEO Name", "fieldname": "ceo_name", "fieldtype": "Data", "width": 120}, {"label": "CEO Response", "fieldname": "ceo_response_box", "fieldtype": "Data", "width": 180}, ] @@ -151,6 +155,8 @@ def get_data(filters): gm_name, gm_response_box, hr_name, hr_response_box, coo_name, coo_response_box, + cfo_name, cfo_response_box, + chro_name, chro_response_box, ceo_name, ceo_response_box FROM `tabMy Audits` {where_clause}