156 lines
4.9 KiB
JavaScript
156 lines
4.9 KiB
JavaScript
$(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);
|
|
}
|