Sync order group result mapping
This commit is contained in:
@@ -172,6 +172,8 @@ class Order extends MY_Controller
|
||||
}
|
||||
|
||||
$data_group = $query->result_array();
|
||||
$active_group_result_ids = [];
|
||||
$group_detail_maps = [];
|
||||
|
||||
$debug_query_get = $this->db_smartone->last_query();
|
||||
foreach ($data_group as $key => $value) {
|
||||
@@ -184,6 +186,7 @@ class Order extends MY_Controller
|
||||
$log_error = $this->insert_log_error($xsql, $prm_log, $dt_log);
|
||||
}
|
||||
$existing_group = $query->result_array();
|
||||
$group_result_id = 0;
|
||||
|
||||
if (count($existing_group) == 0) {
|
||||
$sql = "INSERT INTO t_orderheader_group_result (
|
||||
@@ -218,7 +221,9 @@ class Order extends MY_Controller
|
||||
$sql = "UPDATE t_orderheader_group_result SET
|
||||
T_OrderHeaderGroupResultGroup_ResultName = ?,
|
||||
T_OrderHeaderGroupResultT_TestID = ?,
|
||||
T_OrderHeaderGroupResultDetails = ?
|
||||
T_OrderHeaderGroupResultDetails = ?,
|
||||
T_OrderHeaderGroupResultIsActive = 'Y',
|
||||
T_OrderHeaderGroupResultDeleted = '0000-00-00 00:00:00'
|
||||
WHERE T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
|
||||
T_OrderHeaderGroupResultGroup_ResultID = ? AND
|
||||
IFNULL(T_OrderHeaderGroupResultT_TestID, 0) = ?";
|
||||
@@ -242,9 +247,139 @@ class Order extends MY_Controller
|
||||
];
|
||||
return $return;
|
||||
}
|
||||
$group_result_id = intval($existing_group[0]['T_OrderHeaderGroupResultID']);
|
||||
}
|
||||
|
||||
if ($group_result_id <= 0) {
|
||||
$group_result_id = intval($this->db_smartone->insert_id());
|
||||
}
|
||||
|
||||
if ($group_result_id > 0) {
|
||||
$active_group_result_ids[] = $group_result_id;
|
||||
}
|
||||
|
||||
$detail_ids = [];
|
||||
if (isset($value['T_OrderDetailIDs']) && trim($value['T_OrderDetailIDs']) !== '') {
|
||||
$raw_detail_ids = explode(',', str_replace(' ', '', $value['T_OrderDetailIDs']));
|
||||
foreach ($raw_detail_ids as $detail_id) {
|
||||
$detail_id = intval($detail_id);
|
||||
if ($detail_id > 0) {
|
||||
$detail_ids[$detail_id] = $detail_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
$group_detail_maps[] = [
|
||||
'group_result_id' => $group_result_id,
|
||||
'detail_ids' => array_values($detail_ids)
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
if (count($active_group_result_ids) > 0) {
|
||||
$active_group_result_ids = array_unique($active_group_result_ids);
|
||||
$in_active_groups = implode(',', $active_group_result_ids);
|
||||
$sql = "UPDATE t_orderheader_group_result
|
||||
SET T_OrderHeaderGroupResultIsActive = 'N',
|
||||
T_OrderHeaderGroupResultDeleted = NOW()
|
||||
WHERE T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
|
||||
T_OrderHeaderGroupResultID NOT IN ({$in_active_groups})";
|
||||
$query = $this->db_smartone->query($sql, [$order_id]);
|
||||
}
|
||||
else {
|
||||
$sql = "UPDATE t_orderheader_group_result
|
||||
SET T_OrderHeaderGroupResultIsActive = 'N',
|
||||
T_OrderHeaderGroupResultDeleted = NOW()
|
||||
WHERE T_OrderHeaderGroupResultT_OrderHeaderID = ?";
|
||||
$query = $this->db_smartone->query($sql, [$order_id]);
|
||||
}
|
||||
if (!$query) {
|
||||
$dt_log = ['data' => $order_id, 'error' => $this->db_smartone->error()];
|
||||
$prm_log = ['DEACTIVATE_T_ORDERHEADER_GROUP_RESULT', 'order/insert_group_order'];
|
||||
$xsql = $this->db_smartone->last_query();
|
||||
$this->insert_log_error($xsql, $prm_log, $dt_log);
|
||||
$return = [
|
||||
"status" => false,
|
||||
"message" => "Terjadi kesalahan saat sinkronisasi data group order",
|
||||
"data" => []
|
||||
];
|
||||
return $return;
|
||||
}
|
||||
|
||||
$sql = "UPDATE t_orderheader_group_result_details
|
||||
SET T_OrderHeaderGroupResultDetailsIsActive = 'N',
|
||||
T_OrderHeaderGroupResultDetailsLastUpdated = NOW()
|
||||
WHERE T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ?";
|
||||
$query = $this->db_smartone->query($sql, [$order_id]);
|
||||
if (!$query) {
|
||||
$dt_log = ['data' => $order_id, 'error' => $this->db_smartone->error()];
|
||||
$prm_log = ['DEACTIVATE_T_ORDERHEADER_GROUP_RESULT_DETAILS', 'order/insert_group_order'];
|
||||
$xsql = $this->db_smartone->last_query();
|
||||
$this->insert_log_error($xsql, $prm_log, $dt_log);
|
||||
$return = [
|
||||
"status" => false,
|
||||
"message" => "Terjadi kesalahan saat sinkronisasi detail group order",
|
||||
"data" => []
|
||||
];
|
||||
return $return;
|
||||
}
|
||||
|
||||
foreach ($group_detail_maps as $group_map) {
|
||||
$group_result_id = intval($group_map['group_result_id']);
|
||||
foreach ($group_map['detail_ids'] as $detail_id) {
|
||||
$sql = "SELECT T_OrderHeaderGroupResultDetailsID
|
||||
FROM t_orderheader_group_result_details
|
||||
WHERE T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
|
||||
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ?
|
||||
LIMIT 1";
|
||||
$query = $this->db_smartone->query($sql, [$group_result_id, $order_id, $detail_id]);
|
||||
if (!$query) {
|
||||
$dt_log = ['data' => $group_map, 'error' => $this->db_smartone->error()];
|
||||
$prm_log = ['SELECT_T_ORDERHEADER_GROUP_RESULT_DETAILS', 'order/insert_group_order'];
|
||||
$xsql = $this->db_smartone->last_query();
|
||||
$this->insert_log_error($xsql, $prm_log, $dt_log);
|
||||
$return = [
|
||||
"status" => false,
|
||||
"message" => "Terjadi kesalahan saat sinkronisasi detail group order",
|
||||
"data" => []
|
||||
];
|
||||
return $return;
|
||||
}
|
||||
$existing_detail = $query->result_array();
|
||||
if (count($existing_detail) > 0) {
|
||||
$sql = "UPDATE t_orderheader_group_result_details
|
||||
SET T_OrderHeaderGroupResultDetailsIsActive = 'Y',
|
||||
T_OrderHeaderGroupResultDetailsLastUpdated = NOW()
|
||||
WHERE T_OrderHeaderGroupResultDetailsID = ?";
|
||||
$query = $this->db_smartone->query($sql, [$existing_detail[0]['T_OrderHeaderGroupResultDetailsID']]);
|
||||
}
|
||||
else {
|
||||
$sql = "INSERT INTO t_orderheader_group_result_details(
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID,
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderID,
|
||||
T_OrderHeaderGroupResultDetailsT_OrderDetailID,
|
||||
T_OrderHeaderGroupResultDetailsIsActive,
|
||||
T_OrderHeaderGroupResultDetailsCreated,
|
||||
T_OrderHeaderGroupResultDetailsLastUpdated
|
||||
)
|
||||
VALUES(?, ?, ?, 'Y', NOW(), '0000-00-00 00:00:00')";
|
||||
$query = $this->db_smartone->query($sql, [$group_result_id, $order_id, $detail_id]);
|
||||
}
|
||||
if (!$query) {
|
||||
$dt_log = ['data' => $group_map, 'error' => $this->db_smartone->error()];
|
||||
$prm_log = ['UPSERT_T_ORDERHEADER_GROUP_RESULT_DETAILS', 'order/insert_group_order'];
|
||||
$xsql = $this->db_smartone->last_query();
|
||||
$this->insert_log_error($xsql, $prm_log, $dt_log);
|
||||
$return = [
|
||||
"status" => false,
|
||||
"message" => "Terjadi kesalahan saat menyimpan detail group order",
|
||||
"data" => []
|
||||
];
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$return['data'] = $data_group;
|
||||
return $return;
|
||||
}
|
||||
|
||||
@@ -4342,29 +4342,17 @@ class Resultentry extends MY_Controller
|
||||
exit;
|
||||
}
|
||||
|
||||
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
|
||||
FROM t_orderheader_group_result_details
|
||||
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
|
||||
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
|
||||
WHERE
|
||||
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
|
||||
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
|
||||
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
|
||||
if (!$query) {
|
||||
$this->sys_error_db("single verification select group result", $this->db_onedev);
|
||||
exit();
|
||||
}
|
||||
|
||||
$row_dt_group = $query->result_array();
|
||||
//echo $this->db_onedev->last_query();
|
||||
if (count($row_dt_group) > 0) {
|
||||
$ohid = $row_dt_group[0]["T_OrderHeaderGroupResultDetailsT_OrderHeaderID"];
|
||||
$gid = $row_dt_group[0]["T_OrderHeaderGroupResultGroup_ResultID"];
|
||||
$this->verification_by_group($ohid, $gid);
|
||||
}
|
||||
else {
|
||||
$row_dt_group = $this->get_group_result_by_orderdetail($orderdetail_id);
|
||||
if ($row_dt_group === false) {
|
||||
$this->sys_error_db("single verification select group result", $this->db_onedev);
|
||||
exit();
|
||||
}
|
||||
if (count($row_dt_group) > 0) {
|
||||
$ohid = $row_dt_group["T_OrderHeaderGroupResultDetailsT_OrderHeaderID"];
|
||||
$gid = $row_dt_group["T_OrderHeaderGroupResultGroup_ResultID"];
|
||||
$this->verification_by_group($ohid, $gid);
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("group result tidak ditemukan", $this->db_onedev);
|
||||
exit();
|
||||
}
|
||||
@@ -4523,8 +4511,8 @@ class Resultentry extends MY_Controller
|
||||
return true;
|
||||
}
|
||||
|
||||
function verification_by_group($order_id, $group_id)
|
||||
{
|
||||
function verification_by_group($order_id, $group_id)
|
||||
{
|
||||
$sql = "SELECT COUNT(*) as total_all
|
||||
FROM t_orderdetail
|
||||
JOIN t_orderheader_group_result_details ON
|
||||
@@ -4593,8 +4581,122 @@ class Resultentry extends MY_Controller
|
||||
}
|
||||
//echo $this->db_onedev->last_query();
|
||||
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function get_group_result_by_orderdetail($orderdetail_id)
|
||||
{
|
||||
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
|
||||
FROM t_orderheader_group_result_details
|
||||
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
|
||||
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
|
||||
WHERE
|
||||
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
|
||||
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
|
||||
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
|
||||
if (!$query) {
|
||||
return false;
|
||||
}
|
||||
$row_dt_group = $query->result_array();
|
||||
if (count($row_dt_group) > 0) {
|
||||
return $row_dt_group[0];
|
||||
}
|
||||
|
||||
$sql = "SELECT T_OrderDetailT_OrderHeaderID
|
||||
FROM t_orderdetail
|
||||
WHERE T_OrderDetailID = ? AND T_OrderDetailIsActive = 'Y' LIMIT 1";
|
||||
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
|
||||
if (!$query) {
|
||||
return false;
|
||||
}
|
||||
$rows = $query->result_array();
|
||||
if (count($rows) <= 0) {
|
||||
return [];
|
||||
}
|
||||
$orderheader_id = $rows[0]['T_OrderDetailT_OrderHeaderID'];
|
||||
|
||||
$sql = "SELECT T_OrderHeaderGroupResultID, T_OrderHeaderGroupResultDetails
|
||||
FROM t_orderheader_group_result
|
||||
WHERE
|
||||
T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
|
||||
T_OrderHeaderGroupResultIsActive = 'Y'
|
||||
ORDER BY T_OrderHeaderGroupResultID ASC LIMIT 1";
|
||||
$query = $this->db_onedev->query($sql, [$orderheader_id]);
|
||||
if (!$query) {
|
||||
return false;
|
||||
}
|
||||
$rows = $query->result_array();
|
||||
if (count($rows) <= 0) {
|
||||
return [];
|
||||
}
|
||||
$group_result_id = $rows[0]['T_OrderHeaderGroupResultID'];
|
||||
$group_result_details = trim((string)$rows[0]['T_OrderHeaderGroupResultDetails']);
|
||||
$details_list = $group_result_details === '' ? [] : explode(',', str_replace(' ', '', $group_result_details));
|
||||
if (!in_array((string)$orderdetail_id, $details_list, true)) {
|
||||
$details_list[] = (string)$orderdetail_id;
|
||||
$new_details = implode(',', $details_list);
|
||||
$sql = "UPDATE t_orderheader_group_result
|
||||
SET T_OrderHeaderGroupResultDetails = ?
|
||||
WHERE T_OrderHeaderGroupResultID = ?";
|
||||
$query = $this->db_onedev->query($sql, [$new_details, $group_result_id]);
|
||||
if (!$query) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$sql = "INSERT INTO t_orderheader_group_result_details(
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID,
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderID,
|
||||
T_OrderHeaderGroupResultDetailsT_OrderDetailID,
|
||||
T_OrderHeaderGroupResultDetailsIsActive,
|
||||
T_OrderHeaderGroupResultDetailsCreated,
|
||||
T_OrderHeaderGroupResultDetailsLastUpdated
|
||||
)
|
||||
SELECT ?, ?, ?, 'Y', NOW(), '0000-00-00 00:00:00'
|
||||
FROM dual
|
||||
WHERE NOT EXISTS(
|
||||
SELECT 1
|
||||
FROM t_orderheader_group_result_details
|
||||
WHERE
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
|
||||
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
|
||||
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
|
||||
)";
|
||||
$query = $this->db_onedev->query($sql, [
|
||||
$group_result_id,
|
||||
$orderheader_id,
|
||||
$orderdetail_id,
|
||||
$group_result_id,
|
||||
$orderheader_id,
|
||||
$orderdetail_id
|
||||
]);
|
||||
if (!$query) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
|
||||
FROM t_orderheader_group_result_details
|
||||
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
|
||||
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
|
||||
WHERE
|
||||
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
|
||||
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
|
||||
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
|
||||
if (!$query) {
|
||||
return false;
|
||||
}
|
||||
$row_dt_group = $query->result_array();
|
||||
if (count($row_dt_group) > 0) {
|
||||
return $row_dt_group[0];
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
function savefisik()
|
||||
{
|
||||
@@ -5010,29 +5112,17 @@ class Resultentry extends MY_Controller
|
||||
exit;
|
||||
}
|
||||
|
||||
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
|
||||
FROM t_orderheader_group_result_details
|
||||
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
|
||||
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
|
||||
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
|
||||
WHERE
|
||||
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
|
||||
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
|
||||
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
|
||||
if (!$query) {
|
||||
$this->sys_error_db("single verification select group result", $this->db_onedev);
|
||||
exit();
|
||||
}
|
||||
|
||||
$row_dt_group = $query->result_array();
|
||||
//echo $this->db_onedev->last_query();
|
||||
if (count($row_dt_group) > 0) {
|
||||
$ohid = $row_dt_group[0]["T_OrderHeaderGroupResultDetailsT_OrderHeaderID"];
|
||||
$gid = $row_dt_group[0]["T_OrderHeaderGroupResultGroup_ResultID"];
|
||||
$this->verification_by_group($ohid, $gid);
|
||||
}
|
||||
else {
|
||||
$row_dt_group = $this->get_group_result_by_orderdetail($orderdetail_id);
|
||||
if ($row_dt_group === false) {
|
||||
$this->sys_error_db("single verification select group result", $this->db_onedev);
|
||||
exit();
|
||||
}
|
||||
if (count($row_dt_group) > 0) {
|
||||
$ohid = $row_dt_group["T_OrderHeaderGroupResultDetailsT_OrderHeaderID"];
|
||||
$gid = $row_dt_group["T_OrderHeaderGroupResultGroup_ResultID"];
|
||||
$this->verification_by_group($ohid, $gid);
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("group result tidak ditemukan", $this->db_onedev);
|
||||
exit();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user