Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera estou precisando de uma pequena ajuda em montar um algoritmo aqui, a situação é seguinte.
Vou ter em uma tabela que salvara a entrada de vários produtos, o mesmo produto vai ter N registros porem com N quantidades. Mas não posso salvar a quantidade do estoque "juntos" porque preciso saber de qual Pedido que houve a saída. Em outras palavras a minha tabela sera a seguinte:
Pedido | Produto | QTDE | Usado
1 | A | 15 | 0
2 | A | 40 | 0
Com esta tabela de exemplo acima imagine que fiz uma saída do produto A com a quantidade 18, sabemos que se somarmos os dois pedidos temos de saldo 55 correto?
Porém eu preciso marcar em cada registro a quantidade que saiu sendo assim preciso pegar todos registros e fazer descontos por exemplo eu usei 18 então eu vou Descontar 15 do pedido 1 e preciso descontar 3 do pedido 2, a tabela final iria ficar assim:
Pedido | Produto | QTDE | Usado
1 | A | 15 | 15
2 | A | 40 | 3
Claro podemos ter uma situação simples em que uma saída pode ser descontado apenas de um pedido, exemplo, o produto A saiu 4, sendo assim no pedido 2 temos ainda 37 de qtde não temos necessidade de fazer as comparações e etc..
mas enfim a minha duvida está no seguinte ponto, como que poderei fazer essas verificações e descontos?
Estive pensando em fazer WHILE que enquanto o $valorSaida for maior que 0 ele ira percorrer os pedidos que possuem SALDO de quantidade e ir fazendo esses descontos. Mas não sei se isso é uma saída "correta".
Gostaria da opinião dos Srs.
Agradeço antecipado!
E por isso mesmo, relatórios..
Esses pedidos eles sao alocados por departamentos e preciso identificar depois qual departamento que utilizou tudo o produto e qual que não usou e assim por diante.
você pode fazer isso na tabela de saida, coloca os campos ID | DEPT | ID_ITEM | QTD la e você sabe qual departamento fez o pedido do item, e na tabela de estoque você só vai diminuindo.
É bem como ygor.anjos sugeriu.
Mas neste caso eu preferiria trabalhar com triggers, deixando toda a logica diretamente no banco de dados. Se por ventura o pedido for cancelado ou caso tenha pelo caminho um rollback a integridade dos dados do estoque não seria afetada.
Exatamente o que eu ia sugerir. Triggers são a solução.
Olha esta trigger que vou deixar de exemplo para você fazer no mySql WorkBench ele vai te ajudar a fazer automaticamente o seu controle no estoque.
SAIDA<-----
DELIMITER $$
CREATE TRIGGER TgrItensSaida BEFORE INSERT
ON itens_saida
FOR EACH ROW
BEGIN
UPDATE Produto SET qtd_estoque = qtd_estoque - NEW.qtd_saida
WHERE cod_barras = NEW.cod_barras;
END$$
DELIMITER ;
---------------------------------------------------------------------------------------------
<----ENTRADA
DELIMITER $$
CREATE TRIGGER TgrItensEntrada BEFORE INSERT
ON itens_entrada
FOR EACH ROW
BEGIN
UPDATE Produto SET qtd_estoque = qtd_estoque + NEW.qtd_entrada
WHERE cod_barras = NEW.cod_barras;
END$$
DELIMITER ;
Agora e só chamar o método referente a essa atualização no php q ele executará a TRIGGER OK!!
Espero que te ajude Abraços mano!!!!
Valeu galera pelas dicas!
Bom dia.
Tenho uma pergunta, por que é necessário saber de qual pedido houve a saída? não vejo lógica de saber o quanto falta de cada pedido no seu estoque.
Seria melhor se você tivesse uma tabela onde você de entrada nos pedidos e uma somente com o estoque desses pedidos e uma outra tabela com as saídas.
Se você não for utilizar essa informação a nível de relatório que sirva para alguma outra coisa saber a quantidade de itens que falta para cara pedido é irrelevante.