ALTER TABLE TBCAIXABANCO_PREVISAO
    ADD ORIGEM CHAR(1) CHARACTER SET UTF8 DEFAULT '0' COLLATE UTF8,
    ADD FOLHA_PAGAMENTO_ID INTEGER DEFAULT 0,
    ADD COLABORADOR_ID INTEGER DEFAULT 0;

COMMENT ON COLUMN TBCAIXABANCO_PREVISAO.ORIGEM IS
'0 - Registro de Provisões de Pagamentos/Recebimentos;
1 - Folhas de Pagamento;';

COMMENT ON COLUMN TBCAIXABANCO_PREVISAO.FOLHA_PAGAMENTO_ID IS
'ID da Folha de Pagamento de acordo com a Tabela TBFOLHAPAGAMENTO';

COMMENT ON COLUMN TBCAIXABANCO_PREVISAO.COLABORADOR_ID IS
'Utilizado se ORIGEM = 1 e FOLHA_PAGAMENTO_ID > 0

Identifica o Colaborador que receberá esse valor';

/*******************************************************************/
/*******************************************************************/

UPDATE TBCAIXABANCO_PREVISAO
	SET ORIGEM = '0',
		FOLHA_PAGAMENTO_ID = 0,
		COLABORADOR_ID = 0;

/*******************************************************************/
/*******************************************************************/

CREATE INDEX ITBCAIXABANCO_PREVISAO_13
ON TBCAIXABANCO_PREVISAO (ORIGEM,FOLHA_PAGAMENTO_ID,COLABORADOR_ID);

CREATE INDEX ITBCAIXABANCO_PREVISAO_12
ON TBCAIXABANCO_PREVISAO (COLABORADOR_ID);

CREATE INDEX ITBCAIXABANCO_PREVISAO_11
ON TBCAIXABANCO_PREVISAO (FOLHA_PAGAMENTO_ID);

CREATE INDEX ITBCAIXABANCO_PREVISAO_10
ON TBCAIXABANCO_PREVISAO (ORIGEM);

/*******************************************************************/
/*******************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaixabanco_previsao_b01u for tbcaixabanco_previsao
active before update position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';
    IF(NEW.DATA_PREVISAO <> OLD.DATA_PREVISAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.PREV:'||OLD.DATA_PREVISAO||'->'||NEW.DATA_PREVISAO;
    END            
    
    IF(NEW.DATA_COMPETENCIA <> OLD.DATA_COMPETENCIA) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.COMP:'||OLD.DATA_COMPETENCIA||'->'||NEW.DATA_COMPETENCIA;
    END    

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

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

    IF(NEW.CAIXABANCO_CODIGO <> OLD.CAIXABANCO_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CAIXA/BANCO: '||OLD.CAIXABANCO_CODIGO||'->'||NEW.CAIXABANCO_CODIGO;
    END

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

    IF(NEW.VALOR_TOTAL <> OLD.VALOR_TOTAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' VALOR TOT:'||'R$'||cast(OLD.VALOR_TOTAL as numeric(15,2))||'->'||'R$'||cast(NEW.VALOR_TOTAL as numeric(15,2));
    END  

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

    IF(NEW.PENDENTE <> OLD.PENDENTE) THEN
    BEGIN
        HISTORICO = HISTORICO||' PENDENTE:'||IIF(OLD.PENDENTE = '1', 'SIM', 'NAO')||'->'||IIF(NEW.PENDENTE = '1', 'SIM', 'NAO');
    END

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

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


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

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

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

    IF(HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' REGISTRO ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_PREVISAO',NEW.CONTROLE,FN_ELIPSES(HISTORICO,500));
    END
END
^

SET TERM ; ^

/*******************************************************************/
/*******************************************************************/

ALTER TABLE TBCAIXABANCO_LANCAMENTO_CLASS
    ALTER COLUMN HISTORICO_CONTABIL TYPE VARCHAR(500);
	
/*******************************************************************/
/*******************************************************************/

ALTER TABLE TBCATALOGO_PRODUTO
    ADD PERFIL_PEDIDO VARCHAR(10) CHARACTER SET UTF8 COLLATE UTF8,
    ADD TIPO_CLIENTE INTEGER,
    ADD TIPO_PEDIDO INTEGER;

SET TERM ^ ;

CREATE OR ALTER trigger ttbcatalogo_produto_b01u for tbcatalogo_produto
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);

