Files
2026-04-15 15:23:57 +07:00

251 lines
11 KiB
PHP

<?php
class Request extends MY_Controller
{
function __construct()
{
parent::__construct();
$this->db_inventory = $this->load->database("inventory", true);
$this->db_inventory_log = $this->load->database('inventory_log', true);
$this->db_onex = 'one_aditya';
}
function search()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$search = "%%";
if (isset($prm['search']) && trim($prm["search"]) != '') {
$search = trim($prm["search"]);
$search = '%' . $prm['search'] . '%';
}
$start_date = date("Y-m-d");
if (isset($prm['start_date'])) {
$start_date = $prm["start_date"];
}
$end_date = date("Y-m-d");
if (isset($prm['end_date'])) {
$end_date = $prm["end_date"];
}
$filter_warehouse_from = '';
if (isset($prm['warehouse_from_id']) && intval($prm['warehouse_from_id']) > 0) {
$filter_warehouse_from = ' AND MutasiRequestInternalWarehouseID = '.$prm['warehouse_from_id'];
}
$filter_status = '';
if (isset($prm['status']) && count($prm['status']) > 0) {
$status = '';
foreach ($prm['status'] as $k_status => $v_status) {
if($status != '') $status .= ',';
$status .= "'".$v_status['id']."'";
}
$filter_status = ' AND MutasiRequestInternalDetailStatus IN ('.$status.')';
}
$order_by = "MutasiRequestInternalDetailID";
if (isset($prm['order_by'])) {
$order_by = trim($prm["order_by"]);
}
$order_type = "asc";
if (isset($prm['order_type'])) {
$order_type = trim($prm["order_type"]);
}
$order = $order_by.' '.$order_type;
$perpage = 10;
$offset = ($prm['current_page'] - 1) * $perpage ;
$sql = "SELECT COUNT(*) as total FROM
(
SELECT MutasiRequestInternalDetailID as id
FROM `mutasirequestinternaldetail`
JOIN `mutasirequestinternal` ON MutasiRequestInternalDetailMutasiRequestInternalID = MutasiRequestInternalID
JOIN `warehouse` ON MutasiRequestInternalWarehouseID = WarehouseID $filter_warehouse_from
WHERE
MutasiRequestInternalDetailIsActive = 'Y' AND (MutasiRequestInternalDate BETWEEN ? AND ?) $filter_status
) x";
$qry = $this->db_inventory->query($sql,array($start_date, $end_date));
$tot_count = 0;
$tot_page = 0;
if ($qry) {
$tot_count = $qry->row()->total;
$tot_page = ceil($tot_count/$perpage);
} else {
echo $this->db_inventory->last_query();
$this->sys_error_db("purchase order count error", $this->db_inventory->last_query());
exit;
}
$rows = array();
$sql = "SELECT MutasiRequestInternalDetailID as id,
WarehouseID as warehouse_id_from,
WarehouseName as warehouse_name_from,
MutasiRequestInternalEstimasiDate as estimated_delivery,
MutasiRequestInternalDate as request_date,
MutasiRequestInternalNote as request_note,
MutasiRequestInternalNumber as request_number,
M_UserUsername as sender_name,
MutasiRequestInternalConfirmAt as sent_at,
MutasiRequestInternalDetailStatus as request_status,
MutasiRequestInternalDetailCompleteNote as complete_note,
MutasiRequestInternalDetailQty as request_qty,
MutasiRequestInternalDetailReceiveQty as receive_qty,
MutasiRequestInternalDetailItemID as item_id,
ItemName as item_name,
MutasiRequestInternalDetailUnitID as unit_id,
ItemUnitName as unit_name
FROM `mutasirequestinternaldetail`
JOIN `mutasirequestinternal` ON MutasiRequestInternalDetailMutasiRequestInternalID = MutasiRequestInternalID
JOIN `warehouse` ON MutasiRequestInternalWarehouseID = WarehouseID $filter_warehouse_from
JOIN `item` ON MutasiRequestInternalDetailItemID = ItemID
JOIN `itemunit` ON MutasiRequestInternalDetailUnitID = ItemUnitID
JOIN $this->db_onex.`m_user` ON MutasiRequestInternalConfirmBy = M_UserID
WHERE
MutasiRequestInternalDetailIsActive = 'Y' AND (MutasiRequestInternalDate BETWEEN ? AND ?) $filter_status
ORDER BY $order_by $order_type
LIMIT ? OFFSET ?";
$qry = $this->db_inventory->query($sql, array($start_date, $end_date, $perpage, $offset));
//echo $this->db_inventory->last_query();
if($qry){
$rows = $qry->result_array();
$result = array("total_page" => $tot_page, "records" => $rows);
$this->sys_ok($result);
exit;
}
else{
//echo $this->db_inventory->last_query();
$this->sys_error_db("request select error", $this->db_inventory->last_query());
exit;
}
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function get_warehouse_from(){
try {
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$sql = "
SELECT WarehouseID as id, WarehouseName as name
FROM warehouse
WHERE
WarehouseIsActive = 'Y' AND WarehouseIsOffice = 'N'
";
$query = $this->db_inventory->query($sql, array($q['search']));
if ($query) {
$rows = $query->result_array();
array_push($rows,array('id'=>0,'name'=>'Semua'));
//echo $this->db_onedev->last_query();
$result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
}
else {
$this->sys_error_db("warehouse rows",$this->db_inventory);
exit;
}
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function read(){
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user['M_UserID'];
$this->db_inventory->trans_start();
$this->db_inventory->trans_strict(FALSE);
$sql = "UPDATE mutasirequestinternaldetail SET MutasiRequestInternalDetailStatus = 'R' WHERE MutasiRequestInternalDetailID = ? ";
$query = $this->db_inventory->query($sql,array($prm['id']));
if (!$query) {
$this->sys_error_db("m_city count",$this->db_inventory);
exit;
}
$sql = "INSERT INTO mutasirequestinternal_status (
MutasiRequestInternalStatusMutasiRequestInternalDetailID,
MutasiRequestInternalStatus,
MutasiRequestInternalStatusCreated,
MutasiRequestInternalStatusUserID
)
VALUES(
?,?,NOW(),?
)";
$query = $this->db_inventory->query($sql,array($prm['id'],'R',$userid));
if(!$query){
$this->sys_error_db("insert mutasirequestinternal_status",$this->db_inventory);
exit;
}
$this->db_inventory->trans_complete();
$sql = "SELECT MutasiRequestInternalDetailID as id,
WarehouseID as warehouse_id_from,
WarehouseName as warehouse_name_from,
MutasiRequestInternalEstimasiDate as estimated_delivery,
MutasiRequestInternalDate as request_date,
MutasiRequestInternalNote as request_note,
M_UserUsername as sender_name,
MutasiRequestInternalConfirmAt as sent_at,
MutasiRequestInternalDetailStatus as request_status,
MutasiRequestInternalDetailCompleteNote as complete_note,
MutasiRequestInternalDetailQty as request_qty,
MutasiRequestInternalDetailReceiveQty as receive_qty,
MutasiRequestInternalDetailItemID as item_id,
ItemName as item_name,
MutasiRequestInternalDetailUnitID as unit_id,
ItemUnitName as unit_name
FROM `mutasirequestinternaldetail`
JOIN `mutasirequestinternal` ON MutasiRequestInternalDetailMutasiRequestInternalID = MutasiRequestInternalID
JOIN `warehouse` ON MutasiRequestInternalWarehouseID = WarehouseID
JOIN `item` ON MutasiRequestInternalDetailItemID = ItemID
JOIN `itemunit` ON MutasiRequestInternalDetailUnitID = ItemUnitID
JOIN $this->db_onex.`m_user` ON MutasiRequestInternalConfirmBy = M_UserID
WHERE
MutasiRequestInternalDetailIsActive = 'Y' AND MutasiRequestInternalDetailID = ?";
$query = $this->db_inventory->query($sql,array($prm['id']));
if($query){
$row = $query->row_array();
}else{
$this->sys_error_db("after read row",$this->db_inventory);
exit;
}
$result = array(
'records' => $row,
"message" => ''
);
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
}