ALTER TABLE TBMODELO_LINHA
    ADD COMISSAO NUMERIC(15,2) DEFAULT 0 NOT NULL;

SET TERM ^ ;

CREATE OR ALTER trigger ttbmodelo_linha_b9u for tbmodelo_linha
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);

DECLARE VARIABLE DESCRICAO_REFERENCIA_ANTIGA VARCHAR(500);
DECLARE VARIABLE DESCRICAO_REFERENCIA_NOVA VARCHAR(500);
BEGIN

   HISTORICO = '';

   IF (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' DESC. '||OLD.DESCRICAO||' -> '||NEW.DESCRICAO;
       END
   IF (OLD.MAGENTO_ID <> NEW.MAGENTO_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||' ID E-COMERCE '||OLD.MAGENTO_ID||' -> '||NEW.MAGENTO_ID;
       END

   IF (OLD.FAMILIA_ALTERNATIVA IS DISTINCT FROM NEW.FAMILIA_ALTERNATIVA) THEN
       BEGIN
       HISTORICO = HISTORICO||' FAM.COM: '||COALESCE(OLD.FAMILIA_ALTERNATIVA, 0)||' -> '||COALESCE(NEW.FAMILIA_ALTERNATIVA, 0);
       END

   IF (OLD.FAMILIA_CODIGO <> NEW.FAMILIA_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' FAM.PROD: '||OLD.FAMILIA_CODIGO||' -> '||NEW.FAMILIA_CODIGO;
       END
--   IF (OLD.TIPOPRODUTO_CODIGO <> NEW.TIPOPRODUTO_CODIGO) THEN
--       BEGIN
--       HISTORICO = HISTORICO||' TIP. '||OLD.TIPOPRODUTO_CODIGO||'->'||NEW.TIPOPRODUTO_CODIGO;
--       END
   IF (OLD.GRADE_CODIGO <> NEW.GRADE_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' GRD. '||OLD.GRADE_CODIGO||' -> '||NEW.GRADE_CODIGO;
       END
   IF (OLD.PRAZO_PRODUCAO <> NEW.PRAZO_PRODUCAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' PZO. '||OLD.PRAZO_PRODUCAO||' -> '||NEW.PRAZO_PRODUCAO;
       END
   IF (OLD.PECAS_CONJUNTO <> NEW.PECAS_CONJUNTO) THEN
       BEGIN
       HISTORICO = HISTORICO||' PE??AS CONJ. '||OLD.PECAS_CONJUNTO||' -> '||NEW.PECAS_CONJUNTO;
       END
   IF (OLD.REFERENCIA_ID <> NEW.REFERENCIA_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||' REF. '||OLD.REFERENCIA_ID||' -> '||NEW.REFERENCIA_ID;
       END
   IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' OBS. '||OLD.OBSERVACAO||' -> '||NEW.OBSERVACAO;
       END

   IF(OLD.MD_DATA IS NULL AND NEW.MD_DATA IS NOT NULL) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA LANC. '||''||' -> '||FN_DATE(NEW.MD_DATA, 'DD/MM/YYYY');
    END

   IF(NEW.MD_DATA IS NULL AND OLD.MD_DATA IS NOT NULL) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA LANC. '||FN_DATE(OLD.MD_DATA, 'DD/MM/YYYY')||' -> '||'';
    END

   IF(NEW.MD_DATA IS NOT NULL AND OLD.MD_DATA IS NOT NULL AND NEW.MD_DATA <> OLD.MD_DATA) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA LANC. '||FN_DATE(OLD.MD_DATA, 'DD/MM/YYYY')||' -> '||FN_DATE(NEW.MD_DATA, 'DD/MM/YYYY');
    END
   IF (OLD.MD <> NEW.MD) THEN
       BEGIN
       HISTORICO = HISTORICO||' MD. '||OLD.MD||' -> '||NEW.MD;
       END
   
   IF (OLD.VALOR_SERVICO <> NEW.VALOR_SERVICO) THEN
       BEGIN
       HISTORICO = HISTORICO||' VL.SER: '||OLD.VALOR_SERVICO||' -> '||NEW.VALOR_SERVICO;
       END

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

   IF (OLD.STATUS <> NEW.STATUS) THEN
       BEGIN
       IF (NEW.STATUS = '0') THEN
           BEGIN
           HISTORICO = HISTORICO||' STATUS INATIVADO';
           NEW.DATA_INATIVACAO = CURRENT_DATE;
           END
       IF (NEW.STATUS = '1') THEN
           BEGIN
           HISTORICO = HISTORICO||' STATUS ATIVADO';
           NEW.DATA_ATIVACAO = CURRENT_DATE;
           END
       END

   IF (OLD.CENTRO_NEGOCIO_ID IS DISTINCT FROM NEW.CENTRO_NEGOCIO_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||', C.NEGOCIO: '||OLD.CENTRO_NEGOCIO_ID||' -> '||NEW.CENTRO_NEGOCIO_ID;
       END


   IF (HISTORICO <> '') THEN
       BEGIN
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBLINHA', OLD.CODIGO,
      (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),
       :HISTORICO);
       EXECUTE PROCEDURE SPI_HISTORICO('TBMODELO_LINHA', NEW.CODIGO, HISTORICO);
       END
END
^

SET TERM ; ^

INSERT INTO TBPARAMETRO (TABELA, CODIGO, DESCRICAO, VALOR, OBSERVACAO, GRUPO)
VALUES ('SISTEMA', 'CAMPOS_VISIVEIS_LINHAS', 'INDICA QUAIS CAMPOS DEVEM SER VISÍVEIS NO CADASTRO DE LINHAS DE PRODUÇÃO', '', 'CAMPOS VISÍVEIS:
    GRADE
    CENTRO_NEGOCIO
    MD
    DATA_LANCAMENTO
    VALOR_SERVICO
    COMISSAO', 'WEB22350');