Update MCU sync, dummy generator, and kelainan trigger
This commit is contained in:
@@ -790,6 +790,11 @@ BEGIN
|
||||
DECLARE v_lab_number VARCHAR(25);
|
||||
DECLARE v_seq INT;
|
||||
DECLARE v_effective_date DATE;
|
||||
DECLARE v_lab_exists INT DEFAULT 0;
|
||||
DECLARE v_checkin_time TIME;
|
||||
DECLARE v_checkout_time TIME;
|
||||
DECLARE v_total_station INT DEFAULT 0;
|
||||
DECLARE v_done_station INT DEFAULT 0;
|
||||
|
||||
DECLARE cur_target CURSOR FOR
|
||||
SELECT
|
||||
@@ -821,6 +826,11 @@ BEGIN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Gunakan preregister_id, atau mcu_id + date';
|
||||
END IF;
|
||||
|
||||
SELECT IFNULL(MAX(CAST(RIGHT(T_OrderHeaderLabNumber, 4) AS UNSIGNED)), 0) + 1
|
||||
INTO v_seq
|
||||
FROM cpone.t_orderheader
|
||||
WHERE T_OrderHeaderLabNumber LIKE CONCAT('X', DATE_FORMAT(NOW(), '%y%m%d'), '%');
|
||||
|
||||
OPEN cur_target;
|
||||
read_loop: LOOP
|
||||
FETCH cur_target INTO v_preregister_id, v_patient_id, v_gender, v_corporate_id, v_mcu_id, v_orders;
|
||||
@@ -845,75 +855,102 @@ BEGIN
|
||||
SIGNAL SQLSTATE '45000'
|
||||
SET MESSAGE_TEXT = 'Tanggal MCU tidak ditemukan di mcu_preregister_date aktif';
|
||||
END IF;
|
||||
SELECT oh.T_OrderHeaderID
|
||||
INTO v_source_order_id
|
||||
FROM cpone.t_orderheader oh
|
||||
JOIN cpone.mcu_preregister_patients p2
|
||||
ON p2.Mcu_PreregisterPatientsT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND p2.Mcu_PreregisterPatientsIsActive = 'Y'
|
||||
WHERE oh.T_OrderHeaderIsActive = 'Y'
|
||||
AND p2.Mcu_PreregisterPatientsGender = v_gender
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone.so_resultentry r
|
||||
JOIN cpone.so_resultentrydetail rd
|
||||
ON rd.So_ResultEntryDetailSo_ResultEntryID = r.So_ResultEntryID
|
||||
AND rd.So_ResultEntryDetailIsActive = 'Y'
|
||||
WHERE r.So_ResultEntryT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND r.So_ResultEntryIsActive = 'Y'
|
||||
AND r.So_ResultEntryValidation1 = 'Y'
|
||||
AND r.So_ResultEntryStatus = 'VAL'
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone.t_orderdetail odr
|
||||
WHERE odr.T_OrderDetailT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND odr.T_OrderDetailIsActive = 'Y'
|
||||
AND IFNULL(TRIM(odr.T_OrderDetailResult), '') <> ''
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone.t_orderdetail odf
|
||||
JOIN cpone.so_resultentry rf
|
||||
ON rf.So_ResultEntryT_OrderHeaderID = odf.T_OrderDetailT_OrderHeaderID
|
||||
AND rf.So_ResultEntryT_OrderDetailID = odf.T_OrderDetailID
|
||||
AND rf.So_ResultEntryIsActive = 'Y'
|
||||
AND rf.So_ResultEntryValidation1 = 'Y'
|
||||
AND rf.So_ResultEntryStatus = 'VAL'
|
||||
JOIN cpone.so_resultentry_fisik_umum rfu
|
||||
ON rfu.So_ResultEntryFisikUmumSo_ResultEntryID = rf.So_ResultEntryID
|
||||
AND rfu.So_ResultEntryFisikUmumIsActive = 'Y'
|
||||
WHERE odf.T_OrderDetailT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND odf.T_OrderDetailIsActive = 'Y'
|
||||
AND odf.T_OrderDetailT_TestID = 2562
|
||||
)
|
||||
AND (
|
||||
(v_orders LIKE '%PN%' AND EXISTS (
|
||||
SELECT IFNULL((
|
||||
SELECT oh.T_OrderHeaderID
|
||||
FROM cpone.t_orderheader oh
|
||||
JOIN cpone.mcu_preregister_patients p2
|
||||
ON p2.Mcu_PreregisterPatientsT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND p2.Mcu_PreregisterPatientsIsActive = 'Y'
|
||||
WHERE oh.T_OrderHeaderIsActive = 'Y'
|
||||
AND p2.Mcu_PreregisterPatientsGender = v_gender
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone.t_orderdetailorder odo
|
||||
WHERE odo.T_OrderDetailOrderT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND odo.T_OrderDetailOrderIsPacket = 'Y'
|
||||
AND odo.T_OrderDetailOrderIsActive = 'Y'
|
||||
))
|
||||
OR v_orders NOT LIKE '%PN%'
|
||||
)
|
||||
ORDER BY oh.T_OrderHeaderDate DESC
|
||||
LIMIT 1;
|
||||
FROM cpone.so_resultentry r
|
||||
JOIN cpone.so_resultentrydetail rd
|
||||
ON rd.So_ResultEntryDetailSo_ResultEntryID = r.So_ResultEntryID
|
||||
AND rd.So_ResultEntryDetailIsActive = 'Y'
|
||||
WHERE r.So_ResultEntryT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND r.So_ResultEntryIsActive = 'Y'
|
||||
AND r.So_ResultEntryValidation1 = 'Y'
|
||||
AND r.So_ResultEntryStatus = 'VAL'
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone.t_orderdetail odr
|
||||
WHERE odr.T_OrderDetailT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND odr.T_OrderDetailIsActive = 'Y'
|
||||
AND IFNULL(TRIM(odr.T_OrderDetailResult), '') <> ''
|
||||
)
|
||||
AND (
|
||||
(v_orders LIKE '%PN%' AND EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone.t_orderdetailorder odo
|
||||
WHERE odo.T_OrderDetailOrderT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND odo.T_OrderDetailOrderIsPacket = 'Y'
|
||||
AND odo.T_OrderDetailOrderIsActive = 'Y'
|
||||
))
|
||||
OR EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone.t_orderdetail odx
|
||||
WHERE odx.T_OrderDetailT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND odx.T_OrderDetailIsActive = 'Y'
|
||||
AND FIND_IN_SET(TRIM(odx.T_OrderDetailT_TestCode), REPLACE(v_orders, ' ', '')) > 0
|
||||
)
|
||||
OR IFNULL(TRIM(v_orders), '') = ''
|
||||
)
|
||||
ORDER BY oh.T_OrderHeaderDate DESC
|
||||
LIMIT 1
|
||||
), 0)
|
||||
INTO v_source_order_id;
|
||||
|
||||
IF IFNULL(v_source_order_id, 0) = 0 THEN
|
||||
SELECT IFNULL((
|
||||
SELECT oh.T_OrderHeaderID
|
||||
FROM cpone.t_orderheader oh
|
||||
JOIN cpone.mcu_preregister_patients p2
|
||||
ON p2.Mcu_PreregisterPatientsT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND p2.Mcu_PreregisterPatientsIsActive = 'Y'
|
||||
WHERE oh.T_OrderHeaderIsActive = 'Y'
|
||||
AND p2.Mcu_PreregisterPatientsGender = v_gender
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone.t_orderdetail odr
|
||||
WHERE odr.T_OrderDetailT_OrderHeaderID = oh.T_OrderHeaderID
|
||||
AND odr.T_OrderDetailIsActive = 'Y'
|
||||
AND IFNULL(TRIM(odr.T_OrderDetailResult), '') <> ''
|
||||
)
|
||||
ORDER BY oh.T_OrderHeaderDate DESC
|
||||
LIMIT 1
|
||||
), 0)
|
||||
INTO v_source_order_id;
|
||||
END IF;
|
||||
|
||||
IF IFNULL(v_source_order_id, 0) = 0 THEN
|
||||
ITERATE read_loop;
|
||||
END IF;
|
||||
|
||||
SELECT IFNULL(MAX(CAST(RIGHT(T_OrderHeaderLabNumber, 4) AS UNSIGNED)), 0) + 1
|
||||
INTO v_seq
|
||||
FROM cpone.t_orderheader
|
||||
WHERE T_OrderHeaderLabNumber LIKE CONCAT('X', DATE_FORMAT(NOW(), '%y%m%d'), '%');
|
||||
|
||||
SET v_lab_number = CONCAT(
|
||||
'X',
|
||||
DATE_FORMAT(NOW(), '%y%m%d'),
|
||||
LPAD(v_seq, 4, '0')
|
||||
);
|
||||
SELECT COUNT(1)
|
||||
INTO v_lab_exists
|
||||
FROM cpone.t_orderheader
|
||||
WHERE T_OrderHeaderLabNumber = v_lab_number;
|
||||
WHILE v_lab_exists > 0 DO
|
||||
SET v_seq = v_seq + 1;
|
||||
SET v_lab_number = CONCAT(
|
||||
'X',
|
||||
DATE_FORMAT(NOW(), '%y%m%d'),
|
||||
LPAD(v_seq, 4, '0')
|
||||
);
|
||||
SELECT COUNT(1)
|
||||
INTO v_lab_exists
|
||||
FROM cpone.t_orderheader
|
||||
WHERE T_OrderHeaderLabNumber = v_lab_number;
|
||||
END WHILE;
|
||||
SET v_seq = v_seq + 1;
|
||||
|
||||
INSERT INTO cpone.t_orderheader (
|
||||
T_OrderHeaderM_BranchID,
|
||||
@@ -994,7 +1031,7 @@ BEGIN
|
||||
v_mcu_id,
|
||||
os.T_OrderSampleT_SampleStationID,
|
||||
ss.T_SampleStationName,
|
||||
'LAB',
|
||||
'lab',
|
||||
os.T_OrderSampleSamplingDate,
|
||||
CONCAT(os.T_OrderSampleSamplingDate, ' ', IFNULL(os.T_OrderSampleSamplingTime, '00:00:00')),
|
||||
CONCAT(os.T_OrderSampleReceiveDate, ' ', IFNULL(os.T_OrderSampleReceiveTime, '00:00:00')),
|
||||
@@ -1020,6 +1057,83 @@ BEGIN
|
||||
Mcu_StationProgressProcessAt = VALUES(Mcu_StationProgressProcessAt),
|
||||
Mcu_StationProgressDoneAt = VALUES(Mcu_StationProgressDoneAt),
|
||||
Mcu_StationProgressSyncedAt = VALUES(Mcu_StationProgressSyncedAt);
|
||||
|
||||
SELECT TIME(oh.T_OrderHeaderDate)
|
||||
INTO v_checkin_time
|
||||
FROM cpone.t_orderheader oh
|
||||
WHERE oh.T_OrderHeaderID = v_new_order_id
|
||||
LIMIT 1;
|
||||
|
||||
IF v_checkin_time IS NULL THEN
|
||||
SET v_checkin_time = '07:30:00';
|
||||
END IF;
|
||||
|
||||
SELECT COUNT(*)
|
||||
INTO v_total_station
|
||||
FROM cpone.t_ordersample os
|
||||
WHERE os.T_OrderSampleT_OrderHeaderID = v_new_order_id
|
||||
AND os.T_OrderSampleIsActive = 'Y';
|
||||
|
||||
SELECT COUNT(*)
|
||||
INTO v_done_station
|
||||
FROM cpone.t_ordersample os
|
||||
JOIN cpone.t_samplingso sso
|
||||
ON sso.T_SamplingSoT_OrderHeaderID = os.T_OrderSampleT_OrderHeaderID
|
||||
AND sso.T_SamplingSoT_SampleStationID = os.T_OrderSampleT_SampleStationID
|
||||
AND sso.T_SamplingSoIsActive = 'Y'
|
||||
WHERE os.T_OrderSampleT_OrderHeaderID = v_new_order_id
|
||||
AND os.T_OrderSampleIsActive = 'Y'
|
||||
AND sso.T_SamplingSoDoneDate IS NOT NULL
|
||||
AND sso.T_SamplingSoDoneDate <> '0000-00-00'
|
||||
AND IFNULL(sso.T_SamplingSoDoneTime, '') <> '';
|
||||
|
||||
IF v_total_station > 0 AND v_done_station = v_total_station THEN
|
||||
SELECT MAX(sso.T_SamplingSoDoneTime)
|
||||
INTO v_checkout_time
|
||||
FROM cpone.t_samplingso sso
|
||||
WHERE sso.T_SamplingSoT_OrderHeaderID = v_new_order_id
|
||||
AND sso.T_SamplingSoIsActive = 'Y'
|
||||
AND sso.T_SamplingSoDoneDate IS NOT NULL
|
||||
AND sso.T_SamplingSoDoneDate <> '0000-00-00'
|
||||
AND IFNULL(sso.T_SamplingSoDoneTime, '') <> '';
|
||||
ELSE
|
||||
SET v_checkout_time = NULL;
|
||||
END IF;
|
||||
|
||||
INSERT INTO cpone_dashboard.mcu_checkinout (
|
||||
Mcu_CheckinoutMcuID,
|
||||
Mcu_CheckinoutPreregisterID,
|
||||
Mcu_CheckinoutOrderID,
|
||||
Mcu_CheckinoutDate,
|
||||
Mcu_CheckinoutInTime,
|
||||
Mcu_CheckinoutOutTime,
|
||||
Mcu_CheckinoutOutUserID,
|
||||
Mcu_CheckinoutIsActive,
|
||||
Mcu_CheckinoutSyncedAt
|
||||
)
|
||||
VALUES (
|
||||
v_mcu_id,
|
||||
v_preregister_id,
|
||||
v_new_order_id,
|
||||
v_effective_date,
|
||||
v_checkin_time,
|
||||
v_checkout_time,
|
||||
CASE WHEN v_checkout_time IS NULL THEN 0 ELSE p_user_id END,
|
||||
'Y',
|
||||
NOW()
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
Mcu_CheckinoutMcuID = VALUES(Mcu_CheckinoutMcuID),
|
||||
Mcu_CheckinoutOrderID = VALUES(Mcu_CheckinoutOrderID),
|
||||
Mcu_CheckinoutOutTime = CASE
|
||||
WHEN VALUES(Mcu_CheckinoutOutTime) IS NULL THEN Mcu_CheckinoutOutTime
|
||||
ELSE VALUES(Mcu_CheckinoutOutTime)
|
||||
END,
|
||||
Mcu_CheckinoutOutUserID = CASE
|
||||
WHEN VALUES(Mcu_CheckinoutOutTime) IS NULL THEN Mcu_CheckinoutOutUserID
|
||||
ELSE VALUES(Mcu_CheckinoutOutUserID)
|
||||
END,
|
||||
Mcu_CheckinoutSyncedAt = NOW();
|
||||
END LOOP;
|
||||
CLOSE cur_target;
|
||||
|
||||
|
||||
@@ -0,0 +1,204 @@
|
||||
-- Auto-maintain cpone_corporate.kelainan_summary from cpone_corporate.kelainan_details
|
||||
|
||||
-- 1) deduplicate existing rows before adding unique key
|
||||
DELETE ks1
|
||||
FROM cpone_corporate.kelainan_summary ks1
|
||||
JOIN cpone_corporate.kelainan_summary ks2
|
||||
ON ks1.Mcu_KelainanMgm_McuID = ks2.Mcu_KelainanMgm_McuID
|
||||
AND ks1.Mcu_KelainanID = ks2.Mcu_KelainanID
|
||||
AND ks1.created_at > ks2.created_at;
|
||||
|
||||
DELETE dks1
|
||||
FROM cpone_dashboard.kelainan_summary dks1
|
||||
JOIN cpone_dashboard.kelainan_summary dks2
|
||||
ON dks1.Mgm_McuID = dks2.Mgm_McuID
|
||||
AND dks1.Mcu_KelainanID = dks2.Mcu_KelainanID
|
||||
AND dks1.created_at > dks2.created_at;
|
||||
|
||||
DROP TRIGGER IF EXISTS cpone_corporate.trg_kelainan_details_ai_sync_summary;
|
||||
DROP TRIGGER IF EXISTS cpone_corporate.trg_kelainan_details_au_sync_summary;
|
||||
DROP TRIGGER IF EXISTS cpone_corporate.trg_kelainan_details_ad_sync_summary;
|
||||
|
||||
DELIMITER $$
|
||||
|
||||
CREATE TRIGGER cpone_corporate.trg_kelainan_details_ai_sync_summary
|
||||
AFTER INSERT ON cpone_corporate.kelainan_details
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE v_mgm_mcuid INT;
|
||||
|
||||
SELECT oh.T_OrderHeaderMgm_McuID
|
||||
INTO v_mgm_mcuid
|
||||
FROM cpone.t_orderheader oh
|
||||
WHERE oh.T_OrderHeaderID = NEW.T_OrderHeaderID
|
||||
AND oh.T_OrderHeaderIsActive = 'Y'
|
||||
LIMIT 1;
|
||||
|
||||
IF v_mgm_mcuid IS NOT NULL
|
||||
AND NEW.Mcu_KelainanID IS NOT NULL
|
||||
AND NEW.Mcu_KelainanName IS NOT NULL
|
||||
AND NEW.Mcu_KelainanName <> '' THEN
|
||||
INSERT INTO cpone_corporate.kelainan_summary (
|
||||
Mcu_KelainanID,
|
||||
Mcu_KelainanMgm_McuID,
|
||||
Mcu_KelainanName,
|
||||
created_at
|
||||
)
|
||||
SELECT NEW.Mcu_KelainanID, v_mgm_mcuid, NEW.Mcu_KelainanName, NOW()
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone_corporate.kelainan_summary ks
|
||||
WHERE ks.Mcu_KelainanMgm_McuID = v_mgm_mcuid
|
||||
AND ks.Mcu_KelainanID = NEW.Mcu_KelainanID
|
||||
);
|
||||
|
||||
UPDATE cpone_corporate.kelainan_summary
|
||||
SET Mcu_KelainanName = NEW.Mcu_KelainanName
|
||||
WHERE Mcu_KelainanMgm_McuID = v_mgm_mcuid
|
||||
AND Mcu_KelainanID = NEW.Mcu_KelainanID;
|
||||
|
||||
INSERT INTO cpone_dashboard.kelainan_summary (
|
||||
Mcu_KelainanID,
|
||||
Mcu_KelainanMgm_McuID,
|
||||
Mcu_KelainanName,
|
||||
created_at,
|
||||
Mgm_McuID
|
||||
)
|
||||
SELECT NEW.Mcu_KelainanID, v_mgm_mcuid, NEW.Mcu_KelainanName, NOW(), v_mgm_mcuid
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone_dashboard.kelainan_summary dks
|
||||
WHERE dks.Mgm_McuID = v_mgm_mcuid
|
||||
AND dks.Mcu_KelainanID = NEW.Mcu_KelainanID
|
||||
);
|
||||
|
||||
UPDATE cpone_dashboard.kelainan_summary
|
||||
SET Mcu_KelainanName = NEW.Mcu_KelainanName,
|
||||
Mcu_KelainanMgm_McuID = v_mgm_mcuid
|
||||
WHERE Mgm_McuID = v_mgm_mcuid
|
||||
AND Mcu_KelainanID = NEW.Mcu_KelainanID;
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
CREATE TRIGGER cpone_corporate.trg_kelainan_details_au_sync_summary
|
||||
AFTER UPDATE ON cpone_corporate.kelainan_details
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE v_mgm_old INT;
|
||||
DECLARE v_mgm_new INT;
|
||||
|
||||
SELECT oh.T_OrderHeaderMgm_McuID
|
||||
INTO v_mgm_old
|
||||
FROM cpone.t_orderheader oh
|
||||
WHERE oh.T_OrderHeaderID = OLD.T_OrderHeaderID
|
||||
AND oh.T_OrderHeaderIsActive = 'Y'
|
||||
LIMIT 1;
|
||||
|
||||
SELECT oh.T_OrderHeaderMgm_McuID
|
||||
INTO v_mgm_new
|
||||
FROM cpone.t_orderheader oh
|
||||
WHERE oh.T_OrderHeaderID = NEW.T_OrderHeaderID
|
||||
AND oh.T_OrderHeaderIsActive = 'Y'
|
||||
LIMIT 1;
|
||||
|
||||
IF v_mgm_old IS NOT NULL AND OLD.Mcu_KelainanID IS NOT NULL THEN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone_corporate.kelainan_details kd
|
||||
JOIN cpone.t_orderheader oh ON oh.T_OrderHeaderID = kd.T_OrderHeaderID
|
||||
WHERE oh.T_OrderHeaderMgm_McuID = v_mgm_old
|
||||
AND oh.T_OrderHeaderIsActive = 'Y'
|
||||
AND kd.Mcu_KelainanID = OLD.Mcu_KelainanID
|
||||
) THEN
|
||||
DELETE FROM cpone_corporate.kelainan_summary
|
||||
WHERE Mcu_KelainanMgm_McuID = v_mgm_old
|
||||
AND Mcu_KelainanID = OLD.Mcu_KelainanID;
|
||||
DELETE FROM cpone_dashboard.kelainan_summary
|
||||
WHERE Mgm_McuID = v_mgm_old
|
||||
AND Mcu_KelainanID = OLD.Mcu_KelainanID;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF v_mgm_new IS NOT NULL
|
||||
AND NEW.Mcu_KelainanID IS NOT NULL
|
||||
AND NEW.Mcu_KelainanName IS NOT NULL
|
||||
AND NEW.Mcu_KelainanName <> '' THEN
|
||||
INSERT INTO cpone_corporate.kelainan_summary (
|
||||
Mcu_KelainanID,
|
||||
Mcu_KelainanMgm_McuID,
|
||||
Mcu_KelainanName,
|
||||
created_at
|
||||
)
|
||||
SELECT NEW.Mcu_KelainanID, v_mgm_new, NEW.Mcu_KelainanName, NOW()
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone_corporate.kelainan_summary ks
|
||||
WHERE ks.Mcu_KelainanMgm_McuID = v_mgm_new
|
||||
AND ks.Mcu_KelainanID = NEW.Mcu_KelainanID
|
||||
);
|
||||
|
||||
UPDATE cpone_corporate.kelainan_summary
|
||||
SET Mcu_KelainanName = NEW.Mcu_KelainanName
|
||||
WHERE Mcu_KelainanMgm_McuID = v_mgm_new
|
||||
AND Mcu_KelainanID = NEW.Mcu_KelainanID;
|
||||
|
||||
INSERT INTO cpone_dashboard.kelainan_summary (
|
||||
Mcu_KelainanID,
|
||||
Mcu_KelainanMgm_McuID,
|
||||
Mcu_KelainanName,
|
||||
created_at,
|
||||
Mgm_McuID
|
||||
)
|
||||
SELECT NEW.Mcu_KelainanID, v_mgm_new, NEW.Mcu_KelainanName, NOW(), v_mgm_new
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone_dashboard.kelainan_summary dks
|
||||
WHERE dks.Mgm_McuID = v_mgm_new
|
||||
AND dks.Mcu_KelainanID = NEW.Mcu_KelainanID
|
||||
);
|
||||
|
||||
UPDATE cpone_dashboard.kelainan_summary
|
||||
SET Mcu_KelainanName = NEW.Mcu_KelainanName,
|
||||
Mcu_KelainanMgm_McuID = v_mgm_new
|
||||
WHERE Mgm_McuID = v_mgm_new
|
||||
AND Mcu_KelainanID = NEW.Mcu_KelainanID;
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
CREATE TRIGGER cpone_corporate.trg_kelainan_details_ad_sync_summary
|
||||
AFTER DELETE ON cpone_corporate.kelainan_details
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE v_mgm_mcuid INT;
|
||||
|
||||
SELECT oh.T_OrderHeaderMgm_McuID
|
||||
INTO v_mgm_mcuid
|
||||
FROM cpone.t_orderheader oh
|
||||
WHERE oh.T_OrderHeaderID = OLD.T_OrderHeaderID
|
||||
AND oh.T_OrderHeaderIsActive = 'Y'
|
||||
LIMIT 1;
|
||||
|
||||
IF v_mgm_mcuid IS NOT NULL AND OLD.Mcu_KelainanID IS NOT NULL THEN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM cpone_corporate.kelainan_details kd
|
||||
JOIN cpone.t_orderheader oh ON oh.T_OrderHeaderID = kd.T_OrderHeaderID
|
||||
WHERE oh.T_OrderHeaderMgm_McuID = v_mgm_mcuid
|
||||
AND oh.T_OrderHeaderIsActive = 'Y'
|
||||
AND kd.Mcu_KelainanID = OLD.Mcu_KelainanID
|
||||
) THEN
|
||||
DELETE FROM cpone_corporate.kelainan_summary
|
||||
WHERE Mcu_KelainanMgm_McuID = v_mgm_mcuid
|
||||
AND Mcu_KelainanID = OLD.Mcu_KelainanID;
|
||||
DELETE FROM cpone_dashboard.kelainan_summary
|
||||
WHERE Mgm_McuID = v_mgm_mcuid
|
||||
AND Mcu_KelainanID = OLD.Mcu_KelainanID;
|
||||
END IF;
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user