 select
	filial,
	numero,
	serie,
	letra1,
	codoper,
	nomeoper,
	cliente,
	nomecli,
	emissao,
	vencimento,
	pagamento,
	valor,
	juros,
	multa,
	desconto,
	totpgto,
	nomepgto,
	CASE
		WHEN vencimento IS NOT NULL THEN to_char(vencimento,'MM/YYYY')
		ELSE ''
	END AS mesvcto,
	CASE
		WHEN vencimento IS NOT NULL THEN to_char(vencimento,'YYYY')::integer
		ELSE 0
	END AS anovcto,
	situacao,
	CASE
		WHEN emissao IS NOT NULL THEN to_char(emissao,'MM/YYYY')
		ELSE ''
	END AS mesemissao,
	CASE
		WHEN emissao IS NOT NULL THEN to_char(emissao,'YYYY')::integer
		ELSE 0
	END AS anoemissao,
	CASE
		WHEN pagamento IS NOT NULL THEN to_char(pagamento,'MM/YYYY')
		ELSE ''
	END AS mespgto,
	CASE
		WHEN pagamento IS NOT NULL THEN to_char(pagamento,'YYYY')::integer
		ELSE 0
	END AS anopgto,
	nportador,
	pessoa,
	cidade,
	atividade,
	situacao2,
	CASE
		WHEN pagamento IS NOT NULL THEN 'Pago'
		WHEN vencimento IS NOT NULL THEN
			CASE
				WHEN current_date - vencimento <= 0 THEN 'Vencer'
				WHEN (current_date - vencimento IN (1,2,3)) AND
				     (EXTRACT(dow FROM vencimento) IN (6,0)) AND
				     (EXTRACT(dow FROM current_date) IN (6,0,1))
				   THEN 'Vencer'
				ELSE 'Vencido'
			END
		ELSE 'Vencer'
	END AS situacao3,
	cartao,
	notaref,
	dataref,
	(coalesce(valorreftotal, 0.00) / _count)::numeric(12,
	2) as valorref,
	coalesce(valorreftotal, 0.00) as valorreftotal,
	tipocod,
	tipodesc,
	numerobanco
