-- Create sequence for transfer laying movement number
CREATE SEQUENCE transfer_laying_seq START
WITH
    1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 99999 NO CYCLE;

-- Set sequence starting value based on existing data (if any)
-- This prevents duplicate movement numbers if there's already data
DO $$ DECLARE max_existing INTEGER;

BEGIN
-- Check if table exists and has data
IF EXISTS (
    SELECT 1
    FROM information_schema.tables
    WHERE
        table_schema = 'public'
        AND table_name = 'transfer_to_layings'
) THEN
-- Get max ID from existing records
SELECT COALESCE(MAX(id), 0) INTO max_existing
FROM transfer_to_layings;

-- Set sequence to start after the highest existing ID
IF max_existing > 0 THEN PERFORM setval (
    'transfer_laying_seq',
    max_existing
);

END IF;

END IF;

END $$;