WITH sub_venda_cf AS (
	SELECT DISTINCT v.id_venda_cf
	FROM	movimento_venda_terminal AS mvt
		INNER JOIN venda_cf AS v ON (v.id_movimento_venda_terminal = mvt.id_movimento_venda_terminal)
		INNER JOIN recebimento_venda_cf AS rv ON (rv.id_venda_cf = v.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 item_venda_cf AS iv ON (iv.id_venda_cf = v.id_venda_cf)
	WHERE	mvt.id_movimento_venda_terminal = (:Id)
	AND	v.cancelada = 'N'
	AND	iv.cancelado = 'N'
	AND	rv.cancelado = 'N')
SELECT r.empresa,
	r.data_movimento,
	r.numero_movimento,
	r.operador_caixa,
	r.data_cupom,
	r.numero_cupom,
	r.sequencia_item,
	r.codigo_cliente,
	r.nome_cliente,
	r.nome_atendente,
	r.aprovador_desconto, 
	r.denominacao_item,
	r.preco_unitario,
	r.preco_original,
	SUM(r.qtde_vendida) AS qtde_vendida,
	SUM(r.total_bruto) AS total_bruto,
	SUM(r.desconto_total) AS desconto_total,
	SUM(r.total_liquido) AS total_liquido
FROM (
	SELECT se.nome AS empresa,
		mvt.data_movimento,
		mvt.numero_movimento,
		su.nome AS operador_caixa,
		v.data_cupom,
		v.numero_cupom,
		iv.sequencia_item,
		pe.codigo AS codigo_cliente,
		pe.nome AS nome_cliente,
		pa.nome AS nome_atendente,
		ud.nome AS aprovador_desconto,
		it.denominacao AS denominacao_item,
		iv.preco AS preco_unitario,
		iv.quantidade AS qtde_vendida,
		iv.preco_original,
		ROUND((iv.quantidade * iv.preco_original), 2) as total_bruto,
		(ROUND((iv.quantidade * iv.preco_original), 2) - (iv.total_item 
			- (iv.desconto_rateado + iv.desconto_ajuste_rateado + iv.desconto_automatico_rateado + iv.desconto_fidelidade_rateado + iv.desconto_financeiro)
			+ (iv.acrescimo_rateado + iv.acrescimo_ajuste_rateado + iv.acrescimo_automatico_rateado + iv.acrescimo_financeiro))) AS desconto_total,
		(iv.total_item 
			- (iv.desconto_rateado + iv.desconto_ajuste_rateado + iv.desconto_automatico_rateado + iv.desconto_fidelidade_rateado + iv.desconto_financeiro)
			+ (iv.acrescimo_rateado + iv.acrescimo_ajuste_rateado + iv.acrescimo_automatico_rateado + iv.acrescimo_financeiro)) AS total_liquido
	FROM	movimento_venda_terminal AS mvt
		INNER JOIN venda_cf AS v ON (v.id_movimento_venda_terminal = mvt.id_movimento_venda_terminal)
		INNER JOIN sub_venda_cf AS svc ON (v.id_venda_cf = svc.id_venda_cf)
		INNER JOIN item_venda_cf AS iv ON (iv.id_venda_cf = v.id_venda_cf)
		INNER JOIN item AS it ON (it.id_item = iv.id_item)
		INNER JOIN pessoa AS pe ON (pe.id_pessoa = v.id_cliente)
		LEFT OUTER JOIN sis_usuario AS ud ON (ud.id_usuario = v.id_usuario_desconto_acrescimo)
		LEFT OUTER JOIN pessoa AS pa ON (pa.id_pessoa = iv.id_atendente)
		INNER JOIN sis_usuario AS su ON (su.id_usuario = mvt.id_usuario)
		INNER JOIN sis_empresa AS se ON (se.id_empresa = mvt.id_empresa)
	WHERE ((ROUND((iv.quantidade * iv.preco_original), 2) - (iv.total_item 
			- (iv.desconto_rateado + iv.desconto_ajuste_rateado + iv.desconto_automatico_rateado + iv.desconto_fidelidade_rateado + iv.desconto_financeiro)
			+ (iv.acrescimo_rateado + iv.acrescimo_ajuste_rateado + iv.acrescimo_automatico_rateado + iv.acrescimo_financeiro))) > 0) 
		AND iv.cancelado = 'N'
		AND v.cancelada = 'N') AS r
GROUP BY r.empresa,
	r.data_movimento,
	r.numero_movimento,
	r.operador_caixa,
	r.data_cupom,
	r.numero_cupom,
	r.sequencia_item,
	r.codigo_cliente,
	r.nome_cliente,
	r.nome_atendente,
	r.aprovador_desconto,
	r.denominacao_item,	
	r.preco_unitario,
	r.preco_original
ORDER BY r.empresa,
	r.nome_cliente,
	r.data_movimento, 
	r.numero_cupom,
	r.sequencia_item