From d04d8add35493a4378f404e2a538bfea4dfcfe71 Mon Sep 17 00:00:00 2001 From: "sas.fajri" Date: Fri, 12 Jun 2026 08:50:29 +0700 Subject: [PATCH] FHM09062601IBL - saveorder: simpan tests ke order_detail_order + create table Co-Authored-By: Claude Sonnet 4.6 --- .../controllers/klinik/Registrationv3.php | 41 ++++++++++++++++++- .../2026-06-12-create-order-detail-order.sql | 26 ++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 sql/manual_changes/2026-06-12-create-order-detail-order.sql diff --git a/application/controllers/klinik/Registrationv3.php b/application/controllers/klinik/Registrationv3.php index f2a6ab20..47a35ed0 100644 --- a/application/controllers/klinik/Registrationv3.php +++ b/application/controllers/klinik/Registrationv3.php @@ -1096,8 +1096,47 @@ class Registrationv3 extends MY_Controller exit; } //echo $last_id; + // Simpan item order ke order_detail_order + $tests = isset($prm['tests']) && is_array($prm['tests']) ? $prm['tests'] : []; + foreach ($tests as $t) { + $is_packet = ($t['is_packet'] ?? 'N') === 'Y' ? 'Y' : 'N'; + $packet_type = $t['type'] ?? 'PX'; + $packet_id = $is_packet === 'Y' ? intval($t['pxid'] ?? 0) : 0; + $packet_name = $is_packet === 'Y' ? ($t['test_name'] ?? '') : ''; + $test_id = $is_packet === 'Y' ? 0 : intval($t['pxid'] ?? 0); + $test_name = $is_packet === 'Y' ? '' : ($t['test_name'] ?? ''); + $test_sas = $t['pxsascode'] ?? ''; + $child_json = isset($t['child_test']) ? json_encode($t['child_test']) : null; + $ss_pm_id = isset($t['ss_price_mou_id']) && $t['ss_price_mou_id'] ? intval($t['ss_price_mou_id']) : null; + + $this->db_oneklinik->query( + "INSERT INTO one_klinik.order_detail_order + (orderDetailOrderOrderID, orderDetailOrderSsPriceMouID, + orderDetailOrderT_TestID, orderDetailOrderT_TestName, orderDetailOrderT_TestSasCode, + orderDetailOrderIsPacket, orderDetailOrderPacketType, + orderDetailOrderT_PacketID, orderDetailOrderT_PacketName, + orderDetailOrderT_PriceAmount, orderDetailOrderT_PriceDisc, + orderDetailOrderT_PriceDiscRp, orderDetailOrderT_PriceSubTotal, + orderDetailOrderT_PriceTotal, orderDetailOrderJsonChildren, + orderDetailOrderUserID) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", + [ + $last_id, $ss_pm_id, + $test_id, $test_name, $test_sas, + $is_packet, $packet_type, + $packet_id, $packet_name, + floatval($t['bruto'] ?? 0), + floatval($t['discountpersen'] ?? 0), + floatval($t['discountrp'] ?? 0), + floatval($t['total'] ?? 0), + floatval($t['total'] ?? 0), + $child_json, + $userid + ] + ); + } + $sql = "SELECT * FROM one_klinik.`order` WHERE orderID = {$last_id}"; - //echo $sql; $data_order = $this->db_oneklinik->query($sql)->row_array(); if ($queueID != "0" && trim($queueNumber) != "") { $this->done_today_by_queue_number($queueNumber, $queueID); diff --git a/sql/manual_changes/2026-06-12-create-order-detail-order.sql b/sql/manual_changes/2026-06-12-create-order-detail-order.sql new file mode 100644 index 00000000..f4aec740 --- /dev/null +++ b/sql/manual_changes/2026-06-12-create-order-detail-order.sql @@ -0,0 +1,26 @@ +-- Tabel item order klinik, setara one_lab.t_orderdetailorder +CREATE TABLE `one_klinik`.`order_detail_order` ( + `orderDetailOrderID` int(11) NOT NULL AUTO_INCREMENT, + `orderDetailOrderOrderID` int(11) NOT NULL DEFAULT 0 COMMENT 'ref one_klinik.order.orderID', + `orderDetailOrderSsPriceMouID` int(11) DEFAULT NULL COMMENT 'ref one_lab.ss_price_mou.Ss_PriceMouID (no FK)', + `orderDetailOrderT_TestID` int(11) NOT NULL DEFAULT 0, + `orderDetailOrderT_TestName` varchar(255) NOT NULL DEFAULT '', + `orderDetailOrderT_TestSasCode` varchar(25) NOT NULL DEFAULT '', + `orderDetailOrderIsPacket` char(1) NOT NULL DEFAULT 'N', + `orderDetailOrderPacketType` varchar(5) NOT NULL DEFAULT 'PX', + `orderDetailOrderT_PacketID` int(11) NOT NULL DEFAULT 0, + `orderDetailOrderT_PacketName` varchar(255) NOT NULL DEFAULT '', + `orderDetailOrderT_PriceAmount` double NOT NULL DEFAULT 0, + `orderDetailOrderT_PriceDisc` double NOT NULL DEFAULT 0, + `orderDetailOrderT_PriceDiscRp` double NOT NULL DEFAULT 0, + `orderDetailOrderT_PriceSubTotal` double NOT NULL DEFAULT 0, + `orderDetailOrderT_PriceTotal` double NOT NULL DEFAULT 0, + `orderDetailOrderJsonChildren` longtext DEFAULT NULL, + `orderDetailOrderIsActive` char(1) NOT NULL DEFAULT 'Y', + `orderDetailOrderUserID` int(11) DEFAULT NULL, + `orderDetailOrderCreated` datetime NOT NULL DEFAULT current_timestamp(), + `orderDetailOrderLastUpdated` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + PRIMARY KEY (`orderDetailOrderID`), + KEY `orderDetailOrderOrderID` (`orderDetailOrderOrderID`), + KEY `orderDetailOrderIsActive` (`orderDetailOrderIsActive`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;