-- Vendas de Combustíveis por Forma de Recebimento
-- Resumo
SELECT	r.empresa,
	r.tipo_recebimento,
	SUM(r.recebimento_proporcional) AS total_reais,
	SUM(r.quantidade) AS quantidade
FROM	(
	SELECT se.nome AS empresa,
		i.codigo AS codigo_item,
		i.denominacao AS item,
		tr.denominacao AS tipo_recebimento,
		CAST(((ivcf.total_item - ivcf.desconto_rateado + ivcf.acrescimo_rateado - ivcf.desconto_ajuste_rateado + ivcf.acrescimo_ajuste_rateado - ivcf.desconto_automatico_rateado + ivcf.acrescimo_automatico_rateado - ivcf.desconto_fidelidade_rateado)
			/ vcf.total_venda * (rv.valor_recebido - rv.valor_troco - COALESCE(ct.valor, 0))) AS DECIMAL(12,4)) AS recebimento_proporcional,
		ROUND((ivcf.total_bruto / vcf.total_venda * (rv.valor_recebido - rv.valor_troco - COALESCE(ct.valor, 0)) / ivcf.preco), 3) AS quantidade
	FROM	movimento_venda_terminal AS mvt
		INNER JOIN venda_cf AS vcf ON (vcf.id_movimento_venda_terminal = mvt.id_movimento_venda_terminal)
		INNER JOIN item_venda_cf AS ivcf ON (ivcf.id_venda_cf = vcf.id_venda_cf)
		INNER JOIN item AS i ON (i.id_item = ivcf.id_item)
		INNER JOIN recebimento_venda_cf AS rv ON (rv.id_venda_cf = vcf.id_venda_cf)
		INNER JOIN forma_recebimento AS fr ON (fr.id_forma_recebimento = rv.id_forma_recebimento)
		INNER JOIN tipo_recebimento AS tr ON (tr.id_tipo_recebimento = fr.id_tipo_recebimento)
		INNER JOIN sis_empresa AS se ON (se.id_empresa = mvt.id_empresa)
		LEFT OUTER JOIN cheque_emitido AS ct ON (ct.id_venda_cf = vcf.id_venda_cf AND ct.tipo_cheque = 1)
	WHERE  	mvt.data_movimento BETWEEN :DataInicial AND :DataFinal
	AND	DATE(vcf.data_cupom) BETWEEN :DataInicial AND :DataFinal
	AND	DATE(ivcf.data_venda) BETWEEN :DataInicial AND :DataFinal
	AND	mvt.id_empresa = :IdEmpresaObrigatorio
	AND	(:IdCombustivel = -1 OR ivcf.id_item = :IdCombustivel)
	AND	vcf.cancelada = 'N'
	AND	ivcf.cancelado = 'N'
	AND	rv.cancelado = 'N'
	AND	ivcf.id_abastecimento IS NOT NULL ) AS r
GROUP BY r.empresa,
	r.tipo_recebimento
ORDER BY quantidade DESC