AJUDA COM LÓGICA PARA ESTOQUE
Boa noite pessoal!
To numa dúvida danada a respeito de um controle de estoque que eu tô fazendo...
Seria melhor na hora de eu visualizar as quantidades em estoque eu somar as entradas e subtrair as saÃdas toda hora?
Ou na hora que entrar eu ir no cadastro somar e na hora de sair eu ir no cadastro e subtrair?
Pensei no caso de lentidão do sistema no primeiro item.
Alguém tem outra idéia?
To numa dúvida danada a respeito de um controle de estoque que eu tô fazendo...
Seria melhor na hora de eu visualizar as quantidades em estoque eu somar as entradas e subtrair as saÃdas toda hora?
Ou na hora que entrar eu ir no cadastro somar e na hora de sair eu ir no cadastro e subtrair?
Pensei no caso de lentidão do sistema no primeiro item.
Alguém tem outra idéia?
Em primeiro lugar, se você não usar um banco de dados decente, nada disso tem sequer sentido de se pensar, é sofrer por antecedência. Se você usa um banco de dados como SQL Server, MySQL ou Oracle, então sua dúvida é simples: Subtrair e somar entradas sempre. [Ô]Quantidade em estoque[Ô] não são dados que se referem à produto, mas sim à justamente à entradas e saÃdas, portanto é a única maneira de garantir uma confiabilidade nos dados. Além disso, estoques podem ter regimes. é, pode parar de rir, existe regime de estoque, como o PEPS(Primeiro à Entrar, Primeiro à Sair) e novamente, à única maneira de controlar isso é somando e subtraindo entradas e saÃdas. Quanto à sua preocupação quanto à desempenho, aà entra o que disse sobre o uso de um bom banco de dados. Com ele, você pode fazer rotinas especializadas em desempenho, como Views e Indexadores de dados, que influem no desempenho de forma assombrosa.
Boa Kerplunk, então, eu uso o MySQL, então acho que a segunda opção será a melhor..
Tava em dúvida somente se seria isso mesmo antes de montar o banco e tals..
Mas acho que até seria a forma mais simples.
Sobre o desempenho eu digo pois eu uso banco hospedado online e gerando várias consultas na rotina [Ô]acredito eu[Ô] geraria uma certa lentidão. Mas aà tem as ferramentas do próprio banco que poderá fazer o trabalho e retornar os dados.
Obs: a primeira opção de eu ter no cadastro de materiais o campo qtdeestoque por exemplo R adicionar na entrada e subtrair na saÃda seria, haveria alguma forma de dar errado? Visto que irei realizando a manutenção a cada movimentação.
Tava em dúvida somente se seria isso mesmo antes de montar o banco e tals..
Mas acho que até seria a forma mais simples.
Sobre o desempenho eu digo pois eu uso banco hospedado online e gerando várias consultas na rotina [Ô]acredito eu[Ô] geraria uma certa lentidão. Mas aà tem as ferramentas do próprio banco que poderá fazer o trabalho e retornar os dados.
Obs: a primeira opção de eu ter no cadastro de materiais o campo qtdeestoque por exemplo R adicionar na entrada e subtrair na saÃda seria, haveria alguma forma de dar errado? Visto que irei realizando a manutenção a cada movimentação.
São dois pontos então:
Você usa o banco de dados hospedado em um host remoto e você parece estar desenvolvendo o sistema de estoque [Ô]do zero[Ô]. Por isso, o que seria correto, pensando em futuro, seria você desenvolver uma WebAPI e seu sistema já em .NET, consumindo essa API. A diferença de performance será facilmente notada nesse cenário, pois a conexão remotamente com driver ODBC(o driver que está disponÃvel para VB/VBA), é um tanto lenta, apesar de funcionar
Sua pergunta: Como ter um campo [Ô]qtdEstoque[Ô] poderia dar problema? Simples, pense em todas as operações que podem ser feitas em um estoque. Elas incluem saÃdas programadas, reservas, quantidade mÃnima e muitas outras, onde a quantidade pode não ser subtraÃda no mesmo momento da operação. Além disso, o uso de algo assim por múltiplos usuários é certeza de ter problema, pois um usuário pode fazer saÃda do produto no mesmo momento de outro, forçando você à fazer várias [Ô]manobras[Ô](leia-se gambiarras) para contornar esse problema de caso à caso. Então para já matar os problemas antes de eles aparecerem, usa-se a maneira correta e por incrÃvel que pareça, mais simples, além de muito mais versátil. Veja também casos de clientes que possuem múltiplos estoques. Então teria o produto [Ô]parafuso[Ô] no estoque em Pratânia. teriam 100 unidades, em Botucatu, mais 500. Mas você não pode ter 600 na qtdEstoque, pois os tais parafusos estão em locais diferentes. Não preciso explicar muito para você entender os problemas que isso geraria se essa quantidade fosse armazenada em um só campo e não por soma de entrada e saÃda. Com essas entradas e saÃdas, se pode saber quantos estão em cada um dos estoques, tanto em Pratânia quanto em Botucatu e vender normalmente, fazendo o trâmite internamente de transferir os parafusos de um estoque para o outro ou simplesmente fazendo a remessa do estoque em Botucatu, que teria a quantidade necessária para atender as vendas.
Você usa o banco de dados hospedado em um host remoto e você parece estar desenvolvendo o sistema de estoque [Ô]do zero[Ô]. Por isso, o que seria correto, pensando em futuro, seria você desenvolver uma WebAPI e seu sistema já em .NET, consumindo essa API. A diferença de performance será facilmente notada nesse cenário, pois a conexão remotamente com driver ODBC(o driver que está disponÃvel para VB/VBA), é um tanto lenta, apesar de funcionar
Sua pergunta: Como ter um campo [Ô]qtdEstoque[Ô] poderia dar problema? Simples, pense em todas as operações que podem ser feitas em um estoque. Elas incluem saÃdas programadas, reservas, quantidade mÃnima e muitas outras, onde a quantidade pode não ser subtraÃda no mesmo momento da operação. Além disso, o uso de algo assim por múltiplos usuários é certeza de ter problema, pois um usuário pode fazer saÃda do produto no mesmo momento de outro, forçando você à fazer várias [Ô]manobras[Ô](leia-se gambiarras) para contornar esse problema de caso à caso. Então para já matar os problemas antes de eles aparecerem, usa-se a maneira correta e por incrÃvel que pareça, mais simples, além de muito mais versátil. Veja também casos de clientes que possuem múltiplos estoques. Então teria o produto [Ô]parafuso[Ô] no estoque em Pratânia. teriam 100 unidades, em Botucatu, mais 500. Mas você não pode ter 600 na qtdEstoque, pois os tais parafusos estão em locais diferentes. Não preciso explicar muito para você entender os problemas que isso geraria se essa quantidade fosse armazenada em um só campo e não por soma de entrada e saÃda. Com essas entradas e saÃdas, se pode saber quantos estão em cada um dos estoques, tanto em Pratânia quanto em Botucatu e vender normalmente, fazendo o trâmite internamente de transferir os parafusos de um estoque para o outro ou simplesmente fazendo a remessa do estoque em Botucatu, que teria a quantidade necessária para atender as vendas.
Bom dia!
Tudo bem, acho que deu pra ter uma boa noção.
Outra dúvida, seria interessante deixar o usuário dar uma saÃda no item mesmo não constando em estoque e posteriormente mostrar que o saldo está negativo ou simplesmente se não tiver bloquear? Eu digo pela praticidade, pois ele tá dando uma saÃda e falta no estoque, ou ele continua e depois corrige o saldo negativo ou volta para a tela de entrada e da uma entrada para o saldo ficar positivo.
Sim, estou desenvolvendo o modulo de estoque do zero, eu já tenho o sistema pronto, mas estou implementando algumas funções úteis e nesse momento vou pegar pra fazer o estoque.
Sobre a lentidão, eu notei ele demora um pouco dependendo da conexão, mas somente pra conectar, após isso ele segue a vida tranquilo.
Primeiro eu sempre conectava ao abrir o form e deixava aberto, mas quando o usuário deixava a tela aberta por um tempo ele dava erro.
Nesse caso faço a conexão, pego os dados e fecho, resolveu o problema.
A, lembrando que se nada disso der certo [Ô]sobre a lentidão[Ô] ainda tenho a possibilidade de rodar local em um servidor e conectar por webservice.
Mas, em todo caso, obrigado pelas respostas.
Muito boa sua lógica e simples.
Grande abraço!!!
Tudo bem, acho que deu pra ter uma boa noção.
Outra dúvida, seria interessante deixar o usuário dar uma saÃda no item mesmo não constando em estoque e posteriormente mostrar que o saldo está negativo ou simplesmente se não tiver bloquear? Eu digo pela praticidade, pois ele tá dando uma saÃda e falta no estoque, ou ele continua e depois corrige o saldo negativo ou volta para a tela de entrada e da uma entrada para o saldo ficar positivo.
Sim, estou desenvolvendo o modulo de estoque do zero, eu já tenho o sistema pronto, mas estou implementando algumas funções úteis e nesse momento vou pegar pra fazer o estoque.
Sobre a lentidão, eu notei ele demora um pouco dependendo da conexão, mas somente pra conectar, após isso ele segue a vida tranquilo.
Primeiro eu sempre conectava ao abrir o form e deixava aberto, mas quando o usuário deixava a tela aberta por um tempo ele dava erro.
Nesse caso faço a conexão, pego os dados e fecho, resolveu o problema.
A, lembrando que se nada disso der certo [Ô]sobre a lentidão[Ô] ainda tenho a possibilidade de rodar local em um servidor e conectar por webservice.
Mas, em todo caso, obrigado pelas respostas.
Muito boa sua lógica e simples.
Grande abraço!!!
Com a lógica de entradas e saÃdas, sim, você pode deixar um estoque ficar [Ô]negativo[Ô], embora não seja uma situação ideal. Uma coisa interessante, é entender que entradas e saÃdas, podem ter datas futuras ou até mesmo passadas, em alguns casos. Isso faz com que a você possa ter uma previsão de estoque, incluindo, projeções de estoque de acordo com dados de saÃdas anteriores. A quantidade fÃsica e o informado no sistema, idealmente deve ser compatÃvel, mas há casos em que a situação que você fala pode ocorrer, mas reforçando, não deve ser uma situação usual.
Entendi, obrigado pelas respostas, esclareceu bastante coisa.
Um grande abraço!!
Um grande abraço!!
Tópico encerrado , respostas não são mais permitidas