3268 lines
128 KiB
Plaintext
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;
|
|
}
|
|
|
|
|
|
}
|