"use strict"; // Class definition var KTStoreView = function () { // Shared variables var storeId var ipAddress var datatableItem; var tableItem = document.getElementById('kt_table_item'); var datatableItemOption var tableItemOptions = document.getElementById('kt_table_item_options'); var datatableItemPrices; var tableItemPrices = document.getElementById('kt_table_item_prices'); var datatableItemStock; var tableItemStock = document.getElementById('kt_table_item_stock'); // Init store view page var initStoreView = () => { // call StoreDetails API fetch('http://localhost:8080/hdpos/api/stores/getStoreDetails?dbHost='+ipAddress+'&storeId='+storeId) .then(response => response.json()) .then(data => { document.getElementById("hb_storeTitle").innerText = data.store.id_structure + " - " + data.store.nom; document.getElementById("hb_storeIpAddress").innerText = ipAddress; document.getElementById("hb_storePhoneNumber").innerText = data.store.telephone; // Display backOffice transaction informations var statusTransaction = document.getElementById("hb_backOfficeTransactionOk"); if (data.replication.backOfficeTransactionOk) { statusTransaction.classList.add("bg-success"); document.getElementById("hb_backOfficeBusinessDate").classList.add("text-gray-800"); } else { statusTransaction.classList.add("bg-danger"); document.getElementById("hb_backOfficeBusinessDate").classList.add("text-danger"); } document.getElementById("hb_backOfficeTransactions").innerText = data.transaction.backOfficeTransactions; document.getElementById("hb_minBackOfficeTransactionDate").innerText = data.transaction.minBackOfficeTransactionDate; document.getElementById("hb_maxBackOfficeTransactionDate").innerText = data.transaction.maxBackOfficeTransactionDate; document.getElementById("hb_backOfficeBusinessDate").innerText = data.transaction.backOfficeBusinessDate; // Display replication informations var statusTransaction = document.getElementById("hb_pendingReplicationOk"); if (data.replication.pendingReplicationOk) { statusTransaction.classList.add("bg-success"); } else { statusTransaction.classList.add("bg-danger"); } document.getElementById("hb_pendingReplications").innerText = data.replication.pendingReplications; document.getElementById("hb_minPendingReplicationDate").innerText = data.replication.minPendingReplicationDate; document.getElementById("hb_maxPendingReplicationDate").innerText = data.replication.maxPendingReplicationDate; }) .catch(error => { console.error('Error retrieving store details:', error); }); } // Submit form handler const handleItemSubmit = () => { // Define variables let validator; // Get elements const form = document.getElementById('kt_store_item_form'); const submitButton = document.getElementById('kt_store_item_submit'); // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ validator = FormValidation.formValidation( form, { fields: { 'itemId': { validators: { notEmpty: { message: 'Item ID is required' } } } }, plugins: { trigger: new FormValidation.plugins.Trigger(), bootstrap: new FormValidation.plugins.Bootstrap5({ rowSelector: '.fv-row', eleInvalidClass: '', eleValidClass: '' }) } } ); // Handle submit item search button submitButton.addEventListener('click', e => { e.preventDefault(); // Validate form before submit if (validator) { validator.validate().then(function (status) { if (status == 'Valid') { submitButton.setAttribute('data-kt-indicator', 'on'); // Disable submit button while loading submitButton.disabled = true; var itemId = document.querySelector('input[name="itemId"]').value; // call StoreDetails API fetch('http://localhost:8080/hdpos/api/items/getItemDetails?dbHost='+ipAddress+'&itemId='+itemId) .then(response => response.json()) .then(data => { if ( $.fn.dataTable.isDataTable('#kt_table_item') ) { $('#kt_table_item').DataTable().destroy(); } datatableItem = $(tableItem).DataTable({ "info": true, "bStateSave": true, // cookie 'order': [], "pageLength": 10, "lengthChange": false, columns: [ { data: 'itemId', name: "ITEM_ID" }, { data: 'itemLevelCode', name: "LEVEL" }, { data: 'parentItemId', name: "PARENT" }, { data: 'itemTypeCode', name: "TYPE" }, { data: null, // Using null to create a custom column render: function(data, type, full, meta) { return full.createDate + '
' + full.createUserId; } }, { data: null, // Using null to create a custom column render: function(data, type, full, meta) { return full.updateDate + '
' + full.updateUserId; } } ], "data": data.items }); if ( $.fn.dataTable.isDataTable('#kt_table_item_options') ) { $('#kt_table_item_options').DataTable().destroy(); } datatableItemOption = $(tableItemOptions).DataTable({ "info": true, "bStateSave": true, // cookie 'order': [], "pageLength": 10, "lengthChange": false, columns: [ { data: 'itemId', name: "ITEM_ID" }, { data: null, render: function(data, type, full, meta) { return full.levelCode + ':' + full.levelValue; } }, { data: 'itemAvailabilityCode', name: "VENDABLE" }, { data: 'taxGroupId', name: "TAXE" }, { data: 'vendor', name: "VENDOR" }, { data: 'seasonCode', name: "SEASON" }, { data: null, // Using null to create a custom column render: function(data, type, full, meta) { return full.createDate + '
' + full.createUserId; } }, { data: null, // Using null to create a custom column render: function(data, type, full, meta) { return full.updateDate + '
' + full.updateUserId; } } ], "data": data.itemOptions }); if ( $.fn.dataTable.isDataTable('#kt_table_item_prices') ) { $('#kt_table_item_prices').DataTable().destroy(); } datatableItemPrices = $(tableItemPrices).DataTable({ "info": true, "bStateSave": true, // cookie 'order': [], "pageLength": 10, "lengthChange": false, columns: [ { data: 'itemId', name: "ITEM_ID" }, { data: null, render: function(data, type, full, meta) { return full.levelCode + ':' + full.levelValue; } }, { data: 'itmPricePropertyCode', name: "TYPE" }, { data: null, // Using null to create a custom column render: function(data, type, full, meta) { return full.effectiveDate + '
' + full.expirationDate; } }, { data: 'price', name: "PRICE" }, { data: 'externalId', name: "EXTERNAL_ID" }, { data: null, // Using null to create a custom column render: function(data, type, full, meta) { return full.createDate + '
' + full.createUserId; } }, { data: null, // Using null to create a custom column render: function(data, type, full, meta) { return full.updateDate + '
' + full.updateUserId; } } ], "data": data.itemPrices }); if ( $.fn.dataTable.isDataTable('#kt_table_item_stock') ) { $('#kt_table_item_stock').DataTable().destroy(); } datatableItemStock = $(tableItemStock).DataTable({ "info": true, "bStateSave": true, // cookie 'order': [], "pageLength": 10, "lengthChange": false, columns: [ { data: 'itemId', name: "ITEM_ID" }, { data: 'invLocationId', name: "LOCATION" }, { data: 'bucketId', name: "BUCKET" }, { data: 'itemId', name: "ITEM_ID" }, { data: 'unitCount', name: "STOCK" }, { data: null, // Using null to create a custom column render: function(data, type, full, meta) { return full.createDate + '
' + full.createUserId; } }, { data: null, // Using null to create a custom column render: function(data, type, full, meta) { return full.updateDate + '
' + full.updateUserId; } } ], "data": data.itemStock }); // Enable submit button after loading submitButton.removeAttribute('data-kt-indicator'); submitButton.disabled = false; }) .catch(error => { console.error('Error retrieving item details:', error); // Enable submit button after loading submitButton.removeAttribute('data-kt-indicator'); submitButton.disabled = false; }); } }); } }) } return { // Public functions init: function () { // Parse the URL parameter storeId = KTUtil.getURLParam("storeId"); ipAddress = KTUtil.getURLParam("ip"); // Handle forms initStoreView(); handleItemSubmit(); } }; }(); // On document ready KTUtil.onDOMContentLoaded(function () { KTStoreView.init(); });