Fórum Select de produtos devolvidos #448804
17/07/2013
0
Exemplo
codigo descrição qtd preco_unitario total
1 bala 2 R$ 1,00 R$ 2,00
2 doce 3 R$ 2,00 R$ 6,00
3 paçoca 4 R$ 0,50 R$ 2,00
se eu devolver 1 doce e uma bala o relatorio mostra:
codigo descrição qtd preco_unitario total
1 bala 1 R$ 1,00 R$ 1,00
1 doce 2 R$ 2,00 R$ 4,00
3 paçoca 4 R$ 0,50 R$ 2,00
Edgar Junior
Curtir tópico
+ 0Posts
17/07/2013
William
Qual é exatamente seu problema:
- Debitar as quantidades devolvidas?
- Construir a instrução SQL?
Gostei + 0
18/07/2013
Edgar Junior
Gostei + 0
18/07/2013
Joel Rodrigues
O primeiro relatório é um select simples na tabela de itens da venda, certo?
Quando você faz a devolução, apenas subtrai a quantidade devolvida do item da venda? Se sim, o mesmo select deve mostrar os dados atualizados.
Gostei + 0
18/07/2013
William
Ou você quer um relatório só de produtos devolvidos?
Gostei + 0
19/07/2013
Edgar Junior
select
cast(lpad(oi.codigo_produto,6,'0') as varchar(6)) as produto_codigo,
cast(p.descricao as varchar(60)) as produto_descricao,
cast(pm.descricao as varchar(50)) as produto_marca,
cast(coalesce(p.ref_produto_fornec,'') as varchar(20)) as produto_ref_fabricante,
cast(coalesce(oi.valor_total,0) / coalesce(oi.quantidade,0) as numeric(15,2)) as valor_unitario,
cast(m.sigla as varchar(5)) as unidade_medida_venda,
cast(oi.quantidade as numeric(15,3)) as qtd_vendida,
cast(coalesce(oi.quantidade_estornado,0) as numeric(15,3)) as qtd_devolvida,
cast(coalesce(oi.quantidade,0) - coalesce(oi.quantidade_estornado,0) as numeric(15,3)) as qtd_disponivel,
cast(sum((coalesce(oi.quantidade,0) - coalesce(oi.quantidade_estornado,0)) * (coalesce(oi.valor_total,0) / coalesce(oi.quantidade,0))) as numeric(15,2)) as valor_total
from devolucao_item di
join devolucao d on d.codigo = di.codigo_devolucao
left join orcamento o on o.codigo = d.codigo_orcamento
left join orcamento_item oi on oi.codigo_orcamento = o.codigo
left join produto p on (p.codigo = oi.codigo_produto)
left join produto_marca pm on (pm.codigo = p.cod_marca)
left join medidas m on (m.codigo = p.codigo_medida_venda)
where di.codigo_devolucao = :Codigo_Devolucao
and coalesce(d.codigo_orcamento,0) > 0
and coalesce(oi.quantidade,0) <> coalesce(oi.quantidade_estornado,0)
group by 1,2,3,4,5,6,7,8,9
union
select
cast(lpad(vi.codigo_produto,6,'0') as varchar(6)) as produto_codigo,
cast(p.descricao as varchar(60)) as produto_descricao,
cast(pm.descricao as varchar(50)) as produto_marca,
cast(coalesce(p.ref_produto_fornec,'') as varchar(20)) as produto_ref_fabricante,
cast(coalesce(vi.valor_total,0) / coalesce(vi.quantidade,0) as numeric(15,2)) as valor_unitario,
cast(m.sigla as varchar(5)) as unidade_medida_venda,
cast(vi.quantidade as numeric(15,3)) as qtd_vendida,
cast(coalesce(vi.devolucao_quantidade,0) as numeric(15,3)) as qtd_devolvida,
cast(coalesce(vi.quantidade,0) - coalesce(vi.devolucao_quantidade,0) as numeric(15,3)) as qtd_disponivel,
cast(sum((coalesce(vi.quantidade,0) - coalesce(vi.devolucao_quantidade,0)) * (coalesce(vi.valor_total,0) / coalesce(vi.quantidade,0))) as numeric(15,2)) as valor_total
from devolucao_item di
join devolucao d on d.codigo = di.codigo_devolucao
left join venda v on v.codigo = d.codigo_venda
left join venda_item vi on vi.codigo_venda = v.codigo
left join produto p on (p.codigo = vi.codigo_produto)
left join produto_marca pm on (pm.codigo = p.cod_marca)
left join medidas m on (m.codigo = p.codigo_medida_venda)
where di.codigo_devolucao = :Codigo_Devolucao
and coalesce(d.codigo_venda,0) > 0
and coalesce(vi.quantidade,0) <> coalesce(vi.devolucao_quantidade,0)
group by 1,2,3,4,5,6,7,8,9
Gostei + 0
19/07/2013
Edgar Junior
Gostei + 0
19/07/2013
Joel Rodrigues
Estou concluindo o tópico.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)