SET TERM ^ ;

CREATE OR ALTER trigger ttbpedido_item_b3u_02 for tbpedido_item
active before update position 3
AS
declare variable Qtd Numeric(15,4);
BEGIN

 IF (OLD.LOCALIZACAO_ID <> NEW.LOCALIZACAO_ID or
     OLD.PRODUTO_CODIGO <> NEW.PRODUTO_CODIGO or
    (OLD.SITUACAO = 1  AND NEW.SITUACAO=3)) Then
     Begin
     if (OLD.QTD_EST > 0) then
         Begin
         Exception "..." 'ALTERAÇÃO NÃO PERMITIDA, ITEM DE PEDIDO JÁ TEM ESTOQUE ALOCADO. PRODUTO: '||OLD.PRODUTO_CODIGO||
         ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
         End
     if (OLD.QTD_REM > 0) then
         Begin
         Exception "..." 'ALTERAÇÃO NÃO PERMITIDA, ITEM DE PEDIDO JÁ TEM TALÃO DE PRODUÇÃO ALOCADO. PRODUTO: '||OLD.PRODUTO_CODIGO||
         ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
         End
     if (OLD.QTD_AGP > 0) then
         Begin
         Exception "..." 'ALTERAÇÃO NÃO PERMITIDA, ITEM DE PEDIDO JÁ TEM AGRUPAMENTO ALOCADO. PRODUTO: '||OLD.PRODUTO_CODIGO||
         ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
         End
     End

 IF (OLD.QUANTIDADE <> NEW.QUANTIDADE) Then
     Begin
     if (OLD.SITUACAO = 2) THEN
         BEGIN
            Exception "..." 'ALTERAÇÃO NÃO PERMITIDA, ITEM JÁ FATURADO. PRODUTO: '||OLD.PRODUTO_CODIGO||' - '||(SELECT FIRST 1 P.DESCRICAO FROM TBPRODUTO P WHERE P.CODIGO = OLD.PRODUTO_CODIGO)||
            ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
         END
     if (OLD.SITUACAO = 3) THEN
         BEGIN
            Exception "..." 'ALTERAÇÃO NÃO PERMITIDA, ITEM JÁ ENCERRADO. PRODUTO: '||OLD.PRODUTO_CODIGO||' - '||(SELECT FIRST 1 P.DESCRICAO FROM TBPRODUTO P WHERE P.CODIGO = OLD.PRODUTO_CODIGO)||
            ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
         END
     if (OLD.QTD_EST > 0 AND OLD.QTD_EST > NEW.QUANTIDADE) then
         Begin
         Exception "..." 'ALTERAÇÃO NÃO PERMITIDA, ITEM DE PEDIDO JÁ TEM ESTOQUE ALOCADO. PRODUTO: '||OLD.PRODUTO_CODIGO||
         ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
         End
     if (OLD.QTD_REM > 0 AND OLD.QTD_REM > NEW.QUANTIDADE) then
         Begin
         Exception "..." 'ALTERAÇÃO NÃO PERMITIDA, ITEM DE PEDIDO JÁ TEM TALÃO DE PRODUÇÃO ALOCADO. PRODUTO: '||OLD.PRODUTO_CODIGO||
         ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
         End
     if (OLD.QTD_AGP > 0 AND OLD.QTD_AGP > NEW.QUANTIDADE) then
         Begin
         Exception "..." 'ALTERAÇÃO NÃO PERMITIDA, ITEM DE PEDIDO JÁ TEM AGRUPAMENTO ALOCADO. PRODUTO: '||OLD.PRODUTO_CODIGO||
         ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
         End
     End

END
^

SET TERM ; ^

