Files
2026-05-25 20:01:37 +07:00

191 lines
6.8 KiB
PHP

<?php
class Status extends MY_Controller
{
var $db_smartone;
public function index()
{
echo "REF OUT STATUS API";
}
public function __construct()
{
parent::__construct();
$this->db_smartone = $this->load->database("onedev", true);
}
public function search()
{
$prm = $this->sys_input;
$max_rst = 10;
$tot_count =0;
$page = $prm['page'];
if ($page == null)
$page = 1;
$offset = ($page - 1) * $max_rst;
$q = [
'search' => isset($prm['search']) ? "%{$prm['search']}%" : '%'
];
$q_company = "m_company";
if ($prm['is_internal'] == 'Y')
$q_company = "m_branch";
$sql = "SELECT COUNT(T_OrderRefOutHeaderID) total
FROM t_orderrefoutheader
JOIN {$q_company} ON T_OrderRefOutHeader{$q_company}ID = {$q_company}ID
LEFT JOIN m_courier ON T_OrderRefOutHeaderM_CourierID = M_CourierID
LEFT JOIN m_staff ON M_CourierM_StaffID = M_StaffID
WHERE T_OrderRefOutHeaderIsSent = ?
AND T_OrderRefOutHeaderIsActive = 'Y'
AND ({$q_company}Name LIKE ? OR T_OrderRefOutHeaderNumber LIKE ?)";
$query = $this->db_smartone->query($sql, array($prm['status'], $q['search'], $q['search']));
if ($query) {
$tot_count = $query->result_array()[0]["total"];
}
else {
$this->sys_error_db("Ref Out Status count",$this->db_smartone);
exit;
}
$sql = "SELECT T_OrderRefOutHeaderID, T_OrderRefOutHeaderDate,
{$q_company}ID company_id, {$q_company}Name company_name,
T_OrderRefOutHeaderNumber, T_OrderRefOutHeaderIsSent,
M_StaffID, M_StaffName, M_KelurahanName, M_DistrictName,
M_CityName, M_ProvinceName, {$q_company}Address company_address,
M_CourierID, M_StaffName
FROM t_orderrefoutheader
JOIN {$q_company} ON T_OrderRefOutHeader{$q_company}ID = {$q_company}ID
LEFT JOIN m_courier ON T_OrderRefOutHeaderM_CourierID = M_CourierID
LEFT JOIN m_staff ON M_CourierM_StaffID = M_StaffID
LEFT JOIN m_kelurahan ON {$q_company}M_KelurahanID = M_KelurahanID
LEFT JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID
LEFT JOIN m_city ON M_DistrictM_CityID = M_CityID
LEFT JOIN m_province ON M_CityM_ProvinceID = M_ProvinceID
WHERE T_OrderRefOutHeaderIsSent = ?
AND T_OrderRefOutHeaderIsActive = 'Y'
AND ({$q_company}Name LIKE ? OR T_OrderRefOutHeaderNumber LIKE ?)
limit {$offset}, {$max_rst}";
$query = $this->db_smartone->query($sql, array($prm['status'], $q['search'], $q['search']));
if ($query) {
$rows = $query->result_array();
$result = array("total" => $tot_count, "total_page" => ceil($tot_count/$max_rst), "cur_page" => $page, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
}
else {
$this->sys_error_db("Ref Out Status rows",$this->db_smartone);
exit;
}
}
public function search_sample()
{
$prm = $this->sys_input;
$max_rst = 100;
$tot_count =0;
$page = $prm['page'];
if ($page == null)
$page = 1;
$offset = ($page - 1) * $max_rst;
$q = [
'search' => isset($prm['search']) ? "%{$prm['search']}%" : '%'
];
$sql = "SELECT COUNT(T_OrderRefOutSampleID) total
FROM t_orderrefoutsample
JOIN t_orderrefoutheader ON T_OrderRefOutSampleT_OrderRefOutHeaderID = T_OrderRefOutHeaderID
JOIN t_barcodelab ON T_OrderRefOutSampleT_BarcodeLabID = T_BarcodeLabID
WHERE T_ORderRefOutSampleIsActive = 'Y'
AND T_OrderRefOutSampleT_OrderRefOutHeaderID = ?";
$query = $this->db_smartone->query($sql, array($prm['header_id']));
if ($query) {
$tot_count = $query->result_array()[0]["total"];
}
else {
$this->sys_error_db("Ref Out Status count",$this->db_smartone);
exit;
}
$sql = "SELECT T_OrderRefOutSampleID, T_BarcodeLabBarcode, T_SampleTypeName, 'N' selected
FROM t_orderrefoutsample
JOIN t_orderrefoutheader ON T_OrderRefOutSampleT_OrderRefOutHeaderID = T_OrderRefOutHeaderID
JOIN t_barcodelab ON T_OrderRefOutSampleT_BarcodeLabID = T_BarcodeLabID
JOIN t_sampletype ON T_OrderRefOutSampleT_SampleTypeID = T_SampleTypeID
WHERE T_ORderRefOutSampleIsActive = 'Y'
AND T_OrderRefOutSampleT_OrderRefOutHeaderID = ?
limit {$offset}, {$max_rst}";
$query = $this->db_smartone->query($sql, array($prm['header_id']));
if ($query) {
$rows = $query->result_array();
$result = array("total" => $tot_count, "total_page" => ceil($tot_count/$max_rst), "cur_page" => $page, "records" => $rows, "total_display" => sizeof($rows), "query" => $this->db_smartone->last_query());
$this->sys_ok($result);
}
else {
$this->sys_error_db("Ref Out Status rows",$this->db_smartone);
exit;
}
}
public function search_courier()
{
$prm = $this->sys_input;
$max_rst = 100;
$sql = "SELECT M_CourierID, M_StaffName
FROM m_courier
JOIN m_staff ON M_CourierM_StaffID = M_StaffID
WHERE M_CourierIsActive = 'Y'";
$query = $this->db_smartone->query($sql);
if ($query) {
$rows = $query->result_array();
$result = array("records" => $rows);
$this->sys_ok($result);
}
else {
$this->sys_error_db("Ref Out Courier",$this->db_smartone);
exit;
}
}
public function send()
{
$prm = $this->sys_input;
$sql = "CALL sp_process_refout_status_send(?, ?, ?, ?)";
$query = $this->db_smartone->query($sql, [$prm['header_id'], $prm['ids'], $prm['courier_id'], $this->sys_user['M_UserID']]);
if ($query)
{
$row = $query->row();
if ($row->status == "OK")
{
$this->sys_ok($row);
exit;
}
}
$this->sys_error_db("Ref Out Confirm", $this->db_smartone);
}
}
?>