Files
BE_CPONE/application/controllers/mockup/cpone-supervisor/Supervisor.php--requestdelete
2026-04-27 10:31:17 +07:00

3268 lines
128 KiB
Plaintext

<?php
class Supervisor extends MY_Controller
{
var $db_onedev;
public function index()
{
echo "Patient API";
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
}
function read()
{
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
//# ambil parameter input
$xuserid = $this->sys_user['M_UserID'];
$prm = $this->sys_input;
$id = $prm['id'];
$msg = $prm['msg'];
$type = $prm['type'];
$orderid = $prm['orderid'];
$sql = "UPDATE t_ordermessage SET T_OrderMessageRead = 'Y', T_OrderMessageReadUserID = '{$xuserid}', T_OrderMessageLastUpdated = NOW() WHERE T_OrderMessageID = {$id}";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_ordermessage update");
exit;
}
$sql = "INSERT INTO t_ordermessage(
T_OrderMessageReffID,
T_OrderMessageT_OrderHeaderID,
T_OrderMessageType,
T_OrderMessageMessage,
T_OrderMessageFromUserID,
T_OrderMessageCreated,
T_OrderMessageLastUpdated
)
VALUES(
?,
?,
?,
?,
?,
now(),
now()
)";
//echo $sql;
$query = $this->db_onedev->query($sql,array(
$id,
$orderid,
$type.'.reply',
$msg,
$xuserid
));
if (!$query) {
$this->sys_error_db("t_ordermessage insert");
exit;
}
$result = array(
"total" => 1 ,
"records" => array('prm'=>$prm)
);
$this->sys_ok($result);
exit;
}
function removealias()
{
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$rst = array('status'=>'OK');
//# ambil parameter input
$xuserid = $this->sys_user['M_UserID'];
$prm = $this->sys_input;
$id = $prm['id'];
$orderid = $prm['orderid'];
$sql = "UPDATE t_orderheaderaddon SET T_OrderHeaderAddOnAliasDoctorName = '', T_OrderHeaderAddOnAliasDoctorAddress = ''
WHERE
T_OrderHeaderAddOnT_OrderHeaderID = {$orderid}";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_ordermessage update");
exit;
}
$sql = "UPDATE t_orderheaderaddon SET T_OrderHeaderAddOnAliasDoctorName = '', T_OrderHeaderAddOnAliasDoctorAddress = ''
WHERE
T_OrderHeaderAddOnAliasDoctorName = '-'";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_ordermessage update");
exit;
}
$result = array(
"total" => 1 ,
"records" => $rst
);
$this->sys_ok($result);
exit;
}
function actvoid()
{
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$rst = array('status'=>'OK');
//# ambil parameter input
$xuserid = $this->sys_user['M_UserID'];
$prm = $this->sys_input;
$id = $prm['id'];
$msg = $prm['msg'];
$type = $prm['type'];
$orderid = $prm['orderid'];
$sql = "SELECT COUNT(*) as xcount FROM t_orderdetail WHERE T_OrderDetailT_OrderHeaderID = {$orderid} AND T_OrderDetailIsActive = 'Y'";
//echo $sql;
$xcount = $this->db_onedev->query($sql)->row()->xcount;
if($xcount == 0){
$sql = "UPDATE t_ordermessage SET T_OrderMessageIsActive = 'N', T_OrderMessageLastUpdated = NOW() WHERE T_OrderMessageID = {$id}";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_ordermessage update");
exit;
}
$sql = "UPDATE t_orderheader SET
T_OrderHeaderIsActive = 'N',
T_OrderHeaderUserID = {$xuserid},
T_OrderHeaderLastUpdated = NOW()
WHERE
T_OrderHeaderID = {$orderid}";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_orderheader update");
exit;
}
$sql = " INSERT INTO order_attr (
orderAttrT_OrderHeaderID,
orderAttrType,
orderAttrJson,
orderAttrUserID
)
VALUES(
{$orderid},
'spv_order_void',
'{$msg}',
{$xuserid}
)";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("order_attr insert");
exit;
}
}
else{
$rst = array('status'=>'NOTOK');
}
$result = array(
"total" => 1 ,
"records" => $rst
);
$this->sys_ok($result);
exit;
}
function verify()
{
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
//# ambil parameter input
$xuserid = $this->sys_user['M_UserID'];
$prm = $this->sys_input;
$id = $prm['id'];
$msg = $prm['msg'];
$type = $prm['type'];
$orderid = $prm['orderid'];
$sql = "UPDATE t_ordermessage SET
T_OrderMessageRead = 'Y',
T_OrderMessageDone = 'Y',
T_OrderMessageDoneNote = '{$msg}',
T_OrderMessageDoneUserID = {$xuserid},
T_OrderMessageLastUpdated = NOW()
WHERE
T_OrderMessageID = {$id}";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_ordermessage update");
exit;
}
$sql = "insert into fo_status(
Fo_StatusDate,
Fo_StatusT_OrderHeaderID,
Fo_StatusM_StatusID,
Fo_StatusM_UserID,
Fo_StatusCreated,
Fo_StatusUpdated)
values( now(), ?, ?, ?, now(),now())";
//echo $sql;
$query = $this->db_onedev->query($sql,
array(
$orderid,
5,
$xuserid
)
);
if (!$query) {
$this->sys_error_db("fo_status insert");
exit;
}
$fologcode = 'FO.VERIFICATION.CONFIRM';
$sql = "SELECT * FROM fo_verificationsvalue WHERE Fo_VerificationsValueT_OrderHeaderID = {$orderid}";
$data_log = array();
$data_log['orderid'] = $orderid;
$data_log['values'] = $this->db_onedev->query($sql)->result_array();
$data_log['note'] = $msg;
$json_dt_log = json_encode($data_log);
$sql = "insert into one_log.log_fo(
Log_FoDate,
Log_FoCode,
Log_FoJson,
Log_FoUserID)
values( now(), ?, ?, ?)";
//echo $sql;
$query = $this->db_onedev->query($sql,
array(
$fologcode,
$json_dt_log,
$xuserid
)
);
if (!$query) {
$this->sys_error_db("one_log.fo_log insert");
exit;
}
//$sql = "call sp_fo_barcode_generate_again_not_exist(" . $orderid. ")";
//$this->db_onedev->query($sql);
$sql = "
SELECT T_OrderHeaderLabNumber,
T_TestID,
IFNULL(local_sample_id,nas_sample_id) as xsample_id,
IFNULL(local_sample_code,nas_sample_code) as xsample_code
FROM (
SELECT T_OrderHeaderLabNumber, T_TestID,
a.T_SampleTypeID as nas_sample_id,
a.T_SampleTypeSuffix as nas_sample_code,
b.T_SampleTypeID as local_sample_id,
b.T_SampleTypeSuffix as local_sample_code
from t_orderheader
JOIN t_orderdetail ON t_orderheaderid = t_orderdetailt_orderheaderid AND t_orderdetailIsActive = 'Y'
JOIN t_test ON t_orderdetailt_testid = t_testid AND T_TestIsResult = 'Y'
JOIN t_sampletype a ON T_TestT_SampleTypeID = a.T_SampleTypeID
LEFT JOIN t_specimenlocal ON T_SpecimenLocalNat_TestID = T_TestNat_TestID AND T_SpecimenLocalIsActive = 'Y'
LEFT JOIN t_sampletype b ON T_SpecimenLocalT_SampleTypeID = b.T_SampleTypeID
where T_OrderHeaderID = {$orderid}
group by a.T_SampleTypeID, b.T_SampleTypeID ) x
GROUP BY xsample_id ";
$dt_barcode = $this->db_onedev->query($sql)->result_array();
foreach($dt_barcode as $kb => $vb){
$new_barcode = $vb['T_OrderHeaderLabNumber'].$vb['xsample_code'].'1';
$sql = " SELECT COUNT(*) as exist_sample
FROM t_barcodelab
WHERE
T_BarcodeLabT_OrderHeaderID = {$orderid} AND
( T_BarcodeLabT_SampleTypeID = {$vb['xsample_id']} ) AND
T_BarcodeLabIsActive = 'Y'";
$exist_sample = $this->db_onedev->query($sql)->row()->exist_sample;
if(intval($exist_sample) == 0){
$sql = "INSERT INTO t_barcodelab(T_BarcodeLabT_OrderHeaderID,
T_BarcodeLabBarcode,
T_BarcodeLabT_SampleTypeID,
T_BarcodeLabCounter)
SELECT {$orderid}, '{$new_barcode}', {$vb['xsample_id']}, 1;
";
$this->db_onedev->query($sql);
$sql = "SELECT T_BahanT_SampleStationID as stationid
FROM t_sampletype
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
WHERE T_SampleTypeID = {$vb['xsample_id']} LIMIT 1";
$stationid = $this->db_onedev->query($sql)->row()->stationid;
$sql = "SELECT T_SamplingQueueLastStatusT_SamplingQueueStatusID as status_queue
FROM t_sampling_queue_last_status
WHERE
T_SamplingQueueLastStatusT_OrderHeaderID = {$orderid} AND
T_SamplingQueueLastStatusT_SampleStationID = {$stationid}";
$status_queue = $this->db_onedev->query($sql)->row()->status_queue;
if(intval($status_queue) == 5){
$sql = "UPDATE t_sampling_queue_last_status
SET T_SamplingQueueLastStatusT_SamplingQueueStatusID = 2
WHERE
T_SamplingQueueLastStatusT_OrderHeaderID = {$orderid} AND
T_SamplingQueueLastStatusT_SampleStationID = {$stationid}";
$this->db_onedev->query($sql);
}
}
}
//$this->save_barcode_new($orderid);
$sql = "SELECT *
FROM t_orderdetail
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_OrderDetailT_TestID AND
T_SamplingSoIsActive = 'Y' AND T_SamplingSoDoneDate IS NOT NULL
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
So_ResultEntryT_OrderDetailID = T_OrderDetailID AND
So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$orderid} AND ISNULL(So_ResultEntryID) AND T_OrderDetailIsActive = 'Y'";
$dt_sore = $this->db_onedev->query($sql)->result_array();
foreach($dt_sore as $k => $v){
$sql = "CALL sp_insert_into_resultentry_so({$v['T_OrderDetailT_OrderHeaderID']},{$v['T_SamplingSoT_TestID']},{$xuserid})";
//echo $sql;
$this->db_onedev->query($sql);
}
$sql = "SELECT so_resultentry.*,so_resultentrydetail.*
FROM t_orderdetail
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_OrderDetailT_TestID AND
T_SamplingSoIsActive = 'Y' AND T_SamplingSoDoneDate IS NOT NULL
JOIN so_resultentry ON So_ResultEntryT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
So_ResultEntryT_OrderDetailID = T_OrderDetailID AND
So_ResultEntryIsActive = 'Y'
JOIN so_resultentrydetail ON So_ResultEntryDetailSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryDetailIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$orderid} AND T_OrderDetailIsActive = 'Y'
GROUP BY So_ResultEntryDetailID";
$dt_priority = $this->db_onedev->query($sql)->result_array();
foreach($dt_priority as $k_prior => $v_prior){
$sql = "SELECT *
FROM so_template
JOIN so_templatedetail ON So_TemplateDetailSo_TemplateID = So_TemplateID AND
So_TemplateDetailName = '{$v_prior['So_ResultEntryDetailSo_TemplateDetailName']}' AND
So_TemplateDetailIsActive = 'Y'
WHERE
So_TemplateName = '{$v_prior['So_ResultEntrySo_TemplateName']}' AND So_TemplateIsActive = 'Y'
GROUP BY So_TemplateDetailID
LIMIT 1";
$xtemp_detail = $this->db_onedev->query($sql)->row_array();
$sql = "UPDATE so_resultentrydetail SET
So_ResultEntryDetailSo_TemplateDetailPriority = '{$xtemp_detail['So_TemplateDetailPriority']}',
So_ResultEntryDetailSo_TemplateDetailUnit = '{$xtemp_detail['So_TemplateDetailUnit']}'
WHERE
So_ResultEntryDetailID = {$v_prior['So_ResultEntryDetailID']}
";
$this->db_onedev->query($sql);
}
$sql = "UPDATE t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
SET
T_OrderDetailT_TestName = T_TestName,
T_OrderDetailT_TestCode = T_TestCode
WHERE
( T_OrderDetailT_TestName = '' OR T_OrderDetailT_TestCode = '') AND
T_OrderDetailT_OrderHeaderID = {$orderid}";
$this->db_onedev->query($sql);
$sql = "UPDATE t_barcodelab
LEFT JOIN t_ordersample ON T_OrderSampleT_BarcodeLabID = T_BarcodeLabID AND
T_OrderSampleIsActive = 'Y'
SET T_BarcodeLabIsActive = 'N',
T_BarcodeLabUserID = {$xuserid}
WHERE
T_BarcodeLabT_OrderHeaderID = {$orderid} AND ISNULL(T_OrderSampleID)";
$this->db_onedev->query($sql);
$result = array(
"total" => 1 ,
"records" => array('prm'=>$prm)
);
$this->broadcast("fo-verification-y");
$this->sys_ok($result);
exit;
}
function lookup_supplies(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$query =" SELECT M_SuppliesID as id,
IFNULL(T_OrderSuppliesID,0) as xid,
IF(ISNULL(T_OrderSuppliesID),'N',T_OrderSuppliesIsActive) as chex,
IFNULL(T_OrderSuppliesQty,1) as qty,
M_SuppliesName as name,
IF(ISNULL(T_OrderSuppliesID),NOW(),T_OrderSuppliesLastUpdated) as lastupdated,
IF(ISNULL(T_OrderSuppliesID),NOW(),T_OrderSuppliesLastUpdated) as tx_lastupdated
FROM m_supplies
LEFT JOIN t_ordersupplies ON T_OrderSuppliesT_OrderHeaderID = $orderid AND T_OrderSuppliesM_SuppliesID = M_SuppliesID
WHERE
M_SuppliesIsActive = 'Y'
";
//echo $query ;
$rows = $this->db_onedev->query($query)->result_array();
foreach($rows as $k => $v){
if($v['chex'] == 'N')
$rows[$k]['chex'] = false;
else
$rows[$k]['chex'] = true;
}
$result = array(
"total" => 1 ,
"records" =>$rows
);
$this->sys_ok($result);
exit;
}
function save_supplies()
{
try {
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
//# ambil parameter input
$xuserid = $this->sys_user['M_UserID'];
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$supplies = $prm['supplies'];
$query =" SELECT T_SampleTypeID as id,
T_SampleTypeName as name,
'' as children
FROM t_orderheader
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
WHERE
T_OrderHeaderID = {$orderid}
GROUP BY T_SampleTypeID
";
// echo $query ;
$barcode = $this->db_onedev->query($query)->result();
foreach($barcode as $k => $v){
$query = "SELECT T_SampleTypeID as id, IFNULL(T_BarcodeLabID,0) as xid,
IF(ISNULL(T_BarcodeLabID),'Y',T_BarcodeLabIsActive) as chex,
T_TestName as testname,
T_SampleTypeName as samplename,
IF(ISNULL(T_BarcodeLabID),CONCAT(T_OrderHeaderLabNumber,'.',T_SampleTypeID,'.',1),T_BarcodeLabBarcode) as barcodenumber
FROM t_orderdetail
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
LEFT JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_BarcodeLabT_SampleTypeID = T_TestT_SampleTypeID AND T_BarcodeLabIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$orderid} AND T_SampleTypeID = {$v->id}
GROUP BY T_BarcodeLabID ";
$v->children = $this->db_onedev->query($query)->result_array();
foreach($v->children as $ki => $vi){
if($vi['chex'] == 'N')
$v->children[$ki]['chex'] = false;
else
$v->children[$ki]['chex'] = true;
}
}
$dt_log = array('orderid'=>$orderid,'supplies'=>$supplies,'barcode'=>$barcode);
$fologcode = 'FO.Verification.BarcodeSupplies';
$json_dt_log = json_encode($dt_log);
$sql = "insert into one_log.log_supplies_barcode(
Log_SuppliesBarcodeDate,
Log_SuppliesBarcodeCode,
Log_SuppliesBarcodeJson,
Log_SuppliesBarcodeUserID)
values( now(), ?, ?, ?)";
//echo $sql;
$query = $this->db_onedev->query($sql,
array(
$fologcode,
$json_dt_log,
$xuserid
)
);
if (!$query) {
$this->sys_error_db("one_log.log_supplies_barcode insert");
exit;
}
//print_r($supplies);
foreach($supplies as $k => $v){
if(intval($v['xid']) == 0 && $v['chex'] == true){
$sql = "insert into t_ordersupplies(
T_OrderSuppliesT_OrderHeaderID,
T_OrderSuppliesM_SuppliesID,
T_OrderSuppliesQty,
T_OrderSuppliesCreated,
T_OrderSuppliesLastUpdated,
T_OrderSuppliesUserID)
values( ?, ?, ?, now(),now(),?)";
//echo $sql;
$query = $this->db_onedev->query($sql,
array(
$orderid,
$v['id'],
$v['qty'],
$xuserid
)
);
if (!$query) {
$this->sys_error_db("t_ordersupplies insert");
exit;
}
}
if(intval($v['xid']) > 0 && $v['chex'] == true){
$sql = "update t_ordersupplies
set
T_OrderSuppliesQty = {$v['qty']},
T_OrderSuppliesLastUpdated = now(),
T_OrderSuppliesUserID = {$xuserid}
where
T_OrderSuppliesID = ?
";
//echo $sql;
$query = $this->db_onedev->query($sql,
array(
$v['xid']
)
);
if (!$query) {
$this->sys_error_db("t_ordersupplies update");
exit;
}
}
if(intval($v['xid']) > 0 && $v['chex'] == false){
$sql = "update t_ordersupplies
set
T_OrderSuppliesIsActive = 'N' ,
T_OrderSuppliesLastUpdated = now(),
T_OrderSuppliesUserID = $xuserid
where
T_OrderSuppliesID = ?
";
//echo $sql;
$query = $this->db_onedev->query($sql,
array(
$v['xid']
)
);
if (!$query) {
$this->sys_error_db("t_ordersupplies update");
exit;
}
}
}
$sql = "UPDATE t_ordermessage SET
T_OrderMessageRead = 'Y',
T_OrderMessageReadUserID = '{$xuserid}',
T_OrderMessageLastUpdated = NOW()
WHERE
T_OrderMessageT_OrderHeaderID = {$orderid} AND T_OrderMessageType = 'FO.VERIFICATION.REJECT'";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_ordermessage update");
exit;
}
$result = array ("total" => 1, "records" => array('supplies'=>$supplies));
$this->sys_ok($result);
} catch(Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function lookup_barcode(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$query =" SELECT T_SampleTypeID as id,
T_SampleTypeName as name,
'' as children
FROM t_orderheader
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
WHERE
T_OrderHeaderID = {$orderid}
GROUP BY T_SampleTypeID
";
//echo $query ;
$rows = $this->db_onedev->query($query)->result();
foreach($rows as $k => $v){
$query = "SELECT T_SampleTypeID as id, IFNULL(T_BarcodeLabID,0) as xid,
IF(ISNULL(T_BarcodeLabID),'Y',T_BarcodeLabIsActive) as chex,
T_TestName as testname,
T_SampleTypeName as samplename,
IF(ISNULL(T_BarcodeLabID),CONCAT(T_OrderHeaderLabNumber,'.',T_SampleTypeID,'.',1),T_BarcodeLabBarcode) as barcodenumber
FROM t_orderdetail
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
LEFT JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_BarcodeLabT_SampleTypeID = T_TestT_SampleTypeID AND T_BarcodeLabIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$orderid} AND T_SampleTypeID = {$v->id}
GROUP BY T_BarcodeLabID ";
$v->children = $this->db_onedev->query($query)->result_array();
foreach($v->children as $ki => $vi){
if($vi['chex'] == 'N')
$v->children[$ki]['chex'] = false;
else
$v->children[$ki]['chex'] = true;
}
}
$result = array(
"total" => 1 ,
"records" =>$rows
);
$this->sys_ok($result);
exit;
}
function lookup_promises(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$query =" SELECT T_OrderPromiseID as id,
DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y %H:%i') as name
FROM t_orderpromise
WHERE
T_OrderPromiseT_OrderHeaderID = {$orderid} AND T_OrderPromiseIsActive = 'Y'
";
//echo $query ;
$rows = $this->db_onedev->query($query)->result();
$result = array(
"total" => 1 ,
"records" =>$rows
);
$this->sys_ok($result);
exit;
}
function save_barcode_new($orderid){
$xuserid = $this->sys_user['M_UserID'];
//insert log
$supplies = array();
$query =" SELECT M_SuppliesID as id,
IFNULL(T_OrderSuppliesID,0) as xid,
IF(ISNULL(T_OrderSuppliesID),'N',T_OrderSuppliesIsActive) as chex,
IFNULL(T_OrderSuppliesQty,1) as qty,
M_SuppliesName as name,
IF(ISNULL(T_OrderSuppliesID),NOW(),T_OrderSuppliesLastUpdated) as lastupdated,
IF(ISNULL(T_OrderSuppliesID),NOW(),T_OrderSuppliesLastUpdated) as tx_lastupdated
FROM m_supplies
JOIN t_ordersupplies ON T_OrderSuppliesT_OrderHeaderID = $orderid AND T_OrderSuppliesM_SuppliesID = M_SuppliesID
WHERE
M_SuppliesIsActive = 'Y'
";
//echo $query ;
$supplies = $this->db_onedev->query($query)->result_array();
foreach($supplies as $k => $v){
if($v['chex'] == 'N')
$supplies[$k]['chex'] = false;
else
$supplies[$k]['chex'] = true;
}
$dt_log = array('orderid'=>$orderid,'supplies'=>$supplies,'barcode'=>array());
$fologcode = 'FO.Verification.BarcodeSupplies';
$json_dt_log = json_encode($dt_log);
$sql = "insert into one_log.log_supplies_barcode(
Log_SuppliesBarcodeDate,
Log_SuppliesBarcodeCode,
Log_SuppliesBarcodeJson,
Log_SuppliesBarcodeUserID)
values( now(), ?, ?, ?)";
//echo $sql;
$query = $this->db_onedev->query($sql,
array(
$fologcode,
$json_dt_log,
$xuserid
)
);
if (!$query) {
$this->sys_error_db("one_log.log_supplies_barcode insert");
exit;
}
}
function lookup_delivery(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$query ="
SELECT T_OrderDeliveryID as id,
0 as xid,
M_DeliveryTypeCode as code,
'Y' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
T_OrderDeliveryM_KelurahanID as vilageid,
IF(ISNULL(T_OrderDeliveryNoteID),'',T_OrderDeliveryNoteValue) as note,
'spvadditional' as type,
M_DeliveryName as label,
T_OrderDeliveryDestination as destination,
T_OrderDeliveryM_DeliveryID as addressid
FROM t_orderdelivery
JOIN m_delivery ON T_OrderDeliveryM_DeliveryID = M_DeliveryID
JOIN m_deliverytype ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdeliverynote ON T_OrderDeliveryNoteT_OrderDeliveryID = T_OrderDeliveryID AND T_OrderDeliveryNoteIsActive = 'Y'
WHERE
T_OrderDeliveryT_OrderHeaderID = {$orderid} AND T_OrderDeliveryIsActive = 'Y'
GROUP BY T_OrderDeliveryID
UNION
SELECT 0 as id,
M_DeliveryID as xid,
M_DeliveryTypeCode as code,
'N' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
0 as vilageid,
'' as note,
'spvadditional' as type,
M_DeliveryName as label,
'' as destination,
0 as addressid
FROM m_delivery
JOIN m_deliverytype ON M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdelivery ON T_OrderDeliveryT_OrderHeaderID = {$orderid} AND T_OrderDeliveryM_DeliveryID = M_DeliveryID AND T_OrderDeliveryIsActive = 'Y'
WHERE
M_DeliveryM_DeliveryTypeID = 1 AND ISNULL(T_OrderDeliveryID) AND M_DeliveryIsActive = 'Y'
UNION
SELECT 0 as id,
M_DeliveryID as xid,
M_DeliveryTypeCode as code,
'N' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
M_PatientAddressM_KelurahanID as vilageid,
'' as note,
'spvadditional' as type,
M_DeliveryName as label,
CONCAT(M_PatientAddressDescription,' ',M_KelurahanName,', ',M_DistrictName,', ',M_CityName) as destination,
M_PatientAddressID as addressid
FROM t_orderheader
JOIN m_patientaddress ON M_PatientAddressM_PatientID = T_OrderHeaderM_PatientID
JOIN m_kelurahan ON M_PatientAddressM_KelurahanID = M_KelurahanID
JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID
JOIN m_city ON M_DistrictM_CityID = M_CityID
JOIN m_delivery ON M_DeliveryID = 2 AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdelivery ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID AND T_OrderDeliveryM_DeliveryID = M_DeliveryID AND
T_OrderDeliveryAddressID = M_PatientAddressID AND T_OrderDeliveryIsActive = 'Y'
WHERE
T_OrderHeaderID = {$orderid} AND ISNULL(T_OrderDeliveryID)
GROUP BY M_PatientAddressID
UNION
SELECT 0 as id,
M_DeliveryID as xid,
M_DeliveryTypeCode as code,
'N' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
M_DoctorAddressM_KelurahanID as vilageid,
'' as note,
'spvadditional' as type,
M_DeliveryName as label,
CONCAT(M_DoctorAddressDescription,' ',M_KelurahanName,', ',M_DistrictName,', ',M_CityName) as destination,
M_DoctorAddressID as addressid
FROM t_orderheader
JOIN m_doctoraddress ON M_DoctorAddressM_DoctorID = T_OrderHeaderSenderM_DoctorID
JOIN m_kelurahan ON M_DoctorAddressM_KelurahanID = M_KelurahanID
JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID
JOIN m_city ON M_DistrictM_CityID = M_CityID
JOIN m_delivery ON M_DeliveryID = 4 AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdelivery ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID AND T_OrderDeliveryM_DeliveryID = M_DeliveryID AND
T_OrderDeliveryAddressID = M_DoctorAddressID AND T_OrderDeliveryIsActive = 'Y'
WHERE
T_OrderHeaderID = {$orderid} AND ISNULL(T_OrderDeliveryID)
GROUP BY M_DoctorAddressID
UNION
SELECT 0 as id,
M_DeliveryID as xid,
M_DeliveryTypeCode as code,
'N' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
M_CompanyM_KelurahanID as vilageid,
'' as note,
'spvadditional' as type,
M_DeliveryName as label,
CONCAT(M_CompanyAddress,' ',M_KelurahanName,', ',M_DistrictName,', ',M_CityName) as destination,
M_CompanyID as addressid
FROM t_orderheader
JOIN m_company ON M_CompanyID = T_OrderHeaderM_CompanyID
JOIN m_kelurahan ON M_CompanyM_KelurahanID = M_KelurahanID
JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID
JOIN m_city ON M_DistrictM_CityID = M_CityID
JOIN m_delivery ON M_DeliveryID = 10 AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdelivery ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID AND T_OrderDeliveryM_DeliveryID = M_DeliveryID AND
T_OrderDeliveryAddressID = M_CompanyID AND T_OrderDeliveryIsActive = 'Y'
WHERE
T_OrderHeaderID = {$orderid} AND ISNULL(T_OrderDeliveryID)
UNION
SELECT 0 as id,
M_DeliveryID as xid,
M_DeliveryTypeCode as code,
'N' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
0 as vilageid,
'' as note,
'spvadditional' as type,
M_DeliveryName as label,
CASE
WHEN M_DeliveryID = 3 THEN M_PatientEmail
WHEN M_DeliveryID = 5 THEN M_DoctorEmail
WHEN M_DeliveryID = 11 THEN M_MouEmail
END as destination,
0 as addressid
FROM t_orderheader
JOIN m_doctor ON M_DoctorID = T_OrderHeaderSenderM_DoctorID
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN m_mou ON M_MouID = T_OrderHeaderM_MouID
JOIN m_delivery ON M_DeliveryM_DeliveryTypeID = 3 AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdelivery ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID AND T_OrderDeliveryM_DeliveryID = M_DeliveryID AND T_OrderDeliveryIsActive = 'Y'
WHERE
T_OrderHeaderID = {$orderid} AND ISNULL(T_OrderDeliveryID)
UNION
SELECT 0 as id,
M_DeliveryID as xid,
M_DeliveryTypeCode as code,
'N' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
0 as vilageid,
'' as note,
'spvadditional' as type,
M_DeliveryName as label,
CASE
WHEN M_DeliveryID = 6 THEN M_PatientHP
WHEN M_DeliveryID = 7 THEN M_DoctorHP
END as destination,
0 as addressid
FROM t_orderheader
JOIN m_doctor ON M_DoctorID = T_OrderHeaderSenderM_DoctorID
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN m_delivery ON M_DeliveryM_DeliveryTypeID = 4 AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdelivery ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID AND T_OrderDeliveryM_DeliveryID = M_DeliveryID AND T_OrderDeliveryIsActive = 'Y'
WHERE
T_OrderHeaderID = {$orderid} AND ISNULL(T_OrderDeliveryID)
UNION
SELECT 0 as id,
M_DeliveryID as xid,
M_DeliveryTypeCode as code,
'N' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
0 as vilageid,
'' as note,
'spvadditional' as type,
M_DeliveryName as label,
CASE
WHEN M_DeliveryID = 8 THEN M_PatientHP
WHEN M_DeliveryID = 9 THEN M_DoctorHP
END as destination,
0 as addressid
FROM t_orderheader
JOIN m_doctor ON M_DoctorID = T_OrderHeaderSenderM_DoctorID
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN m_delivery ON M_DeliveryM_DeliveryTypeID = 5 AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdelivery ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID AND T_OrderDeliveryM_DeliveryID = M_DeliveryID AND T_OrderDeliveryIsActive = 'Y'
WHERE
T_OrderHeaderID = {$orderid} AND ISNULL(T_OrderDeliveryID)
UNION
SELECT 0 as id,
M_DeliveryID as xid,
M_DeliveryTypeCode as code,
'N' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
0 as vilageid,
'' as note,
'spvadditional' as type,
M_DeliveryName as label,
'Kirim ke eHac' as destination,
0 as addressid
FROM t_orderheader
JOIN m_doctor ON M_DoctorID = T_OrderHeaderSenderM_DoctorID
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN m_delivery ON M_DeliveryM_DeliveryTypeID = 6 AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdelivery ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID AND T_OrderDeliveryM_DeliveryID = M_DeliveryID AND T_OrderDeliveryIsActive = 'Y'
WHERE
T_OrderHeaderID = {$orderid} AND ISNULL(T_OrderDeliveryID)
";
//echo $query ;
$rows_other = $this->db_onedev->query($query)->result_array();
$result = array(
"total" => 1 ,
"records" => array('delivery_register'=>array(),'delivery_verification'=>array(),'delivery_other'=>$rows_other)
);
$this->sys_ok($result);
exit;
}
function save_delivery_additional_verification()
{
try {
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
//# ambil parameter input
$xuserid = $this->sys_user['M_UserID'];
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$delver = $prm['delver'];
foreach($delver as $i => $v){
$sql = "insert into t_orderdelivery(
T_OrderDeliveryT_OrderHeaderID,
T_OrderDeliveryM_DeliveryID,
T_OrderDeliveryM_DeliveryTypeID,
T_OrderDeliveryDestination,
T_OrderDeliveryAddressID,
T_OrderDeliveryM_KelurahanID,
T_OrderDeliveryUserID,
T_OrderDeliveryCreated,
T_OrderDeliveryLastUpdated)
values( ?, ?, ?, ?, ?, ?, ?,now(), now())";
$query = $this->db_onedev->query($sql,
array(
$orderid,
$v['deliveryid'],
$v['typedeliveryid'],
$v['destination'],
$v['addressid'],
$v['vilageid'],
$xuserid
)
);
//echo $this->db_onedev->last_query();
if (!$query) {
$this->sys_error_db("t_orderdelivery insert");
exit;
}else{
$lastid = $this->db_onedev->insert_id();
$sql = "update fo_verification_delivery_add
set
Fo_VerificationDeliveryAddT_OrderDeliveryID = {$lastid} ,
Fo_VerificationDeliveryAddLastUpdated = now(),
Fo_VerificationDeliveryAddUserID = {$xuserid}
where
Fo_VerificationDeliveryAddID = {$v['xid']}
";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("fo_verification_delivery_add update");
exit;
}
}
}
$sql = "SELECT * FROM fo_verification_delivery WHERE Fo_VerificationDeliveryT_OrderHeaderID = {$orderid} AND Fo_VerificationDeliveryIsOK = 'N'";
$nonactive_rst = $this->db_onedev->query($sql)->result();
if($nonactive_rst){
foreach($nonactive_rst as $i=>$val)
$sql = "UPDATE t_orderdelivery SET
T_OrderDeliveryIsActive = 'N',
T_OrderDeliveryUserID = {$xuserid},
T_OrderDeliveryLastUpdated = now()
WHERE
T_OrderDeliveryID = {$val->Fo_VerificationDeliveryT_OrderDeliveryID}
";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_orderdelivery update");
exit;
}
}
$sql = "UPDATE t_ordermessage SET
T_OrderMessageRead = 'Y',
T_OrderMessageReadUserID = '{$xuserid}',
T_OrderMessageLastUpdated = NOW()
WHERE
T_OrderMessageT_OrderHeaderID = {$orderid} AND T_OrderMessageType = 'FO.VERIFICATION.REJECT'";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_ordermessage update");
exit;
}
//$orderid = $prm['orderid'];
$query =" SELECT T_OrderDeliveryID as id,
IFNULL(Fo_VerificationDeliveryID,0) as xid,
M_DeliveryTypeCode as code,
IF(ISNULL(Fo_VerificationDeliveryID),'N',Fo_VerificationDeliveryIsOK) as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
T_OrderDeliveryM_KelurahanID as vilageid,
IF(ISNULL(Fo_VerificationDeliveryID),'',Fo_VerificationDeliveryReason) as note,
'registration' as type,
M_DeliveryName as label,
CASE
WHEN T_OrderDeliveryM_DeliveryID = 1 THEN ''
WHEN T_OrderDeliveryM_DeliveryID = 4 THEN M_DoctorAddressDescription
WHEN T_OrderDeliveryM_DeliveryID = 2 THEN M_PatientAddressDescription
ELSE
T_OrderDeliveryDestination
END as destination,
CASE
WHEN T_OrderDeliveryM_DeliveryID = 4 THEN M_DoctorAddressID
WHEN T_OrderDeliveryM_DeliveryID = 2 THEN M_PatientAddressID
ELSE
0
END as addressid
FROM t_orderdelivery
JOIN m_delivery ON T_OrderDeliveryM_DeliveryID = M_DeliveryID
JOIN m_deliverytype ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN m_doctoraddress ON T_OrderDeliveryAddressID = M_DoctorAddressID AND T_OrderDeliveryM_DeliveryID = 4
LEFT JOIN m_patientaddress ON T_OrderDeliveryAddressID = M_PatientAddressID AND T_OrderDeliveryM_DeliveryID = 2
LEFT JOIN fo_verification_delivery ON Fo_VerificationDeliveryT_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID AND Fo_VerificationDeliveryIsActive = 'Y'
WHERE
T_OrderDeliveryT_OrderHeaderID = {$orderid} AND T_OrderDeliveryIsActive = 'Y'
GROUP BY T_OrderDeliveryID
";
//echo $query ;
$rows_register = $this->db_onedev->query($query)->result_array();
$result = array ("total" => 1, "records" => $rows_register);
$this->sys_ok($result);
} catch(Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function save_delivery_additional_other()
{
try {
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
//# ambil parameter input
$xuserid = $this->sys_user['M_UserID'];
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$delot = $prm['delot'];
$sql = "SELECT T_OrderDeliveryID as id,
0 as xid,
M_DeliveryTypeCode as code,
'Y' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
T_OrderDeliveryM_KelurahanID as vilageid,
IF(ISNULL(T_OrderDeliveryNoteID),'',T_OrderDeliveryNoteValue) as note,
'spvadditional' as type,
M_DeliveryName as label,
T_OrderDeliveryDestination as destination,
T_OrderDeliveryM_DeliveryID as addressid
FROM t_orderdelivery
JOIN m_delivery ON T_OrderDeliveryM_DeliveryID = M_DeliveryID
JOIN m_deliverytype ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdeliverynote ON T_OrderDeliveryNoteT_OrderDeliveryID = T_OrderDeliveryID AND T_OrderDeliveryNoteIsActive = 'Y'
WHERE
T_OrderDeliveryT_OrderHeaderID = {$orderid} AND T_OrderDeliveryIsActive = 'Y'
GROUP BY T_OrderDeliveryID";
$result_old = $this->db_onedev->query($sql)->result_array();
foreach($delot as $i => $v){
$v['destination'] = str_replace("'", "\\'", $v['destination']);
if(($v['id'] == 0 || $v['id'] == '0') && $v['chex'] == 'Y'){
if($v['code'] == 'EMAIL' || $v['code'] == 'WHATSAPP' || $v['code'] == 'TELEGRAM'){
if($v['note'] != '')
$v['destination'] = $v['note'];
}
$sql = "insert into t_orderdelivery(
T_OrderDeliveryT_OrderHeaderID,
T_OrderDeliveryM_DeliveryID,
T_OrderDeliveryM_DeliveryTypeID,
T_OrderDeliveryDestination,
T_OrderDeliveryAddressID,
T_OrderDeliveryM_KelurahanID,
T_OrderDeliveryUserID,
T_OrderDeliveryCreated,
T_OrderDeliveryLastUpdated)
values(
{$orderid},
{$v['deliveryid']},
{$v['typedeliveryid']},
'{$v['destination']}',
{$v['addressid']},
{$v['vilageid']},
{$xuserid}, now(), now()
)";
$query = $this->db_onedev->query($sql);
//echo $this->db_onedev->last_query();
$last_insert_id = $this->db_onedev->insert_id();
if($last_insert_id && $v['note'] != '' && $v['code'] != 'EMAIL' && $v['code'] != 'WHATSAPP' && $v['code'] != 'TELEGRAM'){
$sql = "INSERT INTO t_orderdeliverynote(
T_OrderDeliveryNoteT_OrderDeliveryID,
T_OrderDeliveryNoteValue,
T_OrderDeliveryNoteCreated,
T_OrderDeliveryNoteUserID
)
VALUES(
{$last_insert_id},
'{$v['note']}',
NOW(),
{$xuserid}
)";
$this->db_onedev->query($sql);
}
if (!$query) {
$this->sys_error_db("t_orderdelivery insert");
exit;
}
}
if(($v['id'] != 0 || $v['id'] != '0') && $v['chex'] == 'Y'){
if($v['code'] == 'EMAIL' || $v['code'] == 'WHATSAPP' || $v['code'] == 'TELEGRAM'){
if($v['note'] != '')
$v['destination'] = $v['note'];
}
$sql = "update t_orderdelivery
set
T_OrderDeliveryUserID = {$xuserid},
T_OrderDeliveryDestination = '{$v['destination']}' ,
T_OrderDeliveryLastUpdated = now()
where
T_OrderDeliveryID = {$v['id']}
";
//echo $sql;
$query = $this->db_onedev->query($sql);
if($v['note'] != '' && $v['code'] != 'EMAIL' && $v['code'] != 'WHATSAPP' && $v['code'] != 'TELEGRAM'){
$sql = "UPDATE t_orderdeliverynote SET T_OrderDeliveryNoteIsActive = 'N' WHERE T_OrderDeliveryNoteT_OrderDeliveryID = {$v['id']}";
$this->db_onedev->query($sql);
$sql = "INSERT INTO t_orderdeliverynote(
T_OrderDeliveryNoteT_OrderDeliveryID,
T_OrderDeliveryNoteValue,
T_OrderDeliveryNoteCreated,
T_OrderDeliveryNoteUserID
)
VALUES(
{$v['id']},
'{$v['note']}',
NOW(),
{$xuserid}
)";
$this->db_onedev->query($sql);
//echo $sql;
}
if (!$query) {
$this->sys_error_db("t_orderdelivery update");
exit;
}
}
if(($v['id'] != 0 || $v['id'] != '0') && $v['chex'] == 'N'){
$sql = "update t_orderdelivery
set
T_OrderDeliveryUserID = {$xuserid},
T_OrderDeliveryIsActive = 'N' ,
T_OrderDeliveryLastUpdated = now()
where
T_OrderDeliveryID = {$v['id']}
";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_orderdelivery update");
exit;
}
}
}
$sql = "UPDATE t_ordermessage SET
T_OrderMessageRead = 'Y',
T_OrderMessageReadUserID = '{$xuserid}',
T_OrderMessageLastUpdated = NOW()
WHERE
T_OrderMessageT_OrderHeaderID = {$orderid} AND T_OrderMessageType = 'FO.VERIFICATION.REJECT'";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_ordermessage update");
exit;
}
$sql = "SELECT T_OrderDeliveryID as id,
0 as xid,
M_DeliveryTypeCode as code,
'Y' as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
T_OrderDeliveryM_KelurahanID as vilageid,
IF(ISNULL(T_OrderDeliveryNoteID),'',T_OrderDeliveryNoteValue) as note,
'spvadditional' as type,
M_DeliveryName as label,
T_OrderDeliveryDestination as destination,
T_OrderDeliveryM_DeliveryID as addressid
FROM t_orderdelivery
JOIN m_delivery ON T_OrderDeliveryM_DeliveryID = M_DeliveryID
JOIN m_deliverytype ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN t_orderdeliverynote ON T_OrderDeliveryNoteT_OrderDeliveryID = T_OrderDeliveryID AND T_OrderDeliveryNoteIsActive = 'Y'
WHERE
T_OrderDeliveryT_OrderHeaderID = {$orderid} AND T_OrderDeliveryIsActive = 'Y'
GROUP BY T_OrderDeliveryID";
$result_new = $this->db_onedev->query($sql)->result_array();
$json_del = json_encode(array('old'=>$result_old,'new'=>$result_new));
$sql= " INSERT order_delivery (
Order_DeliveryT_OrdeheaderID,
Order_DeliveryJson,
Order_DeliveryUserID
)
VALUES(
{$orderid},
'{$json_del}',
{$xuserid}
)";
$this->db_onedev->query($sql);
$result = array ("total" => 1, "records" => $delver);
$this->sys_ok($result);
} catch(Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function lookup_order(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$query =" SELECT t_orderheader.*,
M_DoctorID,
CONCAT('[ ',M_DoctorCode,' ] ',IFNULL(M_DoctorPrefix,''),'',IFNULL(M_DoctorPrefix2,''),' ',M_DoctorName,' ',IFNULL(M_DoctorSufix,''),IFNULL(M_DoctorSufix2,''),IFNULL(M_DoctorSufix3,'')) M_DoctorName,
M_DoctorAddressID,
M_DoctorAddressNote,
M_DoctorAddressDescription,
M_CompanyID,
M_CompanyName,
M_MouID,
M_MouName,
M_MouStartDate,
M_MouEndDate,
CONCAT(M_MouName,' (',DATE_FORMAT(M_MouStartDate,'%d-%m-%Y'),' sd ',DATE_FORMAT(M_MouEndDate,'%d-%m-%Y'),') ') as mouname,
'' as tests,
'' as testsadd,
'' as doctoraddresses,
'' as doctors,
'' as companies,
'' as mous
FROM t_orderheader
JOIN m_doctor ON T_OrderHeaderSenderM_DoctorID = M_DoctorID
JOIN m_doctoraddress ON T_OrderHeaderSenderM_DoctorAddressID = M_DoctorAddressID
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
WHERE
T_OrderHeaderID = {$orderid}
GROUP BY T_OrderHeaderID
";
//echo $query ;
$rowx = $this->db_onedev->query($query)->row();
$sql = "select M_LangID as id, M_LangName as name
from m_lang
where M_LangIsActive = 'Y'";
$langs = $this->db_onedev->query($sql)->result();
$arr_lang = array();
foreach($langs as $klang => $xlang){
array_push($arr_lang,array('id'=>$xlang->id,'si'=>'N','code'=>$xlang->id.'-N','name'=>$xlang->name));
array_push($arr_lang,array('id'=>$xlang->id,'si'=>'Y','code'=>$xlang->id.'-Y','name'=>$xlang->name.' ( SI )'));
}
$rtn_langs = array();
foreach($arr_lang as $kklang => $xxlang){
if(intval($xxlang['id']) != 1){
array_push($rtn_langs,$xxlang);
}
}
$sql = "SELECT *
FROM t_orderheaderaddon
JOIN m_lang ON T_OrderHeaderAddOnSecondM_LangID = M_LangID
WHERE
T_OrderHeaderAddOnT_OrderHeaderID = {$orderid}";
$lang_second_now = $this->db_onedev->query($sql)->row_array();
$selected_lang_second = array();
if($lang_second_now){
$name = $lang_second_now['M_LangName'];
if($lang_second_now['T_OrderHeaderAddOnSecondLangIsSI'] == 'Y')
$name = $lang_second_now['M_LangName'].' ( SI )';
$selected_lang_second = array(
'id'=>$lang_second_now['M_LangID'],
'si'=>$lang_second_now['T_OrderHeaderAddOnSecondLangIsSI'],
'code'=>$lang_second_now['M_LangID'].'-'.$lang_second_now['T_OrderHeaderAddOnSecondLangIsSI'],
'name'=>$name
);
}
$rowx->langs = $rtn_langs;
$rowx->selected_lang = $selected_lang_second;
$query = " SELECT M_DoctorAddressID as id, M_DoctorAddressDescription as name
FROM m_doctoraddress
WHERE
M_DoctorAddressM_DoctorID = {$rowx->M_DoctorID} AND M_DoctorAddressIsActive = 'Y'";
$rowx->doctoraddresses = $this->db_onedev->query($query)->result_array();
$rowx->doctors = array(array('id'=>$rowx->M_DoctorID,'name'=>$rowx->M_DoctorName));
$query = " SELECT M_MouID as id, CONCAT(M_MouName,' (',DATE_FORMAT(M_MouStartDate,'%d-%m-%Y'),' sd ',DATE_FORMAT(M_MouEndDate,'%d-%m-%Y'),') ') as name
FROM m_mou
WHERE
M_MouM_CompanyID = {$rowx->M_CompanyID} AND M_MouIsReleased = 'Y' AND M_MouIsActive = 'Y' AND ( CURDATE() >= DATE(M_MouStartDate) AND CURDATE() <= DATE(M_MouEndDate) )";
$rowx->mous = $this->db_onedev->query($query)->result_array();
$rowx->companies = array(array('id'=>$rowx->M_CompanyID,'name'=>$rowx->M_CompanyName));
$result = array(
"total" => 1 ,
"records" =>$rowx
);
$this->sys_ok($result);
exit;
}
function searchdoctor(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$max_rst = 12;
$tot_count =0;
$q = [
'search' => '%'
];
if ($prm['search'] != '')
{
$q['search'] = "%{$prm['search']}%";
}
// QUERY TOTAL
$sql = "SELECT count(*) as total
FROM m_doctor
WHERE
M_DoctorName like ?
AND M_DoctorIsActive = 'Y'";
$query = $this->db_onedev->query($sql,$q['search']);
//echo $query;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
}
else {
$this->sys_error_db("m_doctor count",$this->db_onedev);
exit;
}
$sql = "
SELECT M_DoctorID as id, CONCAT('[ ',M_DoctorCode,' ] ',IFNULL(M_DoctorPrefix,''),'',IFNULL(M_DoctorPrefix2,''),' ',M_DoctorName,' ',IFNULL(M_DoctorSufix,''),IFNULL(M_DoctorSufix2,''),IFNULL(M_DoctorSufix3,'')) as name, '' as xaddress
FROM m_doctor
WHERE
CONCAT('[ ',M_DoctorCode,' ] ',IFNULL(M_DoctorPrefix,''),'',IFNULL(M_DoctorPrefix2,''),' ',M_DoctorName,' ',IFNULL(M_DoctorSufix,''),IFNULL(M_DoctorSufix2,''),IFNULL(M_DoctorSufix3,'')) like '{$q['search']}'
AND M_DoctorIsActive = 'Y'
group by M_DoctorID
ORDER BY M_DoctorName ASC
LIMIT 20
";
// echo $sql;
$query = $this->db_onedev->query($sql);
if ($query) {
$rows = $query->result_array();
/*foreach($rows as $k => $v){
$sql = "SELECT * FROM m_doctoraddress WHERE M_DoctorAddressM_DoctorID = {$v->id} AND M_DoctorAddressIsActive = 'Y'";
$rows[$k]['xaddress'] = $this->db_onedev->query($sql)->result();
}*/
//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("m_doctor rows",$this->db_onedev);
exit;
}
}
function searchcompany(){
//# cek token valid
$prm = $this->sys_input;
$max_rst = 12;
$tot_count =0;
$q = [
'search' => '%'
];
$xsearch = $prm['search']['search'];
if ($prm['search'] != '')
{
$q['search'] = "%{$xsearch}%";
}
// QUERY TOTAL
$sql = "
SELECT M_CompanyID as id, M_CompanyName as name
FROM m_company
WHERE
M_CompanyName like CONCAT('%','{$prm['search']}','%')
AND M_CompanyIsActive = 'Y'
ORDER BY M_CompanyName ASC LIMIT 20
";
$query = $this->db_onedev->query($sql);
//echo $this->db_onedev->last_query();
if ($query) {
$rows = $query->result_array();
//echo $this->db_onedev->last_query();
$result = array("total" => 1, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
}
else {
$this->sys_error_db("m_company rows",$this->db_onedev);
exit;
}
}
function getdoctoraddress(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" SELECT M_DoctorAddressID as id, M_DoctorAddressDescription as name
FROM m_doctoraddress
WHERE M_DoctorAddressM_DoctorID = ? AND M_DoctorAddressIsActive = 'Y'
";
//echo $query;
$rows = $this->db_onedev->query($query,array($prm['id']))->result_array();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function getmou(){
//# cek token valid
$prm = $this->sys_input;
$query =" SELECT M_MouID as id, CONCAT(M_MouName,' (',DATE_FORMAT(M_MouStartDate,'%d-%m-%Y'),' sd ',DATE_FORMAT(M_MouEndDate,'%d-%m-%Y'),') ') as name
FROM m_mou
WHERE M_MouM_CompanyID = ? AND M_MouIsActive = 'Y' AND M_MouIsReleased = 'Y' AND ( CURDATE() >= DATE(M_MouStartDate) AND CURDATE() <= DATE(M_MouEndDate) )
";
//echo $query;
$rows = $this->db_onedev->query($query,array($prm['id']))->result_array();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function checkprice(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$mouid = $prm['mouid'];
$query =" SELECT t_orderdetail.*,
json_extract(fn_price_spv(T_OrderDetailT_TestID,T_OrderHeaderDate,T_OrderDetailIsCito,$mouid), '$.test_total') as checkprice
FROM t_orderdetail
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
WHERE
T_OrderDetailT_OrderHeaderID = {$prm['orderid']} AND T_OrderDetailT_TestIsPrice = 'Y' AND T_OrderDetailIsActive = 'Y'
HAVING checkprice < 0
";
//echo $query;
$rows = $this->db_onedev->query($query)->result_array();
//echo $this->db_onedev->last_query();
if($rows){
$rtn = array('status'=>'FAILED', 'data'=>$rows);
}
else{
$rtn = array('status'=>'OK', 'data'=>array());
}
$result = array(
"total" => 1,
"records" => $rtn,
);
$this->sys_ok($result);
exit;
}
function flagmcu(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" UPDATE t_orderheaderaddon SET T_OrderHeaderAddOnPatientMcu = '{$prm['value']}' WHERE T_OrderHeaderAddOnT_OrderHeaderID = {$prm['orderid']}";
//echo $query;
$rows = $this->db_onedev->query($query);
$result = array(
"total" => 1,
"records" => array(),
);
$this->sys_ok($result);
exit;
}
function saveorder()
{
try {
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
//# ambil parameter input
$xuserid = $this->sys_user['M_UserID'];
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$sql = "SELECT * FROM t_orderheader WHERE T_OrderHeaderID = '{$prm['orderid']}'";
$orderold = $this->db_onedev->query($sql)->row_array();
$sql = "UPDATE t_orderheader SET
T_OrderHeaderSenderM_DoctorID = '{$prm['doctorid']}',
T_OrderHeaderSenderM_DoctorAddressID = '{$prm['doctoraddressid']}',
T_OrderHeaderM_CompanyID = '{$prm['company']}',
T_OrderHeaderM_MouID = '{$prm['mou']}',
T_OrderHeaderUserID = '{$xuserid}',
T_OrderHeaderLastUpdated = NOW()
WHERE
T_OrderHeaderID = {$prm['orderid']}";
//echo $sql;
$query = $this->db_onedev->query($sql);
if($orderold['T_OrderHeaderM_CompanyID'] != $prm['company']){
$log_attr_type = "spv_order_company";
$sql = "SELECT M_CompanyID as id, M_CompanyName as name
FROM m_company
WHERE
M_CompanyID = {$orderold['T_OrderHeaderM_CompanyID']}";
$x_old_company = $this->db_onedev->query($sql)->row_array();
$sql = "SELECT M_CompanyID as id, M_CompanyName as name
FROM m_company
WHERE
M_CompanyID = {$prm['company']}";
$x_new_company = $this->db_onedev->query($sql)->row_array();
$x_json_company = json_encode(array('old'=>$x_old_company,'new'=>$x_new_company));
$sql = "INSERT INTO order_attr (
orderAttrT_OrderHeaderID,
orderAttrType,
orderAttrJson,
orderAttrUserID
)
VALUES(
{$prm['orderid']},
'{$log_attr_type}',
'{$x_json_company}',
'{$xuserid}'
)";
$this->db_onedev->query($sql);
}
if($orderold['T_OrderHeaderSenderM_DoctorID'] != $prm['doctorid'] || $orderold['T_OrderHeaderSenderM_DoctorAddressID'] != $prm['doctoraddressid']){
$log_attr_type = "spv_order_doctor";
$sql = "SELECT CONCAT(M_DoctorID,'^',M_DoctorAddressID) as id,
CONCAT(CONCAT(M_DoctorPrefix,M_DoctorPrefix2,' ',M_DoctorName,' ',M_DoctorSufix,M_DoctorSufix2,M_DoctorSufix3),'^',CONCAT(M_DoctorAddressNote,' : ',M_DoctorAddressDescription)) as name
FROM m_doctor
LEFT JOIN m_doctoraddress ON M_DoctorAddressM_DoctorID = M_DoctorID AND
M_DoctorAddressID = {$orderold['T_OrderHeaderSenderM_DoctorAddressID']}
WHERE
M_DoctorID = {$orderold['T_OrderHeaderSenderM_DoctorID']}";
//echo $sql;
$x_old_doctor = $this->db_onedev->query($sql)->row_array();
$sql = "SELECT CONCAT(M_DoctorID,'^',M_DoctorAddressID) as id,
CONCAT(CONCAT(M_DoctorPrefix,M_DoctorPrefix2,' ',M_DoctorName,' ',M_DoctorSufix,M_DoctorSufix2,M_DoctorSufix3),'^',CONCAT(M_DoctorAddressNote,' : ',M_DoctorAddressDescription)) as name
FROM m_doctor
LEFT JOIN m_doctoraddress ON M_DoctorAddressM_DoctorID = M_DoctorID AND
M_DoctorAddressID = {$prm['doctoraddressid']}
WHERE
M_DoctorID = {$prm['doctorid']}";
//echo $sql;
$x_new_doctor = $this->db_onedev->query($sql)->row_array();
$x_json_doctor = json_encode(array('old'=>$x_old_doctor,'new'=>$x_new_doctor));
$sql = "INSERT INTO order_attr (
orderAttrT_OrderHeaderID,
orderAttrType,
orderAttrJson,
orderAttrUserID
)
VALUES(
{$prm['orderid']},
'{$log_attr_type}',
'{$x_json_doctor}',
'{$xuserid}'
)";
$this->db_onedev->query($sql);
}
if (!$query) {
$this->sys_error_db("t_orderheader update");
exit;
}else{
if($orderold['T_OrderHeaderM_MouID'] != $prm['mou']){
$sql = "SELECT T_OrderDetailID as id,
fn_price_spv(T_OrderDetailT_TestID,T_OrderHeaderDate,T_OrderDetailIsCito,T_OrderHeaderM_MouID) as dttest,
T_OrderDetailIsCito, T_OrderDetailT_TestCode, T_OrderDetailT_TestSasCode, T_OrderDetailT_TestName,
T_OrderDetailPrice, T_OrderDetailPriceForDisc, T_OrderDetailDisc,
T_OrderDetailDiscAmount, T_OrderDetailDiscTotal, T_OrderDetailTotal
FROM t_orderdetail
JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsPrice = 'Y'
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
WHERE
T_OrderDetailT_OrderHeaderID = '{$prm['orderid']}' AND T_OrderDetailIsActive = 'Y'";
//echo $sql;
$orderdetails = $this->db_onedev->query($sql)->result_array();
if($orderdetails){
$md5_code = md5(date('YmdHis').rand(5, 15));
$sql = "SELECT M_MouID, M_MouM_CompanyID, M_MouName, M_CompanyName
FROM m_mou
JOIN m_company ON M_MouM_CompanyID = M_CompanyID
WHERE
M_MouID = {$orderold['T_OrderHeaderM_MouID']}";
$x_old_mou = $this->db_onedev->query($sql)->row_array();
$sql = "SELECT M_MouID, M_MouM_CompanyID, M_MouName, M_CompanyName
FROM m_mou
JOIN m_company ON M_MouM_CompanyID = M_CompanyID
WHERE
M_MouID = {$prm['mou']}";
$x_new_mou = $this->db_onedev->query($sql)->row_array();
$sql = "SELECT * FROM m_mou WHERE M_MouID = {$orderold['T_OrderHeaderM_MouID']}";
$old_mou = $this->db_onedev->query($sql)->row_array();
$data_new_log = array();
foreach($orderdetails as $k => $v){
$xid = $v['id'];
$dttest = json_decode($v['dttest']);
$dsictot = ((floatval($dttest->test_disc)/100) * intval($dttest->test_price)) + intval($dttest->test_discrp);
$total = intval($dttest->test_price) - $dsictot ;
$sql = "UPDATE t_orderdetail SET
T_OrderDetailPrice = {$dttest->test_price},
T_OrderDetailPriceForDisc = {$dttest->test_price},
T_OrderDetailDisc = '{$dttest->test_disc}',
T_OrderDetailDiscAmount = '{$dttest->test_discrp}',
T_OrderDetailDiscTotal = '{$dsictot}',
T_OrderDetailTotal = '{$total}',
T_OrderDetailUserID = '{$xuserid}',
T_OrderDetailLastUpdated = now()
WHERE
T_OrderDetailID = {$xid}";
$updatedetail = $this->db_onedev->query($sql);
$arr_new_log = array(
"action" => 'edit',
"orderdetail_id" => $xid,
"pxcode" => $v['T_OrderDetailT_TestCode'],
"pxsascode" => $v['T_OrderDetailT_TestSasCode'],
"pxname" => $v['T_OrderDetailT_TestName'],
"pxid" => $v['T_OrderDetailT_TestID'],
"bf_cito" => $v['T_OrderDetailIsCito'],
"cito" => $v['T_OrderDetailIsCito'],
"bf_bruto" => $v['T_OrderDetailPrice'],
"bf_discountpersen" => $v['T_OrderDetailDisc'],
"bf_discountrp" => $v['T_OrderDetailDiscAmount'],
"bf_discounttotal" => $v['T_OrderDetailDiscTotal'],
"bf_total" => $v['T_OrderDetailTotal'],
"bruto" => $dttest->test_price,
"discountpersen" => $dttest->test_disc,
"discountrp" => $dttest->test_discrp,
"discounttotal" => $dsictot,
"total" => $total
);
array_push($data_new_log,$arr_new_log);
}
//#begin insert new log status
$px_type_new_log = "update_mou";
$px_mou_log = json_encode(array('old'=>$x_old_mou,'new'=>$x_new_mou));
$json_new_log = json_encode($data_new_log);
$sql = "INSERT INTO order_px (
OrderPxT_OrderHeaderID,
OrderPxMou,
OrderPxType,
OrderPxJson,
OrderPxUserID
)
VALUES(
{$prm['orderid']},
'{$px_mou_log}',
'{$px_type_new_log}',
'{$json_new_log}',
{$xuserid}
)";
$this->db_onedev->query($sql);
//#end insert new log status
}
$sql = " UPDATE t_sampling_queue_last_status SET
T_SamplingQueueLastStatusT_SamplingQueueStatusID = 2
WHERE
T_SamplingQueueLastStatusT_OrderHeaderID = {$prm['orderid']} AND
T_SamplingQueueLastStatusT_SampleStationID = 1";
$this->db_onedev->query($sql);
$sql = "UPDATE t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
SET
T_OrderDetailT_TestName = T_TestName,
T_OrderDetailT_TestCode = T_TestCode
WHERE
( T_OrderDetailT_TestName = '' OR T_OrderDetailT_TestCode = '') AND
T_OrderDetailT_OrderHeaderID = {$prm['orderid']}";
$this->db_onedev->query($sql);
}
}
if($prm['lang']){
$sql = "UPDATE t_orderheaderaddon SET
T_OrderHeaderAddOnSecondM_LangID = {$prm['lang']['id']},
T_OrderHeaderAddOnSecondLangIsSI = '{$prm['lang']['si']}'
WHERE
T_OrderHeaderAddOnT_OrderHeaderID = {$orderid}";
$this->db_onedev->query($sql);
$sql = "SELECT * FROM t_orderheaderaddon WHERE T_OrderHeaderAddOnT_OrderHeaderID = {$orderid}";
$orderaddonold = $this->db_onedev->query($sql)->row_array();
if(intval($orderaddonold['T_OrderHeaderAddOnSecondM_LangID']) != intval($prm['lang']['id']) || $orderaddonold['T_OrderHeaderAddOnSecondLangIsSI'] != $prm['lang']['si'] ){
$log_attr_type = "spv_order_lang";
$sql = "SELECT M_LangID as id, M_LangName as name, '{$orderaddonold['T_OrderHeaderAddOnSecondLangIsSI']}' as si
FROM m_lang
WHERE
M_LangID = {$orderaddonold['T_OrderHeaderAddOnSecondM_LangID']}";
$x_old_lang = $this->db_onedev->query($sql)->row_array();
$sql = "SELECT M_LangID as id, M_LangName as name, '{$prm['lang']['si']}' as si
FROM m_lang
WHERE
M_LangID = {$prm['lang']['id']}";
$x_new_lang = $this->db_onedev->query($sql)->row_array();
$x_json_lang = json_encode(array('old'=>$x_old_lang,'new'=>$x_new_lang));
$sql = "INSERT INTO order_attr (
orderAttrT_OrderHeaderID,
orderAttrType,
orderAttrJson,
orderAttrUserID
)
VALUES(
{$prm['orderid']},
'{$log_attr_type}',
'{$x_json_lang}',
'{$xuserid}'
)";
$this->db_onedev->query($sql);
}
}
$sql = "UPDATE t_ordermessage SET
T_OrderMessageRead = 'Y',
T_OrderMessageReadUserID = '{$xuserid}',
T_OrderMessageLastUpdated = NOW()
WHERE
T_OrderMessageT_OrderHeaderID = {$orderid} AND T_OrderMessageType = 'FO.VERIFICATION.REJECT'";
//echo $sql;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("t_ordermessage update");
exit;
}
$result = array ("total" => 1, "records" => array());
$this->sys_ok($result);
} catch(Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function lookup_test(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$query =" SELECT t_orderheader.*,
'' as testregistration,
'' as testverification,
'' as testall,
'' as promises
FROM t_orderheader
WHERE
T_OrderHeaderID = {$orderid}
GROUP BY T_OrderHeaderID
";
//echo $query ;
$rowx = $this->db_onedev->query($query)->row();
$query = " SELECT T_OrderDetailID as xid,
T_OrderDetailT_OrderHeaderID as orderid,
IF(T_OrderDetailT_TestIsPanel = 'Y','PN','PX') as type,
IF(T_OrderDetailT_TestIsPanel = 'Y','Y','N') as is_packet,
'Y' as status,
'N' as active,
IF(T_OrderDetailIsCito = 'Y','Y','N') as cito,
IF(T_OrderDetailIsCito = 'Y','Y','N') as cito_before,
if(T_OrderDetailIsCito = 'Y',fn_fo_get_min_promise(T_OrderDetailT_OrderHeaderID),'-') as cito_promise,
T_OrderDetailT_TestID as pxid,
T_TestNat_TestID nat_testid,
'' as nat_test,
T_OrderDetailT_TestCode as pxcode,
T_OrderDetailT_TestSasCode as pxsascode,
CONCAT(T_OrderDetailT_TestSasCode,' ',T_TestName) as pxname,
T_TestName as test_name,
T_OrderDetailPrice as bruto,
IF(T_OrderDetailDisc = '' OR ISNULL(T_OrderDetailDisc),0,T_OrderDetailDisc) as discountpersen,
IF(T_OrderDetailDiscAmount = '' OR ISNULL(T_OrderDetailDiscAmount),0,T_OrderDetailDiscAmount) as discountrp,
IF(T_OrderDetailDiscTotal = '' OR ISNULL(T_OrderDetailDiscTotal),0,T_OrderDetailDiscTotal) as discount,
'' as charge,
T_OrderDetailTotal as total,
IF(ISNULL(Fo_RequestDeleteID),'X',Fo_RequestDeleteStatus) as status_request
FROM t_orderdetail
LEFT JOIN fo_requestdelete ON Fo_RequestDeleteT_OrderDetailID = T_OrderDetailID AND
Fo_RequestDeleteIsActive = 'Y'
join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$orderid} AND T_TestIsPrice = 'Y' AND
LEFT(T_OrderDetailT_TestSasCode,2) <> 'PN' AND
T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestIsPanel = 'N'
UNION
SELECT T_OrderDetailID as xid,
T_OrderDetailT_OrderHeaderID as orderid,
IF(T_OrderDetailT_TestIsPanel = 'Y','PN','PX') as type,
IF(T_OrderDetailT_TestIsPanel = 'Y','Y','N') as is_packet,
'Y' as status,
'N' as active,
IF(T_OrderDetailIsCito = 'Y','Y','N') as cito,
IF(T_OrderDetailIsCito = 'Y','Y','N') as cito_before,
if(T_OrderDetailIsCito = 'Y',fn_fo_get_min_promise(T_OrderDetailT_OrderHeaderID),'-') as cito_promise,
T_OrderDetailT_TestID as pxid,
0 nat_testid,
'' as nat_test,
T_OrderDetailT_TestCode as pxcode,
T_OrderDetailT_TestSasCode as pxsascode,
CONCAT(T_OrderDetailT_TestSasCode,' ',T_PacketName) as pxname,
T_PacketName as test_name,
T_OrderDetailPrice as bruto,
IF(T_OrderDetailDisc = '' OR ISNULL(T_OrderDetailDisc),0,T_OrderDetailDisc) as discountpersen,
IF(T_OrderDetailDiscAmount = '' OR ISNULL(T_OrderDetailDiscAmount),0,T_OrderDetailDiscAmount) as discountrp,
IF(T_OrderDetailDiscTotal = '' OR ISNULL(T_OrderDetailDiscTotal),0,T_OrderDetailDiscTotal) as discount,
'' as charge,
T_OrderDetailTotal as total,
IF(ISNULL(Fo_RequestDeleteID),'X',Fo_RequestDeleteStatus) as status_request
FROM t_orderdetail
LEFT JOIN fo_requestdelete ON Fo_RequestDeleteT_OrderDetailID = T_OrderDetailID AND
Fo_RequestDeleteIsActive = 'Y'
join t_packet ON T_OrderDetailT_TestSasCode = T_PacketSasCode
LEFT JOIN fo_requestdelete ON Fo_RequestDeleteT_OrderDetailID = T_OrderDetailID AND
Fo_RequestDeleteIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$orderid} AND T_OrderDetailT_TestIsPanel = 'Y' AND T_OrderDetailIsActive = 'Y'";
echo $query;
$rowx->testregistration = $this->db_onedev->query($query)->result_array();
$rowx->testall = $rowx->testregistration;
foreach($rowx->testall as $k => $v){
$sql = "SELECT T_TestNat_TestID as nat_test
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
WHERE T_OrderDetailT_OrderHeaderID = {$orderid} AND T_OrderDetailT_TestSasCode LIKE '{$v['pxsascode']}%' AND T_OrderDetailIsActive = 'Y'";
//echo $sql;
$xnattest = $this->db_onedev->query($sql)->result_array();
$v['nat_test'] = array();
foreach($xnattest as $xk => $xv){
array_push($v['nat_test'],$xv['nat_test']);
}
$rowx->testall[$k]['nat_test'] = $v['nat_test'];
if($v['status'] == 'N')
$rowx->testall[$k]['status'] = false;
if($v['cito'] == 'N')
$rowx->testall[$k]['cito'] = false;
$rowx->testall[$k]['charge'] = array('value'=>0,'label'=>'0%');
}
$rowx->testverification = array();
$promises = '';
//$promises = $this->get_promises($rowx->testverification);
$result = array(
"total" => 1 ,
"records" =>$rowx,
"promise"=>$promises
);
$this->sys_ok($result);
exit;
}
function get_promises($tests){
return '208-07-2019 14:50';
}
function getnewprice(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$cito = $prm['cito'] ? 'Y':'N';
$cito_before = $prm['cito_before'] == 'N' ? 'Y':'N';
$query =" SELECT t_orderheader.*
FROM t_orderheader
WHERE
T_OrderHeaderID = {$orderid};
";
$row_header = $this->db_onedev->query($query)->row();
$sql = "SELECT {$prm['xid']} as xid,
Nat_TestID as nat_testid,
nat_test,
is_packet,
packet_id,
px_type as type,
ss_price_mou.T_TestID as pxid,
test.T_TestCode as pxcode,
test.T_TestSasCode as pxsascode,
test.T_TestName as pxname,
test.T_TestIsResult as isresult,
JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount')) as bruto,
JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')) as discountpersen,
JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp')) as discountrp,
if(JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')) <> 0 ,(((JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')) / 100) * JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount'))) - JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp'))),JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp'))) as discount,
( JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount')) - ((JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')) / 100) * JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount'))) - JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp')) ) as total,
'Y' as status,
'N' as active,
'{$cito}' as cito,
'{$cito_before}' as cito_before,
'' as promise,
'' as charge,
child_test
FROM ss_price_mou
JOIN t_test test ON ss_price_mou.T_TestID = test.T_TestID
WHERE
ss_price_mou.T_TestID = {$prm['pxid']} AND
T_PriceIsCito = '{$cito}' AND
Ss_PriceMouM_MouID = {$row_header->T_OrderHeaderM_MouID} AND
is_packet <> 'Y'";
//echo $sql;
$rows = $this->db_onedev->query($sql)->result_array();
if($rows){
foreach($rows as $k => $v){
if($v['cito'] == 'N')
$rows[$k]['cito'] = false;
else
$rows[$k]['cito'] = true;
}
}
$result = array(
"total" => 1 ,
"records" =>$rows
);
$this->sys_ok($result);
exit;
}
function get_promise_from_arr($arr,$testid){
$idx = -1;
foreach($arr as $k=>$v){
if($v['testid'] == $testid){
$idx = $k;
}
}
return $idx;
}
function search_test()
{
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$max_rst = 12;
$tot_count = 0;
//$cito = $prm['cito'] == true ?'Y':'N';
$filtertest = $prm['filtertest'];
$sql = " SELECT T_OrderHeaderM_CompanyID as companyid,
T_OrderHeaderM_MouID as mouid,
T_OrderHeaderDate as orderdate
FROM t_orderheader
WHERE T_OrderHeaderID = '{$prm['orderid']}'";
$dtorder = $this->db_onedev->query($sql)->row_array();
$orderdate = $dtorder['orderdate'];
$mouid = $dtorder['mouid'];
$companyid = $dtorder['companyid'];
$q['search'] = "%{$prm['search']}%";
//$test_exist = $filtertest;
$sql = " SELECT * FROM (
SELECT 0 as xid,
Nat_TestID as nat_testid,
nat_test,
is_packet,
packet_id,
px_type as type,
ss_price_mou.T_TestID as pxid,
test.T_TestCode as pxcode,
test.T_TestSasCode as pxsascode,
test.T_TestName as test_name,
CONCAT(test.T_TestSasCode,' ',test.T_TestName) as pxname,
test.T_TestIsResult as isresult,
JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount')) as bruto,
JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')) as discountpersen,
JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp')) as discountrp,
if(JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')) <> 0 ,(((JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')) / 100) * JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount'))) + JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp'))),JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp'))) as discount,
( JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount')) - ((JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')) / 100) * JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount'))) - JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp')) ) as total,
'Y' as status,
'N' as active,
'N' as cito,
'N' as cito_before,
'' as promise,
'' as charge,
child_test
FROM ss_price_mou
JOIN t_test test ON ss_price_mou.T_TestID = test.T_TestID
WHERE
CONCAT(test.T_TestSasCode,' ',test.T_TestName) LIKE '{$q['search']}' AND Ss_PriceMouM_MouID = {$mouid} AND is_packet <> 'Y' AND T_PriceIsCito <> 'Y'
UNION
SELECT 0 as xid,
Nat_TestID as nat_testid,
nat_test,
is_packet,
packet_id,
px_type as type,
test.T_PacketID as pxid,
test.T_PacketSasCode as pxcode,
test.T_PacketSasCode as pxsascode,
test.T_PacketName as test_name,
CONCAT(test.T_PacketSasCode,' ',test.T_PacketName) as pxname,
'N' as isresult,
IF(px_type <> 'PN',JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount')),T_PriceAmount) as bruto,
IF(px_type <> 'PN',JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')),T_PriceDisc) as discountpersen,
IF(px_type <> 'PN',JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp')),T_PriceDiscRp) as discountrp,
if(IF(px_type <> 'PN',JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')),T_PriceDisc) <> 0 ,(((IF(px_type <> 'PN',JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')),T_PriceDisc) / 100) * IF(px_type <> 'PN',JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount')),T_PriceAmount)) + IF(px_type <> 'PN',JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp')),T_PriceDiscRp)),IF(px_type <> 'PN',JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp')),T_PriceDiscRp)) as discount,
IF(px_type <> 'PN',( JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount')) - ((JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDisc')) / 100) * JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceAmount'))) - JSON_UNQUOTE(JSON_EXTRACT(one_json_sum(Ss_PriceMouID),'$.T_PriceDiscRp')) ),T_PriceTotal) as total,
'Y' as status,
'N' as active,
'N' as cito,
'N' as cito_before,
'' as promise,
'' as charge,
child_test
FROM ss_price_mou
JOIN t_packet test ON test.T_PacketID = T_TestID
WHERE
CONCAT(test.T_PacketSasCode,' ',test.T_PacketName) LIKE '{$q['search']}' AND Ss_PriceMouM_MouID = {$mouid} AND is_packet = 'Y' AND T_PriceIsCito <> 'Y'
) x
LIMIT 50";
//echo $sql;
$query = $this->db_onedev->query($sql);
if ($query) {
$rows = $query->result_array();
$rows_filtered = [];
//echo $this->db_onedev->last_query();
if($rows){
//$rows = json_decode($rows);
foreach($rows as $k => $v){
if($v['status'] == 'N')
$rows[$k]['status'] = false;
else
$rows[$k]['status'] = true;
if($v['cito'] == 'N')
$rows[$k]['cito'] = false;
else
$rows[$k]['cito'] = true;
$rows[$k]['charge'] = array('value'=>0,'label'=>'0%');
$nat_test_now = array();
if($v['type'] == 'PXR'){
$sql = "SELECT *
FROM t_test
WHERE
T_TestSasCode LIKE '{$v['pxsascode']}%' AND T_TestID <> {$v['pxid']} AND T_TestIsActive = 'Y'";
//echo $sql;
$row_nattest = $this->db_onedev->query($sql)->result_array();
if($row_nattest){
foreach($row_nattest as $xnat => $vnat){
array_push($nat_test_now,$vnat['T_TestNat_TestID']);
}
$rows[$k]['nat_test'] = $nat_test_now;
}
$child_test = json_decode($v['child_test']);
//print_r($child_test);
foreach($child_test as $kchild => $vchild){
$child_test[$kchild]->nat_test = json_decode($vchild->nat_test);
$sql = "SELECT *
FROM t_test
WHERE
T_TestID = {$vchild->T_TestID}";
//echo $sql;
$row_test = $this->db_onedev->query($sql)->row_array();
$child_test[$kchild]->{"isresult"} = $row_test['T_TestIsResult'];
$child_test[$kchild]->pxcode = $row_test['T_TestCode'];
$child_test[$kchild]->pxsascode = $row_test['T_TestSasCode'];
}
//print_r($child_test);
$rows[$k]['child_test'] = $child_test;
//print_r($rows[$k]['child_test']);
}
else{
$rows[$k]['nat_test'] = json_decode($v['nat_test']);
$rows[$k]['child_test'] = json_decode($v['child_test']);
}
//$rows[$k]['child_test'] = json_decode($v['child_test']);
}
}
$result = array("total" => count($rows), "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
}
else {
// echo $this->db_onedev->last_query();
$this->sys_error_db("m_company rows",$this->db_onedev);
exit;
}
}
function double_test_insert($orderheaderid,$testid){
if(intval($testid) == 0){
return TRUE;
}
else{
$get_datatest = "SELECT * FROM t_test WHERE T_TestID = {$testid} LIMIT 1";
$datatest = $this->db_onedev->query($get_datatest)->row_array();
//echo $get_datatest;
$sql = " SELECT COUNT(*) as total
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestNat_TestID = {$datatest['T_TestNat_TestID']} AND T_TestIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$orderheaderid} AND T_OrderDetailIsActive = 'Y'";
//echo $sql;
$check_exist = $this->db_onedev->query($sql)->row_array()->total;
if($check_exist == 0)
return TRUE;
else{
return FALSE;
}
}
}
function save_test_additional(){
try {
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
//# ambil parameter input
$xuserid = $this->sys_user['M_UserID'];
$prm = $this->sys_input;
$md5_code = md5(date('YmdHis').rand(5, 15));
$orderid = $prm['orderid'];
$sql = "SELECT * FROM t_orderheader WHERE T_OrderHeaderID = {$orderid}";
$order_header = $this->db_onedev->query($sql)->row_array();
$testall = $prm['testall'];
$data_log = array();
//#begin data before update
$query = " SELECT T_OrderDetailID as xid,
IF(T_OrderDetailT_TestIsPanel = 'Y','PN','SINGLE') as type,
'Y' as status,
T_OrderDetailIsCito as cito,
T_OrderDetailT_TestID as testid,
T_OrderDetailT_TestCode as testcode,
T_OrderDetailT_TestSasCode as testsascode,
T_OrderDetailT_TestName as testname,
T_OrderDetailPrice as bruto,
T_OrderDetailDiscTotal as discount,
T_OrderDetailTotal as total
FROM t_orderdetail
WHERE
T_OrderDetailT_OrderHeaderID = {$orderid} AND T_OrderDetailT_TestIsPrice = 'Y' AND T_OrderDetailIsActive = 'Y'";
//echo $query;
$data_log['before']['detail'] = $this->db_onedev->query($query)->result_array();
$sql = "SELECT * FROM t_orderpromise WHERE T_OrderPromiseT_OrderHeaderID = {$orderid} AND T_OrderPromiseIsActive = 'Y'";
$data_log['before']['promise'] = $this->db_onedev->query($sql)->result_array();
$sql = "SELECT CONCAT(ifnull(T_SpecimenLocalT_SampleTypeID,T_TestT_SampleTypeID),'-',T_SampleTypeSuffix) as id
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
left join t_specimenlocal on T_TestNat_TestID = T_SpecimenLocalNat_TestID
WHERE T_OrderDetailT_OrderHeaderID = '{$orderid}' AND T_OrderDetailIsActive = 'Y'
GROUP BY T_TestT_SampleTypeID";
$rst_sampletypes_before = $this->db_onedev->query($sql)->result();
$sampletypes_before = array();
foreach($rst_sampletypes_before as $k => $v){
$sampletypes_before[] = $v->id;
}
//#begin data before update
$data_new_log = array();
//#begin loop tests
foreach($testall as $i => $v){
//# add test
if(($v['xid'] == 0 || $v['xid'] == '0') && $v['status'] == 'Y' ){
$isPanel = 'N';
$xtestid = $v['pxid'];
if($v['type'] == 'PN'){
$isPanel = 'Y';
$xtestid = 0;
}
$cito = 'N';
if($v['cito'])
$cito = 'Y';
$isPanelChildren = 'N';
$isPanelChildrenPrintNota = 'N';
$check_exist = $this->double_test_insert($orderid,$xtestid);
if($check_exist){
$sql = "insert into t_orderdetail(
T_OrderDetailT_OrderHeaderID,
T_OrderDetailT_TestID,
T_OrderDetailT_TestCode,
T_OrderDetailT_TestSasCode,
T_OrderDetailT_TestName,
T_OrderDetailT_TestIsResult,
T_OrderDetailT_TestIsPrice,
T_OrderDetailIsCito,
T_OrderDetailPrice,
T_OrderDetailPriceForDisc,
T_OrderDetailDisc,
T_OrderDetailDiscAmount,
T_OrderDetailDiscTotal,
T_OrderDetailTotal,
T_OrderDetailT_TestIsPanel,
T_OrderDetailT_TestIsPanelChildren,
T_OrderDetailT_TestIsPanelChildrenPrintNota,
T_OrderDetailUserID,
T_OrderDetailCreated,
T_OrderDetailLastUpdated
)
values(
{$orderid},
{$xtestid},
'{$v['pxcode']}',
'{$v['pxsascode']}',
'{$v['test_name']}',
'{$v['isresult']}',
'Y',
'{$cito}',
'{$v['bruto']}',
'{$v['bruto']}',
'{$v['discountpersen']}',
'{$v['discountrp']}',
'{$v['discount']}',
'{$v['total']}',
'{$isPanel}',
'{$isPanelChildren}',
'{$isPanelChildrenPrintNota}',
{$xuserid},
NOW(),
NOW()
)";
//echo $sql;
}
$query = $this->db_onedev->query($sql);
$last_detail_id = $this->db_onedev->insert_id();
if($v['type'] == 'PN'){
$sql = "SELECT T_PacketIsNota FROM t_packet WHERE T_PacketID = {$v['packet_id']}";
$packetprint_note = $this->db_onedev->query($sql)->row()->T_PacketIsNota;
$sql = "UPDATE t_orderdetailaddon
SET T_OrderDetailAddOnIsPacket = 'Y',
T_OrderDetailAddOnT_PacketType = 'PN',
T_OrderDetailAddOnT_PacketID = {$v['packet_id']},
T_OrderDetailAddOnT_PacketIsNota = '{$packetprint_note}'
WHERE
T_OrderDetailAddOnT_OrderDetailID = {$last_detail_id} AND
T_OrderDetailAddOnIsActive = 'Y'";
$this->db_onedev->query($sql);
}
//echo $sql;
if($v['type'] == 'PX'){
$sql = "SELECT *
FROM t_test
LEFT JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
LEFT JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
LEFT JOIN t_samplestation ON T_BahanT_SampleStationID = T_SampleStationID
WHERE
T_TestSasCode LIKE '{$v['pxsascode']}%' AND T_TestID <> {$v['pxid']} AND T_TestIsActive = 'Y'";
//echo $sql;
$rst_query = $this->db_onedev->query($sql)->result_array();
if($rst_query){
foreach($rst_query as $kkxz => $vvxz){
$check_exist = $this->double_test_insert($orderid,$vvxz['T_TestID']);
if($check_exist){
$sql = "insert into t_orderdetail(
T_OrderDetailT_OrderHeaderID,
T_OrderDetailT_TestID,
T_OrderDetailT_TestCode,
T_OrderDetailT_TestSasCode,
T_OrderDetailT_TestName,
T_OrderDetailT_TestIsResult,
T_OrderDetailT_TestIsPrice,
T_OrderDetailT_TestIsPanel,
T_OrderDetailT_TestIsPanelChildren,
T_OrderDetailT_TestIsPanelChildrenPrintNota,
T_OrderDetailIsCito,
T_OrderDetailUserID,
T_OrderDetailCreated,
T_OrderDetailLastUpdated
)
values(
{$orderid},
{$vvxz['T_TestID']},
'{$vvxz['T_TestCode']}',
'{$vvxz['T_TestSasCode']}',
'{$vvxz['T_TestName']}',
'{$vvxz['T_TestIsResult']}',
'{$vvxz['T_TestIsPrice']}',
'N',
'N',
'{$vvxz['T_TestIsPrintNota']}',
'{$cito}',
{$xuserid},
NOW(),
NOW()
)";
//echo $sql;
}
$query = $this->db_onedev->query($sql);
if($vvxz['T_TestIsResult'] == 'Y' && $vvxz['T_TestIsNonLab'] != ''){
$sql = "UPDATE t_sampling_queue_last_status SET T_SamplingQueueLastStatusT_SamplingQueueStatusID = 2
WHERE
T_SamplingQueueLastStatusT_SampleStationID = {$vvxz['T_SampleStationID']} AND
T_SamplingQueueLastStatusT_OrderHeaderID = {$orderid}
";
$this->db_onedev->query($sql);
}
}
}
$arr_new_log = array(
"action" => 'add',
"orderdetail_id" => $last_detail_id,
"pxcode" => $v['pxcode'],
"pxsascode" => $v['pxcode'],
"pxname" => $v['pxname'],
"test_name" => $v['test_name'],
"pxid" => $xtestid,
"bf_cito" => 'N',
"cito" => $cito,
"bf_bruto" => 0,
"bf_discountpersen" => 0,
"bf_discountrp" => 0,
"bf_discounttotal" => 0,
"bf_total" => 0,
"bruto" => $v['bruto'],
"discountpersen" => $v['discountpersen'],
"discountrp" => $v['discountrp'],
"discounttotal" => $v['discount'],
"total" => $v['total']
);
array_push($data_new_log,$arr_new_log);
}
if($v['type'] == 'PN'){
$sql = "SELECT *
FROM t_packet
JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_PacketID AND T_PacketDetailIsActive = 'Y'
JOIN t_test ON T_PacketDetailT_TestID = T_TestID
WHERE
T_PacketSasCode = '{$v['pxsascode']}' AND
T_PacketIsActive = 'Y'
GROUP BY T_PacketDetailID
";
$chil_rst = $this->db_onedev->query($sql)->result_array();
if($chil_rst){
foreach($chil_rst as $kkx => $vvx){
$combinecode = $v['pxsascode'].$vvx['T_TestSasCode'];
$check_exist = $this->double_test_insert($orderid,$vvx['T_TestID']);
if($check_exist){
$sql = "insert into t_orderdetail(
T_OrderDetailT_OrderHeaderID,
T_OrderDetailT_TestID,
T_OrderDetailT_TestCode,
T_OrderDetailT_TestSasCode,
T_OrderDetailT_TestName,
T_OrderDetailT_TestIsResult,
T_OrderDetailT_TestIsPrice,
T_OrderDetailT_TestIsPanel,
T_OrderDetailT_TestIsPanelChildren,
T_OrderDetailT_TestIsPanelChildrenPrintNota,
T_OrderDetailUserID,
T_OrderDetailCreated,
T_OrderDetailLastUpdated
)
values(
{$orderid},
{$vvx['T_TestID']},
'{$vvx['T_TestCode']}',
'{$combinecode}',
'{$vvx['T_TestName']}',
'{$vvx['T_TestIsResult']}',
'N',
'N',
'Y',
'N',
{$xuserid},
NOW(),
NOW()
)";
}
$query = $this->db_onedev->query($sql);
$sql = "SELECT *
FROM t_test
WHERE
T_TestSasCode LIKE '{$vvx['T_TestSasCode']}%' AND T_TestID <> {$vvx['T_TestID']} AND T_TestIsActive = 'Y'";
$rst_query = $this->db_onedev->query($sql)->result_array();
if($rst_query){
foreach($rst_query as $kkxz => $vvxz){
$combinecode_xz = $v['pxsascode'].$vvxz['T_TestSasCode'];
$check_exist = $this->double_test_insert($orderid,$vvxz['T_TestID']);
if($check_exist){
$sql = "insert into t_orderdetail(
T_OrderDetailT_OrderHeaderID,
T_OrderDetailT_TestID,
T_OrderDetailT_TestCode,
T_OrderDetailT_TestSasCode,
T_OrderDetailT_TestName,
T_OrderDetailT_TestIsResult,
T_OrderDetailT_TestIsPrice,
T_OrderDetailT_TestIsPanel,
T_OrderDetailT_TestIsPanelChildren,
T_OrderDetailT_TestIsPanelChildrenPrintNota,
T_OrderDetailUserID,
T_OrderDetailCreated,
T_OrderDetailLastUpdated
)
values(
{$orderid},
{$vvxz['T_TestID']},
'{$vvxz['T_TestCode']}',
'{$combinecode_xz}',
'{$vvxz['T_TestName']}',
'{$vvxz['T_TestIsResult']}',
'N',
'N',
'Y',
'N',
{$xuserid},
NOW(),
NOW()
)";
$query = $this->db_onedev->query($sql);
}
}
}
}
}
$arr_new_log = array(
"action" => 'add',
"orderdetail_id" => $last_detail_id,
"pxcode" => $v['pxcode'],
"pxsascode" => $v['pxcode'],
"pxname" => $v['pxname'],
"test_name" => $v['test_name'],
"pxid" => $xtestid,
"bf_cito" => 'N',
"cito" => $cito,
"bf_bruto" => 0,
"bf_discountpersen" => 0,
"bf_discountrp" => 0,
"bf_discounttotal" => 0,
"bf_total" => 0,
"bruto" => $v['bruto'],
"discountpersen" => $v['discountpersen'],
"discountrp" => $v['discountrp'],
"discounttotal" => $v['discount'],
"total" => $v['total']
);
array_push($data_new_log,$arr_new_log);
}
//#end add test
}
//#delete test
//echo intval($v['xid']);
//echo $v['status'];
//echo $v['active'];
if(intval($v['xid']) != 0 && $v['status'] == false && $v['active'] == 'Y'){
$sql = "UPDATE t_orderdetail SET
T_OrderDetailIsActive = 'N',
T_OrderDetailLastUpdated = now()
WHERE
T_OrderDetailT_OrderHeaderID = {$orderid} AND
T_OrderDetailT_TestSasCode LIKE '{$v['pxsascode']}%' ";
$query = $this->db_onedev->query($sql);
//echo $sql;
//echo $this->db_onedev->last_query();
if (!$query) {
$this->sys_error_db("t_orderdetail update");
exit;
}
//#insert retur charge
if(floatval($v['charge']['value']) > 0){
$charge = floatval($v['charge']['value']);
$totalaftercharge = floatval($v['total']) - (($charge/100) * floatval($v['total']));
$sql = "INSERT INTO f_returcharge (
F_ReturChargeT_OrderHeaderID,
F_ReturChargeT_OrderDetailID,
F_ReturChargeBrutoPrice,
F_ReturChargeDiscountPercent,
F_ReturChargeDiscountRp,
F_ReturChargeDiscountTotal,
F_ReturChargeTotalPrice,
F_ReturChargePercent,
F_ReturChargeAmount,
F_ReturChargeUserID,
F_ReturChargeLastUpdated
)
VALUES(
{$orderid},
{$v['xid']},
{$v['bruto']},
{$v['discountpersen']},
{$v['discountrp']},
{$v['discount']},
{$v['total']},
{$v['charge']['value']},
{$totalaftercharge},
{$xuserid},
NOW()
)";
$this->db_onedev->query($sql);
}
//#end insert retur charge
$arr_new_log = array(
"action" => 'delete',
"orderdetail_id" => $v['xid'],
"pxcode" => $v['pxcode'],
"pxsascode" => $v['pxcode'],
"pxname" => $v['pxname'],
"test_name" => $v['test_name'],
"pxid" => $xtestid,
"bf_cito" => $v['cito_before'],
"cito" => $v['cito_before'],
"bf_bruto" => 0,
"bf_discountpersen" => 0,
"bf_discountrp" => 0,
"bf_discounttotal" => 0,
"bf_total" => 0,
"bruto" => $v['bruto'],
"discountpersen" => $v['discountpersen'],
"discountrp" => $v['discountrp'],
"discounttotal" => $v['discount'],
"total" => $v['total']
);
array_push($data_new_log,$arr_new_log);
}
//#end delete test
//#edit test
if(intval($v['xid']) != 0 && $v['status'] == true && $v['active'] == 'Y'){
$detailcito = $v['cito']?"Y":"N";
$sql = "SELECT * FROM t_orderdetail WHERE T_OrderDetailID = {$v['xid']}";
$data_v_old = $this->db_onedev->query($sql)->row_array();
$sql = "UPDATE t_orderdetail SET
T_OrderDetailIsCito = '{$detailcito}',
T_OrderDetailPrice = '{$v['bruto']}',
T_OrderDetailPriceForDisc = {$v['bruto']},
T_OrderDetailDisc = '{$v['discountpersen']}',
T_OrderDetailDiscAmount = '{$v['discountrp']}',
T_OrderDetailDiscTotal = '{$v['discount']}',
T_OrderDetailTotal = '{$v['total']}',
T_OrderDetailLastUpdated = now()
WHERE
T_OrderDetailID = {$v['xid']} ";
$query = $this->db_onedev->query($sql);
//echo $this->db_onedev->last_query();
if (!$query) {
$this->sys_error_db("t_orderdetail update");
exit;
}
$arr_new_log = array(
"action" => 'edit',
"orderdetail_id" => $v['xid'],
"pxcode" => $v['pxcode'],
"pxsascode" => $v['pxcode'],
"pxname" => $v['pxname'],
"test_name" => $v['test_name'],
"pxid" => $xtestid,
"bf_cito" => $v['cito_before'],
"cito" => $detailcito,
"bf_bruto" => $data_v_old['T_OrderDetailPrice'],
"bf_discountpersen" => $data_v_old['T_OrderDetailDisc'],
"bf_discountrp" => $data_v_old['T_OrderDetailDiscAmount'],
"bf_discounttotal" => $data_v_old['T_OrderDetailDiscTotal'],
"bf_total" => $data_v_old['T_OrderDetailTotal'],
"bruto" => $v['bruto'],
"discountpersen" => $v['discountpersen'],
"discountrp" => $v['discountrp'],
"discounttotal" => $v['discount'],
"total" => $v['total']
);
array_push($data_new_log,$arr_new_log);
}
//#end edit test
}
//#end loop tests
//#begin check barcode
$sql = "SELECT CONCAT(ifnull(T_SpecimenLocalT_SampleTypeID,T_TestT_SampleTypeID),'-',T_SampleTypeSuffix) as id,T_SampleStationID,T_SampleStationIsNonLab
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
JOIN t_samplestation ON T_BahanT_SampleStationID = T_SampleStationID
left join t_specimenlocal on T_TestNat_TestID = T_SpecimenLocalNat_TestID
WHERE T_OrderDetailT_OrderHeaderID = '{$orderid }' AND T_OrderDetailIsActive = 'Y'
GROUP BY T_TestT_SampleTypeID";
$rst_sampletypes_after = $this->db_onedev->query($sql)->result();
$sampletypes_after = array();
foreach($rst_sampletypes_after as $k => $v){
$sampletypes_after[] = $v->id;
}
//#end check barcode
//#begin penambahan cito
if(!empty($prm['selected_cito'])) {
$sql = "UPDATE t_orderheader SET T_OrderHeaderIsCito = 'Y' , T_OrderHeaderNat_CitoID = '{$prm['selected_cito']['id']}' WHERE T_OrderHeaderID = {$orderid}";
//echo $sql;
$this->db_onedev->query($sql);
}
//#end penambahan cito
//#begin perubahan schedule
$sql = "CALL `sp_fo_schedule_promise_set_v2`('{$orderid}')";
$r_schedule_set = $this->db_onedev->query($sql);
$this->clean_mysqli_connection($this->db_onedev->conn_id);
//#end perubahan schedule
$sql = "UPDATE t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
SET
T_OrderDetailT_TestName = T_TestName,
T_OrderDetailT_TestCode = T_TestCode
WHERE
( T_OrderDetailT_TestName = '' OR T_OrderDetailT_TestCode = '') AND
T_OrderDetailT_OrderHeaderID = {$orderid}";
$this->db_onedev->query($sql);
//#begin log
$query = " SELECT T_OrderDetailID as xid,
IF(T_OrderDetailT_TestIsPanel = 'Y','PN','PX') as type,
IF(T_OrderDetailT_TestIsPanel = 'Y','Y','N') as is_packet,
'Y' as status,
'N' as active,
IF(T_OrderDetailIsCito = 'Y','Y','N') as cito,
IF(T_OrderDetailIsCito = 'Y','Y','N') as cito_before,
if(T_OrderDetailIsCito = 'Y',fn_fo_get_min_promise(T_OrderDetailT_OrderHeaderID),'-') as cito_promise,
T_OrderDetailT_TestID as pxid,
T_TestNat_TestID nat_testid,
T_TestCode as pxcode,
T_TestSasCode as pxsascode,
T_TestName as pxname,
T_OrderDetailPrice as bruto,
IF(T_OrderDetailDisc = '' OR ISNULL(T_OrderDetailDisc),0,T_OrderDetailDisc) as discountpersen,
IF(T_OrderDetailDiscAmount = '' OR ISNULL(T_OrderDetailDiscAmount),0,T_OrderDetailDiscAmount) as discountrp,
IF(T_OrderDetailDiscTotal = '' OR ISNULL(T_OrderDetailDiscTotal),0,T_OrderDetailDiscTotal) as discount,
'' as charge,
T_OrderDetailTotal as total
FROM t_orderdetail
join t_test ON T_OrderDetailT_TestID = T_TestID
WHERE
T_OrderDetailT_OrderHeaderID = {$orderid} AND T_OrderDetailPrice > 0 AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestIsPanel = 'N'
UNION
SELECT T_OrderDetailID as xid,
IF(T_OrderDetailT_TestIsPanel = 'Y','PN','PX') as type,
IF(T_OrderDetailT_TestIsPanel = 'Y','Y','N') as is_packet,
'Y' as status,
'N' as active,
IF(T_OrderDetailIsCito = 'Y','Y','N') as cito,
IF(T_OrderDetailIsCito = 'Y','Y','N') as cito_before,
if(T_OrderDetailIsCito = 'Y',fn_fo_get_min_promise(T_OrderDetailT_OrderHeaderID),'-') as cito_promise,
T_OrderDetailT_TestID as pxid,
0 nat_testid,
T_PacketSasCode as pxcode,
T_PacketSasCode as pxsascode,
T_OrderDetailT_TestName as pxname,
T_OrderDetailPrice as bruto,
IF(T_OrderDetailDisc = '' OR ISNULL(T_OrderDetailDisc),0,T_OrderDetailDisc) as discountpersen,
IF(T_OrderDetailDiscAmount = '' OR ISNULL(T_OrderDetailDiscAmount),0,T_OrderDetailDiscAmount) as discountrp,
IF(T_OrderDetailDiscTotal = '' OR ISNULL(T_OrderDetailDiscTotal),0,T_OrderDetailDiscTotal) as discount,
'' as charge,
T_OrderDetailTotal as total
FROM t_orderdetail
join t_packet ON T_OrderDetailT_TestID = T_PacketID
WHERE
T_OrderDetailT_OrderHeaderID = {$orderid} AND T_OrderDetailPrice > 0 AND T_OrderDetailT_TestIsPanel = 'Y' AND T_OrderDetailIsActive = 'Y'";
//echo $query;
$rtntestregistration = $this->db_onedev->query($query)->result_array();
$data_log['after']['detail'] = $rtntestregistration;
$sql = "SELECT * FROM t_orderpromise WHERE T_OrderPromiseT_OrderHeaderID = {$orderid} AND T_OrderPromiseIsActive = 'Y'";
$data_log['after']['promise'] = $this->db_onedev->query($sql)->result_array();
foreach($rtntestregistration as $k => $v){
if($v['status'] == 'N')
$rtntestregistration[$k]['status'] = false;
if($v['cito'] == 'N')
$rtntestregistration[$k]['cito'] = false;
}
$sql = "UPDATE
result_processtooffice
JOIN t_orderpromise ON Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID
SET Result_ProcessToOfficeIsActive = 'N'
WHERE
T_OrderPromiseIsActive = 'N' AND
Result_ProcessToOfficeT_OrderHeaderID = {$orderid} AND
Result_ProcessToOfficeStatus = 'S'";
$this->db_onedev->query($sql);
$sql = "SELECT IFNULL(b.T_SampleTypeID,a.T_SampleTypeID) as sampletype_id
from t_orderheader
JOIN t_orderdetail ON t_orderheaderid = t_orderdetailt_orderheaderid AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON t_orderdetailt_testid = t_testid AND T_TestIsResult = 'Y'
JOIN t_sampletype a ON T_TestT_SampleTypeID = a.T_SampleTypeID
LEFT JOIN t_specimenlocal ON T_SpecimenLocalNat_TestID = T_TestNat_TestID AND T_SpecimenLocalIsActive = 'Y'
LEFT JOIN t_sampletype b ON T_SpecimenLocalT_SampleTypeID = b.T_SampleTypeID
where T_OrderHeaderID = {$orderid}
group by a.T_SampleTypeID, b.T_SampleTypeID";
$r_allsampletype = $this->db_onedev->query($sql)->result_array();
if($r_allsampletype){
$allsampletype = array();
foreach($r_allsampletype as $k_r_allsampletype => $v_r_allsampletype ){
array_push($allsampletype,$v_r_allsampletype['sampletype_id']);
}
$join_allsampletype = "(".join(",",$allsampletype).")";
$sql = "UPDATE t_ordersample SET T_OrderSampleIsActive = 'N'
WHERE
T_OrderSampleT_OrderHeaderID = {$orderid} AND
T_OrderSampleT_SampleTypeID NOT IN {$join_allsampletype} ";
//echo $sql;
$this->db_onedev->query($sql);
$sql = "UPDATE t_barcodelab
JOIN t_ordersample ON T_OrderSampleT_BarcodeLabID = T_BarcodeLabID AND
T_OrderSampleIsActive = 'N' AND
T_BarcodeLabT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
SET T_BarcodeLabIsActive = 'N'
WHERE
T_BarcodeLabT_OrderHeaderID = {$orderid}";
$this->db_onedev->query($sql);
//echo $sql;
$sql = "call sp_fo_barcode_generate_again_not_exist(" . $orderid. ")";
$this->db_onedev->query($sql);
$this->clean_mysqli_connection($this->db_onedev->conn_id);
$sql ="SELECT * FROM t_ordersample WHERE T_OrderSampleT_OrderHeaderID = {$orderid} AND T_OrderSampleSampling <> 'Y' AND T_OrderSampleIsActive = 'Y'";
$not_yet_sampled = $this->db_onedev->query($sql)->result_array();
if($not_yet_sampled){
$sql = "UPDATE t_sampling_queue_last_status SET T_SamplingQueueLastStatusT_SamplingQueueStatusID = 2
WHERE
T_SamplingQueueLastStatusT_SampleStationID = 1 AND
T_SamplingQueueLastStatusT_OrderHeaderID = {$orderid} AND
T_SamplingQueueLastStatusT_SamplingQueueStatusID = 5
";
//echo $sql;
$this->db_onedev->query($sql);
}
}
else{
$sql = "UPDATE t_ordersample SET T_OrderSampleIsActive = 'N'
WHERE
T_OrderSampleT_OrderHeaderID = {$orderid}";
//echo $sql;
$this->db_onedev->query($sql);
$sql = "UPDATE t_barcodelab
JOIN t_ordersample ON T_OrderSampleT_BarcodeLabID = T_BarcodeLabID AND
T_OrderSampleIsActive = 'N' AND
T_BarcodeLabT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
SET
T_BarcodeLabIsActive = 'N'
WHERE
T_BarcodeLabT_OrderHeaderID = {$orderid}";
$this->db_onedev->query($sql);
}
$sql = "update t_orderpromise
LEFT JOIN t_orderdetail ON T_OrderDetailT_OrderPromiseID = T_OrderPromiseID AND
T_OrderDetailIsActive = 'Y'
set T_OrderPromiseIsActive = 'N'
WHERE
T_OrderPromiseT_OrderHeaderID = {$orderid} AND ISNULL(T_OrderDetailID)";
$this->db_onedev->query($sql);
$json_dt_log = json_encode($data_log);
$sql = "insert into one_log.log_px(
Log_PxDate,
Log_PxCode,
Log_PxOrderID,
Log_PxJson,
Log_PxUserID)
values( now(), 'PX.FO.SPV.UPDATE', {$orderid},'{$json_dt_log}', {$xuserid})";
//echo $sql;
$query = $this->db_onedev->query($sql);
//#end log
//#begin insert new log status
$type_new_log = "spv_test";
$json_new_log = json_encode($data_new_log);
$sql = "INSERT INTO order_px (
OrderPxT_OrderHeaderID,
OrderPxType,
OrderPxJson,
OrderPxUserID
)
VALUES(
{$orderid},
'{$type_new_log}',
'{$json_new_log}',
{$xuserid}
)";
$this->db_onedev->query($sql);
//#end insert new log status
//echo $this->db_onedev->last_query();
$result = array ("total" => 1, "records" => array('testall' => $rtntestregistration));
$this->sys_ok($result);
} catch(Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function lookup_data_promise(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$query =" SELECT T_OrderPromiseID as id,
false as menudate,
DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y') as xdate,
DATE_FORMAT(T_OrderPromiseDateTime, '%H:%i') as xtime,
GROUP_CONCAT(DISTINCT T_OrderDetailT_TestName separator ', ') as tests,
'N' as xerror,
'N' as xactive
FROM t_orderpromise
JOIN t_orderdetail ON T_OrderDetailT_OrderPromiseID = T_OrderPromiseID AND T_OrderDetailT_OrderHeaderID = {$orderid} AND T_OrderDetailIsActive = 'Y'
WHERE
T_OrderPromiseT_OrderHeaderID = {$orderid} AND T_OrderPromiseIsActive = 'Y'
GROUP BY T_OrderPromiseID
";
//echo $query ;
$rows = $this->db_onedev->query($query)->result();
$result = array(
"total" => 1 ,
"records" =>$rows
);
$this->sys_ok($result);
exit;
}
function checkstatus(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query ="SELECT COUNT(*) as countval
FROM t_orderdetail
JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND
T_TestIsResult = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$prm['orderid']} AND
T_OrderDetailT_TestSasCode LIKE '{$prm['pxsascode']}%' AND
T_OrderDetailIsActive = 'Y' AND
T_OrderDetailVerification = 'Y'";
//echo $query ;
$countval = $this->db_onedev->query($query)->row()->countval;
$status = 'OK';
if(intval($countval) > 0){
$status = 'NOTOK';
}
$result = array(
"total" => 1 ,
"status" => $status
);
$this->sys_ok($result);
exit;
}
function getcitos(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" SELECT Nat_CitoID as id, Nat_CitoName as name, Nat_CitoDuration as duration,Nat_CitoIsDefault as xdefault
FROM nat_cito
WHERE
Nat_CitoIsActive = 'Y'
";
//echo $query ;
$rows = $this->db_onedev->query($query)->result();
$result = array(
"total" => 1 ,
"records" =>$rows
);
$this->sys_ok($result);
exit;
}
function save_promise(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$xuserid = $this->sys_user['M_UserID'];
$sql = "SELECT * FROM t_orderpromise WHERE T_OrderPromiseT_OrderHeaderID = '{$orderid}' AND T_OrderPromiseIsActive = 'Y'";
$promiseold = $this->db_onedev->query($sql)->result_array();
foreach($prm['data'] as $k=>$v){
$xdatetime = date('Y-m-d H:i', strtotime($v['xdate'].' '.$v['xtime']));
$query = "UPDATE t_orderpromise SET T_OrderPromiseDateTime = '{$xdatetime}' WHERE T_OrderPromiseID = '{$v['id']}' ";
$this->db_onedev->query($query);
//echo $query;
}
$query =" SELECT T_OrderPromiseID as id,
false as menudate,
DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y') as xdate,
DATE_FORMAT(T_OrderPromiseDateTime, '%H:%i') as xtime,
'N' as xerror,
'N' as xactive
FROM t_orderpromise
WHERE
T_OrderPromiseT_OrderHeaderID = {$orderid} AND T_OrderPromiseIsActive = 'Y'
";
//echo $query ;
$rows = $this->db_onedev->query($query)->result();
$sql = "SELECT * FROM t_orderpromise WHERE T_OrderPromiseT_OrderHeaderID = '{$orderid}' AND T_OrderPromiseIsActive = 'Y'";
$promisenew = $this->db_onedev->query($sql)->result_array();
$x_json = json_encode(array('old'=>$promiseold,'new'=>$promisenew));
$sql = "INSERT INTO order_attr (
orderAttrT_OrderHeaderID,
orderAttrType,
orderAttrJson,
orderAttrUserID
)
VALUES(
{$orderid},
'spv_promise',
'{$x_json}',
'{$xuserid}'
)";
$this->db_onedev->query($sql);
$result = array(
"total" => 1 ,
"records" =>$rows
);
$this->sys_ok($result);
exit;
}
function checkpromisetests(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$tests = array();
$packets = array();
$rows = array();
foreach($prm['tests'] as $k => $v){
if($v['status']){
if($v['type'] == 'PX')
$tests[] = $v['pxid'];
else
$packets[] = $v['pxid'];
}
}
$tests_text = join(",",$tests);
//ada penambahan paket , parameter kedua berupa csv paket id
//di blank_kan dulu sipe
$packets_text = join(",",$packets);
$query ="SELECT fn_fo_find_promise_by_px('{$tests_text}','{$packets_text}') as promise";
//echo $query;
$rows['after'] = $this->db_onedev->query($query)->row()->promise;
$query = "SELECT fn_fo_find_promise_by_px(GROUP_CONCAT(DISTINCT T_OrderDetailT_TestID separator ','),'') as promise
FROM t_orderdetail
WHERE T_OrderDetailT_OrderHeaderID = {$orderid}
GROUP BY T_OrderDetailT_OrderHeaderID";
$rows['before'] = $this->db_onedev->query($query)->row()->promise;
$result = array(
"total" => 1 ,
"records" =>$rows
);
$this->sys_ok($result);
exit;
}
function getchildrenprofil(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$sql = " SELECT T_OrderHeaderM_CompanyID as companyid,
T_OrderHeaderM_MouID as mouid,
T_OrderHeaderDate as orderdate
FROM t_orderheader
WHERE T_OrderHeaderID = '{$prm['data']['orderid']}'";
$dtorder = $this->db_onedev->query($sql)->row_array();
$sql = "SELECT 0 as xid,
'SINGLE' as type,
'Y' as status,
T_TestID as testid,
T_TestCode as testcode,
T_TestSasCode as testsascode,
T_TestName as testname,
T_TestIsResult as isresult,
T_PriceAmount as bruto,
T_PriceDisc as discount,
T_PriceDiscRp as discountrp,
((T_PriceDisc / 100) * T_PriceAmount) - T_PriceDiscRp as discounttotal,
( T_PriceAmount - ((T_PriceDisc / 100) * T_PriceAmount) - T_PriceDiscRp ) as total,
'N' as cito
FROM t_packet
JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_PacketID AND T_PacketDetailIsActive = 'Y'
JOIN t_test ON T_PacketDetailT_TestID = T_TestID
JOIN t_price ON T_PriceT_TestID = T_TestID AND T_PriceM_CompanyID = {$dtorder['companyid']} AND T_PriceM_MouID = {$dtorder['mouid']} AND T_PriceIsActive = 'Y'
WHERE
T_PacketSasCode = '{$prm['data']['testsascode']}'
GROUP BY T_PacketDetailID";
$rows = $this->db_onedev->query($sql)->result_array();
$result = array(
"total" => 1 ,
"records" =>$rows
);
$this->sys_ok($result);
exit;
}
}