DECLARE VARIABLE OLD_ESTABELECIMENTO VARCHAR(500);
DECLARE VARIABLE NEW_ESTABELECIMENTO VARCHAR(500);
DECLARE VARIABLE OLD_TABELA_PRECO VARCHAR(500);
DECLARE VARIABLE NEW_TABELA_PRECO VARCHAR(500);
DECLARE VARIABLE OLD_LOCALIZACAO VARCHAR(500);
DECLARE VARIABLE NEW_LOCALIZACAO VARCHAR(500);
DECLARE VARIABLE OLD_CANAL_VENDAS VARCHAR(500);
DECLARE VARIABLE NEW_CANAL_VENDAS VARCHAR(500);
DECLARE VARIABLE OLD_TABELA_PRECO_ESP VARCHAR(500);
DECLARE VARIABLE NEW_TABELA_PRECO_ESP VARCHAR(500);
BEGIN

    HISTORICO = '';

    OLD_ESTABELECIMENTO     = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.RAZAOSOCIAL  FROM TBESTABELECIMENTO A    WHERE A.CODIGO = OLD.ESTABELECIMENTO_ID), '');
    NEW_ESTABELECIMENTO     = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.RAZAOSOCIAL  FROM TBESTABELECIMENTO A    WHERE A.CODIGO = NEW.ESTABELECIMENTO_ID), '');
    OLD_TABELA_PRECO        = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO        FROM TBTABELA_PRECO B       WHERE B.ID = OLD.TABELA_PRECO_ID), '');
    NEW_TABELA_PRECO        = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO        FROM TBTABELA_PRECO B       WHERE B.ID = NEW.TABELA_PRECO_ID), '');
    OLD_LOCALIZACAO         = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO    FROM TBLOCALIZACAO C        WHERE C.CODIGO = OLD.LOCALIZACAO_ID), '');
    NEW_LOCALIZACAO         = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO    FROM TBLOCALIZACAO C        WHERE C.CODIGO = NEW.LOCALIZACAO_ID), '');
    OLD_CANAL_VENDAS        = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO        FROM TBCANAL_VENDAS D       WHERE D.ID = OLD.CANAL_VENDAS_ID), '');
    NEW_CANAL_VENDAS        = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO        FROM TBCANAL_VENDAS D       WHERE D.ID = NEW.CANAL_VENDAS_ID), '');
    OLD_TABELA_PRECO_ESP    = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO        FROM TBTABELA_PRECO E       WHERE E.ID = OLD.TABELA_PRECO_ESP_ID), '');
    NEW_TABELA_PRECO_ESP    = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO        FROM TBTABELA_PRECO E       WHERE E.ID = NEW.TABELA_PRECO_ESP_ID), '');

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

    IF (OLD.DATA_INICIAL <> NEW.DATA_INICIAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.INICIAL:'||FORMATDATE(OLD.DATA_INICIAL)||'->'||FORMATDATE(NEW.DATA_INICIAL);
    END

    IF (OLD.DATA_FIM <> NEW.DATA_FIM) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.FINAL:'||FORMATDATE(OLD.DATA_FIM)||'->'||FORMATDATE(NEW.DATA_FIM);
    END

    IF (OLD.UTILIZADO <> NEW.UTILIZADO) THEN
    BEGIN
        HISTORICO = HISTORICO||' STATUS/UTIL:'||OLD.UTILIZADO||'->'||NEW.UTILIZADO;
    END

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

    IF (OLD.LOCALIZACAO_ID <> NEW.LOCALIZACAO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' LOCALIZACAO:'||OLD_LOCALIZACAO||'->'||NEW_LOCALIZACAO;
    END

    IF (OLD.TABELA_PRECO_ID <> NEW.TABELA_PRECO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAB.PRECO:'||OLD_TABELA_PRECO||'->'||NEW_TABELA_PRECO;
    END

    IF (OLD.TABELA_PRECO_ESP_ID <> NEW.TABELA_PRECO_ESP_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAB.PRECO ESP:'||OLD_TABELA_PRECO_ESP||'->'||NEW_TABELA_PRECO_ESP;
    END

    IF (OLD.CANAL_VENDAS_ID <> NEW.CANAL_VENDAS_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' CANAL VENDAS:'||OLD_CANAL_VENDAS||'->'||NEW_CANAL_VENDAS;
    END

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

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

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

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

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

    IF (OLD.CONTATO_VENDEDOR <> NEW.CONTATO_VENDEDOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' CONTATO:'||FN_MASK_V2(OLD.CONTATO_VENDEDOR, 'FONE')||'->'||FN_MASK_V2(NEW.CONTATO_VENDEDOR, 'FONE');
    END

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

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

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

    IF (OLD.LINK <> NEW.LINK) THEN
    BEGIN
        HISTORICO = HISTORICO||' CAMPO LINK ALTERADO!';
    END

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

SET TERM ; ^

