SET TERM ^ ;

CREATE OR ALTER trigger ttbestoque_trans_item_b0d_00 for tbestoque_transacao_item
active before delete position 0
AS
declare variable disponivel integer;
declare variable PRODUTO varchar(500);
begin

    IF ( OLD.ESTOQUE_TRANSACAO_REGRA_ID > 0 AND OLD.TIPO = 'E' AND OLD.CONFERENCIA = 1 ) THEN
    BEGIN
        DELETE
          FROM TBESTOQUE_DETALHE_ALOCACAO D
         WHERE TIPO        = 'E'
           AND TAB_ITEM_ID = OLD.CONTROLE;
    END ELSE

    IF ( OLD.ESTOQUE_TRANSACAO_REGRA_ID > 0 AND OLD.TIPO = 'E' AND OLD.CONFERENCIA = 2 ) THEN
    BEGIN
      EXCEPTION "..." 'REGISTRO JA CONFERIDO, EXCLUSAO NAO PERMITIDA!';
    END

    if (OLD.CONSUMO_CCUSTO = '1') THEN
    BEGIN
        DELETE FROM TBESTOQUE_TRANSACAO_ITEM_CCUSTO D
        WHERE ESTOQUE_TRANSACAO_ID = OLD.CONTROLE;
    END


    IF (OLD.TIPO = 'E') THEN
    BEGIN
        disponivel = FN_ESTOQUE_SALDO_DISPONIVEL(old.estabelecimento_codigo, old.localizacao_codigo, old.produto_codigo, old.tamanho);
    
        if( disponivel < old.quantidade )then
        begin
            PRODUTO = COALESCE((SELECT FIRST 1 FN_LPAD(PROD.CODIGO, 5, '0')||' - '||PROD.DESCRICAO FROM TBPRODUTO PROD WHERE PROD.CODIGO = OLD.PRODUTO_CODIGO), '');

            EXCEPTION "..." 'SEM SALDO PARA EXCLUIR A TRANSACAO '|| OLD.CONTROLE ||' DO PRODUTO '|| PRODUTO ||' - TAMANHO ['|| OLD.TAMANHO ||'] '|| COALESCE(FN_TAMANHO_PRODUTO(OLD.PRODUTO_CODIGO, OLD.TAMANHO), '') ||' , EXCLUSAO NAO PERMITIDA!';
        end
     END

end
^

SET TERM ; ^

