File: /var/www/html/inventory.breadsecret.com/view/transaction/list.php
<?php
include("view/layout/meta.php");
include("view/layout/head.php");
?>
<style>
.modal.fade .modal-dialog {
transition: transform 0.3s ease-out, opacity 0.3s ease-out;
}
</style>
<div class="main-panel">
<?php
include("view/layout/headExt.php");
?>
<div class="container">
<div class=""></div>
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<div class="d-flex align-items-center">
<h4 class="card-title"><?=L('menu.transaction');?></h4>
<div class="btn-group ms-auto" role="group" aria-label="Basic example">
<button class="btn btn-success btn-round btn-sm ms-3 stockInBtn">
<i class="fa fa-plus"><!--<?=L("stock.in");?>--></i>
</button>
<button class="btn btn-danger btn-round btn-sm ms-3 stockOutBtn">
<i class="fa fa-minus"><!--<?=L("stock.out");?>--></i>
</button>
<button class="btn btn-warning btn-round btn-sm ms-3 stockTransferBtn">
<i class="fa fa-exchange-alt"><!--<?=L("stock.transfer");?>--></i>
</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table id="transactionTable" class="display table table-striped table-hover datatable">
<?=Controller\transaction::genTableHeader();?>
<?=Controller\transaction::genTableFooter();?>
<tbody>
<?php
$content = Controller\transaction::genTableContentData();
foreach($content as $listObj) {
echo Controller\transaction::genTableBodyRow($listObj);
}
?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<?php include("view/layout/foot.php"); ?>
</div>
</div>
<?php
include("view/layout/js.php");
include("view/layout/endpage.php");
?>
<script>
$(document).ready(function () {
var myCallback = function () {
var table = $('.dataTable').DataTable(); // Initialize your DataTable
var lastColumnIndex = table.columns().count() - 1; // Get the last column index
table.columns().every(function() {
var column = this;
if (column.index() === lastColumnIndex) {
return; // exits the function, being the last (and desired) column
}
var select = $('<select class="form-select"><option value=""></option></select>')
.appendTo($(column.footer()).empty())
.on('change', function() {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search(val ? '^' + val + '$' : '', true, false)
.draw();
});
column.data().unique().sort().each(function(d, j) {
select.append('<option value="' + d + '">' + d + '</option>')
});
});
};
var transactionTable = $("#transactionTable").DataTable({
pageLength: 25,
processing: false,
serverSide: true,
serverMethod: 'post',
ajax: '<?=$request->baseUrl();?>/script/transactionList.php',
"columns": [
{ data: 'column_transactionDate' },
{ data: 'column_transactionAction' },
{ data: 'column_itemName' },
{ data: 'column_supplierName' },
{ data: 'column_fromStorageLocationName' },
{ data: 'column_fromStorageLocationAreaName' },
{ data: 'column_toStorageLocationName' },
{ data: 'column_toStorageLocationAreaName' },
{ data: 'column_transactionBatchNo' },
{ data: 'column_transactionQty' },
{ data: 'column_unitName' },
{ data: 'column_totalValue' },
{ data: 'column_function' }
],rowId: 'column_supplierID',
initComplete: function () {
this.api()
.columns([0,1,2,3,4,5,6,7,8,9,10,11])
.every(function () {
var column = this;
var select = $(
'<select class="form-select"><option value=""></option></select>'
)
.appendTo($(column.footer()).empty())
.on("change", function () {
var val = $.fn.dataTable.util.escapeRegex($(this).val());
column
.search(val ? "^" + val + "$" : "", true, false)
.draw();
});
column
.data()
.unique()
.sort()
.each(function (d, j) {
select.append(
'<option value="' + d + '">' + d + "</option>"
);
});
});
},
order: [[0, 'desc']]
});
$(".stockInBtn").click(function(e){
var button = $(e.currentTarget);
e.preventDefault();
ajaxFunc.apiCall("GET", "stock/stockInForm", null, null, function (form_data) {
if(form_data.content.success) {
$('#msgBox').one('show.bs.modal', function (ev) {
var modal = $(this);
modal.find('#msgBoxLabel').html("<?=L('Add');?> <?=L('stock.in');?> <?=L('Record');?>");
modal.find('.modal-dialog').addClass("modal-xl");
modal.find('.modal-body').html(form_data.content.message);
modal.find('#msgBoxBtnPri').off('click');
modal.find('#msgBoxBtnPri').on('click', function (event) {
if(document.getElementById("form-addStockIn")!==null){
var data = new FormData(document.getElementById("form-addStockIn"));
ajaxFunc.apiCall("POST", "stockIn", data, "multipart/form-data", function(return_data){
if(return_data.content.success) {
$("#msgBox").modal("hide");
swal({
title: return_data.content.message,
text: return_data.content.message,
type: "warning",
buttons: {
confirm: {
text: "<?=L('OK');?>",
className: "btn btn-success",
}
},
}).then((willOK) => {
if (willOK) {
transactionTable.ajax.reload(myCallback, false);
}
});
} else {
$("#form-addStockIn").find(".form-group").removeClass("has-error");
$("#form-addStockIn").find(".form-group").find(".hintHelp").text("");
$("#form-addStockIn").find("#"+return_data.content.field).closest(".form-group").addClass("has-error");
$("#form-addStockIn").find("#"+return_data.content.field+"Help").text(return_data.content.message);
$("#form-addStockIn").find("#"+return_data.content.field).focus();
}
});
}
});
$("#itemID").change(function(e){
if($(this).val()==""){
$("#itemType").val("");
$("#supplier").val("");
$("#unit").val("");
} else {
ajaxFunc.apiCall("GET", "item/getDetail/"+$("#itemID").val(), null, null, function(return_data){
if(return_data.content.success) {
obj = JSON.parse(return_data.content.message);
$("#itemType").val(obj.itemType);
$("#supplier").val(obj.supplier);
$("#unit").val(obj.unit);
} else {
$("#itemType").val("");
$("#supplier").val("");
$("#unit").val("");
}
});
}
});
$("#storageLocationID").change(function(e){
if($(this).val()==""){
$("#storageLocationAreaID").html("");
} else {
ajaxFunc.apiCall("GET", "storageLocation/getAreaList/"+$("#storageLocationID").val(), null, null, function(return_data){
if(return_data.content.success) {
$("#storageLocationAreaID").html("");
obj = JSON.parse(return_data.content.message);
obj.forEach((variable) => {
$("#storageLocationAreaID").append("<option value='"+variable.id+"'>"+variable.name+"</option>");
});
} else {
$("#storageLocationAreaID").html("");
}
});
}
});
$('#msgBox').on('hidden.bs.modal', function (e) {
$(this).find('.modal-dialog').removeClass("modal-xl");
})
}).modal('show')
} else {
$('#msgBox').one('show.bs.modal', function (ev) {
var modal = $(this);
modal.find('#msgBoxLabel').html("<?=L('Add');?> <?=L('stock.in');?> <?=L('Record');?>");
modal.find('.modal-body').html(form_data.content.message);
modal.find('#msgBoxBtnPri').on('click', function (event) {
$("#msgBox").modal("hide");
});
}).modal('show')
}
});
});
$(".stockOutBtn").click(function(e){
var button = $(e.currentTarget);
e.preventDefault();
ajaxFunc.apiCall("GET", "stock/stockOutForm", null, null, function (form_data) {
if(form_data.content.success) {
$('#msgBox').one('show.bs.modal', function (ev) {
var modal = $(this);
modal.find('#msgBoxLabel').html("<?=L('Add');?> <?=L('stock.out');?> <?=L('Record');?>");
modal.find('.modal-dialog').addClass("modal-xl");
modal.find('.modal-body').html(form_data.content.message);
modal.find('#msgBoxBtnPri').off('click');
modal.find('#msgBoxBtnPri').on('click', function (event) {
if(document.getElementById("form-addStockOut")!==null){
var data = new FormData(document.getElementById("form-addStockOut"));
ajaxFunc.apiCall("POST", "stockOut", data, "multipart/form-data", function(return_data){
if(return_data.content.success) {
$("#msgBox").modal("hide");
swal({
title: return_data.content.message,
text: return_data.content.message,
type: "warning",
buttons: {
confirm: {
text: "<?=L('OK');?>",
className: "btn btn-success",
}
},
}).then((willOK) => {
if (willOK) {
transactionTable.ajax.reload(myCallback, false);
}
});
} else {
$("#form-addStockOut").find(".form-group").removeClass("has-error");
$("#form-addStockOut").find(".form-group").find(".hintHelp").text("");
$("#form-addStockOut").find("#"+return_data.content.field).closest(".form-group").addClass("has-error");
$("#form-addStockOut").find("#"+return_data.content.field+"Help").text(return_data.content.message);
$("#form-addStockOut").find("#"+return_data.content.field).focus();
}
});
}
});
$("#itemID").change(function(e){
if($(this).val()==""){
$("#itemType").val("");
$("#supplier").val("");
$("#unit").val("");
$("#storageLocationAreaID").html("");
} else {
ajaxFunc.apiCall("GET", "item/getDetail/"+$("#itemID").val(), null, null, function(return_data){
if(return_data.content.success) {
obj = JSON.parse(return_data.content.message);
$("#itemType").val(obj.itemType);
$("#supplier").val(obj.supplier);
$("#unit").val(obj.unit);
} else {
$("#itemType").val("");
$("#supplier").val("");
$("#unit").val("");
$("#storageLocationAreaID").html("");
}
});
ajaxFunc.apiCall("GET", "item/getStockStorageLocationArea/"+$("#itemID").val(), null, null, function(return_data){
if(return_data.content.success) {
$("#storageLocationAreaID").html("");
obj = JSON.parse(return_data.content.message);
obj.forEach((variable) => {
$("#storageLocationAreaID").append("<option value='"+variable.id+"'>"+variable.locationName+" - "+variable.areaName+"</option>");
});
getBatchNo();
$("#storageLocationAreaID").change(function(e){
getBatchNo();
});
} else {
$("#storageLocationAreaID").html("");
}
});
}
});
$('#msgBox').on('hidden.bs.modal', function (e) {
$(this).find('.modal-dialog').removeClass("modal-xl");
})
}).modal('show')
} else {
$('#msgBox').one('show.bs.modal', function (ev) {
var modal = $(this);
modal.find('#msgBoxLabel').html("<?=L('Add');?> <?=L('stock.out');?> <?=L('Record');?>");
modal.find('.modal-body').html(form_data.content.message);
modal.find('#msgBoxBtnPri').on('click', function (event) {
$("#msgBox").modal("hide");
});
}).modal('show')
}
});
});
function getBatchNo() {
ajaxFunc.apiCall("GET", "stock/batchInArea/"+$("#storageLocationAreaID").val(), null, null, function(return_data){
if(return_data.content.success) {
$("#itemStockDetailID").html("");
obj = JSON.parse(return_data.content.message);
obj.forEach((variable) => {
$("#itemStockDetailID").append("<option value='"+variable.id+"'>"+variable.batch+" (<?=L("stock.qty");?>: "+variable.qty+")</option>");
});
} else {
$("#itemStockDetailID").html("");
}
});
}
$(".stockTransferBtn").click(function(e){
var button = $(e.currentTarget);
e.preventDefault();
ajaxFunc.apiCall("GET", "stock/stockTransferForm", null, null, function (form_data) {
if(form_data.content.success) {
$('#msgBox').one('show.bs.modal', function (ev) {
var modal = $(this);
modal.find('#msgBoxLabel').html("<?=L('Add');?> <?=L('stock.transfer');?> <?=L('Record');?>");
modal.find('.modal-dialog').addClass("modal-xl");
modal.find('.modal-body').html(form_data.content.message);
modal.find('#msgBoxBtnPri').off('click');
modal.find('#msgBoxBtnPri').on('click', function (event) {
if(document.getElementById("form-addStockTransfer")!==null){
var data = new FormData(document.getElementById("form-addStockTransfer"));
ajaxFunc.apiCall("POST", "stockTransfer", data, "multipart/form-data", function(return_data){
if(return_data.content.success) {
$("#msgBox").modal("hide");
swal({
title: return_data.content.message,
text: return_data.content.message,
type: "warning",
buttons: {
confirm: {
text: "<?=L('OK');?>",
className: "btn btn-success",
}
},
}).then((willOK) => {
if (willOK) {
transactionTable.ajax.reload(myCallback, false);
}
});
} else {
$("#form-addStockTransfer").find(".form-group").removeClass("has-error");
$("#form-addStockTransfer").find(".form-group").find(".hintHelp").text("");
$("#form-addStockTransfer").find("#"+return_data.content.field).closest(".form-group").addClass("has-error");
$("#form-addStockTransfer").find("#"+return_data.content.field+"Help").text(return_data.content.message);
$("#form-addStockTransfer").find("#"+return_data.content.field).focus();
}
});
}
});
$("#itemID").change(function(e){
if($(this).val()==""){
$("#itemType").val("");
$("#supplier").val("");
$("#unit").val("");
$("#storageLocationAreaID").html("");
} else {
ajaxFunc.apiCall("GET", "item/getDetail/"+$("#itemID").val(), null, null, function(return_data){
if(return_data.content.success) {
obj = JSON.parse(return_data.content.message);
$("#itemType").val(obj.itemType);
$("#supplier").val(obj.supplier);
$("#unit").val(obj.unit);
} else {
$("#itemType").val("");
$("#supplier").val("");
$("#unit").val("");
$("#storageLocationAreaID").html("");
}
});
ajaxFunc.apiCall("GET", "item/getStockStorageLocationArea/"+$("#itemID").val(), null, null, function(return_data){
if(return_data.content.success) {
$("#storageLocationAreaID").html("");
obj = JSON.parse(return_data.content.message);
obj.forEach((variable) => {
$("#storageLocationAreaID").append("<option value='"+variable.id+"'>"+variable.locationName+" - "+variable.areaName+"</option>");
});
getBatchNo();
$("#storageLocationAreaID").change(function(e){
getBatchNo();
});
} else {
$("#storageLocationAreaID").html("");
}
});
}
});
$("#newStorageLocationID").change(function(e){
if($(this).val()==""){
$("#newStorageLocationAreaID").html("");
} else {
ajaxFunc.apiCall("GET", "storageLocation/getAreaList/"+$("#newStorageLocationID").val(), null, null, function(return_data){
if(return_data.content.success) {
$("#newStorageLocationAreaID").html("");
obj = JSON.parse(return_data.content.message);
obj.forEach((variable) => {
$("#newStorageLocationAreaID").append("<option value='"+variable.id+"'>"+variable.name+"</option>");
});
} else {
$("#newStorageLocationAreaID").html("");
}
});
}
});
$('#msgBox').on('hidden.bs.modal', function (e) {
$(this).find('.modal-dialog').removeClass("modal-xl");
})
}).modal('show')
} else {
$('#msgBox').one('show.bs.modal', function (ev) {
var modal = $(this);
modal.find('#msgBoxLabel').html("<?=L('Add');?> <?=L('stock.transfer');?> <?=L('Record');?>");
modal.find('.modal-body').html(form_data.content.message);
modal.find('#msgBoxBtnPri').on('click', function (event) {
$("#msgBox").modal("hide");
});
}).modal('show')
}
});
});
$('#transactionTable tbody').on('click', '.btnView', function (e) {
e.preventDefault();
var button = $(e.currentTarget);
show_transaction_detail(button.data('id'));
});
$('#transactionTable').on('click', 'tbody tr td:not(:last-child)', function(e) {
e.preventDefault();
show_transaction_detail($(this).parent().find(".btnView").attr('data-id'));
});
function show_transaction_detail(transactionID) {
ajaxFunc.apiCall("GET", "transaction/"+transactionID, null, null, function (form_data) {
if(form_data.content.success) {
$('#msgBox').one('show.bs.modal', function (ev) {
var modal = $(this);
modal.find('.modal-dialog').addClass("modal-xl");
modal.find('#msgBoxLabel').html("<?=L('Information');?>");
modal.find('.modal-body').html(form_data.content.message);
modal.find('#msgBoxBtnPri').on('click', function (event) {
$("#msgBox").modal("hide");
});
}).modal('show')
$('#msgBox').on('hidden.bs.modal', function (e) {
$(this).find('.modal-dialog').removeClass("modal-xl");
})
} else {
if(form_data.content.note=="signIn") {
showLoginNotice(form_data.content.message);
} else {
$('#msgBox').one('show.bs.modal', function (ev) {
var modal = $(this);
modal.find('#msgBoxLabel').html("<?=L('Information');?>");
modal.find('.modal-body').html(form_data.content.message);
modal.find('#msgBoxBtnPri').on('click', function (event) {
$("#msgBox").modal("hide");
});
}).modal('show')
}
}
});
}
});
</script>