NonInventPurchasingSystem/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/PRPOSummaryRep.js
2026-01-20 07:44:30 +08:00

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);
}