--SELECT para verificar vendas a prazos e vendas

Select * FROM (

SELECT	se.nome AS Empresa,
	p.codigo AS codigo_cliente,
	p.nome AS cliente,
	tf.data_emissao,
	tf.id_titulo_financeiro,
	tf.numero_titulo,
	(CASE WHEN (tf.tipo_titulo = 1) THEN ('Original') ELSE
	  (CASE WHEN (tf.tipo_titulo = 2) THEN ('RESIDUAL') ELSE 
		(CASE WHEN (tf.tipo_titulo = 3) THEN ('AGRUPAMENTO') ELSE 
		  (CASE WHEN (tf.tipo_titulo = 4) THEN ('DESMEMBRAMENTO') ELSE 
		    (CASE WHEN (tf.tipo_titulo = 5) THEN ('TROCA DE TÍTULO') ELSE ('Tipo Código ' || tf.tipo_titulo)END)END)END)END)END) as tipo_titulo,

	(CASE WHEN (tf.situacao = 1) THEN ('Aberto') ELSE
	  (CASE WHEN (tf.situacao = 2) THEN ('Liquidado') ELSE 
	    (CASE WHEN (tf.situacao = 3) THEN ('Liquidado Parcialmente') ELSE 
		 (CASE WHEN (tf.situacao = 7) THEN ('Agrupado') ELSE 
		   (CASE WHEN (tf.situacao = 9) THEN ('RASCUNHO') ELSE
			 (CASE WHEN (tf.situacao = 10) THEN ('Liquidado por Troca de Título') ELSE ('Situação Código ' || tf.situacao)END)END)END)END)END)END) as situacao,
	
	tf.id_titulo_pai,
	tf.id_titulo_filho,
	(tf.valor_principal + (tf.acrescimo_financeiro + tf.juros_cobranca + tf.multa_cobranca) - (tf.desconto_financeiro + tf.desconto_cobranca + tf.valor_taxa_administracao + tf.tarifa_transacao)) AS valor_receber,
	tf.valor_liquidado,
	tf.data_liquidacao,
	tf.natureza_titulo

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)

WHERE	tf.id_empresa IN (:IdEmpresaMultSlc)
AND	tf.data_emissao BETWEEN :DataInicialEmissao AND :DataFinalEmissao
AND     p.id_pessoa = :IdCliente
AND	tf.natureza_titulo = 201            -- VENDA A PRAZO
AND 	tf.tipo_titulo = 1		    -- Original
AND	((tf.situacao IN (1,9))             -- ABERTO OU RASCUNHO 
		OR (CASE WHEN (tf.situacao = 7) -- AGRUPADO 
				THEN (
					CASE WHEN ((select ttf.situacao from titulo_financeiro ttf where ttf.tipo_titulo = 3 and
					tf.id_titulo_filho = ttf.id_titulo_financeiro limit 1) in (1,9)) --ABERTO OU RASCUNHO
						THEN (true)
						ELSE (false)
					END)	
			END))
			
UNION ALL

--RESIDUAL ABERTO
SELECT	se.nome AS Empresa,
	p.codigo AS codigo_cliente,
	p.nome AS cliente,
	tf.data_emissao,
	tf.id_titulo_financeiro,
	tf.numero_titulo,
	(CASE WHEN (tf.tipo_titulo = 1) THEN ('Original') ELSE
	  (CASE WHEN (tf.tipo_titulo = 2) THEN ('RESIDUAL') ELSE 
		(CASE WHEN (tf.tipo_titulo = 3) THEN ('AGRUPAMENTO') ELSE 
		  (CASE WHEN (tf.tipo_titulo = 4) THEN ('DESMEMBRAMENTO') ELSE 
		    (CASE WHEN (tf.tipo_titulo = 5) THEN ('TROCA DE TÍTULO') ELSE ('Tipo Código ' || tf.tipo_titulo)END)END)END)END)END) as tipo_titulo,

	(CASE WHEN (tf.situacao = 1) THEN ('Aberto') ELSE
	  (CASE WHEN (tf.situacao = 2) THEN ('Liquidado') ELSE 
	    (CASE WHEN (tf.situacao = 3) THEN ('Liquidado Parcialmente') ELSE 
		 (CASE WHEN (tf.situacao = 7) THEN ('Agrupado') ELSE 
		   (CASE WHEN (tf.situacao = 9) THEN ('RASCUNHO') ELSE
			 (CASE WHEN (tf.situacao = 10) THEN ('Liquidado por Troca de Título') ELSE ('Situação Código ' || tf.situacao)END)END)END)END)END)END) as situacao,
	
	tf.id_titulo_pai,
	tf.id_titulo_filho,
	(tf.valor_principal + (tf.acrescimo_financeiro + tf.juros_cobranca + tf.multa_cobranca) - (tf.desconto_financeiro + tf.desconto_cobranca + tf.valor_taxa_administracao + tf.tarifa_transacao)) AS valor_receber,
	tf.valor_liquidado,
	tf.data_liquidacao,
	tf.natureza_titulo

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)

