db_onedev = $this->load->database("onedev", true); $this->load->helper(array('form', 'url')); } function getcompanycouriers(){ $rows = []; $sql = "SELECT M_CompanyID as id, M_CompanyName as name FROM m_company WHERE M_CompanyIsActive = 'Y' AND M_CompanyIsLabFrom = 'Y'"; //echo $sql; $rows['companys'] = $this->db_onedev->query($sql)->result_array(); $sql = "SELECT M_StaffID as id, M_StaffName as name FROM m_courier JOIN m_staff ON M_StaffID = M_CourierM_StaffID WHERE M_CourierIsActive = 'Y'"; //echo $sql; $rows['couriers'] = $this->db_onedev->query($sql)->result_array(); $result = array( "total" => count($rows) , "records" => $rows, ); $this->sys_ok($result); exit; } function getdetails($id){ $rows = []; $sql = "SELECT t_receiverefacceptcourierdetail.*, M_CompanyName as namaperusahaan, M_CompanyAddress as alamatperusahaan, T_ReceiveReferencePatientID, T_ReceiveReferencePatientNoRef as nolab, T_ReceiverefAcceptCourierDate as trx_date, T_ReceiveReferencePatientDOB as patient_dob, CONCAT(T_ReceiveReferencePatientName, '( ', M_SexName, ' |', DATE_FORMAT(T_ReceiveReferencePatientDOB,'%d-%m-%Y'), ' )') as pasien, T_SampleTypeName as sampel, 'Y' as active, T_ReceiverefAcceptCourierDetailSampleIsOk as sampleisok, T_ReceiverefAcceptCourierDetailNote as note, T_ReceiverefAcceptCourierDetailID as idx, T_ReceiveReferencePatientTotal, T_ReceiveReferencePatientDPPercent, T_ReceiveReferencePatientDPAmount, T_ReceiveReferencePatientDPAmount as dp FROM t_receiverefacceptcourierdetail LEFT JOIN t_receiverefacceptcourier ON T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID = T_ReceiverefAcceptCourierID LEFT JOIN t_receiverefdistributcourierdetail ON T_ReceiverefAcceptCourierDetailT_ReceiverefDistributCourierDetID = T_ReceiverefDistributCourierDetailID LEFT JOIN t_receivereferencedeliverydetail ON T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID = T_ReceiveReferenceDeliveryDetailID LEFT JOIN t_receivereferencepatient ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferencePatientID LEFT JOIN m_sex ON T_ReceiveReferencePatientM_SexID = M_SexID LEFT JOIN t_sampletype ON T_ReceiveReferenceDeliveryDetailT_SampleTypeID = T_SampleTypeID LEFT JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID JOIN m_company ON T_ReceiveReferenceHeaderM_CompanyID = M_CompanyID WHERE T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID = {$id} AND T_ReceiverefAcceptCourierDetailIsActive = 'Y'"; //echo $sql; $rows = $this->db_onedev->query($sql)->result_array(); /* if($rows){ foreach($rows as $k => $v){ $rows[$k]['labs'] = $this->add_lab($v['T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryID']); } } */ return $rows; } function getdetaildps($id){ $rows = []; $sql = "SELECT t_receiverefacceptcourierdp.*, M_CompanyID as companyid, M_CompanyName as companyname, T_ReceiverefAcceptCourierDPT_ReceiveReferenceHeaderID as orderid, T_ReceiveReferenceHeaderNumber as ordernumber, 'Y' as active, T_ReceiverefAcceptCourierDPID as idx, T_ReceiverefAcceptCourierDPAmount as amount FROM t_receiverefacceptcourierdp LEFT JOIN t_receivereferenceheader ON T_ReceiverefAcceptCourierDPT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID JOIN m_company ON T_ReceiveReferenceHeaderM_CompanyID = M_CompanyID WHERE T_ReceiverefAcceptCourierDPT_ReceiverefAcceptCourierID = {$id} AND T_ReceiverefAcceptCourierDPIsActive = 'Y'"; //echo $sql; $rows = $this->db_onedev->query($sql)->result_array(); /* if($rows){ foreach($rows as $k => $v){ $rows[$k]['labs'] = $this->add_lab($v['T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryID']); } } */ return $rows; } function add_lab($orderid){ $query ="SELECT t_receivereferencedeliverydetail.*, M_SexName, T_ReceiveReferencePatientName as patient_fullname, T_SampleTypeName as samplename, T_ReceiveReferencePatientNoRef as labnumberref, T_OrderHeaderLabNumber as labnumber, 'Y' as active, T_ReceiveReferenceDeliveryDetailID as idx, T_ReceiveReferencePatientID as orderid, T_SampleTypeID as sampleid, DATE_FORMAT(T_ReceiveReferencePatientDOB,'%d-%m-%Y') as dob FROM t_receivereferencedeliverydetail JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID JOIN t_receivereferencepatient ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferencePatientID LEFT JOIN t_orderheader ON T_ReceiveReferencePatientT_OrderHeaderID = T_OrderHeaderID JOIN t_sampletype ON T_ReceiveReferenceDeliveryDetailT_SampleTypeID = T_SampleTypeID JOIN m_sex ON T_ReceiveReferencePatientM_SexID = M_SexID WHERE T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceDeliveryID = {$orderid} AND T_ReceiveReferenceDeliveryDetailIsActive = 'Y'"; //echo $query; $rows = $this->db_onedev->query($query)->result_array(); if(!$rows) $rows = array(); return $rows; } public function search() { $prm = $this->sys_input; if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $search = $prm["namelab"]; $status = $prm["stationid"]; $startdate = $prm["startdate"]; $enddate = $prm["enddate"]; $sql_where = "WHERE T_ReceiverefAcceptCourierStatus = '{$status}' AND ( T_ReceiverefAcceptCourierDate BETWEEN '{$startdate} 00:00:00' AND '{$enddate} 23:59:59' ) AND T_ReceiverefAcceptCourierIsActive = 'Y'"; //$sql_param = array(); if ($search != "") { if ($sql_where != "") { $sql_where .=" and "; } $sql_where .= " ( T_ReceiverefAcceptCourierNumber like '%$search%' ) "; //$sql_param[] = "%$nama%"; } $sql = " SELECT count(*) as total FROM t_receiverefacceptcourier LEFT JOIN m_staff ON T_ReceiverefAcceptCourierM_StaffID = M_StaffID $sql_where "; //echo $sql; $query = $this->db_onedev->query($sql); $tot_count = 0; if ($query) { $tot_count = $query->result_array()[0]["total"]; } else { $this->sys_error_db("m_company count", $this->db_onedev); exit; } $sql = "SELECT t_receiverefacceptcourier.*, IFNULL(M_StaffName,'-') as courier_name, T_ReceiverefAcceptCourierID as trx_id, T_ReceiverefAcceptCourierNumber as trx_numbering, T_ReceiverefAcceptCourierDate as trx_date, DATE_FORMAT(T_ReceiverefAcceptCourierDate,'%d-%m-%Y') as trx_date_ina, T_ReceiverefAcceptCourierNote as trx_note, T_ReceiverefAcceptCourierStatus as status, '' as details, CASE WHEN T_ReceiverefAcceptCourierStatus = 'CREATED' THEN 'BARU' WHEN T_ReceiverefAcceptCourierStatus = 'RELEASEC' THEN 'DISERAHKAN KURIR' WHEN T_ReceiverefAcceptCourierStatus = 'RCVDOC' THEN 'DITERIMA DOKTER' WHEN T_ReceiverefAcceptCourierStatus = 'PARTDONE' THEN 'SELESAI SEBAGIAN' ELSE 'SELESAI' END as status_name FROM t_receiverefacceptcourier LEFT JOIN m_staff ON T_ReceiverefAcceptCourierM_StaffID = M_StaffID $sql_where ORDER BY T_ReceiverefAcceptCourierID DESC limit 0,20"; //echo $sql; $query = $this->db_onedev->query($sql); //echo $this->db_onedev->last_query(); $rows = $query->result_array(); if($rows){ foreach($rows as $k => $v){ //$rows[$k]['companys'] = $this->getcompanys(); $rows[$k]['details'] = $this->getdetails($v['T_ReceiverefAcceptCourierID']); $rows[$k]['detaildps'] = $this->getdetaildps($v['T_ReceiverefAcceptCourierID']); } } //$this->_add_address($rows); $result = array("total" => $tot_count, "records" => $rows, "sql"=> $this->db_onedev->last_query()); $this->sys_ok($result); exit; } function getordersamples(){ $prm = $this->sys_input; if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $courierid = $prm['courierid']; $sql = "SELECT * FROM (SELECT 0 as idx, M_CompanyName as namaperusahaan, M_CompanyAddress as alamatperusahaan, T_ReceiveReferencePatientNoRef as nolab, CONCAT(T_ReceiveReferencePatientName, '( ', M_SexName, ' |', DATE_FORMAT(T_ReceiveReferencePatientDOB,'%d-%m-%Y'), ' )') as pasien, T_SampleTypeName as sampel, 'Y' as active, 'Y' as sampleisok, '' as note, T_ReceiverefDistributCourierDetailID as distributdetailid, T_ReceiveReferenceDeliveryDetailID as sjdetailid, T_ReceiverefAcceptCourierDetailID, T_ReceiveReferencePatientDPAmount as dp FROM t_receiverefdistributcourier LEFT JOIN t_receiverefdistributcourierdetail ON T_ReceiverefDistributCourierID = T_ReceiverefDistributCourierDetailT_ReceiverefDistributCourierID LEFT JOIN t_receivereferencedeliverydetail ON T_ReceiverefDistributCourierDetailT_ReceiveReferenceDeliveryID = T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceDeliveryID LEFT JOIN t_receiverefacceptcourierdetail ON T_ReceiverefDistributCourierDetailID = T_ReceiverefAcceptCourierDetailT_ReceiverefDistributCourierDetID AND T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID = T_ReceiveReferenceDeliveryDetailID LEFT JOIN t_receivereferencepatient ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferencePatientID AND T_ReceiveReferencePatientT_OrderHeaderID = 0 LEFT JOIN t_sampletype ON T_ReceiveReferenceDeliveryDetailT_SampleTypeID = T_SampleTypeID LEFT JOIN m_sex ON T_ReceiveReferencePatientM_SexID = M_SexID LEFT JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID LEFT JOIN m_company ON T_ReceiveReferenceHeaderM_CompanyID = M_CompanyID WHERE T_ReceiverefDistributCourierM_StaffID = {$courierid} AND T_ReceiverefDistributCourierIsActive = 'Y' AND T_ReceiverefDistributCourierStatus = 'RELEASEC' GROUP BY T_ReceiveReferenceDeliveryDetailID) a WHERE T_ReceiverefAcceptCourierDetailID IS NULL"; //echo $sql; $rows = $this->db_onedev->query($sql)->result_array(); /* if($rows){ foreach($rows as $k => $v){ $rows[$k]['labs'] = $this->add_lab($v['sjid']); } } */ // return $rows; $result = array( "total" => count($rows) , "records" => $rows, ); $this->sys_ok($result); exit; } function getstation(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $rows = []; $query =" SELECT T_SampleStationID as id, T_SampleStationName as name FROM t_samplestation WHERE T_SampleStationIsActive = 'Y' "; //echo $query; $rows['stations'] = $this->db_onedev->query($query)->result_array(); //print_r($statuses); foreach($statuses as $k=>$v){ array_push($rows['statuses'],$v); } $result = array( "total" => count($rows) , "records" => $rows, ); $this->sys_ok($result); exit; } function getcompanyaddress(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $query =" SELECT M_CompanyAddressID as id, M_CompanyAddressDescription as name FROM m_companyaddress WHERE M_CompanyAddressM_CompanyID = {$prm['id']} AND M_CompanyAddressIsActive = 'Y' "; //echo $query; $rows = $this->db_onedev->query($query)->result_array(); $result = array( "total" => count($rows) , "records" => $rows, ); $this->sys_ok($result); exit; } function save(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $xdate = date('Y-m-d',strtotime($prm["trx_date"])); if($prm['trx_id'] == '0' || $prm['trx_id'] == 0){ $numbering = $this->db_onedev->query("SELECT fn_numbering('REF.ACCEPT') as numbering")->row()->numbering; $query ="INSERT INTO t_receiverefacceptcourier ( T_ReceiverefAcceptCourierNumber, T_ReceiverefAcceptCourierDate, T_ReceiverefAcceptCourierNote, T_ReceiverefAcceptCourierM_StaffID, T_ReceiverefAcceptCourierCreated, T_ReceiverefAcceptCourierUserID ) VALUES( '{$numbering}', '{$xdate}', '{$prm['trx_note']}', '{$prm['courier']['id']}', NOW(), '{$userid}' ) "; //echo $query; $saveheader = $this->db_onedev->query($query); $last_id = $this->db_onedev->insert_id(); }else{ $numbering = $this->db_onedev->query("SELECT T_ReceiverefAcceptCourierNumber as numbering FROM t_receiverefacceptcourier WHERE T_ReceiverefAcceptCourierID = {$prm['trx_id']}")->row()->numbering; $query ="UPDATE t_receiverefacceptcourier SET T_ReceiverefAcceptCourierDate = '{$xdate}', T_ReceiverefAcceptCourierNote = '{$prm['trx_note']}', T_ReceiverefAcceptCourierCreated = NOW(), T_ReceiverefAcceptCourierUserID = '{$userid}' WHERE T_ReceiverefAcceptCourierID = {$prm['trx_id']} "; //echo $query; $saveheader = $this->db_onedev->query($query); $last_id = $prm['trx_id']; } if($saveheader){ foreach($prm['details'] as $k => $v){ if(($v['idx'] == 0 || $v['idx'] == '0')){ $query ="INSERT INTO t_receiverefacceptcourierdetail ( T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID, T_ReceiverefAcceptCourierDetailT_ReceiverefDistributCourierDetID, T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID, T_ReceiverefAcceptCourierDetailSampleIsOk, T_ReceiverefAcceptCourierDetailNote, T_ReceiverefAcceptCourierDetailCreated, T_ReceiverefAcceptCourierDetailUserID ) VALUES( '{$last_id}', '{$v['distributdetailid']}', '{$v['sjdetailid']}', '{$v['sampleisok']}', '{$v['note']}', NOW(), '{$userid}' )"; //echo $query; $savedetail = $this->db_onedev->query($query); } if(($v['idx'] != 0 || $v['idx'] != '0')){ $query ="UPDATE t_receiverefacceptcourierdetail SET T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID = '{$last_id}', T_ReceiverefAcceptCourierDetailT_ReceiverefDistributCourierDetID = '{$v['distributdetailid']}', T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID = '{$v['sjdetailid']}', T_ReceiverefAcceptCourierDetailSampleIsOk = '{$v['sampleisok']}', T_ReceiverefAcceptCourierDetailNote = '{$v['note']}', T_ReceiverefAcceptCourierDetailUserID = '{$userid}' WHERE T_ReceiverefAcceptCourierDetailID = {$v['idx']} "; //echo $query; $savedetail = $this->db_onedev->query($query); } /* if($v['active'] === 'N' && $v['idx'] != 0){ $query ="UPDATE t_receiverefacceptcourierdetail SET T_ReceiverefAcceptCourierDetailIsActive = 'N', T_ReceiverefAcceptCourierDetailUserID = '{$userid}' WHERE T_ReceiverefAcceptCourierDetailID = {$v['idx']} "; //echo $query; $savedetail = $this->db_onedev->query($query); } */ } foreach($prm['detaildps'] as $k => $v){ if($v['active'] === 'Y' && ($v['idx'] == 0 || $v['idx'] == '0')){ $query ="INSERT INTO t_receiverefacceptcourierdp ( T_ReceiverefAcceptCourierDPT_ReceiverefAcceptCourierID, T_ReceiverefAcceptCourierDPT_ReceiveReferenceHeaderID, T_ReceiverefAcceptCourierDPAmount, T_ReceiverefAcceptCourierDPCreated, T_ReceiverefAcceptCourierDPUserID ) VALUES( '{$last_id}', '{$v['orderid']}', '{$v['amount']}', NOW(), '{$userid}' )"; //echo $query; $savedetaildp = $this->db_onedev->query($query); } if($v['active'] === 'Y' && ($v['idx'] != 0 || $v['idx'] != '0')){ $query ="UPDATE t_receiverefacceptcourierdp SET T_ReceiverefAcceptCourierDPT_ReceiverefAcceptCourierID = '{$last_id}', T_ReceiverefAcceptCourierDPT_ReceiveReferenceHeaderID = '{$v['orderid']}', T_ReceiverefAcceptCourierDPAmount = '{$v['amount']}', T_ReceiverefAcceptCourierDPUserID = '{$userid}' WHERE T_ReceiverefAcceptCourierDPID = {$v['idx']} "; //echo $query; $savedetaildp = $this->db_onedev->query($query); } if($v['active'] === 'N' && $v['idx'] != 0){ $query ="UPDATE t_receiverefacceptcourierdp SET T_ReceiverefAcceptCourierDPIsActive = 'N', T_ReceiverefAcceptCourierDPUserID = '{$userid}' WHERE T_ReceiverefAcceptCourierDPID = {$v['idx']} "; //echo $query; $savedetaildp = $this->db_onedev->query($query); } } } $result = array( "total" => 1 , "records" => array('status'=>'OK'), "numbering" => $numbering, "id" => $last_id ); $this->sys_ok($result); exit; } function deletetrx(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $query ="UPDATE t_receiverefacceptcourier SET T_ReceiverefAcceptCourierIsActive = 'N', T_ReceiverefAcceptCourierUserID = '{$userid}' WHERE T_ReceiverefAcceptCourierID = {$prm['trx_id']} "; //echo $query; $saveheader = $this->db_onedev->query($query); $last_id = $prm['trx_id']; $result = array( "total" => 1 , "records" => array('status'=>'OK'), "numbering" => $prm['trx_numbering'], "id" => $prm['trx_id'] ); $this->sys_ok($result); exit; } function searchnoorder(){ 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 t_receivereferenceheader WHERE T_ReceiveReferenceHeaderNumber like ? AND T_ReceiveReferenceHeaderIsActive = 'Y' AND T_ReceiveReferenceHeaderIsConfirm = '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("t_receivereferenceheader count",$this->db_onedev); exit; } $sql = " SELECT *, CONCAT(M_CompanyName, ' | ', T_ReceiveReferenceHeaderNumber) as T_ReceiveReferenceHeaderNumber FROM t_receivereferenceheader JOIN m_company ON T_ReceiveReferenceHeaderM_CompanyID = M_CompanyID WHERE T_ReceiveReferenceHeaderNumber like ? AND T_ReceiveReferenceHeaderIsActive = 'Y' AND T_ReceiveReferenceHeaderIsConfirm = 'Y' ORDER BY T_ReceiveReferenceHeaderNumber ASC "; $query = $this->db_onedev->query($sql, array($q['search'])); if ($query) { $rows = $query->result_array(); //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("t_receivereferenceheader rows",$this->db_onedev); exit; } } function doaction(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $data_rst = array(); $sql = "UPDATE t_receiverefacceptcourier SET T_ReceiverefAcceptCourierStatus = 'RELEASEC', T_ReceiverefAcceptCourierNote = '{$prm['trx_note']}', T_ReceiverefAcceptCourierUserID = {$userid} WHERE T_ReceiverefAcceptCourierID = {$prm['trx']['trx_id']}"; //echo $sql; $this->db_onedev->query($sql); foreach($prm['detaildps'] as $k => $v){ $sqldp = "INSERT INTO f_dp_labreference (F_DpLabReferenceDate, F_DpLabReferenceM_CompanyID, F_DpLabReferenceT_ReceiveReferenceHeaderID, F_DpLabReferenceAmount, F_DpLabReferenceUserID, F_DpLabReferenceCreated, F_DpLabReferenceLastUpdated) VALUES (now(), '{$v['companyid']}', '{$v['orderid']}', '{$v['amount']}', '{$userid}', now(), now())"; // echo $sqldp; $r_dp = $this->db_onedev->query($sqldp); } foreach($prm['details'] as $k => $v){ $saveorderlab = $this->orderlab($v['T_ReceiverefAcceptCourierDetailID'],$v['T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID'],$v['patient_age']); $data_receivepatient = $this->db_onedev->query("SELECT T_ReceiveReferencePatientID FROM t_receiverefacceptcourierdetail LEFT JOIN t_receivereferencedeliverydetail ON T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID = T_ReceiveReferenceDeliveryDetailID LEFT JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID LEFT JOIN t_receivereferencepatient ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferencePatientID WHERE T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID = '{$v['T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID']}'")->row(); // echo $data_receivepatient; $sqlreceivepatient = "UPDATE t_receivereferencepatient SET T_ReceiveReferencePatientT_OrderHeaderID = '{$saveorderlab->id}' WHERE T_ReceiveReferencePatientID = {$v['T_ReceiveReferencePatientID']}"; // echo $sqlreceivepatient; $r_receivepatient = $this->db_onedev->query($sqlreceivepatient); array_push($data_rst,array( 'id'=>$saveorderlab->id, 'number'=>$saveorderlab->number, 'verification_patient'=>array(), 'verification_delivery'=>array(), 'verification_payment'=>array(), 'verification_supplies'=>array(), 'verification_barcode'=>array(), 'verification_companymou'=>array(), 'verification_px'=>array(), 'verification_info'=>array(), 'address_patient'=>array(), 'address_doctor'=>array() )); if($saveorderlab){ $data_header = $this->db_onedev->query("SELECT * FROM t_orderheader WHERE T_OrderHeaderID = '{$saveorderlab->id}'")->row(); $sql = "INSERT INTO f_payment ( F_PaymentT_OrderHeaderID, F_PaymentDate, F_PaymentNote, F_PaymentTotal, F_PaymentCreated ) VALUES( {$saveorderlab->id}, CURDATE(), '', {$data_header->T_OrderHeaderTotal}, NOW() )"; //echo $sql; $r_pay = $this->db_onedev->query($sql); $last_payment_id = $this->db_onedev->insert_id(); $last_payment_id = $this->db_onedev->query("SELECT F_PaymentID as id FROM f_payment WHERE F_PaymentT_OrderHeaderID = {$saveorderlab->id} AND F_PaymentIsActive = 'Y' LIMIT 1")->row()->id; //echo $last_payment_id; $sql = "INSERT INTO f_paymentdetail ( F_PaymentDetailF_PaymentID, F_PaymentDetailM_PaymentTypeID, F_PaymentDetailAmount, F_PaymentDetailActual, F_PaymentDetailCreated, F_PaymentDetailUserID ) VALUES( {$last_payment_id}, {$v['paymenttype_id']}, {$v['T_ReceiveReferencePatientDPAmount']}, {$v['T_ReceiveReferencePatientDPAmount']}, NOW(), {$userid} )"; $this->db_onedev->query($sql); //insert into barcode $sql = "SELECT T_OrderHeaderLabNumber as labnumber, T_SampleTypeID as sampletypeid FROM t_orderdetail JOIN t_orderheader 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 = {$saveorderlab->id} AND T_OrderDetailIsActive = 'Y' GROUP BY T_SampleTypeID"; //echo $sql; $dt_sampletype = $this->db_onedev->query($sql)->result(); foreach($dt_sampletype as $k => $v){ $barcode = $v->labnumber.'.'.$v->sampletypeid.'.1'; $sql = "INSERT INTO t_barcodelab ( T_BarcodeLabT_OrderHeaderID, T_BarcodeLabBarcode, T_BarcodeLabT_SampleTypeID, T_BarcodeLabCreated, T_BarcodeLabLastUpdated, T_BarcodeLabUserID ) VALUES( {$saveorderlab->id}, '{$barcode}', {$v->sampletypeid}, NOW(), NOW(), {$userid} )"; //echo $sql; $savebarcode = $this->db_onedev->query($sql); if($savebarcode){ $barcodeid = $this->db_onedev->insert_id(); $sql = "SELECT * FROM t_ordersample WHERE T_OrderSampleT_OrderHeaderID = {$saveorderlab->id} AND T_OrderSampleT_SampleTypeID = {$v->sampletypeid} AND T_OrderSampleT_BarcodeLabID = {$barcodeid} AND T_OrderSampleIsActive = 'Y'"; $ordersample = $this->db_onedev->query($sql)->row(); $sql = "UPDATE t_ordersample SET T_OrderSampleSampling = 'Y', T_OrderSampleSamplingDate = CURDATE(), T_OrderSampleSamplingTime = CURTIME(), T_OrderSampleSamplingUserID = {$userid}, T_OrderSampleReceive = 'Y', T_OrderSampleReceiveDate = CURDATE(), T_OrderSampleReceiveTime = CURTIME(), T_OrderSampleReceiveUserID = {$userid}, T_OrderSampleVerification = 'Y', T_OrderSampleVerificationDate = CURDATE(), T_OrderSampleVerificationTime = CURTIME(), T_OrderSampleVerificationUserID = {$userid} WHERE T_OrderSampleID = {$ordersample->T_OrderSampleID}"; $this->db_onedev->query($sql); $sql = "SELECT * FROM last_statussample WHERE Last_StatusSampleT_OrderHeaderID = {$saveorderlab->id} AND Last_StatusSampleT_SampleTypeID = {$v->sampletypeid} AND Last_StatusSampleBarcode = '{$ordersample->T_OrderSampleBarcode}' AND Last_StatusSampleIsActive = 'Y'"; $last_statussample = $this->db_onedev->query($sql)->row(); $sql = "UPDATE last_statussample SET Last_StatusSampleM_StatusSampleID = '15', Last_StatusSampleUserID = {$userid} WHERE Last_StatusSampleID = {$last_statussample->Last_StatusSampleID}"; $this->db_onedev->query($sql); $sql = "INSERT INTO t_ordersampleaddon ( T_OrderSampleAddonT_OrderSampleID, T_OrderSampleAddonVerificationSampleType, T_OrderSampleAddonVerificationQuantity, T_OrderSampleAddonVerificationQuality ) VALUES( {$ordersample->T_OrderSampleID}, 'Y', 'Y', 'Y' )"; $this->db_onedev->query($sql); $sql = "INSERT INTO helper_order ( Helper_OrderT_OrderHeaderID, Helper_OrderSamplingVerificationPhoto, Helper_OrderCreated, Helper_OrderLastUpdated, Helper_OrderUserID ) VALUES( {$saveorderlab->id}, 'Y', NOW(), NOW(), {$userid} )"; $this->db_onedev->query($sql); $sql = "SELECT * FROM helper_sst WHERE Helper_SstT_OrderHeaderID = {$saveorderlab->id}"; //echo $sql; $sample_per_station = $this->db_onedev->query($sql)->result(); foreach($sample_per_station as $k => $v){ $sql = "INSERT INTO t_sampling_queue_last_status( T_SamplingQueueLastStatusT_SampleStationID, T_SamplingQueueLastStatusT_OrderHeaderID, T_SamplingQueueLastStatusT_SamplingQueueStatusID, T_SamplingQueueLastStatusUserID ) VALUES( {$v->Helper_SstT_SampleStationID}, {$v->Helper_SstT_OrderHeaderID}, 5, {$userid} )"; $ins_queue_sample = $this->db_onedev->query($sql); $sql = "UPDATE helper_sst SET Helper_SstStatus = 'Y' WHERE Helper_SstID = {$v->Helper_SstID}"; $this->db_onedev->query($sql); } } } } } foreach($data_rst as $k=>$v){ $data_rst[$k]['verification_patient'] = $this->add_verification_patient($v['id']); $data_rst[$k]['verification_doctor'] = $this->add_verification_doctor($v['id']); $data_rst[$k]['verification_delivery'] = $this->add_verification_delivery($v['id']); //$data_rst[$k]['verification_payment'] = $this->add_verification_payment($v['id']); $data_rst[$k]['verification_supplies'] = $this->add_verification_supplies($v['id']); $data_rst[$k]['verification_barcode'] = $this->add_verification_barcode($v['id']); $data_rst[$k]['verification_companymou'] = $this->add_verification_companymou($v['id']); $data_rst[$k]['verification_px'] = $this->add_verification_test($v['id']); //$data_rst[$k]['verification_info'] = $this->add_verification_info($v['id']); $data_rst[$k]['address_patient'] = $this->add_address_patient($v['id']); $data_rst[$k]['address_doctor'] = $this->add_address_doctor($v['id']); $saveverication = $this->savetrxverification($v['id'],$data_rst[$k]); } $result = array( "total" => 1 , "records" => $data_rst ); $this->sys_ok($result); exit; } /***begin-verification***/ function add_address_patient($orderid){ $query =" SELECT M_PatientAddressID as id, M_PatientAddressNote as note, M_PatientAddressDescription as description, M_PatientAddressM_KelurahanID as vilageid FROM m_patientaddress JOIN t_orderheader ON M_PatientAddressM_PatientID = T_OrderHeaderM_PatientID WHERE T_OrderHeaderID = {$orderid} AND M_PatientAddressIsActive = 'Y' "; //echo $query; $rows = $this->db_onedev->query($query)->result_array(); if($rows) return $rows; else return array(); } function add_address_doctor($orderid){ $query =" SELECT M_DoctorAddressID as id, M_DoctorAddressNote as note, M_DoctorAddressDescription as description, M_DoctorAddressM_KelurahanID as vilageid FROM m_doctoraddress JOIN t_orderheader ON T_OrderHeaderSenderM_DoctorID = M_DoctorAddressM_DoctorID WHERE T_OrderHeaderID = {$orderid} AND M_DoctorAddressIsActive = 'Y' "; //echo $query; $rows = $this->db_onedev->query($query)->result_array(); if($rows) return $rows; else return array(); } function add_verification_patient($orderid){ $query =" SELECT Fo_VerificationsLabelID as id, 0 as xid, 'Y' as chex, '' as note, Fo_VerificationsLabelName as label FROM fo_verificationslabel LEFT JOIN fo_verificationsvalue ON Fo_VerificationsValueFo_VerificationsLabelID = Fo_VerificationsLabelID AND Fo_VerificationsValueT_OrderHeaderID = $orderid WHERE Fo_VerificationsLabelID = 1 AND Fo_VerificationsLabelIsActive = 'Y' GROUP BY Fo_VerificationsLabelID "; //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; } return $rows; } function add_verification_doctor($orderid){ $query =" SELECT Fo_VerificationsLabelID as id, 0 as xid, 'Y' as chex, '' as note, Fo_VerificationsLabelName as label FROM fo_verificationslabel LEFT JOIN fo_verificationsvalue ON Fo_VerificationsValueFo_VerificationsLabelID = Fo_VerificationsLabelID AND Fo_VerificationsValueT_OrderHeaderID = $orderid WHERE Fo_VerificationsLabelID = 2 AND Fo_VerificationsLabelIsActive = 'Y' GROUP BY Fo_VerificationsLabelID "; $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; } return $rows; } function add_verification_companymou($orderid){ $query =" SELECT Fo_VerificationsLabelID as id, 0 as xid, 'Y' as chex, '' as note, Fo_VerificationsLabelName as label FROM fo_verificationslabel LEFT JOIN fo_verificationsvalue ON Fo_VerificationsValueFo_VerificationsLabelID = Fo_VerificationsLabelID AND Fo_VerificationsValueT_OrderHeaderID = $orderid WHERE Fo_VerificationsLabelID = 3 AND Fo_VerificationsLabelIsActive = 'Y' GROUP BY Fo_VerificationsLabelID "; $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; } return $rows; } function add_verification_payment($orderid){ $query =" SELECT Fo_VerificationsLabelID as id, 0 as xid, 'Y' as chex, '' as note, Fo_VerificationsLabelName as label, 'reguler' as type FROM fo_verificationslabel LEFT JOIN fo_verificationsvalue ON Fo_VerificationsValueFo_VerificationsLabelID = Fo_VerificationsLabelID AND Fo_VerificationsValueT_OrderHeaderID = $orderid WHERE Fo_VerificationsLabelButton = 'PAYMENT' AND Fo_VerificationsLabelIsActive = 'Y' GROUP BY Fo_VerificationsLabelID "; $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; } return $rows; } function add_verification_supplies($orderid){ $query =" SELECT M_SuppliesID as id, 0 as xid, 'Y' as chex, 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; } return $rows; } function add_verification_barcode($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, 0 as xid, 'Y' 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; } } return $rows; } function add_verification_delivery($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(Fo_VerificationDeliveryID),'',Fo_VerificationDeliveryReason) as note, 'reguler' as type, CASE WHEN T_OrderDeliveryM_DeliveryID = 1 THEN M_DeliveryName WHEN T_OrderDeliveryM_DeliveryID = 4 THEN CONCAT(M_DeliveryName, ' : ', M_DoctorAddressDescription) WHEN T_OrderDeliveryM_DeliveryID = 2 THEN CONCAT(M_DeliveryName, ' : ', M_PatientAddressDescription) WHEN ( T_OrderDeliveryM_DeliveryID = 7 OR T_OrderDeliveryM_DeliveryID = 9 ) THEN CONCAT(M_DeliveryName, ' : ', M_DoctorHP) WHEN ( T_OrderDeliveryM_DeliveryID = 6 OR T_OrderDeliveryM_DeliveryID = 8 ) THEN CONCAT(M_DeliveryName, ' : ', M_PatientHP) ELSE CONCAT(M_DeliveryName,' : ',T_OrderDeliveryDestination) END 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 WHEN ( T_OrderDeliveryM_DeliveryID = 7 OR T_OrderDeliveryM_DeliveryID = 9 ) THEN M_DoctorHP WHEN ( T_OrderDeliveryM_DeliveryID = 6 OR T_OrderDeliveryM_DeliveryID = 8 ) THEN M_PatientHP 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 t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID 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' LEFT JOIN m_doctor ON T_OrderHeaderSenderM_DoctorID = M_DoctorID AND ( T_OrderDeliveryM_DeliveryID = 7 OR T_OrderDeliveryM_DeliveryID = 9 ) LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND ( T_OrderDeliveryM_DeliveryID = 6 OR T_OrderDeliveryM_DeliveryID = 8 ) WHERE T_OrderDeliveryT_OrderHeaderID = {$orderid} AND T_OrderDeliveryIsActive = 'Y' GROUP BY T_OrderDeliveryID UNION SELECT 0 as id, 0 as xid, M_DeliveryTypeCode as code, 'Y' as chex, Fo_VerificationDeliveryAddM_DeliveryID as deliveryid, Fo_VerificationDeliveryAddM_DeliveryTypeID as typedeliveryid, Fo_VerificationDeliveryAddM_KelurahanID as vilageid, IF(ISNULL(Fo_VerificationDeliveryAddID),'',Fo_VerificationDeliveryAddReason) as note, 'reguler' as type, CASE WHEN Fo_VerificationDeliveryAddM_DeliveryID = 1 THEN M_DeliveryName WHEN Fo_VerificationDeliveryAddM_DeliveryID = 4 THEN CONCAT(M_DeliveryName, ' : ', M_DoctorAddressDescription) WHEN Fo_VerificationDeliveryAddM_DeliveryID = 2 THEN CONCAT(M_DeliveryName, ' : ', M_PatientAddressDescription) WHEN ( Fo_VerificationDeliveryAddM_DeliveryID = 7 OR Fo_VerificationDeliveryAddM_DeliveryID = 9 ) THEN CONCAT(M_DeliveryName, ' : ', M_DoctorHP) WHEN ( Fo_VerificationDeliveryAddM_DeliveryID = 6 OR Fo_VerificationDeliveryAddM_DeliveryID = 8 ) THEN CONCAT(M_DeliveryName, ' : ', M_PatientHP) ELSE CONCAT(M_DeliveryName,' : ',Fo_VerificationDeliveryAddDestination) END as label, CASE WHEN Fo_VerificationDeliveryAddM_DeliveryID = 1 THEN '' WHEN Fo_VerificationDeliveryAddM_DeliveryID = 4 THEN M_DoctorAddressDescription WHEN Fo_VerificationDeliveryAddM_DeliveryID = 2 THEN M_PatientAddressDescription WHEN ( Fo_VerificationDeliveryAddM_DeliveryID = 7 OR Fo_VerificationDeliveryAddM_DeliveryID = 9 ) THEN M_DoctorHP WHEN ( Fo_VerificationDeliveryAddM_DeliveryID = 6 OR Fo_VerificationDeliveryAddM_DeliveryID = 8 ) THEN M_PatientHP ELSE Fo_VerificationDeliveryAddDestination END as destination, CASE WHEN Fo_VerificationDeliveryAddM_DeliveryID = 4 THEN M_DoctorAddressID WHEN Fo_VerificationDeliveryAddM_DeliveryID = 2 THEN M_PatientAddressID ELSE 0 END as addressid FROM fo_verification_delivery_add JOIN t_orderheader ON Fo_VerificationDeliveryAddT_OrderHeaderID = T_OrderHeaderID JOIN m_delivery ON Fo_VerificationDeliveryAddM_DeliveryID = M_DeliveryID JOIN m_deliverytype ON Fo_VerificationDeliveryAddM_DeliveryTypeID = M_DeliveryTypeID LEFT JOIN m_doctoraddress ON Fo_VerificationDeliveryAddAddressID = M_DoctorAddressID AND Fo_VerificationDeliveryAddM_DeliveryID = 4 LEFT JOIN m_patientaddress ON Fo_VerificationDeliveryAddAddressID = M_PatientAddressID AND Fo_VerificationDeliveryAddM_DeliveryID = 2 LEFT JOIN m_doctor ON T_OrderHeaderSenderM_DoctorID = M_DoctorID AND ( Fo_VerificationDeliveryAddM_DeliveryID = 7 OR Fo_VerificationDeliveryAddM_DeliveryID = 9 ) LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND ( Fo_VerificationDeliveryAddM_DeliveryID = 6 OR Fo_VerificationDeliveryAddM_DeliveryID = 8 ) WHERE Fo_VerificationDeliveryAddT_OrderHeaderID = {$orderid} AND Fo_VerificationDeliveryAddIsActive = '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; } return $rows; } function add_verification_test($orderid){ $query =" SELECT * FROM ( SELECT T_OrderDetailID as id, 0 as xid, 'Y' as chex, IF(ISNULL(Fo_VerificationTestID),'',Fo_VerificationTestReason) as note, T_TestID as pxid, T_TestName as pxname, T_OrderDetailIsCito as flagcito, T_OrderDetailPrice as bruto, T_OrderDetailDiscTotal as discount, T_OrderDetailTotal as total, 'N' as addon FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsPrice = 'Y' LEFT JOIN fo_verification_test ON Fo_VerificationTestT_OrderDetailID = T_OrderDetailID WHERE T_OrderDetailT_OrderHeaderID = $orderid AND T_OrderDetailIsActive = 'Y' UNION SELECT 0 as id, IFNULL(Fo_VerificationTestAddID,0) as xid, IF(ISNULL(Fo_VerificationTestAddIsOK),'N',Fo_VerificationTestAddIsOK) as chex, '' as note, Fo_VerificationTestAddT_TestID as pxid, T_TestName as pxname, Fo_VerificationTestAddIsCito as flagcito, Fo_VerificationTestAddBruto as bruto, Fo_VerificationTestAddDiscount as discount, Fo_VerificationTestAddTotal as total, 'N' as addon FROM fo_verification_test_add JOIN t_test ON Fo_VerificationTestAddT_TestID = T_TestID WHERE Fo_VerificationTestAddT_OrderHeaderID = $orderid AND Fo_VerificationTestAddIsActive = 'Y' ) x GROUP BY pxid "; //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; if($v['addon'] == 'N') $rows[$k]['addon'] = false; else $rows[$k]['addon'] = true; } return $rows; } function add_verification_info($orderid){ $query =" SELECT Fo_VerificationsLabelID as id, 0 as xid, 'Y' as chex, IF(ISNULL(Fo_VerificationID),'',Fo_VerificationReason) as note, Fo_VerificationsLabelName as label FROM fo_verificationslabel LEFT JOIN fo_verificationsvalue ON Fo_VerificationsValueFo_VerificationsLabelID = Fo_VerificationsLabelID AND Fo_VerificationsValueT_OrderHeaderID = $orderid WHERE Fo_VerificationsLabelButton = 'INFO' AND Fo_VerificationsLabelIsActive = 'Y' GROUP BY Fo_VerificationsLabelID "; //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; } return $rows; } public function savetrxverification($orderid,$prm) { try { //print_r($prm); //# cek token valid if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $xuserid = $this->sys_user["M_UserID"]; //# ambil parameter input //print_r($xprm); //$prm = $xprm['patient']; $fostatusid = 3; $fologcode = 'FO.VERIFICATION.CONFIRM'; //print_r($prm); $xverificationnote = $prm['verification_note']; //echo $xverificationnote; $id = $orderid; /*$sql = "update t_orderheader set T_OrderHeaderVerificationNote = '' where T_OrderHeaderID = $id"; //echo $sql; $query = $this->db_onedev->query($sql);*/ //print_r($prm['verification_patient']); $xverification_patient = $this->saveverifications($id,$prm['verification_patient'],'PASIEN',$xuserid); $xverification_doctor = $this->saveverifications($id,$prm['verification_doctor'],'ORDER',$xuserid); $xverification_companymou = $this->saveverifications($id,$prm['verification_companymou'],'ORDER',$xuserid); //$xverification_payment = $this->saveverifications($id,$prm['verification_payment'],'PAYMENT',$xuserid); //$xverification_info = $this->saveverifications($id,$prm['verification_info'],'INFO',$xuserid); $xverification_delivery = $this->saveverification_delivery($id,$prm['verification_delivery'],$xuserid); $xverification_px = $this->saveverification_px($id,$prm['verification_px'],$xuserid); $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( $id, $fostatusid, $xuserid ) ); //echo $this->db_onedev->last_query(); if (!$query) { $this->sys_error_db("fo_status insert"); exit; } $data_log = array(); $data_log['orderid'] = $id; $data_log['verification_patient'] = $prm['verification_patient']; $data_log['verification_doctor'] = $prm['verification_doctor']; $data_log['verification_companymou'] = $prm['verification_companymou']; $data_log['verification_payment'] = $prm['verification_payment']; $data_log['verification_info'] = $prm['verification_info']; $data_log['verification_px'] = $prm['verification_px']; $data_log['verification_delivery'] = $prm['verification_delivery']; $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; } if($xstatus == 'Y'){ $msg = 'Verifikasi berhasil dilakukan'; } else{ $msg = 'Tolak Verifikasi berhasil dilakukan'; $sql = "INSERT INTO t_ordermessage ( T_OrderMessageT_OrderHeaderID, T_OrderMessageType, T_OrderMessageMessage, T_OrderMessageFromUserID, T_OrderMessageCreated, T_OrderMessageLastUpdated ) VALUES( {$id}, 'FO.VERIFICATION.REJECT', '{$xverificationnote}', {$xuserid}, NOW(), NOW() )"; //echo $sql; $query = $this->db_onedev->query($sql); if (!$query) { $this->sys_error_db("one_log.t_ordermessage insert"); exit; } } return rows; } catch(Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function saveverifications($id,$verifications,$type,$userid) { try { //$xverificationtypeid = $this->db_onedev->query("SELECT * FROM fo_verificationslabel WHERE Fo_VerificationsLabelButton = '{$type}' AND Fo_VerificationsLabelIsActive = 'Y'")->row()->Fo_VerificationsLabelID; //echo $xverificationtypeid; //print_r($verifications); foreach($verifications as $k => $v){ //print_r($v); if($v['xid'] === 0 || $v['xid'] === '0'){ $sql = "insert into fo_verificationsvalue( Fo_VerificationsValueT_OrderHeaderID, Fo_VerificationsValueFo_VerificationsLabelID, Fo_VerificationsValueCheck, Fo_VerificationsValueNote, Fo_VerificationsValueCreated, Fo_VerificationsValueLastUpdated, Fo_VerificationsValueUserID) values( ?, ?, ?, ?, now(),now(),?)"; //echo $sql; $query = $this->db_onedev->query($sql, array( $id, $v['id'], $v['chex'] == true ?'Y':'N', $v['note'], $userid ) ); //echo $this->db_onedev->last_query(); //echo "///////////////////////"; if (!$query) { $this->sys_error_db("fo_verificationsvalue insert"); exit; } } } return true; } catch(Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function saveverification_delivery($id,$deliveries,$userid) { try { foreach($deliveries as $k => $v){ if($v['id'] === 0){ $sql = "insert into fo_verification_delivery_add( Fo_VerificationDeliveryAddT_OrderHeaderID, Fo_VerificationDeliveryAddM_DeliveryID, Fo_VerificationDeliveryAddM_DeliveryTypeID, Fo_VerificationDeliveryAddDestination, Fo_VerificationDeliveryAddAddressID, Fo_VerificationDeliveryAddM_KelurahanID, Fo_VerificationDeliveryAddOK, Fo_VerificationDeliveryAddReason, Fo_VerificationDeliveryAddCreated, Fo_VerificationDeliveryAddLastUpdated, Fo_VerificationDeliveryAddUserID) values( ?, ?, ?, ?,?,?,?,?, now(),now(),?)"; //echo $sql; $query = $this->db_onedev->query($sql, array( $id, $v['deliveryid'], $v['typedeliveryid'], $v['destination'], $v['addressid'], $v['vilageid'], $v['chex'] == true ?'Y':'N', $v['note'], $userid ) ); if (!$query) { echo $this->db_onedev->last_query(); $this->sys_error_db("fo_verification_delivery_add insert"); exit; } }else{ $sql = "insert into fo_verification_delivery( Fo_VerificationDeliveryT_OrderHeaderID, Fo_VerificationDeliveryT_OrderDeliveryID, Fo_VerificationDeliveryIsOK, Fo_VerificationDeliveryReason, Fo_VerificationDeliveryCreated, Fo_VerificationDeliveryLastUpdated, Fo_VerificationDeliveryUserID) values( ?, ?, ?, ?, now(),now(),?)"; //echo $sql; $query = $this->db_onedev->query($sql, array( $id, $v['id'], $v['chex'] == true ?'Y':'N', $v['note'], $userid ) ); if (!$query) { echo $this->db_onedev->last_query(); $this->sys_error_db("fo_verification_delivery insert"); exit; } //echo $this->db_onedev->last_query(); } } return true; } catch(Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function saveverification_px($id,$pxs,$userid) { try { foreach($pxs as $k => $v){ if(intval($v['id']) == 0){ $cxh = $v['chex'] == true ?'Y':'N'; $sql = "insert into fo_verification_test_add( Fo_VerificationTestAddT_OrderHeaderID, Fo_VerificationTestAddT_TestID, Fo_VerificationTestAddBruto, Fo_VerificationTestAddDiscount, Fo_VerificationTestAddTotal, Fo_VerificationTestAddIsOK, Fo_VerificationTestAddIsCito, Fo_VerificationTestAddCreated, Fo_VerificationTestAddLastUpdated, Fo_VerificationTestAddUserID) values( $id, {$v['pxid']}, {$v['bruto']}, {$v['discount']},{$v['total']},'{$cxh}','{$v['flagcito']}',now(),now(),{$userid})"; //echo $sql; $query = $this->db_onedev->query($sql); //echo $this->db_onedev->last_query(); if (!$query) { $this->sys_error_db("fo_verification_test_add insert"); exit; } }else{ $sql = "insert into fo_verification_test( Fo_VerificationTestT_OrderHeaderID, Fo_VerificationTestT_OrderDetailID, Fo_VerificationTestIsOK, Fo_VerificationTestReason, Fo_VerificationTestCreated, Fo_VerificationTestLastUpdated, Fo_VerificationTestUserID) values( ?, ?, ?, ?, now(),now(),?)"; //echo $sql; $query = $this->db_onedev->query($sql, array( $id, $v['id'], $v['chex'] == true ?'Y':'N', $v['note'], $userid ) ); //echo $this->db_onedev->last_query(); if (!$query) { $this->sys_error_db("fo_verification_test insert"); exit; } } } return true; } catch(Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } /***end-verification***/ function orderlab($orderdetail_id,$order_id,$patientage){ //$order_id = $prm['orderid']; //$patientage = $prm['patientage']; $userid = $this->sys_user["M_UserID"]; /***t_orderheader***/ $sql = "SELECT t_receivereferenceheader.* ,t_receivereferencepatient.*, m_company.*,M_PatientAddressID FROM t_receiverefacceptcourierdetail LEFT JOIN t_receivereferencedeliverydetail ON T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID = T_ReceiveReferenceDeliveryDetailID LEFT JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID LEFT JOIN t_receivereferencepatient ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferencePatientID LEFT JOIN m_company ON T_ReceiveReferenceHeaderM_CompanyID = M_CompanyID LEFT JOIN m_patient ON T_ReceiveReferencePatientM_PatientID = M_PatientID LEFT JOIN m_patientaddress ON M_PatientID = M_PatientAddressM_PatientID WHERE T_ReceiverefAcceptCourierDetailID = '{$orderdetail_id}'"; //echo $sql; $query = $this->db_onedev->query($sql); if (!$query) { $this->sys_error_db("select t_receiverefacceptcourierdetail", $this->db_onedev); exit; } $data_order = $query->row_array(); $xheader = array( 'patient_id' => $data_order['T_ReceiveReferencePatientM_PatientID'], 'age' => $patientage, 'sender_doctor_id' => '0', 'sender_address_id' => $data_order['M_PatientAddressID'], 'company_id' => $data_order['T_ReceiveReferenceHeaderM_CompanyID'], 'mou_id' => $data_order['T_ReceiveReferenceHeaderM_MouID'], 'lang_id' => '1', 'lang_si' => 'N', 'doctor_note' => '', 'fo_note' => '', 'queue' => '', 'received_sample' => 'N', 'lang_id_2' => '2', 'lang_si_2' => 'N', ); $xdelivery = array(); $query = " SELECT t_receivereferenceheader.*,M_CompanyAddress FROM t_receiverefacceptcourierdetail LEFT JOIN t_receivereferencedeliverydetail ON T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID = T_ReceiveReferenceDeliveryDetailID LEFT JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID LEFT JOIN m_company ON T_ReceiveReferenceHeaderM_CompanyID = M_CompanyID WHERE T_ReceiverefAcceptCourierDetailID = '{$orderdetail_id}'"; //echo $query; $delver = $this->db_onedev->query($query)->result_array(); foreach($delver as $k => $v){ $xdel = array( 'address_id' => $v['T_ReceiveReferenceHeaderM_CompanyID'], 'delivery_id' => '10', 'delivery_type_id' => '2', 'note' => $v['M_CompanyAddress'] ); array_push($xdelivery,$xdel); } //print_r($xdelivery ); $query = " SELECT T_ReceiveReferenceTestT_TestID,T_ReceiveReferenceTestT_TestPrice, T_ReceiveReferenceTestT_TestDisc,T_ReceiveReferenceTestT_TestDiscRp, 'PX' as testtype, 'N' as ispaket FROM t_receiverefacceptcourierdetail LEFT JOIN t_receivereferencedeliverydetail ON T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID = T_ReceiveReferenceDeliveryDetailID LEFT JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID LEFT JOIN t_receivereferencepatient ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferencePatientID LEFT JOIN t_receivereferencetest ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferenceTestT_ReceiveReferencePatientID JOIN t_test ON T_ReceiveReferenceTestT_TestID = T_TestID WHERE T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID = '{$order_id}' AND T_ReceiverefAcceptCourierDetailIsActive = 'Y'"; $data_order_detail = $this->db_onedev->query($query)->result_array(); $xdetails = array(); foreach($data_order_detail as $k => $v){ $xdet = array( 't_id' => $v['T_ReceiveReferenceTestT_TestID'], 't_cito' => 'N', 't_price' => $v['T_ReceiveReferenceTestT_TestPrice'], 't_disc' => $v['T_ReceiveReferenceTestT_TestDisc'], 't_discrp' => $v['T_ReceiveReferenceTestT_TestDiscRp'], 't_req' => 'Y', 't_reqnote' => '', 't_ispacket' => $v['ispaket'], 't_packettype' => $v['testtype'], 't_packetid' => '0' ); array_push($xdetails,$xdet); } $xreq = array( 'status' => 'Y', 'reqs' => '[]' ); $header_json = json_encode($xheader); $delivery_json = json_encode($xdelivery); $detail_json = json_encode($xdetails); $req_json = json_encode($xreq); $sql = "CALL one.sp_fo_register_save( 0, '{$header_json}', '{$delivery_json}', '{$detail_json}', '{$req_json}', '{$userid}' )"; //echo $sql; $r = $this->db_onedev->query($sql)->row(); $this->clean_mysqli_connection($this->db_onedev->conn_id); return json_decode($r->data); /***t_orderheader***/ } function doactionold(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; if($prm['act'] == 'RELEASEC'){ $sql = "UPDATE t_receiverefacceptcourier SET T_ReceiverefAcceptCourierStatus = '{$prm['act']}', T_ReceiverefAcceptCourierNote = '{$prm['trx_note']}', T_ReceiverefAcceptCourierUserID = {$userid} WHERE T_ReceiverefAcceptCourierID = {$prm['trx']['trx_id']} "; $this->db_onedev->query($sql); $details = $prm['details']; /***t_orderheader***/ $sql = " SELECT t_receivereferenceheader.* ,t_receivereferencepatient.*, m_company.* FROM t_receiverefacceptcourierdetail LEFT JOIN t_receivereferencedeliverydetail ON T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID = T_ReceiveReferenceDeliveryDetailID LEFT JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID LEFT JOIN t_receivereferencepatient ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferencePatientID LEFT JOIN m_company ON T_ReceiveReferenceHeaderM_CompanyID = M_CompanyID WHERE T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID = '{$prm['trx']['trx_id']}'"; //echo $query; $query = $this->db_onedev->query($sql); if (!$query) { $this->sys_error_db("select t_receiverefacceptcourierdetail", $this->db_onedev); exit; } $data_order = $query->row_array(); $xheader = array( 'patient_id' => '', 'age' => $patientage, 'company_id' => $data_order['T_ReceiveReferenceHeaderM_CompanyID'], 'mou_id' => $data_order['T_ReceiveReferenceHeaderM_MouID'], 'lang_id' => '', 'sender_address_id' => '', 'sender_doctor_id' => '', 'doctor_note' => '', 'fo_note' => '', 'queue' => '', 'received_sample' => 'N', ); $xdelivery = array(); $query = " SELECT t_receivereferenceheader.* FROM t_receiverefacceptcourierdetail LEFT JOIN t_receivereferencedeliverydetail ON T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID = T_ReceiveReferenceDeliveryDetailID LEFT JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID WHERE T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID = '{$prm['trx']['trx_id']}'"; //echo $query; $delver = $this->db_onedev->query($query)->result_array(); foreach($delver as $k => $v){ $xdel = array( 'address_id' => $v['T_ReceiveReferenceHeaderM_CompanyID'], 'delivery_id' => '10', 'delivery_type_id' => '2', 'note' => '' ); array_push($xdelivery,$xdel); } //print_r($xdelivery ); $query = " SELECT * FROM t_receiverefacceptcourierdetail LEFT JOIN t_receivereferencedeliverydetail ON T_ReceiverefAcceptCourierDetailT_ReceiveReferenceDeliveryDetID = T_ReceiveReferenceDeliveryDetailID LEFT JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID LEFT JOIN t_receivereferencepatient ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferencePatientID LEFT JOIN t_receivereferencetest ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferenceTestT_ReceiveReferencePatientID JOIN t_test ON T_ReceiveReferenceTestT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID LEFT JOIN nat_testrequirement ON Nat_TestID = Nat_TestRequirementNat_TestID LEFT JOIN nat_requirement ON Nat_TestRequirementNat_RequirementID = Nat_RequirementID WHERE T_ReceiverefAcceptCourierDetailT_ReceiverefAcceptCourierID = '{$prm['trx']['trx_id']}' AND T_ReceiverefAcceptCourierDetailIsActive = 'Y'"; $data_order_detail = $this->db_onedev->query($query)->result_array(); $xdetails = array(); foreach($data_order_detail as $k => $v){ $xdet = array( 't_id' => $v['T_ReceiveReferenceTestT_TestID'], 't_cito' => 'N', 't_price' => $v['T_ReceiveReferenceTestT_TestPrice'], 't_disc' => $v['T_ReceiveReferenceTestT_TestDisc'], 't_discrp' => $v['T_ReceiveReferenceTestT_TestDiscRp'], 't_req' => 'Y', 't_reqnote' => $v['Nat_RequirementName'] ); array_push($xdetails,$xdet); } $header_json = json_encode($xheader); $delivery_json = json_encode($xdelivery); $detail_json = json_encode($xdetails); $sql = "CALL one.sp_fo_register_save( 0, '{$header_json}', '{$delivery_json}', '{$detail_json}', '{$userid}' )"; //echo $sql; $r = $this->db_onedev->query($sql)->row(); $this->clean_mysqli_connection($this->db_onedev->conn_id); return json_decode($r->data); } if($prm['act'] === 'RCVLAB' ){ $sql = "UPDATE t_receiverefacceptcourier SET T_ReceiverefAcceptCourierStatus = '{$prm['act']}', T_ReceiverefAcceptCourierNote = '{$prm['trx_note']}', T_ReceiverefAcceptCourierUserID = {$userid} WHERE T_ReceiverefAcceptCourierID = {$prm['trx']['trx_id']} "; $this->db_onedev->query($sql); $details = $prm['details']; foreach($details as $k => $v){ $querystatus = "SELECT COUNT(*) as exist FROM g_receivereferenceheaderstatuslog WHERE G_ReceiveReferenceHeaderStatusLogIsActive = 'Y' AND G_ReceiveReferenceHeaderStatusLogT_ReceiveReferenceHeaderID = '{$v['T_ReceiverefAcceptCourierDetailT_ReceiveReferenceHeaderID']}' AND G_ReceiveReferenceHeaderStatusLogM_StatusReferenceID = '6'"; $exist_id = $this->db_onedev->query($querystatus)->row()->exist; if($exist_id == 0){ $querylog ="INSERT INTO g_receivereferenceheaderstatuslog ( G_ReceiveReferenceHeaderStatusLogDate, G_ReceiveReferenceHeaderStatusLogT_ReceiveReferenceHeaderID, G_ReceiveReferenceHeaderStatusLogM_StatusReferenceID, G_ReceiveReferenceHeaderStatusLogM_UserID, G_ReceiveReferenceHeaderStatusLogUserID, G_ReceiveReferenceHeaderStatusLogCreated, G_ReceiveReferenceHeaderStatusLogLastUpdated ) VALUES( NOW(), '{$v['T_ReceiverefAcceptCourierDetailT_ReceiveReferenceHeaderID']}', '6', '{$userid}', '{$userid}', NOW(), NOW() )"; //echo $querylog; $insert_new_log = $this->db_onedev->query($querylog); } } } if($prm['act'] === 'DONE'){ $details = $prm['details']; $count_n = 0; foreach($details as $k => $v){ if($v['flag_image_receive'] === 'N'){ $count_n++; } if($v['flag_result_receive'] === 'N'){ $count_n++; } $query ="UPDATE t_receiverefacceptcourierdetail SET T_ReceiverefAcceptCourierDetailFlagReceiveImage = '{$v['flag_image_receive']}', T_ReceiverefAcceptCourierDetailFlagReceiveResult = '{$v['flag_result_receive']}', T_ReceiverefAcceptCourierDetailUserID = '{$userid}' WHERE T_ReceiverefAcceptCourierDetailID = {$v['idx']} "; //echo $query; $savedetail = $this->db_onedev->query($query); } $status = 'DONE'; if($count_n > 0){ $status = 'PARTDONE'; } $sql = "UPDATE t_receiverefacceptcourier SET T_ReceiverefAcceptCourierStatus = '{$status}', T_ReceiverefAcceptCourierNote = '{$prm['trx_note']}', T_ReceiverefAcceptCourierUserID = {$userid} WHERE T_ReceiverefAcceptCourierID = {$prm['trx']['trx_id']} "; $this->db_onedev->query($sql); } if($prm['act'] == 'FORCEDONE'){ $sql = "UPDATE t_receiverefacceptcourier SET T_ReceiverefAcceptCourierNote = '{$prm['trx_note']}', T_ReceiverefAcceptCourierStatus = 'DONE', T_ReceiverefAcceptCourierUserID = {$userid} WHERE T_ReceiverefAcceptCourierID = {$prm['trx']['trx_id']} "; $this->db_onedev->query($sql); } $result = array( "total" => 1 , "records" => array('status'=>'OK') ); $this->sys_ok($result); exit; } }