-- Extrato de Vendas por Cliente
SELECT	e.nome AS empresa,
	p.codigo,
	p.nome,
	
	CASE WHEN v.id_veiculo_cliente IS NULL THEN 
	(
		CASE WHEN v.placa = '' OR v.placa IS NULL 
			THEN 'Não informada' 
			ELSE 
				UPPER(REPLACE(REPLACE(TRIM(v.placa), '-', ''), ' ', '')) END
	)ELSE 
		UPPER(REPLACE(REPLACE(TRIM(vc.placa), '-', ''), ' ', '') || ' - ' || vc.denominacao) END AS placa,
	
	mv.data_movimento,
	v.numero_cupom,
	it.codigo AS codigo_item,
	it.denominacao AS denominacao_item,
	ivc.preco,
	SUM(ivc.quantidade) AS quantidade,
	SUM(ivc.total_item) AS total_item,
	v.quilometragem,
	CASE WHEN mc.nome = '' OR mc.nome IS NULL THEN v.motorista ELSE mc.nome END AS motorista
FROM	movimento_venda_terminal AS mv
	INNER JOIN venda_cf AS v ON (v.id_movimento_venda_terminal = mv.id_movimento_venda_terminal)
	INNER JOIN item_venda_cf AS ivc ON (ivc.id_venda_cf = v.id_venda_cf)
	INNER JOIN item AS it ON (it.id_item = ivc.id_item)
	INNER JOIN pessoa AS p ON (p.id_pessoa = v.id_cliente)
	INNER JOIN cliente AS cli ON (cli.id_cliente = p.id_pessoa)
	INNER JOIN sis_empresa AS e ON (e.id_empresa = mv.id_empresa)
	LEFT OUTER JOIN veiculo_cliente AS vc ON (vc.id_veiculo_cliente = v.id_veiculo_cliente)
	LEFT OUTER JOIN motorista_cliente AS mc ON (mc.id_motorista_cliente = v.id_motorista_cliente)
WHERE	mv.id_empresa IN (:IdEmpresaMultSlc)
AND	mv.data_movimento BETWEEN :DataInicial AND :DataFinal
AND	(:IdClienteNaoObrigatorio = -1 OR v.id_cliente = :IdClienteNaoObrigatorio)
AND (:IdClasseCliente = -1 OR cli.id_classe_cliente  = :IdClasseCliente)
AND	v.cancelada = 'N'
AND	ivc.cancelado = 'N'
GROUP BY 1,2,3,4,5,6,7,8,9,12,13
ORDER BY e.nome,
	p.codigo,
	p.nome,
	placa,
	mv.data_movimento,
	it.denominacao