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

238 lines
8.1 KiB
JavaScript

function postPutReceiving(IsCompleted) {
loader = $('#overlay, #loader').css('z-index', 1070);
PONo = $('#poNo').val();
POTypeId = $('#poTypeId').val();
EmailAddress = $('#emailAddress').val();
Remarks = $('#remarks').val();
ItemList = [];
tableElement = $('#RRdataTable').DataTable();
var isValid = true; // Flag to track validity
const drNoInput = document.getElementById('suppDocNo');
const docTypeIdInput = document.getElementById('docTypeId');
const receivedDateInput = document.getElementById('receivedDate');
const rrNoInput = document.getElementById('rrNo');
drNoInput.addEventListener('input', removeErrorClass);
docTypeIdInput.addEventListener('input', removeErrorClass);
receivedDateInput.addEventListener('input', removeErrorClass);
DRNo = drNoInput.value;
DocTypeId = docTypeIdInput.value;
RRNo = parseFloat(rrNoInput.value);
var ReceivedDate = receivedDateInput.value;
if (RRNo == 0) {
rrNoInput.classList.add('error-input');
alert('RRNo cannot be 0!');
}
if (!DRNo || !DocTypeId || !ReceivedDate || !RRNo) {
alert('Please fill the required fields !');
if (!DRNo) {
drNoInput.classList.add('error-input');
}
if (!DocTypeId) {
docTypeIdInput.classList.add('error-input');
}
if (!ReceivedDate) {
receivedDateInput.classList.add('error-input');
}
if (!RRNo) {
rrNoInput.classList.add('error-input');
}
return;
}
tableElement.rows().every(function () {
rowData = this.data();
var $row = $(this.node());
var prDetailsId = rowData.prDetailsId;
qtyRequest = rowData.remainingQty;
// Get the edited value from the input field and remove commas for calculation/posting
var qtyReceived = $row.find('.editable-qty').eq(0).val().replace(/,/g, '');
// Convert qtyReceived to a number to avoid it being a string
qtyReceived = parseFloat(qtyReceived);
// Ensure the value is valid (check for NaN)
if (isNaN(qtyReceived) || qtyReceived <= 0 || qtyReceived === null) {
alert('Invalid Quantity Received. Please provide a valid number.');
qtyReceived = rowData.quantityReceived; // Default to original if invalid
}
if (parseFloat(qtyReceived) > parseFloat(qtyRequest)) {
alert('Qty Received cannot be more than Remaining Qty!');
isValid = false;
return false;
}
if (qtyReceived <= 0 || qtyReceived == null) {
alert('Qty Received Cannot be 0 or empty!, please remove instead!');
isValid = false;
return false;
}
var itemData = {
PRDetailsId: prDetailsId,
QuantityReceived: qtyReceived,
};
ItemList.push(itemData);
});
if (!isValid) {
return;
}
if (ItemList.length <= 0) {
alert("You don't have a list to be received!");
return;
}
const confirmation = confirm('Are you sure you want to proceed?');
if (confirmation) {
$.ajax($.extend({
url: '/Receiving/PostPutReceiving',
type: 'POST',
data: { ItemList, POTypeId, EmailAddress, PONo, DocTypeId, Remarks, DRNo, ReceivedDate, RRNo, IsCompleted },
success: function (response) {
if (response.success) {
$('#viewRRDetailByPO').modal('hide');
receivingTable.ajax.reload();
alert('Item Received Successfully!');
} else {
alert('Failed: ' + response.response);
}
},
error: errorHandler
}, beforeComplete(loader)));
}
}
function putPOClose() {
loader = $('#overlay, #loader').css('z-index', 1070);
PONo = $('#poNo').val();
POTypeId = $('#poTypeId').val();
EmailAddress = $('#emailAddress').val();
Remarks = $('#remarks').val();
DocTypeId = $('#docTypeId').val();
ItemList = [];
tableElement = $('#FRRdataTable').DataTable();
tableElement.rows().every(function () {
rowData = this.data();
var prDetailsId = rowData.prDetailsId;
var itemData = {
PRDetailsId: prDetailsId,
};
ItemList.push(itemData);
});
if (ItemList.length <= 0) {
alert("You don't have a list to be closed!");
return;
}
const confirmation = confirm('Are you sure you want to Close this #P.O.:' + PONo + '?');
if (confirmation) {
$.ajax($.extend({
url: '/Receiving/PutPOClose',
type: 'POST',
data: { ItemList, POTypeId, EmailAddress, PONo, DocTypeId, Remarks },
success: function (response) {
if (response.success) {
$('#viewRRDetailByPO').modal('hide');
receivingTableTable.ajax.reload();
alert('PO Closed Successfully!');
} else {
alert('Failed: ' + response.response);
}
},
error: errorHandler
}, beforeComplete(loader)));
}
}
function putRRNoSeries() {
loader = $('#overlay, #loader').css('z-index', 1075);
const rrNo = document.getElementById('rrNoSeries');
rrNo.addEventListener('input', removeErrorClass);
const RRNo = rrNo.value;
if (!RRNo) {
alert('Please fill the required fields !');
rrNo.classList.add('error-input');
return;
}
var oldRRNo= $('#rrNo').val();
const confirmation = confirm('Are you sure you want to change this #RRNo:'+ oldRRNo + ' into: ' + RRNo + '?');
if (confirmation) {
$.ajax($.extend({
url: '/Receiving/PutRRNoSeries',
type: 'POST',
data: { RRNo },
success: function (response) {
if (response.success) {
$('#rrNo').val(parseFloat(RRNo) + 1);
$('#viewRRNo').modal('hide');
alert('RRNo has been updated!');
} else {
alert('Failed: ' + response.response);
}
},
error: errorHandler
}, beforeComplete(loader)));
}
}
function postPOClosing() {
loader = $('#overlay, #loader').css('z-index', 1060);
var PONo = document.getElementById('F-PONumber').innerText;
const confirmation = confirm('Are you sure you want to proceed?');
if (confirmation) {
$.ajax({
url: '/Receiving/PostPOClosing',
type: 'POST',
data: { PONo }, // Pass requestData array to the backend
success: function (response) {
if (response.success) {
prTable.ajax.reload();
prDataTable.ajax.reload();
$('#viewPRDetails').modal('hide');
$('#viewPRItemDetails').modal('hide');
alert('P.O. successfully closed!');
} else {
itemTable.ajax.reload();
alert('Failed: ' + response.response);
}
},
beforeSend: function () {
// Show the loader before making the AJAX request
loader.show();
},
complete: function () {
// Hide the loader after the AJAX request is complete (success or error)
loader.hide();
}
});
}
}
function deleteSKUCodeRec(prDetailsId) {
const confirmation = confirm('Are you sure you want to proceed?');
if (confirmation) {
var table = $('#RRdataTable').DataTable();
var rowToRemove = null;
table.rows().every(function (rowIdx) {
var data = this.data();
if (data && data.prDetailsId == prDetailsId) {
rowToRemove = this;
return false;
}
});
if (rowToRemove) {
rowToRemove.remove();
table.rows().invalidate().draw(false);
} else {
console.log('No matching row found for prDetailsId:', prDetailsId);
}
}
}