create or alter function fn_dre_valor (
    ano integer,
    mes integer,
    dre_subgrupo_id integer = 0,
    dre_grupo_id integer = 0,
    dre_id integer = 0,
    tipo integer = 1)
returns integer
as
declare variable ret numeric(15,4);
begin

 RET = coalesce((select
                SUM(VALOR)
            FROM(
                SELECT
                    FN_DRE_LANCAMENTOS(A.conta,:ANO, :MES, :TIPO, A.NATUREZA_SERVICO, A.USARREGRA_COMERCIAL, A.USARREGRA_SERVICOS, A.SQL) AS VALOR
                from
                    TBDRE_GERENCIAL_CONTAS a,
                    tbdre_gerencial_subgrupos b,
                    tbdre_gerencial_grupos c,
                    tbdre_gerencial d
                
                where d.id = c.dre_id
                and c.id = b.dre_grupo_id
                and b.id = a.dre_subgrupo_id
                and (cast(:dre_id           as integer) = 0 or d.id = :dre_id)
                and (cast(:dre_grupo_id     as integer) = 0 or c.id = :dre_grupo_id)
                and (cast(:dre_subgrupo_id  as integer) = 0 or b.id = :dre_subgrupo_id)
            )),0);
  return RET;
end;

CREATE TABLE TBDRE_GERENCIAL_HISTORICO (
    ID INTEGER NOT NULL,
    ANO INTEGER,
    DATAHORA_UPDATE TIMESTAMP,
    DADOS BLOB SUB_TYPE 1 SEGMENT SIZE 80);

ALTER TABLE TBDRE_GERENCIAL_HISTORICO
ADD CONSTRAINT PK_TBDRE_GERENCIAL_HISTORICO
PRIMARY KEY (ID);

COMMENT ON TABLE TBDRE_GERENCIAL_HISTORICO IS 'historico data dre';

CREATE SEQUENCE GTBDRE_GERENCIAL_HISTORICO;

create trigger ttbdre_gerencial_h_b01i for tbdre_gerencial_historico
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbdre_gerencial_historico,1);
end;

ALTER TABLE TBDRE_GERENCIAL_HISTORICO
    ADD DRE_ID INTEGER;

ALTER TABLE TBDRE_GERENCIAL_CONTAS
    ADD DESCRICAO VARCHAR(200);

ALTER TABLE TBDRE_GERENCIAL_CONTAS
    ADD VER_COMERCIAL INTEGER,
    ADD VER_SERVICOS INTEGER;

ALTER TABLE TBDRE_GERENCIAL_AJUSTE
    ADD COMERCIAL INTEGER,
    ADD FINANCEIRO INTEGER;

ALTER TABLE TBDRE_GERENCIAL_AJUSTE DROP FINANCEIRO;

ALTER TABLE TBDRE_GERENCIAL_AJUSTE
    ADD SERVICOS INTEGER;




