SET NOCOUNT ON; DECLARE @r int,@m varchar(255),@job varchar(255),@n int; EXEC dbo.proc_allot_space 'NEW-TRAY','TEST',@r OUTPUT,@m OUTPUT; IF @r<>2 OR EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='IN-NEW' AND cargo_space_id IS NOT NULL) THROW 51900,'Disabled pilot must preserve Legacy no-position behavior',1; UPDATE mixed_pilot.control SET enabled=1,all_projects_may_mix=1 WHERE id=1; UPDATE mixed_pilot.lane SET enabled=1,physical_fit_confirmed=1 WHERE lane_code='C1203'; -- An ordinary same-project position must win before mixed fallback. INSERT dbo.bas_cargo_space(cargo_space_id,warehouse_id,the_floor,the_platoon,the_column,group_coding_no,group_coding,this_cargo_area,status,locked,tray_code) VALUES('110801','01',1,11,8,'C1101','1','C','2','N','SAME'),('110701','01',1,11,7,'C1101','2','C','1','N',NULL); INSERT dbo.bas_stock(stock_id,cargo_space_id,tray_code,spare4,spare1,spare2,spare3,quantity,out_quantity) VALUES('SAME-S','110801','SAME','NEW','D','E','F',1,0); EXEC dbo.proc_allot_space 'NEW-TRAY','TEST',@r OUTPUT,@m OUTPUT; IF @r<>10 OR NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='IN-NEW' AND cargo_space_id='110701') THROW 51901,'Normal Legacy allocation must have priority',1; UPDATE dbo.mydo_job SET cargo_space_id=NULL,status='1' WHERE job_id='IN-NEW'; DELETE dbo.bas_stock WHERE stock_id='SAME-S'; DELETE dbo.bas_cargo_space WHERE group_coding_no='C1101'; -- No physical confirmation, missing E capacity, ambiguity and common-project input fail closed. UPDATE mixed_pilot.lane SET physical_fit_confirmed=0 WHERE lane_code='C1203'; EXEC dbo.proc_allot_space 'NEW-TRAY','TEST',@r OUTPUT,@m OUTPUT; IF @r=10 THROW 51902,'Unconfirmed physical fit must not admit mixed pallet',1; UPDATE mixed_pilot.lane SET physical_fit_confirmed=1 WHERE lane_code='C1203'; UPDATE dbo.bas_cargo_space SET locked='Y' WHERE this_cargo_area='E'; EXEC dbo.proc_allot_space 'NEW-TRAY','TEST',@r OUTPUT,@m OUTPUT; IF @r=10 THROW 51903,'No same-floor E capacity must not admit mixed pallet',1; UPDATE dbo.bas_cargo_space SET locked='N' WHERE this_cargo_area='E'; UPDATE dbo.mydo_job_detail SET spare4='WRONG' WHERE job_id='IN-NEW'; EXEC dbo.proc_allot_space 'NEW-TRAY','TEST',@r OUTPUT,@m OUTPUT; IF @r=10 THROW 51904,'Header/detail project mismatch must be rejected',1; UPDATE dbo.mydo_job_detail SET spare4='NEW' WHERE job_id='IN-NEW'; EXEC dbo.proc_allot_space 'NEW-TRAY','TEST',@r OUTPUT,@m OUTPUT; IF @r<>10 OR NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='IN-NEW' AND cargo_space_id='120703' AND status='3') THROW 51905,'Fallback must reserve only the designated outer position',1; IF NOT EXISTS(SELECT 1 FROM dbo.bas_cargo_space WHERE cargo_space_id='120703' AND status='3') THROW 51906,'Fallback must reserve slot and job together',1; EXEC dbo.proc_allot_space 'NEW-TRAY','TEST',@r OUTPUT,@m OUTPUT; IF @r<>10 OR (SELECT COUNT(*) FROM mixed_pilot.admission)<>1 THROW 51907,'Repeated allocation must return same reservation without a second admission',1; INSERT dbo.mydo_job(job_id,tray_code,warehouse_id,line_id,in_or_out,status,execution_phase,fault_flag) VALUES('IN-THIRD','THIRD-TRAY','01','THIRD',1,'1','0','0'); INSERT dbo.mydo_job_detail(job_detail_id,job_id,spare4,spare1,spare2,spare3,in_quantity) VALUES('IN-THIRD-1','IN-THIRD','THIRD','X','Y','Z',1); EXEC dbo.proc_allot_space 'THIRD-TRAY','TEST',@r OUTPUT,@m OUTPUT; IF @r=10 THROW 51908,'A third project or an already reserved front slot must be rejected',1; -- Simulate a confirmed physical inbound completion (no WCS or HTTP is contacted). INSERT dbo.bas_stock(stock_id,cargo_space_id,tray_code,spare4,spare1,spare2,spare3,quantity,out_quantity) VALUES('GUEST-S','120703','NEW-TRAY','NEW','D','E','F',1,0); UPDATE dbo.bas_cargo_space SET status='2',tray_code='NEW-TRAY' WHERE cargo_space_id='120703'; DELETE dbo.mydo_job WHERE job_id='IN-NEW'; -- Automatic allocation creates the blocker move before the rear job. EXEC dbo.proc_yk_job_add '120703','130803','NEW-TRAY'; SELECT @job=job_id FROM dbo.mydo_job WHERE in_or_out=30 AND tray_code='NEW-TRAY'; UPDATE dbo.bas_cargo_space SET status='4' WHERE cargo_space_id='120803'; INSERT dbo.mydo_job(job_id,tray_code,cargo_space_id,class_id,in_or_out,status,execution_phase,task_no) VALUES('OUT-REAR','RESIDENT','120803','3',21,'1','0',800001); IF NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='OUT-REAR' AND status='8') THROW 51909,'Blocked rear outbound must be held before the WMS scheduler can see it',1; IF NOT EXISTS(SELECT 1 FROM mixed_pilot.dispatch_hold WHERE job_id='OUT-REAR' AND released_at IS NULL) THROW 51910,'Held job must be diagnosable',1; -- Occupied or wrong-floor destinations must not create a move or change inventory. BEGIN TRY EXEC dbo.proc_yk_job_add '120703','020704','NEW-TRAY'; THROW 51911,'Wrong-floor move was accepted',1; END TRY BEGIN CATCH IF ERROR_NUMBER()=51911 THROW; END CATCH; IF (SELECT COUNT(*) FROM dbo.mydo_job WHERE in_or_out=30)<>1 THROW 51912,'Rejected relocation must leave no partial task',1; EXEC dbo.proc_yk_job_add '120703','130803','NEW-TRAY'; IF @job IS NULL OR NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id=@job AND status='1') THROW 51913,'Outer relocation must remain dispatchable',1; EXEC dbo.proc_yk_job_add '120703','130803','NEW-TRAY'; IF (SELECT COUNT(*) FROM dbo.mydo_job WHERE in_or_out=30)<>1 THROW 51914,'Repeated identical relocation must not duplicate tasks',1; IF NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='OUT-REAR' AND status='8') THROW 51915,'Creating a relocation is not physical completion',1; -- Switch OFF while pallets are mixed: no new admissions, protection must remain. UPDATE mixed_pilot.control SET enabled=0 WHERE id=1; IF NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='OUT-REAR' AND status='8') THROW 51916,'Disabling admission must not release blocked outbound',1; EXEC dbo.proc_yk_complete @job,@r OUTPUT; IF @r<>10 OR NOT EXISTS(SELECT 1 FROM dbo.bas_stock WHERE stock_id='GUEST-S' AND cargo_space_id='130803' AND spare4='NEW') THROW 51917,'Move completion must preserve guest project ownership',1; IF NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='OUT-REAR' AND status='1') THROW 51918,'Rear outbound must be released only after confirmed front clearance',1; SELECT @n=COUNT(*) FROM dbo.move_msg; EXEC dbo.proc_yk_complete @job,@r OUTPUT; IF @r<>10 OR (SELECT COUNT(*) FROM dbo.move_msg)<>@n THROW 51919,'Duplicate move completion must not change stock or emit duplicate move messages',1; -- Ordinary front outbound also blocks the rear until BOTH stock and job are cleared. DELETE dbo.mydo_job WHERE job_id='OUT-REAR'; UPDATE dbo.bas_stock SET cargo_space_id='120703' WHERE stock_id='GUEST-S'; UPDATE dbo.bas_cargo_space SET status='2',tray_code='NEW-TRAY' WHERE cargo_space_id='120703'; INSERT dbo.mydo_job(job_id,tray_code,cargo_space_id,class_id,in_or_out,status,execution_phase,task_no) VALUES('OUT-FRONT','NEW-TRAY','120703','3',21,'1','0',800002),('OUT-REAR2','RESIDENT','120803','3',21,'1','0',800003); IF NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='OUT-FRONT' AND status='1') OR NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='OUT-REAR2' AND status='8') THROW 51920,'Front may dispatch while blocked rear must wait',1; UPDATE dbo.bas_cargo_space SET status='1',tray_code=NULL WHERE cargo_space_id='120703'; DELETE dbo.bas_stock WHERE stock_id='GUEST-S'; IF NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='OUT-REAR2' AND status='8') THROW 51921,'An active front task must continue to block rear dispatch',1; DELETE dbo.mydo_job WHERE job_id='OUT-FRONT'; IF NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='OUT-REAR2' AND status='1') THROW 51922,'Final front task deletion must release waiting rear job',1; -- Unlisted lanes must not be held by the pilot triggers. INSERT dbo.mydo_job(job_id,tray_code,cargo_space_id,class_id,in_or_out,status,execution_phase,task_no) VALUES('OTHER-OUT','OTHER-RESIDENT','080801','1',21,'1','0',800004); IF NOT EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='OTHER-OUT' AND status='1') THROW 51923,'Unlisted lanes must retain Legacy dispatch behavior',1; -- Manual allocation must not strand a held task when no blocker move exists. DELETE dbo.mydo_job WHERE job_id='OUT-REAR2'; UPDATE dbo.bas_cargo_space SET status='2',tray_code='NEW-TRAY' WHERE cargo_space_id='120703'; INSERT dbo.bas_stock(stock_id,cargo_space_id,tray_code,spare4,quantity,out_quantity) VALUES('GUEST-AGAIN','120703','NEW-TRAY','NEW',1,0); BEGIN TRY INSERT dbo.mydo_job(job_id,tray_code,cargo_space_id,class_id,in_or_out,status,execution_phase,task_no) VALUES('MANUAL-BLOCKED','RESIDENT','120803','3',21,'1','0',800005); THROW 51924,'Manual blocked outbound was accepted without a blocker task',1; END TRY BEGIN CATCH IF ERROR_NUMBER()=51924 THROW; END CATCH; IF EXISTS(SELECT 1 FROM dbo.mydo_job WHERE job_id='MANUAL-BLOCKED') THROW 51925,'Rejected manual allocation must not leave a stranded held job',1; BEGIN TRY EXEC dbo.proc_yk_job_add '080801','130803','OTHER-RESIDENT'; THROW 51926,'Unlisted source overwrote a protected relocation destination',1; END TRY BEGIN CATCH IF ERROR_NUMBER()=51926 THROW; END CATCH; IF NOT EXISTS(SELECT 1 FROM dbo.bas_cargo_space WHERE cargo_space_id='130803' AND status='2' AND tray_code='NEW-TRAY') THROW 51927,'Rejected stale relocation target must retain existing occupancy',1; PRINT 'PASS: mixed-pilot sequential behavior assertions';