Initial import
This commit is contained in:
1001
application/controllers/hs/Download_hs.php
Normal file
1001
application/controllers/hs/Download_hs.php
Normal file
File diff suppressed because it is too large
Load Diff
2069
application/controllers/hs/Generate_order.php
Normal file
2069
application/controllers/hs/Generate_order.php
Normal file
File diff suppressed because it is too large
Load Diff
74
application/controllers/hs/New_order_whatsapp.php
Normal file
74
application/controllers/hs/New_order_whatsapp.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
class New_order_whatsapp extends MY_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
function index()
|
||||
{
|
||||
echo "API NEW ORDER WHATSAPP";
|
||||
}
|
||||
public function add_order($transactionID)
|
||||
{
|
||||
$sqlname = $this->db->query("SELECT t_transactionHSOrderName as pname
|
||||
FROM one_hs.t_transactionHS
|
||||
WHERE t_transactionHST_TransactionID = $transactionID")->row();
|
||||
$pname = $sqlname->pname;
|
||||
|
||||
$sqlhp = $this->db->query("SELECT t_transactionHSOrderNoHP as hp
|
||||
FROM one_hs.t_transactionHS
|
||||
WHERE t_transactionHST_TransactionID = $transactionID")->row();
|
||||
$hp = $sqlhp->hp;
|
||||
|
||||
$sqldate = $this->db->query("SELECT DATE_FORMAT(T_OrderDate,'%d-%m-%Y') as pdate
|
||||
FROM one_hs.t_transactionHS
|
||||
JOIN one_hs.t_order ON T_OrderT_TransactionID = t_transactionHST_TransactionID
|
||||
WHERE t_transactionHST_TransactionID = $transactionID
|
||||
GROUP BY t_transactionHSID")->row();
|
||||
$pdate = $sqldate->pdate;
|
||||
|
||||
$sqljam = $this->db->query("SELECT T_OrderTime as pjam
|
||||
FROM one_hs.t_transactionHS
|
||||
JOIN one_hs.t_order ON T_OrderT_TransactionID = t_transactionHST_TransactionID
|
||||
WHERE t_transactionHST_TransactionID = $transactionID
|
||||
GROUP BY t_transactionHSID")->row();
|
||||
$pjam = $sqljam->pjam;
|
||||
|
||||
$sqlmessage = $this->db->query("SELECT REPLACE(REPLACE(REPLACE(HS_MessageText,'{PASIEN}','{$pname}'),'{TANGGAL}','{$pdate}'),'{JAM}','{$pjam}') as pmessage
|
||||
FROM one_hs.hs_message
|
||||
WHERE HS_MessageType = 'NEW'")->row();
|
||||
$pmessage = $sqlmessage->pmessage;
|
||||
|
||||
$sqlwa = $this->db->query("SELECT HS_WhatsAppID as pwa
|
||||
FROM one_hs.hs_whatsapp
|
||||
WHERE HS_WhatsAppType = 'NEW' AND HS_WhatsAppT_TransactionID = $transactionID")->row();
|
||||
$pwa = $sqlwa->pwa;
|
||||
|
||||
IF(empty($pwa)){
|
||||
$sql = "INSERT INTO one_hs.hs_whatsapp (HS_WhatsAppT_TransactionID,
|
||||
HS_WhatsAppName,
|
||||
HS_WhatsAppNoHP,
|
||||
HS_WhatsAppMessage,
|
||||
HS_WhatsAppType,
|
||||
HS_WhatsAppUserID)
|
||||
VALUES(
|
||||
$transactionID,
|
||||
'{$pname}',
|
||||
'{$hp}',
|
||||
'{$pmessage}',
|
||||
'NEW',
|
||||
0)";
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
echo json_encode(['status' => 'ERR', 'message' => print_r($this->db->error(), true)]);
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode(['status' => 'OK', 'message' => $pmessage]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
225
application/controllers/hs/Send_whatsapp.php
Normal file
225
application/controllers/hs/Send_whatsapp.php
Normal file
@@ -0,0 +1,225 @@
|
||||
<?php
|
||||
class Send_whatsapp extends MY_Controller
|
||||
{
|
||||
var $db;
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
function index()
|
||||
{
|
||||
echo "API SEND WHATSAPP";
|
||||
}
|
||||
|
||||
function send()
|
||||
{
|
||||
$sql = "SELECT HS_WhatsAppID,
|
||||
HS_WhatsAppName,
|
||||
HS_WhatsAppNoHP,
|
||||
HS_WhatsAppMessage
|
||||
FROM one_hs.hs_whatsapp
|
||||
WHERE HS_WhatsAppIsActive = 'Y'
|
||||
AND (HS_WhatsAppIsSent = 'N' OR HS_WhatsAppIsSent = 'R')
|
||||
ORDER BY HS_WhatsAppID LIMIT 1";
|
||||
$qry = $this->db->query($sql);
|
||||
if ($qry) {
|
||||
$rows = $qry->result_array();
|
||||
} else {
|
||||
$this->sys_error_db("select whatsapp error", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
$url = "https://region02.krmpesan.com/api/v2/message/send-text";
|
||||
|
||||
foreach ($rows as $key => $value) {
|
||||
$waId = $value["HS_WhatsAppID"];
|
||||
$hp = $value["HS_WhatsAppNoHP"];
|
||||
$message = $value["HS_WhatsAppMessage"];
|
||||
$data = json_encode(["phone" => $hp, "message" => $message]);
|
||||
$resp = $this->post($url, $data);
|
||||
$j_response = json_decode($resp, true);
|
||||
if ($j_response["code"] == 200) {
|
||||
$queue_id = $j_response["data"]["queue_id"];
|
||||
$sql_update = "UPDATE one_hs.hs_whatsapp SET
|
||||
HS_WhatsAppIsSent = 'Y',
|
||||
HS_WhatsAppSentDate = NOW(),
|
||||
queue_id = ?
|
||||
WHERE HS_WhatsAppID = ?";
|
||||
$qry_update = $this->db->query($sql_update, array(
|
||||
$queue_id,
|
||||
$waId
|
||||
));
|
||||
if (!$qry_update) {
|
||||
$this->sys_error_db("update whatsapp error", $this->db);
|
||||
exit;
|
||||
}
|
||||
$result = [
|
||||
"status" => "OK"
|
||||
];
|
||||
} else {
|
||||
$sql_update = "UPDATE one_hs.hs_whatsapp SET
|
||||
HS_WhatsAppIsSent = if(HS_WhatsAppRetry >= 3, 'E', 'N'),
|
||||
HS_WhatsAppRetry = HS_WhatsAppRetry + 1
|
||||
WHERE HS_WhatsAppID = ?";
|
||||
$qry_update = $this->db->query($sql_update, array(
|
||||
$waId
|
||||
));
|
||||
if (!$qry_update) {
|
||||
$this->sys_error_db("update whatsapp error", $this->db);
|
||||
exit;
|
||||
}
|
||||
$result = [
|
||||
"status" => "ERR",
|
||||
"message" => $resp
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
|
||||
function send_text($hp, $message)
|
||||
{
|
||||
$url = "https://region01.krmpesan.com/api/v2/message/send-text";
|
||||
$data = json_encode(["phone" => $hp, "message" => $message]);
|
||||
$resp = $this->post($url, $data);
|
||||
print_r(json_decode($resp, true));
|
||||
print_r($resp);
|
||||
}
|
||||
|
||||
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/json",
|
||||
'Accept: application/json',
|
||||
'Authorization: Bearer eefH4rCmFpq9ATWusJE8pNy0FRCJKOzzzwrfWSHTrnoK5QWkcDiI5AtPtBI5HocGTWVXRVkkTa6SwUV2',
|
||||
"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 search()
|
||||
{
|
||||
try {
|
||||
if (!$this->isLogin) {
|
||||
$this->sys_error("Invalid Token");
|
||||
exit;
|
||||
}
|
||||
$prm = $this->sys_input;
|
||||
$date = date("Y-m-d");
|
||||
if (isset($prm['date'])) {
|
||||
$date = $prm["date"];
|
||||
}
|
||||
|
||||
$sortBy = $prm["sortBy"];
|
||||
$sortStatus = $prm["sortStatus"];
|
||||
if ($sortBy) {
|
||||
$q_sort = "ORDER BY " . $sortBy . " " . $sortStatus;
|
||||
}
|
||||
|
||||
$number_offset = 0;
|
||||
$number_limit = 10;
|
||||
if ($prm["current_page"] > 0) {
|
||||
$number_offset = ($prm["current_page"] - 1) * $number_limit;
|
||||
}
|
||||
|
||||
$sql_filter = "SELECT count(*) as total
|
||||
FROM one_hs.hs_whatsapp
|
||||
WHERE HS_WhatsAppIsActive = 'Y'
|
||||
AND (DATE(HS_WhatsAppCreated) = ?)";
|
||||
$qry_filter = $this->db->query($sql_filter, array($date));
|
||||
|
||||
$tot_count = 0;
|
||||
$tot_page = 0;
|
||||
if ($qry_filter) {
|
||||
$tot_count = $qry_filter->result_array()[0]["total"];
|
||||
$tot_page = ceil($tot_count / $number_limit);
|
||||
} else {
|
||||
$this->sys_error_db("whatsapp sount", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
$sql = "SELECT HS_WhatsAppID,
|
||||
HS_WhatsAppName,
|
||||
HS_WhatsAppNoHP,
|
||||
HS_WhatsAppMessage,
|
||||
HS_WhatsAppType,
|
||||
HS_WhatsAppIsSent,
|
||||
queue_id
|
||||
FROM one_hs.hs_whatsapp
|
||||
WHERE HS_WhatsAppIsActive = 'Y'
|
||||
AND (DATE(HS_WhatsAppCreated) = ?)
|
||||
$q_sort LIMIT ? OFFSET ? ";
|
||||
$qry = $this->db->query($sql, array($date, $number_limit, $number_offset));
|
||||
// $last_qry = $this->db->last_query();
|
||||
// print_r($last_qry);
|
||||
if ($qry) {
|
||||
$rows = $qry->result_array();
|
||||
} else {
|
||||
$this->sys_error_db("whatsapp select", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
$result = array(
|
||||
"total" => $tot_page,
|
||||
"total_filter" => $tot_count,
|
||||
"records" => $rows
|
||||
);
|
||||
$this->sys_ok($result);
|
||||
} catch (Exception $exc) {
|
||||
$message = $exc->getMessage();
|
||||
$this->sys_error($message);
|
||||
}
|
||||
}
|
||||
|
||||
function resend()
|
||||
{
|
||||
try {
|
||||
if (!$this->isLogin) {
|
||||
$this->sys_error("Invalid Token");
|
||||
exit;
|
||||
}
|
||||
$prm = $this->sys_input;
|
||||
$whatsappid = "";
|
||||
if (isset($prm['whatsappid'])) {
|
||||
$whatsappid = trim($prm["whatsappid"]);
|
||||
}
|
||||
|
||||
$sql_upt = "UPDATE one_hs.hs_whatsapp SET
|
||||
HS_WhatsAppIsSent = 'R',
|
||||
HS_WhatsAppRetry = 0,
|
||||
queue_id = NULL
|
||||
WHERE HS_WhatsAppID = ?";
|
||||
$qry_upt = $this->db->query($sql_upt, array($whatsappid));
|
||||
if (!$qry_upt) {
|
||||
$this->sys_error_db("whatsapp update resend error", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
$result = array(
|
||||
"status" => "OK"
|
||||
);
|
||||
$this->sys_ok($result);
|
||||
} catch (Exception $exc) {
|
||||
$message = $exc->getMessage();
|
||||
$this->sys_error($message);
|
||||
}
|
||||
}
|
||||
}
|
||||
400
application/controllers/hs/Send_whatsappv2.php
Normal file
400
application/controllers/hs/Send_whatsappv2.php
Normal file
@@ -0,0 +1,400 @@
|
||||
<?php
|
||||
class Send_whatsappv2 extends MY_Controller
|
||||
{
|
||||
var $db;
|
||||
var $REFRESH_TOKEN = 'eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.tkPaJP6aq5gFQ-PzoxqMxB1gke7HGFf86mDEF7UkKQvcjLW8f0FaxG-yU2Unm37BeRtKyeqF-31qfuFOqIhOOf_qqPxp6akEIgtX5i_QEd_ixCWn3ZEA8Aa5_KsRdVQP6b3wYxdp82khY2w1y8qi-Y1omDv2tsq2eLuyj_lgz9__bsbvLyRxvlUj-0-TW2ScWan3T6vFL-J6_aqZyKmiv3nOhf1nfueFVDRlw6H6O3J3x_VCxVzoF66ey9P0PBlqiHCC3boWE6df1akJKPy0RzomW-T9U_NhP7TtbC6i5dikrrUMf7wgFX1h4ksdgQFvZT__VDw5XPNxhzpi7xmfcw.kN6y_8O03otAK3Ad.2VKKY-zRg1vAgIPXWenNvloKOprYBjfFvl41r3NnnER8R8LFF1AfXAgfEJlGoYRaHEakC2t9jHwmW3hG-_x1pTTtho7mjYWDl3x-Cqn5sGjHBeiFYHDP-PD8nv8kdU3cZ8HJqEhUloOPxQLa-5ajaoPYetM483QVLkoYZXpTDh9uSk2cR5MpdEpQsGK2JSH8w7c7ZgHCotBu0cjOFMYBfnZ9ebKHtL0pvqs9WdDlEZbukdHv-9XWLVtFSmKyaEWfMks9sBS20hOcRvpwyB4MrRsRyjMfO8QZFOgpeU1dH-vtDumMASUDlZb6Lb6IKmpvYmu9FdfCeiHXML3D_MVrq_HIC5mO6qb3s5O1yfKQ0jWEzSFdlJIzYyqzwVkgEwC6X_FxtxxqY7wlRxUhIxkS5Qy29CNNueGGWIYqd5E4CmXJylIIzAa6Ak2fBXXScG3tW9DyaopOAQpY8QOTaEXfJeSfbX-f5hvGqP6Av5KD3Gncy1sgO2Fy91gj_1ObGp3iTimsMpMgvvh7PVEENMzRXT3rkkFyOfleI0gcKKXwaJGbTJKYoD9mMeVoBEXsGi4xlKkLEqJFXRAo2EWwApACEzk5EnriPN4HHarj92QChMP80eLOt7X_wzN3D9uB_6aVgZ593JGE2LnRSWSfO8VtyAGQXn3yF7kcX00Ax4iDhxw9OzzFICBqL8lZf5tWngVqdH4SJWbLht-FjEt3VVV3CVNPUCbD8xsOvucjlD0aVeThaNsyMYOBZ2Dsz1nE3nBXEa9v-cTdGGNhuvpja1lXC9uDtv9npfdtGiiPOVON-em1AGMSLfG_JcVPIfIniyJEuyFTK-fUu0axX28oeiGSNZksJzvaXWAPtP3rgGBI_FiSa_2ZL3D0fBKY3YexmxwoRgmzWdH4N79x8DRlYvrC-QYnWHfs_kBBkpvRr6b5OnIyJVNhK3Ah6PuMuxSOP5r0Z9Ja-rTxS2sf2oe1W92rdM4eqEPLqtS-FwAubHulkgu6oQSmhLcIBKio4dPgas24raSRK8D8hm-yByLT_oKWL2QI0RcxAlBwDlzj3WjEOOhtkLHOm_D_pQXYId9JVbhsHNspUEbnYWc9dxVp9diVxgNaAMvOQhUw3cSs64rVUv2Xj46zAzM3JOEzAV_qmte91SFsP0lWpsUW_wstY0nLIzVkiZcSiu95n1bOvyjadAbH-8Kw1etPs2LrnRP5k1btRxRnZ9C5tQqwgDoirXnbw8ouAb5OxOxfwLS1tKaFEYqgxkkoeV625cPeuFN6yGbxSlYPG6CxAyx-HSOPCThyinYDrQh2kJhmTZijCtfs0mAPXtI31QTNWQ43-PXWE-fX_kau-uGODhxLE5wChv9RoSYoLbx5-iY1nm0JdoHuWLtcLvgLZOdNPrTnFoa9YvinVIPOgk7w9LI7po5IepthvRoGpf9AqywChRPYgWoSPHLdAq_j_q7Aip4rURXpoVXFHaMW4N7t.carI0aLu4lVYKxzFGJfD4g';
|
||||
var $DEVICE_kEY = 'ap-southeast-1_6d1abc9e-1d27-4bb0-ba1e-d34d9d3d537e';
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
function index()
|
||||
{
|
||||
echo "API SEND WHATSAPP";
|
||||
}
|
||||
|
||||
function refreshtoken()
|
||||
{
|
||||
$this->db->trans_begin();
|
||||
$prm = $this->sys_input;
|
||||
|
||||
$curl = curl_init();
|
||||
|
||||
curl_setopt_array($curl, array(
|
||||
CURLOPT_URL => "https://api.krmpesan.app/tokens?refresh_token=$this->REFRESH_TOKEN&device_key=$this->DEVICE_kEY",
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_ENCODING => '',
|
||||
CURLOPT_MAXREDIRS => 10,
|
||||
CURLOPT_TIMEOUT => 0,
|
||||
CURLOPT_FOLLOWLOCATION => true,
|
||||
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
||||
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||
));
|
||||
|
||||
$response = curl_exec($curl);
|
||||
|
||||
curl_close($curl);
|
||||
if ($response === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$resp = json_decode($response, true);
|
||||
|
||||
$idtoken = $resp['IdToken'];
|
||||
|
||||
// hapus data sebelumnya
|
||||
$sqldelete = "DELETE FROM one_hs.hs_token";
|
||||
$qrydelete = $this->db->query($sqldelete);
|
||||
if (!$qrydelete) {
|
||||
$this->db->trans_rollback();
|
||||
$this->sys_error_db("delete hs_token error", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
// insert data ke dalam database
|
||||
$sql = "INSERT INTO one_hs.hs_token(
|
||||
HS_TokenDate,
|
||||
HS_TokenToken,
|
||||
HS_TokenCreated,
|
||||
HS_TokenLastUpdated) VALUES(NOW(),?,NOW(),NOW())";
|
||||
|
||||
$qry = $this->db->query($sql, array($idtoken));
|
||||
if (!$qry) {
|
||||
$this->db->trans_rollback();
|
||||
$this->sys_error_db("insert hs_token error", $this->db);
|
||||
exit;
|
||||
}
|
||||
$this->db->trans_commit();
|
||||
|
||||
echo $idtoken;
|
||||
}
|
||||
|
||||
function get_refreshtoken()
|
||||
{
|
||||
$sql = "SELECT HS_TokenID,
|
||||
HS_TokenDate,
|
||||
HS_TokenToken
|
||||
FROM one_hs.hs_token";
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if ($qry) {
|
||||
$rows = $qry->result_array();
|
||||
} else {
|
||||
$this->sys_error_db("hs_token select", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
foreach ($rows as $k => $v) {
|
||||
$tokenhs = $v["HS_TokenToken"];
|
||||
}
|
||||
|
||||
echo $tokenhs;
|
||||
}
|
||||
|
||||
function get_token()
|
||||
{
|
||||
$urltoken = 'http://devone.aplikasi.web.id/one-api/hs/send_whatsappv2/get_refreshtoken';
|
||||
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_URL, $urltoken);
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
function post($url, $data, $token)
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
|
||||
$curl = curl_init();
|
||||
|
||||
curl_setopt_array($curl, array(
|
||||
CURLOPT_URL => $url,
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_ENCODING => '',
|
||||
CURLOPT_MAXREDIRS => 10,
|
||||
CURLOPT_TIMEOUT => 0,
|
||||
CURLOPT_FOLLOWLOCATION => true,
|
||||
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
||||
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||
CURLOPT_POSTFIELDS => $data,
|
||||
CURLOPT_HTTPHEADER => [
|
||||
'Content-Type: application/json',
|
||||
'Accept: application/json',
|
||||
'Authorization: Bearer ' . $token,
|
||||
]
|
||||
));
|
||||
|
||||
$response = curl_exec($curl);
|
||||
if (curl_error($curl) != "") {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" => "Http Error : " . curl_error($curl),
|
||||
]);
|
||||
curl_close($curl);
|
||||
exit();
|
||||
}
|
||||
|
||||
curl_close($curl);
|
||||
return $response;
|
||||
}
|
||||
|
||||
function send_new($template_name = "geths")
|
||||
{
|
||||
$sql = "SELECT HS_WhatsAppID,
|
||||
HS_WhatsAppName,
|
||||
HS_WhatsAppNoHP,
|
||||
HS_WhatsAppIsSent,
|
||||
HS_WhatsAppType,
|
||||
DATE_FORMAT(T_OrderDate, '%d-%m-%Y') as orderDate,
|
||||
T_OrderTime
|
||||
FROM one_hs.hs_whatsapp
|
||||
JOIN one_hs.t_order ON T_OrderT_TransactionID = HS_WhatsAppT_TransactionID
|
||||
AND T_OrderIsActive = 'Y'
|
||||
WHERE HS_WhatsAppIsActive = 'Y' AND HS_WhatsAppType = 'NEW'
|
||||
AND (HS_WhatsAppIsSent = 'N' OR HS_WhatsAppIsSent = 'R')
|
||||
ORDER BY HS_WhatsAppID";
|
||||
|
||||
$token = $this->get_token();
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if ($qry) {
|
||||
$rows = $qry->result_array();
|
||||
} else {
|
||||
$this->sys_error_db("select whatsapp error", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
$url = "https://api.krmpesan.app/messages";
|
||||
// print_r($rows);
|
||||
foreach ($rows as $key => $value) {
|
||||
// print_r($value);
|
||||
$waId = $value["HS_WhatsAppID"];
|
||||
$phone = $value["HS_WhatsAppNoHP"];
|
||||
$name = $value["HS_WhatsAppName"];
|
||||
$orderdate = $value["orderDate"];
|
||||
$ordertime = $value["T_OrderTime"];
|
||||
$data = json_encode([
|
||||
"phone" => $phone,
|
||||
"template_name" => $template_name,
|
||||
"template_language" => "id",
|
||||
"template" => [
|
||||
"body" => [
|
||||
$name,
|
||||
$orderdate . ' ' . 'jam' . ' ' . $ordertime
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
$messages = $orderdate . ' ' . $ordertime;
|
||||
|
||||
// echo $data;
|
||||
$resp = $this->post($url, $data, $token);
|
||||
$j_response = json_decode($resp, true);
|
||||
|
||||
if ($j_response["code"] == 200) {
|
||||
$queueid = $j_response["data"]["id"];
|
||||
$sql_update = "UPDATE one_hs.hs_whatsapp SET
|
||||
HS_WhatsAppMessage = ?,
|
||||
HS_WhatsAppIsSent = 'Y',
|
||||
HS_WhatsAppSentDate = NOW(),
|
||||
queue_id = ?
|
||||
WHERE HS_WhatsAppID = ?";
|
||||
$qry_update = $this->db->query($sql_update, array(
|
||||
$messages,
|
||||
$queueid,
|
||||
$waId
|
||||
));
|
||||
if (!$qry_update) {
|
||||
$this->sys_error_db("update whatsapp error", $this->db);
|
||||
exit;
|
||||
}
|
||||
$result = [
|
||||
"status" => "OK"
|
||||
];
|
||||
} else {
|
||||
$sql_update = "UPDATE one_hs.hs_whatsapp SET
|
||||
HS_WhatsAppIsSent = if(HS_WhatsAppRetry >= 3, 'E', 'N'),
|
||||
HS_WhatsAppRetry = HS_WhatsAppRetry + 1
|
||||
WHERE HS_WhatsAppID = ?";
|
||||
$qry_update = $this->db->query($sql_update, array(
|
||||
$waId
|
||||
));
|
||||
if (!$qry_update) {
|
||||
$this->sys_error_db("update whatsapp error", $this->db);
|
||||
exit;
|
||||
}
|
||||
$result = [
|
||||
"status" => "ERR",
|
||||
"message" => $resp
|
||||
];
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
function send_process($template_name = "homeservice2")
|
||||
{
|
||||
$sql = "SELECT HS_WhatsAppID,
|
||||
HS_WhatsAppName,
|
||||
HS_WhatsAppNoHP,
|
||||
HS_WhatsAppIsSent,
|
||||
HS_WhatsAppType,
|
||||
T_OrderDate,
|
||||
T_OrderTime,
|
||||
M_StaffName
|
||||
FROM one_hs.hs_whatsapp
|
||||
JOIN one_hs.t_order ON HS_WhatsAppT_TransactionID = T_OrderT_TransactionID
|
||||
AND T_OrderIsActive = 'Y'
|
||||
JOIN one_hs.hs_deliveryorderdetail ON HS_WhatsAppT_TransactionID = HS_DeliveryOrderDetailT_TransactionID
|
||||
AND HS_DeliveryOrderDetailIsActive = 'Y'
|
||||
JOIN one_hs.hs_deliveryorder ON HS_DeliveryOrderDetailHS_DeliveryOrderID = HS_DeliveryOrderID
|
||||
AND HS_DeliveryOrderIsActive = 'Y'
|
||||
JOIN one.m_user ON HS_DeliveryOrderM_UserID = M_UserID
|
||||
AND M_UserIsActive = 'Y'
|
||||
JOIN one.m_staff ON M_UserM_StaffID = M_StaffID
|
||||
AND M_StaffIsActive = 'Y'
|
||||
WHERE HS_WhatsAppIsActive = 'Y' AND HS_WhatsAppType = 'PROCESS'
|
||||
AND (HS_WhatsAppIsSent = 'N' OR HS_WhatsAppIsSent = 'R')
|
||||
ORDER BY HS_WhatsAppID";
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if ($qry) {
|
||||
$rows = $qry->result_array();
|
||||
} else {
|
||||
$this->sys_error_db("select whatsapp error", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
$token = $this->get_token();
|
||||
|
||||
// print_r($rows);
|
||||
$url = "https://api.krmpesan.app/messages";
|
||||
foreach ($rows as $key => $value) {
|
||||
// print_r($value);
|
||||
$waId = $value["HS_WhatsAppID"];
|
||||
$phone = $value["HS_WhatsAppNoHP"];
|
||||
$name = $value["HS_WhatsAppName"];
|
||||
$staff = $value["M_StaffName"];
|
||||
$data = json_encode([
|
||||
"phone" => $phone,
|
||||
"template_name" => $template_name,
|
||||
"template_language" => "id",
|
||||
"template" => [
|
||||
"body" => [
|
||||
$name,
|
||||
$staff
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
// echo $data;
|
||||
$resp = $this->post($url, $data, $token);
|
||||
$j_response = json_decode($resp, true);
|
||||
// print_r($j_response);
|
||||
if ($j_response["code"] == 200) {
|
||||
$queueid = $j_response["data"]["id"];
|
||||
$sql_update = "UPDATE one_hs.hs_whatsapp SET
|
||||
HS_WhatsAppMessage = ?,
|
||||
HS_WhatsAppIsSent = 'Y',
|
||||
HS_WhatsAppSentDate = NOW(),
|
||||
queue_id = ?
|
||||
WHERE HS_WhatsAppID = ?";
|
||||
$qry_update = $this->db->query($sql_update, array(
|
||||
$staff,
|
||||
$queueid,
|
||||
$waId
|
||||
));
|
||||
if (!$qry_update) {
|
||||
$this->sys_error_db("update whatsapp error", $this->db);
|
||||
exit;
|
||||
}
|
||||
$result = [
|
||||
"status" => "OK"
|
||||
];
|
||||
} else {
|
||||
$sql_update = "UPDATE one_hs.hs_whatsapp SET
|
||||
HS_WhatsAppIsSent = if(HS_WhatsAppRetry >= 3, 'E', 'N'),
|
||||
HS_WhatsAppRetry = HS_WhatsAppRetry + 1
|
||||
WHERE HS_WhatsAppID = ?";
|
||||
$qry_update = $this->db->query($sql_update, array(
|
||||
$waId
|
||||
));
|
||||
if (!$qry_update) {
|
||||
$this->sys_error_db("update whatsapp error", $this->db);
|
||||
exit;
|
||||
}
|
||||
$result = [
|
||||
"status" => "ERR",
|
||||
"message" => $resp
|
||||
];
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
function send()
|
||||
{
|
||||
// send new
|
||||
$resultnew = $this->send_new();
|
||||
if ($resultnew === false) {
|
||||
echo json_encode(array(
|
||||
'status' => 'ERR',
|
||||
'message' => 'Send Message Error'
|
||||
));
|
||||
exit;
|
||||
}
|
||||
|
||||
// send process
|
||||
$resultprocess = $this->send_process();
|
||||
if ($resultprocess === false) {
|
||||
echo json_encode(array(
|
||||
'status' => 'ERR',
|
||||
'message' => 'Send Message Error'
|
||||
));
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode(array(
|
||||
'status' => 'OK',
|
||||
'wa_message_new' => $resultnew,
|
||||
'wa_message_process' => $resultprocess
|
||||
));
|
||||
}
|
||||
|
||||
function sendv2()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$template_new = $prm['template_new'];
|
||||
$template_process = $prm['template_process'];
|
||||
|
||||
// send new
|
||||
$resultnew = $this->send_new($template_new);
|
||||
if ($resultnew === false) {
|
||||
echo json_encode(array(
|
||||
'status' => 'ERR',
|
||||
'message' => 'Send Message Error'
|
||||
));
|
||||
exit;
|
||||
}
|
||||
|
||||
// send process
|
||||
$resultprocess = $this->send_process($template_process);
|
||||
if ($resultprocess === false) {
|
||||
echo json_encode(array(
|
||||
'status' => 'ERR',
|
||||
'message' => 'Send Message Error'
|
||||
));
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode(array(
|
||||
'status' => 'OK',
|
||||
'wa_message_new' => $resultnew,
|
||||
'wa_message_process' => $resultprocess
|
||||
));
|
||||
}
|
||||
}
|
||||
198
application/controllers/hs/Test_sample.php
Normal file
198
application/controllers/hs/Test_sample.php
Normal file
@@ -0,0 +1,198 @@
|
||||
<?php
|
||||
|
||||
class Test_sample extends MY_Controller
|
||||
{
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
function now()
|
||||
{
|
||||
return Date("Y-m-d H:i:s");
|
||||
}
|
||||
function log($msg)
|
||||
{
|
||||
echo "{$this->now()} $msg\n";
|
||||
}
|
||||
/*
|
||||
create table test_sample (
|
||||
test_SampleID int not null auto_increment primary key,
|
||||
test_SampleT_TestID int,
|
||||
test_SampleT_SampleTypeID int,
|
||||
test_SampleIsActive varchar(1) default 'Y',
|
||||
key (test_SampleT_TestID),
|
||||
key (test_SampleT_SampleTypeID)
|
||||
)
|
||||
*/
|
||||
function generate_master()
|
||||
{
|
||||
$sql = "select count(*) from one_hs.test_sample";
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
if ($this->db->error()["code"] == "1146") {
|
||||
$sql = "
|
||||
create table one_hs.test_sample (
|
||||
test_SampleID int not null auto_increment primary key,
|
||||
test_SampleT_TestID int,
|
||||
test_SampleT_SampleTypeID int,
|
||||
test_SampleIsActive varchar(1) default 'Y',
|
||||
key (test_SampleT_TestID),
|
||||
key (test_SampleT_SampleTypeID)
|
||||
)";
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log(
|
||||
"Error Create table one_hs.test_sample : " .
|
||||
$this->db->error()["message"]
|
||||
);
|
||||
exit();
|
||||
}
|
||||
} else {
|
||||
$this->log("Error : " . $this->db->error()["message"]);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
// mark isActive as 'N' if not here
|
||||
$sql = "update one_hs.test_sample
|
||||
set test_SampleIsActive = 'N'
|
||||
where test_SampleT_TestID not in (
|
||||
select T_TestID
|
||||
from t_test
|
||||
where T_TestIsActive = 'Y' and T_TestIsPrice = 'Y'
|
||||
)";
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log(
|
||||
"Error Set NonActive one_hs.test_sample : " .
|
||||
$this->db->error()["message"]
|
||||
);
|
||||
exit();
|
||||
}
|
||||
|
||||
$sql = "select distinct T_TestSasCode,
|
||||
if (T_SpecimenLocalIsActive is null or T_SpecimenLocalIsActive = 'N', T_TestT_SampleTypeID, T_SpecimenLocalT_SampleTypeID)
|
||||
newT_SampleTypeID
|
||||
from t_test
|
||||
join t_sampletype on T_TestT_SampleTypeID = T_SampleTypeID
|
||||
and T_TestIsResult = 'Y'
|
||||
and T_TestIsActive = 'Y' and T_SampleTypeIsActive = 'Y'
|
||||
left join t_specimenlocal on T_TestNat_TestID = T_SpecimenLocalNat_TestID";
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log(
|
||||
"Error Set NonActive one_hs.test_sample : " .
|
||||
$this->db->error()["message"]
|
||||
);
|
||||
exit();
|
||||
}
|
||||
$arr_sample = $qry->result_array();
|
||||
$sql =
|
||||
"select T_TestID,T_TestSasCode from t_test where T_TestIsActive='Y' and T_TestIsPrice='Y'";
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log(
|
||||
"Error Set NonActive one_hs.test_sample : " .
|
||||
$this->db->error()["message"]
|
||||
);
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
$result = [];
|
||||
foreach ($rows as $r) {
|
||||
$arr_target = array_filter($arr_sample, function ($s) use ($r) {
|
||||
$parentCode = $r["T_TestSasCode"];
|
||||
$childCode = $s["T_TestSasCode"];
|
||||
return $parentCode == substr($childCode, 0, strlen($childCode));
|
||||
});
|
||||
foreach ($arr_target as $t) {
|
||||
$arr = [
|
||||
"test_SampleT_TestID" => $r["T_TestID"],
|
||||
"test_SampleT_SampleTypeID" => $t["newT_SampleTypeID"],
|
||||
];
|
||||
$resp = $this->insert_or_update("one_hs.test_sample", $arr, [
|
||||
"test_SampleT_TestID",
|
||||
"test_SampleT_SampleTypeID",
|
||||
]);
|
||||
if ($resp["status"] == "ERR") {
|
||||
$this->log("ERR : " . $resp["message"]);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function insert_or_update($table, $dt, $keys)
|
||||
{
|
||||
$s_where = "";
|
||||
$param = [];
|
||||
foreach ($keys as $k) {
|
||||
if ($s_where != "") {
|
||||
$s_where .= " and ";
|
||||
}
|
||||
$s_where .= " $k = ?";
|
||||
$param[] = $dt[$k];
|
||||
}
|
||||
$sql = "select count(*) as total
|
||||
from $table
|
||||
where $s_where ";
|
||||
$qry = $this->db->query($sql, $param);
|
||||
if (!$qry) {
|
||||
return [
|
||||
"status" => "ERR",
|
||||
"message" =>
|
||||
$this->db->error()["message"] .
|
||||
"|" .
|
||||
$this->db->last_query(),
|
||||
];
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
$status = "Insert";
|
||||
if (count($rows) > 0) {
|
||||
if ($rows[0]["total"] > 0) {
|
||||
foreach ($keys as $k) {
|
||||
$this->db->where($k, $dt[$k]);
|
||||
}
|
||||
$qry = $this->db->update($table, $dt);
|
||||
if (!$qry) {
|
||||
return [
|
||||
"status" => "ERR",
|
||||
"message" =>
|
||||
"ERR Update : " .
|
||||
$this->db->error()["message"] .
|
||||
"|" .
|
||||
$this->db->last_query(),
|
||||
];
|
||||
}
|
||||
$status = "Update";
|
||||
} else {
|
||||
//insert
|
||||
$qry = $this->db->insert($table, $dt);
|
||||
if (!$qry) {
|
||||
return [
|
||||
"status" => "ERR",
|
||||
"message" =>
|
||||
"ERR Insert : " .
|
||||
$this->db->error()["message"] .
|
||||
"|" .
|
||||
$this->db->last_query(),
|
||||
];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//insert
|
||||
$qry = $this->db->insert($table, $dt);
|
||||
if (!$qry) {
|
||||
return [
|
||||
"status" => "ERR",
|
||||
"message" =>
|
||||
"ERR Insert : " .
|
||||
$this->db->error()["message"] .
|
||||
"|" .
|
||||
$this->db->last_query(),
|
||||
];
|
||||
}
|
||||
}
|
||||
return ["status" => "OK", "message" => $status];
|
||||
}
|
||||
}
|
||||
693
application/controllers/hs/Upload_hs.php
Normal file
693
application/controllers/hs/Upload_hs.php
Normal file
@@ -0,0 +1,693 @@
|
||||
<?php
|
||||
ini_set("display_errors", "1");
|
||||
ini_set("display_startup_errors", "1");
|
||||
error_reporting(E_ALL);
|
||||
class Upload_hs extends MY_Controller
|
||||
{
|
||||
var $base_url;
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->debug = false;
|
||||
$this->base_url = "https://mobile.pramita.co.id/";
|
||||
}
|
||||
function now()
|
||||
{
|
||||
return Date("Y-m-d H:i:s");
|
||||
}
|
||||
function log($msg)
|
||||
{
|
||||
echo "{$this->now()} $msg\n";
|
||||
}
|
||||
public function get_branch_default()
|
||||
{
|
||||
$sql =
|
||||
"select * from m_branch where M_BranchIsDefault = 'Y' and M_BranchIsActive = 'Y'";
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR : {$this->db->error()["message"]}\n";
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
if (count($rows) == 0) {
|
||||
echo "{$this->now()} ERR Get Default Branch: {$this->db->error()["message"]}\n";
|
||||
exit();
|
||||
}
|
||||
$branchID = $rows[0]["M_BranchID"];
|
||||
$branchCode = $rows[0]["M_BranchCode"];
|
||||
|
||||
return [$branchID, $branchCode];
|
||||
}
|
||||
|
||||
function order_quota($date = "")
|
||||
{
|
||||
if ($date == "") {
|
||||
$date = date("Y-m-d");
|
||||
}
|
||||
|
||||
$last_updated = $this->get_last_upload("order_quota");
|
||||
$this->db->trans_begin();
|
||||
$this->log("Start Upload Order Quota, last updated [${last_updated}]");
|
||||
list($branchID, $branchCode) = $this->get_branch_default();
|
||||
|
||||
$sql_online = "SELECT
|
||||
? as M_BranchID,
|
||||
? as M_BranchCode,
|
||||
t_order.*
|
||||
FROM one_hs.t_order
|
||||
WHERE T_OrderIsActive = 'N'
|
||||
AND T_OrderLastUpdated >= ?
|
||||
AND T_OrderDate >= ?
|
||||
AND T_OrderT_TransactionOldID IS NOT NULL";
|
||||
$qry_online = $this->db->query($sql_online, array($branchID, $branchCode, $last_updated, $date));
|
||||
if ($qry_online) {
|
||||
$rows_online = $qry_online->result_array();
|
||||
} else {
|
||||
$this->sys_error_db("local online error", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
$sql_offline = "SELECT
|
||||
? as M_BranchID,
|
||||
? as M_BranchCode,
|
||||
t_order.*
|
||||
FROM one_hs.t_order
|
||||
WHERE T_OrderDate >= ?
|
||||
AND T_OrderLastUpdated >= ?
|
||||
AND T_OrderT_TransactionOldID IS NULL";
|
||||
|
||||
$qry_offline = $this->db->query($sql_offline, array($branchID, $branchCode, $date, $last_updated));
|
||||
if ($qry_offline) {
|
||||
$rows_offline = $qry_offline->result_array();
|
||||
} else {
|
||||
$this->sys_error_db("local offline error", $this->db);
|
||||
exit;
|
||||
}
|
||||
$param = json_encode(["online" => $rows_online, "offline" => $rows_offline]);
|
||||
$zparam = gzcompress($param);
|
||||
|
||||
$url = $this->base_url . "one-api/hs/r_hs/update_order_quota";
|
||||
$resp = $this->post($url, $zparam);
|
||||
if ($resp["status"] != "OK") {
|
||||
$this->log("Error Upload Order Quota " . $resp["message"]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$this->log("Upload Order Quota [OK]");
|
||||
$this->update_last_upload("order_quota");
|
||||
$this->db->trans_commit();
|
||||
}
|
||||
function receive($trxID = "")
|
||||
{
|
||||
$last_updated = $this->get_last_upload("confirm_receive");
|
||||
$this->db->trans_begin();
|
||||
$this->log(
|
||||
"Start Upload Confirm Received, last updated [${last_updated}]"
|
||||
);
|
||||
//$last_updated = "2022-01-01 00:01:01";
|
||||
if ($trxID != "") {
|
||||
$sql = "select *
|
||||
from one_hs.t_transaction
|
||||
where T_TransactionIsConfirmReceived = 'Y'
|
||||
and T_TransactionIsActive = 'Y'
|
||||
and T_TransactionOldID is not null
|
||||
and T_TransactionOldID = ? ";
|
||||
$qry = $this->db->query($sql, [$trxID]);
|
||||
} else {
|
||||
$sql = "select *
|
||||
from one_hs.t_transaction
|
||||
where T_TransactionIsConfirmReceived = 'Y'
|
||||
and T_TransactionIsActive = 'Y'
|
||||
and T_TransactionOldID is not null
|
||||
and T_TransactionOldID > 0
|
||||
and T_TransactionLastUpdated > ?";
|
||||
$qry = $this->db->query($sql, [$last_updated]);
|
||||
}
|
||||
if (!$qry) {
|
||||
$this->log(
|
||||
" Error Get Transaction : " . $this->db->error()["message"]
|
||||
);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
$t_ids = "";
|
||||
$t_no = "";
|
||||
foreach ($rows as $r) {
|
||||
if ($t_ids != "") {
|
||||
$t_ids .= ",";
|
||||
$t_no .= ",";
|
||||
}
|
||||
$t_ids .= $r["T_TransactionID"];
|
||||
$t_no .= $r["T_TransactionNumbering"];
|
||||
}
|
||||
if (count($rows) == 0) {
|
||||
$this->log("\tNo Pending Confirm Received");
|
||||
$this->update_last_upload("confirm_receive");
|
||||
exit();
|
||||
}
|
||||
$transactions = $rows;
|
||||
$this->log("\tUploading $t_no ");
|
||||
|
||||
$sql = "select *
|
||||
from one_hs.f_payment
|
||||
where F_PaymentIsActive='Y' and F_PaymentT_TransactionID in ($t_ids)";
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log(" Error Get Payment: " . $this->db->error()["message"]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$payments = $qry->result_array();
|
||||
|
||||
$sql = "select *
|
||||
from one_hs.t_order
|
||||
where T_OrderIsActive='Y' and T_OrderT_TransactionID in ($t_ids)";
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log(" Error Get Order : " . $this->db->error()["message"]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$orders = $qry->result_array();
|
||||
if (count($orders) == 0) {
|
||||
$this->log("\tNo Pending Order");
|
||||
exit();
|
||||
}
|
||||
|
||||
$sql = "select t_orderdetail.*
|
||||
from one_hs.t_orderdetail
|
||||
join one_hs.t_order on T_OrderDetailT_OrderID = T_OrderID
|
||||
and T_OrderIsActive='Y'
|
||||
and T_OrderT_TransactionID in ($t_ids)";
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log(" Error Get Order : " . $this->db->error()["message"]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$details = $qry->result_array();
|
||||
if (count($details) == 0) {
|
||||
$this->log("\tNo Pending Order Detail");
|
||||
exit();
|
||||
}
|
||||
|
||||
$sql = "select t_ordersample.*
|
||||
from one_hs.t_ordersample
|
||||
join one_hs.t_order on T_OrderSampleT_OrderID = T_OrderID
|
||||
and T_OrderIsActive='Y'
|
||||
and T_OrderT_TransactionID in ($t_ids)";
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log(" Error Get sample : " . $this->db->error()["message"]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$samples = $qry->result_array();
|
||||
|
||||
$sql = "select t_orderdeliveries.*
|
||||
from one_hs.t_orderdeliveries
|
||||
join one_hs.t_order on T_OrderDeliveriesT_OrderID = T_OrderID
|
||||
and T_OrderIsActive='Y'
|
||||
and T_OrderT_TransactionID in ($t_ids)";
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log(
|
||||
" Error Get Delivery : " . $this->db->error()["message"]
|
||||
);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$deliveries = $qry->result_array();
|
||||
//m_patient
|
||||
$sql = "select m_patient.*
|
||||
from one_hs.m_patient
|
||||
join one_hs.t_order on T_OrderM_PatientID = M_PatientID
|
||||
and T_OrderIsActive='Y'
|
||||
and T_OrderT_TransactionID in ($t_ids)";
|
||||
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log(
|
||||
" Error Get Delivery : " . $this->db->error()["message"]
|
||||
);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$patients = $qry->result_array();
|
||||
|
||||
//populate orders
|
||||
foreach ($orders as $idx => $o) {
|
||||
$x_detail = array_filter($details, function ($d) use ($o) {
|
||||
return $o["T_OrderID"] == $d["T_OrderDetailT_OrderID"];
|
||||
});
|
||||
$orders[$idx]["detail"] = array_values($x_detail);
|
||||
|
||||
$x_sample = array_filter($samples, function ($d) use ($o) {
|
||||
return $o["T_OrderID"] == $d["T_OrderSampleT_OrderID"];
|
||||
});
|
||||
$orders[$idx]["sample"] = array_values($x_sample);
|
||||
|
||||
$x_delivery = array_filter($deliveries, function ($d) use ($o) {
|
||||
return $o["T_OrderID"] == $d["T_OrderDeliveriesT_OrderID"];
|
||||
});
|
||||
$orders[$idx]["delivery"] = array_values($x_delivery);
|
||||
|
||||
$x_patient = array_filter($patients, function ($p) use ($o) {
|
||||
return $o["T_OrderM_PatientID"] == $p["M_PatientID"];
|
||||
});
|
||||
$orders[$idx]["patient"] = array_values($x_patient);
|
||||
}
|
||||
foreach ($transactions as $idx => $t) {
|
||||
$x_order = array_filter($orders, function ($o) use ($t) {
|
||||
return $t["T_TransactionID"] == $o["T_OrderT_TransactionID"];
|
||||
});
|
||||
$transactions[$idx]["order"] = array_values($x_order);
|
||||
$x_payment = array_filter($payments, function ($o) use ($t) {
|
||||
return $t["T_TransactionID"] == $o["F_PaymentT_TransactionID"];
|
||||
});
|
||||
$transactions[$idx]["payment"] = array_values($x_payment);
|
||||
}
|
||||
|
||||
$param = ["tx" => $transactions];
|
||||
$zparam = gzcompress(json_encode($param));
|
||||
$url = $this->base_url . "one-api/hs/r_hs/update_receive";
|
||||
$resp = $this->post($url, $zparam);
|
||||
if ($resp["status"] != "OK") {
|
||||
$this->log("Error Upload Receive " . $resp["message"]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$this->log("Upload Receive [OK]");
|
||||
$this->update_last_upload("confirm_receive");
|
||||
$this->db->trans_commit();
|
||||
}
|
||||
function update_last_upload($code)
|
||||
{
|
||||
$fname = "/xtmp/hs-upload-status.json";
|
||||
$now = Date("Y-m-d H:i:s");
|
||||
if (file_exists($fname)) {
|
||||
$status = json_decode(file_get_contents($fname), true);
|
||||
$status[$code] = $now;
|
||||
$j_status = json_encode($status);
|
||||
$w_status = file_put_contents($fname, $j_status);
|
||||
if ($w_status === false) {
|
||||
echo "Write Error";
|
||||
}
|
||||
} else {
|
||||
$status[$code] = $now;
|
||||
$j_status = json_encode($status);
|
||||
file_put_contents($fname, $j_status);
|
||||
}
|
||||
}
|
||||
function get_last_upload($code)
|
||||
{
|
||||
$now = Date("Y-m-d H:i:s");
|
||||
if (file_exists("/xtmp/hs-upload-status.json")) {
|
||||
$status = json_decode(
|
||||
file_get_contents("/xtmp/hs-upload-status.json"),
|
||||
true
|
||||
);
|
||||
if (isset($status[$code])) {
|
||||
$result = $status[$code];
|
||||
$status[$code] = $now;
|
||||
file_put_contents("/xtmp/hs-upload-status.json", json_encode($status));
|
||||
return $result;
|
||||
}
|
||||
return "2023-03-01 00:00:01";
|
||||
} else {
|
||||
file_put_contents("/xtmp/hs-upload-status.json", json_encode([$code => date("Y-m-d h:i:s")]));
|
||||
return "2023-03-01 00:00:01";
|
||||
}
|
||||
}
|
||||
function old_get_last_upload($code)
|
||||
{
|
||||
$now = Date("Y-m-d H:i:s");
|
||||
if (file_exists("/xtmp/hs-upload-status.json")) {
|
||||
$status = json_decode(
|
||||
file_get_contents("/xtmp/hs-upload-status.json"),
|
||||
true
|
||||
);
|
||||
if (isset($status[$code])) {
|
||||
$result = $status[$code];
|
||||
$status[$code] = $now;
|
||||
file_put_contents(
|
||||
"/xtmp/hs-upload-status.json",
|
||||
json_encode($status)
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
$status[$code] = $now;
|
||||
file_put_contents(
|
||||
"/xtmp/hs-upload-status.json",
|
||||
json_encode($status)
|
||||
);
|
||||
return $now;
|
||||
} else {
|
||||
$status[$code] = $now;
|
||||
file_put_contents(
|
||||
"/xtmp/hs-upload-status.json",
|
||||
json_encode($status)
|
||||
);
|
||||
return "2022-01-01 00:00:01";
|
||||
}
|
||||
}
|
||||
function surat_jalan()
|
||||
{
|
||||
$last_update = $this->get_last_upload("surat_jalan");
|
||||
$sql = "select HS_DeliveryOrderDetailLastUpdated HS_InfoSjLastUpdated,
|
||||
T_TransactionOldID HS_InfoSjT_TransactionID,
|
||||
ifnull(Nat_StaffName,M_StaffName) HS_InfoSjStaffName,
|
||||
M_UserUsername HS_InfoSjUsername
|
||||
from
|
||||
one_hs.hs_deliveryorderdetail
|
||||
join one_hs.hs_deliveryorder on HS_DeliveryOrderDetailHS_DeliveryOrderID = HS_DeliveryOrderID
|
||||
and HS_DeliveryOrderDetailIsActive = 'Y'
|
||||
and HS_DeliveryOrderIsActive = 'Y'
|
||||
and HS_DeliveryOrderLastUpdated > ?
|
||||
join one_hs.t_transaction on HS_DeliveryOrderDetailT_TransactionID = T_TransactionID
|
||||
and T_TransactionOldID is not null and T_TransactionOldID > 0
|
||||
join m_user on HS_DeliveryOrderM_UserID = M_UserID
|
||||
left join m_staff on M_UserM_StaffID = M_StaffID
|
||||
left join nat_staff on M_UserM_StaffID = Nat_StaffID";
|
||||
$qry = $this->db->query($sql, [$last_update]);
|
||||
|
||||
if (!$qry) {
|
||||
$this->log(
|
||||
"Error Upload SJ info: " . $this->db->error()["message"]
|
||||
);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
if (count($rows) == 0) {
|
||||
$this->log("No Pending Info Surat Jalan, Last Upload $last_update");
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$param = ["sj" => $rows];
|
||||
$zparam = gzcompress(json_encode($param));
|
||||
$url = $this->base_url . "one-api/hs/r_hs/update_sj";
|
||||
$resp = $this->post($url, $zparam);
|
||||
if ($resp["status"] != "OK") {
|
||||
$this->log("Error Upload SJ info " . $resp["message"]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$this->update_last_upload("surat_jalan");
|
||||
$this->log("Upload SJ [OK]");
|
||||
}
|
||||
public function index()
|
||||
{
|
||||
//hs_upload
|
||||
$this->db->trans_begin();
|
||||
$sql =
|
||||
"select * from hs_upload where Hs_UploadIsActive='Y' and Hs_UploadIsSent ='N' limit 0,1";
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
$this->log("Error hs_upload : " . $this->db->error()["message"]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
if (count($qry->result_array()) == 0) {
|
||||
$this->log("No Pending hs_upload.");
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
//branch
|
||||
$sql =
|
||||
"select * from m_branch where M_BranchIsActive='Y' and M_BranchIsDefault='Y'";
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR : {$this->db->error()["message"]}\n . {$this->db->last_query}";
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
if (count($rows) == 0) {
|
||||
$this->log("ERR : No Default Branch");
|
||||
exit();
|
||||
}
|
||||
$branchID = $rows[0]["M_BranchID"];
|
||||
$branchCode = $rows[0]["M_BranchCode"];
|
||||
//one_hs.hs_config
|
||||
//one_hs.hs_price
|
||||
//one_hs.hs_test
|
||||
//one_hs.hs_schedule
|
||||
//one_hs.hs_scheduledetail
|
||||
$sql =
|
||||
"select ? HS_ConfigM_BranchID, ? HS_ConfigM_BranchCode, hs_config.* from one_hs.hs_config";
|
||||
$qry = $this->db->query($sql, [$branchID, $branchCode]);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR hs_config: {$this->db->error()["message"]}\n . {$this->db->last_query()}";
|
||||
exit();
|
||||
}
|
||||
$hs_config = $qry->result_array();
|
||||
|
||||
$sql = "select ? HS_PriceM_BranchID, hs_price.*
|
||||
from one_hs.hs_price";
|
||||
$qry = $this->db->query($sql, [$branchID]);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR hs_price: {$this->db->error()["message"]}\n . {$this->db->last_query()}";
|
||||
exit();
|
||||
}
|
||||
$hs_price = $qry->result_array();
|
||||
|
||||
$sql = "select ? HS_TestM_BranchID, hs_test.*
|
||||
from one_hs.hs_test";
|
||||
$qry = $this->db->query($sql, [$branchID]);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR hs_test : {$this->db->error()["message"]}\n . {$this->db->last_query()}";
|
||||
exit();
|
||||
}
|
||||
$hs_test = $qry->result_array();
|
||||
|
||||
$sql = "select ? HS_TestM_BranchID, hs_test.*
|
||||
from one_hs.hs_test";
|
||||
$qry = $this->db->query($sql, [$branchID]);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR hs_test : {$this->db->error()["message"]}\n . {$this->db->last_query()}";
|
||||
exit();
|
||||
}
|
||||
$hs_test = $qry->result_array();
|
||||
|
||||
$sql = "select ? HS_ScheduleM_BranchID, ? HS_ScheduleM_BranchCode, hs_schedule.*
|
||||
from one_hs.hs_schedule";
|
||||
$qry = $this->db->query($sql, [$branchID, $branchCode]);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR hs_schedule: {$this->db->error()["message"]}\n . {$this->db->last_query()}";
|
||||
exit();
|
||||
}
|
||||
$hs_schedule = $qry->result_array();
|
||||
|
||||
$sql = "select ? HS_ScheduleDetailM_BranchID, ? HS_ScheduleDetailM_BranchCode, hs_scheduledetail.*
|
||||
from one_hs.hs_scheduledetail";
|
||||
$qry = $this->db->query($sql, [$branchID, $branchCode]);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR hs_scheduledetail: {$this->db->error()["message"]}\n . {$this->db->last_query()}";
|
||||
exit();
|
||||
}
|
||||
$hs_scheduledetail = $qry->result_array();
|
||||
$data = [
|
||||
"hs_config" => $hs_config,
|
||||
"hs_test" => $hs_test,
|
||||
"hs_price" => $hs_price,
|
||||
"hs_schedule" => $hs_schedule,
|
||||
"hs_scheduledetail" => $hs_scheduledetail,
|
||||
];
|
||||
$jdata = json_encode($data);
|
||||
$md5 = md5($jdata);
|
||||
$param = ["md5" => $md5, "data" => $data];
|
||||
$jparam = json_encode($param);
|
||||
$zparam = gzcompress($jparam);
|
||||
$size = round(strlen($zparam) / 1024, 2);
|
||||
$size_org = round(strlen($jparam) / 1024, 2);
|
||||
$this->log(
|
||||
"Upload HS Masterdata (compressed): " .
|
||||
$size_org .
|
||||
" => " .
|
||||
$size .
|
||||
" kB"
|
||||
);
|
||||
$url = "{$this->base_url}one-api/hs/r_hs";
|
||||
$resp = $this->post($url, $zparam);
|
||||
if ($resp["status"] == "ERR") {
|
||||
$this->log("Error Upload HS Masterdata " . $resp["message"]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$sql =
|
||||
"update hs_upload set HS_UploadIsSent='Y', HS_UploadSentDate = now() where Hs_UploadIsSent='N' and Hs_UploadIsActive='Y'";
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR update hs_upload : {$this->db->error()["message"]}\n . {$this->db->last_query()}";
|
||||
exit();
|
||||
}
|
||||
$this->db->trans_commit();
|
||||
$this->log("Upload HS MasterData [OK] " . json_encode($resp["result"]));
|
||||
$this->order_quota();
|
||||
}
|
||||
function sum_tx($date = "")
|
||||
{
|
||||
if ($date == "") {
|
||||
$date = date("Y-m-d");
|
||||
$time = date("H:00:00");
|
||||
} else {
|
||||
$date = date("Y-m-d", strtotime($date));
|
||||
$time = "00:00:00";
|
||||
}
|
||||
$this->db->trans_begin();
|
||||
$sql =
|
||||
"select * from m_branch where M_BranchIsActive='Y' and M_BranchIsDefault='Y'";
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR : {$this->db->error()["message"]}\n . {$this->db->last_query}";
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
if (count($rows) == 0) {
|
||||
$this->log("ERR : No Default Branch");
|
||||
exit();
|
||||
}
|
||||
$branchID = $rows[0]["M_BranchID"];
|
||||
$branchCode = $rows[0]["M_BranchCode"];
|
||||
//one_hs.sum_tx
|
||||
$sql = "select ? HS_SumTxM_BranchID, ? HS_SumTxM_BranchCode,
|
||||
T_TransactionID HS_SumTxT_TransactionID, T_TransactionCreated HS_SumTxT_TrancactionCreated,
|
||||
T_OrderID HS_SumTxT_OrderID,
|
||||
T_TransactionIsActive HS_SumTxT_TransactionIsActive,
|
||||
concat(T_OrderDate,' ',T_OrderTime) HS_SumTxT_OrderDateTime,
|
||||
T_OrderNumber HS_SumTxT_OrderNumber, T_OrderIsActive HS_SumTxT_OrderIsActive
|
||||
from one_hs.t_transaction
|
||||
join one_hs.t_order on T_TransactionID = T_OrderT_TransactionID
|
||||
and T_OrderDate > ? and T_OrderTime > ?
|
||||
and ( T_TransactionOldID is null or T_TransactionOldID = 0 )
|
||||
";
|
||||
$qry = $this->db->query($sql, [$branchID, $branchCode, $date, $time]);
|
||||
if (!$qry) {
|
||||
echo "{$this->now()} ERR hs_config: {$this->db->error()["message"]}\n . {$this->db->last_query()}";
|
||||
exit();
|
||||
}
|
||||
$hs_sum_tx = $qry->result_array();
|
||||
|
||||
$data = [
|
||||
"hs_sum_tx" => $hs_sum_tx,
|
||||
];
|
||||
$jdata = json_encode($data);
|
||||
$md5 = md5($jdata);
|
||||
$param = ["md5" => $md5, "data" => $data];
|
||||
$jparam = json_encode($param);
|
||||
$zparam = gzcompress($jparam);
|
||||
$size = round(strlen($zparam) / 1024, 2);
|
||||
$size_org = round(strlen($jparam) / 1024, 2);
|
||||
$this->log(
|
||||
"Upload HS Sum Transaction (compressed): " .
|
||||
$size_org .
|
||||
" => " .
|
||||
$size .
|
||||
" kB"
|
||||
);
|
||||
$url = "{$this->base_url}one-api/hs/r_hs";
|
||||
$resp = $this->post($url, $zparam);
|
||||
if ($resp["status"] == "ERR") {
|
||||
$this->log("Error Upload HS Sum Transaction " . $resp["message"]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$this->log(
|
||||
"Upload HS Sum Transaction [OK] " . json_encode($resp["result"])
|
||||
);
|
||||
}
|
||||
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, 5);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
||||
"Content-Type: application/octet-stream",
|
||||
"Content-Length: " . strlen($data),
|
||||
]);
|
||||
$result = curl_exec($ch);
|
||||
if (curl_errno($ch) > 0) {
|
||||
return [
|
||||
"status" => "ERR",
|
||||
"message" => curl_error($ch),
|
||||
];
|
||||
}
|
||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
if ($httpCode != 200) {
|
||||
return [
|
||||
"status" => "ERR",
|
||||
"message" => "Http Response : $httpCode",
|
||||
];
|
||||
}
|
||||
$j_result = json_decode($result, true);
|
||||
if (!$j_result) {
|
||||
return [
|
||||
"status" => "ERR",
|
||||
"message" => "JSON invalid: $result",
|
||||
];
|
||||
}
|
||||
return $j_result;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
CREATE TABLE `hs_schedule` (
|
||||
`HS_ScheduleID` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`HS_ScheduleM_BranchID` int(11) NOT NULL,
|
||||
`HS_ScheduleM_BranchCode` varchar(2),
|
||||
`HS_ScheduleM_RegDayID` int(11) NOT NULL,
|
||||
`HS_ScheduleLimit` int(11) NOT NULL DEFAULT 10,
|
||||
`HS_ScheduleIsActive` char(1) NOT NULL DEFAULT 'Y',
|
||||
`HS_ScheduleUserID` int(11) NOT NULL DEFAULT 3,
|
||||
`HS_ScheduleCreated` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
`HS_ScheduleLastUpdated` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
PRIMARY KEY (`HS_ScheduleID`,HS_ScheduleM_BranchID),
|
||||
key(HS_ScheduleM_RegDayID),
|
||||
key(HS_ScheduleM_BranchCode)
|
||||
);
|
||||
|
||||
CREATE TABLE `hs_scheduledetail` (
|
||||
`HS_ScheduleDetailID` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`HS_ScheduleDetailM_BranchID` int(11) NOT NULL ,
|
||||
`HS_ScheduleDetailM_BranchCode` varchar(2) NOT NULL ,
|
||||
`HS_ScheduleDetailHS_ScheduleID` int(11) NOT NULL,
|
||||
`HS_ScheduleDetailM_RegTimeID` int(11) NOT NULL,
|
||||
`HS_ScheduleDetailIsActive` char(1) NOT NULL DEFAULT 'Y',
|
||||
`HS_ScheduleDetailUserID` int(11) NOT NULL DEFAULT 3,
|
||||
`HS_ScheduleDetailCreated` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
`HS_ScheduleDetailLastUpdated` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
PRIMARY KEY (`HS_ScheduleDetailID`,HS_ScheduleDetailM_BranchID),
|
||||
KEY `HS_ScheduleDetailHS_ScheduleID` (`HS_ScheduleDetailHS_ScheduleID`),
|
||||
KEY `HS_ScheduleDetailHS_Time` (`HS_ScheduleDetailM_RegTimeID`)
|
||||
);
|
||||
|
||||
drop table hs_sum_tx;
|
||||
create table hs_sum_tx (
|
||||
HS_SumTxM_BranchID int,
|
||||
HS_SumTxM_BranchCode varchar(2),
|
||||
HS_SumTxT_TransactionID int,
|
||||
HS_SumTxT_TrancactionCreated datetime,
|
||||
HS_SumTxT_OrderDateTime datetime,
|
||||
HS_SumTxT_OrderID int,
|
||||
HS_SumTxT_OrderNumber varchar(50),
|
||||
HS_SumTxT_TransactionIsActive varchar(1),
|
||||
HS_SumTxT_OrderIsActive varchar(1),
|
||||
primary key (HS_SumTxM_BranchID,HS_SumTxT_TransactionID,HS_SumTxT_OrderID),
|
||||
key (HS_SumTxM_BranchID),
|
||||
key (HS_SumTxT_TransactionID),
|
||||
key (HS_SumTxT_TrancactionCreated),
|
||||
key (HS_SumTxT_OrderDateTime),
|
||||
key (HS_SumTxT_OrderIsActive),
|
||||
key (HS_SumTxT_TransactionIsActive)
|
||||
);
|
||||
*/
|
||||
Reference in New Issue
Block a user