Files
2026-04-15 15:23:57 +07:00

937 lines
53 KiB
PHP

<?php
class Updatestatus extends MY_Controller
{
var $db;
function __construct()
{
parent::__construct();
}
function index()
{
echo "Api: UPDATE STATUS X/R";
}
public function getRegionalIPAddress()
{
$sql_get = "SELECT S_SystemIPAddressRegional
FROM conf_systems
WHERE S_SystemsIsActive = 'Y'";
$qry = $this->db->query($sql_get);
if (!$qry) {
$this->db->trans_rollback();
$this->sys_error_db("get ip regional failed", $this->db);
exit;
}
$data = $qry->result_array();
return $data[0]['S_SystemIPAddressRegional'];
}
function getBranch()
{
try {
$sql = "SELECT M_BranchID, M_BranchCode FROM m_branch
WHERE M_BranchIsDefault = 'Y' AND M_BranchIsActive = 'Y'";
$qry = $this->db->query($sql, array());
if (!$qry) {
$response = [
'status' => false,
"message" => $this->db->error()["message"],
"msg" => "error get branch data ",
'query' => $this->db->last_query()
];
return $response;
}
$result = $qry->row_array();
return [
'status' => true,
'branchId' => $result['M_BranchID'],
'branchCode' => $result['M_BranchCode']
];
} catch (Exception $exc) {
$message = $exc->getMessage();
return [
'status' => false,
'message' => $message
];
}
}
function updatestatus()
{
try {
$getIPRegionalAddress = $this->getRegionalIPAddress();
$sql = "SELECT
T_OrderID,
T_OrderM_MouID,
T_OrderM_CompanyID,
T_OrderStatus,
IFNULL(T_OrderUploadLogIsUploaded, 'N') AS T_OrderUploadLogIsUploaded,
IFNULL(T_OrderUploadLogRetry, 0) AS T_OrderUploadLogRetry,
IFNULL(T_OrderUploadLogType, 'RXT') AS T_OrderUploadLogType
FROM
one_rujukan_eksternal.t_order
LEFT JOIN one_rujukan_eksternal.t_ordeuploadlog
ON T_OrderID = T_OrderUploadLogOrderID
AND (T_OrderUploadLogRetry < 5 OR T_OrderUploadLogRetry IS NULL)
AND (T_OrderUploadLogType = 'RXT' OR T_OrderUploadLogType IS NULL)
WHERE T_OrderStatus IN ('X', 'R', 'T')
AND (T_OrderUploadLogIsUploaded = 'N' OR T_OrderUploadLogIsUploaded IS NULL)
AND T_OrderIsActive = 'Y'";
$query = $this->db->query($sql, []);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$result = $query->result_array();
// print_r($result);
// exit;
for ($i = 0; $i < count($result); $i++) {
$sql = "SELECT
T_OrderDetailSampleID AS id,
T_OrderDetailSampleT_OrderID AS order_id,
T_OrderDetailSampleStatus AS status,
'S' AS type
FROM one_rujukan_eksternal.t_orderdetailsample
WHERE T_OrderDetailSampleT_OrderID = ?
AND T_OrderDetailSampleIsActive= 'Y'
UNION
SELECT
T_OrderDetailBahanID AS id,
T_OrderDetailBahanT_OrderID AS order_id,
T_OrderDetailBahanStatus AS status,
'B' AS type
FROM one_rujukan_eksternal.t_orderdetailbahan
WHERE T_OrderDetailBahanT_OrderID = ?
AND T_OrderDetailBahanIsActive = 'Y'";
$query = $this->db->query($sql, [$result[$i]['T_OrderID'], $result[$i]['T_OrderID']]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$result[$i]['sample'] = $query->result_array();
}
// $z_param = gzcompress(json_encode($result));
// print_r(json_encode($result));
// exit;
$resp = $this->post("http://$getIPRegionalAddress/one-api/one_rujukan_eksternal/Updatestatusreg/updatestatus", json_encode($result));
$response =
json_decode($resp, true)['data'];;
// $response = json_decode($resp);
for ($i = 0; $i < count($response['success']); $i++) {
$sql = "SELECT * FROM one_rujukan_eksternal.t_ordeuploadlog WHERE T_OrderUploadLogOrderID = ? AND T_OrderUploadLogType='RXT'";
$query = $this->db->query($sql, $response['success'][$i]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$rst = $query->result_array();
$data = "";
for ($k = 0; $k < count($result); $k++) {
if ($result[$k]['T_OrderID'] == $response['success'][$i]) {
$data = json_encode($result[$k]);
}
}
if (count($rst) == 0) {
$sql_success = "INSERT INTO one_rujukan_eksternal.t_ordeuploadlog
(T_OrderUploadLogOrderID,
T_OrderUploadLogJSON,
T_OrderUploadLogType,
T_OrderUploadLogIsUploaded,
T_OrderUploadLogRetry)
VALUES(?,?,?,?,?)";
$query_success = $this->db->query($sql_success, [$response['success'][$i], $data, 'RXT', 'Y', '1']);
if (!$query_success) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
} else {
$log = $rst[0];
$retry = intval($log['T_OrderUploadLogRetry']) + 1;
$sql_success = "UPDATE one_rujukan_eksternal.t_ordeuploadlog
SET T_OrderUploadLogIsUploaded = 'Y',
T_OrderUploadLogRetry = ?
WHERE T_OrderUploadLogOrderID = ? AND T_OrderUploadLogType='RXT'";
$query_success = $this->db->query($sql_success, [$retry, $response['success'][$i]]);
if (!$query_success) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
}
}
for ($i = 0; $i < count($response['error']); $i++) {
$sql = "SELECT * FROM one_rujukan_eksternal.t_ordeuploadlog WHERE T_OrderUploadLogOrderID = ? AND T_OrderUploadLogType='RXT'";
$query = $this->db->query($sql, $response['error'][$i]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$rst = $query->result_array();
$data = "";
for ($k = 0; $k < count($result); $k++) {
if ($result[$k]['T_OrderID'] == $response['error'][$i]) {
$data = json_encode($result[$k]);
}
}
if (count($rst) == 0) {
$sql_success = "INSERT INTO one_rujukan_eksternal.t_ordeuploadlog
(T_OrderUploadLogOrderID,
T_OrderUploadLogJSON,
T_OrderUploadLogType,
T_OrderUploadLogIsUploaded,
T_OrderUploadLogRetry)
VALUES(?,?,?,?,?)";
$query_success = $this->db->query($sql_success, [$response['error'][$i], $data, 'RXT', 'N', '1']);
if (!$query_success) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
} else {
$log = $rst[0];
$retry = intval($log['T_OrderUploadLogRetry']) + 1;
$sql_success = "UPDATE one_rujukan_eksternal.t_ordeuploadlog
SET T_OrderUploadLogIsUploaded = ?,
T_OrderUploadLogRetry = ?
WHERE T_OrderUploadLogOrderID = ? AND T_OrderUploadLogType='RXT'";
$query_success = $this->db->query($sql_success, ['N', $retry, $response['error'][$i]]);
if (!$query_success) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
}
}
$this->sys_ok($response);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function post($url, $data)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/text",
"Content-Length: " . strlen($data),
]);
$result = curl_exec($ch);
if (curl_error($ch) != "") {
echo json_encode([
"status" => "ERR",
"message" => "Http Error : " . curl_error($ch),
]);
curl_close($ch);
exit();
}
curl_close($ch);
return $result;
}
function convertobjtoarr($data)
{
if (is_object($data)) {
$data = get_object_vars($data);
}
if (is_array($data)) {
return array_map(__FUNCTION__, $data);
} else {
return $data;
}
}
function updatestatuspq()
{
try {
$getIPRegionalAddress = $this->getRegionalIPAddress();
$sql = "SELECT
IFNULL(T_OrderUploadLogIsUploaded, 'N') AS T_OrderUploadLogIsUploaded,
IFNULL(T_OrderUploadLogRetry, 0) AS T_OrderUploadLogRetry,
IFNULL(T_OrderUploadLogType, 'PQ') AS T_OrderUploadLogType,
one_rujukan_eksternal.t_order.*,
t_orderheader.*,
t_orderdetail.*
FROM t_orderheader
JOIN one_rujukan_eksternal.t_order
ON T_OrderHeaderID = T_OrderT_OrderHeaderID
JOIN t_orderdetail
ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
AND T_OrderIsActive= 'Y'
LEFT JOIN one_rujukan_eksternal.t_ordeuploadlog
ON T_OrderID = T_OrderUploadLogOrderID
AND (T_OrderUploadLogRetry < 5 OR T_OrderUploadLogRetry IS NULL)
AND (T_OrderUploadLogType = 'PQ' OR T_OrderUploadLogType IS NULL)
WHERE T_OrderHeaderIsActive = 'Y'
AND (T_OrderUploadLogIsUploaded = 'N' OR T_OrderUploadLogIsUploaded IS NULL)
";
$query = $this->db->query($sql, []);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$result = $query->result_array();
$arrOrderID = [];
$order = [];
for ($i = 0; $i < count($result); $i++) {
if (count($order) > 0) {
if (!in_array($result[$i]['T_OrderHeaderID'], $arrOrderID)) {
$arrOrderID[] = $result[$i]['T_OrderHeaderID'];
$order[] = [
"orderID" => $result[$i]['T_OrderID'],
"T_OrderHeaderID" => $result[$i]['T_OrderHeaderID'],
"T_OrderHeaderDate" => $result[$i]['T_OrderHeaderDate'],
"T_OrderHeaderLabNumber" => $result[$i]['T_OrderHeaderLabNumber'],
"T_OrderHeaderLabNumberExt" => $result[$i]['T_OrderHeaderLabNumberExt'],
"T_OrderHeaderQueue" => $result[$i]['T_OrderHeaderQueue'],
"T_OrderHeaderM_PatientID" => $result[$i]['T_OrderHeaderM_PatientID'],
"T_OrderHeaderM_CompanyID" => $result[$i]['T_OrderHeaderM_CompanyID'],
"T_OrderHeaderM_MouID" => $result[$i]['T_OrderHeaderM_MouID'],
"T_OrderHeaderM_PatientAge" => $result[$i]['T_OrderHeaderM_PatientAge'],
"T_OrderHeaderSenderM_DoctorID" => $result[$i]['T_OrderHeaderSenderM_DoctorID'],
"T_OrderHeaderSenderM_DoctorAddressID" => $result[$i]['T_OrderHeaderSenderM_DoctorAddressID'],
"T_OrderHeaderPjM_DoctorID" => $result[$i]['T_OrderHeaderPjM_DoctorID'],
"T_OrderHeaderM_LangID" => $result[$i]['T_OrderHeaderM_LangID'],
"T_OrderHeaderLangIsSI" => $result[$i]['T_OrderHeaderLangIsSI'],
"T_OrderHeaderIsCito" => $result[$i]['T_OrderHeaderIsCito'],
"T_OrderHeaderNat_CitoID" => $result[$i]['T_OrderHeaderNat_CitoID'],
"T_OrderHeaderDiagnose" => $result[$i]['T_OrderHeaderDiagnose'],
"T_OrderHeaderDoctorNote" => $result[$i]['T_OrderHeaderDoctorNote'],
"T_OrderHeaderVerificationNote" => $result[$i]['T_OrderHeaderVerificationNote'],
"T_OrderHeaderVerificationNoteM_UserID" => $result[$i]['T_OrderHeaderVerificationNoteM_UserID'],
"T_OrderHeaderFoNote" => $result[$i]['T_OrderHeaderFoNote'],
"T_OrderHeaderSamplingNote" => $result[$i]['T_OrderHeaderSamplingNote'],
"T_OrderHeaderResultNote" => $result[$i]['T_OrderHeaderResultNote'],
"T_OrderHeaderFoNoteM_UserID" => $result[$i]['T_OrderHeaderFoNoteM_UserID'],
"T_OrderHeaderSamplingNoteM_UserID" => $result[$i]['T_OrderHeaderSamplingNoteM_UserID'],
"T_OrderHeaderResultNoteM_UserID" => $result[$i]['T_OrderHeaderResultNoteM_UserID'],
"T_OrderHeaderReceivedSample" => $result[$i]['T_OrderHeaderReceivedSample'],
"T_OrderHeaderSubTotal" => $result[$i]['T_OrderHeaderSubTotal'],
"T_OrderHeaderRounding" => $result[$i]['T_OrderHeaderRounding'],
"T_OrderHeaderTotal" => $result[$i]['T_OrderHeaderTotal'],
"T_OrderHeaderCreated" => $result[$i]['T_OrderHeaderCreated'],
"T_OrderHeaderLastUpdated" => $result[$i]['T_OrderHeaderLastUpdated'],
"T_OrderHeaderUserID" => $result[$i]['T_OrderHeaderUserID'],
"T_OrderHeaderIsActive" => $result[$i]['T_OrderHeaderIsActive'],
"orderDetail" => []
];
}
for ($j = 0; $j < count($order); $j++) {
if ($order[$j]['T_OrderHeaderID'] == $result[$i]['T_OrderDetailT_OrderHeaderID']) {
$order[$j]['orderDetail'][] = [
"T_OrderDetailID" => $result[$i]['T_OrderDetailID'],
"T_OrderDetailT_OrderHeaderID" => $result[$i]['T_OrderDetailT_OrderHeaderID'],
"T_OrderDetailT_TestID" => $result[$i]['T_OrderDetailT_TestID'],
"T_OrderDetailT_TestCode" => $result[$i]['T_OrderDetailT_TestCode'],
"T_OrderDetailT_TestSasCode" => $result[$i]['T_OrderDetailT_TestSasCode'],
"T_OrderDetailT_TestName" => $result[$i]['T_OrderDetailT_TestName'],
"T_OrderDetailT_TestIsResult" => $result[$i]['T_OrderDetailT_TestIsResult'],
"T_OrderDetailT_TestIsPanel" => $result[$i]['T_OrderDetailT_TestIsPanel'],
"T_OrderDetailT_TestIsPanelChildren" => $result[$i]['T_OrderDetailT_TestIsPanelChildren'],
"T_OrderDetailT_TestIsPanelChildrenPrintNota" => $result[$i]['T_OrderDetailT_TestIsPanelChildrenPrintNota'],
"T_OrderDetailT_TestIsPrice" => $result[$i]['T_OrderDetailT_TestIsPrice'],
"T_OrderDetailReq" => $result[$i]['T_OrderDetailReq'],
"T_OrderDetailReqNote" => $result[$i]['T_OrderDetailReqNote'],
"T_OrderDetailIsCito" => $result[$i]['T_OrderDetailIsCito'],
"T_OrderDetailIsHidden" => $result[$i]['T_OrderDetailIsHidden'],
"T_OrderDetailPrice" => $result[$i]['T_OrderDetailPrice'],
"T_OrderDetailPriceForDisc" => $result[$i]['T_OrderDetailPriceForDisc'],
"T_OrderDetailDisc" => $result[$i]['T_OrderDetailDisc'],
"T_OrderDetailDiscAmount" => $result[$i]['T_OrderDetailDiscAmount'],
"T_OrderDetailDiscTotal" => $result[$i]['T_OrderDetailDiscTotal'],
"T_OrderDetailTotal" => $result[$i]['T_OrderDetailTotal'],
"T_OrderDetailHasResult" => $result[$i]['T_OrderDetailHasResult'],
"T_OrderDetailResult" => $result[$i]['T_OrderDetailResult'],
"T_OrderDetailResultFlag" => $result[$i]['T_OrderDetailResultFlag'],
"T_OrderDetailNote" => $result[$i]['T_OrderDetailNote'],
"T_OrderDetailNat_UnitID" => $result[$i]['T_OrderDetailNat_UnitID'],
"T_OrderDetailNat_UnitName" => $result[$i]['T_OrderDetailNat_UnitName'],
"T_OrderDetailT_OrderPromiseID" => $result[$i]['T_OrderDetailT_OrderPromiseID'],
"T_OrderDetailNat_InstrumentID" => $result[$i]['T_OrderDetailNat_InstrumentID'],
"T_OrderDetailVerDeltaCheck" => $result[$i]['T_OrderDetailVerDeltaCheck'],
"T_OrderDetailVerTrendAnalysis" => $result[$i]['T_OrderDetailVerTrendAnalysis'],
"T_OrderDetailVerification" => $result[$i]['T_OrderDetailVerification'],
"T_OrderDetailVerDate" => $result[$i]['T_OrderDetailVerDate'],
"T_OrderDetailVerUserID" => $result[$i]['T_OrderDetailVerUserID'],
"T_OrderDetailValMRState" => $result[$i]['T_OrderDetailValMRState'],
"T_OrderDetailValidation" => $result[$i]['T_OrderDetailValidation'],
"T_OrderDetailValDate" => $result[$i]['T_OrderDetailValDate'],
"T_OrderDetailValUserID" => $result[$i]['T_OrderDetailValUserID'],
"T_OrderDetailValidation1" => $result[$i]['T_OrderDetailValidation1'],
"T_OrderDetailValidation1UserID" => $result[$i]['T_OrderDetailValidation1UserID'],
"T_OrderDetailValidation1Time" => $result[$i]['T_OrderDetailValidation1Time'],
"T_OrderDetailValidation2" => $result[$i]['T_OrderDetailValidation2'],
"T_OrderDetailValidation2UserID" => $result[$i]['T_OrderDetailValidation2UserID'],
"T_OrderDetailValidation2Time" => $result[$i]['T_OrderDetailValidation2Time'],
"T_OrderDetailReqStatus" => $result[$i]['T_OrderDetailReqStatus'],
"T_OrderDetailPrintCount" => $result[$i]['T_OrderDetailPrintCount'],
"T_OrderDetailPrintBy" => $result[$i]['T_OrderDetailPrintBy'],
"T_OrderDetailPrintTime" => $result[$i]['T_OrderDetailPrintTime'],
"T_OrderDetailM_StatusDetailID" => $result[$i]['T_OrderDetailM_StatusDetailID'],
"T_OrderDetailCreated" => $result[$i]['T_OrderDetailCreated'],
"T_OrderDetailLastUpdated" => $result[$i]['T_OrderDetailLastUpdated'],
"T_OrderDetailUserID" => $result[$i]['T_OrderDetailUserID'],
"T_OrderDetailIsActive" => $result[$i]['T_OrderDetailIsActive'],
"T_OrderDetailNat_NormalValueID" => $result[$i]['T_OrderDetailNat_NormalValueID'],
"T_OrderDetailNormalValueNote" => $result[$i]['T_OrderDetailNormalValueNote'],
"T_OrderDetailNormalValueDescription" => $result[$i]['T_OrderDetailNormalValueDescription'],
"T_OrderDetailMinValue" => $result[$i]['T_OrderDetailMinValue'],
"T_OrderDetailMaxValue" => $result[$i]['T_OrderDetailMaxValue'],
"T_OrderDetailMinValueInclusive" => $result[$i]['T_OrderDetailMinValueInclusive'],
"T_OrderDetailMaxValueInclusive" => $result[$i]['T_OrderDetailMaxValueInclusive'],
"T_OrderDetailNat_MethodeID" => $result[$i]['T_OrderDetailNat_MethodeID'],
"T_OrderdetailNat_MethodeName" => $result[$i]['T_OrderdetailNat_MethodeName'],
"T_OrderDetailNat_NormalValueAnimalID" => $result[$i]['T_OrderDetailNat_NormalValueAnimalID'],
"T_OrderDetailInternalNote" => $result[$i]['T_OrderDetailInternalNote'],
];
}
}
} else {
$arrOrderID[] = $result[$i]['T_OrderHeaderID'];
$order[] = [
"orderID" => $result[$i]['T_OrderID'],
"T_OrderHeaderID" => $result[$i]['T_OrderHeaderID'],
"T_OrderHeaderDate" => $result[$i]['T_OrderHeaderDate'],
"T_OrderHeaderLabNumber" => $result[$i]['T_OrderHeaderLabNumber'],
"T_OrderHeaderLabNumberExt" => $result[$i]['T_OrderHeaderLabNumberExt'],
"T_OrderHeaderQueue" => $result[$i]['T_OrderHeaderQueue'],
"T_OrderHeaderM_PatientID" => $result[$i]['T_OrderHeaderM_PatientID'],
"T_OrderHeaderM_CompanyID" => $result[$i]['T_OrderHeaderM_CompanyID'],
"T_OrderHeaderM_MouID" => $result[$i]['T_OrderHeaderM_MouID'],
"T_OrderHeaderM_PatientAge" => $result[$i]['T_OrderHeaderM_PatientAge'],
"T_OrderHeaderSenderM_DoctorID" => $result[$i]['T_OrderHeaderSenderM_DoctorID'],
"T_OrderHeaderSenderM_DoctorAddressID" => $result[$i]['T_OrderHeaderSenderM_DoctorAddressID'],
"T_OrderHeaderPjM_DoctorID" => $result[$i]['T_OrderHeaderPjM_DoctorID'],
"T_OrderHeaderM_LangID" => $result[$i]['T_OrderHeaderM_LangID'],
"T_OrderHeaderLangIsSI" => $result[$i]['T_OrderHeaderLangIsSI'],
"T_OrderHeaderIsCito" => $result[$i]['T_OrderHeaderIsCito'],
"T_OrderHeaderNat_CitoID" => $result[$i]['T_OrderHeaderNat_CitoID'],
"T_OrderHeaderDiagnose" => $result[$i]['T_OrderHeaderDiagnose'],
"T_OrderHeaderDoctorNote" => $result[$i]['T_OrderHeaderDoctorNote'],
"T_OrderHeaderVerificationNote" => $result[$i]['T_OrderHeaderVerificationNote'],
"T_OrderHeaderVerificationNoteM_UserID" => $result[$i]['T_OrderHeaderVerificationNoteM_UserID'],
"T_OrderHeaderFoNote" => $result[$i]['T_OrderHeaderFoNote'],
"T_OrderHeaderSamplingNote" => $result[$i]['T_OrderHeaderSamplingNote'],
"T_OrderHeaderResultNote" => $result[$i]['T_OrderHeaderResultNote'],
"T_OrderHeaderFoNoteM_UserID" => $result[$i]['T_OrderHeaderFoNoteM_UserID'],
"T_OrderHeaderSamplingNoteM_UserID" => $result[$i]['T_OrderHeaderSamplingNoteM_UserID'],
"T_OrderHeaderResultNoteM_UserID" => $result[$i]['T_OrderHeaderResultNoteM_UserID'],
"T_OrderHeaderReceivedSample" => $result[$i]['T_OrderHeaderReceivedSample'],
"T_OrderHeaderSubTotal" => $result[$i]['T_OrderHeaderSubTotal'],
"T_OrderHeaderRounding" => $result[$i]['T_OrderHeaderRounding'],
"T_OrderHeaderTotal" => $result[$i]['T_OrderHeaderTotal'],
"T_OrderHeaderCreated" => $result[$i]['T_OrderHeaderCreated'],
"T_OrderHeaderLastUpdated" => $result[$i]['T_OrderHeaderLastUpdated'],
"T_OrderHeaderUserID" => $result[$i]['T_OrderHeaderUserID'],
"T_OrderHeaderIsActive" => $result[$i]['T_OrderHeaderIsActive'],
"orderDetail" => [[
"T_OrderDetailID" => $result[$i]['T_OrderDetailID'],
"T_OrderDetailT_OrderHeaderID" => $result[$i]['T_OrderDetailT_OrderHeaderID'],
"T_OrderDetailT_TestID" => $result[$i]['T_OrderDetailT_TestID'],
"T_OrderDetailT_TestCode" => $result[$i]['T_OrderDetailT_TestCode'],
"T_OrderDetailT_TestSasCode" => $result[$i]['T_OrderDetailT_TestSasCode'],
"T_OrderDetailT_TestName" => $result[$i]['T_OrderDetailT_TestName'],
"T_OrderDetailT_TestIsResult" => $result[$i]['T_OrderDetailT_TestIsResult'],
"T_OrderDetailT_TestIsPanel" => $result[$i]['T_OrderDetailT_TestIsPanel'],
"T_OrderDetailT_TestIsPanelChildren" => $result[$i]['T_OrderDetailT_TestIsPanelChildren'],
"T_OrderDetailT_TestIsPanelChildrenPrintNota" => $result[$i]['T_OrderDetailT_TestIsPanelChildrenPrintNota'],
"T_OrderDetailT_TestIsPrice" => $result[$i]['T_OrderDetailT_TestIsPrice'],
"T_OrderDetailReq" => $result[$i]['T_OrderDetailReq'],
"T_OrderDetailReqNote" => $result[$i]['T_OrderDetailReqNote'],
"T_OrderDetailIsCito" => $result[$i]['T_OrderDetailIsCito'],
"T_OrderDetailIsHidden" => $result[$i]['T_OrderDetailIsHidden'],
"T_OrderDetailPrice" => $result[$i]['T_OrderDetailPrice'],
"T_OrderDetailPriceForDisc" => $result[$i]['T_OrderDetailPriceForDisc'],
"T_OrderDetailDisc" => $result[$i]['T_OrderDetailDisc'],
"T_OrderDetailDiscAmount" => $result[$i]['T_OrderDetailDiscAmount'],
"T_OrderDetailDiscTotal" => $result[$i]['T_OrderDetailDiscTotal'],
"T_OrderDetailTotal" => $result[$i]['T_OrderDetailTotal'],
"T_OrderDetailHasResult" => $result[$i]['T_OrderDetailHasResult'],
"T_OrderDetailResult" => $result[$i]['T_OrderDetailResult'],
"T_OrderDetailResultFlag" => $result[$i]['T_OrderDetailResultFlag'],
"T_OrderDetailNote" => $result[$i]['T_OrderDetailNote'],
"T_OrderDetailNat_UnitID" => $result[$i]['T_OrderDetailNat_UnitID'],
"T_OrderDetailNat_UnitName" => $result[$i]['T_OrderDetailNat_UnitName'],
"T_OrderDetailT_OrderPromiseID" => $result[$i]['T_OrderDetailT_OrderPromiseID'],
"T_OrderDetailNat_InstrumentID" => $result[$i]['T_OrderDetailNat_InstrumentID'],
"T_OrderDetailVerDeltaCheck" => $result[$i]['T_OrderDetailVerDeltaCheck'],
"T_OrderDetailVerTrendAnalysis" => $result[$i]['T_OrderDetailVerTrendAnalysis'],
"T_OrderDetailVerification" => $result[$i]['T_OrderDetailVerification'],
"T_OrderDetailVerDate" => $result[$i]['T_OrderDetailVerDate'],
"T_OrderDetailVerUserID" => $result[$i]['T_OrderDetailVerUserID'],
"T_OrderDetailValMRState" => $result[$i]['T_OrderDetailValMRState'],
"T_OrderDetailValidation" => $result[$i]['T_OrderDetailValidation'],
"T_OrderDetailValDate" => $result[$i]['T_OrderDetailValDate'],
"T_OrderDetailValUserID" => $result[$i]['T_OrderDetailValUserID'],
"T_OrderDetailValidation1" => $result[$i]['T_OrderDetailValidation1'],
"T_OrderDetailValidation1UserID" => $result[$i]['T_OrderDetailValidation1UserID'],
"T_OrderDetailValidation1Time" => $result[$i]['T_OrderDetailValidation1Time'],
"T_OrderDetailValidation2" => $result[$i]['T_OrderDetailValidation2'],
"T_OrderDetailValidation2UserID" => $result[$i]['T_OrderDetailValidation2UserID'],
"T_OrderDetailValidation2Time" => $result[$i]['T_OrderDetailValidation2Time'],
"T_OrderDetailReqStatus" => $result[$i]['T_OrderDetailReqStatus'],
"T_OrderDetailPrintCount" => $result[$i]['T_OrderDetailPrintCount'],
"T_OrderDetailPrintBy" => $result[$i]['T_OrderDetailPrintBy'],
"T_OrderDetailPrintTime" => $result[$i]['T_OrderDetailPrintTime'],
"T_OrderDetailM_StatusDetailID" => $result[$i]['T_OrderDetailM_StatusDetailID'],
"T_OrderDetailCreated" => $result[$i]['T_OrderDetailCreated'],
"T_OrderDetailLastUpdated" => $result[$i]['T_OrderDetailLastUpdated'],
"T_OrderDetailUserID" => $result[$i]['T_OrderDetailUserID'],
"T_OrderDetailIsActive" => $result[$i]['T_OrderDetailIsActive'],
"T_OrderDetailNat_NormalValueID" => $result[$i]['T_OrderDetailNat_NormalValueID'],
"T_OrderDetailNormalValueNote" => $result[$i]['T_OrderDetailNormalValueNote'],
"T_OrderDetailNormalValueDescription" => $result[$i]['T_OrderDetailNormalValueDescription'],
"T_OrderDetailMinValue" => $result[$i]['T_OrderDetailMinValue'],
"T_OrderDetailMaxValue" => $result[$i]['T_OrderDetailMaxValue'],
"T_OrderDetailMinValueInclusive" => $result[$i]['T_OrderDetailMinValueInclusive'],
"T_OrderDetailMaxValueInclusive" => $result[$i]['T_OrderDetailMaxValueInclusive'],
"T_OrderDetailNat_MethodeID" => $result[$i]['T_OrderDetailNat_MethodeID'],
"T_OrderdetailNat_MethodeName" => $result[$i]['T_OrderdetailNat_MethodeName'],
"T_OrderDetailNat_NormalValueAnimalID" => $result[$i]['T_OrderDetailNat_NormalValueAnimalID'],
"T_OrderDetailInternalNote" => $result[$i]['T_OrderDetailInternalNote'],
]]
];
}
}
for ($i = 0; $i < count($order); $i++) {
$status = [];
for ($j = 0; $j < count($order[$i]['orderDetail']); $j++) {
$status[] = $order[$i]['orderDetail'][$j]['T_OrderDetailValidation'];
}
if (in_array('X', $status)) {
$order[$i]['status'] = "Q";
} else {
$order[$i]['status'] = "P";
}
}
$resp = $this->post("http://$getIPRegionalAddress/one-api/one_rujukan_eksternal/Updatestatusreg/updatestatuspq", json_encode($order));
$response =
json_decode($resp, true)['data'];;
// // $response = json_decode($resp);
// print_r($order);
// exit;
for ($i = 0; $i < count($response['success']); $i++) {
$sql = "SELECT * FROM one_rujukan_eksternal.t_ordeuploadlog WHERE T_OrderUploadLogOrderID = ? AND T_OrderUploadLogType='PQ'";
$query = $this->db->query($sql, $response['success'][$i]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$rst = $query->result_array();
$data = "";
for ($k = 0; $k < count($order); $k++) {
if ($order[$k]['orderID'] == $response['success'][$i]) {
$data = json_encode($order[$k]);
}
}
if (count($rst) == 0) {
$sql_success = "INSERT INTO one_rujukan_eksternal.t_ordeuploadlog
(T_OrderUploadLogOrderID,
T_OrderUploadLogJSON,
T_OrderUploadLogType,
T_OrderUploadLogIsUploaded,
T_OrderUploadLogRetry)
VALUES(?,?,?,?,?)";
$query_success = $this->db->query($sql_success, [$response['success'][$i], $data, 'PQ', 'Y', '1']);
if (!$query_success) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
} else {
$log = $rst[0];
$retry = intval($log['T_OrderUploadLogRetry']) + 1;
$sql_success = "UPDATE one_rujukan_eksternal.t_ordeuploadlog
SET T_OrderUploadLogIsUploaded = 'Y',
T_OrderUploadLogRetry = ?
WHERE T_OrderUploadLogOrderID = ? AND T_OrderUploadLogType='PQ'";
$query_success = $this->db->query($sql_success, [$retry, $response['success'][$i]]);
if (!$query_success) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
}
}
for ($i = 0; $i < count($response['error']); $i++) {
$sql = "SELECT * FROM one_rujukan_eksternal.t_ordeuploadlog WHERE T_OrderUploadLogOrderID = ? AND T_OrderUploadLogType='PQ'";
$query = $this->db->query($sql, $response['error'][$i]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$rst = $query->result_array();
$data = "";
for ($k = 0; $k < count($result); $k++) {
if ($result[$k]['orderID'] == $response['error'][$i]) {
$data = json_encode($result[$k]);
}
}
if (count($rst) == 0) {
$sql_success = "INSERT INTO one_rujukan_eksternal.t_ordeuploadlog
(T_OrderUploadLogOrderID,
T_OrderUploadLogJSON,
T_OrderUploadLogType,
T_OrderUploadLogIsUploaded,
T_OrderUploadLogRetry)
VALUES(?,?,?,?,?)";
$query_success = $this->db->query($sql_success, [$response['error'][$i], $data, 'PQ', 'N', '1']);
if (!$query_success) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
} else {
$log = $rst[0];
$retry = intval($log['T_OrderUploadLogRetry']) + 1;
$sql_success = "UPDATE one_rujukan_eksternal.t_ordeuploadlog
SET T_OrderUploadLogIsUploaded = ?,
T_OrderUploadLogRetry = ?
WHERE T_OrderUploadLogOrderID = ? AND T_OrderUploadLogType='PQ'";
$query_success = $this->db->query($sql_success, ['N', $retry, $response['error'][$i]]);
if (!$query_success) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
}
}
$this->sys_ok($response);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function updateStatusPickup()
{
try {
$getIPRegionalAddress = $this->getRegionalIPAddress();
$sql = "SELECT *
FROM one_rujukan_eksternal.t_orderdelivery
LEFT JOIN one_rujukan_eksternal.t_orderdeliveryuploadlog
ON T_OrderDeliveryID = T_OrderDeliveryUploadLogT_OrderDeliveryID
AND (T_OrderDeliveryUploadLogType = 'U' OR T_OrderDeliveryUploadLogType IS NULL)
AND (T_OrderDeliveryUploadRetry < 5 OR T_OrderDeliveryUploadRetry IS NULL)
AND ( T_OrderDeliveryUploadLogIsUploaded = 'N' OR T_OrderDeliveryUploadLogIsUploaded IS NULL)
WHERE
T_OrderDeliveryStatus = 'U'
AND T_OrderDeliveryIsActive = 'Y'";
$query = $this->db->query($sql, []);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$result = $query->result_array();
$dataSend = array();
for ($i = 0; $i < count($result); $i++) {
$dataSend[] = $result[$i]['T_OrderDeliveryID'];
}
$resp = $this->post("http://$getIPRegionalAddress/one-api/one_rujukan_eksternal/Updatestatusreg/updatestatuspickup", json_encode(['data' => $dataSend]));
$respData = json_decode($resp, true);
for ($i = 0; $i < count($respData['success']); $i++) {
$dataSuccess = array();
for ($j = 0; $j < count($result); $j++) {
if ($result[$j]['T_OrderDeliveryID'] == $respData['success'][$i]) {
$dataSuccess = $result[$i];
}
}
if ($dataSuccess['T_OrderDeliveryUploadLogID'] == NULL) {
//insert
$sql = "INSERT INTO one_rujukan_eksternal.t_orderdeliveryuploadlog(
T_OrderDeliveryUploadLogT_OrderDeliveryID,
T_OrderDeliveryUploadLogType,
T_OrderDeliveryUploadLogIsUploaded,
T_OrderDeliveryUploadRetry)
VALUES(?,'U','Y',1)";
$query = $this->db->query($sql, [$dataSuccess['T_OrderDeliveryID']]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
} else {
$sql = "UPDATE one_rujukan_eksternal.t_orderdeliveryuploadlog
SET T_OrderDeliveryUploadLogIsUploaded = 'Y',
T_OrderDeliveryUploadRetry = ?
WHERE T_OrderDeliveryUploadLogT_OrderDeliveryID = ?";
$query = $this->db->query($sql, [
intval($dataSuccess['T_OrderDeliveryUploadRetry']) + 1,
$dataSuccess['T_OrderDeliveryID']
]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
}
}
for ($i = 0; $i < count($respData['error']); $i++) {
$dataError = array();
for ($j = 0; $j < count($result); $j++) {
if ($result[$i]['T_OrderDeliveryID'] == $respData['error'][$i]) {
# code...
$dataError = $result[$i];
}
}
if ($dataError['T_OrderDeliveryUploadLogID'] == NULL) {
//insert
$sql = "INSERT INTO one_rujukan_eksternal.t_orderdeliveryuploadlog(
T_OrderDeliveryUploadLogT_OrderDeliveryID,
T_OrderDeliveryUploadLogType,
T_OrderDeliveryUploadLogIsUploaded,
T_OrderDeliveryUploadRetry)
VALUES(?,'U','N',1)";
$query = $this->db->query($sql, [$dataError['T_OrderDeliveryID']]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
} else {
$sql = "UPDATE one_rujukan_eksternal.t_orderdeliveryuploadlog
SET T_OrderDeliveryUploadLogIsUploaded = 'N',
T_OrderDeliveryUploadRetry = ?
WHERE T_OrderDeliveryUploadLogT_OrderDeliveryID = ?";
$query = $this->db->query($sql, [
intval($dataError['T_OrderDeliveryUploadRetry']) + 1,
$dataError['T_OrderDeliveryID']
]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
}
}
$this->sys_ok($respData);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function updateReason()
{
try {
$getIPRegionalAddress = $this->getRegionalIPAddress();
$sql = "SELECT *
FROM one_rujukan_eksternal.t_orderdelivery
LEFT JOIN one_rujukan_eksternal.t_orderdeliveryuploadlog
ON T_OrderDeliveryID = T_OrderDeliveryUploadLogT_OrderDeliveryID
AND (T_OrderDeliveryUploadLogType = 'R' OR T_OrderDeliveryUploadLogType IS NULL)
AND (T_OrderDeliveryUploadRetry < 5 OR T_OrderDeliveryUploadRetry IS NULL)
AND ( T_OrderDeliveryUploadLogIsUploaded = 'N' OR T_OrderDeliveryUploadLogIsUploaded IS NULL)
WHERE
T_OrderDeliveryIsActive = 'Y'
AND (T_OrderDeliveryReason IS NOT NULL OR T_OrderDeliveryReason <> '')";
$query = $this->db->query($sql, []);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$result = $query->result_array();
$dataSend = array();
for ($i = 0; $i < count($result); $i++) {
$dataSend[] = [
"id" => $result[$i]['T_OrderDeliveryID'],
"reason" => $result[$i]['T_OrderDeliveryReason']
];
}
$resp = $this->post("http://$getIPRegionalAddress/one-api/one_rujukan_eksternal/Updatestatusreg/updatereason", json_encode(['data' => $dataSend]));
$respData = json_decode($resp, true);
// print_r($respData);
// exit;
for ($i = 0; $i < count($respData['success']); $i++) {
$dataSuccess = array();
for ($j = 0; $j < count($result); $j++) {
if ($result[$j]['T_OrderDeliveryID'] == $respData['success'][$i]['id']) {
$dataSuccess = $result[$i];
}
}
if ($dataSuccess['T_OrderDeliveryUploadLogID'] == NULL) {
//insert
$sql = "INSERT INTO one_rujukan_eksternal.t_orderdeliveryuploadlog(
T_OrderDeliveryUploadLogT_OrderDeliveryID,
T_OrderDeliveryUploadLogType,
T_OrderDeliveryUploadLogIsUploaded,
T_OrderDeliveryUploadRetry)
VALUES(?,'R','Y',1)";
$query = $this->db->query($sql, [$dataSuccess['T_OrderDeliveryID']]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
} else {
$sql = "UPDATE one_rujukan_eksternal.t_orderdeliveryuploadlog
SET T_OrderDeliveryUploadLogIsUploaded = 'Y',
T_OrderDeliveryUploadRetry = ?
WHERE T_OrderDeliveryUploadLogT_OrderDeliveryID = ?";
$query = $this->db->query($sql, [
intval($dataSuccess['T_OrderDeliveryUploadRetry']) + 1,
$dataSuccess['T_OrderDeliveryID']
]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
}
}
for ($i = 0; $i < count($respData['error']); $i++) {
$dataError = array();
for ($j = 0; $j < count($result); $j++) {
if ($result[$i]['T_OrderDeliveryID'] == $respData['error'][$i]) {
# code...
$dataError = $result[$i];
}
}
if ($dataError['T_OrderDeliveryUploadLogID'] == NULL) {
//insert
$sql = "INSERT INTO one_rujukan_eksternal.t_orderdeliveryuploadlog(
T_OrderDeliveryUploadLogT_OrderDeliveryID,
T_OrderDeliveryUploadLogType,
T_OrderDeliveryUploadLogIsUploaded,
T_OrderDeliveryUploadRetry)
VALUES(?,'R','N',1)";
$query = $this->db->query($sql, [$dataError['T_OrderDeliveryID']]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
} else {
$sql = "UPDATE one_rujukan_eksternal.t_orderdeliveryuploadlog
SET T_OrderDeliveryUploadLogIsUploaded = 'N',
T_OrderDeliveryUploadRetry = ?
WHERE T_OrderDeliveryUploadLogT_OrderDeliveryID = ?";
$query = $this->db->query($sql, [
intval($dataError['T_OrderDeliveryUploadRetry']) + 1,
$dataError['T_OrderDeliveryID']
]);
if (!$query) {
$message = $this->db->error();
$this->sys_error($message);
exit;
}
}
}
$this->sys_ok($respData);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function updatebranch()
{
try {
$success = array();
$error = [];
$errorMsg = [];
$getIPRegionalAddress = $this->getRegionalIPAddress();
$branch = $this->getBranch();
$branchID = $branch['branchId'];
$prm = [
"branchID" => $branchID
];
$resp = $this->post("http://$getIPRegionalAddress/one-api/one_rujukan_eksternal/Updatestatusreg/updatebranch", json_encode($prm));
$respData = json_decode($resp, true);
// print_r($respData);
// exit;
for ($i = 0; $i < count($respData); $i++) {
// n kan data
$sql = "UPDATE one_rujukan_eksternal.t_orderdelivery
SET T_OrderDeliveryIsActive = 'N'
WHERE T_OrderDeliveryID = ?";
$query = $this->db->query($sql, [
$respData[$i]['deliveryID']
]);
if (!$query) {
$message = $this->db->error();
// $this->sys_error($message);
$error[] = $respData[$i]['deliveryID'];
$errorMsg[] = $message;
// exit;
}
$success[] = $respData[$i]['deliveryID'];
$sql = "UPDATE one_rujukan_eksternal.t_orderdetaildelivery
SET T_OrderDetailDeliveryIsActive = 'N'
WHERE T_OrderDetailDeliveryT_OrderDeliveryID = ?";
$query = $this->db->query($sql, [
$respData[$i]['deliveryID']
]);
if (!$query) {
$message = $this->db->error();
// $this->sys_error($message);
$error[] = $respData[$i]['deliveryID'];
$errorMsg[] = $message;
// exit;
}
$success[] = $respData[$i]['deliveryID'];
//get data order
$sql = "UPDATE one_rujukan_eksternal.t_orderdetaildelivery
SET T_OrderDetailDeliveryIsActive = 'N'
WHERE T_OrderDetailDeliveryT_OrderDeliveryID = ?";
$query = $this->db->query(
$sql,
[
$respData[$i]['deliveryID']
]
);
if (!$query) {
$message = $this->db->error();
// $this->sys_error($message);
$error[] = $respData[$i]['deliveryID'];
$errorMsg[] = $message;
// exit;
}
}
$prmStatus = [
"branchID" => $branchID,
"data" => [
"success" => $success
]
];
$resp2 = $this->post("http://$getIPRegionalAddress/one-api/one_rujukan_eksternal/Updatestatusreg/updatebranchdownload", json_encode($prmStatus));
$respData2 = json_decode($resp2, true);
$response = [
"update_lokal" => [
"success" => $success,
"error" => $error,
"errorMsg" => $errorMsg,
],
"data_update_lokal" => $respData,
"data_update_regional" => $respData2,
];
$this->sys_ok($response);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
}