CREATE OR ALTER TRIGGER TTBPEDIDO_B1U_01 FOR TBPEDIDO
ACTIVE BEFORE UPDATE POSITION 1
AS
DECLARE VARIABLE ID0 INTEGER;
declare variable ALOCAR_PEDIDO_PENDENTE VARCHAR(1);
BEGIN
  For
    Select
    IIF((OLD.SITUACAO=1 AND NEW.SITUACAO=0) or (OLD.STATUS='1' AND NEW.STATUS='0'),
    Coalesce((Select First 1 EDA.ID From TBESTOQUE_DETALHE_ALOCACAO EDA Where EDA.Estabelecimento_Id = OLD.Estabelecimento_Codigo and EDA.Tabela_Id = Old.Pedido and EDA.Tipo = 'P' and EDA.Saldo > 0),0),0),
    COALESCE((SELECT FIRST 1 B.ALOCAR_PEDIDO_PENDENTE FROM TBPERFIL B WHERE B.ID = NEW.CLASSIFICACAO AND B.TABELA = 'PED'),'0') AS ALOCAR_PEDIDO_PENDENTE
    From RDB$DATABASE
    Into :ID0,:ALOCAR_PEDIDO_PENDENTE
    Do
    Begin
      /* Trigger text */
      if(:ID0 > 0 AND :ALOCAR_PEDIDO_PENDENTE = '0') Then
          BEGIN
            Exception "..." 'ALTERAÇÃO STATUS OU CONFIRMAÇÃO DO PEDIDO NÃO PERMITIDA, ESSE PEDIDO JÁ TEM ESTOQUE ALOCADO. '||
            ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
          END
    End

END;