Select de produtos devolvidos
Gostaria de saber como fazer para selecionar os produtos de uma venda após a devolução de algum produto?
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
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
Curtidas 0
Respostas
William
17/07/2013
Olá Edgar, entendi a sua necessidade do relatório, mas não entendi a sua dúvida !!!
Qual é exatamente seu problema:
- Debitar as quantidades devolvidas?
- Construir a instrução SQL?
Qual é exatamente seu problema:
- Debitar as quantidades devolvidas?
- Construir a instrução SQL?
GOSTEI 0
Edgar Junior
17/07/2013
Construir a instrução SQL...
GOSTEI 0
Joel Rodrigues
17/07/2013
Para lhe ajudar precisamos saber como você trata essa devolução.
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.
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
William
17/07/2013
Edgar se você já debitou essa quantidade no banco, teoricamente seria só executar a mesma instrução SQL da primeira consulta.
Ou você quer um relatório só de produtos devolvidos?
Ou você quer um relatório só de produtos devolvidos?
GOSTEI 0
Edgar Junior
17/07/2013
Consegui fazer dessa maneira
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
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
Edgar Junior
17/07/2013
Obrigado pelo interesse.
GOSTEI 0
Joel Rodrigues
17/07/2013
Valeu então por compartilhar a solução.
Estou concluindo o tópico.
Estou concluindo o tópico.
GOSTEI 0