From 0b1d53566dbb6a0ef428590bea7545d0b49b0ec4 Mon Sep 17 00:00:00 2001 From: "sas.fajri" Date: Thu, 21 May 2026 11:42:01 +0700 Subject: [PATCH] Auto-create missing group result mapping --- .../Resultentry.php | 71 ++++++++++++++++--- 1 file changed, 62 insertions(+), 9 deletions(-) diff --git a/application/controllers/mockup/resultentrysoothers-cpone-v9/Resultentry.php b/application/controllers/mockup/resultentrysoothers-cpone-v9/Resultentry.php index f565bcb5..df2c0b77 100644 --- a/application/controllers/mockup/resultentrysoothers-cpone-v9/Resultentry.php +++ b/application/controllers/mockup/resultentrysoothers-cpone-v9/Resultentry.php @@ -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;