SELECT	se.nome AS nome_empresa,
	--mvt.numero_movimento,
	ci.denominacao AS categoria_produto,
	i.codigo AS cod_produto,
	i.denominacao AS denominacao_produto,
	SUM(ivc.quantidade) AS quantidade,
	um.sigla AS unidade,
	SUM(ivc.total_bruto) AS total_bruto,
	SUM(ivc.desconto + ivc.desconto_automatico + ivc.desconto_rateado + ivc.desconto_ajuste_rateado + ivc.desconto_automatico_rateado + ivc.desconto_fidelidade_rateado) AS desconto,
	SUM(ivc.acrescimo + ivc.acrescimo_automatico + ivc.acrescimo_rateado + ivc.acrescimo_ajuste_rateado + ivc.acrescimo_automatico_rateado) AS acrescimo,
	SUM(me.valor) AS custo
FROM	movimento_venda_terminal AS mvt
	INNER JOIN venda_cf AS vc ON (vc.id_movimento_venda_terminal = mvt.id_movimento_venda_terminal)
	INNER JOIN item_venda_cf AS ivc ON (ivc.id_venda_cf = vc.id_venda_cf)
	LEFT OUTER JOIN movimento_estoque AS me ON (me.id_movimento_estoque = ivc.id_movimento_estoque)
	INNER JOIN item AS i ON (ivc.id_item = i.id_item)
	INNER JOIN categoria_item AS ci ON (i.id_categoria_item = ci.id_categoria_item)
	INNER JOIN unidade_medida AS um ON (i.id_unidade_medida = um.id_unidade_medida)
	INNER JOIN sis_empresa AS se ON (se.id_empresa = mvt.id_empresa)
WHERE	mvt.id_empresa = :IdEmpresaObrigatorio
AND ((mvt.data_movimento = :DataInicial1oPeriodo AND mvt.numero_movimento in (:ListaNumeroMovimento1))
OR (mvt.data_movimento > :DataInicial1oPeriodo AND mvt.data_movimento < :DataFinal2oPeriodo)   
OR (mvt.data_movimento = (:DataFinal2oPeriodo) AND mvt.numero_movimento in (:ListaNumeroMovimento2)))

AND	(ivc.cancelado = 'N' AND vc.cancelada = 'N')
GROUP BY se.nome,
	--mvt.numero_movimento,
	ci.denominacao,
	i.codigo,
	i.denominacao,
	um.sigla
ORDER BY se.nome,
	--mvt.numero_movimento,
	ci.denominacao,
	i.denominacao