HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.30
System: Linux iZj6c1151k3ad370bosnmsZ 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64
User: root (0)
PHP: 7.4.30
Disabled: NONE
Upload Files
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>