db_onedev = $this->load->database("onedev", true); } public function add_notes($orderid){ $sql = " SELECT F_PaymentT_OrderHeaderID as note_order_id, F_PaymentID as note_id, F_PaymentDate as note_date, F_PaymentNumber as note_number, GROUP_CONCAT(M_PaymentTypeName separator ' , ') as paymenttypes_name, SUM(F_PaymentDetailAmount) as note_amount, M_UserUsername as note_user, F_PaymentDetailIsActive as note_active FROM f_payment JOIN f_paymentdetail ON F_PaymentDetailF_PaymentID = F_PaymentID JOIN m_paymenttype ON F_PaymentDetailM_PaymentTypeID = M_PaymentTypeID LEFT JOIN m_user ON F_PaymentDetailUserID = M_UserID WHERE F_PaymentT_OrderHeaderID = {$orderid} GROUP BY F_PaymentID"; $query = $this->db_onedev->query($sql); if ($query) { $rows = $query->result_array(); return $rows; } else { $this->sys_error_db("get notes", $this->db_onedev); exit; } } public function search() { //# cek token valid if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $startdate = $prm['startdate']; $enddate = $prm['enddate'] ; $search = $prm["search"]; $status = $prm["status"]; $number_limit = 10; $number_offset = ($prm['current_page'] - 1) * $number_limit ; $where = " ( DATE(T_OrderHeaderDate) BETWEEN '{$startdate}' AND '{$enddate}') AND "; if($search != ''){ $where = "( M_PatientName LIKE '%{$search}%' OR T_OrderHeaderLabNumber LIKE '%{$search}%' OR T_OrderHeaderAddOnLabNumberOrigin LIKE '%{$search}%' ) AND "; } $sql = " SELECT count(*) as total FROM ( SELECT T_OrderHeaderID FROM t_orderheader join t_orderheaderaddon ON T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN m_sex ON M_PatientM_SexID = M_SexID JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID JOIN itb_yankes.sys_config ON T_OrderHeaderM_MouID IN (SysConfigM_MouID) LEFT JOIN itb_yankes.order_map ON orderMapT_OrderHeaderID = T_OrderHeaderID AND orderMapIsActive = 'Y' LEFT JOIN itb_yankes.download_order ON orderMapDownloadOrderID = DownloadOrderID WHERE $where ( ('{$status}' = 'A' ) OR (DownloadOrderStatus = '{$status}') ) AND T_OrderHeaderIsActive = 'Y' GROUP BY T_OrderHeaderID ) x"; $query = $this->db_onedev->query($sql, $sql_param); //echo $this->db_onedev->last_query(); $tot_count = 0; $tot_page = 0; if ($query) { $tot_count = $query->result_array()[0]["total"]; $tot_page = ceil($tot_count/$number_limit); } else { $this->sys_error_db("t_samplestorage count", $this->db_onedev); exit; } $sql = "SELECT t_orderheader.*, M_PatientNoReg, DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i') as order_date, CONCAT(M_TitleName,'. ',M_PatientName,' ( DOB : ',M_PatientDOB,' ) ') as M_PatientName, CONCAT(M_TitleLangName,'. ',M_PatientName) as M_PatientName_eng, M_TitleName, M_CompanyName, M_MouName, M_PatientIDNumber as nik, IFNULL(DownloadOrderName,'') as order_patient_name_yankes, IFNULL(DownloadOrderNumber,'') as order_number_yankes, IFNULL(DownloadOrderDate,'') as order_date_yankes, IFNULL(DownloadOrderNIK,'') as order_nik_yankes, '' as progress_color, 0 as progress_value FROM t_orderheader join t_orderheaderaddon ON T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN m_sex ON M_PatientM_SexID = M_SexID JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID JOIN itb_yankes.sys_config ON T_OrderHeaderM_MouID IN (SysConfigM_MouID) LEFT JOIN itb_yankes.order_map ON orderMapT_OrderHeaderID = T_OrderHeaderID AND orderMapIsActive = 'Y' LEFT JOIN itb_yankes.download_order ON orderMapDownloadOrderID = DownloadOrderID WHERE $where ( ('{$status}' = 'A' ) OR (DownloadOrderStatus = '{$status}') ) AND T_OrderHeaderIsActive = 'Y' GROUP BY T_OrderHeaderID ORDER BY T_OrderHeaderID ASC limit $number_limit offset $number_offset"; //echo $sql; $query = $this->db_onedev->query($sql, $sql_param); $rows = $query->result_array(); if($rows){ foreach($rows as $k => $v){ //$rows[$k]['notes'] = $this->add_notes($v['T_OrderHeaderID']); $vals = 0; $vers = 0; $progress_color = ''; $progress_value = 0; $sql = "SELECT * FROM t_orderdetail WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailT_TestIsResult = 'Y' AND T_OrderDetailIsActive = 'Y'"; $query = $this->db_onedev->query($sql, $v['T_OrderHeaderID']); $details = $query->result_array(); //print_r($details); foreach ($details as $key => $value) { if($value['T_OrderDetailVerification'] == 'Y') $vers = $vers + 1; if($value['T_OrderDetailValidation'] == 'Y') $vals = $vals + 1; } if($vers > 0 && $vals == 0){ $progress_color = 'warning'; $progress_value = ($vers/count($details)) * 100; } if($vals > 0){ $progress_color = 'success'; $progress_value = ($vals/count($details)) * 100; //echo $progress_color; } $rows[$k]['progress_color'] = $progress_color; $rows[$k]['progress_value'] = round($progress_value); } } $result = array("total" => $tot_page, "records" => $rows, "sql"=> $this->db_onedev->last_query()); $this->sys_ok($result); exit; } function searchcompany(){ 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_company WHERE M_CompanyName like ? AND M_CompanyIsActive = '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_city count",$this->db_onedev); exit; } $rows = array('id'=>0,'name'=>'Semua'); $sql = " SELECT M_CompanyID as id, M_CompanyName as name FROM m_company WHERE M_CompanyName like ? AND M_CompanyIsActive = 'Y' ORDER BY M_CompanyName DESC "; $query = $this->db_onedev->query($sql, array($q['search'])); if ($query) { $rows = $query->result_array(); array_push($rows,array('id'=>0,'name'=>'Semua')); //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_company rows",$this->db_onedev); exit; } } }