Estoque

Bom dia pessoal,

Como já falei em outro tópico estou desenvolvendo um sistema meio complexo (para mim), e conto com a ajuda de vocês, bem é o seguinte, como faço para que os itens comprados de um produto em uma NF quando inseridos atualizem automaticamente o meu estoque (no campo estoque atual) ?

Você esta fazendo a carga dos produtos pela nota de entrada? Com xml? Qual o meio de alimentação do banco?
Se for pelo xml da nota você pode fazer via controle ou com uma aplicação blank. Dê mais detalhes do sistema.

Saulo vai ser manual mesmo, o funcionário pega a NF e digita as informações no sistema e quando clicar no botão salvar, gostaria que o produto o qual foi comprado pela NF atualize na tabela de produtos o seu estoque atual.

Quando você diz “como faço para que os itens comprados de um produto em uma NF quando inseridos atualizem automaticamente o meu estoque (no campo estoque atual)” você esta se referindo a um cliente comprando na loja ou a loja comprando do fornecedor?
Isso não faz tanta diferença mas são operações inversas, em uma você vai pegar o total atual do seu estoque e subtrair a quantidade comprada, no outro você vai pegar o estoque atual e somar a quantidade comprada do fornecedor.

Controle de estoque embora parece algo simples é algo bem complexo se for ser levado em conta as várias formas de controle que existem, por exemplo, algumas empresas trabalham com estoque virtual, outras com super-estoque ainda outras apenas querem controlar de maneira simples o estoque. Se o seu sistema vai compreender todas as funcionalidades de um controle de estoque controle o mesmo com transações específicas e só dê baixa no estoque após efetivação de um movimento de venda, utilize uma tabela para gerenciar cotações, orçamentos, pedido não confirmados e faça filtros e controle para saber exatamente a projeção do que deve sair nos próximos dias e assim saber o que vai ter em estoque e o que vai faltar.

Sempre que chegar mercadoria procure separar por fornecedor os produtos, claro que um produto pode ser adquirido de mais de um fornecedor então faça uma tabela de ligação de 1:n (produto x fornecedores) e filtre os produtos por fornecedores, ou faça um filtro que busque por nome, código, fornecedor e alimente uma busca, crie um link na busca para um controle que alimente apenas o valor do estoque atual.

vixii escrevi tanto que até me perdi… acho que dá pra entender!!

Grande Saulo,

É o seguinte, um funcionário da empresa vai a um fornecedor e compra determinado produto, quando o mesmo chegar a empresa vai repassar a nf e o produto par o responsavel pelo deposito, ai este vai acessar o sistema e na opção (cadastro de NF) cadastrar os dados da mesma (nº da nf, data da emissão, valor da nf, produto, qdte, etc) e ai quando ele salvar o cadastro o sistema teria que ir ate a tabela de produtos e acrescentar no determinado produto a quantidade comprada, o problema é que não sei como fazer isso no SC, na verdade sei que ai vai ter que ter PHP no bolo e ai piorou mais, tem como me passar o caminho das pedras.

Valter,

Essas operações com estoque parecem simples mas são um pouco complicadas, tem estorno, saída, entrada, perda, consignação, enfim - o controle físico muitas vezes não coincide com o controle virtual e isso nem sempre é culpa do sistema, muito mais de procedimentos internos da empresa… por experiência, resolvi modelar meus projetos de controle de estoque de forma que não tivesse um campo fixo com o estoque atual… o estoque é sempre calculado quando se monta uma consulta no produto… desta forma não me preocupei mais com atualizações de estoque.

Mas nem tudo são flores, existem alguns problemas e os principais são:

a) requer uma boa modelagem;
b) maior requisição ao DB;
c) tem clientes que gostam de fazer o controle no momento da venda ou seja, só vende o produto se o sistema informar que tem… o que é muito complicado, até porque o seu sistema é web e essa característica induz a uma concepção de espaço muito maior do que as apps desktop, tornando difícil esse controle.

Apesar as dificuldades, ainda vale a pena pensar nesta possibilidade.

[]´s

Valeu pela explanação Jovito, na verdade como a empresa e muito simples (pequena) me bastaria então algo como você mencionou, de “o estoque é sempre calculado quando se monta uma consulta no produto”, tem como me orientar em algo simples mesmo, não requer (eu pelo menos acho com minha falta de experiencia) nada tão complexo como você explanou.

Posso dar minha sugestão?

Tabelas:
Material (cadastro de produtos): Id, Descricao

Depositos(Locais de Estocagem):Id, Descricao

LocalXMat (Saldo em estoque de materiais por local) : Id, material_id, Deposito_id, saldo, data_ultimo_movto

EstoqMovto (log das entrdas e saídas: Kardex):
id, material_id, data_movimento, deposito_id, transacao(entrada/saida), quantidade, referencia, saldo_anterior, saldo_atual, id_estorno

Trigger beforeInsert em EstoqMovto:

  • Aqui faz todo o processo ao incluir um registro nesta tabela (Só permitido inserção):
    • Cria o Deposito para o material caso não exista,
    • busca o saldo em LocalxMat,
    • atualiza em LocalxMat o saldo conforme o movimento (entrada ou saida),
    • se id_estorno <> 0 le o registro em EstoqMovto por esse id, e gera o registro invertendo a transação

Só com essas tabelas é possível desenvolver um controle de estoques, e o único movimento é o insert na tabela EstoqMovto, a trigger faz o resto.

1 Curtida

Muito legal Haroldo, vou fazendo e quando chegar na parte Trigger entro em contato pra saber como fazer, ok ?

Combinado.

Valter,

Eu faço ± como SDHPU descreveu… se vc não tiver muita habilidade com trigers pode criar funções tb (no banco ou no SC) e colocar +1 ou 2 eventos… coisa simples também.

Com isso seus problemas acabarão.

Boa sorte!

Flw Jovito

Jovito/Pessoal,

Ja criei a estrutura e o bd, agora preciso fazer com que o produto que consta na entrada da NF seja adicionado na tabela de produtos usando trigers, funções no banco ou no SC, etc.

Preciso da ajuda de voces meus amigos

Valter,

A solução apresentada pelo meu querido SDHPU, envolvendo trigers, necessita a criação dos campos:"…saldo_anterior, saldo_atual, id_estorno…", eu não faço assim, embora o efeito seja muito consistente… é preciso saber como você modelou sua app… se foi nos moldes de SDHPU, então só ele pode lhe ajudar…

[]´s

Não mano, é o seguinte:

Tabela de NF -> Campos produto e qtde
Tabela Produto -> Qtde Atual

Então so preciso do seguinte, a tabela de NF pegue o produto e a qtde de entrada e acrescente na tabela de produtos (no produto da entrada e claro) a qtde a mais.

Só isso (só uma ova, pra quem não sabe é um avião de problemas)

É nota fiscal de entrada?
expões aqui o create de suas tabelas.