SET TERM ^ ;

ALTER TABLE TBDEFEITO_TRANSACAO_ITEM
    ADD STATUS INTEGER DEFAULT 0^

COMMENT ON COLUMN TBDEFEITO_TRANSACAO_ITEM.STATUS IS
'0 - Incluido;
1 - Retrabalho;
2 - Descartado;
3 - Recuperado;'^

CREATE OR ALTER trigger ttbdefeito_transacao_item_b9u for tbdefeito_transacao_item
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE HISTORICO2 VARCHAR(5000);
BEGIN

   HISTORICO = '';
   HISTORICO2 = '';

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

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

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

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

   IF (OLD.ESTABELECIMENTO_ID <> NEW.ESTABELECIMENTO_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||' ESTAB:'||OLD.ESTABELECIMENTO_ID||'->'||NEW.ESTABELECIMENTO_ID;
       END
   IF (OLD.REMESSA <> NEW.REMESSA) THEN
       BEGIN
       HISTORICO = HISTORICO||' REM:'||OLD.REMESSA||'->'||NEW.REMESSA;
       END

   IF (OLD.REMESSA_CONTROLE<> NEW.REMESSA_CONTROLE) THEN
       BEGIN
       HISTORICO = HISTORICO||' TAL??O:'||OLD.REMESSA_CONTROLE||'->'||NEW.REMESSA_CONTROLE;
       END

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

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

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

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

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

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

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

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


    IF (COALESCE(OLD.STATUS, 0) <> COALESCE(NEW.STATUS, 0)) THEN
    BEGIN

        HISTORICO2 = HISTORICO2||iif(COALESCE(OLD.STATUS, 0) = 0, 'INCLUIDO',iif(OLD.STATUS = 1, 'RETRABALHO',iif(OLD.STATUS = 2, 'DESCARTADO', 'RECUPERADO')))||
                     '->'||iif(COALESCE(NEW.STATUS, 0) = 0, 'INCLUIDO',iif(NEW.STATUS = 1, 'RETRABALHO',iif(NEW.STATUS = 2, 'DESCARTADO', 'RECUPERADO')));
    END

   IF (HISTORICO <> '') THEN
       BEGIN
       HISTORICO = ' REGISTRO ALTERADO: '||HISTORICO;
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBDEFEITO_TRANSACAO_ITEM', OLD.ID,
      (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),
       FN_ELIPSE(:HISTORICO, 500));
       END

    IF (HISTORICO2 <> '') THEN
    BEGIN
        HISTORICO2 = 'STATUS ALTERADO:'||HISTORICO2;
        EXECUTE PROCEDURE SPI_HISTORICO('TBDEFEITO_TRANSACAO_ITEM', OLD.ID, FN_ELIPSE(HISTORICO2, 500));
    END
END^

^ SET TERM ; ^