SELECT  DISTINCT 
	r.id_empresa,
	r.nome_empresa,
	r.id_cliente,
	r.nome_cliente,
	r.data_despesa_receita,
	r.denominacao_tipo,
	r.id_despesa_receita,
	r.numero_documento,
	r.id_conta_financeira,
	r.denominacao_conta,
	r.observacao,
	r.situacao,
	r.valor_receita,
	r.valor_liquidacao,
	r.especie_financeira,
	r.nome_usuario
FROM	(
	WITH RECURSIVE tmp_recebimento_titulos(
		id_titulo_raiz, 
		id_titulo_financeiro, 
		id_titulo_filho, 
		id_titulo_pai, 
		valor_titulo, 
		situacao, 
		data_liquidacao, 
		id_conta_liquidacao,
		juros_cobranca, 
		multa_cobranca, 
		desconto_cobranca, 
		retencao_tributaria, 
		valor_liquidado, 
		valor_ajuste,
		valor_recebido,
		valor_amortizado,
		valor_residual,
		valor_titulo_recalculado,
		valor_amortizado_recalculado,
		valor_residual_recalculado
	) AS (
		SELECT  tf.id_titulo_financeiro AS id_titulo_raiz,
			tf.id_titulo_financeiro,
			tf.id_titulo_filho,
			tf.id_titulo_pai,   
			tf.valor_titulo,
			tf.situacao,
			tf.data_liquidacao,
			tf.id_conta_liquidacao,
			tf.juros_cobranca,
			tf.multa_cobranca,
			tf.desconto_cobranca,
			tf.retencao_tributaria,
			tf.valor_liquidado,
			(tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria) AS valor_ajuste,
			CAST((CASE WHEN tf.situacao IN (2, 3) THEN
				tf.valor_liquidado 
			ELSE 
				0.00 
			END) AS DECIMAL(12,2)) AS valor_recebido,
			CAST((CASE WHEN tf.situacao IN (2, 3) THEN
				tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria) 
			ELSE 
				0.00 
			END) AS DECIMAL(12,2)) AS valor_amortizado,
			CAST((CASE WHEN tf.situacao IN (2, 3) THEN
				tf.valor_titulo - (tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria)) 
			ELSE 
				tf.valor_titulo 
			END) AS DECIMAL(12,2)) AS valor_residual,
			tf.valor_titulo AS valor_titulo_recalculado,
			CAST((CASE WHEN tf.situacao IN (2, 3) THEN
				tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria) 
			ELSE 
				0.00 
			END) AS DECIMAL(12,2)) AS valor_amortizado_recalculado,
			CAST((CASE WHEN tf.situacao IN (2, 3) THEN
				tf.valor_titulo - (tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria)) 
			ELSE 
				tf.valor_titulo 
			END) AS DECIMAL(12,2)) AS valor_residual_recalculado
		FROM  titulo_financeiro tf
			INNER JOIN (
				SELECT	DISTINCT pdr.id_titulo_financeiro
				FROM	despesa_receita AS dr
					INNER JOIN parcela_despesa_receita AS pdr ON (pdr.id_despesa_receita = dr.id_despesa_receita)
					INNER JOIN tipo_despesa_receita AS tdr ON (tdr.id_tipo_despesa_receita = dr.id_tipo_despesa_receita)
				WHERE	dr.data_despesa_receita <= CAST(:DataFinal AS DATE)
				AND	tdr.despesa_receita = 2
				AND	dr.situacao IN (2, 3)
			) AS tmp_titulos ON (tmp_titulos.id_titulo_financeiro = tf.id_titulo_financeiro)
		UNION ALL
		SELECT  
			t.id_titulo_raiz,
			tf.id_titulo_financeiro,
			tf.id_titulo_filho,
			tf.id_titulo_pai,   
			tf.valor_titulo,
			tf.situacao,
			tf.data_liquidacao,
			tf.id_conta_liquidacao,
			tf.juros_cobranca,
			tf.multa_cobranca,
			tf.desconto_cobranca,
			tf.retencao_tributaria,
			tf.valor_liquidado,
			(tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria) AS valor_ajuste,
			CAST((CASE WHEN tf.situacao IN (2, 3) THEN
				tf.valor_liquidado 
			ELSE 
				0.00 
			END) AS DECIMAL(12,2)) AS valor_recebido,
			CAST((CASE WHEN tf.situacao IN (2, 3) THEN
				tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria) 
			ELSE 
				0.00 
			END) AS DECIMAL(12,2)) AS valor_amortizado,
			CAST((CASE WHEN tf.situacao IN (2, 3) THEN
				tf.valor_titulo - (tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria)) 
			ELSE 
				tf.valor_titulo 
			END) AS DECIMAL(12,2)) AS valor_residual,
				CAST((CASE WHEN t.situacao = 8 THEN
				COALESCE((tf.valor_titulo * t.valor_residual_recalculado) / NULLIF(t.valor_residual, 0), (tf.valor_titulo * t.valor_residual_recalculado))
			ELSE 
				t.valor_residual_recalculado 
			END) AS DECIMAL(12,2)) AS valor_titulo_recalculado,
			CAST((CASE WHEN tf.situacao IN (2, 3) THEN
				(CASE WHEN t.situacao = 8 THEN
					COALESCE(((tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria)) * (t.valor_residual_recalculado / NULLIF(t.valor_residual, 0))), (tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria))) 
				ELSE 
					COALESCE((((tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria)) / NULLIF(tf.valor_titulo, 0)) * t.valor_residual_recalculado), (tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria)))
				END)
			ELSE 
				0.00 
			END) AS DECIMAL(12,2)) AS valor_amortizado_recalculado,
			CAST((CASE WHEN tf.situacao IN (2, 3) THEN
				(CASE WHEN t.situacao = 8 THEN
					COALESCE(((tf.valor_titulo - (tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria))) * (t.valor_residual_recalculado / NULLIF(t.valor_residual, 0))), (tf.valor_titulo - (tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria))))
				ELSE 
					(t.valor_residual_recalculado - COALESCE((((tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria)) / NULLIF(tf.valor_titulo, 0)) * t.valor_residual_recalculado), (tf.valor_liquidado - (tf.juros_cobranca + tf.multa_cobranca - tf.desconto_cobranca - tf.retencao_tributaria))))
				END)
			ELSE 
				(CASE WHEN t.situacao = 8 THEN
					COALESCE((tf.valor_titulo * t.valor_residual_recalculado) / NULLIF(t.valor_residual, 0), (tf.valor_titulo * t.valor_residual_recalculado)) 
				ELSE
					t.valor_residual_recalculado 
				END)
			END) AS DECIMAL(12,2)) AS valor_residual_recalculado
		FROM	titulo_financeiro as tf,
			tmp_recebimento_titulos as t
		WHERE	(tf.id_titulo_financeiro = t.id_titulo_filho OR tf.id_titulo_pai = t.id_titulo_financeiro)
	)

	
	SELECT  se.id_empresa,
		se.nome AS nome_empresa,
		dr.id_pessoa AS id_cliente,
		p.nome AS nome_cliente,
		dr.data_despesa_receita,
		tdr.denominacao AS denominacao_tipo,
		dr.id_despesa_receita,
		numero_documento,
		NULL AS id_conta_financeira,
		'' AS denominacao_conta,
		dr.observacao,
		(CASE dr.situacao WHEN 1 THEN 'Rascunho' WHEN 2 THEN 'Aguard. Aprov.' WHEN 3 THEN 'Aberto' END) AS situacao,
		dr.valor_despesa_receita AS valor_receita,
		0.00 AS valor_liquidacao,
		'' AS especie_financeira,
		su.nome AS nome_usuario
	FROM  despesa_receita AS dr
		INNER JOIN tipo_despesa_receita AS tdr ON (dr.id_tipo_despesa_receita = tdr.id_tipo_despesa_receita)
		INNER JOIN sis_empresa AS se ON (se.id_empresa = dr.id_empresa)
		INNER JOIN pessoa AS p ON (p.id_pessoa = dr.id_pessoa)
		LEFT  JOIN sis_usuario AS su ON (su.id_usuario = dr.id_usuario_aprovador)
		LEFT OUTER JOIN rateio_despesa_receita AS rdr ON (rdr.id_despesa_receita = dr.id_despesa_receita)
	WHERE	dr.data_despesa_receita BETWEEN CAST(:DataInicial AS DATE) AND CAST(:DataFinal AS DATE)
	AND	dr.id_empresa IN (:IdEmpresaMultSlc)
	AND	tdr.despesa_receita = 2
	AND	NOT EXISTS (SELECT 1 FROM parcela_despesa_receita WHERE id_despesa_receita = dr.id_despesa_receita)

	UNION ALL
		
	
	SELECT  se.id_empresa,
		se.nome AS nome_empresa,
		dr.id_pessoa AS id_cliente,
		p.nome AS nome_cliente,
		dr.data_despesa_receita,
		tdr.denominacao AS denominacao_tipo,
		tf.id_titulo_financeiro AS id_despesa_receita,
		tf.numero_titulo AS numero_documento,
		tf.id_conta_liquidacao AS id_conta_financeira,
		CAST('' AS TEXT) AS denominacao_conta,
		tf.observacao,
		(CASE WHEN (tf.situacao = 1) THEN 'Aberto' WHEN (tf.situacao = 2 OR tf.situacao = 3 OR tf.situacao = 10) THEN 'Liquidado' 
			WHEN (tf.situacao = 9) THEN 'Rascunho' ELSE '' END) AS situacao,
		tf.valor_titulo AS valor_receita,
		trt.valor_amortizado_recalculado AS valor_liquidacao,
		ef.denominacao AS especie_financeira,
		su.nome AS nome_usuario
	FROM  tmp_recebimento_titulos AS trt
		INNER JOIN titulo_financeiro AS tf ON (tf.id_titulo_financeiro = trt.id_titulo_raiz)
		INNER JOIN parcela_despesa_receita AS pdr ON (pdr.id_titulo_financeiro = tf.id_titulo_financeiro)
		INNER JOIN despesa_receita AS dr ON (dr.id_despesa_receita = pdr.id_despesa_receita)
		INNER JOIN tipo_despesa_receita AS tdr ON (dr.id_tipo_despesa_receita = tdr.id_tipo_despesa_receita)
		INNER JOIN sis_empresa AS se ON (se.id_empresa = dr.id_empresa)
		INNER JOIN pessoa AS p ON (p.id_pessoa = dr.id_pessoa)
		LEFT OUTER JOIN sis_usuario AS su ON (su.id_usuario = dr.id_usuario_aprovador)
		LEFT OUTER JOIN especie_financeira AS ef ON (ef.id_especie_financeira = tf.id_especie_liquidacao)
		LEFT OUTER JOIN rateio_despesa_receita AS rdr ON (rdr.id_despesa_receita = dr.id_despesa_receita)
		LEFT OUTER JOIN conta_financeira AS cf ON (cf.id_conta_financeira = tf.id_conta_liquidacao)
	WHERE trt.data_liquidacao BETWEEN CAST(:DataInicial AS DATE) AND CAST(:DataFinal AS DATE)
	AND dr.id_empresa IN (:IdEmpresaMultSlc)
	AND tdr.despesa_receita = 2
	AND dr.situacao IN (2, 3)

	UNION ALL

	
	SELECT se.id_empresa,
		se.nome AS nome_empresa,
		p.id_pessoa AS id_cliente,
		p.nome AS nome_cliente,
		tf.data_liquidacao AS data_despesa_receita,
		tdr.denominacao AS denominacao_tipo,
		tf.id_titulo_financeiro AS id_despesa_receita,
		tf.numero_titulo AS numero_documento,
		tf.id_conta_liquidacao AS id_conta_financeira,
		CAST('' AS TEXT) AS denominacao_conta,
		tf.observacao,
		'Liquidado' AS situacao,
		tf.valor_titulo AS valor_receita,
		tf.acrescimo_financeiro AS valor_liquidacao,
		ef.denominacao AS especie_financeira,
		CAST(NULL AS VARCHAR(50)) AS nome_usuario
		FROM  titulo_financeiro AS tf
		INNER JOIN pessoa AS p ON (p.id_pessoa = tf.id_credor_devedor)
		INNER JOIN sis_empresa AS se ON (se.id_empresa = tf.id_empresa)
		INNER JOIN tipo_despesa_receita AS tdr ON (tdr.id_tipo_despesa_receita = -1000)
		INNER JOIN categoria_despesa_receita AS cdr ON (cdr.id_categoria_despesa_receita = tdr.id_categoria_despesa_receita)
		LEFT OUTER JOIN conta_financeira AS cf ON (cf.id_conta_financeira = tf.id_conta_liquidacao)
		INNER JOIN especie_financeira AS ef ON (ef.id_especie_financeira = tf.id_especie_liquidacao)
	WHERE	tf.data_liquidacao BETWEEN CAST(:DataInicial AS DATE) AND CAST(:DataFinal AS DATE)
	AND	tf.id_empresa IN (:IdEmpresaMultSlc)
	AND	tf.situacao IN (2,3,10)  
	AND	tf.pagar_receber = 2
	AND	tf.acrescimo_financeiro > 0

	UNION ALL

	
	SELECT se.id_empresa,
		se.nome AS nome_empresa,
		p.id_pessoa AS id_cliente,
		p.nome AS nome_cliente,
		tf.data_liquidacao AS data_despesa_receita,
		tdr.denominacao AS denominacao_tipo,
		tf.id_titulo_financeiro AS id_despesa_receita,
		tf.numero_titulo AS numero_documento,
		tf.id_conta_liquidacao AS id_conta_financeira,
		CAST('' AS TEXT) AS denominacao_conta,
		tf.observacao,
		'Liquidado' AS situacao,
		tf.valor_titulo AS valor_receita,
		tf.juros_cobranca AS valor_liquidacao,
		ef.denominacao AS especie_financeira,
		CAST(NULL AS VARCHAR(50)) AS nome_usuario
		FROM  titulo_financeiro AS tf
		INNER JOIN pessoa AS p ON (p.id_pessoa = tf.id_credor_devedor)
		INNER JOIN sis_empresa AS se ON (se.id_empresa = tf.id_empresa)
		INNER JOIN tipo_despesa_receita AS tdr ON (tdr.id_tipo_despesa_receita = -2000)
		INNER JOIN categoria_despesa_receita AS cdr ON (cdr.id_categoria_despesa_receita = tdr.id_categoria_despesa_receita)
		LEFT OUTER JOIN conta_financeira AS cf ON (cf.id_conta_financeira = tf.id_conta_liquidacao)
		INNER JOIN especie_financeira AS ef ON (ef.id_especie_financeira = tf.id_especie_liquidacao)
	WHERE	tf.data_liquidacao BETWEEN CAST(:DataInicial AS DATE) AND CAST(:DataFinal AS DATE)
	AND	tf.id_empresa IN (:IdEmpresaMultSlc)
	AND	tf.situacao IN (2,3,10)  
	AND	tf.pagar_receber = 2
	AND	tf.juros_cobranca > 0

	UNION ALL

	
	SELECT se.id_empresa,
		se.nome AS nome_empresa,
		p.id_pessoa AS id_cliente,
		p.nome AS nome_cliente,
		tf.data_liquidacao AS data_despesa_receita,
		tdr.denominacao AS denominacao_tipo,
		tf.id_titulo_financeiro AS id_despesa_receita,
		tf.numero_titulo AS numero_documento,
		tf.id_conta_liquidacao AS id_conta_financeira,
		CAST('' AS TEXT) AS denominacao_conta,
		tf.observacao,
		'Liquidado' AS situacao,
		tf.valor_titulo AS valor_receita,
		tf.multa_cobranca AS valor_liquidacao,
		ef.denominacao AS especie_financeira,
		CAST(NULL AS VARCHAR(50)) AS nome_usuario
		FROM  titulo_financeiro AS tf
		INNER JOIN pessoa AS p ON (p.id_pessoa = tf.id_credor_devedor)
		INNER JOIN sis_empresa AS se ON (se.id_empresa = tf.id_empresa)
		INNER JOIN tipo_despesa_receita AS tdr ON (tdr.id_tipo_despesa_receita = -3000)
		INNER JOIN categoria_despesa_receita AS cdr ON (cdr.id_categoria_despesa_receita = tdr.id_categoria_despesa_receita)
		LEFT OUTER JOIN conta_financeira AS cf ON (cf.id_conta_financeira = tf.id_conta_liquidacao)
		INNER JOIN especie_financeira AS ef ON (ef.id_especie_financeira = tf.id_especie_liquidacao)
	WHERE	tf.data_liquidacao BETWEEN CAST(:DataInicial AS DATE) AND CAST(:DataFinal AS DATE)
	AND	tf.id_empresa IN (:IdEmpresaMultSlc)
	AND	tf.situacao IN (2,3,10)  
	AND	tf.pagar_receber = 2
	AND	tf.multa_cobranca > 0

	UNION ALL

	
	SELECT se.id_empresa,
		se.nome AS nome_empresa,
		p.id_pessoa AS id_cliente,
		p.nome AS nome_cliente,
		tf.data_liquidacao AS data_despesa_receita,
		tdr.denominacao AS denominacao_tipo,
		tf.id_titulo_financeiro AS id_despesa_receita,
		tf.numero_titulo AS numero_documento,
		tf.id_conta_liquidacao AS id_conta_financeira,
		CAST('' AS TEXT) AS denominacao_conta,
		tf.observacao,
		'Liquidado' AS situacao,
		tf.valor_titulo AS valor_receita,
		tf.desconto_financeiro AS valor_liquidacao,
		ef.denominacao AS especie_financeira,
		CAST(NULL AS VARCHAR(50)) AS nome_usuario
		FROM  titulo_financeiro AS tf
		INNER JOIN pessoa AS p ON (p.id_pessoa = tf.id_credor_devedor)
		INNER JOIN sis_empresa AS se ON (se.id_empresa = tf.id_empresa)
		INNER JOIN tipo_despesa_receita AS tdr ON (tdr.id_tipo_despesa_receita = -4000)
		INNER JOIN categoria_despesa_receita AS cdr ON (cdr.id_categoria_despesa_receita = tdr.id_categoria_despesa_receita)
		LEFT OUTER JOIN conta_financeira AS cf ON (cf.id_conta_financeira = tf.id_conta_liquidacao)
		INNER JOIN especie_financeira AS ef ON (ef.id_especie_financeira = tf.id_especie_liquidacao)
	WHERE	tf.data_liquidacao BETWEEN CAST(:DataInicial AS DATE) AND CAST(:DataFinal AS DATE)
	AND	tf.id_empresa IN (:IdEmpresaMultSlc)
	AND	tf.situacao IN (2,3,10)  
	AND	tf.pagar_receber = 1
	AND	tf.desconto_financeiro > 0

	UNION ALL

	
	SELECT se.id_empresa,
		se.nome AS nome_empresa,
		p.id_pessoa AS id_cliente,
		p.nome AS nome_cliente,
		tf.data_liquidacao AS data_despesa_receita,
		tdr.denominacao AS denominacao_tipo,
		tf.id_titulo_financeiro AS id_despesa_receita,
		tf.numero_titulo AS numero_documento,
		tf.id_conta_liquidacao AS id_conta_financeira,
		CAST('' AS TEXT) AS denominacao_conta,
		tf.observacao,
		'Liquidado' AS situacao,
		tf.valor_titulo AS valor_receita,
		tf.desconto_cobranca AS valor_liquidacao,
		ef.denominacao AS especie_financeira,
		CAST(NULL AS VARCHAR(50)) AS nome_usuario
		FROM  titulo_financeiro AS tf
		INNER JOIN pessoa AS p ON (p.id_pessoa = tf.id_credor_devedor)
		INNER JOIN sis_empresa AS se ON (se.id_empresa = tf.id_empresa)
		INNER JOIN tipo_despesa_receita AS tdr ON (tdr.id_tipo_despesa_receita = -5000)
		INNER JOIN categoria_despesa_receita AS cdr ON (cdr.id_categoria_despesa_receita = tdr.id_categoria_despesa_receita)
		LEFT OUTER JOIN conta_financeira AS cf ON (cf.id_conta_financeira = tf.id_conta_liquidacao)
		INNER JOIN especie_financeira AS ef ON (ef.id_especie_financeira = tf.id_especie_liquidacao)
	WHERE	tf.data_liquidacao BETWEEN CAST(:DataInicial AS DATE) AND CAST(:DataFinal AS DATE)
	AND	tf.id_empresa IN (:IdEmpresaMultSlc)
	AND	tf.situacao IN (2,3,10)  
	AND	tf.pagar_receber = 1
	AND	tf.desconto_cobranca > 0

	UNION ALL

	
	SELECT se.id_empresa,
		se.nome AS nome_empresa,
		p.id_pessoa AS id_cliente,
		p.nome AS nome_cliente,
		tf.data_liquidacao AS data_despesa_receita,
		tdr.denominacao AS denominacao_tipo,
		tf.id_titulo_financeiro AS id_despesa_receita,
		tf.numero_titulo AS numero_documento,
		tf.id_conta_liquidacao AS id_conta_financeira,
		CAST('' AS TEXT) AS denominacao_conta,
		tf.observacao,
		'Liquidado' AS situacao,
		tf.valor_titulo AS valor_receita,
		tf.retencao_tributaria AS valor_liquidacao,
		ef.denominacao AS especie_financeira,
		CAST(NULL AS VARCHAR(50)) AS nome_usuario
		FROM  titulo_financeiro AS tf
		INNER JOIN pessoa AS p ON (p.id_pessoa = tf.id_credor_devedor)
		INNER JOIN sis_empresa AS se ON (se.id_empresa = tf.id_empresa)
		INNER JOIN tipo_despesa_receita AS tdr ON (tdr.id_tipo_despesa_receita = -8000)
		INNER JOIN categoria_despesa_receita AS cdr ON (cdr.id_categoria_despesa_receita = tdr.id_categoria_despesa_receita)
		LEFT OUTER JOIN conta_financeira AS cf ON (cf.id_conta_financeira = tf.id_conta_liquidacao)
		INNER JOIN especie_financeira AS ef ON (ef.id_especie_financeira = tf.id_especie_liquidacao)
	WHERE	tf.data_liquidacao BETWEEN CAST(:DataInicial AS DATE) AND CAST(:DataFinal AS DATE)
	AND	tf.id_empresa IN (:IdEmpresaMultSlc)
	AND	tf.situacao IN (2,3,10)  
	AND	tf.pagar_receber = 1
	AND	tf.retencao_tributaria > 0
) AS r
WHERE	((-1 = -1) OR (r.id_cliente = -1))
AND	(CASE r.situacao WHEN 'Rascunho' THEN 1 WHEN 'Aguard. Aprov.' THEN 2 WHEN 'Aberto' THEN 3 WHEN 'Liquidado' THEN 4 END) IN (4)
AND	((-1 = -1) OR (r.id_conta_financeira = -1))
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
ORDER BY r.nome_empresa,
	r.nome_cliente,
	r.denominacao_tipo,
	r.data_despesa_receita