245 lines
8.9 KiB
PHP
245 lines
8.9 KiB
PHP
<?php
|
|
|
|
class Order extends MY_Controller
|
|
{
|
|
var $db_smartone;
|
|
public function index()
|
|
{
|
|
echo "ORDER API";
|
|
}
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_smartone = $this->load->database("onedev", true);
|
|
}
|
|
|
|
function save()
|
|
{
|
|
$prm = $this->sys_input;
|
|
$hdr = $prm['header'];
|
|
$header_json = addslashes(str_replace('\n', '\\\n', json_encode($hdr)));
|
|
$detail_json = str_replace('\n', '\\\n', json_encode($prm['detail']));
|
|
$delivery_json = addslashes(str_replace('\n', '\\\n', json_encode($prm['delivery'])));
|
|
|
|
$req_json = json_encode($prm['req']);
|
|
|
|
$sql = "CALL sp_fo_register_save_v5('{$prm['order_id']}', '{$header_json}', '{$delivery_json}', '{$detail_json}', '{$req_json}', '{$this->sys_user['M_UserID']}');";
|
|
// echo $sql;
|
|
$query = $this->db_smartone->query($sql);
|
|
if ($query)
|
|
{
|
|
$rst = $query->row();
|
|
$this->clean_mysqli_connection($this->db_smartone->conn_id);
|
|
$rst_id = $rst->id;
|
|
$rst->data = json_decode($rst->data);
|
|
$rst_id = $rst->data->id;
|
|
if($rst_id){
|
|
$sql = "UPDATE t_orderheaderaddon
|
|
SET T_OrderHeaderAddOnAliasDoctorName = '{$hdr['alias_doctor']}',
|
|
T_OrderHeaderAddOnAliasDoctorAddress = '{$hdr['alias_doctor_address']}'
|
|
WHERE
|
|
T_OrderHeaderAddOnT_OrderHeaderID = {$rst_id}";
|
|
$this->db_smartone->query($sql);
|
|
|
|
|
|
$delivery_note = $prm['delivery'];
|
|
foreach($delivery_note as $k => $v){
|
|
//print_r($v);
|
|
if($v['noteplus'] != ''){
|
|
if($v['delivery_code'] == 'EMAIL' || $v['delivery_code'] == 'WHATSAPP' || $v['delivery_code'] == 'TELEGRAM'){
|
|
$sql = "UPDATE t_orderdelivery SET T_OrderDeliveryDestination = '{$v['noteplus']}'
|
|
WHERE
|
|
T_OrderDeliveryT_OrderHeaderID = {$rst_id} AND
|
|
T_OrderDeliveryM_DeliveryID = {$v['delivery_id']} AND
|
|
T_OrderDeliveryM_DeliveryTypeID = {$v['delivery_type_id']} AND
|
|
T_OrderDeliveryAddressID = {$v['address_id']} AND
|
|
T_OrderDeliveryIsActive = 'Y'";
|
|
$this->db_smartone->query($sql);
|
|
//echo $sql;
|
|
}
|
|
else{
|
|
$sql = "SELECT T_OrderDeliveryID as xdel_id
|
|
FROM t_orderdelivery
|
|
WHERE
|
|
T_OrderDeliveryT_OrderHeaderID = {$rst_id} AND
|
|
T_OrderDeliveryM_DeliveryID = {$v['delivery_id']} AND
|
|
T_OrderDeliveryM_DeliveryTypeID = {$v['delivery_type_id']} AND
|
|
T_OrderDeliveryAddressID = {$v['address_id']} AND
|
|
T_OrderDeliveryIsActive = 'Y'";
|
|
//echo $sql;
|
|
$xdel_id = $this->db_smartone->query($sql)->row()->xdel_id;
|
|
$sql = "INSERT INTO t_orderdeliverynote(
|
|
T_OrderDeliveryNoteT_OrderDeliveryID,
|
|
T_OrderDeliveryNoteValue,
|
|
T_OrderDeliveryNoteCreated,
|
|
T_OrderDeliveryNoteUserID
|
|
)
|
|
VALUES(
|
|
{$xdel_id},
|
|
'{$v['noteplus']}',
|
|
NOW(),
|
|
{$this->sys_user['M_UserID']}
|
|
)";
|
|
$this->db_smartone->query($sql);
|
|
//echo $sql;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
$x = preg_match("/janji hasi/", $rst->message);
|
|
if ($x)
|
|
$rst->message = "Masih ada pemeriksaan yang BELUM DISET JANJI HASILNYA !";
|
|
$rst->message = ["text"=>$rst->message, "query"=>$this->db_smartone->last_query()];
|
|
// pe : add broadcast notification
|
|
$rst->order_header = $this->get_header($rst_id);
|
|
$rst->order_detail = $this->get_details($rst_id);
|
|
$rst->order_delivery = $this->get_delivery($rst_id);
|
|
|
|
$this->broadcast("fo-register");
|
|
echo json_encode($rst);
|
|
}
|
|
else
|
|
{
|
|
$this->sys_error_db("save order", $this->db_smartone);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function get_header($id){
|
|
$sql = "
|
|
SELECT T_OrderHeaderID as order_id,
|
|
T_OrderHeaderLabNumber as order_no,
|
|
T_OrderHeaderDate as order_date,
|
|
T_OrderHeaderSubTotal as order_subtotal,
|
|
T_OrderHeaderRounding as order_rounding,
|
|
T_OrderHeaderTotal as order_total,
|
|
concat(if(M_TitleID is null, '', concat(M_TitleName, ' ')), M_PatientName) as patient_name,
|
|
M_PatientNoReg as patient_mr,
|
|
M_MouName as order_mou,
|
|
M_CompanyName as order_company,
|
|
fn_global_doctor_name(da.M_DoctorID) doctor_sender,
|
|
fn_global_doctor_name(db.M_DoctorID) doctor_pj,
|
|
fn_global_doctor_address(aa.M_DoctorAddressID, 1) doctor_sender_address,
|
|
M_MouIsBill M_CompanyIsBill, M_MouMinDP M_CompanyMinDP,
|
|
M_MouIsAgingOnHold M_CompanyIsAgingOnHold, M_MouIsAgingOnHoldNote M_CompanyIsAgingOnHoldNote
|
|
from t_orderheader
|
|
join m_patient on T_OrderHeaderM_PatientID = M_PatientID
|
|
join m_company on T_OrderHeaderM_CompanyID = M_CompanyID
|
|
join m_mou on T_OrderHeaderM_MouID = M_MouID
|
|
join m_doctor da on T_OrderHeaderSenderM_DoctorID = da.M_DoctorID
|
|
join m_doctoraddress aa on T_OrderHeaderSenderM_DoctorAddressID = aa.M_DoctorAddressID
|
|
join m_doctor db on T_OrderHeaderSenderM_DoctorID = db.M_DoctorID
|
|
left join m_title on m_patientm_titleid = m_titleid
|
|
where T_OrderHeaderID = {$id}";
|
|
// echo $sql;
|
|
$query = $this->db_smartone->query($sql);
|
|
$rows = $query->row();
|
|
//echo $this->db->last_query();
|
|
return $rows;
|
|
}
|
|
|
|
function get_delivery($id){
|
|
$sql = "CALL sp_fo_payment_get_delivery('{$id}')";
|
|
$rows = $this->db_smartone->query($sql)->row();
|
|
|
|
$this->clean_mysqli_connection($this->db_smartone->conn_id);
|
|
return json_decode($rows->delivery);
|
|
}
|
|
|
|
function get_details($id){
|
|
$sql = "
|
|
select T_OrderDetailID as d_id,
|
|
T_OrderDetailT_TestID as t_id,
|
|
IFNULL(T_OrderDetailT_TestName, T_PacketName) as t_name,
|
|
T_OrderDetailPrice as t_price,
|
|
T_OrderDetailDiscTotal as t_disctotal,
|
|
T_OrderDetailTotal as t_total
|
|
from t_orderdetail
|
|
join t_orderdetailaddon on T_OrderDetailAddOnT_OrderDetailID = T_OrderDetailID
|
|
left join t_test on t_orderdetailt_testid = t_testid
|
|
left join t_packet on t_orderdetailaddonispacket = 'Y' and t_orderdetailaddont_packetid = t_packetid
|
|
where T_OrderDetailT_OrderHeaderID = {$id}
|
|
and T_ORderDetailIsActive = 'Y'
|
|
and ((T_ORderDetailAddOnIsPacket = 'N' AND T_TestIsPrintNota = 'Y' AND T_OrderDetailT_TestIsPanelChildren = 'N')
|
|
OR (T_OrderDetailT_TestIsPanelChildren = 'Y' AND T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y')
|
|
OR (T_ORderDetailAddOnIsPacket = 'Y' AND T_PacketIsNOta = 'Y'))";
|
|
|
|
$query = $this->db_smartone->query($sql);
|
|
//echo $this->db->last_query();
|
|
$rows = $query->result_array();
|
|
return $rows;
|
|
}
|
|
|
|
function load_from_clinic()
|
|
{
|
|
$prm = $this->sys_input;
|
|
|
|
$sql = "CALL sp_fo_clinic_load('{$prm['queue']}');";
|
|
$query = $this->db_smartone->query($sql);
|
|
|
|
if ($query)
|
|
{
|
|
$rst = $query->row();
|
|
if ($rst->status == "OK")
|
|
{
|
|
$rst->data = json_decode($rst->data);
|
|
|
|
$rst->data->doctor->address = $rst->data->doctor_address;
|
|
unset($rst->data->doctor_address);
|
|
|
|
$rst->data->company->mou = [$rst->data->mou];
|
|
unset($rst->data->mou);
|
|
}
|
|
else
|
|
{
|
|
$this->sys_error("Tidak ada order");
|
|
exit;
|
|
}
|
|
|
|
echo json_encode($rst);
|
|
}
|
|
else
|
|
{
|
|
$this->sys_error_db("save order", $this->db_smartone);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function load()
|
|
{
|
|
$prm = $this->sys_input;
|
|
|
|
$sql = "CALL sp_fo_register_load('{$prm['id']}');";
|
|
$query = $this->db_smartone->query($sql);
|
|
|
|
if ($query)
|
|
{
|
|
$rst = $query->row();
|
|
if ($rst->status == "OK")
|
|
{
|
|
$rst->data = json_decode($rst->data);
|
|
|
|
$rst->data->doctor->address = $rst->data->doctor_address;
|
|
unset($rst->data->doctor_address);
|
|
|
|
$rst->data->company->mou = [$rst->data->mou];
|
|
unset($rst->data->mou);
|
|
}
|
|
else
|
|
{
|
|
$this->sys_error("Tidak ada order");
|
|
exit;
|
|
}
|
|
|
|
echo json_encode($rst);
|
|
}
|
|
else
|
|
{
|
|
$this->sys_error_db("save order", $this->db_smartone);
|
|
exit;
|
|
}
|
|
}
|
|
}
|