Sistema de gestão ELIGO
Relatório de vendas por tipo de produto e valor de PIS e COFINS
ELIGO.FAQ-6720
SELECT tprod.tipo_produto, query.ncm, sum(query.valor) as total, sum(query.valor * query.pis / 100::double precision) AS valor_pis, sum(query.valor * query.cofins / 100::double precision) AS valor_cofins
FROM (
SELECT
p.tipo_produto_id
, ncm.ncm AS ncm
, cf.estabelecimento_id
, to_char(cf.data_emissao, 'YYYY-MM-DD'::text) AS data_emissao
, sum( icf.quantidade * icf.valor_unitario ) AS valor
, ( SELECT rt.aliquota FROM regras_tributos rt JOIN tributos t ON t.id = rt.tributo_id WHERE t.sigla = 'PIS'::text AND (rt.tipo_produto = tp.tipo_produto OR rt.tipo_produto = '*'::text) AND rt.cfop = '*'::text ORDER BY rt.prioridade LIMIT 1) AS pis
, ( SELECT rt.aliquota FROM regras_tributos rt JOIN tributos t ON t.id = rt.tributo_id WHERE t.sigla = 'COFINS'::text AND (rt.tipo_produto = tp.tipo_produto OR rt.tipo_produto = '*'::text) AND rt.cfop = '*'::text ORDER BY rt.prioridade LIMIT 1) AS cofins
FROM itens_doc_entradas_saidas icf
JOIN doc_entradas_saidas cf ON cf.id = icf.documento_id
JOIN produtos p ON icf.produto_id = p.id
JOIN tipos_produtos tp ON tp.id = p.tipo_produto_id
join cfops cfop on cfop.id = icf.cfop_id
left join classificacoes_ncm ncm on tp.ncm_id = ncm.id
WHERE cf.situacao_documento not in ('C','M','X' ) and cf.tipo_emitente = 'P' and cf.tipo_operacao='S' and ((cfop.cfop like '5.102' or cfop.cfop like '5.403' or cfop.cfop like '5.405' ) or (cfop.cfop like '6.1%' or cfop.cfop like '6.40%' ))
GROUP BY p.tipo_produto_id, ncm.ncm, tp.tipo_produto, cf.estabelecimento_id, to_char(cf.data_emissao, 'YYYY-MM-DD'::text)
union
SELECT p.tipo_produto_id, ncm.ncm AS ncm, ec.estabelecimento_id, to_char(cf.data_emissao, 'YYYY-MM-DD'::text) AS data_emissao, sum(
CASE
WHEN cf.valor_desconto_acrescimo <> 0::double precision THEN icf.valor_total + icf.valor_total / (cf.valor_total_mercadorias - cf.valor_desconto_acrescimo) * cf.valor_desconto_acrescimo
ELSE icf.valor_total
END) AS valor, ( SELECT rt.aliquota
FROM regras_tributos rt
JOIN tributos t ON t.id = rt.tributo_id
WHERE t.sigla = 'PIS'::text AND (rt.tipo_produto = tp.tipo_produto OR rt.tipo_produto = '*'::text) AND rt.cfop = '*'::text
ORDER BY rt.prioridade
LIMIT 1) AS pis, ( SELECT rt.aliquota
FROM regras_tributos rt
JOIN tributos t ON t.id = rt.tributo_id
WHERE t.sigla = 'COFINS'::text AND (rt.tipo_produto = tp.tipo_produto OR rt.tipo_produto = '*'::text) AND rt.cfop = '*'::text
ORDER BY rt.prioridade
LIMIT 1) AS cofins
FROM itens_cupons_fiscais icf
JOIN cupons_fiscais cf ON cf.id = icf.cupom_fiscal_id
JOIN produtos p ON icf.produto_id = p.id
JOIN tipos_produtos tp ON tp.id = p.tipo_produto_id
JOIN ecfs_estabelecimentos ec ON ec.id = cf.ecf_estabelecimento_id
left join classificacoes_ncm ncm on tp.ncm_id = ncm.id
WHERE icf.situacao::text = 'N'::text AND cf.situacao::text = 'E'::text
GROUP BY p.tipo_produto_id, ncm.ncm, tp.tipo_produto, ec.estabelecimento_id, to_char(cf.data_emissao, 'YYYY-MM-DD'::text)
) query
inner join tipos_produtos tprod on tprod.id = query.tipo_produto_id
where estabelecimento_id != 1333 and data_emissao between '2011-06-01' and '2011-06-30'
group by tprod.tipo_produto, ncm
order by total;