SET TERM ^ ;

ALTER TABLE TBPEDIDO_ITEM ADD STATUS_AMOSTRA INTEGER DEFAULT 0^

ALTER TABLE TBPEDIDO_ITEM ADD MOTIVO_STATUS_AMOSTRA VARCHAR(100) DEFAULT ''^

CREATE OR ALTER trigger ttbpedido_item_b9u for tbpedido_item
active before update position 9
AS
DECLARE VARIABLE GRD1 INTEGER;
DECLARE VARIABLE GRD2 INTEGER;
DECLARE VARIABLE TAM1 VARCHAR(10);
DECLARE VARIABLE TAM2 VARCHAR(10);
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

   HISTORICO = '';

   IF (OLD.PRODUTO_CODIGO <> NEW.PRODUTO_CODIGO OR NEW.PRODUTO_CODIGO IS DISTINCT FROM OLD.PRODUTO_CODIGO ) THEN
       BEGIN
       HISTORICO = HISTORICO||' PROD.'||COALESCE(OLD.PRODUTO_CODIGO,0)||'->'||COALESCE(NEW.PRODUTO_CODIGO,0);
       GRD1 = COALESCE((SELECT FIRST 1 P.GRADE_CODIGO FROM TBPRODUTO P WHERE P.CODIGO = COALESCE(OLD.PRODUTO_CODIGO,0)),0);
       GRD2 = COALESCE((SELECT FIRST 1 P.GRADE_CODIGO FROM TBPRODUTO P WHERE P.CODIGO = COALESCE(NEW.PRODUTO_CODIGO,0)),0);
       END ELSE
       BEGIN
       GRD1 = COALESCE((SELECT FIRST 1 P.GRADE_CODIGO FROM TBPRODUTO P WHERE P.CODIGO = COALESCE(OLD.PRODUTO_CODIGO,0)),0);
       GRD2 = :GRD1;
       END
   IF (OLD.QUANTIDADE <> NEW.QUANTIDADE OR NEW.TAMANHO <> OLD.TAMANHO) THEN
       BEGIN
       IF (OLD.TAMANHO > 0 OR NEW.TAMANHO > 0) THEN
           BEGIN
           IF (OLD.TAMANHO <> NEW.TAMANHO OR (OLD.PRODUTO_CODIGO <> NEW.PRODUTO_CODIGO OR NEW.PRODUTO_CODIGO IS DISTINCT FROM OLD.PRODUTO_CODIGO)) THEN
               BEGIN
               TAM1 = COALESCE((SELECT FIRST 1 TAM_DESCRICAO FROM SP_TAMANHO_GRADE (:GRD1,OLD.TAMANHO)),'');
               TAM2 = COALESCE((SELECT FIRST 1 TAM_DESCRICAO FROM SP_TAMANHO_GRADE (:GRD2,NEW.TAMANHO)),'');
               END ELSE
               BEGIN
               TAM1 = COALESCE((SELECT FIRST 1 TAM_DESCRICAO FROM SP_TAMANHO_GRADE (:GRD1,OLD.TAMANHO)),'');
               TAM2 = :TAM1;
               END
           HISTORICO = HISTORICO||' TAM/QTD.'||:TAM1||'/'||OLD.QUANTIDADE||'->'||:TAM2||'/'||NEW.QUANTIDADE;
           END ELSE
           BEGIN
           HISTORICO = HISTORICO||' QTD.'||OLD.QUANTIDADE||'->'||NEW.QUANTIDADE;
           END 
       END

   IF (COALESCE(OLD.QUANTIDADE_ALTERNATIVA,0) <> COALESCE(NEW.QUANTIDADE_ALTERNATIVA,0)) THEN
       BEGIN
       IF (OLD.TAMANHO > 0 OR NEW.TAMANHO > 0) THEN
           BEGIN
           IF (OLD.TAMANHO <> NEW.TAMANHO OR (OLD.PRODUTO_CODIGO <> NEW.PRODUTO_CODIGO OR NEW.PRODUTO_CODIGO IS DISTINCT FROM OLD.PRODUTO_CODIGO)) THEN
               BEGIN
               TAM1 = COALESCE((SELECT FIRST 1 TAM_DESCRICAO FROM SP_TAMANHO_GRADE (:GRD1,OLD.TAMANHO)),'');
               TAM2 = COALESCE((SELECT FIRST 1 TAM_DESCRICAO FROM SP_TAMANHO_GRADE (:GRD2,NEW.TAMANHO)),'');
               END ELSE
               BEGIN
               TAM1 = COALESCE((SELECT FIRST 1 TAM_DESCRICAO FROM SP_TAMANHO_GRADE (:GRD1,OLD.TAMANHO)),'');
               TAM2 = :TAM1;
               END
           HISTORICO = HISTORICO||' TAM/QTD.ALT.'||:TAM1||'/'||COALESCE(OLD.QUANTIDADE_ALTERNATIVA,0)||'->'||:TAM2||'/'||COALESCE(NEW.QUANTIDADE_ALTERNATIVA,0);
           END ELSE
           BEGIN
           HISTORICO = HISTORICO||' QTD.ALT.'||OLD.QUANTIDADE||'->'||NEW.QUANTIDADE;
           END 
       END
   IF (OLD.SITUACAO = 1 AND NEW.SITUACAO = 3) THEN
       HISTORICO = HISTORICO||' ITEM ENCERRADO';
   IF (OLD.SITUACAO = 3 AND NEW.SITUACAO = 1) THEN
       HISTORICO = HISTORICO||' ENCERRAMENTO DESFEITO';

   IF (OLD.DATA_SISTEMA <> NEW.DATA_SISTEMA) THEN
       BEGIN
       HISTORICO = HISTORICO||' DT.SIST.'||OLD.DATA_SISTEMA||'->'||NEW.DATA_SISTEMA;
       END
   IF (OLD.VALOR_DESCONTO<> NEW.VALOR_DESCONTO) THEN
       BEGIN
       HISTORICO = HISTORICO||' VR.DESC.'||CAST(OLD.VALOR_DESCONTO AS NUMERIC(15,2))||'->'||CAST(NEW.VALOR_DESCONTO AS NUMERIC(15,2));
       END
   IF (OLD.VALOR <> NEW.VALOR) THEN
       BEGIN
       HISTORICO = HISTORICO||' VR.UNIT.'||OLD.VALOR||'->'||NEW.VALOR;
       END
   IF (COALESCE(OLD.VALOR_ALTERNATIVO,0.00) <> COALESCE(NEW.VALOR_ALTERNATIVO,0.00)) THEN
       BEGIN
       HISTORICO = HISTORICO||' VR.UNIT.ALT.'||COALESCE(OLD.VALOR_ALTERNATIVO,0.00)||'->'||COALESCE(NEW.VALOR_ALTERNATIVO,0.00);
       END
   IF (OLD.VALOR_IPI <> NEW.VALOR_IPI OR OLD.PERCENTUAL_IPI <> NEW.PERCENTUAL_IPI) THEN
       BEGIN
       HISTORICO = HISTORICO||' VR/%IPI:'||CAST(OLD.VALOR_IPI AS NUMERIC(15,2))||'/'||CAST(OLD.PERCENTUAL_IPI AS NUMERIC(15,2))||'%'
                                   ||'->'||CAST(NEW.VALOR_IPI AS NUMERIC(15,2))||'/'||CAST(NEW.PERCENTUAL_IPI AS NUMERIC(15,2))||'%';
       END

   IF (OLD.DATA_CLIENTE <> NEW.DATA_CLIENTE) THEN
       BEGIN
       HISTORICO = HISTORICO||' DT.CLI.'||OLD.DATA_CLIENTE||'->'||NEW.DATA_CLIENTE;
       END
   IF (OLD.DATA_PRODUCAO <> NEW.DATA_PRODUCAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' DT.PRD.'||OLD.DATA_PRODUCAO||'->'||NEW.DATA_PRODUCAO;
       END

   IF (OLD.AGP_DT_CLI <> NEW.AGP_DT_CLI) THEN
       BEGIN
       HISTORICO = HISTORICO||' AGP.DT.CLI.'||OLD.AGP_DT_CLI||'->'||NEW.AGP_DT_CLI;
       END
   IF (OLD.AGP_DT_PRD  <> NEW.AGP_DT_PRD ) THEN
       BEGIN
       HISTORICO = HISTORICO||' AGP.DT.PRD .'||OLD.AGP_DT_PRD ||'->'||NEW.AGP_DT_PRD ;
       END

   IF (OLD.LOCALIZACAO_ID<> NEW.LOCALIZACAO_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||' LOC.'||OLD.LOCALIZACAO_ID||'->'||NEW.LOCALIZACAO_ID;
       END

   IF (OLD.EST_MIN <> NEW.EST_MIN) THEN
       BEGIN
       HISTORICO = HISTORICO||' EST.MIN.'||OLD.EST_MIN||'->'||NEW.EST_MIN;
       END

   IF (OLD.CONTROLE <> NEW.CONTROLE) THEN
       BEGIN
       HISTORICO = HISTORICO||' CONTROLE'||OLD.CONTROLE||'->'||NEW.CONTROLE;
       END

   IF (COALESCE(OLD.CLIENTE_ID_AMOSTRA,0) <> COALESCE(NEW.CLIENTE_ID_AMOSTRA,0)) THEN
       BEGIN
       HISTORICO = HISTORICO||' CLI.AMOSTRA:'||COALESCE(OLD.CLIENTE_ID_AMOSTRA,0)||'->'||COALESCE(NEW.CLIENTE_ID_AMOSTRA,0);
       END

   IF (COALESCE(OLD.STATUS_AMOSTRA,0) <> COALESCE(NEW.STATUS_AMOSTRA,0)) THEN
       BEGIN
       HISTORICO = HISTORICO||' STATUS AMOSTRA:'||COALESCE(OLD.STATUS_AMOSTRA,0)||'->'||COALESCE(NEW.STATUS_AMOSTRA,0);
       END


   IF (COALESCE(OLD.MOTIVO_STATUS_AMOSTRA,'') <> COALESCE(NEW.MOTIVO_STATUS_AMOSTRA,'')) THEN
       BEGIN
       HISTORICO = HISTORICO||' MOTIVO STATUS AMOSTRA:'||COALESCE(OLD.MOTIVO_STATUS_AMOSTRA,'')||'->'||COALESCE(NEW.MOTIVO_STATUS_AMOSTRA,'');
       END


   IF (HISTORICO <> '') THEN
       BEGIN
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBPEDIDO', OLD.PEDIDO,
      (SELECT FIRST 1 MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
      (SELECT FIRST 1 MON$REMOTE_ADDRESS FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
       'ITEM ALTERADO [SEQ.'||OLD.SEQUENCIA||'] '||:HISTORICO);
       END
END
^

SET TERM ; ^

