Ghean 0 Denunciar post Postado Outubro 25, 2012 Como posso fazer a implementação FIFO para um balanço de estoque? Sendo que, tenho os seguintes dados: Entrada: Produto | Qtd | Valor Unit ------------------------------------------------ Produto 1 | 20 | 13.00 ------------------------------------------------ Produto 1 | 10 | 12.00 ------------------------------------------------ Saida: Produto | Qtd ------------------------------------------------ Produto 1 | 24 ------------------------------------------------ Se der saída de 24 unidades do produto 1, as 20 primeiras terá o valor unitário de R$ 13,00 e as outras 4 unidades de R$ 12,00. E qtd em estoque será 6 unidades com valor unitário de R$ 12,00. É possivel retornar uma query no formato: Produto | Qtd | Valor Unit ------------------------------------------------ Produto 1 | 20 | 13.00 ------------------------------------------------ Produto 1 | 4 | 12.00 ------------------------------------------------ Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 25, 2012 Para fazer FIFO (First In First Out) não seria preciso a data ?! Seria feito pela ordem do registro ? Em princípio não vejo como fazer por SQL puro, acho que somente por Procedure pois seria preciso verificar todas as possibilidades de estoque. Compartilhar este post Link para o post Compartilhar em outros sites
Ghean 0 Denunciar post Postado Outubro 25, 2012 Oi Motta eu tenho a data sim. A principio imaginei que seria necessário o uso de procedure sim. Mas não vejo o processo de sempre pegar a ultima quantidade válida. =( Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 25, 2012 Veja se ajuda : http://ask.sqlservercentral.com/questions/1961/the-fifo-stock-inventory-sql-problem.html http://stackoverflow.com/questions/3005323/how-can-i-manage-a-fifo-queue-in-an-database-with-sql http://social.msdn.microsoft.com/Forums/da-DK/transactsql/thread/1d6795ff-4df9-477d-aff9-486538343617 http://www.kodyaz.com/t-sql/fifo-example-query-in-sql-server.aspx Aparentemente soluções sql puras. Compartilhar este post Link para o post Compartilhar em outros sites
Ghean 0 Denunciar post Postado Outubro 26, 2012 Tentei algumas implementações de acordo com os exemplos mas não esta rolando... Tem alguma sugestão de como poderia montar um procedure talvez? Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 26, 2012 Não, mas a minha ideia inicial seria montar uma tabela temporária com o "saldo" e depois ler esta temp. Compartilhar este post Link para o post Compartilhar em outros sites
Ghean 0 Denunciar post Postado Outubro 29, 2012 Nessa temp, como eu poderia ter a informação do último estoque valido? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 29, 2012 1) Cria uma temp com Produto | Qtd | Valor Unit 2) insere na tabela a medida que se vai abatendo o estoque até o fim da quantidade Ler desta temp Compartilhar este post Link para o post Compartilhar em outros sites
Ghean 0 Denunciar post Postado Outubro 29, 2012 Nesse caso eu faria uma leitura da tabela de saida, pegaria a qtd de saida, logo em seguida faria um while e popularia a tabela temp fazendo a comparação com os registros de entrada? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 29, 2012 Sim, a ideia básica é esta. Mas o comando WITH (não coneço a fundo) não resolve o problema ? Compartilhar este post Link para o post Compartilhar em outros sites
Ghean 0 Denunciar post Postado Outubro 29, 2012 Pois é Motta, eu não conheço a fundo a programação em MySQL, por isso estou penando um pouco em fazer essa funcionalidade. Poderia até tentar resolver via script, PHP por exemplo, mas isso será um serviço e então no script não iria me ajudar muito, por isso estou tentando resolver via banco mesmo. Tem algum exemplo de como pensou na utilização do WITH? Compartilhar este post Link para o post Compartilhar em outros sites
Ghean 0 Denunciar post Postado Outubro 30, 2012 Problema resolvido. Utilizei uma procedure para popular uma tabela com o saldo e uma função para cada insert na tabela saldo consultar o estoque e pegar o valor de acordo com a quantidade disponível em estoque. Compartilhar este post Link para o post Compartilhar em outros sites