1569 - Categoria

1568 - Funcionários
1572 - Sub-categoria
1574 - Fornecedores
1573 - Tela de créditos
1567 - Tela lançamento de débitos
1571 - Sócios
1570 - Forma pagamento
1565 - Veículos
1566 - Operação
This commit is contained in:
2018-08-07 08:33:42 -03:00
commit 518076f90f
43 changed files with 6829 additions and 0 deletions
@@ -0,0 +1,6 @@
CREATE TABLE public.categoria (
codigo NUMERIC(15,0) NOT NULL,
descricao VARCHAR(50),
CONSTRAINT categoria_pkey PRIMARY KEY(codigo)
)
WITH (oids = false);
@@ -0,0 +1,12 @@
CREATE TABLE public.combustivel (
codigo INTEGER NOT NULL,
descricao VARCHAR(100) NOT NULL,
CONSTRAINT combustivel_pkey PRIMARY KEY(codigo)
)
WITH (oids = false);
COMMENT ON COLUMN public.combustivel.codigo
IS 'Código da tabela';
COMMENT ON COLUMN public.combustivel.descricao
IS 'Descrição do Combustível';
@@ -0,0 +1,58 @@
CREATE TABLE public.controle_despesas_combustiveis (
chave_despesa_combustivel INTEGER NOT NULL,
data DATE NOT NULL,
chave_veiculo INTEGER,
chave_operacao INTEGER,
observacoes VARCHAR(4000),
chave_combustivel INTEGER,
litros NUMERIC(15,3),
valor_litro NUMERIC(15,3),
km_inicial NUMERIC(20,3),
km_final NUMERIC(20,3),
total_combustivel NUMERIC(15,2),
km_rodado NUMERIC(20,3),
CONSTRAINT controle_despesas_combustiveis_pkey PRIMARY KEY(chave_despesa_combustivel)
)
WITH (oids = false);
COMMENT ON COLUMN public.controle_despesas_combustiveis.chave_despesa_combustivel
IS 'Código da tabela';
COMMENT ON COLUMN public.controle_despesas_combustiveis.data
IS 'Data do lançamento';
COMMENT ON COLUMN public.controle_despesas_combustiveis.chave_veiculo
IS 'Código do veículo';
COMMENT ON COLUMN public.controle_despesas_combustiveis.chave_operacao
IS 'Código da operação';
COMMENT ON COLUMN public.controle_despesas_combustiveis.observacoes
IS 'Observação do lançamento';
COMMENT ON COLUMN public.controle_despesas_combustiveis.chave_combustivel
IS 'Código do combustível';
COMMENT ON COLUMN public.controle_despesas_combustiveis.litros
IS 'Quantidade de litros lançados.';
COMMENT ON COLUMN public.controle_despesas_combustiveis.valor_litro
IS 'Valor do litro de combustível';
COMMENT ON COLUMN public.controle_despesas_combustiveis.km_inicial
IS 'Km inicial do veículo';
COMMENT ON COLUMN public.controle_despesas_combustiveis.km_final
IS 'Km na chegada do veículo';
COMMENT ON COLUMN public.controle_despesas_combustiveis.total_combustivel
IS 'Valor total do Combustível';
COMMENT ON COLUMN public.controle_despesas_combustiveis.km_rodado
IS 'Total de km rodada';
CREATE INDEX controle_despesas_combustiveis_idx1 ON public.controle_despesas_combustiveis
USING btree (data);
CREATE INDEX controle_despesas_combustiveis_idx2 ON public.controle_despesas_combustiveis
USING btree (chave_veiculo, data);
@@ -0,0 +1,61 @@
CREATE TABLE public.controle_despesas_operacionais (
chave_despesa_operacional INTEGER NOT NULL,
data DATE NOT NULL,
chave_operacao INTEGER,
chave_categoria INTEGER,
chave_subcategoria INTEGER,
numero_documento INTEGER,
chave_forma_pagamento INTEGER,
chave_veiculo INTEGER,
chave_funcionario INTEGER,
chave_fornecedor INTEGER,
observacoes VARCHAR(4000),
valor NUMERIC(15,2),
CONSTRAINT controle_despesas_operacionais_pkey PRIMARY KEY(chave_despesa_operacional)
)
WITH (oids = false);
ALTER TABLE public.controle_despesas_operacionais
ALTER COLUMN chave_categoria SET STATISTICS 0;
COMMENT ON COLUMN public.controle_despesas_operacionais.chave_despesa_operacional
IS 'Chave da tabela';
COMMENT ON COLUMN public.controle_despesas_operacionais.data
IS 'Data do lançamento';
COMMENT ON COLUMN public.controle_despesas_operacionais.chave_operacao
IS 'Código da operação';
COMMENT ON COLUMN public.controle_despesas_operacionais.chave_categoria
IS 'Código da categoria';
COMMENT ON COLUMN public.controle_despesas_operacionais.chave_subcategoria
IS 'Código da subcategoria';
COMMENT ON COLUMN public.controle_despesas_operacionais.numero_documento
IS 'Número do documento de identificação';
COMMENT ON COLUMN public.controle_despesas_operacionais.chave_forma_pagamento
IS 'Código da forma de pagamento';
COMMENT ON COLUMN public.controle_despesas_operacionais.chave_veiculo
IS 'Código do veículo';
COMMENT ON COLUMN public.controle_despesas_operacionais.chave_funcionario
IS 'Código do funcionário';
COMMENT ON COLUMN public.controle_despesas_operacionais.chave_fornecedor
IS 'Código do fornecedor';
COMMENT ON COLUMN public.controle_despesas_operacionais.observacoes
IS 'Observações sobre o lançamento';
COMMENT ON COLUMN public.controle_despesas_operacionais.valor
IS 'Valor total do lançamento';
CREATE INDEX controle_despesas_operacionais_idx_1 ON public.controle_despesas_operacionais
USING btree (data);
CREATE INDEX controle_despesas_operacionais_idx_2 ON public.controle_despesas_operacionais
USING btree (chave_veiculo, data);
@@ -0,0 +1,34 @@
CREATE TABLE public.controle_despesas_pessoais (
chave_pessoal INTEGER NOT NULL,
data DATE NOT NULL,
chave_categoria INTEGER,
chave_responsavel INTEGER,
valor NUMERIC(15,2),
observacoes VARCHAR(4000),
CONSTRAINT controle_despesas_pessoais_pkey PRIMARY KEY(chave_pessoal)
)
WITH (oids = false);
COMMENT ON COLUMN public.controle_despesas_pessoais.chave_pessoal
IS 'Chave da tabela';
COMMENT ON COLUMN public.controle_despesas_pessoais.data
IS 'Data do lançamento da despesa';
COMMENT ON COLUMN public.controle_despesas_pessoais.chave_categoria
IS 'Código da categoria';
COMMENT ON COLUMN public.controle_despesas_pessoais.chave_responsavel
IS 'Código do responsável';
COMMENT ON COLUMN public.controle_despesas_pessoais.valor
IS 'Valor da despesa';
COMMENT ON COLUMN public.controle_despesas_pessoais.observacoes
IS 'Observações do lançamento';
CREATE INDEX controle_despesas_pessoais_idx1 ON public.controle_despesas_pessoais
USING btree (data);
CREATE INDEX controle_despesas_pessoais_idx2 ON public.controle_despesas_pessoais
USING btree (chave_categoria, data);
@@ -0,0 +1,66 @@
CREATE TABLE public.controle_receitas_fretes (
chave_receita_frete INTEGER NOT NULL,
data DATE NOT NULL,
chave_operacao INTEGER NOT NULL,
chave_veiculo INTEGER NOT NULL,
chave_funcionario INTEGER,
valor_frete NUMERIC(15,2),
valor_imposto NUMERIC(15,2),
valor_liquido NUMERIC(15,2),
CONSTRAINT controle_receitas_fretes_pkey PRIMARY KEY(chave_receita_frete)
)
WITH (oids = false);
ALTER TABLE public.controle_receitas_fretes
ALTER COLUMN chave_receita_frete SET STATISTICS 0;
ALTER TABLE public.controle_receitas_fretes
ALTER COLUMN data SET STATISTICS 0;
ALTER TABLE public.controle_receitas_fretes
ALTER COLUMN chave_operacao SET STATISTICS 0;
ALTER TABLE public.controle_receitas_fretes
ALTER COLUMN chave_veiculo SET STATISTICS 0;
ALTER TABLE public.controle_receitas_fretes
ALTER COLUMN chave_funcionario SET STATISTICS 0;
ALTER TABLE public.controle_receitas_fretes
ALTER COLUMN valor_frete SET STATISTICS 0;
ALTER TABLE public.controle_receitas_fretes
ALTER COLUMN valor_imposto SET STATISTICS 0;
ALTER TABLE public.controle_receitas_fretes
ALTER COLUMN valor_liquido SET STATISTICS 0;
COMMENT ON COLUMN public.controle_receitas_fretes.chave_receita_frete
IS 'Código da receita';
COMMENT ON COLUMN public.controle_receitas_fretes.data
IS 'Data do lançamento';
COMMENT ON COLUMN public.controle_receitas_fretes.chave_operacao
IS 'Código da operação';
COMMENT ON COLUMN public.controle_receitas_fretes.chave_veiculo
IS 'Código do veículo';
COMMENT ON COLUMN public.controle_receitas_fretes.chave_funcionario
IS 'Código do funcionário';
COMMENT ON COLUMN public.controle_receitas_fretes.valor_frete
IS 'Valor total do frete';
COMMENT ON COLUMN public.controle_receitas_fretes.valor_imposto
IS 'Valor do imposto (padrão 7,5%)';
COMMENT ON COLUMN public.controle_receitas_fretes.valor_liquido
IS 'Valor líquido (frete - imposto)';
CREATE INDEX controle_receitas_fretes_idx1 ON public.controle_receitas_fretes
USING btree (data);
CREATE INDEX controle_receitas_fretes_idx2 ON public.controle_receitas_fretes
USING btree (chave_veiculo, chave_operacao, data);
@@ -0,0 +1,6 @@
CREATE TABLE public.forma_pagamento (
codigo NUMERIC(15,0) NOT NULL,
nome VARCHAR(50),
CONSTRAINT forma_pagamento_pkey PRIMARY KEY(codigo)
)
WITH (oids = false);
@@ -0,0 +1,28 @@
CREATE TABLE public.fornecedor (
codigo NUMERIC(15,0) NOT NULL,
nome VARCHAR(50),
razao_social VARCHAR(50) NOT NULL,
cnpj VARCHAR(20),
endereco VARCHAR(70),
cep VARCHAR(10),
CONSTRAINT fornecedor_pkey PRIMARY KEY(codigo)
)
WITH (oids = false);
COMMENT ON COLUMN public.fornecedor.codigo
IS 'Chave da tabela';
COMMENT ON COLUMN public.fornecedor.nome
IS 'Nome fantasia do fornecedor';
COMMENT ON COLUMN public.fornecedor.razao_social
IS 'Razão social do fornecedor';
COMMENT ON COLUMN public.fornecedor.cnpj
IS 'Cadastro Nacional de Pessoal Jurídica';
COMMENT ON COLUMN public.fornecedor.endereco
IS 'Endereço do fornecedor';
COMMENT ON COLUMN public.fornecedor.cep
IS 'CEP do Fornecedor';
@@ -0,0 +1,9 @@
CREATE TABLE public.funcionario (
codigo NUMERIC(15,0) NOT NULL,
nome VARCHAR(50),
cnh NUMERIC(15,0),
vencimento_cnh DATE,
admissao DATE,
CONSTRAINT funcionario_pkey PRIMARY KEY(codigo)
)
WITH (oids = false);
@@ -0,0 +1,6 @@
CREATE TABLE public.operacao (
codigo NUMERIC(15,0) NOT NULL,
nome VARCHAR(50),
CONSTRAINT operacao_pkey PRIMARY KEY(codigo)
)
WITH (oids = false);
@@ -0,0 +1,90 @@
CREATE SEQUENCE public.categoria_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 999999999 START 1
CACHE 1;
ALTER SEQUENCE public.categoria_seq RESTART WITH 15;
CREATE SEQUENCE public.combustivel_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 999999 START 1
CACHE 1;
ALTER SEQUENCE public.combustivel_seq RESTART WITH 10;
CREATE SEQUENCE public.controle_desp_comb_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 999999999 START 1
CACHE 1;
ALTER SEQUENCE public.controle_desp_comb_seq RESTART WITH 6;
CREATE SEQUENCE public.controle_desp_op_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 99999999999 START 1
CACHE 1;
ALTER SEQUENCE public.controle_desp_op_seq RESTART WITH 30;
CREATE SEQUENCE public.controle_desp_pes_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 99999999999 START 1
CACHE 1;
ALTER SEQUENCE public.controle_desp_pes_seq RESTART WITH 7;
CREATE SEQUENCE public.controle_rec_fr_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 99999999999 START 1
CACHE 1;
ALTER SEQUENCE public.controle_rec_fr_seq RESTART WITH 7;
CREATE SEQUENCE public.forma_pagamento_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 99999999 START 1
CACHE 1;
ALTER SEQUENCE public.forma_pagamento_seq RESTART WITH 11;
CREATE SEQUENCE public.fornecedor_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 999999999 START 1
CACHE 1;
ALTER SEQUENCE public.fornecedor_seq RESTART WITH 12;
CREATE SEQUENCE public.funcionario_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 999999999 START 1
CACHE 1;
ALTER SEQUENCE public.funcionario_seq RESTART WITH 9;
CREATE SEQUENCE public.operacao_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 999999999 START 1
CACHE 1;
ALTER SEQUENCE public.operacao_seq RESTART WITH 15;
CREATE SEQUENCE public.socio_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 99999999 START 1
CACHE 1;
ALTER SEQUENCE public.socio_seq RESTART WITH 12;
CREATE SEQUENCE public.subcategoria_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 999999 START 1
CACHE 1;
ALTER SEQUENCE public.subcategoria_seq RESTART WITH 3;
CREATE SEQUENCE public.veiculo_seq
INCREMENT 1 MINVALUE 1
MAXVALUE 99999999 START 1
CACHE 1;
ALTER SEQUENCE public.veiculo_seq RESTART WITH 6;
@@ -0,0 +1,10 @@
CREATE TABLE public.socios (
codigo NUMERIC(15,0) NOT NULL,
nome VARCHAR(50),
percentual_participacao NUMERIC(15,2),
CONSTRAINT socios_pkey PRIMARY KEY(codigo)
)
WITH (oids = false);
COMMENT ON COLUMN public.socios.percentual_participacao
IS 'Valor percentual da participação do sócio.';
@@ -0,0 +1,7 @@
CREATE TABLE public.subcategoria (
codigo NUMERIC(15,0) NOT NULL,
descricao VARCHAR(50),
codigo_categoria NUMERIC(15,0),
CONSTRAINT subcategoria_pkey PRIMARY KEY(codigo)
)
WITH (oids = false);
@@ -0,0 +1,9 @@
CREATE TABLE public.veiculo (
codigo NUMERIC(15,0) NOT NULL,
placa VARCHAR(8),
modelo VARCHAR(30),
marca VARCHAR(30),
ano NUMERIC(15,0),
CONSTRAINT veiculo_pkey PRIMARY KEY(codigo)
)
WITH (oids = false);
@@ -0,0 +1,56 @@
CREATE OR REPLACE FUNCTION public.fnc_geraldia_pivot (
parinicio date,
parfinal date
)
RETURNS varchar AS
$body$
DECLARE
strCategorias TEXT;
strSQL TEXT;
strColunas TEXT;
BEGIN
BEGIN
SELECT coalesce(STRING_AGG(distinct '"C_'|| C.DESCRICAO||'" text',','),'') as cat,
coalesce(STRING_AGG(distinct 'COALESCE("C_'|| C.DESCRICAO|| '",''0,00'') AS "C_'|| C.DESCRICAO||'"',','),'') as COLUNA
into strCategorias,strColunas
FROM controle_despesas_operacionais CDO
,CATEGORIA C
WHERE C.CODIGO = CDO.chave_categoria
AND CDO.DATA BETWEEN parinicio and parfinal;
EXCEPTION
WHEN NO_DATA_FOUND THEN
strCategorias := '';
END;
strSQL := 'SELECT row_number() over() as CHAVE
,CDO."DATA" AS DT
,(SELECT coalesce(replace(to_char(sum(crf.valor_liquido),''FM999999999.00''),''.'','',''),''0,00'') FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.DATA = CDO."DATA") AS VALOR_FRETE
,coalesce(replace(to_char(cast((SELECT sum(crf.valor_liquido) FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.DATA = CDO."DATA") - (Select sum(cd.valor) from controle_despesas_operacionais cd where cd.data = CDO."DATA") as numeric(15,2)),''FM999999999.00''),''.'','',''),''0,00'') as liquido
,'||strColunas||'
FROM (SELECT CR.* FROM (SELECT *
FROM crosstab(''SELECT CDO.DATA, CDO.CHAVE_CATEGORIA, coalesce(replace(to_char(sum(cdo.valor),''''FM999999999.00''''),''''.'''','''',''''),''''0,00'''')
FROM CONTROLE_DESPESAS_OPERACIONAIS CDO
WHERE CDO.DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||''''' group by cdo.data,cdo.chave_categoria ORDER BY 1,2'',''select distinct chave_categoria from controle_despesas_operacionais WHERE DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||''''' order by 1'')
AS ct("DATA" date, '||strCategorias||')) CR) CDO
union all
SELECT CAST(''0'' AS INTEGER) as CHAVE
,to_date(''01/01/1900'',''dd/MM/yyyy'') AS DT
,coalesce(replace(to_char(cast((SELECT sum(crf.valor_liquido) FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''' ) as numeric(15,2)),''FM999999999.00''),''.'','',''),''0,00'') AS VALOR_FRETE
,coalesce(replace(to_char(cast((SELECT sum(crf.valor_liquido) FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''') - (Select sum(cd.valor) from controle_despesas_operacionais cd where cd.data BETWEEN '''||parinicio||''' and '''||parfinal||''') as numeric(15,2)),''FM999999999.00''),''.'','',''),''0,00'') as liquido
,'||strColunas||'
FROM (SELECT CR.* FROM (SELECT *
FROM crosstab(''SELECT to_date(''''01/01/1900'''',''''dd/MM/yyyy''''), CDO.CHAVE_CATEGORIA, coalesce(replace(to_char(sum(cdo.valor),''''FM999999999.00''''),''''.'''','''',''''),''''0,00'''')
FROM CONTROLE_DESPESAS_OPERACIONAIS CDO
WHERE CDO.DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||''''' group by cdo.chave_categoria ORDER BY 1,2'',''select distinct chave_categoria from controle_despesas_operacionais where DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||''''' order by 1'')
AS ct("DATA" date, '|| strCategorias ||')) CR) CDO order by 1';
return strSQL;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;
@@ -0,0 +1,99 @@
CREATE OR REPLACE FUNCTION public.fnc_geralplaca_pivot (
parinicio date,
parfinal date,
parveiculo integer
)
RETURNS varchar AS
$body$
DECLARE
strCategorias TEXT;
strSQL TEXT;
strColunas TEXT;
BEGIN
BEGIN
SELECT coalesce(STRING_AGG(distinct '"C_'|| C.DESCRICAO||'" text',','),'') as cat,
coalesce(STRING_AGG(distinct 'COALESCE("C_'|| C.DESCRICAO|| '",''0,00'') AS "C_'|| C.DESCRICAO||'"',','),'') as COLUNA
into strCategorias,strColunas
FROM controle_despesas_operacionais CDO
,CATEGORIA C
WHERE C.CODIGO = CDO.chave_categoria
AND CDO.DATA BETWEEN parinicio and parfinal;
EXCEPTION
WHEN NO_DATA_FOUND THEN
strCategorias := '';
strColunas := '';
END;
if parveiculo is null then
strSQL := 'SELECT row_number() over() as CHAVE
,(Select v.placa from veiculo v where v.codigo = CDO."chave_veiculo") AS placa
,(SELECT coalesce(replace(to_char(sum(crf.valor_liquido),''FM999999999.00''),''.'','',''),''0,00'') FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.chave_veiculo = CDO."chave_veiculo" and crf.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''') AS VALOR_FRETE
,coalesce(replace(to_char(cast((SELECT sum(crf.valor_liquido) FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.chave_veiculo = CDO."chave_veiculo" and crf.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''') - (Select sum(cd.valor) from controle_despesas_operacionais cd where cd.chave_veiculo = CDO."chave_veiculo" and cd.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''') as numeric(15,2)),''FM999999999.00''),''.'','',''),''0,00'') as liquido
,CDO.CHAVE_VEICULO
,'||strColunas||'
FROM (SELECT CR.* FROM (SELECT *
FROM crosstab(''SELECT distinct cdo.chave_veiculo, cdo.chave_categoria codigo, cdo.chave_categoria cat, replace(to_char(sum(cdo.valor),''''FM999999999.00''''),''''.'''','''','''')
FROM controle_despesas_operacionais cdo
where CDO.DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||'''''
group by cdo.chave_veiculo,cdo.chave_categoria
ORDER BY 1,2'',''select distinct chave_categoria from controle_despesas_operacionais where DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||''''' order by 1''
)
AS ct(chave_veiculo integer, cat integer, '||strCategorias||')) CR) CDO
union all
SELECT 0 as CHAVE
,''Total'' AS placa
,(SELECT coalesce(replace(to_char(sum(crf.valor_liquido),''FM999999999.00''),''.'','',''),''0,00'') FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''') AS VALOR_FRETE
,coalesce(replace(to_char(cast((SELECT sum(crf.valor_liquido) FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''') - (Select sum(cd.valor) from controle_despesas_operacionais cd where cd.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''') as numeric(15,2)),''FM999999999.00''),''.'','',''),''0,00'') as liquido
,CDO.CHAVE_VEICULO
,'||strColunas||'
FROM (SELECT CR.* FROM (SELECT *
FROM crosstab(''SELECT distinct 0, cdo.chave_categoria codigo, cdo.chave_categoria cat, replace(to_char(sum(cdo.valor),''''FM999999999.00''''),''''.'''','''','''')
FROM controle_despesas_operacionais cdo
where CDO.DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||'''''
group by cdo.chave_categoria
ORDER BY 1,2'',''select distinct chave_categoria from controle_despesas_operacionais where DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||''''' order by 1''
)
AS ct(chave_veiculo integer, cat integer, '||strCategorias||')) CR) CDO ORDER BY 1';
ELSE
strSQL := 'SELECT row_number() over() as CHAVE
,(Select v.placa from veiculo v where v.codigo = CDO."chave_veiculo") AS placa
,(SELECT coalesce(replace(to_char(sum(crf.valor_liquido),''FM999999999.00''),''.'','',''),''0,00'') FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.chave_veiculo = CDO."chave_veiculo" and crf.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''') AS VALOR_FRETE
,coalesce(replace(to_char(cast((SELECT sum(crf.valor_liquido) FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.chave_veiculo = CDO."chave_veiculo" and crf.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''') - (Select sum(cd.valor) from controle_despesas_operacionais cd where cd.chave_veiculo = CDO."chave_veiculo" and cd.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''') as numeric(15,2)),''FM999999999.00''),''.'','',''),''0,00'') as liquido
,CDO.CHAVE_VEICULO
,'||strColunas||'
FROM (SELECT CR.* FROM (SELECT *
FROM crosstab(''SELECT distinct cdo.chave_veiculo, cdo.chave_categoria codigo, cdo.chave_categoria cat, replace(to_char(sum(cdo.valor),''''FM999999999.00''''),''''.'''','''','''')
FROM controle_despesas_operacionais cdo
where CDO.DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||'''''
and cdo.chave_veiculo = '||parveiculo||'
group by cdo.chave_veiculo,cdo.chave_categoria
ORDER BY 1,2'',''select distinct chave_categoria from controle_despesas_operacionais where DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||''''' order by 1''
)
AS ct(chave_veiculo integer, cat integer, '||strCategorias||')) CR) CDO
union all
SELECT 0 as CHAVE
,''Total'' AS placa
,(SELECT coalesce(replace(to_char(sum(crf.valor_liquido),''FM999999999.00''),''.'','',''),''0,00'') FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''' and crf.chave_veiculo = '||parveiculo||') AS VALOR_FRETE
,coalesce(replace(to_char(cast((SELECT coalesce(sum(crf.valor_liquido),0) FROM CONTROLE_RECEITAS_FRETES crf WHERE crf.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''' and crf.chave_veiculo = '||parveiculo||') - (Select sum(cd.valor) from controle_despesas_operacionais cd where cd.DATA BETWEEN '''||parinicio||''' and '''||parfinal||''' and cd.chave_veiculo = '||parveiculo||') as numeric(15,2)),''FM999999999.00''),''.'','',''),''0,00'') as liquido
,CDO.CHAVE_VEICULO
,'||strColunas||'
FROM (SELECT CR.* FROM (SELECT *
FROM crosstab(''SELECT distinct 0, cdo.chave_categoria codigo, cdo.chave_categoria cat, replace(to_char(sum(cdo.valor),''''FM999999999.00''''),''''.'''','''','''')
FROM controle_despesas_operacionais cdo
where CDO.DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||'''''
and cdo.chave_veiculo = '||parveiculo||'
group by cdo.chave_categoria
ORDER BY 1,2'',''select distinct chave_categoria from controle_despesas_operacionais where DATA BETWEEN '''''||parinicio||''''' and '''''||parfinal||''''' order by 1''
)
AS ct(chave_veiculo integer, cat integer, '||strCategorias||')) CR) CDO ORDER BY 1';
end if;
return strSQL;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;