SET TERM ^;

CREATE OR ALTER TRIGGER TTBPEDIDO_ITEM00IU FOR TBPEDIDO_ITEM
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable PRODUTO_ID INTEGER;
declare variable HISTORICO VARCHAR(500);
BEGIN
  IF(NEW.PERFIL <> ' ')THEN
  BEGIN
     NEW.PERFIL = TRIM(NEW.PERFIL);
  END

  IF(NEW.PERFIL_COR <> ' ')THEN
  BEGIN
     NEW.PERFIL_COR = TRIM(NEW.PERFIL_COR);
  END 

  IF(NEW.VALOR_DESCONTO IS NULL) THEN
  BEGIN
     NEW.VALOR_DESCONTO = 0;
  END
--  IF(NEW.PEDIDO <> OLD.PEDIDO)THEN
--  BEGIN
--     EXCEPTION "..." 'NUMERO DO PEDIDO DO ITEM NAO PODE SER TROCADO, OPERACAO CANCELADA!';
--  END

  --PEDIDOS DIGITADOS NA TELA 12200 TEM VALOR ORIGINAL
  IF(COALESCE(NEW.VALOR_ORIGINAL,0) = 0)THEN
  BEGIN
    NEW.VALOR_ORIGINAL = NEW.VALOR;
  END

  IF(INSERTING)THEN
  BEGIN
     :PRODUTO_ID = COALESCE((SELECT FIRST 1 P.CODIGO FROM TBPRODUTO P WHERE P.MODELO_CODIGO = NEW.MODELO_CODIGO AND p.COR_CODIGO = new.COR_ID and p.status = '1'),0);

     IF(:PRODUTO_ID = 0)THEN
     BEGIN
         EXCEPTION "..." ' ITEM SEQ.'||FN_LPAD(NEW.SEQUENCIA,3,0)||'<BR> MODELO:'||COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO,6,0)||' - '||B.DESCRICAO FROM TBMODELO B WHERE B.CODIGO = NEW.MODELO_CODIGO),'')
         ||'<BR> COR:'||COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO,6,0)||' - '||C.DESCRICAO FROM TBCOR C WHERE C.CODIGO = NEW.COR_ID),'')||' NAO POSSUI PRODUTO ATIVO NO CADASTRO!';
     END

     IF(:PRODUTO_ID <> NEW.PRODUTO_CODIGO)THEN
     BEGIN

         HISTORICO = ' ITEM SEQ.'||FN_LPAD(NEW.SEQUENCIA,3,0)||' TEVE PRODUTO AJUSTADO. PROD.'||NEW.PRODUTO_CODIGO||' -> '||:PRODUTO_ID;

         EXECUTE PROCEDURE SPI_HISTORICO('TBPEDIDO',NEW.PEDIDO,:HISTORICO);

         NEW.PRODUTO_CODIGO = :PRODUTO_ID;
     END
  END

  IF(UPDATING)THEN
  BEGIN
     IF(OLD.PRODUTO_CODIGO <> NEW.PRODUTO_CODIGO)THEN
     BEGIN

         :PRODUTO_ID = COALESCE((SELECT FIRST 1 P.CODIGO FROM TBPRODUTO P WHERE P.MODELO_CODIGO = NEW.MODELO_CODIGO AND p.COR_CODIGO = new.COR_ID and p.status = '1'),0);
    
         IF(:PRODUTO_ID = 0)THEN
         BEGIN
             EXCEPTION "..." ' ITEM SEQ.'||FN_LPAD(NEW.SEQUENCIA,3,0)||'<BR> MODELO:'||COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO,6,0)||' - '||B.DESCRICAO FROM TBMODELO B WHERE B.CODIGO = NEW.MODELO_CODIGO),'')
             ||'<BR> COR:'||COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO,6,0)||' - '||C.DESCRICAO FROM TBCOR C WHERE C.CODIGO = NEW.COR_ID),'')||' NAO POSSUI PRODUTO ATIVO NO CADASTRO!';
         END 

         IF(:PRODUTO_ID <> NEW.PRODUTO_CODIGO)THEN
         BEGIN
    
             HISTORICO = ' ITEM SEQ.'||FN_LPAD(NEW.SEQUENCIA,3,0)||' TEVE PRODUTO AJUSTADO. PROD.'||NEW.PRODUTO_CODIGO||' -> '||:PRODUTO_ID;
    
             EXECUTE PROCEDURE SPI_HISTORICO('TBPEDIDO',NEW.PEDIDO,:HISTORICO);
    
             NEW.PRODUTO_CODIGO = :PRODUTO_ID;
         END

     END
  END

END^


SET TERM ; ^