
SELECT	

	em.nome AS nome_empresa,
	pcl.codigo AS codigo_cliente,
	pcl.nome AS nome_cliente,
	vc.data_cupom,
	fr.denominacao as forma_recebimento,
	case when mc.nome is null then vc.motorista else mc.nome end  AS motorista,
	COALESCE((CASE 	WHEN tf.situacao = 7 THEN (SELECT tf2.situacao FROM titulo_financeiro AS tf2 WHERE tf2.id_titulo_financeiro = tf.id_titulo_filho)
			ELSE tf.situacao END
	), 1) AS situacao,
	(CASE WHEN vc.numero_cupom = NULL OR vc.numero_cupom = 0 THEN vc.numero_nota_nfc ELSE vc.numero_cupom END) AS numero_cupom,
	(CASE WHEN vc.tipo_venda = 1 THEN 'ECF'
		WHEN vc.tipo_venda = 2 THEN 'Manual (Nota Fiscal de Consumidor)'
		WHEN vc.tipo_venda = 3 THEN 'Nota Fiscal Eletrônica (Sem ECF)'
		WHEN vc.tipo_venda = 4 THEN 'ECF com Nota Fiscal de Consumidor emitida previamente'
		WHEN vc.tipo_venda = 5 THEN 'NFC-e'
		WHEN vc.tipo_venda = 6 THEN 'SAT CF-e'
		WHEN vc.tipo_venda = 7 THEN 'NF Manual de Abastecimento em Contingência'
		WHEN vc.tipo_venda = 8 THEN 'NF-e de Abastecimento em Contingência'
		WHEN vc.tipo_venda = 9 THEN 'NFC-e de Abastecimento em Contingência'
		WHEN vc.tipo_venda = 10 THEN 'Cupom Fiscal de Abastecimento em Contingência' END) AS tipo_venda,
	(select nfs.numero
		from cupom_nfs c
  		inner join nota_fiscal_saida nfs on nfs.id_nota_fiscal_saida = c.id_nota_fiscal_saida
  		where c.id_venda_cf = vc.id_venda_cf  and nfs.situacao = 1  limit 1
	)as numero_nfe,
	SUM(ROUND(((((itv.total_item - (itv.desconto_rateado + itv.desconto_ajuste_rateado + itv.desconto_automatico_rateado + itv.desconto_fidelidade_rateado) 
				+ (itv.acrescimo_rateado + itv.acrescimo_ajuste_rateado + itv.acrescimo_automatico_rateado)) / vc.total_venda) 
				* (rvcf.valor_recebido - rvcf.valor_troco )) /
				(itv.total_item - (itv.desconto_rateado + itv.desconto_ajuste_rateado + itv.desconto_automatico_rateado + itv.desconto_fidelidade_rateado) 
						+ (itv.acrescimo_rateado + itv.acrescimo_ajuste_rateado + itv.acrescimo_automatico_rateado)) * itv.quantidade), 3)) AS quantidade,
	SUM(ROUND((((itv.total_item - (itv.desconto_rateado + itv.desconto_ajuste_rateado + itv.desconto_automatico_rateado + itv.desconto_fidelidade_rateado) 
				+ (itv.acrescimo_rateado + itv.acrescimo_ajuste_rateado + itv.acrescimo_automatico_rateado)) / vc.total_venda)
				* (rvcf.valor_recebido - rvcf.valor_troco)), 2)) AS total_item
FROM	movimento_venda_terminal AS mv
	INNER JOIN venda_cf AS vc ON (vc.id_movimento_venda_terminal = mv.id_movimento_venda_terminal)
	    INNER JOIN item_venda_cf AS itv ON (itv.id_venda_cf = vc.id_venda_cf)
	INNER JOIN recebimento_venda_cf AS rvcf ON (rvcf.id_venda_cf = vc.id_venda_cf)
	LEFT JOIN parcela_recebimento_venda_cf AS prvcf ON (prvcf.id_recebimento_venda_cf = rvcf.id_recebimento_venda_cf)
	LEFT JOIN titulo_financeiro AS tf ON (prvcf.id_titulo_financeiro = tf.id_titulo_financeiro)
	INNER JOIN forma_recebimento AS fr ON (fr.id_forma_recebimento = rvcf.id_forma_recebimento)
    INNER JOIN tipo_recebimento AS tr ON (tr.id_tipo_recebimento = fr.id_tipo_recebimento)
	INNER JOIN sis_empresa AS em ON (em.id_empresa = mv.id_empresa)
	INNER JOIN pessoa AS pcl ON (pcl.id_pessoa = vc.id_cliente)
	LEFT OUTER JOIN motorista_cliente AS mc ON (mc.id_motorista_cliente = vc.id_motorista_cliente)
WHERE	mv.id_empresa IN (:IdEmpresaMultSlc)
AND tr.id_tipo_recebimento IN (:IdTipoRecebimentoMultEsc)
AND	mv.data_movimento BETWEEN :DataInicial AND :DataFinal
AND	DATE(vc.data_cupom) BETWEEN :DataInicial AND :DataFinal
AND	DATE(itv.data_venda) BETWEEN :DataInicial AND :DataFinal
AND	(:IdCredorDevedorNaoObrigatorio = -1 OR vc.id_cliente = :IdCredorDevedorNaoObrigatorio)
AND	vc.cancelada = 'N'
AND	itv.cancelado = 'N'
AND	rvcf.cancelado = 'N'
AND (COALESCE((CASE 	WHEN tf.situacao = 7 THEN (SELECT tf2.situacao FROM titulo_financeiro AS tf2 WHERE tf2.id_titulo_financeiro = tf.id_titulo_filho)
			ELSE tf.situacao END
	), 1) = :SituacaoTituloFinanceiroNao OR :SituacaoTituloFinanceiroNao = -1)
GROUP BY 	
	em.nome,
	pcl.codigo,
	pcl.nome,
	vc.data_cupom,
	fr.denominacao,
	tf.situacao,
	tf.id_titulo_filho,
	vc.numero_cupom,
	vc.numero_nota_nfc,
	vc.tipo_venda,
	vc.id_venda_cf,
	mc.nome,
	vc.motorista
ORDER BY 
	em.nome,
	numero_nfe,
	pcl.nome,
	vc.tipo_venda,
	vc.data_cupom,
	vc.numero_cupom