463 lines
18 KiB
JavaScript
463 lines
18 KiB
JavaScript
function postPutPurchase() {
|
|
loader = $('#overlay, #loader').css('z-index', 1060);
|
|
isValid = true;
|
|
|
|
var Remarks = document.getElementById('requestorRemarks').value;
|
|
var ProjectCode = document.getElementById('projectCode').value;
|
|
|
|
const selectedItems = Object.values(selectedProductsMap);
|
|
if (selectedItems.length === 0) {
|
|
showToast('warning', 'Please select items first!', 'Approval failed', 4000);
|
|
return;
|
|
}
|
|
|
|
const requestData = selectedItems.map(item => {
|
|
return {
|
|
ItemCartId: item.itemCartId,
|
|
ItemNo: item.itemNo,
|
|
Qty: item.qty
|
|
};
|
|
});
|
|
|
|
console.log(requestData);
|
|
|
|
var DateNeeded = document.getElementById('dateNeeded').value;
|
|
|
|
if (!DateNeeded) {
|
|
showToast('warning', 'Please choose date needed!', 'P.R. submission failed', 4000);
|
|
confirmUpdateListener = false;
|
|
return;
|
|
}
|
|
|
|
if (RequestTypeId == 3) {
|
|
updateDepartmentId();
|
|
var ChargeTo = document.getElementById('departmentId').value;
|
|
if (!ChargeTo) {
|
|
showToast('warning', 'Please choose a department to be in charge of!', 'P.R. submission failed', 4000);
|
|
confirmUpdateListener = false;
|
|
return;
|
|
}
|
|
}
|
|
|
|
showConfirmation({
|
|
title: 'Purchasing Requisition',
|
|
message: 'Are you sure you want to proceed? This action cannot be undone.',
|
|
type: 'warning',
|
|
confirmText: 'Yes',
|
|
cancelText: 'No'
|
|
}).then((confirmed) => {
|
|
if (confirmed) {
|
|
// Create FormData to handle file upload
|
|
var formData = new FormData();
|
|
|
|
// Append file if exists
|
|
var fileInput = document.getElementById('fileAttachment');
|
|
if (fileInput.files.length > 0) {
|
|
formData.append('file', fileInput.files[0]);
|
|
}
|
|
|
|
// Append other data
|
|
formData.append('DateNeeded', DateNeeded);
|
|
formData.append('RequestTypeId', RequestTypeId);
|
|
formData.append('ChargeTo', ChargeTo || '');
|
|
formData.append('Remarks', Remarks || '');
|
|
formData.append('ProjectCode', ProjectCode || '');
|
|
|
|
// Append array data - serialize as JSON
|
|
formData.append('ItemCartIds', JSON.stringify(requestData));
|
|
|
|
$.ajax({
|
|
url: '/ItemMgmt/PostPurchRequest',
|
|
type: 'POST',
|
|
data: formData,
|
|
processData: false, // Important: Don't process the data
|
|
contentType: false, // Important: Don't set content type
|
|
success: function (response) {
|
|
if (response.success) {
|
|
itemTable.ajax.reload();
|
|
$('#addDateNeeded').modal('hide');
|
|
showToast('success', 'P.R. Successfully Created!', 'Success', 4000);
|
|
var totalSelectedLabel = $('#totalSelected');
|
|
totalSelectedLabel.text('');
|
|
|
|
// Clear form after successful submission
|
|
clearFormData();
|
|
} else {
|
|
itemTable.ajax.reload();
|
|
showToast('error', response.response, 'P.R. submission failed', 4000);
|
|
}
|
|
},
|
|
error: errorHandler,
|
|
beforeSend: function () {
|
|
loader.show();
|
|
},
|
|
complete: function () {
|
|
loader.hide();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function putItemDetails() {
|
|
loader = $('#overlay, #loader');
|
|
const itemPictureImageInput = document.getElementById("itemPictureImageInput");
|
|
|
|
if (itemPictureImageInput && itemPictureImageInput.files.length > 0) {
|
|
const file = itemPictureImageInput.files[0];
|
|
|
|
const allowedExtensions = ['.jpg', '.jpeg', '.png'];
|
|
|
|
const fileExtension = '.' + file.name.split('.').pop().toLowerCase();
|
|
if (!allowedExtensions.includes(fileExtension)) {
|
|
showToast('error', 'Only .jpg, .jpeg, and .png files are allowed.', 'Invalid File Type', 4000);
|
|
return;
|
|
}
|
|
|
|
const maxSizeInBytes = 2 * 1024 * 1024;
|
|
if (file.size > maxSizeInBytes) {
|
|
const fileSizeInMB = (file.size / (1024 * 1024)).toFixed(2);
|
|
showToast('error', `File size (${fileSizeInMB} MB) exceeds the 2MB limit. Please choose a smaller image.`, 'File Too Large', 4000);
|
|
|
|
return;
|
|
}
|
|
|
|
const reader = new FileReader();
|
|
reader.onload = function (event) {
|
|
sendUpdateRequest({ itemAttachPath: event.target.result }, loader);
|
|
};
|
|
reader.readAsDataURL(file);
|
|
} else {
|
|
sendUpdateRequest({ itemAttachPath: null }, loader);
|
|
}
|
|
}
|
|
function sendUpdateRequest(data, loader) {
|
|
const formElements = {
|
|
itemNo: document.getElementById('itemNo').value,
|
|
itemAttachId: document.getElementById('itemAttachId').value,
|
|
uomId: document.getElementById('uomId').value,
|
|
itemName: document.getElementById('itemName'),
|
|
itemDescription: document.getElementById('itemDescription'),
|
|
itemLocalName: document.getElementById('itemLocalName'),
|
|
uomName: document.getElementById('uomName'),
|
|
itemQty: document.getElementById('itemQty'),
|
|
itemClassId: document.getElementById('itemClassId').value,
|
|
packagingTypeId: document.getElementById('packagingTypeId').value,
|
|
prTypeId: document.getElementById('prTypeId').value,
|
|
itemColorId: document.getElementById('itemColorId').value,
|
|
itemLocalId: document.getElementById('itemLocalId').value,
|
|
isCommon: document.getElementById('isCommon').value === "true",
|
|
requestTypeId: document.getElementById('requestTypeId')
|
|
};
|
|
|
|
['itemName', 'itemDescription', 'itemLocalName', 'uomName', 'itemQty', 'requestTypeId'].forEach(id => {
|
|
formElements[id].addEventListener('input', removeErrorClass);
|
|
});
|
|
|
|
const requiredFields = [
|
|
{ element: formElements.itemName, value: formElements.itemName.value },
|
|
{ element: formElements.itemDescription, value: formElements.itemDescription.value },
|
|
{ element: formElements.itemLocalName, value: formElements.itemLocalName.value },
|
|
{ element: formElements.itemQty, value: formElements.itemQty.value, condition: value => value != 0 },
|
|
{ element: formElements.uomName, value: formElements.uomName.value },
|
|
{ element: formElements.requestTypeId, value: formElements.requestTypeId.value }
|
|
];
|
|
|
|
const isValid = requiredFields.every(field => {
|
|
const isFieldValid = field.condition ? field.condition(field.value) : !!field.value;
|
|
if (!isFieldValid) {
|
|
field.element.classList.add('error-input');
|
|
}
|
|
return isFieldValid;
|
|
});
|
|
|
|
if (!isValid) {
|
|
showToast('warning', 'Please fill the required fields!', 'Update item failed', 4000);
|
|
return;
|
|
}
|
|
|
|
const itemCategoryId = $('#ItemCategory2Id').val();
|
|
const isMDLD = document.getElementById("mdld").checked;
|
|
|
|
const submitData = {
|
|
ItemNo: formElements.itemNo,
|
|
ItemCodeId: ItemCodeId,
|
|
ItemName: formElements.itemName.value,
|
|
ItemDescription: formElements.itemDescription.value,
|
|
ItemCategoryId: itemCategoryId,
|
|
ItemLocalId: formElements.itemLocalId,
|
|
IsMDLD: isMDLD,
|
|
ItemClassId: formElements.itemClassId,
|
|
PackagingTypeId: formElements.packagingTypeId,
|
|
PRTypeId: formElements.prTypeId,
|
|
UOMId: formElements.uomId,
|
|
ItemColorId: formElements.itemColorId,
|
|
Qty: formElements.itemQty.value,
|
|
ItemAttachPath: data.itemAttachPath,
|
|
ItemAttachId: formElements.itemAttachId,
|
|
IsCommon: formElements.isCommon,
|
|
RequestTypeId: formElements.requestTypeId.value
|
|
};
|
|
showConfirmation({
|
|
title: 'Update Item Details',
|
|
message: 'Are you sure you want to update this item? This action cannot be undone.',
|
|
type: 'warning',
|
|
confirmText: 'Yes, Update',
|
|
cancelText: 'Keep Item'
|
|
}).then((confirmed) => {
|
|
if (confirmed) {
|
|
$.ajax({
|
|
url: '/ItemMgmt/PutItemDetail',
|
|
type: 'POST',
|
|
data: submitData,
|
|
success: function (response) {
|
|
if (response.success) {
|
|
clearTextModal();
|
|
fetchAndRefreshTable();
|
|
document.getElementById("itemPictureImageInput").value = '';
|
|
document.getElementById('btnAddToCart').style.display = 'block';
|
|
showToast('success', 'Updated successfully!', 'Success', 4000);
|
|
} else {
|
|
loader.hide();
|
|
isFullFilled();
|
|
showToast('error', response.response, title + ' failed', 4000);
|
|
}
|
|
},
|
|
beforeSend: function () {
|
|
loader.show();
|
|
},
|
|
complete: function () {
|
|
loader.hide();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
//function postPutPurchase() {
|
|
// loader = $('#overlay, #loader').css('z-index', 1060);
|
|
// isValid = true;
|
|
// var Remarks = document.getElementById('requestorRemarks').value;
|
|
// var selectedCheckboxes = $('.selectedItem-checkbox:checked');
|
|
// var requestData = [];
|
|
// selectedCheckboxes.each(function () {
|
|
// var $row = $(this).closest('tr');
|
|
// var rowIndex = itemTable.row($row).index();
|
|
// var rowData = itemTable.row(rowIndex).data();
|
|
|
|
// var itemCartId = rowData.itemCartId;
|
|
// var itemNo = rowData.itemNo;
|
|
// var qty = $row.find('.editable-qty').val() || rowData.qty;
|
|
|
|
// if (parseFloat(qty) === 0 || isNaN(parseFloat(qty))) {
|
|
// isValid = false;
|
|
// showToast('warning', "Please input a valid qty for ItemNo# " + itemNo + "!", ' warning', 4000);
|
|
// $(modalId).modal('hide');
|
|
// return false;
|
|
// }
|
|
|
|
// var itemData = {
|
|
// itemCartId: itemCartId,
|
|
// ItemNo: itemNo,
|
|
// qty: qty
|
|
// };
|
|
// requestData.push(itemData);
|
|
// });
|
|
|
|
// if (selectedCheckboxes.length <= 0) {
|
|
// showToast('warning', 'No selected item!', 'Item cart failed', 4000);
|
|
// return;
|
|
// } else {
|
|
// var DateNeeded = document.getElementById('dateNeeded').value;
|
|
|
|
// if (!DateNeeded) {
|
|
// showToast('warning', 'Please choose date needed!', 'P.R. submission failed', 4000);
|
|
// confirmUpdateListener = false;
|
|
// return;
|
|
// }
|
|
// if (RequestTypeId == 3) {
|
|
// updateDepartmentId();
|
|
// var ChargeTo = document.getElementById('departmentId').value;
|
|
// if (!ChargeTo) {
|
|
// showToast('warning', 'Please choose a department to be in charge of!', 'P.R. submission failed', 4000);
|
|
// confirmUpdateListener = false;
|
|
// return;
|
|
// }
|
|
// }
|
|
// }
|
|
// showConfirmation({
|
|
// title: 'Purchasing Requisition',
|
|
// message: 'Are you sure you want to proceed? This action cannot be undone.',
|
|
// type: 'warning',
|
|
// confirmText: 'Yes',
|
|
// cancelText: 'No'
|
|
// }).then((confirmed) => {
|
|
// if (confirmed) {
|
|
// $.ajax({
|
|
// url: '/ItemMgmt/PostPurchRequest',
|
|
// type: 'POST',
|
|
// data: { ItemCartIds: requestData, DateNeeded: DateNeeded, RequestTypeId: RequestTypeId, ChargeTo: ChargeTo, Remarks: Remarks },
|
|
// success: function (response) {
|
|
// if (response.success) {
|
|
// itemTable.ajax.reload();
|
|
// $('#addDateNeeded').modal('hide');
|
|
// showToast('success', 'P.R. Successfully Created!', 'Success', 4000);
|
|
// var totalSelectedLabel = $('#totalSelected');
|
|
// totalSelectedLabel.text('');
|
|
// } else {
|
|
// itemTable.ajax.reload();
|
|
// showToast('error', response.response, title + ' failed', 4000);
|
|
// }
|
|
// },
|
|
// beforeSend: function () {
|
|
// loader.show();
|
|
// },
|
|
// complete: function () {
|
|
// loader.hide();
|
|
// }
|
|
// });
|
|
// }
|
|
// });
|
|
//}
|
|
function AddToCart(isUpdated) {
|
|
var loader = $('#overlay, #loader');
|
|
var ItemNo = $('#itemNo').val();
|
|
var ItemCategoryId = $('#ItemCategory2Id').val();
|
|
var ItemColorId = $('#itemColorId').val();
|
|
var PackagingTypeId = $('#packagingTypeId').val();
|
|
var ItemAttachId = $('#itemAttachId').val();
|
|
var UOMId = $('#uomId').val();
|
|
var ItemLocalId = $('#itemLocalId').val();
|
|
|
|
const message = (ItemCategoryId == 29)
|
|
? 'This item requires a <strong style="color:red;">PNP permit</strong>. Please coordinate with our <strong style="background-color:yellow;">Security Department</strong> once the PR has been created.'
|
|
: 'Do you want to add this item to your cart? Please note that this action cannot be undone.';
|
|
|
|
showConfirmation({
|
|
title: 'Item Cart',
|
|
message: message,
|
|
type: 'warning',
|
|
confirmText: 'Yes',
|
|
cancelText: 'No'
|
|
}).then((confirmed) => {
|
|
if (confirmed) {
|
|
$.ajax({
|
|
url: '/ItemMgmt/PostPutItemCart',
|
|
type: 'POST',
|
|
data: { ItemNo, ItemCategoryId, ItemColorId, PackagingTypeId, ItemAttachId, UOMId, ItemLocalId },
|
|
beforeSend: function () {
|
|
loader.show();
|
|
},
|
|
success: function (response) {
|
|
if (response.success) {
|
|
$('#viewItemDetails').modal('hide');
|
|
clearTextModal();
|
|
fetchAndRefreshTable();
|
|
if (response.cartCount !== undefined) {
|
|
const cartCountElement = document.getElementById("cartCount");
|
|
if (cartCountElement) {
|
|
cartCountElement.textContent = response.cartCount > 0 ? response.cartCount : "0";
|
|
}
|
|
}
|
|
showToast('success', 'The item has been added to your cart successfully.', 'Success', 4000);
|
|
} else {
|
|
showToast('error', response.response, title + ' failed', 4000);
|
|
}
|
|
},
|
|
error: errorHandler,
|
|
complete: function () {
|
|
loader.hide();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
function postItem(isUpdated) {
|
|
loader = $('#overlay, #loader');
|
|
|
|
const itemNameInput = document.getElementById('ItemName');
|
|
const itemDescriptionInput = document.getElementById('ItemDescription');
|
|
const itemCategoryIdInput = document.getElementById('ItemCategoryId');
|
|
const itemCategoryInput = document.getElementById('ItemCategory');
|
|
|
|
itemNameInput.addEventListener('input', removeErrorClass);
|
|
itemDescriptionInput.addEventListener('input', removeErrorClass);
|
|
itemCategoryIdInput.addEventListener('input', removeErrorClass);
|
|
itemCategoryInput.addEventListener('input', removeErrorClass);
|
|
|
|
const ItemName = itemNameInput.value;
|
|
const ItemDescription = itemDescriptionInput.value;
|
|
const ItemCategoryId = itemCategoryIdInput.value;
|
|
if (!ItemName || !ItemDescription || !ItemCategoryId) {
|
|
showToast('warning', 'Please fill the required fields!', 'Item creation failed', 4000);
|
|
if (!ItemName) {
|
|
itemNameInput.classList.add('error-input');
|
|
}
|
|
if (!ItemDescription) {
|
|
itemDescriptionInput.classList.add('error-input');
|
|
}
|
|
if (!ItemCategoryId) {
|
|
itemCategoryInput.classList.add('error-input');
|
|
}
|
|
return;
|
|
}
|
|
showConfirmation({
|
|
title: 'Item Creation',
|
|
message: 'Are you sure you want to proceed? This action cannot be undone.',
|
|
type: 'warning',
|
|
confirmText: 'Yes',
|
|
cancelText: 'No'
|
|
}).then((confirmed) => {
|
|
if (confirmed) {
|
|
$.ajax({
|
|
url: '/ItemMgmt/PostPutItem',
|
|
type: 'POST',
|
|
data: { ItemName, ItemDescription, ItemCategoryId },
|
|
success: function (response) {
|
|
if (response.success) {
|
|
$('#addNewItem').modal('hide');
|
|
if (!isUpdated == 0) {
|
|
var data = [];
|
|
data.itemCodeId = response.itemCodeId;
|
|
viewItem(data);
|
|
clearTextModal();
|
|
fetchAndRefreshTable();
|
|
showToast('success', 'Update successfully!', 'Success', 4000);
|
|
} else {
|
|
clearTextModal();
|
|
fetchAndRefreshTable();
|
|
showToast('success', 'Item added successfully!', 'Success', 4000);
|
|
}
|
|
} else {
|
|
loader.hide();
|
|
showToast('error', response.response, title + ' failed', 4000);
|
|
}
|
|
},
|
|
beforeSend: function () {
|
|
loader.show();
|
|
},
|
|
complete: function () {
|
|
loader.hide();
|
|
}
|
|
});
|
|
}
|
|
})
|
|
}
|
|
function fetchAndRefreshTable() {
|
|
$.ajax({
|
|
url: '/ItemMgmt/GetItemList',
|
|
type: 'GET',
|
|
success: function (newResponse) {
|
|
if (newResponse && newResponse.data) {
|
|
fetchedData = newResponse.data;
|
|
itemTable.clear().rows.add(fetchedData).draw();
|
|
} else {
|
|
console.log('No data returned from server.');
|
|
}
|
|
},
|
|
error: function (xhr, error) {
|
|
console.log('Error fetching updated data:', error);
|
|
}
|
|
});
|
|
}
|