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_receiverefdistributcourierdetail.*, DATE_FORMAT(T_ReceiveReferenceDeliveryDate,'%d-%m-%Y') as tanggalsj, T_ReceiveReferenceDeliveryNumber as nosj, M_CompanyName as namaperusahaan, M_CompanyAddress as alamatperusahaan, 'Y' as active, T_ReceiverefDistributCourierDetailID as idx, T_ReceiverefDistributCourierDetailT_ReceiveReferenceDeliveryID as sjid, 'xxx' as labs FROM t_receiverefdistributcourierdetail JOIN t_receivereferencedelivery ON T_ReceiverefDistributCourierDetailT_ReceiveReferenceDeliveryID = T_ReceiveReferenceDeliveryID JOIN m_company ON T_ReceiveReferenceDeliveryM_CompanyID = M_CompanyID WHERE T_ReceiverefDistributCourierDetailT_ReceiverefDistributCourierID = {$id} AND T_ReceiverefDistributCourierDetailIsActive = '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_ReceiverefDistributCourierDetailT_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_ReceiverefDistributCourierStatus = '{$status}' AND ( T_ReceiverefDistributCourierDate BETWEEN '{$startdate} 00:00:00' AND '{$enddate} 23:59:59' ) AND T_ReceiverefDistributCourierIsActive = 'Y'"; //$sql_param = array(); if ($search != "") { if ($sql_where != "") { $sql_where .=" and "; } $sql_where .= " ( T_ReceiverefDistributCourierNumber like '%$search%' ) "; //$sql_param[] = "%$nama%"; } $sql = " SELECT count(*) as total FROM t_receiverefdistributcourier LEFT JOIN m_staff ON T_ReceiverefDistributCourierM_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_receiverefdistributcourier.*, IFNULL(M_StaffName,'-') as courier_name, T_ReceiverefDistributCourierID as trx_id, T_ReceiverefDistributCourierNumber as trx_numbering, T_ReceiverefDistributCourierDPAmount as trx_totaldp, T_ReceiverefDistributCourierDate as trx_date, DATE_FORMAT(T_ReceiverefDistributCourierDate,'%d-%m-%Y') as trx_date_ina, T_ReceiverefDistributCourierNote as trx_note, T_ReceiverefDistributCourierStatus as status, '' as details, CASE WHEN T_ReceiverefDistributCourierStatus = 'CREATED' THEN 'BARU' WHEN T_ReceiverefDistributCourierStatus = 'RELEASEC' THEN 'DISERAHKAN KURIR' WHEN T_ReceiverefDistributCourierStatus = 'RCVDOC' THEN 'DITERIMA DOKTER' WHEN T_ReceiverefDistributCourierStatus = 'PARTDONE' THEN 'SELESAI SEBAGIAN' ELSE 'SELESAI' END as status_name FROM t_receiverefdistributcourier LEFT JOIN m_staff ON T_ReceiverefDistributCourierM_StaffID = M_StaffID $sql_where ORDER BY T_ReceiverefDistributCourierID 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_ReceiverefDistributCourierID']); } } //$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, DATE_FORMAT(T_ReceiveReferenceDeliveryDate,'%d-%m-%Y') as tanggalsj, T_ReceiveReferenceDeliveryNumber as nosj, M_CompanyName as namaperusahaan, M_CompanyAddress as alamatperusahaan, 'Y' as active, T_ReceiveReferenceDeliveryID as sjid, T_ReceiverefDistributCourierDetailID FROM t_receivereferencedelivery LEFT JOIN m_company ON T_ReceiveReferenceDeliveryM_CompanyID = M_CompanyID LEFT JOIN t_receiverefdistributcourierdetail ON T_ReceiveReferenceDeliveryID = T_ReceiverefDistributCourierDetailT_ReceiveReferenceDeliveryID AND T_ReceiverefDistributCourierDetailIsActive = 'Y' WHERE T_ReceiveReferenceDeliveryM_StaffID = {$courierid} AND T_ReceiveReferenceDeliveryIsActive = 'Y' AND T_ReceiveReferenceDeliveryStatus = 'RELEASEC' GROUP BY T_ReceiveReferenceDeliveryID) a WHERE T_ReceiverefDistributCourierDetailID 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.DISTRIB') as numbering")->row()->numbering; $query ="INSERT INTO t_receiverefdistributcourier ( T_ReceiverefDistributCourierNumber, T_ReceiverefDistributCourierDate, T_ReceiverefDistributCourierNote, T_ReceiverefDistributCourierM_StaffID, T_ReceiverefDistributCourierCreated, T_ReceiverefDistributCourierUserID ) 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_ReceiverefDistributCourierNumber as numbering FROM t_receiverefdistributcourier WHERE T_ReceiverefDistributCourierID = {$prm['trx_id']}")->row()->numbering; $query ="UPDATE t_receiverefdistributcourier SET T_ReceiverefDistributCourierDate = '{$xdate}', T_ReceiverefDistributCourierNote = '{$prm['trx_note']}', T_ReceiverefDistributCourierM_StaffID = '{$prm['courier']['id']}', T_ReceiverefDistributCourierCreated = NOW(), T_ReceiverefDistributCourierUserID = '{$userid}' WHERE T_ReceiverefDistributCourierID = {$prm['trx_id']} "; //echo $query; $saveheader = $this->db_onedev->query($query); $last_id = $prm['trx_id']; } // DP if($saveheader){ foreach($prm['details'] as $k => $v){ if($v['active'] === 'Y' && ($v['idx'] == 0 || $v['idx'] == '0')){ $query ="INSERT INTO t_receiverefdistributcourierdetail ( T_ReceiverefDistributCourierDetailT_ReceiverefDistributCourierID, T_ReceiverefDistributCourierDetailT_ReceiveReferenceDeliveryID, T_ReceiverefDistributCourierDetailCreated, T_ReceiverefDistributCourierDetailUserID ) VALUES( '{$last_id}', '{$v['sjid']}', NOW(), '{$userid}' )"; //echo $query; $savedetail = $this->db_onedev->query($query); /* $querystatus = "SELECT COUNT(*) as exist FROM g_receivereferenceheaderstatuslog WHERE G_ReceiveReferenceHeaderStatusLogIsActive = 'Y' AND G_ReceiveReferenceHeaderStatusLogT_ReceiveReferenceHeaderID = '{$v['rheaderid']}' AND G_ReceiveReferenceHeaderStatusLogM_StatusReferenceID = '4'"; $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['rheaderid']}', '4', '{$userid}', '1', NOW(), NOW() )"; //echo $querylog; $insert_new_log = $this->db_onedev->query($querylog); } */ } if($v['active'] === 'Y' && ($v['idx'] != 0 || $v['idx'] != '0')){ $query ="UPDATE t_receiverefdistributcourierdetail SET T_ReceiverefDistributCourierDetailT_ReceiverefDistributCourierID = '{$last_id}', T_ReceiverefDistributCourierDetailT_ReceiveReferenceDeliveryID = '{$v['sjid']}', T_ReceiverefDistributCourierDetailUserID = '{$userid}' WHERE T_ReceiverefDistributCourierDetailID = {$v['idx']} "; //echo $query; $savedetail = $this->db_onedev->query($query); } if($v['active'] === 'N' && $v['idx'] != 0){ $query ="UPDATE t_receiverefdistributcourierdetail SET T_ReceiverefDistributCourierDetailIsActive = 'N', T_ReceiverefDistributCourierDetailUserID = '{$userid}' WHERE T_ReceiverefDistributCourierDetailID = {$v['idx']} "; //echo $query; $savedetail = $this->db_onedev->query($query); } } $totaldp = $this->db_onedev->query("SELECT SUM(T_ReceiveReferencePatientDPAmount) as totaldp FROM t_receiverefdistributcourierdetail JOIN t_receivereferencedeliverydetail ON T_ReceiverefDistributCourierDetailT_ReceiveReferenceDeliveryID = T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceDeliveryID AND T_ReceiveReferenceDeliveryDetailIsActive = 'Y' JOIN t_receivereferenceheader ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID = T_ReceiveReferenceHeaderID JOIN t_receivereferencepatient ON T_ReceiveReferenceDeliveryDetailT_ReceiveReferencePatientID = T_ReceiveReferencePatientID WHERE T_ReceiverefDistributCourierDetailT_ReceiverefDistributCourierID = {$last_id} AND T_ReceiverefDistributCourierDetailIsActive = 'Y'")->row()->totaldp; $query ="UPDATE t_receiverefdistributcourier SET T_ReceiverefDistributCourierDPAmount = '{$totaldp}', T_ReceiverefDistributCourierUserID = '{$userid}' WHERE T_ReceiverefDistributCourierID = {$last_id} "; //echo $query; $savedetail = $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_receiverefdistributcourier SET T_ReceiverefDistributCourierIsActive = 'N', T_ReceiverefDistributCourierUserID = '{$userid}' WHERE T_ReceiverefDistributCourierID = {$prm['trx_id']} "; //echo $query; $saveheader = $this->db_onedev->query($query); $last_id = $prm['trx_id']; $query ="UPDATE t_receiverefdistributcourierdetail SET T_ReceiverefDistributCourierDetailIsActive = 'N', T_ReceiverefDistributCourierDetailUserID = '{$userid}' WHERE T_ReceiverefDistributCourierDetailT_ReceiverefDistributCourierID = {$prm['trx_id']} "; //echo $query; $savedetail = $this->db_onedev->query($query); $result = array( "total" => 1 , "records" => array('status'=>'OK'), "numbering" => $prm['trx_numbering'], "id" => $prm['trx_id'] ); $this->sys_ok($result); exit; } function doaction(){ 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_receiverefdistributcourier SET T_ReceiverefDistributCourierStatus = '{$prm['act']}', T_ReceiverefDistributCourierNote = '{$prm['trx_note']}', T_ReceiverefDistributCourierUserID = {$userid} WHERE T_ReceiverefDistributCourierID = {$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_ReceiverefDistributCourierDetailT_ReceiveReferenceHeaderID']}' AND G_ReceiveReferenceHeaderStatusLogM_StatusReferenceID = '5'"; $exist_id = $this->db_onedev->query($querystatus)->row()->exist; $queryheaderid = "SELECT T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceHeaderID as headerid FROM t_receiverefdistributcourierdetail LEFT JOIN t_receivereferencedelivery ON T_ReceiverefDistributCourierDetailT_ReceiveReferenceDeliveryID = T_ReceiveReferenceDeliveryID LEFT JOIN t_receivereferencedeliverydetail ON T_ReceiveReferenceDeliveryID = T_ReceiveReferenceDeliveryDetailT_ReceiveReferenceDeliveryID"; $header_id = $this->db_onedev->query($queryheaderid)->row()->headerid; 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(), '{$header_id}', '6', '{$userid}', '{$userid}', NOW(), NOW() )"; //echo $querylog; $insert_new_log = $this->db_onedev->query($querylog); } } } if($prm['act'] === 'RCVLAB' ){ $sql = "UPDATE t_receiverefdistributcourier SET T_ReceiverefDistributCourierStatus = '{$prm['act']}', T_ReceiverefDistributCourierNote = '{$prm['trx_note']}', T_ReceiverefDistributCourierUserID = {$userid} WHERE T_ReceiverefDistributCourierID = {$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_ReceiverefDistributCourierDetailT_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_ReceiverefDistributCourierDetailT_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_receiverefdistributcourierdetail SET T_ReceiverefDistributCourierDetailFlagReceiveImage = '{$v['flag_image_receive']}', T_ReceiverefDistributCourierDetailFlagReceiveResult = '{$v['flag_result_receive']}', T_ReceiverefDistributCourierDetailUserID = '{$userid}' WHERE T_ReceiverefDistributCourierDetailID = {$v['idx']} "; //echo $query; $savedetail = $this->db_onedev->query($query); } $status = 'DONE'; if($count_n > 0){ $status = 'PARTDONE'; } $sql = "UPDATE t_receiverefdistributcourier SET T_ReceiverefDistributCourierStatus = '{$status}', T_ReceiverefDistributCourierNote = '{$prm['trx_note']}', T_ReceiverefDistributCourierUserID = {$userid} WHERE T_ReceiverefDistributCourierID = {$prm['trx']['trx_id']} "; $this->db_onedev->query($sql); } if($prm['act'] == 'FORCEDONE'){ $sql = "UPDATE t_receiverefdistributcourier SET T_ReceiverefDistributCourierNote = '{$prm['trx_note']}', T_ReceiverefDistributCourierStatus = 'DONE', T_ReceiverefDistributCourierUserID = {$userid} WHERE T_ReceiverefDistributCourierID = {$prm['trx']['trx_id']} "; $this->db_onedev->query($sql); } $result = array( "total" => 1 , "records" => array('status'=>'OK') ); $this->sys_ok($result); exit; } }