SET TERM ^ ;

CREATE GENERATOR GTBFERRAMENTARIA_STATUS
^

CREATE TABLE TBFERRAMENTARIA_STATUS (
    ID             INTEGER NOT NULL,
    FERRAMENTA_ID  INTEGER,
    DATAHORA_INATIVACAO TIMESTAMP, 
    DATAHORA_ATIVACAO   TIMESTAMP,
    USUARIO_INATIVACAO VARCHAR(100),
    USUARIO_ATIVACAO   VARCHAR(100)
)
^

ALTER TABLE TBFERRAMENTARIA_STATUS ADD CONSTRAINT PK_TBFERRAMENTARIA_STATUS PRIMARY KEY (ID)
^

CREATE OR ALTER TRIGGER TBFERRAMENTARIA_STATUS_BI FOR TBFERRAMENTARIA_STATUS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBFERRAMENTARIA_STATUS,1);
END
^

/* Privileges of roles */
GRANT ALL ON TBFERRAMENTARIA_STATUS TO RDB$ADMIN
^

CREATE OR ALTER trigger ttbferramentaria_b9u for tbferramentaria
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
declare variable USUARIO VARCHAR(100);
BEGIN
                                                                             
   HISTORICO = '';
   USUARIO = (SELECT FIRST 1 MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION);

   IF (OLD.GRUPO_ID <> NEW.GRUPO_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||' GRUPO '||OLD.GRUPO_ID||'->'||NEW.GRUPO_ID;
       END
   IF (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' DESC '||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
       END
   IF (OLD.MATRIZ_ID <> NEW.MATRIZ_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||' MATRIZ '||OLD.MATRIZ_ID||'->'||NEW.MATRIZ_ID;
       END
   IF (OLD.SERIE <> NEW.SERIE) THEN
       BEGIN
       HISTORICO = HISTORICO||' SERIE '||OLD.SERIE||'->'||NEW.SERIE;
       END
   IF (OLD.CODBARRAS <> NEW.CODBARRAS) THEN
       BEGIN
       HISTORICO = HISTORICO||' COD.BAR '||OLD.CODBARRAS||'->'||NEW.CODBARRAS;
       END
   IF (OLD.DATA <> NEW.DATA) THEN
       BEGIN
       HISTORICO = HISTORICO||' DATA '||OLD.DATA||'->'||NEW.DATA;
       END
   IF (OLD.LARG <> NEW.LARG OR OLD.COMP <> NEW.COMP OR OLD.ALT <> NEW.ALT) THEN
       BEGIN
       HISTORICO = HISTORICO||' DIMENSOES '||OLD.LARG||' X '||OLD.COMP||' X '||OLD.ALT||' -> '||NEW.LARG||' X '||NEW.COMP||' X '||NEW.ALT;
       END
   IF (OLD.INDISP_INICIO <> NEW.INDISP_INICIO OR OLD.INDISP_FIM <> NEW.INDISP_FIM) THEN
       BEGIN
       HISTORICO = HISTORICO||' INDISP '||OLD.INDISP_INICIO||' A '||OLD.INDISP_FIM||' -> '||NEW.INDISP_INICIO||' A '||NEW.INDISP_FIM;
       END
   IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' OBS '||OLD.OBSERVACAO||'->'||NEW.OBSERVACAO;
       END
   IF (OLD.ENDERECAMENTO <> NEW.ENDERECAMENTO) THEN
       BEGIN
       HISTORICO = HISTORICO||' END '||OLD.ENDERECAMENTO||'->'||NEW.ENDERECAMENTO;
       END
   IF (OLD.TEMPO_SETUP <> NEW.TEMPO_SETUP) THEN
       BEGIN
       HISTORICO = HISTORICO||' TMP.SET '||OLD.TEMPO_SETUP||'->'||NEW.TEMPO_SETUP;
       END
   IF (OLD.TEMPO_SETUP_AQUECIMENTO <> NEW.TEMPO_SETUP_AQUECIMENTO) THEN
       BEGIN
       HISTORICO = HISTORICO||' TMP.AQUEC '||OLD.TEMPO_SETUP_AQUECIMENTO||'->'||NEW.TEMPO_SETUP_AQUECIMENTO;
       END
   IF (COALESCE(OLD.PERFIL,'') <> COALESCE(NEW.PERFIL,'')) THEN
       BEGIN
       HISTORICO = HISTORICO||' PERFIL '||OLD.PERFIL||'->'||NEW.PERFIL;
       END

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

    IF (COALESCE(OLD.STATUS,'1') <> COALESCE(NEW.STATUS,'1')) THEN
       BEGIN
         HISTORICO = HISTORICO||' STATUS '||OLD.STATUS||'->'||NEW.STATUS;

         IF (COALESCE(NEW.STATUS,'1') = '0' ) THEN
             BEGIN
             INSERT INTO TBFERRAMENTARIA_STATUS (FERRAMENTA_ID, DATAHORA_INATIVACAO, USUARIO_INATIVACAO) VALUES ( NEW.ID, CURRENT_TIMESTAMP, :USUARIO );
             END ELSE
         IF (COALESCE(NEW.STATUS,'1') = '1' ) THEN
             BEGIN
             UPDATE TBFERRAMENTARIA_STATUS SET
             DATAHORA_ATIVACAO = CURRENT_TIMESTAMP,
             USUARIO_ATIVACAO  = :USUARIO
             WHERE FERRAMENTA_ID = NEW.ID
               AND DATAHORA_INATIVACAO <= CURRENT_TIMESTAMP
               AND DATAHORA_ATIVACAO IS NULL;
             END

       END

   IF (HISTORICO <> '') THEN
       BEGIN
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBFERRAMENTARIA', OLD.ID,
       :USUARIO,
      (SELECT FIRST 1 MON$REMOTE_ADDRESS FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
       :HISTORICO);
       END
END
^


ALTER TABLE TBPRODUTO_CONTABIL ALTER COLUMN IMPOSTO_CUSTO SET DEFAULT 0
^
ALTER TABLE TBPRODUTO_CONTABIL ALTER COLUMN ICMS SET DEFAULT 0
^
ALTER TABLE TBPRODUTO_CONTABIL ALTER COLUMN IPI SET DEFAULT 0
^
ALTER TABLE TBPRODUTO_CONTABIL ALTER COLUMN FRETE SET DEFAULT 0
^
ALTER TABLE TBPRODUTO_CONTABIL ALTER COLUMN FINANCEIRO SET DEFAULT 0
^

UPDATE TBPRODUTO_CONTABIL SET T01 = 0 where T01 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T02 = 0 where T02 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T03 = 0 where T03 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T04 = 0 where T04 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T05 = 0 where T05 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T06 = 0 where T06 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T07 = 0 where T07 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T08 = 0 where T08 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T09 = 0 where T09 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T10 = 0 where T10 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T11 = 0 where T11 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T12 = 0 where T12 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T13 = 0 where T13 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T14 = 0 where T14 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T15 = 0 where T15 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T16 = 0 where T16 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T17 = 0 where T17 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T18 = 0 where T18 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T19 = 0 where T19 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET T20 = 0 where T20 = NULL
^
UPDATE TBPRODUTO_CONTABIL SET IMPOSTO_CUSTO = 0 where IMPOSTO_CUSTO = NULL
^
UPDATE TBPRODUTO_CONTABIL SET ICMS = 0 where ICMS = NULL
^
UPDATE TBPRODUTO_CONTABIL SET IPI = 0 where IPI = NULL
^
UPDATE TBPRODUTO_CONTABIL SET FRETE = 0 where FRETE = NULL
^
UPDATE TBPRODUTO_CONTABIL SET FINANCEIRO = 0 where FINANCEIRO = NULL
^
SET TERM ; ^