Files
BE_IBL/application/controllers/tools/fixing/Doubletestorder.php
2026-04-15 15:23:57 +07:00

164 lines
7.4 KiB
PHP

<?php
class Doubletestorder extends MY_Controller
{
var $db_onedev;
public function index()
{
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
}
function fixcheck($labnumber) {
$sql = "SELECT * FROM `t_orderheader` WHERE `T_OrderHeaderLabNumber` = '{$labnumber}' LIMIT 1";
$qry = $this->db_onedev->query($sql );
if (!$qry) {
print_r($this->db->error());
exit;
}
$orderid = $qry->row()->T_OrderHeaderID;
//echo $orderid;
$sql = " SELECT T_OrderDetailT_TestID AS T_TestID,
T_OrderDetailT_TestIsResult as is_result,
T_OrderDetailT_TestIsPrice as is_price,
COUNT(T_OrderDetailT_TestID) AS total_records,
Group_ResultFlagNonLab as is_nonlab
FROM t_orderdetail
LEFT JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID
AND Group_ResultDetailIsActive = 'Y'
LEFT JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID
WHERE T_OrderDetailT_OrderHeaderID = ?
AND T_OrderDetailIsActive = 'Y'
GROUP BY T_OrderDetailT_TestID
HAVING total_records > 1
";
$qry = $this->db_onedev->query($sql, array($orderid) );
//echo $this->db_onedev->last_query();
if (!$qry) {
print_r($this->db->error());
exit;
}
$rows = $qry->result_array();
$deleted_id = [];
foreach ($rows as $key => $value) {
if($value['is_price'] == 'Y' && $value['is_result'] == 'N'){
$sql = "SELECT *
FROM t_orderdetail
WHERE
T_OrderDetailT_OrderHeaderID = ? AND
T_OrderDetailT_TestID = ? AND
T_OrderDetailIsActive = 'Y'
ORDER BY T_OrderDetailID DESC
";
$qry = $this->db_onedev->query($sql, array($orderid,$value['T_TestID']) );
$id_null_result_price = $qry->result_array();
if(count($id_null_result_price) > 0){
$del_ids_price = intval($value['total_records']) - 1;
foreach($id_null_result_price as $knrp => $null_rstp){
if($knrp+1 <= $del_ids_price)
$deleted_id[] = $null_rstp['T_OrderDetailID'];
}
}
}else{
if($value['is_nonlab'] == 'N'){
$sql = "SELECT *
FROM t_orderdetail
WHERE
T_OrderDetailT_OrderHeaderID = ? AND
T_OrderDetailT_TestID = ? AND
T_OrderDetailIsActive = 'Y' AND
T_OrderDetailResult IS NULL";
$qry = $this->db_onedev->query($sql, array($orderid,$value['T_TestID']) );
$id_null_result = $qry->result_array();
if(count($id_null_result) > 0){
$del_ids = intval($value['total_records']) - 1;
foreach($id_null_result as $knr => $null_rst){
if($knr+1 <= $del_ids)
$deleted_id[] = $null_rst['T_OrderDetailID'];
}
}else{
$sql = "SELECT *
FROM t_orderdetail
WHERE
T_OrderDetailT_OrderHeaderID = ? AND
T_OrderDetailT_TestID = ? AND
T_OrderDetailIsActive = 'Y' AND
T_OrderDetailVerification <> 'Y'";
$qry = $this->db_onedev->query($sql, array($orderid,$value['T_TestID']) );
$id_ver_result = $qry->result_array();
if(count($id_ver_result) > 0){
$del_ids_ver = intval($value['total_records']) - 1;
foreach($id_ver_result as $knr_ver => $rst_ver){
if($knr_ver+1 <= $del_ids_ver)
$deleted_id[] = $rst_ver['T_OrderDetailID'];
}
}else{
$sql = "SELECT *
FROM t_orderdetail
WHERE
T_OrderDetailT_OrderHeaderID = ? AND
T_OrderDetailT_TestID = ? AND
T_OrderDetailIsActive = 'Y' AND
T_OrderDetailValidation <> 'Y'";
$qry = $this->db_onedev->query($sql, array($orderid,$value['T_TestID']) );
$id_val_result = $qry->result_array();
if(count($id_val_result) > 0){
$del_ids_val = intval($value['total_records']) - 1;
foreach($id_val_result as $knr_val => $rst_val){
if($knr_val+1 <= $del_ids_val)
$deleted_id[] = $rst_val['T_OrderDetailID'];
}
}
}
}
}else{
$sql = "SELECT *
FROM t_orderdetail
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND
T_OrderDetailT_TestID = ? AND
T_OrderDetailIsActive = 'Y' AND
So_ResultEntryID IS NULL";
$qry = $this->db_onedev->query($sql, array($orderid,$value['T_TestID']) );
$id_null_result_non = $qry->result_array();
//echo $this->db_onedev->last_query();
if(count($id_null_result_non) > 0){
$non_del_ids = intval($value['total_records']) - 1;
foreach($id_null_result_non as $knr_non => $null_rst_non){
if($knr_non+1 <= $non_del_ids)
$deleted_id[] = $null_rst_non['T_OrderDetailID'];
}
}
}
}
}
if(count($deleted_id) > 0){
$string_join = join(", ",$deleted_id);
$query_update_exist = "UPDATE `t_orderdetail`
SET `T_OrderDetailIsActive` = 'N', T_OrderDetailUserID = '555', T_OrderDetailLastUpdated = NOW()
WHERE `T_OrderDetailT_OrderHeaderID` = {$orderid}
AND `T_OrderDetailIsActive` = 'Y'
AND `T_OrderDetailID` IN ($string_join);
";
$qry = $this->db_onedev->query($query_update_exist);
echo $this->db_onedev->last_query();
//echo json_encode(join(", ",$deleted_id));
}
else
echo "Tidak ada yang dihapus";
}
}