Verificando Estoque
Olá pessoal!
Estou desenvolvendo um projeto da faculdade usando Delphi7, Firebird 2.5, e ReportBuilder para os relatórios.
o projeto é um sistema de gerenciamento de estoques de laboratórios acadêmicos para a própria faculdade, então nele eu vou ter o cadastro dos laboratórios, e dos produtos de cada laboratório. Estou com dificuldade na elaboração do SQL que faz o cálculo de estoque, pois tenho uma tabela de Entradas e uma de Saidas. Quando o usuário for incluir uma Saida, é preciso verificar o estoque para ver se tem aquele produto em estoque naquele laboratório, passando como parâmetros o código do produto e do laboratório que está sendo dado baixa. Então, eu teria que fazer esta verificação antes de salvar a Saida. Da mesma forma, preciso gerar um relatório que liste os produtos do laboratório e seu estoque.
Alguém teria uma sugestão de como posso fazer esta consulta? teria que fazer isto por uma view, procedure??
Caso minha explicação tenha ficado confusa, posso passar mais detalhes...
Estou desenvolvendo um projeto da faculdade usando Delphi7, Firebird 2.5, e ReportBuilder para os relatórios.
o projeto é um sistema de gerenciamento de estoques de laboratórios acadêmicos para a própria faculdade, então nele eu vou ter o cadastro dos laboratórios, e dos produtos de cada laboratório. Estou com dificuldade na elaboração do SQL que faz o cálculo de estoque, pois tenho uma tabela de Entradas e uma de Saidas. Quando o usuário for incluir uma Saida, é preciso verificar o estoque para ver se tem aquele produto em estoque naquele laboratório, passando como parâmetros o código do produto e do laboratório que está sendo dado baixa. Então, eu teria que fazer esta verificação antes de salvar a Saida. Da mesma forma, preciso gerar um relatório que liste os produtos do laboratório e seu estoque.
Alguém teria uma sugestão de como posso fazer esta consulta? teria que fazer isto por uma view, procedure??
Caso minha explicação tenha ficado confusa, posso passar mais detalhes...
Juliane Colling
Curtidas 0
Respostas
Juliane Colling
31/10/2012
Só para complementar, na consulta de estoque é preciso somar todas as entradas do produto naquele laboratório, e subtrair as saídas, para se ter o valor atual do estoque. Assim, se o valor de estoque for menor do que a quantidade informada no registro de saída, o sistema não deve permitir cadastrar esta saída, dando uma mensagem de alerta ao usuário.
GOSTEI 0
Claudia Nogueira
31/10/2012
SELECT SUM(CASE WHEN TIPO = 0 THEN QUANTIDADE ELSE QUANTIDADE * -1 END) AS ESTOQUE FROM iTEM_ENTRADA_SAIDA WHERE (ID_PRODUTO =:ID_PRODUTO)
Qual linguagem?
GOSTEI 0
Eduardo Richeli
31/10/2012
bem creio que uma Trigger em um evento insert resolve o problema
GOSTEI 0
Eduardo Richeli
31/10/2012
esqueci, quanto ao relatorio, você pode tanto usar SP quanto View, você tera que estudar a melhor forma conforme suas tabelas!
GOSTEI 0
Juliane Colling
31/10/2012
Muito obrigada pelas respostas, mas para facilitar essa questão eu criei uma tabela ESTOQUE. Quando for lançar uma entrada, o sistema verifica se já existe o registro do produto no laboratorio. Se sim, apenas atualiza a quantidade, se não, cria um novo registro de estoque com o codigo do produto, código do laboratório, e a quantidade. Ficou bem fácil, não acham? Muito obrigada pela ajuda de vocês :D
GOSTEI 0
Jonas Gama
31/10/2012
Vc pode fazer assim
Conecta
rsSQL.Open "Select Descricao From Estoque Where Descricao = '" & txtDescricao.Text & "'", cnSQL, adOpenKeyset, adLockOptimistic
If rsSQL.EOF = True Then
MsgBox "Produto não cadastrado", vbCritical, "Atenção"
Else
MsgBox "Produto cadastrado", vbCritical, "Atenção"
rsSQL.Close
cnSQL.Close
Set rsSQL = Nothing
Set cnSQL = Nothing
End If
Conecta
rsSQL.Open "Select Descricao From Estoque Where Descricao = '" & txtDescricao.Text & "'", cnSQL, adOpenKeyset, adLockOptimistic
If rsSQL.EOF = True Then
MsgBox "Produto não cadastrado", vbCritical, "Atenção"
Else
MsgBox "Produto cadastrado", vbCritical, "Atenção"
rsSQL.Close
cnSQL.Close
Set rsSQL = Nothing
Set cnSQL = Nothing
End If
GOSTEI 0