INSERT INTO TBMENU (DESCRICAO, CONTROLE, GRUPO, SUBGRUPO, TIPO, URL)
            VALUES ('CADASTRO DE TIPOS DE EMPRESAS', 12130, 'VEN', 'VEN', '1   ', '');

ALTER TABLE TBCLIENTE_TIPO
    ADD STATUS INTEGER;
	
update TBCLIENTE_TIPO set status = 1;
	
CREATE trigger tTBCLIENTE_TIPO_b01i for TBCLIENTE_TIPO
active before insert position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.codigo > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Registro Incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCLIENTE_TIPO',NEW.codigo, HISTORICO);
    END
end;

CREATE trigger tTBCLIENTE_TIPO_b01u for TBCLIENTE_TIPO
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCLIENTE_TIPO',NEW.codigo, HISTORICO);
    END
end;

CREATE OR ALTER trigger tTBCLIENTE_TIPO_b01d for TBCLIENTE_TIPO
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.codigo > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro Excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCLIENTE_TIPO',old.codigo, HISTORICO);
    END
end;

CREATE trigger ttbdre_gerencial_b02i for tbdre_gerencial
active before insert position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Registro Incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',NEW.id, HISTORICO);
    END

END;

CREATE trigger ttbdre_gerencial_b01d for tbdre_gerencial
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( old.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Registro Excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',old.id, HISTORICO);
    END

END;

CREATE OR ALTER trigger tbdre_gerencial_bu0 for tbdre_gerencial
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( old.descricao <> new.descricao) THEN
    BEGIN
        HISTORICO = HISTORICO||' Descrição: '|| old.descricao||' -> '||new.descricao;
    END

    IF ( old.status <> new.status) THEN
    BEGIN
        HISTORICO = HISTORICO||' Status: '|| old.status||' -> '||new.status;
    END

    IF ( old.estabelecimento <> new.estabelecimento) THEN
    BEGIN
        HISTORICO = HISTORICO||' Estabelecimento: '|| old.estabelecimento||' -> '||new.estabelecimento;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',new.id, HISTORICO);
    END

END;

CREATE OR ALTER trigger ttbdre_gerencial_grupos_b02i for tbdre_gerencial_grupos
active before insert position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Grupo '||new.descricao||' Incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',NEW.dre_id, HISTORICO);
    END
end;


CREATE OR ALTER trigger ttbdre_gerencial_grupos_b01u for tbdre_gerencial_grupos
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = 'Grupo ';

    IF ( old.descricao <> NEW.descricao) THEN
    BEGIN
        HISTORICO = HISTORICO||' Descrição: '||old.descricao||' -> '||new.descricao;
    END

    IF ( old.ordem <> NEW.ordem) THEN
    BEGIN
        HISTORICO = HISTORICO||' Ordem: '||old.ordem||' -> '||new.ordem;
    END

    IF ( old.status <> NEW.status) THEN
    BEGIN
        HISTORICO = HISTORICO||' Status: '||old.status||' -> '||new.status;
    END

    IF ( old.comercial <> NEW.comercial) THEN
    BEGIN
        HISTORICO = HISTORICO||' Comercial: '||old.comercial||' -> '||new.comercial;
    END

    IF ( old.servico <> NEW.servico) THEN
    BEGIN
        HISTORICO = HISTORICO||' Serviço: '||old.servico||' -> '||new.servico;
    END

    IF (HISTORICO <> 'Grupo ') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',NEW.dre_id, HISTORICO);
    END
end;

CREATE OR ALTER trigger ttbdre_gerencial_grupos_b02i for tbdre_gerencial_grupos
active before insert position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Grupo '||new.descricao||' Incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',NEW.dre_id, HISTORICO);
    END
end;

CREATE OR ALTER trigger tbdre_gerencial_grupos_bd0 for tbdre_gerencial_grupos
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( old.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Grupo '||old.descricao||' Excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',old.dre_id, HISTORICO);
    END
end;

CREATE OR ALTER trigger tTBDRE_GERENCIAL_SUBGRUPOS_b01u for TBDRE_GERENCIAL_SUBGRUPOS
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = 'Subgrupo ';

    IF ( old.descricao <> NEW.descricao) THEN
    BEGIN
        HISTORICO = HISTORICO||' Descrição: '||old.descricao||' -> '||new.descricao;
    END

    IF ( old.ordem <> NEW.ordem) THEN
    BEGIN
        HISTORICO = HISTORICO||' Ordem: '||old.ordem||' -> '||new.ordem;
    END

    IF ( old.status <> NEW.status) THEN
    BEGIN
        HISTORICO = HISTORICO||' Status: '||old.status||' -> '||new.status;
    END

    IF (HISTORICO <> 'Subgrupo ') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',coalesce((select g.dre_id from tbdre_gerencial_grupos g where g.id = new.DRE_GRUPO_ID),0), HISTORICO);
    END
end;

CREATE OR ALTER trigger tTBDRE_GERENCIAL_SUBGRUPOS_b02i for TBDRE_GERENCIAL_SUBGRUPOS
active before insert position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Subgrupo '||new.descricao||' Incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',coalesce((select g.dre_id from tbdre_gerencial_grupos g where g.id = new.DRE_GRUPO_ID),0), HISTORICO);
    END
end;

CREATE OR ALTER trigger TBDRE_GERENCIAL_SUBGRUPOS_bd0 for TBDRE_GERENCIAL_SUBGRUPOS
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( old.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Subgrupo '||old.descricao||' Excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',coalesce((select g.dre_id from tbdre_gerencial_grupos g where g.id = old.DRE_GRUPO_ID),0), HISTORICO);
    END
end;

CREATE OR ALTER trigger tTBDRE_GERENCIAL_CONTAS_b01u for TBDRE_GERENCIAL_CONTAS
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = 'Conta ';

    IF ( old.CONTA <> NEW.CONTA) THEN
    BEGIN
        HISTORICO = HISTORICO||' Conta: '||old.CONTA||' -> '||new.CONTA;
    END

    IF ( old.status <> NEW.status) THEN
    BEGIN
        HISTORICO = HISTORICO||' Status: '||old.status||' -> '||new.status;
    END

    IF (HISTORICO <> 'Conta ') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',coalesce((select g.dre_id from tbdre_gerencial_grupos g, tbdre_gerencial_subgrupos h where g.id = h.dre_grupo_id and h.id = new.DRE_SUBGRUPO_ID),0), HISTORICO);
    END
end;

CREATE OR ALTER trigger tTBDRE_GERENCIAL_CONTAS_b02i for TBDRE_GERENCIAL_CONTAS
active before insert position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Conta '||new.CONTA||' Incluida';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',coalesce((select g.dre_id from tbdre_gerencial_grupos g, tbdre_gerencial_subgrupos h where g.id = h.dre_grupo_id and h.id = new.DRE_SUBGRUPO_ID),0), HISTORICO);
    END
end;

CREATE OR ALTER trigger TBDRE_GERENCIAL_CONTAS_bd0 for TBDRE_GERENCIAL_CONTAS
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( old.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Conta '||old.CONTA||' Excluida';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_GERENCIAL',coalesce((select g.dre_id from tbdre_gerencial_grupos g, tbdre_gerencial_subgrupos h where g.id = h.dre_grupo_id and h.id = old.DRE_SUBGRUPO_ID),0), HISTORICO);
    END
end;

CREATE INDEX ITBDRE_GERENCIAL_CONTAS_01
ON TBDRE_GERENCIAL_CONTAS (DRE_SUBGRUPO_ID);

CREATE INDEX ITBDRE_GERENCIAL_GRUPOS_02
ON TBDRE_GERENCIAL_GRUPOS (DRE_ID);

CREATE INDEX ITBDRE_GERENCIAL_GRUPOS_01
ON TBDRE_GERENCIAL_GRUPOS (ID);

CREATE INDEX ITBDRE_GERENCIAL_SUBGRUPOS_02
ON TBDRE_GERENCIAL_SUBGRUPOS (STATUS);

CREATE INDEX ITBDRE_GERENCIAL_SUBGRUPOS_01
ON TBDRE_GERENCIAL_SUBGRUPOS (DRE_GRUPO_ID);

CREATE INDEX ITBDRE_GERENCIAL_GRUPOS_03
ON TBDRE_GERENCIAL_GRUPOS (STATUS);

CREATE INDEX ITBDRE_GERENCIAL_CONTAS_02
ON TBDRE_GERENCIAL_CONTAS (STATUS);

CREATE INDEX ITBPEDIDO_19
ON TBPEDIDO (MOEDA);