from
	(
	select
		FIL.filia_apelido as filial,
		R.receb_numero as numero,
		R.receb_serie as serie,
		R.receb_letra1 as letra1,
		case
			when R.receb_serie in ('RPS') then 0
			when R.receb_serie in ('2') then CNFS.canfs_operacao
			when R.receb_serie in ( 'ECF' , 'NFC' ) then 0
			when R.receb_serie in ( 'DIR' , 'FIN' , 'USA' , 'IRR' ) then 0
			else 0
		end as codoper,
		case
			when R.receb_serie in ('RPS') then 'RPS'
			when R.receb_serie in ('2') then ONFS.opera_descricao
			when R.receb_serie in ('ECF') then 'ECF'
			when R.receb_serie in ('NFC') then 'NFC'
			when R.receb_serie in ('DIR') then case
				when coalesce(CDIR.cpdir_indestoque, '') = '-' then 'DIRETA'
				else 'DEV. DIRETA'
			end
			when R.receb_serie in ('FIN') then case
				when coalesce(CDIR.cpdir_indestoque, '') = '-' then 'FINANCIAMENTO BANCÁRIO'
				else 'DEV. FINANCIAMENTO BANCÁRIO'
			end
			when R.receb_serie in ('USA') then case
				when coalesce(CDIR.cpdir_indestoque, '') = '-' then 'USADOS'
				else 'DEV. USADOS'
			end
			when R.receb_serie in ('IRR') then case
				when coalesce(CDIR.cpdir_indestoque, '') = '-' then 'IRRIGAÇÃO'
				else 'DEV. IRRIGAÇÃO'
			end
			else ''
		end as nomeoper,
		R.receb_cliente as cliente,
		R.receb_nomecli as nomecli,
		R.receb_emissao as emissao,
		R.receb_vencimento as vencimento,
		R.receb_pagamento as pagamento,
		R.receb_valor as valor,
		R.receb_juros as juros,
		R.receb_multa as multa,
		R.receb_desconto as desconto,
		R.receb_totpgto as totpgto,
		R.receb_nomepgto as nomepgto,
		''::character(7) as mesvcto,
		0 as anovcto,
		case
			when R.receb_Pagamento is null then 'Aberto'
			else 'Pago'
		end as situacao,
		''::character(7) as mesemissao,
		0 as anoemissao,
		''::character(7) as mespgto,
		0 as anopgto,
		R.receb_nomepor as nportador,
		case
			when R.receb_clifor = 'C' then CL.clien_pes
			when R.receb_clifor = 'F' then FO.forne_pessoa
			else ''
		end as pessoa,
		case
			when R.receb_clifor = 'C' then CL.clien_nomcid
			when R.receb_clifor = 'F' then FO.forne_cidade
			else ''
		end as cidade,
		case
			when R.receb_clifor = 'C' then CL.clien_nomativ
			when R.receb_clifor = 'F' then ''
			else ''
		end as atividade,
		R.receb_situacao as situacao2,
		''::character varying(10) as situacao3,
		case
			when R.receb_clifor = 'C' then case
				when CL.clien_cartao = 'Em Branco' then ''
				when CL.clien_cartao = 'Preferencial' then 'P'
				when CL.clien_cartao = 'Super Preferencial' then 'SP'
				else ''
			end
			else ''
		end as cartao,
		case
			when R.receb_serie in ( '2', 'ECF', 'NFC' ) then string_agg( case when coalesce(MNFS.monfs_nfdevolve, 0)<> 0 then MNFS.monfs_nfdevolve::text else null end , ';')
			when R.receb_serie in ( 'DIR' , 'FIN' , 'USA' , 'IRR' ) then string_agg(ZCDIR.cpdir_nota::text, ';')
			else ''
		end as notaref,
		case
			when R.receb_serie in ( '2', 'ECF', 'NFC' ) then '''' || string_agg(to_char( case when coalesce(MNFS.monfs_nfdevolve, 0)<> 0 then ( select ZCNFS.canfs_emissao from capa_nfs ZCNFS inner join Movimento_nfs ZMNFS on ZMNFS.monfs_empresa = ZCNFS.canfs_empresa and ZMNFS.monfs_filial = ZCNFS.canfs_filial and ZMNFS.monfs_nota = ZCNFS.canfs_nota and ZMNFS.monfs_serie = ZCNFS.canfs_serie where ZCNFS.canfs_empresa = CNFS.canfs_empresa and ZCNFS.canfs_filial = CNFS.canfs_filial and ZCNFS.canfs_serie in ('2', 'ECF', 'NFC') and case when CNFS.canfs_serie = '2' then ( ZCNFS.canfs_chavedev = CNFS.canfs_chavenfe or ( CNFS.canfs_nota = ZCNFS.canfs_notaref and ZCNFS.canfs_notaref_tipo = 'NFS' ) ) when CNFS.canfs_serie = 'ECF' then ( CNFS.canfs_nota = ZCNFS.canfs_notaref and ZCNFS.canfs_notaref_tipo = 'ECF' ) when CNFS.canfs_serie = 'NFC' then ( CNFS.canfs_nota = ZCNFS.canfs_notaref and ZCNFS.canfs_notaref_tipo = 'NFC' ) else false end and ZMNFS.monfs_produto = MNFS.monfs_produto limit 1 ) end, 'dd/MM/yyyy'), ';')
			when R.receb_serie in ( 'DIR' , 'FIN' , 'USA' , 'IRR' ) then '''' || string_agg(to_char(ZCDIR.cpdir_emissao, 'dd/MM/yyyy'), ';')
			else ''
		end as dataref,
		case
			when R.receb_serie in ( '2', 'ECF', 'NFC' ) then sum( case when coalesce(MNFS.monfs_nfdevolve, 0)<> 0 then ( select ZMNFS.monfs_total from capa_nfs ZCNFS inner join Movimento_nfs ZMNFS on ZMNFS.monfs_empresa = ZCNFS.canfs_empresa and ZMNFS.monfs_filial = ZCNFS.canfs_filial and ZMNFS.monfs_nota = ZCNFS.canfs_nota and ZMNFS.monfs_serie = ZCNFS.canfs_serie where ZCNFS.canfs_empresa = CNFS.canfs_empresa and ZCNFS.canfs_filial = CNFS.canfs_filial and ZCNFS.canfs_serie in ('2', 'ECF', 'NFC') and case when CNFS.canfs_serie = '2' then ( ZCNFS.canfs_chavedev = CNFS.canfs_chavenfe or ( CNFS.canfs_nota = ZCNFS.canfs_notaref and ZCNFS.canfs_notaref_tipo = 'NFS' ) ) when CNFS.canfs_serie = 'ECF' then ( CNFS.canfs_nota = ZCNFS.canfs_notaref and ZCNFS.canfs_notaref_tipo = 'ECF' ) when CNFS.canfs_serie = 'NFC' then ( CNFS.canfs_nota = ZCNFS.canfs_notaref and ZCNFS.canfs_notaref_tipo = 'NFC' ) else false end and ZMNFS.monfs_produto = MNFS.monfs_produto limit 1 ) else 0 end )
			when R.receb_serie in ( 'DIR' , 'FIN' , 'USA' , 'IRR' ) then sum(ZCDIR.cpdir_total)
			else 0
		end as valorreftotal,
		R.receb_tipopgto as tipocod,
		PREC.pgto_descricao as tipodesc,
		(
		select
			count(1)
		from
			receber R2
		where
			R2.receb_empresa = FIL.filia_empresa
			and R2.receb_filial = FIL.filia_filial
			and R2.receb_numero = R.receb_numero
			and R2.receb_serie = R.receb_serie ) as _count,
		R.receb_nrbanco as numerobanco
	from
		receber R
	left join filial FIL on
		FIL.filia_empresa = R.receb_empresa
		and FIL.filia_filial = R.receb_filial
	left join clientes CL on
		CL.clien_codigo = R.receb_cliente
		and R.receb_clifor = 'C'
	left join fornecedores FO on
		FO.forne_codigo = R.receb_cliente
		and R.receb_clifor = 'F'
	left join capa_nfs CNFS on
		R.receb_serie in ( '2' , 'ECF' , 'NFC' )
		and CNFS.canfs_empresa = R.receb_empresa
		and CNFS.canfs_filial = R.receb_filial
		and CNFS.canfs_nota = R.receb_numero
		and CNFS.canfs_serie = R.receb_serie
	left join movimento_nfs MNFS on
		R.receb_serie in ( '2' , 'ECF' , 'NFC' )
		and MNFS.monfs_empresa = CNFS.canfs_empresa
		and MNFS.monfs_filial = CNFS.canfs_filial
		and MNFS.monfs_nota = CNFS.canfs_nota
		and MNFS.monfs_serie = CNFS.canfs_serie
	left join operacoes ONFS on
		R.receb_serie in ( '2' , 'ECF' , 'NFC' )
		and ONFS.opera_codigo = CNFS.canfs_operacao
	left join capa_vendir CDIR on
		R.receb_serie in ( 'DIR' , 'FIN' , 'USA' , 'IRR' )
		and CDIR.cpdir_empresa = R.receb_empresa
		and CDIR.cpdir_filial = R.receb_filial
		and CDIR.cpdir_nota = R.receb_numero
		and CDIR.cpdir_serie = R.receb_serie
	left join (
		select
			distinct ZCDIR.cpdir_empresa,
			ZCDIR.cpdir_filial,
			ZCDIR.cpdir_serie,
			ZCDIR.cpdir_nota,
			ZCDIR.cpdir_emissao,
			ZCDIR.cpdir_total,
			ZCDIR.cpdir_nfdevolve
		from
			capa_vendir ZCDIR ) ZCDIR on
		R.receb_serie in ( 'DIR' , 'FIN' , 'USA' , 'IRR' )
		and ZCDIR.cpdir_empresa = CDIR.cpdir_empresa
		and ZCDIR.cpdir_filial = CDIR.cpdir_filial
		and ZCDIR.cpdir_serie = CDIR.cpdir_serie
		and ZCDIR.cpdir_nfdevolve = CDIR.cpdir_nota
	left join pgto_rec PREC on
		PREC.pgto_codigo = R.receb_tipopgto
	where
		R.Receb_Emissao between '1999-01-01' and current_date
	group by
		FIL.filia_empresa,
		FIL.filia_filial,
		1,
		2,
		3,
		4,
		5,
		6,
		7,
		8,
		9,
		10,
		11,
		12,
		13,
		14,
		15,
		16,
		17,
		18,
		19,
		20,
		21,
		22,
		23,
		24,
		25,
		26,
		27,
		28,
		29,
		30,
		31,
		35,
		36,
		38
	order by
		FIL.filia_empresa,
		FIL.filia_filial,
		R.receb_cliente,
		R.receb_numero,
		R.receb_serie,
		R.receb_letra1 ) as temp





