CrazyLOL 2 Denunciar post Postado Setembro 9, 2016 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! Compartilhar este post Link para o post Compartilhar em outros sites
ygor.anjos 23 Denunciar post Postado Setembro 9, 2016 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. Compartilhar este post Link para o post Compartilhar em outros sites
CrazyLOL 2 Denunciar post Postado Setembro 9, 2016 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. Compartilhar este post Link para o post Compartilhar em outros sites
ygor.anjos 23 Denunciar post Postado Setembro 9, 2016 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. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Setembro 9, 2016 É 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. Compartilhar este post Link para o post Compartilhar em outros sites
giovani.nexter 1 Denunciar post Postado Setembro 9, 2016 Exatamente o que eu ia sugerir. Triggers são a solução. Compartilhar este post Link para o post Compartilhar em outros sites
Pellegrini2106 2 Denunciar post Postado Setembro 10, 2016 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 INSERTON itens_saida FOR EACH ROWBEGINUPDATE Produto SET qtd_estoque = qtd_estoque - NEW.qtd_saidaWHERE cod_barras = NEW.cod_barras; END$$ DELIMITER ; --------------------------------------------------------------------------------------------- <----ENTRADA DELIMITER $$ CREATE TRIGGER TgrItensEntrada BEFORE INSERTON itens_entrada FOR EACH ROWBEGINUPDATE Produto SET qtd_estoque = qtd_estoque + NEW.qtd_entradaWHERE 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!!!! Compartilhar este post Link para o post Compartilhar em outros sites
CrazyLOL 2 Denunciar post Postado Setembro 12, 2016 Valeu galera pelas dicas! Compartilhar este post Link para o post Compartilhar em outros sites