File: /var/www/html/inventory.breadsecret.com/script/stockList.php
<?php
include_once('../inc/global.php');
include_once("../config/route.php");
$user = unserialize($_SESSION['user']);
$today = Utility\WebSystem::displayDate(date("Y-m-d H:i:s"), 'Y-m-d');
$map = [
'column_stockID' => 'stock.id',
'column_itemName' => 'item.name',
'column_itemTypeName' => 'itemType.name',
'column_supplierName' => 'supplier.name',
'column_storageLocationName' => 'storageLocation.name',
'column_storageLocationAreaName' => 'storageLocationArea.name',
'column_itemQty' => 'item.qty',
'column_unitName' => 'unit.name',
'column_totalValue' => 'item.totalValue',
'column_function' => 'stock.id'
];
$draw = $_POST['draw'];
$row = $_POST['start'];
$rowperpage = $_POST['length']; // Rows display per page
$columnIndex = $_POST['order'][0]['column']; // Column index
$columnName = $_POST['columns'][$columnIndex]['data']; // Column name
$columnSortOrder = $_POST['order'][0]['dir']; // asc or desc
$searchValue = $_POST['search']['value']; // Search value
$searchQuery = " ";
$sqlAll = Database\Sql::select(['item_stock', 'stock'])
->leftJoin(['item', 'item'], "item.id = stock.itemID")
->leftJoin(['item_type', 'itemType'], "itemType.id = item.itemTypeID")
->leftJoin(['supplier', 'supplier'], "supplier.id = item.supplierID")
->leftJoin(['storage_location_area', 'storageLocationArea'], "stock.storageLocationAreaID = storageLocationArea.id")
->leftJoin(['storage_location', 'storageLocation'], "storageLocationArea.storageLocationID = storageLocation.id")
->leftJoin(['unit', 'unit'], "item.unitID = unit.id")
->leftJoin(['status', 'status'], "stock.status = status.id");
$sqlAll->setFieldValue('
stock.id stockID,
item.name itemName,
itemType.name itemTypeName,
supplier.name supplierName,
storageLocation.name storageLocationName,
storageLocationArea.name storageLocationAreaName,
item.qty itemQty,
unit.name unitName,
item.totalValue itemTotalValue,
status.name statusName
');
$stmAll = $sqlAll->prepare();
$stmAll->execute();
if($searchValue != ''){
$searchValue = addslashes($searchValue);
$sqlAll->whereOp("(storageLocation.id LIKE '%".$searchValue."%'
OR item.name LIKE '%".$searchValue."%'
OR itemType.name LIKE '%".$searchValue."%'
OR supplier.name LIKE '%".$searchValue."%'
OR storageLocation.name LIKE '%".$searchValue."%'
OR storageLocationArea.name LIKE '%".$searchValue."%'
OR item.qty LIKE '%".$searchValue."%'
OR unit.name LIKE '%".$searchValue."%'
OR item.totalValue LIKE '%".$searchValue."%'
)");
}
foreach($_POST['columns'] as $idx => $column){
if(!empty($column['search']['value'])) {
$idxSearchValue = substr($column['search']['value'], 1, -1);
if($_POST['columns'][$idx]['data']=="column_stockStatus"){
if($idxSearchValue=="有效") {
$idxSearchValue="Enabled";
}
if($idxSearchValue=="無效") {
$idxSearchValue="Disabled";
}
}
$sqlAll->where([$map[$_POST['columns'][$idx]['data']], '=', '"'.strip_tags($idxSearchValue).'"']);
}
}
if($stmAll->rowCount()==0 && $filter) {
$sqlAll = Database\Sql::select(['item_stock', 'stock'])
->leftJoin(['item', 'item'], "item.id = stock.itemID")
->leftJoin(['item_type', 'itemType'], "itemType.id = item.itemTypeID")
->leftJoin(['supplier', 'supplier'], "supplier.id = item.supplierID")
->leftJoin(['storage_location_area', 'storageLocationArea'], "stock.storageLocationAreaID = storageLocationArea.id")
->leftJoin(['storage_location', 'storageLocation'], "storageLocationArea.storageLocationID = storageLocation.id")
->leftJoin(['unit', 'unit'], "item.unitID = unit.id")
->leftJoin(['status', 'status'], "stock.status = status.id");
$sqlAll->setFieldValue('
stock.id stockID,
item.name itemName,
itemType.name itemTypeName,
supplier.name supplierName,
storageLocation.name storageLocationName,
storageLocationArea.name storageLocationAreaName,
item.qty itemQty,
unit.name unitName,
item.totalValue itemTotalValue,
status.name statusName
');
};
$sql = $sqlAll->order($map[$columnName],$columnSortOrder)->limit($rowperpage, $row);
$stm = $sql->prepare();
$stm->execute();
$returnArr = [];
$contentArr = [];
$lineCount = 0;
foreach($stm as $data){
$dataArr = [
"column_stockID" => $data['stockID'],
"column_itemName" => $data['itemName'],
"column_itemTypeName" => $data['itemTypeName'],
"column_supplierName" => $data['supplierName'],
"column_storageLocationName" => $data['storageLocationName'],
"column_storageLocationAreaName" => $data['storageLocationAreaName'],
"column_itemQty" => $data['itemQty'],
"column_unitName" => $data['unitName'],
"column_totalValue" => number_format($data['itemTotalValue'],2),
"column_function"=>"
<div class='btn-group' role='group' aria-label=''>
<button class='btn btn-sm btn-dark btnView' type='button' data-bs-toggle='tooltip' data-bs-placement='top' title='".L('View')."' data-id='".$data['stockID']."'><i class='fas fa-sm fa-th'></i></button>
</div>
"
];
$lineCount++;
$contentArr[] = $dataArr;
}
$returnArr['draw'] = intval($draw);
$returnArr["iTotalDisplayRecords"] = $stm->rowCount();
$returnArr["iTotalRecords"] = $stmAll->rowCount();
$returnArr["data"] = $contentArr;
echo json_encode($returnArr);
?>