-- ตรวจสอบว่ามีการปล่อยแล้วหรือไม่ (ถ้ามีแล้วไม่สามารถลบ)SELECT COUNT(*) FROM SFT_WS_RUN WITH (NOLOCK)
WHERE ID = N'{wo_no}'
AND EXECUTETYPE = 'release'AND PLUSINDEX = '0'-- ถ้า COUNT > 0 โยน JS_0126_00062-- ตรวจสอบว่ามีบันทึกแยกแบตช์หรือไม่SELECT COUNT(*) FROM SFT_BATCH_REC WHERE BR001 = N'{wo_no}'
-- ถ้า COUNT > 0 โยน remind_004-- ลบข้อมูลที่เกี่ยวข้อง (ดำเนินการตามลำดับ)DELETE FROM SFT_OP_REALRUN WHERE ID = :CMOID
DELETE FROM LOT WHERE MOID = :CMOID
DELETE FROM MODETAIL WHERE CMOID = :CMOID
DELETE FROM SFT_SPEC_MODIREC WHERE MD001 = :CMOID
DELETE FROM SFT_BATCH_REC WHERE BR002 = :CMOID
DELETE FROM EQUIPMENT_RUN WHERE LOTID = :CMOID
DELETE FROM SFT_WS_RUN WHERE ID = :CMOID
DELETE FROM SFT_SPLITOUT_REC WHERE SSR001 = :CMOID
DELETE FROM SFT_ASSEMBLY_REC WHERE SAR001 = :CMOID
DELETE FROM SFT_HOLD_REC WHERE HR001 = :CMOID
DELETE FROM SFT_MO_MODI WHERE MODI002 = :CMOID
-- ตรวจสอบว่าใบสั่งผลิตปิดงานแล้วหรือไม่SELECT COUNT(*) FROM MODETAIL WITH (NOLOCK)
WHERE CMOID = N'{wo_no}'
AND STATUS NOT IN ('99', '100')
-- ถ้า COUNT > 0 หมายถึงยังไม่ปิดงาน โยน JS_0126_00059-- คืนค่าสถานะปิดงาน (ดำเนินการย้อนกลับจากกระบวนการปิดงาน)-- ตัดสินสถานะที่จะคืนค่าตามบันทึกการเข้าสถานีใน SFT_WS_RUNUPDATE MODETAIL SET
STATUS = CASEWHEN (SELECT COUNT(1) FROM SFT_WS_RUN WITH (NOLOCK)
WHERE ID = N'{wo_no}' AND EXECUTETYPE = 'checkIn') > 0
THEN2-- มีบันทึกเข้าสถานี → กำลังผลิตELSE1-- ไม่มีบันทึกเข้าสถานี → ยังไม่ผลิตEND,
LASTMAINTAINUSER = :userid,
LASTMAINTAINDATETIME = N'{เวลาปัจจุบัน}'
WHERE CMOID = :CMOID