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, T_OrderDetailT_TestIsResult = T_TestIsResult WHERE ( T_OrderDetailT_TestName = '' OR T_OrderDetailT_TestCode = '' OR T_OrderDetailT_TestIsResult = '') 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) 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 = 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_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, '' 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 FROM t_orderdetail join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = {$orderid} AND T_TestIsPrice = '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 lookup_packet(){ //# 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_OrderDetailOrderT_OrderHeaderID as orderid, T_OrderDetailOrderPacketType as type, 'Y' as is_packet, 'Y' as status, 'N' as active, 'N' as cito, 'N' as cito_before, '' as cito_promise, T_OrderDetailOrderT_PacketID as pxid, T_OrderDetailOrderT_PacketID nat_testid, '' as nat_test, T_PacketSasCode as pxcode, T_PacketSasCode as pxsascode, CONCAT(T_PacketSasCode,' ',T_OrderDetailOrderT_PacketName) as pxname, T_OrderDetailOrderT_PacketName as test_name, T_PacketOriginalPrice as bruto, 0 as discountpersen, 0 as discountrp, 0 as discount, '' as charge, T_PacketPrice as total, GROUP_CONCAT(T_OrderDetailT_TestName SEPARATOR ',') as px_detail FROM t_orderdetailorder JOIN t_packet ON T_PacketID = T_OrderDetailOrderT_PacketID JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID AND T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestIsPrice = 'Y' join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' WHERE T_OrderDetailOrderT_OrderHeaderID = {$orderid} AND T_OrderDetailOrderIsPacket = 'Y' GROUP BY T_OrderDetailOrderT_PacketID"; //echo $query; $rowx->testregistration = $this->db_onedev->query($query)->result_array(); $rowx->testall = $rowx->testregistration; $rowx->testverification = array(); $query = "SELECT T_PacketID as pxid, T_PacketID nat_testid, '' as nat_test, T_PacketSasCode as pxcode, T_PacketSasCode as pxsascode, CONCAT(T_PacketSasCode,' ',T_PacketName) as pxname, T_PacketName as test_name, T_PacketOriginalPrice as bruto, 0 as discountpersen, 0 as discountrp, 0 as discount, '' as charge, T_PacketPrice as total, GROUP_CONCAT(T_TestName SEPARATOR ',') as px_detail FROM t_orderheader JOIN mgm_mcu ON Mgm_McuID = T_OrderHeaderMgm_McuID JOIN t_packet ON T_PacketT_PriceHeaderID = Mgm_McuT_PriceHeaderID AND T_PacketIsActive = 'Y' AND T_PacketID not in ( select T_OrderDetailOrderT_PacketID from t_orderdetailorder where T_OrderDetailOrderT_OrderHeaderID = {$orderid} AND T_OrderDetailOrderIsPacket = 'Y' AND T_OrderDetailOrderIsActive = 'Y') JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_PacketID AND T_PacketDetailIsActive = 'Y' JOIN t_test ON T_TestID = T_PacketDetailT_TestID WHERE T_OrderHeaderID = {$orderid} GROUP BY T_PacketID "; $rowx->packetall = $this->db_onedev->query($query)->result_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 T_PriceT_PriceHeaderID = {$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_OrderHeaderMgm_McuID as mgmmcuid, Mgm_McuT_PriceHeaderID as priceheaderid, T_OrderHeaderDate as orderdate FROM t_orderheader JOIN mgm_mcu ON Mgm_McuID = T_OrderHeaderMgm_McuID WHERE T_OrderHeaderID = '{$prm['orderid']}'"; $dtorder = $this->db_onedev->query($sql)->row_array(); $orderdate = $dtorder['orderdate']; $priceheaderid = $dtorder['priceheaderid']; $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 T_PriceT_PriceHeaderID = {$priceheaderid} AND is_packet <> 'Y' AND T_PriceIsCito <> 'Y' ) x WHERE pxid not in ( select T_OrderDetailT_TestID from t_orderdetail where T_OrderDetailT_OrderHeaderID = '{$prm['orderid']}' AND T_OrderDetailIsActive = 'Y') 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(); $labnumber = $order_header['T_OrderHeaderLabNumber']; $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 CONCAT(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 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){ $sqlt_orderdetailorder = "INSERT INTO t_orderdetailorder( T_OrderDetailOrderT_OrderHeaderID, T_OrderDetailOrderT_TestID, T_OrderDetailOrderT_TestName, T_OrderDetailOrderIsPacket, T_OrderDetailOrderPacketType, T_OrderDetailOrderT_PacketID, T_OrderDetailOrderT_PacketName, T_OrderDetailOrderCreated, T_OrderDetailOrderCreatedUserID, T_OrderDetailOrderLastUpdated, T_OrderDetailOrderLastUpdatedUserID, T_OrderDetailOrderJsonChildren) VALUES( {$orderid}, {$xtestid}, '{$v['test_name']}', 'N', '', 0, '', now(), {$xuserid}, now(), now(), '')"; //echo $sqlorder; $queryt_orderdetailorder = $this->db_onedev->query($sqlt_orderdetailorder); if (!$queryt_orderdetailorder) { $this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailorder | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } //$this->db_onedev->trans_commit(); $detail_id = $this->db_onedev->insert_id(); $sql = "insert into t_orderdetail( T_OrderDetailT_OrderDetailOrderID, 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( {$detail_id}, {$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(); $query_generate_location = $this->generate_location($orderid,$xtestid); $sql= $this->db_onedev->query("SELECT * FROM t_orderdetail WHERE T_OrderDetailID = {$last_detail_id}"); if (!$sql) { $this->sys_error_db(["status" => "ERR", "message" => "select t_orderdetail | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); } $x_data = $sql->result_array(); $x_data = json_encode($x_data); $sqllog = "INSERT INTO cpone_log.log_fo( Log_FoT_OrderHeaderID, Log_FoDate, Log_FoCode, Log_FoJson, Log_FoUserID) VALUES ('{$orderid}',now(),'TAMBAH','{$x_data}','{$xuserid}')"; $querylog = $this->db_onedev->query($sqllog); if (!$querylog) { $this->sys_error_db(["status" => "ERR", "message" => "update log_fo | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); } } 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_OrderDetailOrderID, 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( {$detail_id}, {$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); $last_detail_id = $this->db_onedev->insert_id(); $query_generate_location = $this->generate_location($orderid,$vvxz['T_TestID']); $sql= $this->db_onedev->query("SELECT * FROM t_orderdetail WHERE T_OrderDetailID = {$last_detail_id}"); if (!$sql) { $this->sys_error_db(["status" => "ERR", "message" => "select t_orderdetail | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); } $x_data = $sql->result_array(); $x_data = json_encode($x_data); $sqllog = "INSERT INTO cpone_log.log_fo( Log_FoT_OrderHeaderID, Log_FoDate, Log_FoCode, Log_FoJson, Log_FoUserID) VALUES ('{$orderid}',now(),'TAMBAH','{$x_data}','{$xuserid}')"; $querylog = $this->db_onedev->query($sqllog); if (!$querylog) { $this->sys_error_db(["status" => "ERR", "message" => "update log_fo | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); } } } } } } } //#end loop tests $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); $this->fix_ordersample($labnumber); //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 fix_ordersample($labnumber){ $this->db_onedev->trans_begin(); $sql = "SELECT T_OrderHeaderID,T_OrderHeaderLabNumber, T_TestID, T_SampleTypeID , T_SampleTypeSuffix, T_SampleStationIsNonLab, T_SampleStationID 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 ON T_TestT_SampleTypeID = T_SampleTypeID JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID JOIN t_samplestation ON T_BahanT_SampleStationID = T_SampleStationID where T_OrderHeaderLabNumber = '{$labnumber}' group by T_SampleTypeID"; $query = $this->db_onedev->query($sql); if(!$query){ echo "error : ".$this->db_onedev->error(); return; } $rows = $query->result_array(); $new_insert = []; foreach($rows as $row){ $lab_no = $row['T_OrderHeaderLabNumber']; $test_id = $row['T_TestID']; $sample_id = $row['T_SampleTypeID']; $sample_code = $row['T_SampleTypeSuffix']; $barcode = $lab_no . $sample_code; $isnonlab = $row['T_SampleStationIsNonLab']; $samplestation_id = $row['T_SampleStationID']; $counter_barcode = 1; $sql = "SELECT * FROM t_barcodelab WHERE T_BarcodeLabT_OrderHeaderID = '{$row['T_OrderHeaderID']}' AND T_BarcodeLabT_SampleTypeID = '{$row['T_SampleTypeID']}' AND T_BarcodeLabIsActive = 'Y'"; $query = $this->db_onedev->query($sql); if(!$query){ echo "error : ".$this->db_onedev->error(); return; } $barcodelab = $query->result_array(); //echo count($barcodelab)."
"; if(count($barcodelab) == 0){ $new_insert[] = [ 'T_OrderHeaderID' => $row['T_OrderHeaderID'], 'T_SampleTypeID' => $sample_id, 'T_BarcodeLabBarcode' => $barcode, 'T_BarcodeLabCounter' => $counter_barcode ]; $barcode = $barcode . $counter_barcode; $sql = "INSERT INTO t_barcodelab( T_BarcodeLabT_OrderHeaderID, T_BarcodeLabBarcode, T_BarcodeLabT_SampleTypeID, T_BarcodeLabCounter) VALUES ('{$row['T_OrderHeaderID']}','{$barcode}','{$sample_id}','{$counter_barcode}')"; //echo $sql."
"; $qry = $this->db_onedev->query($sql); //echo $this->db_smartone->last_query(); if (!$qry) { $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "insert t_barcodelab | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } $last_id_barcode = $this->db_onedev->insert_id(); if ($isnonlab == "") { $sql = "INSERT INTO t_ordersample( T_OrderSampleT_OrderHeaderID, T_OrderSampleT_SampleTypeID, T_OrderSampleT_BarcodeLabID, T_OrderSampleBarcode, T_OrderSampleT_SampleStationID) VALUES ('{$row['T_OrderHeaderID']}','{$sample_id}','{$last_id_barcode}','{$barcode}','{$samplestation_id}')"; //echo $sql."
"; $qry = $this->db_onedev->query($sql); if (!$qry) { $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "insert t_ordersample | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } } } } $this->db_onedev->trans_commit(); return $new_insert; } function save_test_replace(){ 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(); $testnew = $prm['testnew']; $testold = $prm['testold']; $data_log = array(); //print_r($testnew); //#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 CONCAT(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 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($testnew as $i => $v){ //# add test if(($v['xid'] == 0 || $v['xid'] == '0')){ $isPanel = 'N'; $xtestid = $v['pxid']; $xdetailid = $testold['xid']; if($v['type'] == 'PN'){ $isPanel = 'Y'; $xtestid = 0; } $cito = 'N'; if($v['cito']) $cito = 'Y'; $isPanelChildren = 'N'; $isPanelChildrenPrintNota = 'N'; // echo $xtestid; // echo $xdetailid; $check_exist = $this->double_test_insert($orderid,$xtestid); if($check_exist){ $sqlt_orderdetailorder = "INSERT INTO t_orderdetailorder( T_OrderDetailOrderT_OrderHeaderID, T_OrderDetailOrderT_TestID, T_OrderDetailOrderT_TestName, T_OrderDetailOrderIsPacket, T_OrderDetailOrderPacketType, T_OrderDetailOrderT_PacketID, T_OrderDetailOrderT_PacketName, T_OrderDetailOrderCreated, T_OrderDetailOrderCreatedUserID, T_OrderDetailOrderLastUpdated, T_OrderDetailOrderLastUpdatedUserID, T_OrderDetailOrderJsonChildren) VALUES( {$orderid}, {$xtestid}, '{$v['test_name']}', 'N', '', 0, '', now(), {$xuserid}, now(), now(), '')"; //echo $sqlorder; $queryt_orderdetailorder = $this->db_onedev->query($sqlt_orderdetailorder); if (!$queryt_orderdetailorder) { $this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailorder | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } //$this->db_onedev->trans_commit(); $detail_id = $this->db_onedev->insert_id(); $sql = "insert into t_orderdetail( T_OrderDetailT_OrderDetailOrderID, 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( {$detail_id}, {$orderid}, {$xtestid}, '{$v['pxcode']}', '{$v['pxsascode']}', '{$v['test_name']}', '{$v['isresult']}', 'Y', '{$cito}', '0', '0', '0', '0', '0', '0', '{$isPanel}', '{$isPanelChildren}', '{$isPanelChildrenPrintNota}', {$xuserid}, NOW(), NOW() )"; //echo $sql; $query = $this->db_onedev->query($sql); $last_detail_id = $this->db_onedev->insert_id(); $query_generate_location = $this->generate_location($orderid,$xtestid); $sqlt_orderdetailreplace = "INSERT INTO t_orderdetailreplace( T_OrderDetailReplaceT_OrderHeaderID, T_OrderDetailReplaceT_OrderDetailID, T_OrderDetailReplaceT_TestID, T_OrderDetailReplaceUserID, T_OrderDetailReplaceCreated) VALUES( {$orderid}, {$xdetailid}, {$testold['pxid']}, {$xuserid}, now())"; //echo $sqlorder; $queryt_orderdetailreplace = $this->db_onedev->query($sqlt_orderdetailreplace); if (!$queryt_orderdetailreplace) { $this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailreplace | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } $sqlt_samplingso = "UPDATE t_samplingso SET T_SamplingSoT_TestID = {$xtestid} WHERE T_SamplingSoT_OrderHeaderID = {$orderid} AND T_SamplingSoT_TestID = {$testold['pxid']}"; //echo $sqlorder; $queryt_samplingso = $this->db_onedev->query($sqlt_samplingso); if (!$queryt_samplingso) { $this->sys_error_db(["status" => "ERR", "message" => "insert t_samplingso | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } $data_log = array(); $query = "SELECT * FROM t_orderdetail WHERE T_OrderDetailID = {$xdetailid}"; $data_log['before']['detail'] = $this->db_onedev->query($query)->result_array(); $query = "SELECT * FROM t_orderdetail WHERE T_OrderDetailID = {$last_detail_id}"; $data_log['after']['detail'] = $this->db_onedev->query($query)->result_array(); $json_dt_log = json_encode($data_log); $sqllog = "INSERT INTO cpone_log.log_fo( Log_FoT_OrderHeaderID, Log_FoDate, Log_FoCode, Log_FoJson, Log_FoUserID) VALUES ('{$orderid}',now(),'GANTI','{$json_dt_log}','{$xuserid}')"; $querylog = $this->db_onedev->query($sqllog); if (!$querylog) { $this->sys_error_db(["status" => "ERR", "message" => "update log_fo | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); } } 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){ $sqlt_orderdetailorder = "INSERT INTO t_orderdetailorder( T_OrderDetailOrderT_OrderHeaderID, T_OrderDetailOrderT_TestID, T_OrderDetailOrderT_TestName, T_OrderDetailOrderIsPacket, T_OrderDetailOrderPacketType, T_OrderDetailOrderT_PacketID, T_OrderDetailOrderT_PacketName, T_OrderDetailOrderCreated, T_OrderDetailOrderCreatedUserID, T_OrderDetailOrderLastUpdated, T_OrderDetailOrderLastUpdatedUserID, T_OrderDetailOrderJsonChildren) VALUES( {$orderid}, {$vvxz['T_TestID']}, '{$vvxz['T_TestName']}', 'N', '', 0, '', now(), {$xuserid}, now(), now(), '')"; //echo $sqlorder; $queryt_orderdetailorder = $this->db_onedev->query($sqlt_orderdetailorder); if (!$queryt_orderdetailorder) { $this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailorder | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } //$this->db_onedev->trans_commit(); $detail_id = $this->db_onedev->insert_id(); $sql = "insert into t_orderdetail( T_OrderDetailT_OrderDetailOrderID, 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( {$detail_id}, {$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); $last_detail_id = $this->db_onedev->insert_id(); $query_generate_location = $this->generate_location($orderid,$vvxz['T_TestID']); $data_log = array(); $query = "SELECT * FROM t_orderdetail WHERE T_OrderDetailID = {$xdetailid}"; $data_log['before']['detail'] = $this->db_onedev->query($query)->result_array(); $query = "SELECT * FROM t_orderdetail WHERE T_OrderDetailID = {$last_detail_id}"; $data_log['after']['detail'] = $this->db_onedev->query($query)->result_array(); $json_dt_log = json_encode($data_log); $sqllog = "INSERT INTO cpone_log.log_fo( Log_FoT_OrderHeaderID, Log_FoDate, Log_FoCode, Log_FoJson, Log_FoUserID) VALUES ('{$orderid}',now(),'GANTI','{$json_dt_log}','{$xuserid}')"; $querylog = $this->db_onedev->query($sqllog); if (!$querylog) { $this->sys_error_db(["status" => "ERR", "message" => "update log_fo | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); } } } } } } } //#end loop tests $sql = "SELECT SUM(T_OrderDetailTotal) as total FROM t_orderdetail WHERE T_OrderDetailT_OrderHeaderID = {$orderid} AND T_OrderDetailIsActive = 'Y'"; $query = $this->db_onedev->query($sql); if(!$query){ $this->sys_error_db(["status" => "ERR", "message" => "error get orderdetail" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } $get_total = $query->result_array(); $total = $get_total[0]['total']; $sql = "UPDATE t_orderheader SET T_OrderHeaderSubTotal = ?, T_OrderHeaderTotal = ? WHERE T_OrderHeaderID = ?"; $query = $this->db_onedev->query($sql,array($total,$total,$orderid)); if(!$query){ $this->sys_error_db(["status" => "ERR", "message" => "error update orderheader" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } $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); //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 save_packet_replace(){ try { //# cek token valid if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } //# ambil parameter input $userid = $this->sys_user['M_UserID']; $prm = $this->sys_input; $orderid = $prm['orderid']; $labnumber = $prm['number']; $oldpacket_code = $prm['packetold']; $newpacket_code = $prm['packetnew']; $sql = " SELECT * FROM t_packet JOIN mgm_mcupacket ON Mgm_McuPacketT_PacketID = T_PacketID AND Mgm_McuPacketIsActive = 'Y' JOIN t_orderheader ON T_OrderHeaderMgm_McuID = Mgm_McuPacketMgm_McuID AND T_OrderHeaderLabNumber = ? WHERE T_PacketSasCode = ? AND T_PacketIsActive = 'Y' LIMIT 1"; $query = $this->db_onedev->query($sql,array($labnumber,$newpacket_code)); if (!$query) { //$this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error get order: ' . $this->db_onedev); exit; } $data_new_packet = $query->row_array(); if($data_new_packet){ $sql = " SELECT * FROM t_orderheader JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailOrderIsActive = 'Y' AND T_OrderDetailOrderIsPacket = 'Y' JOIN t_packet ON T_PacketSasCode = ? AND T_OrderDetailOrderT_PacketID = T_PacketID WHERE T_OrderHeaderLabNumber = ? LIMIT 1"; $query = $this->db_onedev->query($sql,array($oldpacket_code,$labnumber)); //echo $this->db_onedev->last_query(); if (!$query) { //$this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error get order: ' . $this->db_onedev); exit; } //echo $this->db_onedev->last_query(); $order = $query->row_array(); if($order){ $this->db_onedev->trans_begin(); $new_packet_id = $data_new_packet['T_PacketID']; $old_packet_id = $order['T_PacketID']; //INSERT NEW PACKET INTO ORDER DETAIL ORDER $sql = "INSERT INTO t_orderdetailorder ( T_OrderDetailOrderT_OrderHeaderID, T_OrderDetailOrderIsPacket, T_OrderDetailOrderPacketType, T_OrderDetailOrderT_PacketID, T_OrderDetailOrderT_PacketName, T_OrderDetailOrderCreated, T_OrderDetailOrderCreatedUserID ) VALUES(?,'Y',?,?,?,NOW(),?)"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'], $data_new_packet['T_PacketType'], $data_new_packet['T_PacketID'], $data_new_packet['T_PacketName'], $userid )); if (!$query) { $this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error insert new packet into orderdetail order: ' . $this->db_onedev); exit; } $new_orderdetail_orderid = $this->db_onedev->insert_id(); $sql = "SELECT * FROM t_packetdetail JOIN t_test ON T_PacketDetailT_TestID = T_TestID WHERE T_PacketDetailT_PacketID = ? AND T_PacketDetailIsActive = 'Y'"; $query = $this->db_onedev->query($sql,array($new_packet_id)); if (!$query) { $this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error get packet detail: ' . $this->db_onedev); exit; } $packet_details = $query->result_array(); foreach ($packet_details as $key => $value) { $data_detail = []; $sql = "SELECT * FROM t_orderdetail WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailT_OrderDetailOrderID = ? AND T_OrderDetailT_TestID = ? AND T_OrderDetailIsActive = 'Y'"; $query = $this->db_onedev->query($sql,array($order['T_OrderHeaderID'],$order['T_OrderDetailOrderID'],$value['T_PacketDetailT_TestID'])); if (!$query) { $this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error get packet detail: ' . $this->db_onedev); exit; } //echo $this->db_onedev->last_query(); $data_detail = $query->result_array(); $orderdetail_sascode = $value['T_TestSasCode']."%"; //echo "exist-order-lama-".count($data_detail); if(count($data_detail) > 0){ $sql = "UPDATE t_orderdetail SET T_OrderDetailPrice = ?, T_OrderDetailPriceForDisc = ?, T_OrderDetailTotal = ? WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailT_TestID = ? AND T_OrderDetailIsActive = 'Y' "; $query = $this->db_onedev->query($sql,array( $value['T_PacketDetailPrice'], $value['T_PacketDetailPrice'], $value['T_PacketDetailPrice'], $order['T_OrderHeaderID'], $value['T_TestID'] )); if (!$query) { $this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error update price and total order detail: ' . $this->db_onedev); exit; } // UPDATE order detail lama diganti orderdetailt_orderdetailorderid baru $detail = $data_detail[0]; $sql = "UPDATE t_orderdetail SET T_OrderDetailT_OrderDetailOrderID = ?, T_OrderDetailLastUpdatedUserID = ? WHERE T_OrderDetailT_OrderDetailOrderID = ? AND T_OrderDetailT_TestSasCode LIKE ? "; $query = $this->db_onedev->query($sql,array( $new_orderdetail_orderid, $userid, $order['T_OrderDetailOrderID'], $orderdetail_sascode )); if (!$query) { $this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error update order detail: ' . $this->db_onedev); exit; } }else{ //insert ke orderdetail jika tidak ditemukan $sql = "INSERT INTO t_orderdetail ( T_OrderDetailT_OrderHeaderID, T_OrderDetailT_OrderDetailOrderID, T_OrderDetailT_TestID, T_OrderDetailT_TestCode, T_OrderDetailT_TestSasCode, T_OrderDetailT_TestName, T_OrderDetailT_TestIsResult, T_OrderDetailT_TestIsPanel, T_OrderDetailT_TestIsPrice, T_OrderDetailPrice, T_OrderDetailTotal, T_OrderDetailCreated, T_OrderDetailCreatedUserID ) SELECT ?, ?, T_TestID, T_TestCode, T_TestSasCode, T_TestName, T_TestIsResult, 'N', T_TestIsPrice, if(T_TestSasCode = ?, ?,0), if(T_TestSasCode = ?, ?,0), NOW(), ? FROM t_test WHERE T_TestSasCode LIKE ? "; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'], $new_orderdetail_orderid, $value['T_TestSasCode'], $value['T_PacketDetailPrice'], $value['T_TestSasCode'], $value['T_PacketDetailPrice'], $userid, $orderdetail_sascode )); //echo $this->db_onedev->last_query(); if (!$query) { $this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error insert order detail: ' . $this->db_onedev); exit; } } } //update isactive = N test lama yg tdk ada di paket baru $sql = "UPDATE t_orderdetail SET T_OrderDetailIsActive = 'N', T_OrderDetailDeleted = NOW(), T_OrderDetailDeletedUserID = ? WHERE T_OrderDetailT_OrderDetailOrderID = ? AND T_OrderDetailIsActive = 'Y'"; $query = $this->db_onedev->query($sql,array( $userid, $order['T_OrderDetailOrderID'] )); if (!$query) { $this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error update isactive N order detail: ' . $this->db_onedev); exit; } $sql = "UPDATE t_orderdetailorder SET T_OrderDetailOrderIsActive = 'N', T_OrderDetailOrderDeleted = NOW(), T_OrderDetailOrderDeletedUserID = ? WHERE T_OrderDetailOrderID = ?"; $query = $this->db_onedev->query($sql,array( $userid, $order['T_OrderDetailOrderID'] )); if (!$query) { $this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error update isactive N order detail order: ' . $this->db_onedev); exit; } $sql = "SELECT T_OrderHeaderLabNumber, T_TestID, T_SampleTypeID , T_SampleTypeSuffix, T_SampleStationIsNonLab, T_SampleStationID 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 group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_resultDetailIsActive = 'Y' JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagNonLab= 'N' 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 WHERE T_OrderHeaderID = ? GROUP BY T_SampleTypeID"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'] )); $order_samples = $query->result_array(); if($order_samples){ $sql = "UPDATE t_ordersample SET T_OrderSampleIsActive = 'X' WHERE T_OrderSampleT_OrderHeaderID = ? AND T_OrderSampleIsActive = 'Y'"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'] )); if(!$query){ $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "error update ordersample temporary start" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } foreach ($order_samples as $sample) { $exist_sample = []; $sql = "SELECT * FROM t_ordersample WHERE T_OrderSampleT_OrderHeaderID = ? AND T_OrderSampleT_SampleTypeID = ? AND T_OrderSampleIsActive = 'X'"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'], $sample['T_SampleTypeID'] )); //echo $this->db_onedev->last_query(); $dt_exist_sample = $query->result_array(); if(count($dt_exist_sample) > 0){ $exist_sample = $dt_exist_sample[0]; $sql = "UPDATE t_ordersample SET T_OrderSampleIsActive = 'Y' WHERE T_OrderSampleID = ?"; $query = $this->db_onedev->query($sql,array( $exist_sample['T_OrderSampleID'] )); if(!$query){ $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "error update ordersample actived" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } //echo $this->db_onedev->last_query(); }else{ $barcode = $labnumber . $sample['T_SampleTypeSuffix']."1"; $sql = "INSERT INTO t_barcodelab( T_BarcodeLabT_OrderHeaderID, T_BarcodeLabBarcode, T_BarcodeLabT_SampleTypeID, T_BarcodeLabCounter, T_BarcodeLabCreated, T_BarcodeLabCreatedUserID) VALUES (?,?,?,?,NOW(),?)"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'], $barcode, $sample['T_SampleTypeID'], "1", $userid )); if(!$query){ $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "error insert barcode lab" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } $last_id_barcode = $this->db_onedev->insert_id(); $sql = "INSERT INTO t_ordersample( T_OrderSampleT_OrderHeaderID, T_OrderSampleT_SampleTypeID, T_OrderSampleT_BarcodeLabID, T_OrderSampleBarcode, T_OrderSampleT_SampleStationID, T_OrderSampleCreated, T_OrderSampleCreatedUserID) VALUES( ?,?,?,?,?,NOW(),? )"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'], $sample['T_SampleTypeID'], $last_id_barcode, $barcode, $sample['T_SampleStationID'], $userid )); //echo $this->db_onedev->last_query(); } } $sql = "UPDATE t_ordersample SET T_OrderSampleIsActive = 'N' WHERE T_OrderSampleT_OrderHeaderID = ? AND T_OrderSampleIsActive = 'X'"; $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'] )); if(!$query){ $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "error update ordersample not used" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } } $sql = "SELECT * FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nonlab_template_mapping ON NonlabTemplateMappingNat_TestID = T_TestNat_TestID AND NonlabTemplateMappingIsActive = 'Y' JOIN nonlab_template ON NonlabTemplateMappingNonlabTemplateID = NonlabTemplateID AND NonlabTemplateIsActive = 'Y' JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagNonLab = 'Y' WHERE T_OrderDetailT_OrderHeaderID = {$order['T_OrderHeaderID']} AND T_OrderDetailIsActive = 'Y' GROUP BY T_TestID"; // echo $sql; $query = $this->db_onedev->query($sql); $order_nonlab = $query->result_array(); if(count($order_nonlab) > 0){ $sql = "UPDATE so_resultentry SET So_ResultEntryIsActive = 'X' WHERE So_ResultEntryT_OrderHeaderID = ? AND So_ResultEntryIsActive = 'Y'"; $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'] )); if(!$query){ $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "error update so_resultentry temporary 1" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } foreach ($order_nonlab as $nonlab) { $exist_so = []; $sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryT_OrderHeaderID = ? AND So_ResultEntryT_OrderDetailID = ? AND So_ResultEntryIsActive = 'X'"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'], $nonlab['T_OrderDetailID'] )); $dt_exist_so = $query->result_array(); if(count($dt_exist_so) > 0){ $exist_so = $dt_exist_so[0]; $sql = "UPDATE so_resultentry SET So_ResultEntryIsActive = 'Y' WHERE So_ResultEntryID = ? AND So_ResultEntryIsActive = 'X'"; $this->db_onedev->query($sql,array( $exist_so['So_ResultEntryID'] )); } } $sql = "UPDATE so_resultentry SET So_ResultEntryIsActive = 'N' WHERE So_ResultEntryT_OrderHeaderID = ? AND So_ResultEntryIsActive = 'X'"; $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'] )); if(!$query){ $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "error delete so_resultentry" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } $sqlt_orderdetailreplace = "INSERT INTO t_orderdetailreplace( T_OrderDetailReplaceT_OrderHeaderID, T_OrderDetailReplaceT_OrderDetailID, T_OrderDetailReplaceT_TestID, T_OrderDetailReplaceIsPacket, T_OrderDetailReplaceUserID, T_OrderDetailReplaceCreated) VALUES( {$orderid}, {$order['T_OrderDetailOrderID']}, {$old_packet_id}, 'Y', {$userid}, now())"; //echo $sqlorder; $queryt_orderdetailreplace = $this->db_onedev->query($sqlt_orderdetailreplace); if (!$queryt_orderdetailreplace) { $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailreplace | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } } $sql = "SELECT T_SampleStationID, M_LocationID FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' 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 AND T_SampleStationIsActive = 'Y' JOIN m_location ON M_LocationT_SampleStationID = T_SampleStationID AND M_LocationIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' GROUP BY T_SampleStationID "; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'] )); if (!$query) { $this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error get station: ' . $this->db_onedev); exit; } //echo $this->db_onedev->last_query(); $order_locations = $query->result_array(); if(count($order_locations) > 0){ $sql = "UPDATE t_order_location SET T_OrderLocationIsActive = 'X' WHERE T_OrderLocationT_OrderHeaderID = ? AND T_OrderLocationIsActive = 'Y'"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'] )); if(!$query){ $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "error update location temporary" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } //echo $this->db_onedev->last_query(); foreach ($order_locations as $k => $v) { $exist_order_location = []; $sql = " SELECT * FROM t_order_location WHERE T_OrderLocationT_OrderHeaderID = ? AND T_OrderLocationT_SampleStationID= ? AND T_OrderLocationM_LocationID = ? AND T_OrderLocationIsActive = 'X' LIMIT 1"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'], $v['T_SampleStationID'], $v['M_LocationID'] )); $dt_exist_order_location = $query->result_array(); if(count($dt_exist_order_location) > 0){ $exist_order_location = $dt_exist_order_location[0]; $sql = "UPDATE t_order_location SET T_OrderLocationIsActive = 'Y' WHERE T_OrderLocationID = ? "; $query = $this->db_onedev->query($sql,array( $exist_order_location['T_OrderLocationID'] )); // echo $this->db_onedev->last_query(); }else{ $sql = "INSERT INTO t_order_location ( T_OrderLocationT_OrderHeaderID, T_OrderLocationM_LocationID, T_OrderLocationT_SampleStationID, T_OrderLocationCreated, T_OrderLocationUserID ) VALUES(?,?,?,NOW(),?)"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'], $v['M_LocationID'], $v['T_SampleStationID'], $userid )); // echo $this->db_onedev->last_query(); } } $sql = "UPDATE t_order_location SET T_OrderLocationIsActive = 'N', T_OrderLocationUserID = ? WHERE T_OrderLocationT_OrderHeaderID = ? AND T_OrderLocationIsActive = 'X'"; $query = $this->db_onedev->query($sql,array( $userid, $order['T_OrderHeaderID'] )); if(!$query){ $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "error update location" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } //echo $this->db_onedev->last_query(); } $sql = "SELECT SUM(T_OrderDetailTotal) as total FROM t_orderdetail WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'"; $query = $this->db_onedev->query($sql,array( $order['T_OrderHeaderID'] )); $get_total = $query->result_array(); $total = $get_total[0]['total']; $sql = "UPDATE t_orderheader SET T_OrderHeaderSubTotal = ?, T_OrderHeaderTotal = ? WHERE T_OrderHeaderID = ?"; $query = $this->db_onedev->query($sql,array( $total, $total, $order['T_OrderHeaderID'] )); if(!$query){ $this->db_onedev->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "error update price total" . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } $results = ["status" => "OK", "msg" => "Ganti Paket Berhasil"]; }else{ $results = ["status" => "ERROR", "msg" => "Gagal ganti paket, kode paket tidak ditemukan"]; } $this->db_onedev->trans_commit(); } // echo json_encode($results); // $results = array ("total" => 1, "records" => array('testall' => $rtntestregistration)); $this->sys_ok($results); } catch(Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function generate_location($id,$testid) { $userid = $this->sys_user["M_UserID"]; $sql = "SELECT T_SampleStationID,T_SampleStationName FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' 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 WHERE T_OrderDetailT_OrderHeaderID = {$id} AND T_OrderDetailT_TestID = {$testid} GROUP BY T_SampleStationID "; $qry = $this->db_onedev->query($sql); // echo $this->db_onedev->last_query(); $data_samples = $qry->result_array(); if (count($data_samples) > 0 ){ foreach ($data_samples as $k => $v) { $sample_id = $v['T_SampleStationID']; $sql = $this->db_onedev->query("SELECT M_LocationID as loc_id FROM m_location WHERE M_LocationT_SampleStationID = $sample_id ORDER BY M_LocationPriority DESC, M_LocationID ASC LIMIT 1")->row(); $loc_id = $sql->loc_id; $query = $this->db_onedev->query("SELECT COUNT(*) as t_orderid FROM t_order_location WHERE T_OrderLocationT_OrderHeaderID = {$id} AND T_OrderLocationM_LocationID = {$loc_id} AND T_OrderLocationT_SampleStationID = {$sample_id} AND T_OrderLocationIsActive = 'Y'"); if (!$query) { $this->sys_error_db(["status" => "ERR", "message" => "select t_order_location | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } $t_orderid = $query->row()->t_orderid; if ($t_orderid == 0){ $sql = "INSERT INTO t_order_location( T_OrderLocationT_OrderHeaderID, T_OrderLocationM_LocationID, T_OrderLocationT_SampleStationID, T_OrderLocationCreated, T_OrderLocationLastUpdated, T_OrderLocationUserID) VALUES ('{$id}','{$loc_id}','{$sample_id}',now(),now(),$userid)"; $qry = $this->db_onedev->query($sql); } if (!$qry) { $this->sys_error_db(["status" => "ERR", "message" => "insert t_order_location | " . $this->db_onedev->error()["message"], "debug" => $this->db_onedev->last_query()]); exit; } } } } 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; } }