
SELECT	COALESCE(SUM(r.resultado_com_vendas), 0) AS resultado_com_vendas
FROM	(
SELECT	(iv.total_bruto - (iv.desconto + iv.desconto_automatico + iv.desconto_rateado + iv.desconto_ajuste_rateado + iv.desconto_automatico_rateado + iv.desconto_fidelidade_rateado)
		+ (iv.acrescimo + iv.acrescimo_automatico + iv.acrescimo_rateado + iv.acrescimo_ajuste_rateado + iv.acrescimo_automatico_rateado) - COALESCE(me.valor, 0)) AS resultado_com_vendas
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 item_venda_cf AS iv ON (iv.id_venda_cf = v.id_venda_cf)
	LEFT OUTER JOIN movimento_estoque AS me ON (me.id_movimento_estoque = iv.id_movimento_estoque)
WHERE	mvt.data_movimento BETWEEN DATE(DATE_TRUNC('MONTH', :Data)) AND :Data
AND	mvt.id_empresa IN (:IdEmpresaMultSlc)
AND	v.cancelada = 'N'
AND	iv.cancelado = 'N'

UNION ALL

SELECT	(infs.total_item + infs.icms_substituicao + infs.ipi + infs.rateio_frete + infs.rateio_seguro + infs.rateio_despesa_acessoria) AS total_venda
FROM	nota_fiscal_saida AS nfs
	INNER JOIN item_nfs AS infs ON (infs.id_nota_fiscal_saida = nfs.id_nota_fiscal_saida)
	INNER JOIN sis_referencia_registro AS rr ON (rr.id_chave_registro_a = infs.id_item_nfs AND rr.tipo_referencia = 'ref_1101_0411_movimento_estoque_nfs')
	INNER JOIN movimento_estoque AS me ON (me.id_movimento_estoque = rr.id_chave_registro_b)
	INNER JOIN item AS i ON (infs.id_item = i.id_item)
WHERE	nfs.emissao BETWEEN DATE(DATE_TRUNC('MONTH', :Data)) AND :Data
AND	nfs.id_empresa IN (:IdEmpresaMultSlc)
AND	nfs.situacao = 1 -- Confirmado
AND	i.tipo_item = 1
AND	EXISTS(SELECT 1 FROM cfop WHERE id_cfop = infs.id_cfop AND tipo_movimento_estoque != 4 AND gera_titulo_financeiro = 'S' AND tipo_cfop = 1)

UNION ALL

SELECT	(me.valor * -1) AS total_venda
FROM	nota_fiscal_saida AS nfs
	INNER JOIN item_nfs AS infs ON (infs.id_nota_fiscal_saida = nfs.id_nota_fiscal_saida)
	INNER JOIN sis_referencia_registro AS rr ON (rr.id_chave_registro_a = infs.id_item_nfs AND rr.tipo_referencia = 'ref_1101_0411_movimento_estoque_nfs')
	INNER JOIN movimento_estoque AS me ON (me.id_movimento_estoque = rr.id_chave_registro_b)
	INNER JOIN item AS i ON (infs.id_item = i.id_item)
WHERE	nfs.emissao BETWEEN DATE(DATE_TRUNC('MONTH', :Data)) AND :Data
AND	nfs.id_empresa IN (:IdEmpresaMultSlc)
AND	nfs.situacao = 1 -- Confirmado
AND	i.tipo_item = 1
AND	EXISTS(SELECT 1 FROM cfop WHERE tipo_movimento_estoque != 4 AND gera_titulo_financeiro = 'S' AND id_tipo_movimento_estoque = 7 AND id_cfop = infs.id_cfop)

UNION ALL

SELECT	(infs.total_item + infs.icms_substituicao + infs.ipi + infs.rateio_frete + infs.rateio_seguro + infs.rateio_despesa_acessoria) AS total_venda
FROM	nota_fiscal_saida AS nfs
	INNER JOIN item_nfs AS infs ON (infs.id_nota_fiscal_saida = nfs.id_nota_fiscal_saida)
	INNER JOIN sis_referencia_registro AS rr ON (rr.id_chave_registro_a = infs.id_item_nfs AND rr.tipo_referencia = 'ref_1101_0411_movimento_estoque_nfs')
	INNER JOIN movimento_estoque AS me ON (me.id_movimento_estoque = rr.id_chave_registro_b)
	INNER JOIN item AS i ON (infs.id_item = i.id_item)
WHERE	nfs.emissao BETWEEN DATE(DATE_TRUNC('MONTH', :Data)) AND :Data
AND	nfs.id_empresa IN (:IdEmpresaMultSlc)
AND	nfs.situacao = 1 -- Confirmado
AND	i.tipo_item = 2
AND	EXISTS(SELECT 1 FROM cfop WHERE id_cfop = infs.id_cfop AND tipo_movimento_estoque != 4 AND  gera_titulo_financeiro = 'S' AND tipo_cfop = 1)

UNION ALL

SELECT	(me.valor * -1) AS total_venda
FROM	nota_fiscal_saida AS nfs
	INNER JOIN item_nfs AS infs ON (infs.id_nota_fiscal_saida = nfs.id_nota_fiscal_saida)
	INNER JOIN sis_referencia_registro AS rr ON (rr.id_chave_registro_a = infs.id_item_nfs AND rr.tipo_referencia = 'ref_1101_0411_movimento_estoque_nfs')
	INNER JOIN movimento_estoque AS me ON (me.id_movimento_estoque = rr.id_chave_registro_b)
	INNER JOIN item AS i ON (infs.id_item = i.id_item)
WHERE	nfs.emissao BETWEEN DATE(DATE_TRUNC('MONTH', :Data)) AND :Data
AND	nfs.id_empresa IN (:IdEmpresaMultSlc)
AND	nfs.situacao = 1 -- Confirmado
AND	i.tipo_item = 2
AND	EXISTS(SELECT 1 FROM cfop WHERE id_cfop = infs.id_cfop AND gera_titulo_financeiro = 'S' AND tipo_movimento_estoque != 4)

UNION ALL

SELECT	(((infe.total_produto + infe.ipi + infe.icms_substituicao + infe.rateio_frete + infe.rateio_seguro + infe.rateio_despesa_acessoria) - me.valor) * -1) AS resultado_com_vendas_devolvida
FROM	nota_fiscal_entrada AS nfe
	INNER JOIN item_nfe AS infe ON (infe.id_nota_fiscal_entrada = nfe.id_nota_fiscal_entrada)
	INNER JOIN movimento_estoque AS me ON (me.id_movimento_estoque = infe.id_movimento_estoque)
WHERE	nfe.entrada BETWEEN DATE(DATE_TRUNC('MONTH', :Data)) AND :Data
AND	nfe.id_empresa IN (:IdEmpresaMultSlc)
AND	nfe.situacao = 1 -- Confirmado
AND	EXISTS(SELECT 1 FROM cfop WHERE id_cfop = infe.id_cfop AND tipo_movimento_estoque != 4 AND gera_titulo_financeiro = 'S' AND tipo_cfop = 2)
) AS r