1109 lines
39 KiB
PHP
1109 lines
39 KiB
PHP
<?php
|
|
class Patient extends MY_Controller
|
|
{
|
|
var $db_onedev;
|
|
public function index()
|
|
{
|
|
echo "Patient API";
|
|
}
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
}
|
|
|
|
|
|
function add_verifications_label($orderid){
|
|
$query = " SELECT Result_VerificationsID as id,
|
|
IFNULL(Result_VerificationsValueID,0) as xid,
|
|
IFNULL(Result_VerificationsValueCheck,'N') as chex,
|
|
IF(ISNULL(Result_VerificationsValueID),'',Result_VerificationsValueNote) as note,
|
|
Result_VerificationsLabel as label
|
|
FROM result_verifications
|
|
LEFT JOIN result_verifications_value ON Result_VerificationsValueResult_VerificationsID = Result_VerificationsID AND
|
|
Result_VerificationsValueSo_ResultEntryID = $orderid
|
|
WHERE
|
|
Result_VerificationIsActive = 'Y'
|
|
GROUP BY Result_VerificationsID
|
|
";
|
|
$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 search()
|
|
{
|
|
$prm = $this->sys_input;
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$nolab = $prm["nolab"];
|
|
$nama = $prm["name"];
|
|
$status = $prm["status"];
|
|
$company = $prm["company"]["M_CompanyID"];
|
|
$where_status = " AND (ISNULL(Result_HandOverEmailID))";
|
|
$xstatus = "IF(ISNULL(Result_ProcessToOfficeID),'N','Y') as status_ready";
|
|
|
|
$filter_status = "LEFT JOIN result_processtooffice ON Result_ProcessToOfficeT_OrderHeaderID = T_OrderHeaderID AND
|
|
Result_ProcessToOfficeT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID
|
|
LEFT JOIN result_handoveremail ON Result_HandOverEmailT_OrderHeaderID = T_OrderHeaderID AND
|
|
Result_HandOverEmailT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_HandOverEmailT_OrderPromiseID = T_OrderPromiseID
|
|
";
|
|
$paramxid= "0 as xid";
|
|
if($status != 'N'){
|
|
$xstatus = "'Y' as status_ready";
|
|
$where_status = '';
|
|
$paramxid= "Result_HandOverEmailID as xid";
|
|
$filter_status = "JOIN result_handoveremail ON Result_HandOverEmailT_OrderHeaderID = T_OrderHeaderID AND
|
|
Result_HandOverEmailT_OrderPromiseID = T_OrderPromiseID AND
|
|
Result_HandOverEmailT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_HandOverEmailIsActive = 'Y' AND Result_HandOverEmailStatus = '{$status}'";
|
|
}
|
|
|
|
$filter_company = '';
|
|
if(intval($company) > 0){
|
|
$filter_company = " AND M_CompanyID = {$company}";
|
|
}
|
|
|
|
$datepromise = $prm["startdate"];
|
|
|
|
if(!isset($prm['current_page']))
|
|
$prm['current_page'] = 1;
|
|
|
|
$sql_where = "";
|
|
$number_limit = 10;
|
|
$number_offset = ($prm['current_page'] - 1) * $number_limit ;
|
|
|
|
if ($nolab != "") {
|
|
$sql_where = " AND ( T_OrderHeaderLabNumber like '%$nolab%' OR T_OrderHeaderLabNumberExt like '%$nolab%' OR M_PatientName like '%$nolab%' ) ";
|
|
}
|
|
|
|
$sql = "SELECT COUNT(*) as total FROM (
|
|
SELECT
|
|
T_OrderHeaderID as order_id,
|
|
T_OrderDeliveryID as delivery_id,
|
|
T_OrderPromiseID as order_promise_id
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
|
|
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestIsResult = 'Y'
|
|
JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND
|
|
T_OrderDetailT_OrderPromiseID = T_OrderPromiseID AND
|
|
T_OrderPromiseIsActive = 'Y'
|
|
JOIN t_orderdelivery ON T_orderDeliveryT_OrderHeaderID = T_OrderHeaderID AND
|
|
T_OrderDeliveryM_DeliveryTypeID = 3 AND T_OrderDeliveryIsActive = 'Y'
|
|
$filter_status
|
|
WHERE
|
|
(
|
|
DATE(T_OrderPromiseDateTime) = '{$datepromise}'
|
|
) AND
|
|
T_OrderHeaderIsActive = 'Y'
|
|
$sql_where $where_status
|
|
GROUP BY T_OrderHeaderID, T_OrderPromiseID, T_OrderDeliveryID
|
|
) xz";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
$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("m_doctor count", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
$sql = "SELECT $paramxid,
|
|
T_OrderHeaderID as order_id,
|
|
T_OrderDeliveryID as delivery_id,
|
|
T_OrderDeliveryDestination as email_address,
|
|
T_OrderPromiseID as order_promise_id,
|
|
T_OrderHeaderLabNumber as noreg,
|
|
M_CompanyID,
|
|
M_CompanyName,
|
|
T_OrderHeaderLabNumberExt as noreg_ext,
|
|
CONCAT(IFNULL(M_TitleName,''),' ',M_PatientName) as patient_fullname,
|
|
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i') as order_date,
|
|
DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as promise_date,
|
|
DATE(T_OrderPromiseDateTime) as order_promise_date,
|
|
M_CompanyName as company_name,
|
|
IF(M_MouIsBill = 'Y','Y',Last_StatusPaymentIsLunas) as status_payment,
|
|
'' as staff_name,
|
|
'' as send_time,
|
|
'' as receiver_time,
|
|
'Y' as status_ready,
|
|
'Y' as status_complete_format,
|
|
T_OrderHeaderIsCito as iscito,
|
|
M_DeliveryName as label_delivery,
|
|
'' as not_found_format,
|
|
'N' as status_send,
|
|
'' as not_ready,
|
|
$xstatus
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
|
|
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
|
|
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestIsResult = 'Y'
|
|
JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND
|
|
T_OrderDetailT_OrderPromiseID = T_OrderPromiseID AND
|
|
T_OrderPromiseIsActive = 'Y'
|
|
JOIN t_orderdelivery ON T_orderDeliveryT_OrderHeaderID = T_OrderHeaderID AND
|
|
T_OrderDeliveryM_DeliveryTypeID = 3 AND T_OrderDeliveryIsActive = 'Y'
|
|
JOIN m_delivery ON T_OrderDeliveryM_DeliveryID = M_DeliveryID
|
|
JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID
|
|
$filter_status
|
|
WHERE
|
|
(
|
|
DATE(T_OrderPromiseDateTime) = '{$datepromise}'
|
|
) AND
|
|
T_OrderHeaderIsActive = 'Y'
|
|
$sql_where $where_status
|
|
GROUP BY T_OrderHeaderID, DATE(T_OrderPromiseDateTime), T_OrderDeliveryID
|
|
Order BY T_OrderPromiseDateTime ASC, T_OrderHeaderID ASC, T_OrderDeliveryID ASC
|
|
limit $number_limit offset $number_offset";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
$rows = $query->result_array();
|
|
if($rows){
|
|
foreach($rows as $k => $v){
|
|
$arr_not_ready = array();
|
|
$sql = "SELECT IFNULL(Result_ProcessToOfficeID,'0') as xid, Group_ResultName as testname
|
|
FROM t_orderdetail
|
|
JOIN group_resultdetail ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagPerTest = 'N'
|
|
LEFT JOIN result_processtooffice ON Result_ProcessToOfficeT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
Result_ProcessToOfficeT_OrderDeliveryID = {$v['delivery_id']} AND
|
|
Result_ProcessToOfficeT_OrderPromiseID = {$v['order_promise_id']} AND
|
|
Result_ProcessToOfficeGroup_ResultID = Group_ResultID
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['order_id']} AND
|
|
T_OrderDetailT_OrderPromiseID = {$v['order_promise_id']} AND
|
|
T_OrderDetailT_TestIsResult = 'Y' AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
GROUP BY Group_ResultID
|
|
UNION
|
|
SELECT IFNULL(Result_ProcessToOfficeID,'0') as xid, T_TestName as testname
|
|
FROM t_orderdetail
|
|
JOIN group_resultdetail ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagPerTest = 'Y'
|
|
LEFT JOIN result_processtooffice ON Result_ProcessToOfficeT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
Result_ProcessToOfficeT_OrderDeliveryID = {$v['delivery_id']} AND
|
|
Result_ProcessToOfficeT_OrderPromiseID = {$v['order_promise_id']} AND
|
|
Result_ProcessToOfficeGroup_ResultID = T_TestID
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['order_id']} AND
|
|
T_OrderDetailT_OrderPromiseID = {$v['order_promise_id']} AND
|
|
T_OrderDetailT_TestIsResult = 'Y' AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
GROUP BY T_TestID";
|
|
//echo $sql.";";
|
|
$rows_not_ready = $this->db_onedev->query($sql)->result_array();
|
|
foreach($rows_not_ready as $k_nr => $v_nr){
|
|
if($v_nr['xid'] == '0' || $v_nr['xid'] == 0){
|
|
array_push($arr_not_ready,$v_nr['testname']);
|
|
}
|
|
}
|
|
|
|
if(count($arr_not_ready) > 0){
|
|
$rows[$k]['status_ready'] = 'N';
|
|
$rows[$k]['not_ready'] = join($arr_not_ready,',');
|
|
}
|
|
//echo $rows[$k]['status_ready'];
|
|
|
|
$arr_not_found_format = array();
|
|
$sql = "SELECT '0' as rpo_id, IFNULL(T_EmailNonLabID,'0') as xid, Group_ResultName as testname, Group_ResultID as group_test_id
|
|
FROM t_orderdetail
|
|
JOIN group_resultdetail ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagNonLab = 'Y' AND Group_ResultFlagPerTest = 'N'
|
|
LEFT JOIN t_email_nonlab ON T_EmailNonLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_EmailNonLabResultEntryID = 0 AND
|
|
T_EmailNonLabType = Group_ResultName
|
|
LEFT JOIN result_processtooffice ON Result_ProcessToOfficeT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
Result_ProcessToOfficeT_OrderDeliveryID = {$v['delivery_id']} AND
|
|
Result_ProcessToOfficeT_OrderPromiseID = {$v['order_promise_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['order_id']} AND
|
|
T_OrderDetailT_OrderPromiseID = {$v['order_promise_id']} AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
UNION
|
|
SELECT '0' as rpo_id, IFNULL(T_EmailNonLabID,'0') as xid, T_TestName as testname, T_TestID as group_test_id
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagNonLab = 'Y' AND Group_ResultFlagPerTest = 'Y'
|
|
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
|
|
LEFT JOIN t_email_nonlab ON T_EmailNonLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_EmailNonLabResultEntryID = So_ResultEntryID
|
|
LEFT JOIN result_processtooffice ON Result_ProcessToOfficeT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
Result_ProcessToOfficeT_OrderDeliveryID = {$v['delivery_id']} AND
|
|
Result_ProcessToOfficeT_OrderPromiseID = {$v['order_promise_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['order_id']} AND
|
|
T_OrderDetailT_OrderPromiseID = {$v['order_promise_id']} AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
";
|
|
//echo $sql.";";
|
|
$rows_not_found_format = $this->db_onedev->query($sql)->result_array();
|
|
if($rows_not_found_format){
|
|
foreach($rows_not_found_format as $ki => $vi){
|
|
if($vi['xid'] == '0' || $vi['xid'] == 0){
|
|
//echo $vi['testname'];
|
|
array_push($arr_not_found_format,$vi['testname']);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(count($arr_not_found_format) > 0){
|
|
$rows[$k]['status_complete_format'] = 'N';
|
|
$rows[$k]['status_ready'] = 'N';
|
|
$rows[$k]['test_not_ready'] = join($arr_not_found_format,',');
|
|
}
|
|
//echo $rows[$k]['status_ready'];
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM result_handoveremail
|
|
WHERE
|
|
Result_HandOverEmailT_OrderHeaderID = {$v['order_id']} AND
|
|
Result_HandOverEmailT_OrderPromiseID = {$v['order_promise_id']} AND
|
|
Result_HandOverEmailT_OrderDeliveryID = {$v['delivery_id']} AND
|
|
Result_HandOverEmailStatus = 'S' AND
|
|
Result_HandOverEmailIsActive = 'Y'
|
|
";
|
|
$xrow_status = $this->db_onedev->query($sql)->row();
|
|
if($xrow_status->xcount > 0){
|
|
$rows[$k]['status_send'] = 'Y';
|
|
}
|
|
}
|
|
}
|
|
$companies = array(array('M_CompanyID'=>'0','M_CompanyName'=>'Semua'));
|
|
$sql = "SELECT
|
|
M_CompanyID,
|
|
M_CompanyName
|
|
FROM t_orderheader
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID
|
|
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestIsResult = 'Y'
|
|
JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND
|
|
T_OrderDetailT_OrderPromiseID = T_OrderPromiseID AND
|
|
T_OrderPromiseIsActive = 'Y'
|
|
JOIN t_orderdelivery ON T_orderDeliveryT_OrderHeaderID = T_OrderHeaderID AND
|
|
T_OrderDeliveryM_DeliveryTypeID = 3 AND T_OrderDeliveryIsActive = 'Y'
|
|
LEFT JOIN result_processtooffice ON Result_ProcessToOfficeT_OrderHeaderID = T_OrderHeaderID AND
|
|
Result_ProcessToOfficeT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID
|
|
LEFT JOIN result_handoveremail ON Result_HandOverEmailT_OrderHeaderID = T_OrderHeaderID AND
|
|
Result_HandOverEmailT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_HandOverEmailT_OrderPromiseID = T_OrderPromiseID
|
|
WHERE
|
|
(
|
|
DATE(T_OrderPromiseDateTime) = '{$datepromise}'
|
|
) AND
|
|
T_OrderHeaderIsActive = 'Y' AND
|
|
ISNULL(Result_HandOverEmailID)
|
|
GROUP BY M_CompanyID";
|
|
$xcompanies = $this->db_onedev->query($sql)->result_array();
|
|
if($xcompanies){
|
|
foreach($xcompanies as $kc => $vc){
|
|
array_push($companies,$vc);
|
|
}
|
|
}
|
|
|
|
//echo $this->db_onedev->last_query();
|
|
$result = array("total" => $tot_page, "companies" => $companies,"records" => $rows, "sql"=> '');
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
|
|
|
|
public function save()
|
|
{
|
|
try {
|
|
$xprm = $this->sys_input;
|
|
//# 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'];
|
|
$xstatus = $xprm['act'];
|
|
$fostatusid = 3;
|
|
$fologcode = 'FO.VERIFICATION.CONFIRM';
|
|
$id = $prm['T_OrderHeaderID'];
|
|
echo $xstatus;
|
|
if($xstatus == 'N'){
|
|
$fostatusid = 4;
|
|
$fologcode = 'FO.VERIFICATION.REJECT';
|
|
}else{
|
|
|
|
$this->save_barcode_new($id);
|
|
}
|
|
|
|
|
|
//print_r($prm);
|
|
$xverificationnote = $prm['verification_note'];
|
|
//echo $xverificationnote;
|
|
|
|
$sql = "update t_orderheader
|
|
set
|
|
T_OrderHeaderVerificationNote = '{$xverificationnote}'
|
|
where
|
|
T_OrderHeaderID = $id";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
|
|
$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
|
|
)
|
|
);
|
|
|
|
if (!$query) {
|
|
$this->sys_error_db("fo_status insert");
|
|
exit;
|
|
}
|
|
|
|
|
|
$data_log = array();
|
|
$data_log['orderid'] = $id;
|
|
|
|
$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;
|
|
}
|
|
}
|
|
|
|
|
|
$rows = array('message'=>$msg);
|
|
$result = array ("total" => 0, "records" => $rows);
|
|
$this->sys_ok($result);
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
|
|
}
|
|
|
|
function save_barcode_new($orderid){
|
|
$xuserid = $this->sys_user['M_UserID'];
|
|
|
|
$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 ;
|
|
$barcodes = $this->db_onedev->query($query)->result();
|
|
foreach($barcodes as $k => $v){
|
|
$query = "SELECT T_SampleTypeID as id, IFNULL(T_BarcodeLabID,0) as xid,
|
|
IF(ISNULL(T_BarcodeLabID),'Y',T_BarcodeLabIsActive) 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();
|
|
//$v->children = $barcode_data;
|
|
foreach($v->children as $ki => $vi){
|
|
if($vi['chex'] == 'N')
|
|
$v->children[$ki]['chex'] = false;
|
|
else
|
|
$v->children[$ki]['chex'] = true;
|
|
$sql = "insert into t_barcodelab(
|
|
T_BarcodeLabT_OrderHeaderID,
|
|
T_BarcodeLabBarcode,
|
|
T_BarcodeLabT_SampleTypeID,
|
|
T_BarcodeLabCreated,
|
|
T_BarcodeLabLastUpdated,
|
|
T_BarcodeLabUserID)
|
|
values( ?, ?, ?, now(),now(),?)";
|
|
|
|
$query = $this->db_onedev->query($sql,
|
|
array(
|
|
$orderid,
|
|
$v->children[$ki]['barcodenumber'],
|
|
$v->children[$ki]['id'],
|
|
$xuserid
|
|
)
|
|
);
|
|
// echo $this->db_onedev->last_query();
|
|
if (!$query) {
|
|
$this->sys_error_db("t_barcodelab insert");
|
|
exit;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
//insert log
|
|
$supplies = array();
|
|
$query =" SELECT M_SuppliesID as id,
|
|
IFNULL(T_OrderSuppliesID,0) as xid,
|
|
IF(ISNULL(T_OrderSuppliesID),'N',T_OrderSuppliesIsActive) as chex,
|
|
IFNULL(T_OrderSuppliesQty,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
|
|
JOIN t_ordersupplies ON T_OrderSuppliesT_OrderHeaderID = $orderid AND T_OrderSuppliesM_SuppliesID = M_SuppliesID
|
|
WHERE
|
|
M_SuppliesIsActive = 'Y'
|
|
";
|
|
//echo $query ;
|
|
$supplies = $this->db_onedev->query($query)->result_array();
|
|
|
|
foreach($supplies as $k => $v){
|
|
if($v['chex'] == 'N')
|
|
$supplies[$k]['chex'] = false;
|
|
else
|
|
$supplies[$k]['chex'] = true;
|
|
}
|
|
|
|
$dt_log = array('orderid'=>$orderid,'supplies'=>$supplies,'barcode'=>$barcodes);
|
|
$fologcode = 'FO.Verification.BarcodeSupplies';
|
|
$json_dt_log = json_encode($dt_log);
|
|
$sql = "insert into one_log.log_supplies_barcode(
|
|
Log_SuppliesBarcodeDate,
|
|
Log_SuppliesBarcodeCode,
|
|
Log_SuppliesBarcodeJson,
|
|
Log_SuppliesBarcodeUserID)
|
|
values( now(), ?, ?, ?)";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql,
|
|
array(
|
|
$fologcode,
|
|
$json_dt_log,
|
|
$xuserid
|
|
)
|
|
);
|
|
|
|
if (!$query) {
|
|
$this->sys_error_db("one_log.log_supplies_barcode insert");
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function saveverifications($id,$verifications,$type,$userid)
|
|
{
|
|
try {
|
|
//$xverificationtypeid = $this->db_onedev->query("SELECT * FROM fo_verificationtype WHERE Fo_VerificationTypeGroup = '{$type}' AND Fo_VerificationTypeIsActive = 'Y'")->row()->Fo_VericationTypeID;
|
|
//echo $xverificationtypeid;
|
|
//print_r($verifications);
|
|
foreach($verifications as $k => $v){
|
|
//print_r($v);
|
|
if(intval($v['xid']) == 0){
|
|
$sql = "insert into fo_verification(
|
|
Fo_VerificationT_OrderHeaderID,
|
|
Fo_VerificationFo_VericationTypeID,
|
|
Fo_VerificationIsOK,
|
|
Fo_VerificationReason,
|
|
Fo_VerificationCreated,
|
|
Fo_VerificationLastUpdated,
|
|
Fo_VerificationUserID)
|
|
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) {
|
|
$this->sys_error_db("fo_verification 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 lookup_barcodes()
|
|
{
|
|
try {
|
|
$prm = $this->sys_input;
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$sql = "SELECT T_BarcodeLabID as id, 'barcode' as type,T_BarcodeLabID,T_BarcodeLabBarcode, T_BarcodeLabCounter, T_SampleTypeName, 'N' as chex
|
|
FROM t_barcodelab
|
|
JOIN t_sampletype ON T_BarcodeLabT_SampleTypeID = T_SampleTypeID
|
|
WHERE
|
|
T_BarcodeLabT_OrderHeaderID = {$prm['ohid']} AND T_BarcodeLabIsActive = 'Y'
|
|
UNION
|
|
SELECT T_OrderHeaderID as id, 'formulir' as type, 0,T_OrderHeaderLabNumber as T_BarcodeLabBarcode, 1, 'Formulir' as T_SampleTypeName, 'N' as chex
|
|
FROM t_orderheader
|
|
WHERE
|
|
T_OrderHeaderID = {$prm['ohid']}
|
|
";
|
|
//echo $sql;
|
|
|
|
$rows = $this->db_onedev->query($sql)->result_array();
|
|
if($rows){
|
|
foreach($rows as $k => $v){
|
|
if($v['chex'] == 'N')
|
|
$rows[$k]['chex'] = false;
|
|
else
|
|
$rows[$k]['chex'] = true;
|
|
}
|
|
}
|
|
$result = array ("total" => 0, "records" => $rows);
|
|
$this->sys_ok($result);
|
|
|
|
} 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);
|
|
}
|
|
}
|
|
|
|
function verify(){
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$xstatus = $prm['act'];
|
|
if($xstatus == 'Y'){
|
|
$msg = "Berhasil melakukan verifikasi";
|
|
$query =" INSERT INTO result_verifications_value (
|
|
Result_VerificationsValueSo_ResultEntryID,
|
|
Result_VerificationsValueResult_VerificationsID,
|
|
Result_VerificationsValueCheck,
|
|
Result_VerificationsValueNote,
|
|
Result_VerificationsValueUserID,
|
|
Result_VerificationsValueCreated
|
|
)
|
|
SELECT {$prm['trx_id']},
|
|
Result_VerificationsID,
|
|
'Y',
|
|
'',
|
|
{$userid},
|
|
NOW()
|
|
FROM result_verifications
|
|
WHERE
|
|
Result_VerificationIsActive = 'Y'
|
|
ON DUPLICATE KEY UPDATE
|
|
Result_VerificationsValueCheck = 'Y',
|
|
Result_VerificationsValueNote = '',
|
|
Result_VerificationsValueUserID = {$userid},
|
|
Result_VerificationsValueLastUpdated = NOW()
|
|
";
|
|
//echo $query;
|
|
$this->db_onedev->query($query);
|
|
$sql = "UPDATE so_resultentry SET So_ResultEntryStatus = 'VAL2' , So_ResultEntryValidation2 = 'Y' WHERE So_ResultEntryID = {$prm['trx_id']}";
|
|
$this->db_onedev->query($sql);
|
|
}
|
|
else{
|
|
$msg = "Tolak untuk perbaikan";
|
|
$verifications = $prm['verifications'];
|
|
foreach($verifications as $k => $v){
|
|
$chx = $v['chex'] == true ?'Y':'N';
|
|
$query =" INSERT INTO result_verifications_value (
|
|
Result_VerificationsValueSo_ResultEntryID,
|
|
Result_VerificationsValueResult_VerificationsID,
|
|
Result_VerificationsValueCheck,
|
|
Result_VerificationsValueNote,
|
|
Result_VerificationsValueUserID,
|
|
Result_VerificationsValueCreated
|
|
)
|
|
values( {$prm['trx_id']},
|
|
{$v['id']},
|
|
'{$chx}',
|
|
'{$v['note']}',
|
|
{$userid},
|
|
NOW()
|
|
)
|
|
ON DUPLICATE KEY UPDATE
|
|
Result_VerificationsValueCheck = '{$chx}',
|
|
Result_VerificationsValueNote = '{$v['note']}',
|
|
Result_VerificationsValueUserID = {$userid},
|
|
Result_VerificationsValueLastUpdated = NOW()
|
|
";
|
|
//echo $query;
|
|
$this->db_onedev->query($query);
|
|
}
|
|
}
|
|
|
|
|
|
$result = array ("total" => 0, "records" => array('status'=>'OK','message'=>$msg));
|
|
$this->sys_ok($result);
|
|
}
|
|
|
|
function getstatuspergroup()
|
|
{
|
|
try {
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$rows = array();
|
|
|
|
$sql =" SELECT T_OrderDeliveryID as id,
|
|
T_OrderDeliveryDestination as name
|
|
FROM t_orderdelivery
|
|
JOIN m_delivery ON T_OrderDeliveryM_DeliveryID = M_DeliveryID
|
|
JOIN m_deliverytype ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID AND M_DeliveryTypeID = 3
|
|
LEFT JOIN fo_verification_delivery ON Fo_VerificationDeliveryT_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID AND Fo_VerificationDeliveryIsActive = 'Y'
|
|
WHERE
|
|
T_OrderDeliveryID = {$prm['delivery_id']} AND T_OrderDeliveryT_OrderHeaderID = {$prm['order_id']} AND T_OrderDeliveryIsActive = 'Y'
|
|
GROUP BY T_OrderDeliveryID
|
|
|
|
";
|
|
//echo $query ;
|
|
$rows_deliveries = $this->db_onedev->query($sql)->result_array();
|
|
$rows['info_deliveries'] = array();
|
|
foreach($rows_deliveries as $k_rd => $v_rd){
|
|
$email_now = explode(',',$v_rd['name']);
|
|
foreach($email_now as $k_email => $v_email){
|
|
array_push($rows['info_deliveries'], array('id'=>$v_rd['id'],'name'=>$v_email));
|
|
}
|
|
}
|
|
|
|
$sql = "
|
|
SELECT T_OrderHeaderID,
|
|
T_OrderPromiseID,
|
|
T_OrderPromiseDateTime,
|
|
T_OrderHeaderLabNumber,
|
|
UPPER(Group_ResultName) as group_name,
|
|
IF(ISNULL(Result_ProcessToOfficeID),'N','Y') as status,
|
|
if(Group_ResultFlagNonLab = 'N', 'default-format',fn_get_ready_email_format(T_OrderHeaderID,0,'N',Group_ResultName)) as format_email
|
|
FROM t_orderdetail
|
|
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_orderdelivery ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID AND T_OrderDeliveryM_DeliveryTypeID = 3 AND
|
|
T_OrderDeliveryIsActive = 'Y'
|
|
JOIN t_orderpromise ON T_OrderDetailT_OrderPromiseID = T_OrderPromiseID AND T_OrderPromiseIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagPerTest = 'N'
|
|
LEFT JOIN result_processtooffice ON Result_ProcessToOfficeT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
Result_ProcessToOfficeT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID AND
|
|
Result_ProcessToOfficeGroup_ResultID = Group_ResultID AND
|
|
Result_ProcessToOfficeStatus = 'S'
|
|
WHERE
|
|
T_OrderHeaderID = {$prm['order_id']} AND
|
|
DATE(T_OrderPromiseDateTime) = '{$prm['order_promise_date']}' AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
GROUP BY Group_ResultID
|
|
UNION
|
|
SELECT T_OrderHeaderID,
|
|
T_OrderPromiseID,
|
|
T_OrderPromiseDateTime,
|
|
T_OrderHeaderLabNumber,
|
|
UPPER(T_TestName) as group_name,
|
|
IF(ISNULL(Result_ProcessToOfficeID),'N','Y') as status,
|
|
if(Group_ResultFlagNonLab = 'N', 'default-format',fn_get_ready_email_format(T_OrderHeaderID,So_ResultEntryID,'Y',Group_ResultName)) as format_email
|
|
FROM t_orderdetail
|
|
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_orderdelivery ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID AND T_OrderDeliveryM_DeliveryTypeID = 3 AND
|
|
T_OrderDeliveryIsActive = 'Y'
|
|
JOIN t_orderpromise ON T_OrderDetailT_OrderPromiseID = T_OrderPromiseID AND T_OrderPromiseIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagPerTest = 'Y'
|
|
LEFT JOIN result_processtooffice ON Result_ProcessToOfficeT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
Result_ProcessToOfficeT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID AND
|
|
Result_ProcessToOfficeGroup_ResultID = T_TestID AND
|
|
Result_ProcessToOfficeStatus = 'S'
|
|
WHERE
|
|
T_OrderHeaderID = {$prm['order_id']} AND
|
|
DATE(T_OrderPromiseDateTime) = '{$prm['order_promise_date']}' AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
GROUP BY T_TestID
|
|
|
|
";
|
|
//echo $sql;
|
|
$rows['info_test'] = $this->db_onedev->query($sql)->result_array();
|
|
|
|
$sql = "SELECT DATE_FORMAT(Result_HandOverEmailSendDateTime,'%d-%m-%Y %H:%i') as sent_time,
|
|
DATE_FORMAT(Result_HandOverEmailReceivedDateTime,'%d-%m-%Y %H:%i') as received_time,
|
|
Result_HandOverEmailStatus as status,
|
|
M_StaffName as officer
|
|
FROM t_orderdelivery
|
|
JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_orderpromise ON T_OrderPromiseT_OrderHeaderID = T_OrderHeaderID AND
|
|
DATE(T_OrderPromiseDateTime) = '{$prm['order_promise_date']}' AND
|
|
T_OrderPromiseIsActive = 'Y'
|
|
JOIN result_handoveremail ON Result_HandOverEmailT_OrderHeaderID = T_OrderHeaderID AND
|
|
Result_HandOverEmailT_OrderPromiseID = T_OrderPromiseID AND
|
|
Result_HandOverEmailT_OrderDeliveryID = T_OrderDeliveryID
|
|
JOIN m_user ON Result_HandOverEmailOfficer = M_UserID
|
|
JOIN m_staff ON M_UserM_StaffID = M_StaffID
|
|
WHERE
|
|
T_OrderDeliveryID = {$prm['delivery_id']} AND T_OrderDeliveryIsActive = 'Y'
|
|
GROUP BY Result_HandOverEmailID
|
|
ORDER BY Result_HandOverEmailID ASC";
|
|
//echo $sql;
|
|
$rows['timeline'] = $this->db_onedev->query($sql)->result_array();
|
|
if(!$rows['timeline']){
|
|
$rows['timeline'] = array();
|
|
}
|
|
|
|
|
|
|
|
$result = array ("total" => 0, "records" => $rows);
|
|
$this->sys_ok($result);
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
|
|
}
|
|
|
|
function getinfo()
|
|
{
|
|
try {
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$rows = array();
|
|
|
|
$sql =" SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT *
|
|
FROM t_orderdelivery
|
|
JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_orderpromise ON T_OrderPromiseT_OrderHeaderID = T_OrderHeaderID AND
|
|
DATE(T_OrderPromiseDateTime) = '{$prm['startdate']}' AND
|
|
T_OrderPromiseIsActive = 'Y'
|
|
WHERE
|
|
T_OrderDeliveryM_DeliveryTypeID = 3 AND T_OrderDeliveryIsActive = 'Y'
|
|
GROUP BY T_OrderDeliveryID
|
|
) x
|
|
";
|
|
//echo $sql ;
|
|
$rows['total'] = $this->db_onedev->query($sql)->row()->xcount;
|
|
|
|
$sql =" SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT *
|
|
FROM t_orderdelivery
|
|
JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_orderpromise ON T_OrderPromiseT_OrderHeaderID = T_OrderHeaderID AND
|
|
DATE(T_OrderPromiseDateTime) = '{$prm['startdate']}' AND
|
|
T_OrderPromiseIsActive = 'Y'
|
|
JOIN result_handoveremail ON Result_HandOverEmailT_OrderHeaderID = T_OrderHeaderID AND
|
|
Result_HandOverEmailT_OrderPromiseID = T_OrderPromiseID AND
|
|
Result_HandOverEmailT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_HandOverEmailStatus = 'D'
|
|
WHERE
|
|
T_OrderDeliveryM_DeliveryTypeID = 3 AND T_OrderDeliveryIsActive = 'Y'
|
|
GROUP BY T_OrderDeliveryID
|
|
) x
|
|
";
|
|
//echo $sql ;
|
|
$rows['done'] = $this->db_onedev->query($sql)->row()->xcount;
|
|
|
|
$sql =" SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT *
|
|
FROM t_orderdelivery
|
|
JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_orderpromise ON T_OrderPromiseT_OrderHeaderID = T_OrderHeaderID AND
|
|
DATE(T_OrderPromiseDateTime) = '{$prm['startdate']}' AND
|
|
T_OrderPromiseIsActive = 'Y'
|
|
JOIN result_handoveremail ON Result_HandOverEmailT_OrderHeaderID = T_OrderHeaderID AND
|
|
Result_HandOverEmailT_OrderPromiseID = T_OrderPromiseID AND
|
|
Result_HandOverEmailT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_HandOverEmailStatus = 'S'
|
|
WHERE
|
|
T_OrderDeliveryM_DeliveryTypeID = 3 AND T_OrderDeliveryIsActive = 'Y'
|
|
GROUP BY T_OrderDeliveryID
|
|
) x
|
|
";
|
|
//echo $sql ;
|
|
$rows['send'] = $this->db_onedev->query($sql)->row()->xcount;
|
|
|
|
$sql =" SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT *
|
|
FROM t_orderdelivery
|
|
JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_orderpromise ON T_OrderPromiseT_OrderHeaderID = T_OrderHeaderID AND
|
|
DATE(T_OrderPromiseDateTime) = '{$prm['startdate']}' AND
|
|
T_OrderPromiseIsActive = 'Y'
|
|
JOIN result_handoveremail ON Result_HandOverEmailT_OrderHeaderID = T_OrderHeaderID AND
|
|
Result_HandOverEmailT_OrderPromiseID = T_OrderPromiseID AND
|
|
Result_HandOverEmailT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_HandOverEmailStatus = 'X'
|
|
WHERE
|
|
T_OrderDeliveryM_DeliveryTypeID = 3 AND T_OrderDeliveryIsActive = 'Y'
|
|
GROUP BY T_OrderDeliveryID
|
|
) x
|
|
";
|
|
//echo $sql ;
|
|
$rows['fail'] = $this->db_onedev->query($sql)->row()->xcount;
|
|
|
|
$sql =" SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT *
|
|
FROM t_orderdelivery
|
|
JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_orderpromise ON T_OrderPromiseT_OrderHeaderID = T_OrderHeaderID AND
|
|
DATE(T_OrderPromiseDateTime) = '{$prm['startdate']}' AND
|
|
T_OrderPromiseIsActive = 'Y'
|
|
JOIN result_handoveremail ON Result_HandOverEmailT_OrderHeaderID = T_OrderHeaderID AND
|
|
Result_HandOverEmailT_OrderPromiseID = T_OrderPromiseID AND
|
|
Result_HandOverEmailT_OrderDeliveryID = T_OrderDeliveryID AND
|
|
Result_HandOverEmailStatus = 'S'
|
|
WHERE
|
|
T_OrderDeliveryM_DeliveryTypeID = 3 AND T_OrderDeliveryIsActive = 'Y' AND
|
|
NOW() > DATE_ADD(Result_HandOverEmailSendDateTime, INTERVAL 1 HOUR)
|
|
GROUP BY T_OrderDeliveryID
|
|
) x
|
|
";
|
|
//echo $sql ;
|
|
$rows['warning'] = $this->db_onedev->query($sql)->row()->xcount;
|
|
|
|
|
|
$result = array ("total" => 0, "records" => $rows);
|
|
$this->sys_ok($result);
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|