Files
BE_CPONE/application/controllers/v1/preorder/home-service/Order.php
2026-04-27 10:26:26 +07:00

1653 lines
51 KiB
PHP

<?php
class Order extends MY_Controller
{
var $db_onedev;
public function index()
{
echo "Patient API";
/*
truncate preorder_header;
truncate preorder_delivery;
truncate preorder_test;
truncate preorder_sample;
*/
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
}
function add_test($orderid){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$query =" SELECT one_preorder_dev.preorder_test.*, one.t_test.*,one_lis_dev.t_price.*, 'Y' as editable, PreOrder_TestID as xid,
T_PriceAmount - ((T_PriceDisc/100) * T_PriceAmount) - T_PriceDiscRp as total
FROM one_preorder_dev.preorder_test
JOIN one.t_test ON PreOrder_TestT_TestID = T_TestID
JOIN one.t_price ON T_PriceT_TestID = T_TestID AND T_PriceIsCito = 'N'
JOIN one_preorder_dev.conf_system ON Conf_SystemIsActive = 'Y' AND Conf_SystemMOUID = T_PriceM_MouID
WHERE
PreOrder_TestPreOrder_HeaderID = {$orderid} AND PreOrder_TestIsActive = 'Y'
";
//echo $query;
$rows = $this->db_onedev->query($query)->result_array();
if(!$rows)
$rows = array();
return $rows;
}
function add_deliveries($orderid){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$query =" SELECT *
FROM one_preorder_dev.preorder_delivery
LEFT JOIN one.m_delivery ON PreOrder_DeliveryM_DeliveryID = M_DeliveryID
LEFT JOIN one.m_deliverytype ON PreOrder_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN one.m_kelurahan ON PreOrder_DeliveryM_KelurahanID = M_KelurahanID
WHERE
PreOrder_DeliveryPreOrder_HeaderID = {$orderid} AND PreOrder_DeliveryIsActive = 'Y'
";
//echo $query;
$rows = $this->db_onedev->query($query)->result_array();
if(!$rows)
$rows = array();
return $rows;
}
function add_address($patientid){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$query =" SELECT *
FROM one.m_patientaddress
WHERE
M_PatientAddressM_PatientID = {$patientid} AND M_PatientAddressIsActive = 'Y'
";
//echo $query;
$rows = $this->db_onedev->query($query)->result_array();
if(!$rows)
$rows = array();
return $rows;
}
function add_doctor_address($doctorid){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$query =" SELECT *
FROM one.m_doctoraddress
WHERE
M_DoctorAddressM_DoctorID = {$doctorid} AND M_DoctorAddressIsActive = 'Y'
";
//echo $query;
$rows = $this->db_onedev->query($query)->result_array();
if(!$rows)
$rows = array();
return $rows;
}
public function search()
{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$fdate = date('Y-m-d',strtotime($prm["fdate"]));
$fstatus = $prm["fstatus"];
$ftype = $prm["ftype"];
$sql = " SELECT count(*) as total
FROM one_preorder_dev.preorder_header
JOIN one.m_patient ON PreOrder_HeaderM_PatientID = M_PatientID
LEFT JOIN one.m_patientaddress ON PreOrder_HeaderM_PatientAdrressID = M_PatientAddressID
JOIN one_preorder_dev.m_preordertype ON PreOrder_HeaderM_PreOrderTypeID = M_PreOrderTypeID
JOIN one_preorder_dev.m_preorderstatus ON PreOrder_HeaderM_PreOrderStatusID = M_PreOrderStatusID
LEFT JOIN one.m_kelurahan ON PreOrder_HeaderM_KelurahanID = M_KelurahanID
LEFT JOIN one_preorder_dev.m_preorderareadetail ON M_PreOrderAreaIDM_KelurahanID = PreOrder_HeaderM_KelurahanID
LEFT JOIN one_preorder_dev.m_preorderarea ON M_PrdeOrderAreaDetailM_PreOrderAreaID = M_PreOrderAreaID
LEFT JOIN one.m_staff ON PreOrder_HeaderM_StaffID = M_StaffID
LEFT JOIN one.m_doctor ON PreOrder_HeaderM_DoctorID = M_DoctorID
WHERE
PreOrder_HeaderDate = '{$fdate}' AND PreOrder_HeaderM_PreOrderStatusID = {$fstatus} AND PreOrder_HeaderM_PreOrderTypeID = {$ftype} AND PreOrder_HeaderIsActive = 'Y'";
$query = $this->db_onedev->query($sql);
//echo $sql;
$tot_count = 0;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
} else {
$this->sys_error_db("m_patient count", $this->db_onedev);
exit;
}
$sql =" SELECT
one_preorder_dev.preorder_header.*,
one.m_patient.*,
one.m_patientaddress.*,
one.m_kelurahan.*,
one_preorder_dev.m_preorderarea.*,
one.m_staff.*,
one_preorder_dev.m_preordertype.*,
one_preorder_dev.m_preorderstatus.*,
'xxx' as tests,
one.m_doctor.*,
'xxx' as deliveries,
'N' as show_detail,
IFNULL(Preorder_SampleID,0) as supplies_trx_id
FROM one_preorder_dev.preorder_header
JOIN one.m_patient ON PreOrder_HeaderM_PatientID = M_PatientID
JOIN one.m_patientaddress ON PreOrder_HeaderM_PatientAdrressID = M_PatientAddressID
JOIN one_preorder_dev.m_preordertype ON PreOrder_HeaderM_PreOrderTypeID = M_PreOrderTypeID
JOIN one_preorder_dev.m_preorderstatus ON PreOrder_HeaderM_PreOrderStatusID = M_PreOrderStatusID
LEFT JOIN one.m_kelurahan ON PreOrder_HeaderM_KelurahanID = M_KelurahanID
LEFT JOIN one_preorder_dev.m_preorderareadetail ON M_PreOrderAreaIDM_KelurahanID = PreOrder_HeaderM_KelurahanID
LEFT JOIN one_preorder_dev.m_preorderarea ON M_PrdeOrderAreaDetailM_PreOrderAreaID = M_PreOrderAreaID
LEFT JOIN one.m_staff ON PreOrder_HeaderM_StaffID = M_StaffID
LEFT JOIN one.m_doctor ON PreOrder_HeaderM_DoctorID = M_DoctorID
LEFT JOIN one_preorder_dev.preorder_sample ON Preorder_SamplePreOrder_HeaderID = PreOrder_HeaderID
WHERE
PreOrder_HeaderDate = '{$fdate}' AND PreOrder_HeaderM_PreOrderStatusID = {$fstatus} AND PreOrder_HeaderM_PreOrderTypeID = {$ftype} AND PreOrder_HeaderIsActive = 'Y'
limit 0,20";
$query = $this->db_onedev->query($sql);
//echo $sql;
$rows = $query->result_array();
//print_r($rows);
if($rows){
foreach($rows as $k => $v){
$rows[$k]['tests'] = $this->add_test($v['PreOrder_HeaderID']);
$rows[$k]['deliveries'] = $this->add_deliveries($v['PreOrder_HeaderID']);
$rows[$k]['PreOrder_HeaderTime'] = date('H:i',strtotime($v['PreOrder_HeaderTime']));
$rows[$k]['PreOrder_HeaderDate'] = date('Y-m-d',strtotime($v['PreOrder_HeaderDate']));
$rows[$k]['address'] = $this->add_address($v['PreOrder_HeaderM_PatientID']);
$rows[$k]['doctoraddress'] = $this->add_doctor_address($v['PreOrder_HeaderM_DoctorID']);
}
}
$result = array("total" => $tot_count, "records" => $rows, "sql"=> $this->db_onedev->last_query());
$this->sys_ok($result);
exit;
}
public function search_ready()
{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$fdate = date('Y-m-d',strtotime($prm["fdate"]));
$fstatus = $prm["fstatus"];
$ftype = $prm["ftype"];
$sql = " SELECT count(*) as total
FROM one_preorder_dev.preorder_header
JOIN one.m_patient ON PreOrder_HeaderM_PatientID = M_PatientID
LEFT JOIN one.m_patientaddress ON PreOrder_HeaderM_PatientAdrressID = M_PatientAddressID
JOIN one_preorder_dev.m_preordertype ON PreOrder_HeaderM_PreOrderTypeID = M_PreOrderTypeID
JOIN one_preorder_dev.m_preorderstatus ON PreOrder_HeaderM_PreOrderStatusID = M_PreOrderStatusID
LEFT JOIN one.m_kelurahan ON PreOrder_HeaderM_KelurahanID = M_KelurahanID
LEFT JOIN one_preorder_dev.m_preorderareadetail ON M_PreOrderAreaIDM_KelurahanID = PreOrder_HeaderM_KelurahanID
LEFT JOIN one_preorder_dev.m_preorderarea ON M_PrdeOrderAreaDetailM_PreOrderAreaID = M_PreOrderAreaID
LEFT JOIN one.m_staff ON PreOrder_HeaderM_StaffID = M_StaffID
LEFT JOIN one.m_doctor ON PreOrder_HeaderM_DoctorID = M_DoctorID
WHERE
PreOrder_HeaderDate = '{$fdate}' AND PreOrder_HeaderM_PreOrderStatusID = 2 AND PreOrder_HeaderDownloadedMobile = '{$fstatus}' AND PreOrder_HeaderM_PreOrderTypeID = {$ftype} AND PreOrder_HeaderIsActive = 'Y'";
$query = $this->db_onedev->query($sql);
//echo $sql;
$tot_count = 0;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
} else {
$this->sys_error_db("m_patient count", $this->db_onedev);
exit;
}
$sql =" SELECT
one_preorder_dev.preorder_header.*,
one.m_patient.*,
one.m_patientaddress.*,
one.m_kelurahan.*,
one_preorder_dev.m_preorderarea.*,
one.m_staff.*,
one_preorder_dev.m_preordertype.*,
one_preorder_dev.m_preorderstatus.*,
'xxx' as tests,
one.m_doctor.*,
'xxx' as deliveries,
'N' as show_detail
FROM one_preorder_dev.preorder_header
JOIN one.m_patient ON PreOrder_HeaderM_PatientID = M_PatientID
JOIN one.m_patientaddress ON PreOrder_HeaderM_PatientAdrressID = M_PatientAddressID
JOIN one_preorder_dev.m_preordertype ON PreOrder_HeaderM_PreOrderTypeID = M_PreOrderTypeID
JOIN one_preorder_dev.m_preorderstatus ON PreOrder_HeaderM_PreOrderStatusID = M_PreOrderStatusID
LEFT JOIN one.m_kelurahan ON PreOrder_HeaderM_KelurahanID = M_KelurahanID
LEFT JOIN one_preorder_dev.m_preorderareadetail ON M_PreOrderAreaIDM_KelurahanID = PreOrder_HeaderM_KelurahanID
LEFT JOIN one_preorder_dev.m_preorderarea ON M_PrdeOrderAreaDetailM_PreOrderAreaID = M_PreOrderAreaID
LEFT JOIN one.m_staff ON PreOrder_HeaderM_StaffID = M_StaffID
LEFT JOIN one.m_doctor ON PreOrder_HeaderM_DoctorID = M_DoctorID
WHERE
PreOrder_HeaderDate = '{$fdate}' AND PreOrder_HeaderM_PreOrderStatusID = 2 AND PreOrder_HeaderDownloadedMobile = '{$fstatus}' AND PreOrder_HeaderM_PreOrderTypeID = {$ftype} AND PreOrder_HeaderIsActive = 'Y'
limit 0,20";
$query = $this->db_onedev->query($sql);
//echo $sql;
$rows = $query->result_array();
//print_r($rows);
if($rows){
foreach($rows as $k => $v){
$rows[$k]['tests'] = $this->add_test($v['PreOrder_HeaderID']);
$rows[$k]['deliveries'] = $this->add_deliveries($v['PreOrder_HeaderID']);
$rows[$k]['PreOrder_HeaderTime'] = date('H:i',strtotime($v['PreOrder_HeaderTime']));
$rows[$k]['PreOrder_HeaderDate'] = date('Y-m-d',strtotime($v['PreOrder_HeaderDate']));
$rows[$k]['address'] = $this->add_address($v['PreOrder_HeaderM_PatientID']);
}
}
$result = array("total" => $tot_count, "records" => $rows, "sql"=> $this->db_onedev->last_query());
$this->sys_ok($result);
exit;
}
public function search_outbox()
{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$fdate = date('Y-m-d',strtotime($prm["fdate"]));
$fstatus = $prm["fstatus"];
$ftype = $prm["ftype"];
$sql = " SELECT count(*) as total
FROM one_gateway.outbox
JOIN one_preorder_dev.preorder_header ON outboxRefID = PreOrder_HeaderID
JOIN one.m_patient ON PreOrder_HeaderM_PatientID = M_PatientID
JOIN one_gateway.type ON outboxTypeID = typeID
LEFT JOIN one.m_staff ON PreOrder_HeaderM_StaffID = M_StaffID
WHERE
outboxTag = 'HomeService' AND PreOrder_HeaderDate = '{$fdate}' AND ( '{$fstatus}' = 'ALL' OR '{$fstatus}' <> 'ALL' AND outboxIsSent = '{$fstatus}' ) AND outboxTypeID = {$ftype} AND outboxIsActive = 'Y'";
$query = $this->db_onedev->query($sql);
//echo $sql;
$tot_count = 0;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
} else {
$this->sys_error_db("m_patient count", $this->db_onedev);
exit;
}
$sql =" SELECT one_gateway.outbox.*,
one_preorder_dev.preorder_header.*,
one.m_patient.*,
one.m_staff.*,
one_gateway.type.*
FROM one_gateway.outbox
JOIN one_preorder_dev.preorder_header ON outboxRefID = PreOrder_HeaderID
JOIN one.m_patient ON PreOrder_HeaderM_PatientID = M_PatientID
JOIN one_gateway.type ON outboxTypeID = typeID
LEFT JOIN one.m_staff ON PreOrder_HeaderM_StaffID = M_StaffID
WHERE
outboxTag = 'HomeService' AND PreOrder_HeaderDate = '{$fdate}' AND ( '{$fstatus}' = 'ALL' OR '{$fstatus}' <> 'ALL' AND outboxIsSent = '{$fstatus}' ) AND outboxTypeID = {$ftype} AND outboxIsActive = 'Y'
limit 0,20";
$query = $this->db_onedev->query($sql);
//echo $sql;
$rows = $query->result_array();
$result = array("total" => $tot_count, "records" => $rows, "sql"=> $this->db_onedev->last_query());
$this->sys_ok($result);
exit;
}
public function lookup_staff(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$fdate = date('Y-m-d',strtotime($prm["fdate"]));
$fstatus = $prm["fstatus"];
$query = " SELECT M_StaffID,M_StaffName,
'xxx' as times,
'xxx' as areas
FROM one_preorder_dev.preorder_header
JOIN one.m_staff ON PreOrder_HeaderM_StaffID = M_StaffID
WHERE
PreOrder_HeaderDate = '{$fdate}' AND
PreOrder_HeaderM_PreOrderStatusID = '{$fstatus}' AND
PreOrder_HeaderIsActive = 'Y'
GROUP BY PreOrder_HeaderM_StaffID";
//echo $query;
$rows = $this->db_onedev->query($query)->result_array();
if($rows){
foreach($rows as $k => $v){
$rows[$k]['times'] = $this->add_times($v['M_StaffID'],$fdate,$fstatus);
$rows[$k]['areas'] = $this->add_areas($v['M_StaffID'],$fdate,$fstatus);
}
}
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function add_times($staffid,$fdate,$fstatus){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$query =" SELECT PreOrder_HeaderTime as xtime
FROM one_preorder_dev.preorder_header
JOIN one.m_staff ON PreOrder_HeaderM_StaffID = M_StaffID AND PreOrder_HeaderM_StaffID = {$staffid}
WHERE
PreOrder_HeaderDate = '{$fdate}' AND
PreOrder_HeaderM_PreOrderStatusID = '{$fstatus}' AND
PreOrder_HeaderIsActive = 'Y'
";
//echo $query;
$rows = $this->db_onedev->query($query)->result_array();
if(!$rows)
$rows = array();
else
foreach($rows as $k => $v){
$rows[$k]['xtime'] = date('H:i',strtotime($v['xtime']));
}
return $rows;
}
function add_areas($staffid,$fdate,$fstatus){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$query =" SELECT M_PreOrderAreaName as xarea
FROM one_preorder_dev.preorder_header
JOIN one.m_staff ON PreOrder_HeaderM_StaffID = M_StaffID AND PreOrder_HeaderM_StaffID = {$staffid}
JOIN one_preorder_dev.m_preorderareadetail ON M_PreOrderAreaIDM_KelurahanID = PreOrder_HeaderM_KelurahanID
JOIN one_preorder_dev.m_preorderarea ON M_PrdeOrderAreaDetailM_PreOrderAreaID = M_PreOrderAreaID
WHERE
PreOrder_HeaderDate = '{$fdate}' AND
PreOrder_HeaderM_PreOrderStatusID = '{$fstatus}' AND
PreOrder_HeaderIsActive = 'Y'
GROUP BY M_PreOrderAreaID
";
//echo $query;
$rows = $this->db_onedev->query($query)->result_array();
if(!$rows)
$rows = array();
return $rows;
}
function titsexreg(){
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$rows = [];
$query =" SELECT *
FROM m_title
WHERE
M_TitleIsActive = 'Y'
";
//echo $query;
$rows['titles'] = $this->db_onedev->query($query)->result_array();
$query =" SELECT *
FROM m_sex
WHERE
M_SexIsActive = 'Y'
";
//echo $query;
$rows['sexs'] = $this->db_onedev->query($query)->result_array();
$query =" SELECT *
FROM m_religion
WHERE
M_ReligionIsActive = 'Y'
";
//echo $query;
$rows['religions'] = $this->db_onedev->query($query)->result_array();
$query =" SELECT *
FROM one_preorder_dev.m_preordertype
WHERE
M_PreOrderTypeIsActive = 'Y'
";
//echo $query;
$rows['ordertypes'] = $this->db_onedev->query($query)->result_array();
$query =" SELECT M_StaffID,M_StaffName
FROM one_preorder_dev.m_staffhomeservice
JOIN one.m_staff ON M_StaffHomeServiceM_StaffID = M_StaffID
WHERE
M_StaffHomeServiceIsActive = 'Y'
";
//echo $query;
$rows['staffs'] = $this->db_onedev->query($query)->result_array();
$query =" SELECT *
FROM one.m_delivery
JOIN one.m_deliverytype ON M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_DeliveryIsActive = 'Y' AND M_DeliveryIsHomeService = 'Y'
";
//echo $query;
$rows['deliverytipes'] = $this->db_onedev->query($query)->result_array();
$query =" SELECT M_SamplingTimeID,TIME_FORMAT(M_SamplingTimeTime, '%H:%i') as M_SamplingTimeTime
FROM one_preorder_dev.m_samplingtime
WHERE
M_SamplingTimeIsActive = 'Y'
";
//echo $query;
$rows['times'] = $this->db_onedev->query($query)->result_array();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function searchcity(){
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_city
WHERE
M_CityName like ?
AND M_CityIsActive = '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;
}
$sql = "
SELECT *
FROM m_city
WHERE
M_CityName like ?
AND M_CityIsActive = 'Y'
ORDER BY M_CityName DESC
";
$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("m_city rows",$this->db_onedev);
exit;
}
}
function getdistrict(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" SELECT *
FROM m_district
WHERE
M_DistrictIsActive = 'Y' AND M_DistrictM_CityID = ?
";
//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 getkelurahan(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" SELECT *
FROM m_kelurahan
WHERE
M_KelurahanIsActive = 'Y' AND M_KelurahanM_DistrictID = ?
";
//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 savenewpatient(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query = "INSERT INTO m_patient (
M_PatientName,
M_PatientM_TitleID,
M_PatientM_SexID,
M_PatientM_ReligionID,
M_PatientDOB,
M_PatientHP,
M_PatientPhone,
M_PatientEmail,
M_PatientCreated,
M_PatientLastUpdated
)
VALUES(
?,?,?,?,?,?,?,?,now(),now()
)";
$insert_new_patient = $this->db_onedev->query($query,array(
$prm['patientname'],
$prm['titleid'],
$prm['sexid'],
$prm['religionid'],
date('Y-m-d',strtotime($prm['dob'])),
$prm['hp'],
$prm['phone'],
$prm['email']
));
if($insert_new_patient){
$patient_id = $this->db_onedev->insert_id();
$query = "INSERT INTO m_patientaddress (
M_PatientAddressM_PatientID,
M_PatientAddressNote,
M_PatientAddressDescription,
M_PatientAddressM_KelurahanID,
M_PatientAddressCreated,
M_PatientAddressLastUpdated
)
VALUE(
?,?,?,?,now(),now()
)";
$insert_new_address = $this->db_onedev->query($query,array(
$patient_id,
'utama',
$prm['address'],
$prm['kelurahanid']
));
$query = " SELECT *
FROM m_patient
JOIN m_patientaddress ON M_PatientAddressM_PatientID = M_PatientID AND M_PatientAddressIsActive = 'Y' AND M_PatientAddressNote = 'utama'
WHERE M_PatientID = ? LIMIT 1";
$rows = $this->db_onedev->query($query,array($patient_id))->result();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
else {
$this->sys_error_db("m_patient new",$this->db_onedev);
exit;
}
}
function getaddress(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" SELECT *
FROM m_patientaddress
WHERE M_PatientAddressM_PatientID = ? AND M_PatientAddressIsActive = 'Y'
";
//echo $query;
$rows = $this->db_onedev->query($query,array($prm['id']))->result_array();
$rows[] = array('M_PatientAddressID'=>'X','M_PatientAddressDescription'=>'Alamat Baru');
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function getdoctoraddress(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" SELECT *
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 searchpatient(){
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_patient
WHERE
M_PatientName like ?
AND M_PatientIsActive = '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_patient count",$this->db_onedev);
exit;
}
$sql = "
SELECT *
FROM m_patient
WHERE
M_PatientName like ?
AND M_PatientIsActive = 'Y'
ORDER BY M_PatientName 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("m_patient rows",$this->db_onedev);
exit;
}
}
function searchtest(){
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 one.t_test
JOIN one.t_price ON T_PriceT_TestID = T_TestID AND T_PriceIsCito = 'N'
JOIN one_preorder_dev.conf_system ON Conf_SystemIsActive = 'Y' AND Conf_SystemMOUID = T_PriceM_MouID
WHERE
T_TestName like ? AND
T_TestIsActive = 'Y'
ORDER BY T_TestName ASC";
$query = $this->db_onedev->query($sql,$q['search']);
//echo $query;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
}
else {
$this->sys_error_db("test count",$this->db_onedev);
exit;
}
$sql = "
SELECT 'Y' as editable, 0 as xid, T_TestID, T_TestCode, T_TestName, T_PriceAmount, T_PriceDisc, T_PriceDiscRp, T_PriceAmount - ((T_PriceDisc/100) * T_PriceAmount) - T_PriceDiscRp as total
FROM one.t_test
JOIN one.t_price ON T_PriceT_TestID = T_TestID AND T_PriceIsCito = 'N'
JOIN one_preorder_dev.conf_system ON Conf_SystemIsActive = 'Y' AND Conf_SystemMOUID = T_PriceM_MouID
WHERE
T_TestName like ? AND
T_TestIsActive = 'Y'
ORDER BY T_TestName 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("test rows",$this->db_onedev);
exit;
}
}
function searchdoctor(){
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 *
FROM m_doctor
WHERE
M_DoctorName like ?
AND M_DoctorIsActive = 'Y'
ORDER BY M_DoctorName 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("m_doctor rows",$this->db_onedev);
exit;
}
}
function saveorder(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$dateorder = $prm['orderdate'];
$timeorder = $prm['ordertime'];
$userid = $this->sys_user["M_UserID"];
if($prm['orderaddress'] === 'X'){
$sql = "INSERT INTO m_patientaddress (
M_PatientAddressM_PatientID,
M_PatientAddressNote,
M_PatientAddressDescription,
M_PatientAddressM_KelurahanID,
M_PatientAddressCreated,
M_PatientAddressLastUpdated
)
VALUES(
{$prm['orderpatient']},
'Lainnya',
'{$prm['newaddress']}',
'{$prm['newkelurahan']['M_KelurahanID']}',
NOW(),
NOW()
)";
$this->db_onedev->query($sql);
$prm['orderaddress'] = $this->db_onedev->insert_id();
$prm['orderdeliveryaddressid'] = $prm['orderaddress'];
$prm['orderdeliverykelurahan'] = $prm['newkelurahan']['M_KelurahanID'];
$prm['orderkelurahan'] = $prm['newkelurahan']['M_KelurahanID'];
$prm['orderdeliverydestination'] = $prm['newaddress'];
}
$number_trx = $this->db_onedev->query("SELECT one_preorder_dev.fn_numbering('HS') as numx")->row()->numx;
$query = "INSERT INTO one_preorder_dev.preorder_header (
PreOrder_HeaderNumbering,
PreOrder_HeaderM_PatientID,
PreOrder_HeaderM_PatientAdrressID,
PreOrder_HeaderDate,
PreOrder_HeaderTime,
PreOrder_HeaderM_PreOrderStatusID,
PreOrder_HeaderM_KelurahanID,
PreOrder_HeaderM_PreOrderTypeID,
PreOrder_HeaderPhone,
PreOrder_HeaderM_StaffID,
PreOrder_HeaderM_DoctorID,
PreOrder_HeaderM_DoctorAddressID,
PreOrder_HeaderUserID,
PreOrder_HeaderCreated,
PreOrder_HeaderLastUpdated
)
VALUES(
?,?,?,?,?,?,?,?,?,?,?,?,?,now(),now()
)";
$insert_new_order = $this->db_onedev->query($query,array(
$number_trx,
$prm['orderpatient'],
$prm['orderaddress'],
date('Y-m-d',strtotime($dateorder)),
date('H:i:s',strtotime($timeorder)),
1,
$prm['orderkelurahan'],
$prm['ordertype'],
$prm['orderphone'],
isset($prm['orderstaff'])?$prm['orderstaff']:0,
isset($prm['orderdoctor'])?$prm['orderdoctor']:0,
isset($prm['orderdoctoraddress'])?$prm['orderdoctoraddress']:0,
$userid
));
if($insert_new_order){
$order_id = $this->db_onedev->insert_id();
foreach($prm['ordertests'] as $k=>$v){
$query = "INSERT INTO one_preorder_dev.preorder_test (
PreOrder_TestPreOrder_HeaderID,
PreOrder_TestT_TestID,
PreOrder_TestT_TestCode,
PreOrder_TestT_TestName,
PreOrder_TestPrice,
PreOrder_TestDisc,
PreOrder_TestDiscRp,
PreOrder_TestTotal,
PreOrder_TestUserID,
PreOrder_TestCreated,
PreOrder_TestLastUpdated
)
VALUE(
?,?,?,?,?,?,?,?,?,now(),now()
)";
$insert_new_test = $this->db_onedev->query($query,array(
$order_id,
$v['T_TestID'],
$v['T_TestCode'],
$v['T_TestName'],
$v['T_PriceAmount'],
$v['T_PriceDisc'],
$v['T_PriceDiscRp'],
$v['total'],
$userid
));
}
if(isset($prm['orderdeliverydeliveryid'])){
$query = "INSERT INTO one_preorder_dev.preorder_delivery (
PreOrder_DeliveryPreOrder_HeaderID,
PreOrder_DeliveryM_DeliveryID,
PreOrder_DeliveryM_DeliveryTypeID,
PreOrder_DeliveryDestination,
PreOrder_DeliveryM_KelurahanID,
PreOrder_DeliveryAddressID,
PreOrder_DeliveryUserID,
PreOrder_DeliveryCreated,
PreOrder_DeliveryLastUpdated
)
VALUE(
?,?,?,?,?,?,?,now(),now()
)";
$insert_new_delivery = $this->db_onedev->query($query,array(
$order_id,
$prm['orderdeliverydeliveryid'],
$prm['orderdeliverydeliverytype'],
$prm['orderdeliverydestination'],
$prm['orderdeliverykelurahan'],
$prm['orderdeliveryaddressid'],
$userid
));
}
$sql = "SELECT T_TestT_SampleTypeID, PreOrder_HeaderNumbering, PreOrder_HeaderID
FROM one_preorder_dev.preorder_header
JOIN one_preorder_dev.preorder_test ON PreOrder_TestPreOrder_HeaderID = PreOrder_HeaderID AND PreOrder_TestIsActive = 'Y'
JOIN t_test ON PreOrder_TestT_TestID = T_TestID
WHERE PreOrder_HeaderID = {$order_id}
GROUP BY T_TestT_SampleTypeID ";
$sampletypes = $this->db_onedev->query($sql)->result_array();
foreach($sampletypes as $k => $v){
$barcode = $v['PreOrder_HeaderNumbering'].'.'.$v['T_TestT_SampleTypeID'];
$sql = "INSERT INTO one_preorder_dev.preorder_sample (
Preorder_SamplePreOrder_HeaderID,
Preorder_SampleT_SampleTypeID,
Preorder_SampleBarcode,
Preorder_SampleUserID,
Preorder_SampleCreate,
Preorder_SampleLastUpdated
)
VALUES(
{$v['PreOrder_HeaderID']},
{$v['T_TestT_SampleTypeID']},
'{$barcode}',
{$userid},
NOW(),
NOW()
)";
$this->db_onedev->query($sql);
//echo $sql;
}
//echo $this->db_onedev->last_query();
$query = " SELECT PreOrder_HeaderNumbering as numberx
FROM one_preorder_dev.preorder_header
WHERE PreOrder_HeaderID = ? LIMIT 1";
$rows = $this->db_onedev->query($query,array($order_id))->result();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
else {
$this->sys_error_db("order new",$this->db_onedev);
exit;
}
}
function updateorder(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$order_id = $prm['orderid'];
if($prm['orderaddress'] === 'X'){
$sql = "INSERT INTO m_patientaddress (
M_PatientAddressM_PatientID,
M_PatientAddressNote,
M_PatientAddressDescription,
M_PatientAddressM_KelurahanID,
M_PatientAddressCreated,
M_PatientAddressLastUpdated
)
VALUES(
{$prm['orderpatient']},
'Lainnya',
'{$prm['newaddress']}',
'{$prm['newkelurahan']}',
NOW(),
NOW()
)";
$this->db_onedev->query($sql);
$prm['orderaddress'] = $this->db_onedev->last_id();
$prm['orderdeliveryaddressid'] = $prm['orderaddress'];
$prm['orderdeliverykelurahan'] = $prm['newkelurahan'];
$prm['orderdeliverydestination'] = $prm['newaddress'];
}
$dateorder = $prm['orderdate'];
$timeorder = $prm['ordertime'];
$userid = $this->sys_user["M_UserID"];
$query = "UPDATE one_preorder_dev.preorder_header SET
PreOrder_HeaderM_PatientID = ?,
PreOrder_HeaderM_PatientAdrressID = ?,
PreOrder_HeaderDate = ?,
PreOrder_HeaderTime = ?,
PreOrder_HeaderM_KelurahanID = ?,
PreOrder_HeaderM_PreOrderTypeID = ?,
PreOrder_HeaderPhone = ?,
PreOrder_HeaderM_StaffID = ?,
PreOrder_HeaderM_DoctorID = ?,
PreOrder_HeaderM_DoctorAddressID = ?,
PreOrder_HeaderUserID = ?,
PreOrder_HeaderLastUpdated = now()
WHERE
PreOrder_HeaderID = ?
";
$update_order = $this->db_onedev->query($query,array(
$prm['orderpatient'],
$prm['orderaddress'],
date('Y-m-d',strtotime($dateorder)),
date('H:i:s',strtotime($timeorder)),
$prm['orderkelurahan'],
$prm['ordertype'],
$prm['orderphone'],
isset($prm['orderstaff'])?$prm['orderstaff']:0,
isset($prm['orderdoctor'])?$prm['orderdoctor']:0,
isset($prm['orderdoctoraddress'])?$prm['orderdoctoraddress']:0,
$userid,
$prm['orderid']
));
//echo $this->db_onedev->last_query();
if($update_order){
foreach($prm['ordertests'] as $k=>$v){
if($v['xid'] == 0 || $v['xid'] == '0'){
$query = "INSERT INTO one_preorder_dev.preorder_test (
PreOrder_TestPreOrder_HeaderID,
PreOrder_TestT_TestID,
PreOrder_TestT_TestCode,
PreOrder_TestT_TestName,
PreOrder_TestPrice,
PreOrder_TestDisc,
PreOrder_TestDiscRp,
PreOrder_TestTotal,
PreOrder_TestUserID,
PreOrder_TestCreated,
PreOrder_TestLastUpdated
)
VALUE(
?,?,?,?,?,?,?,?,?,now(),now()
)";
$insert_new_test = $this->db_onedev->query($query,array(
$order_id,
$v['T_TestID'],
$v['T_TestCode'],
$v['T_TestName'],
$v['T_PriceAmount'],
$v['T_PriceDisc'],
$v['T_PriceDiscRp'],
$v['total'],
$userid
));
}
}
if(isset($prm['deleted_ordertests'])){
foreach($prm['deleted_ordertests'] as $i=>$del){
$query = "UPDATE one_preorder_dev.preorder_test SET
PreOrder_TestIsActive = 'N',
PreOrder_TestUserID = '{$userid}',
PreOrder_TestLastUpdated = now()
WHERE
PreOrder_TestID = ?
";
$delete_exist_test = $this->db_onedev->query($query,array($del['xid']));
}
}
if(isset($prm['orderdeliverydeliveryid'])){
$last_delivery = $this->db_onedev->query(" SELECT
COUNT(*) as cexist, PreOrder_DeliveryID
FROM one_preorder_dev.preorder_delivery
WHERE
PreOrder_DeliveryPreOrder_HeaderID = {$order_id} AND
PreOrder_DeliveryIsActive = 'Y' LIMIT 1")->row();
if($last_delivery->cexist == 0){
$query = "INSERT INTO one_preorder_dev.preorder_delivery (
PreOrder_DeliveryPreOrder_HeaderID,
PreOrder_DeliveryM_DeliveryID,
PreOrder_DeliveryM_DeliveryTypeID,
PreOrder_DeliveryDestination,
PreOrder_DeliveryM_KelurahanID,
PreOrder_DeliveryAddressID,
PreOrder_DeliveryUserID,
PreOrder_DeliveryCreated,
PreOrder_DeliveryLastUpdated
)
VALUE(
?,?,?,?,?,?,?,now(),now()
)";
$insert_new_delivery = $this->db_onedev->query($query,array(
$order_id,
$prm['orderdeliverydeliveryid'],
$prm['orderdeliverydeliverytype'],
$prm['orderdeliverydestination'],
$prm['orderdeliverykelurahan'],
$prm['orderdeliveryaddressid'],
$userid
));
}else{
$query = "UPDATE one_preorder_dev.preorder_delivery SET
PreOrder_DeliveryM_DeliveryID = ?,
PreOrder_DeliveryM_DeliveryTypeID = ?,
PreOrder_DeliveryDestination = ?,
PreOrder_DeliveryM_KelurahanID = ?,
PreOrder_DeliveryAddressID = ?,
PreOrder_DeliveryUserID = ?,
PreOrder_DeliveryLastUpdated = now()
WHERE
PreOrder_DeliveryID = ?
";
$update_exist_delivery = $this->db_onedev->query($query,array(
$prm['orderdeliverydeliveryid'],
$prm['orderdeliverydeliverytype'],
$prm['orderdeliverydestination'],
$prm['orderdeliverykelurahan'],
$prm['orderdeliveryaddressid'],
$userid,
$last_delivery->PreOrder_DeliveryID
));
}
//echo $this->db_onedev->last_query();
}
$sql = "UPDATE one_preorder_dev.preorder_sample SET Preorder_SampleIsActive = 'N' WHERE Preorder_SamplePreOrder_HeaderID = {$order_id}";
$this->db_onedev->query($sql);
$sql = "SELECT T_TestT_SampleTypeID, PreOrder_HeaderNumbering, PreOrder_HeaderID, IFNULL(Preorder_SampleID,0) as idx
FROM one_preorder_dev.preorder_header
JOIN one_preorder_dev.preorder_test ON PreOrder_TestPreOrder_HeaderID = PreOrder_HeaderID AND PreOrder_TestIsActive = 'Y'
JOIN t_test ON PreOrder_TestT_TestID = T_TestID
LEFT JOIN one_preorder_dev.preorder_sample ON Preorder_SamplePreOrder_HeaderID = PreOrder_HeaderID AND T_TestT_SampleTypeID = Preorder_SampleT_SampleTypeID
WHERE PreOrder_HeaderID = {$order_id}
GROUP BY T_TestT_SampleTypeID ";
$sampletypes = $this->db_onedev->query($sql)->result_array();
foreach($sampletypes as $k => $v){
if($v['idx'] == 0 || $v['idx'] == '0'){
$barcode = $v['PreOrder_HeaderNumbering'].'.'.$v['T_TestT_SampleTypeID'];
$sql = "INSERT INTO one_preorder_dev.preorder_sample (
Preorder_SamplePreOrder_HeaderID,
Preorder_SampleT_SampleTypeID,
Preorder_SampleBarcode,
Preorder_SampleUserID,
Preorder_SampleCreate,
Preorder_SampleLastUpdated
)
VALUES(
{$v['PreOrder_HeaderID']},
{$v['T_TestT_SampleTypeID']},
'{$barcode}',
{$userid},
NOW(),
NOW()
)";
$this->db_onedev->query($sql);
//echo $sql;
}else{
$sql = "UPDATE one_preorder_dev.preorder_sample SET Preorder_SampleIsActive = 'Y' WHERE Preorder_SampleID = {$v['idx']}";
$this->db_onedev->query($sql);
}
}
//echo $this->db_onedev->last_query();
if($prm['act'] == 'update'){
$query = " SELECT PreOrder_HeaderNumbering as numberx
FROM one_preorder_dev.preorder_header
WHERE PreOrder_HeaderID = ? LIMIT 1";
$rows = $this->db_onedev->query($query,array($order_id))->result();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
else{
$this->do_orderlab($prm);
}
}
else {
$this->sys_error_db("order update",$this->db_onedev);
exit;
}
}
function do_confirm(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$order_id = $prm['orderid'];
$userid = $this->sys_user["M_UserID"];
$query = "UPDATE one_preorder_dev.preorder_header SET
PreOrder_HeaderM_PreOrderStatusID = 2,
PreOrder_HeaderUserID = '{$userid}',
PreOrder_HeaderLastUpdated = now()
WHERE
PreOrder_HeaderID = ?
";
$update_order = $this->db_onedev->query($query,array(
$prm['orderid']
));
//echo $this->db_onedev->last_query();
if($update_order){
$query = " SELECT PreOrder_HeaderNumbering as numberx
FROM one_preorder_dev.preorder_header
WHERE PreOrder_HeaderID = ? LIMIT 1";
$rows = $this->db_onedev->query($query,array($order_id))->result();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
else{
$this->sys_error_db("confirm update",$this->db_onedev);
exit;
}
}
function do_orderlab(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$order_id = $prm['orderid'];
$patientage = $prm['patientage'];
$userid = $this->sys_user["M_UserID"];
$sql = " SELECT *
FROM one_preorder_dev.preorder_header
LEFT JOIN one_preorder_dev.conf_system ON Conf_SystemIsActive = 'Y'
JOIN one.m_mou ON Conf_SystemMOUID = M_MouID
WHERE
PreOrder_HeaderID = '{$order_id}'";
//echo $query;
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("select preorder_header", $this->db_onedev);
exit;
}
$data_order = $query->row();
//print_r($data_order);
$query = "INSERT INTO one.t_orderheader (
T_OrderHeaderDate,
T_OrderHeaderM_PatientID,
T_OrderHeaderM_CompanyID,
T_OrderHeaderM_MouID,
T_OrderHeaderM_PatientAge,
T_OrderHeaderSenderM_DoctorID,
T_OrderHeaderSenderM_DoctorAddressID,
T_OrderHeaderCreated,
T_OrderHeaderUserID
)
VALUE(
NOW(),
?,
?,
?,
?,
?,
?,
NOW(),
?
)";
$new_order = $this->db_onedev->query($query,array(
$data_order->PreOrder_HeaderM_PatientID,
$data_order->M_MouM_CompanyID,
$data_order->Conf_SystemMOUID,
$patientage,
$data_order->PreOrder_HeaderM_DoctorID,
$data_order->PreOrder_HeaderM_DoctorAddressID,
$userid
));
//echo $this->db_onedev->last_query();
if($new_order){
$last_id = $this->db_onedev->insert_id();
$query = " SELECT *
FROM one_preorder_dev.preorder_test
JOIN one.t_test ON PreOrder_TestT_TestID = T_TestID
WHERE
PreOrder_TestPreOrder_HeaderID = '{$order_id}' AND PreOrder_TestIsActive = 'Y'";
$data_order_detail = $this->db_onedev->query($query)->result();
$header_total = 0;
foreach($data_order_detail as $k => $v){
$dsictot = ((floatval($v->PreOrder_TestDisc)/100) * intval($v->PreOrder_TestPrice)) + intval($v->PreOrder_TestDiscRp);
$total = intval($v->PreOrder_TestPrice) - $dsictot ;
$header_total = $header_total + $total;
$sql = "INSERT INTO t_orderdetail (
T_OrderDetailT_OrderHeaderID,
T_OrderDetailT_TestID,
T_OrderDetailT_TestCode,
T_OrderDetailT_TestName,
T_OrderDetailT_TestIsResult,
T_OrderDetailT_TestIsPrice,
T_OrderDetailPrice,
T_OrderDetailPriceForDisc,
T_OrderDetailDisc,
T_OrderDetailDiscAmount,
T_OrderDetailDiscTotal,
T_OrderDetailTotal,
T_OrderDetailCreated,
T_OrderDetailUserID
)
VALUE(
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
NOW(),
?
)";
$query = $this->db_onedev->query($sql,array(
$last_id,
$v->PreOrder_TestT_TestID,
$v->T_TestCode,
$v->T_TestName,
$v->T_TestIsResult,
$v->T_TestIsPrice,
$v->PreOrder_TestPrice,
$v->PreOrder_TestPrice,
$v->PreOrder_TestDisc,
$v->PreOrder_TestDiscRp,
$dsictot,
$total,
$userid
));
if (!$query) {
$this->sys_error_db("t_orderdetail insert");
exit;
}else{
//$lastid = $this->db_onedev->insert_id();
$sql = "SELECT *
FROM t_test
WHERE
T_TestParentT_TestID = '{$v->T_TestID}' AND
T_TestIsActive = 'Y'";
$childrentest = $this->db_onedev->query($sql)->result_array();
if($childrentest){
foreach($childrentest as $xk => $xv){
$sql = "insert into t_orderdetail(
T_OrderDetailT_OrderHeaderID,
T_OrderDetailT_TestID,
T_OrderDetailT_TestCode,
T_OrderDetailT_TestName,
T_OrderDetailT_TestIsResult,
T_OrderDetailT_TestIsPrice,
T_OrderDetailUserID,
T_OrderDetailCreated,
T_OrderDetailLastUpdated
)
values( ?, ?, ?, ?, ?, ?,?, now(), now())";
$query = $this->db_onedev->query($sql,
array(
$last_id,
$xv['T_TestID'],
$xv['T_TestCode'],
$xv['T_TestName'],
$xv['T_TestIsResult'],
$xv['T_TestIsPrice'],
$userid
)
);
if (!$query) {
$this->sys_error_db("t_orderdetail children insert");
exit;
}
}
}
}
if($k == count($data_order_detail)-1){
$roundingx = intval(substr($header_total,-3) > 500?substr($header_total,-3)-500:substr($header_total,-3));
$total_akhir = $header_total - $roundingx;
$sql = "UPDATE t_orderheader SET T_OrderHeaderRounding = {$roundingx}, T_OrderHeaderTotal = {$total_akhir} WHERE T_OrderHeaderID = {$last_id}";
$this->db_onedev->query($sql);
}
}
$query = " SELECT *
FROM one_preorder_dev.preorder_header
JOIN one_preorder_dev.preorder_delivery ON PreOrder_DeliveryPreOrder_HeaderID = '{$order_id}' AND PreOrder_DeliveryIsActive = 'Y'
WHERE
PreOrder_HeaderID = '{$order_id}'";
//echo $query;
$delver = $this->db_onedev->query($query)->result_array();
foreach($delver as $ii => $vv){
$addressid = 0;
/*if($vv['PreOrder_DeliveryM_DeliveryID'] == 2 || $vv['PreOrder_DeliveryM_DeliveryID'] == '2')
$addressid = $vv['PreOrder_HeaderM_PatientAdrressID'];
if($vv['PreOrder_DeliveryM_DeliveryID'] == 4 || $vv['PreOrder_DeliveryM_DeliveryID'] == '4')
$addressid = $vv['PreOrder_HeaderM_DoctorAddressID'];*/
$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(
$last_id,
$vv['PreOrder_DeliveryM_DeliveryID'],
$vv['PreOrder_DeliveryM_DeliveryTypeID'],
$vv['PreOrder_DeliveryDestination'],
$vv['PreOrder_DeliveryAddressID'],
$vv['PreOrder_DeliveryM_KelurahanID'],
$userid
)
);
}
$sql = "UPDATE one_preorder_dev.preorder_header SET PreOrder_HeaderT_OrderHeaderID = '{$last_id}', PreOrder_HeaderM_PreOrderStatusID = 4 WHERE PreOrder_HeaderID = {$order_id}";
//echo $sql;
$update_preheader = $this->db_onedev->query($sql);
if (!$update_preheader) {
$this->sys_error_db("preorder_header update", $this->db_onedev);
exit;
}
$sql = "SELECT T_OrderHeaderLabNumber as numberx FROM t_orderheader WHERE T_OrderHeaderID = '{$last_id}'";
$rst_rtn = $this->db_onedev->query($sql)->row();
$result = array(
"total" => 1 ,
"records" => $rst_rtn,
);
$this->sys_ok($result);
exit;
}
else{
$this->sys_error_db("new order",$this->db_onedev);
exit;
}
}
function do_cancel(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$order_id = $prm['orderid'];
$query = "UPDATE one_preorder_dev.preorder_header SET
PreOrder_HeaderIsActive = 'N',
PreOrder_HeaderLastUpdated = now()
WHERE
PreOrder_HeaderID = ?
";
$update_order = $this->db_onedev->query($query,array(
$prm['orderid']
));
//echo $this->db_onedev->last_query();
if($update_order){
$query = " SELECT PreOrder_HeaderNumbering as numberx
FROM one_preorder_dev.preorder_header
WHERE PreOrder_HeaderID = ? LIMIT 1";
$rows = $this->db_onedev->query($query,array($order_id))->result();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
else{
$this->sys_error_db("cancel order",$this->db_onedev);
exit;
}
}
function do_download(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$order_id = $prm['orderid'];
$query = "UPDATE one_preorder_dev.preorder_header SET
PreOrder_HeaderDownloadedMobile = 'Y',
PreOrder_HeaderLastUpdated = now()
WHERE
PreOrder_HeaderID = ?
";
$update_order = $this->db_onedev->query($query,array(
$prm['orderid']
));
//echo $this->db_onedev->last_query();
if($update_order){
$query = " SELECT PreOrder_HeaderNumbering as numberx
FROM one_preorder_dev.preorder_header
WHERE PreOrder_HeaderID = ? LIMIT 1";
$rows = $this->db_onedev->query($query,array($order_id))->result();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
else{
$this->sys_error_db("downloaded order",$this->db_onedev);
exit;
}
}
function do_resend(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$order_id = $prm['orderid'];
$query = "SELECT * FROM one_gateway.outbox WHERE outboxID = {$order_id}";
$lastdata = $this->db_onedev->query($query)->row();
$query = "UPDATE one_gateway.outbox SET
outboxRetry = 0
WHERE
outboxID = ?
";
$update_order = $this->db_onedev->query($query,array(
$prm['orderid']
));
//echo $this->db_onedev->last_query();
if($update_order){
$query = " SELECT PreOrder_HeaderNumbering as numberx
FROM one_preorder_dev.preorder_header
WHERE PreOrder_HeaderID = ? LIMIT 1";
$rows = $this->db_onedev->query($query,array($lastdata->outboxRefID))->result();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
else{
$this->sys_error_db("resend order",$this->db_onedev);
exit;
}
}
}