$(document).ready(function () { loader = $('#overlay, #loader'); setDefaultDates(); updateReportHeader(1); initializeDataTable(); setupEventListeners(); }); function updateReportHeader(statusValue) { const headerTitles = { 1: 'Purchase Requisition Summary Report - Per Department', 2: 'Purchase Requisition Summary Report - Per Item' }; const headerElement = document.getElementById('reportHeader'); if (headerElement) { headerElement.innerHTML = headerTitles[statusValue] || headerTitles[1]; } return headerTitles; } function initializeDataTable() { poReportComponent(1).done(function () { const From = $('#dateFrom').val(); const To = $('#dateTo').val(); const reportTitle = document.getElementById('reportHeader').innerHTML + '-' + From + '_to _' + To; poDataTable = $('#PORepTable').DataTable({ ajax: $.extend({ url: '/POMgmt/GetPRPOSummaryReport', type: 'GET', data: { From, To } }, beforeComplete(loader)), initComplete: initCompleteCallback(), dom: 'lBfrtip', buttons: [ { extend: 'csv', title: reportTitle }, { extend: 'excel', title: reportTitle }, { extend: 'pdf', title: reportTitle } ], columns: colOnPRPODeptReports, responsive: true, pageLength: 25, lengthMenu: [[25, 50, -1], [25, 50, "All"]], language: { emptyTable: "No record available" }, error: errorHandler }); }) } function setupEventListeners() { document.querySelectorAll('input[name="status"]').forEach(radio => { radio.addEventListener('change', function () { const statusValue = getStatusValue(this.value); updateReportHeader(statusValue); refreshDataTable(statusValue); }); radio.addEventListener('click', function () { console.log('Radio clicked:', this.value); }); }); } function refreshDataTable(POStatus = null) { // Get current status if not provided if (POStatus === null) { const selectedRadio = document.querySelector('input[name="status"]:checked'); POStatus = getStatusValue(selectedRadio.value); } const From = $('#dateFrom').val(); const To = $('#dateTo').val(); // Validate dates if (!From || !To) { alert('Please select both From and To dates'); return; } if (new Date(From) > new Date(To)) { alert('From date cannot be later than To date'); return; } // Destroy existing DataTable if it exists tableDestroy('poDataTable'); poReportComponent(POStatus).done(function () { const api = (POStatus == 1) ? '/POMgmt/GetPRPOSummaryReport' : '/POMgmt/GetPRPOSummaryItem'; const reportTitle = document.getElementById('reportHeader').innerHTML + '-' + From + '_to _' + To; dynamicColumn = (POStatus == 1) ? colOnPRPODeptReports : colOnPRPOItemReports; poDataTable = $('#PORepTable').DataTable({ ajax: $.extend({ url: api, type: 'GET', data: { From, To } }, beforeComplete(loader)), initComplete: initCompleteCallback(), columns: dynamicColumn, pageLength: 25, lengthMenu: [[25, 50, -1], [25, 50, "All"]], dom: 'lBfrtip', buttons: [ { extend: 'csv', title: reportTitle }, { extend: 'excel', title: reportTitle }, { extend: 'pdf', title: reportTitle } ], responsive: true, language: { emptyTable: "No record available" }, error: errorHandler }); }) } function getStatusValue(status) { const statusMap = { 'department': 1, 'item': 2 }; return statusMap[status] || 1; } function setDefaultDates() { const currentDate = new Date(); const currentYear = currentDate.getFullYear(); // Set dateFrom to January 1 of current year const dateFrom = new Date(currentYear, 0, 1); // Month is 0-indexed const dateFromFormatted = dateFrom.toISOString().split('T')[0]; $('#dateFrom').val(dateFromFormatted); // Set dateTo to current date const dateToFormatted = currentDate.toISOString().split('T')[0]; $('#dateTo').val(dateToFormatted); } // Legacy function for onclick compatibility (if needed) function getReport(POStatus) { refreshDataTable(POStatus); }