SET TERM ^ ;

CREATE OR ALTER trigger ttbtalao_vinculo_b01d for tbtalao_vinculo
active before delete position 0
AS
declare variable status integer;
declare variable origem_remessa integer;
begin

--    if(NOT vinculo_id > 0)then
--    begin
--      exception "..." 'Remessa: '||OLD.remessa_id||', Talão: '||OLD.talao_id||' NÃO tem um vínculo.';
--    end

    select r.origem from tbremessa r where r.numero = OLD.REMESSA_ID into origem_remessa;

    origem_remessa = coalesce(origem_remessa, 0);

    if(origem_remessa = 22595) then
    begin
       select
            p.status
        from vwremessa_talao_detalhe t, tbprogramacao p
        where t.remessa_id      = old.REMESSA_ID
        and t.id                = old.TALAO_ID
        and p.tabela_id         = t.id
        and p.remessa_id        = t.remessa_id
        and p.tipo              = 'D'
        into status;
    end
    else begin
        select
            p.status
        from vwremessa_talao t, tbprogramacao p
        where t.remessa_id      = old.REMESSA_ID
        and t.remessa_talao_id  = old.TALAO_ID
        and p.tabela_id         = t.id
        and p.remessa_id        = t.remessa_id
        and p.tipo              = 'A'
        into status;
    end

    status = coalesce(status,-1);

    if(not (status = 1 or status = 0))then
    begin

        exception "..." 'Remessa: '||old.remessa_id||', Talão: '||old.talao_id||' não pode ser desvinculado, Status: "'||
            iif(status = 0, '0 - PARADO',
            iif(status = 1, '1 - INICIADO/PARADO',
            iif(status = 2, '2 - EM ANDAMENTO',
            iif(status = 3, '3 - FINALIZADO',
            iif(status = 6, '6 - ENCERRADO', 'Não Identificado')))))||'"';

    end

end
^

SET TERM ; ^