--Demonstrativo do Movimento de Venda
--CartaoCredito
SELECT	p.codigo AS codigo_administradora,
	p.nome AS nome_administradora,
	vc.numero_cupom,
	tf.data_vencimento,
	tf.valor_titulo,
	tf.numero_parcela,
	rt.denominacao AS denominacao_rede_tef,
	bt.denominacao AS denominacao_bandeira_tef,
	'Recebimento de Venda' AS tipo_movimento
FROM recebimento_venda_cf AS rvc
	INNER JOIN venda_cf AS vc ON (rvc.id_venda_cf = vc.id_venda_cf)
	INNER JOIN movimento_venda_terminal AS mvt ON (vc.id_movimento_venda_terminal = mvt.id_movimento_venda_terminal)
	INNER JOIN parcela_recebimento_venda_cf AS prvc ON (prvc.id_recebimento_venda_cf = rvc.id_recebimento_venda_cf)
	INNER JOIN titulo_financeiro AS tf ON (tf.id_titulo_financeiro = prvc.id_titulo_financeiro)
	LEFT JOIN  rede_tef AS rt ON (rt.id_rede_tef = tf.id_rede_tef)
	LEFT JOIN  bandeira_tef AS bt ON (bt.id_bandeira_tef = tf.id_bandeira_tef)
	INNER JOIN pessoa AS p ON (p.id_pessoa = tf.id_credor_devedor)
WHERE	mvt.id_movimento_venda_terminal = :Id
AND	tf.natureza_titulo = 202 /*Cartão de Crédito*/
AND	rvc.cancelado = 'N'
AND	vc.cancelada = 'N'

UNION ALL

SELECT	p.codigo AS codigo_administradora,
	p.nome AS nome_administradora,
	mnt.numero_comprovante AS numero_cupom,
	tf.data_vencimento,
	tf.valor_titulo,
	tf.numero_parcela,
	rt.denominacao AS denominacao_rede_tef,
	bt.denominacao AS denominacao_bandeira_tef,
	lv.titulo AS tipo_movimento
FROM	movimento_numerario_terminal AS mnt
	INNER JOIN forma_recebimento AS fr ON (fr.id_forma_recebimento = mnt.id_forma_recebimento)
	INNER JOIN sis_referencia_registro AS srr ON (srr.id_chave_registro_a = mnt.id_movimento_numerario)
	INNER JOIN titulo_financeiro AS tf ON (tf.id_titulo_financeiro = srr.id_chave_registro_b)
	LEFT JOIN  rede_tef AS rt ON (rt.id_rede_tef = tf.id_rede_tef)
	LEFT JOIN  bandeira_tef AS bt ON (bt.id_bandeira_tef = tf.id_bandeira_tef)
	INNER JOIN pessoa AS p ON (p.id_pessoa = tf.id_credor_devedor)
	INNER JOIN sis_opcao_lista_valor AS lv on (lv.id = mnt.tipo_movimento AND lv.id_lista_valor = 'BFDDF9F1E7A448FB8D15E1C5855BB7B8')
WHERE 	mnt.id_movimento_venda_terminal = :Id
AND 	mnt.tipo_movimento IN (4) /*Adiantamento de Clientes*/
AND 	fr.id_tipo_recebimento = 4 /*Cartão de Crédito*/
AND 	mnt.cancelado_original = 'N'
AND 	mnt.cancelado = 'N'
AND 	srr.tipo_referencia = 'ref_0826_0606_adiantamento_cliente'

UNION ALL

SELECT	p.codigo AS codigo_administradora,
	p.nome AS nome_administradora,
	mnt.numero_comprovante AS numero_cupom,
	tf.data_vencimento,
	tf.valor_titulo,
	tf.numero_parcela,
	rt.denominacao AS denominacao_rede_tef,
	bt.denominacao AS denominacao_bandeira_tef,
	lv.titulo AS tipo_movimento
FROM	movimento_numerario_terminal AS mnt
	INNER JOIN forma_recebimento AS fr ON (fr.id_forma_recebimento = mnt.id_forma_recebimento)
	INNER JOIN titulo_financeiro AS tf ON (tf.id_titulo_financeiro = mnt.id_titulo_financeiro)
	LEFT JOIN  rede_tef AS rt ON (rt.id_rede_tef = tf.id_rede_tef)
	LEFT JOIN  bandeira_tef AS bt ON (bt.id_bandeira_tef = tf.id_bandeira_tef)
	INNER JOIN pessoa AS p ON (p.id_pessoa = tf.id_credor_devedor)
	INNER JOIN sis_opcao_lista_valor AS lv on (lv.id = mnt.tipo_movimento AND lv.id_lista_valor = 'BFDDF9F1E7A448FB8D15E1C5855BB7B8')
WHERE 	mnt.id_movimento_venda_terminal = :Id
AND 	mnt.tipo_movimento = 5 /*Recebimento de Título*/
AND 	fr.id_tipo_recebimento = 4 /*Cartão de Crédito*/
AND 	mnt.cancelado_original = 'N'
AND 	mnt.cancelado = 'N'

UNION ALL

SELECT	p.codigo AS codigo_administradora,
	p.nome AS nome_administradora,
	tn.numero_cnf AS numero_cupom,
	CAST(NULL AS DATE) AS data_vencimento,
	SUM(ltn.valor_troca),
	SUM(ltn.quantidade_parcela) AS numero_parcela,
	rt.denominacao AS denominacao_rede_tef,
	bt.denominacao AS denominacao_bandeira_tef,
	'Troca de Numerário' AS tipo_movimento
FROM	lancamento_troca_numerario AS ltn
	INNER JOIN troca_numerario AS tn ON(ltn.id_troca_numerario = tn.id_troca_numerario)
	INNER JOIN forma_recebimento AS fr ON (fr.id_forma_recebimento = ltn.id_forma_recebimento)
	LEFT JOIN  rede_tef AS rt ON (rt.id_rede_tef = fr.id_rede_tef)
	LEFT JOIN  bandeira_tef AS bt ON (bt.id_bandeira_tef = fr.id_bandeira_tef)
	INNER JOIN pessoa AS p ON (p.id_pessoa = fr.id_pessoa_financeiro)
WHERE 	tn.id_movimento_venda_terminal = :Id
AND 	ltn.recebimento_pagamento = 1 /*Recebimento de Título*/
AND 	fr.id_tipo_recebimento = 4 /*Cartão de Débito*/
AND 	tn.cancelada = 'N'
AND 	tn.cancelada_original = 'N'
AND 	ltn.cancelado = 'N'
GROUP BY
	codigo_administradora,
	nome_administradora,
	numero_cupom,
	data_vencimento,
	denominacao_rede_tef,
	denominacao_bandeira_tef
ORDER BY
	nome_administradora,
	numero_cupom,
	tipo_movimento;