WHERE	tf.id_empresa IN (:IdEmpresaMultSlc)
AND	tf.data_emissao BETWEEN :DataInicialEmissao AND :DataFinalEmissao
AND     p.id_pessoa = :IdCliente
AND	tf.natureza_titulo = 201            -- VENDA A PRAZO
AND 	tf.tipo_titulo = 2		    -- Residual
AND	((tf.situacao IN (1,9))             -- ABERTO OU RASCUNHO 
		OR (CASE WHEN (tf.situacao = 7) -- AGRUPADO 
				THEN (
					CASE WHEN ((select ttf.situacao from titulo_financeiro ttf where ttf.tipo_titulo = 3 and
					tf.id_titulo_filho = ttf.id_titulo_financeiro limit 1) in (1,9)) --ABERTO OU RASCUNHO
						THEN (true)
						ELSE (false)
					END)	
			END))

UNION ALL

--AGRUPAMENTO AGRUPADO ABERTO
SELECT	se.nome AS Empresa,
	p.codigo AS codigo_cliente,
	p.nome AS cliente,
	tf.data_emissao,
	tf.id_titulo_financeiro,
	tf.numero_titulo,
	(CASE WHEN (tf.tipo_titulo = 1) THEN ('Original') ELSE
	  (CASE WHEN (tf.tipo_titulo = 2) THEN ('RESIDUAL') ELSE 
		(CASE WHEN (tf.tipo_titulo = 3) THEN ('AGRUPAMENTO') ELSE 
		  (CASE WHEN (tf.tipo_titulo = 4) THEN ('DESMEMBRAMENTO') ELSE 
		    (CASE WHEN (tf.tipo_titulo = 5) THEN ('TROCA DE TÍTULO') ELSE ('Tipo Código ' || tf.tipo_titulo)END)END)END)END)END) as tipo_titulo,

	(CASE WHEN (tf.situacao = 1) THEN ('Aberto') ELSE
	  (CASE WHEN (tf.situacao = 2) THEN ('Liquidado') ELSE 
	    (CASE WHEN (tf.situacao = 3) THEN ('Liquidado Parcialmente') ELSE 
		 (CASE WHEN (tf.situacao = 7) THEN ('Agrupado') ELSE 
		   (CASE WHEN (tf.situacao = 9) THEN ('RASCUNHO') ELSE
			 (CASE WHEN (tf.situacao = 10) THEN ('Liquidado por Troca de Título') ELSE ('Situação Código ' || tf.situacao)END)END)END)END)END)END) as situacao,
	
	tf.id_titulo_pai,
	tf.id_titulo_filho,
	(tf.valor_principal + (tf.acrescimo_financeiro + tf.juros_cobranca + tf.multa_cobranca) - (tf.desconto_financeiro + tf.desconto_cobranca + tf.valor_taxa_administracao + tf.tarifa_transacao)) AS valor_receber,
	tf.valor_liquidado,
	tf.data_liquidacao,
	tf.natureza_titulo

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)

WHERE	tf.id_empresa IN (:IdEmpresaMultSlc)
AND	tf.data_emissao BETWEEN :DataInicialEmissao AND :DataFinalEmissao
AND     p.id_pessoa = :IdCliente
AND	tf.natureza_titulo = 201            -- VENDA A PRAZO
AND 	tf.tipo_titulo = 3		    -- Agrupamento
AND	tf.situacao = 7
AND	((select ttf.situacao from titulo_financeiro ttf where ttf.tipo_titulo = 3 and
	    tf.id_titulo_filho = ttf.id_titulo_financeiro limit 1) in (1,9)) --ABERTO OU RASCUNHO
						
						
			
) AS r

ORDER BY r.empresa, r.cliente, r.id_titulo_financeiro
