Auto-create missing group result mapping

This commit is contained in:
sas.fajri
2026-05-21 11:42:01 +07:00
parent 282b1e07d8
commit 0b1d53566d

View File

@@ -4627,7 +4627,7 @@ class Resultentry extends MY_Controller
return $row_dt_group[0];
}
$sql = "SELECT T_OrderDetailT_OrderHeaderID
$sql = "SELECT T_OrderDetailT_OrderHeaderID, T_OrderDetailT_TestID
FROM t_orderdetail
WHERE T_OrderDetailID = ? AND T_OrderDetailIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
@@ -4639,14 +4639,21 @@ class Resultentry extends MY_Controller
return [];
}
$orderheader_id = $rows[0]['T_OrderDetailT_OrderHeaderID'];
$test_id = $rows[0]['T_OrderDetailT_TestID'];
$sql = "SELECT T_OrderHeaderGroupResultID, T_OrderHeaderGroupResultDetails
FROM t_orderheader_group_result
$sql = "SELECT
gr.Group_ResultID,
gr.Group_ResultName
FROM group_resultdetail grd
JOIN group_result gr
ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
AND gr.Group_ResultIsActive = 'Y'
WHERE
T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultIsActive = 'Y'
ORDER BY T_OrderHeaderGroupResultID ASC LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderheader_id]);
grd.Group_ResultDetailT_TestID = ? AND
grd.Group_ResultDetailIsActive = 'Y'
ORDER BY gr.Group_ResultID ASC
LIMIT 1";
$query = $this->db_onedev->query($sql, [$test_id]);
if (!$query) {
return false;
}
@@ -4654,8 +4661,54 @@ class Resultentry extends MY_Controller
if (count($rows) <= 0) {
return [];
}
$group_result_id = $rows[0]['T_OrderHeaderGroupResultID'];
$group_result_details = trim((string)$rows[0]['T_OrderHeaderGroupResultDetails']);
$target_group_result_id = $rows[0]['Group_ResultID'];
$target_group_result_name = $rows[0]['Group_ResultName'];
$sql = "SELECT
T_OrderHeaderGroupResultID,
T_OrderHeaderGroupResultDetails
FROM t_orderheader_group_result
WHERE
T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultGroup_ResultID = ? AND
(T_OrderHeaderGroupResultT_TestID = ? OR T_OrderHeaderGroupResultT_TestID = 0) AND
T_OrderHeaderGroupResultIsActive = 'Y'
ORDER BY IF(T_OrderHeaderGroupResultT_TestID = ?, 0, 1), T_OrderHeaderGroupResultID ASC
LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderheader_id, $target_group_result_id, $test_id, $test_id]);
if (!$query) {
return false;
}
$rows = $query->result_array();
$group_result_id = 0;
$group_result_details = '';
if (count($rows) > 0) {
$group_result_id = $rows[0]['T_OrderHeaderGroupResultID'];
$group_result_details = trim((string)$rows[0]['T_OrderHeaderGroupResultDetails']);
}
else {
$sql = "INSERT INTO t_orderheader_group_result (
T_OrderHeaderGroupResultT_OrderHeaderID,
T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultGroup_ResultName,
T_OrderHeaderGroupResultT_TestID,
T_OrderHeaderGroupResultDetails,
T_OrderHeaderGroupResultCreated
) VALUES (?, ?, ?, ?, ?, NOW())";
$query = $this->db_onedev->query($sql, [
$orderheader_id,
$target_group_result_id,
$target_group_result_name,
$test_id,
(string)$orderdetail_id
]);
if (!$query) {
return false;
}
$group_result_id = intval($this->db_onedev->insert_id());
$group_result_details = (string)$orderdetail_id;
}
$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;