-- Perdas e Sobras na Medição dos Tanques - Analítico
SELECT	
	r.id_local_estoque,
	r.tanque,
	r.data_movimento,
	r.estoque_abertura,
	r.quantidade_comprada,	
	r.quantidade_vendida,
	r.estoque_escritural,
	r.estoque_fechamento,
	r.variacao,
	--ROUND(CASE WHEN r.quantidade_vendida != 0 THEN r.variacao / r.quantidade_vendida * 100.00 ELSE 0.00 END, 4) AS percentual_variacao,
	r.custo_variacao
FROM
(SELECT	
	mtl.id_tanque as id_local_estoque,
	le.denominacao AS tanque,
	me.data_movimento,
	SUM((CASE WHEN me.id_tipo_movimento_estoque = 6 THEN me.quantidade ELSE 0.00 END) - (CASE WHEN me.id_tipo_movimento_estoque = 11 THEN me.quantidade ELSE 0.00 END)) AS variacao,
	SUM((CASE WHEN me.id_tipo_movimento_estoque = 6 THEN me.valor ELSE 0.00 END) - (CASE WHEN me.id_tipo_movimento_estoque = 11 THEN me.valor ELSE 0.00 END)) AS custo_variacao,
	SUM((CASE WHEN me.id_tipo_movimento_estoque = 7 THEN me.quantidade ELSE 0.00 END) - (CASE WHEN me.id_tipo_movimento_estoque = 3 THEN me.quantidade ELSE 0.00 END)) AS quantidade_vendida,
	SUM((CASE WHEN me.id_tipo_movimento_estoque = 2 THEN me.quantidade ELSE 0.00 END) - (CASE WHEN me.id_tipo_movimento_estoque = 8 THEN me.quantidade ELSE 0.00 END)) AS quantidade_comprada,
	(mtl.estoque_abertura) as estoque_abertura,
	(mtl.estoque_escritural) as estoque_escritural,
	(mtl.estoque_fisico_fechamento) as estoque_fechamento

FROM	movimento_estoque AS me
	INNER JOIN local_estoque AS le ON (le.id_local_estoque = me.id_local_estoque)
	INNER JOIN medicao_tanque_lmc as mtl on mtl.id_tanque = le.id_local_estoque
	INNER JOIN movimento_lmc as ml on mtl.id_movimento_lmc = ml.id_movimento_lmc
WHERE	me.id_empresa = :__ID_EMPRESA
AND	me.data_movimento BETWEEN :DataInicial AND :DataFinal

AND	le.tipo = 2
AND mtl.confirmado = 'S'
AND ml.data_movimento = me.data_movimento

GROUP BY mtl.id_tanque, le.denominacao, me.data_movimento, mtl.estoque_abertura,mtl.estoque_escritural,mtl.estoque_fisico_fechamento) AS r

ORDER BY r.tanque,
	r.data_movimento