{"id":801,"date":"2025-06-04T16:45:36","date_gmt":"2025-06-04T16:45:36","guid":{"rendered":"https:\/\/maxiomassetmanagement.com\/?page_id=801"},"modified":"2025-06-11T04:39:38","modified_gmt":"2025-06-11T04:39:38","slug":"pms-complaints","status":"publish","type":"page","link":"https:\/\/maxiomassetmanagement.com\/blog\/pms-complaints\/","title":{"rendered":"PMS Complaints Table"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"801\" class=\"elementor elementor-801\" data-elementor-settings=\"[]\">\n\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t<section class=\"elementor-element elementor-element-61285f9 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section\" data-id=\"61285f9\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d3b78bc elementor-column elementor-col-100 elementor-top-column\" data-id=\"d3b78bc\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap  elementor-element-populated\">\n\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t<div class=\"elementor-element elementor-element-996fb65 elementor-widget elementor-widget-html\" data-id=\"996fb65\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Complaints Data Tables<\/title>\r\n    <style>\r\n        \/* Scope all styles to prevent global interference *\/\r\n        .complaints-wrapper {\r\n            font-family: Arial, sans-serif;\r\n            background-color: #f5f5f5;\r\n        }\r\n        .complaints-wrapper * {\r\n            box-sizing: border-box;\r\n        }\r\n        .complaints-wrapper .mid {\r\n            background-color: white;\r\n            padding: 20px;\r\n            border-radius: 8px;\r\n            box-shadow: 0 2px 4px rgba(0,0,0,0.1);\r\n            margin-bottom: 20px;\r\n        }\r\n        .complaints-wrapper h1 {\r\n            color: #333;\r\n            margin-bottom: 20px;\r\n            font-size: 2.5rem;\r\n            font-weight: 700;\r\n        }\r\n        .complaints-wrapper h2 {\r\n            color: #555;\r\n            margin-bottom: 15px;\r\n            font-size: 1.8rem;\r\n            font-weight: 600;\r\n        }\r\n        .complaints-wrapper h4 {\r\n            color: #666;\r\n            margin: 20px 0 10px 0;\r\n            font-size: 1.4rem;\r\n            font-weight: 600;\r\n        }\r\n        .complaints-wrapper table {\r\n            width: 100%;\r\n            border-collapse: collapse;\r\n            margin: 15px 0;\r\n            background-color: white;\r\n        }\r\n        .complaints-wrapper th, .complaints-wrapper td {\r\n            border: 1px solid #ddd;\r\n            padding: 12px 8px;\r\n            text-align: left;\r\n        }\r\n        .complaints-wrapper th {\r\n            background-color: #f8f9fa;\r\n            font-weight: bold;\r\n            color: #333;\r\n        }\r\n        .complaints-wrapper tr:nth-child(even) {\r\n            background-color: #f8f9fa;\r\n        }\r\n        .complaints-wrapper tr:hover {\r\n            background-color: #e8f4f8;\r\n        }\r\n        .complaints-wrapper .custom-complaints-container {\r\n            background-color: white;\r\n            padding: 20px;\r\n            border-radius: 8px;\r\n            box-shadow: 0 2px 4px rgba(0,0,0,0.1);\r\n        }\r\n        .complaints-wrapper .custom-complaints-title {\r\n            color: #333;\r\n            margin-bottom: 20px;\r\n            text-align: center;\r\n            font-size: 1.8rem;\r\n            font-weight: 600;\r\n        }\r\n        .complaints-wrapper .custom-complaints-select {\r\n            width: 150px;\r\n            height: 40px;\r\n            padding: 5px 10px;\r\n            border: 1px solid #ccc;\r\n            border-radius: 4px;\r\n            background-color: #fff;\r\n            display: inline-block !important;\r\n            appearance: auto !important;\r\n            -webkit-appearance: menulist !important;\r\n            -moz-appearance: menulist !important;\r\n        }\r\n        .complaints-wrapper a {\r\n            color: #007bff;\r\n            text-decoration: none;\r\n        }\r\n        .complaints-wrapper a:hover {\r\n            text-decoration: underline;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <div class=\"complaints-wrapper\">\r\n        <!-- Complaints Data Tables -->\r\n        <div class=\"mid\" id=\"complaints\">\r\n        <h1 style=\"text-align: center\">Complaint Data Of PMS<\/h1>\r\n        <h2 style=\"text-align: center\" id=\"complaint-date\"><\/h2>\r\n        <div>\r\n            <table border=\"1\">\r\n                <tr>\r\n                    <th>At the beginning of the month<\/th>\r\n                    <th>Pending at the end of last month<\/th>\r\n                    <th>Received during the month<\/th>\r\n                    <th>Resolved during the month<\/th>\r\n                    <th>Pending at the end of the month<\/th>\r\n                    <th>Reasons for pendency<\/th>\r\n                <\/tr>\r\n                <tr>\r\n                    <td>0<\/td>\r\n                    <td>0<\/td>\r\n                    <td>0<\/td>\r\n                    <td>0<\/td>\r\n                    <td>0<\/td>\r\n                    <td>-<\/td>\r\n                <\/tr>\r\n            <\/table>\r\n        <\/div>\r\n    <\/div>\r\n    <div>\r\n        <p>For Complaint data of PMS \u2013 INP000007881, <a target=\"_blank\"\r\n                href=\"https:\/\/jamaappprod.s3.ap-south-1.amazonaws.com\/compliants_data\/compliants%2Bdata.pdf\"> click here <\/a>\r\n        <\/p>\r\n    <\/div>\r\n        <h4 style=\"text-align: center\">Number Of Complaints For The Last Year<\/h4>\r\n        <div>\r\n            <table border=\"1\">\r\n                <tr>\r\n                    <th>At the beginning of the year<\/th>\r\n                    <th>Pending at the end of year<\/th>\r\n                    <th>Received during the year<\/th>\r\n                    <th>Resolved during the year<\/th>\r\n                    <th>Pending at the end of the year<\/th>\r\n                    <th>Reasons for pendency<\/th>\r\n                <\/tr>\r\n                <tr>\r\n                    <td>0<\/td>\r\n                    <td>0<\/td>\r\n                    <td>0<\/td>\r\n                    <td>0<\/td>\r\n                    <td>0<\/td>\r\n                    <td>-<\/td>\r\n                <\/tr>\r\n            <\/table>\r\n        <\/div>\r\n        <h4>Complaints Data of the Last Year<\/h4>\r\n        <div>\r\n            <table border=\"1\">\r\n                <tr>\r\n                    <th>Sr. No.<\/th>\r\n                    <th>Financial Year<\/th>\r\n                    <th>Compliance Audit Status<\/th>\r\n                    <th>Remarks If Any<\/th>\r\n                <\/tr>\r\n                <tr>\r\n                    <td>1<\/td>\r\n                    <td>FY 2023-2024<\/td>\r\n                    <td>Conducted<\/td>\r\n                    <td><\/td>\r\n                <\/tr>\r\n            <\/table>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"custom-complaints-container\">\r\n            <h2 class=\"custom-complaints-title\">Trend of Monthly Disposal of Complaints<\/h2>\r\n            <div class=\"custom-complaints-control-wrapper\" style=\"margin-bottom: 20px;\">\r\n                <label for=\"customYearSelect\" style=\"margin-right: 10px; font-weight: bold;\">Disposal Of Complaints:<\/label>\r\n                <div class=\"custom-complaints-select-container\" style=\"display: inline-block; position: relative;\">\r\n                    <!-- Using a unique ID and classes -->\r\n                    <select id=\"customYearSelect\" class=\"custom-complaints-select\" \r\n                        onchange=\"customUpdateComplaintsTable()\" \r\n                        style=\"width: 150px; height: 40px; padding: 5px 10px; border: 1px solid #ccc; border-radius: 4px; background-color: #fff; display: inline-block !important; appearance: auto !important; -webkit-appearance: menulist !important; -moz-appearance: menulist !important;\">\r\n                        <!-- Options will be populated dynamically -->\r\n                    <\/select>\r\n                <\/div>\r\n            <\/div>\r\n            <table class=\"custom-complaints-table\" style=\"width: 100%; border-collapse: collapse; margin-top: 20px;\">\r\n                <thead>\r\n                    <tr>\r\n                        <th style=\"border: 1px solid #ddd; padding: 8px; text-align: left;\">S.No<\/th>\r\n                        <th style=\"border: 1px solid #ddd; padding: 8px; text-align: left;\">Received On<\/th>\r\n                        <th style=\"border: 1px solid #ddd; padding: 8px; text-align: left;\">Carry Forward<\/th>\r\n                        <th style=\"border: 1px solid #ddd; padding: 8px; text-align: left;\">Received<\/th>\r\n                        <th style=\"border: 1px solid #ddd; padding: 8px; text-align: left;\">Resolved<\/th>\r\n                        <th style=\"border: 1px solid #ddd; padding: 8px; text-align: left;\">Pending<\/th>\r\n                    <\/tr>\r\n                <\/thead>\r\n                <tbody id=\"monthlyComplaintsTableBody\">\r\n                    <!-- Dynamic content will be inserted here -->\r\n                <\/tbody>\r\n            <\/table>\r\n        <\/div>\r\n\r\n    <script>\r\n        \/\/ Function to get the previous month's name and year\r\n        function getPreviousMonthInfo() {\r\n            const now = new Date();\r\n            const previousMonth = new Date(now.getFullYear(), now.getMonth() - 1, 1);\r\n            \r\n            const monthNames = [\r\n                \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n                \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\r\n            ];\r\n            \r\n            return {\r\n                month: monthNames[previousMonth.getMonth()],\r\n                year: previousMonth.getFullYear()\r\n            };\r\n        }\r\n\r\n        \/\/ Function to get ordinal suffix for day\r\n        function getOrdinal(day) {\r\n            if (day > 3 && day < 21) return 'th';\r\n            switch (day % 10) {\r\n                case 1: return 'st';\r\n                case 2: return 'nd';\r\n                case 3: return 'rd';\r\n                default: return 'th';\r\n            }\r\n        }\r\n\r\n        \/\/ Function to get the last day of previous month\r\n        function getLastDayOfPreviousMonth() {\r\n            const now = new Date();\r\n            const lastDayOfPrevMonth = new Date(now.getFullYear(), now.getMonth(), 0);\r\n            return lastDayOfPrevMonth.getDate();\r\n        }\r\n\r\n        \/\/ Function to update the complaint date dynamically\r\n        function updateComplaintDate() {\r\n            const prevMonthInfo = getPreviousMonthInfo();\r\n            const lastDay = getLastDayOfPreviousMonth();\r\n            const ordinal = getOrdinal(lastDay);\r\n            \r\n            const complaintDateElement = document.getElementById('complaint-date');\r\n            complaintDateElement.textContent = `Number of complaints (As of ${lastDay}${ordinal} ${prevMonthInfo.month} ${prevMonthInfo.year})*`;\r\n        }\r\n\r\n        \/\/ Function to populate year dropdown dynamically\r\n        function populateYearDropdown() {\r\n            const yearSelect = document.getElementById('customYearSelect');\r\n            const currentYear = new Date().getFullYear();\r\n            \r\n            \/\/ Clear existing options\r\n            yearSelect.innerHTML = '';\r\n            \r\n            \/\/ Add years from 2023 to current year\r\n            for (let year = 2023; year <= currentYear; year++) {\r\n                const option = document.createElement('option');\r\n                option.value = year;\r\n                option.textContent = year;\r\n                \/\/ Set the current year as selected by default\r\n                if (year === currentYear) {\r\n                    option.selected = true;\r\n                }\r\n                yearSelect.appendChild(option);\r\n            }\r\n        }\r\n\r\n        \/\/ Function to populate the monthly complaints table dynamically\r\n        function populateMonthlyComplaintsTable() {\r\n            const selectedYear = parseInt(document.getElementById('customYearSelect').value);\r\n            const currentDate = new Date();\r\n            const currentYear = currentDate.getFullYear();\r\n            const currentMonth = currentDate.getMonth(); \/\/ 0-based (0 = January, 11 = December)\r\n            \r\n            const monthNames = [\r\n                \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n                \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\r\n            ];\r\n            \r\n            const tableBody = document.getElementById('monthlyComplaintsTableBody');\r\n            tableBody.innerHTML = ''; \/\/ Clear existing content\r\n            \r\n            \/\/ Define start date: June 2023 (month index 5)\r\n            const startYear = 2023;\r\n            const startMonth = 5; \/\/ June (0-based)\r\n            \r\n            let serialNumber = 1;\r\n            \r\n            if (selectedYear === 2023) {\r\n                \/\/ For 2023, start from June (index 5) to December (index 11)\r\n                for (let month = startMonth; month <= 11; month++) {\r\n                    const row = document.createElement('tr');\r\n                    row.innerHTML = `\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">${serialNumber}<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">${monthNames[month]} ${selectedYear}<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                    `;\r\n                    tableBody.appendChild(row);\r\n                    serialNumber++;\r\n                }\r\n            } else if (selectedYear > 2023 && selectedYear < currentYear) {\r\n                \/\/ For years between 2023 and current year, show all 12 months\r\n                for (let month = 0; month <= 11; month++) {\r\n                    const row = document.createElement('tr');\r\n                    row.innerHTML = `\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">${serialNumber}<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">${monthNames[month]} ${selectedYear}<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                    `;\r\n                    tableBody.appendChild(row);\r\n                    serialNumber++;\r\n                }\r\n            } else if (selectedYear === currentYear) {\r\n                \/\/ For current year, show only up to previous month\r\n                const monthsToShow = currentMonth; \/\/ currentMonth is 0-based, so this gives us months up to previous month\r\n                for (let month = 0; month < monthsToShow; month++) {\r\n                    const row = document.createElement('tr');\r\n                    row.innerHTML = `\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">${serialNumber}<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">${monthNames[month]} ${selectedYear}<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                        <td style=\"border: 1px solid #ddd; padding: 8px;\">0<\/td>\r\n                    `;\r\n                    tableBody.appendChild(row);\r\n                    serialNumber++;\r\n                }\r\n                \r\n                \/\/ If no months to show for current year, display a message\r\n                if (monthsToShow === 0) {\r\n                    const row = document.createElement('tr');\r\n                    row.innerHTML = `\r\n                        <td colspan=\"6\" style=\"border: 1px solid #ddd; padding: 8px; text-align: center; font-style: italic;\">\r\n                            No data available for ${selectedYear} yet\r\n                        <\/td>\r\n                    `;\r\n                    tableBody.appendChild(row);\r\n                }\r\n            } else {\r\n                \/\/ For years before 2023 or invalid selections\r\n                const row = document.createElement('tr');\r\n                row.innerHTML = `\r\n                    <td colspan=\"6\" style=\"border: 1px solid #ddd; padding: 8px; text-align: center; font-style: italic;\">\r\n                        No data available for ${selectedYear}\r\n                    <\/td>\r\n                `;\r\n                tableBody.appendChild(row);\r\n            }\r\n        }\r\n\r\n        \/\/ Updated function for the existing dropdown functionality\r\n        function customUpdateComplaintsTable() {\r\n            \/\/ Update the monthly complaints table when year changes\r\n            populateMonthlyComplaintsTable();\r\n            console.log('Table updated for year:', document.getElementById('customYearSelect').value);\r\n        }\r\n\r\n        \/\/ Initialize the date and table when the page loads\r\n        document.addEventListener('DOMContentLoaded', function() {\r\n            updateComplaintDate();\r\n            populateYearDropdown();\r\n            populateMonthlyComplaintsTable();\r\n        });\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Complaints Data Tables Complaint Data Of PMS At the beginning of the month Pending at the end of last month Received during the month Resolved during the month Pending at the end of the month Reasons for pendency 0 0 0 0 0 &#8211; For Complaint data of PMS \u2013 INP000007881, click here Number Of&hellip;&nbsp;<a href=\"https:\/\/maxiomassetmanagement.com\/blog\/pms-complaints\/\" class=\"\" rel=\"bookmark\">Read More &raquo;<span class=\"screen-reader-text\">PMS Complaints Table<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/template-pagebuilder-full-width.php","meta":{"footnotes":""},"tags":[],"class_list":["post-801","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/maxiomassetmanagement.com\/blog\/wp-json\/wp\/v2\/pages\/801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maxiomassetmanagement.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/maxiomassetmanagement.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/maxiomassetmanagement.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maxiomassetmanagement.com\/blog\/wp-json\/wp\/v2\/comments?post=801"}],"version-history":[{"count":17,"href":"https:\/\/maxiomassetmanagement.com\/blog\/wp-json\/wp\/v2\/pages\/801\/revisions"}],"predecessor-version":[{"id":886,"href":"https:\/\/maxiomassetmanagement.com\/blog\/wp-json\/wp\/v2\/pages\/801\/revisions\/886"}],"wp:attachment":[{"href":"https:\/\/maxiomassetmanagement.com\/blog\/wp-json\/wp\/v2\/media?parent=801"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maxiomassetmanagement.com\/blog\/wp-json\/wp\/v2\/tags?post=801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}