Atualizar estoque da Tabela de Produtos
30/11/2004
0
As tabelas são vendas, itenvendas, produtos. Eu sei que tenho que dar um update, mas não sei como nem aonde.
essas são as estruturas básicas das tabelas
Itenvenda Produtos
COD_VENDA COD_PRODUTO
COD_PRODUTO ESTOQUE_ATUAL
QUANTIDADE
preciso fazer ESTOQUE _ATUAL - QUANTIDADE quando finalizar a venda.
Por favor se alguém tiver alguma idéia
Luciohc
Posts
01/12/2004
Demetrioi
Imagine só: hoje o cliente compra um produto e o preço de compra dele é 3 reais e o de venda é 5 e ele tem 20 unidades no estoque.
se amanhã ele comprar mais 10 unidades ao preço de compra de 4 reais e o preço de venda passar para 7 reais, mas ele que vender os vinte q ele ainda tinha pelo preço de venda anterior(5 reais) para só depois poder vender as outras dez ao preço de venda novo(7 reais) como faria isso guardando a qtd em estoque na tabela de vandas?
ficaria td confuso, entendeu? NÂO É APENAS PARA EMPRESAS COM DUAS OU MAIS FILIAIS, server pra isso tb mas n é só para isso.
Acho q isso encerra o assunto
01/12/2004
Hard.disk
tipo.. axu q o q vc falow tem logica.. mas na pratica naum da certo...
imagina q um cliente leve 2 unidades do mesmo produto.. e no cadastro de estoque existe uma unidade com o preço de 3 reais e as demais com o preço de 5 reias...
Este cliente vai estar pagando 3 reais por uma unidade e 5 reais na outra...
Eu tenho varios sistemas que controlam caixa.. te garanto q c o cliente ve isso na tela.. ele vai xingar muito!! hehehehe
resumindo.. naum sei c pro seu mercado isso serve.. mas pro meu naum serve.. ja que eh inviavel existirem dois produtos iguais com preços diferentes na loja...
Mas achei muito interessante essa sua solução...
Valew...
01/12/2004
Demetrioi
gostaría de saber sua idéia.
T+
01/12/2004
Emerson Nascimento
o [b:d3c26984b1]demetrioi[/b:d3c26984b1], tem razão na sua colocação. mas eu não coloco isso na tabela de estoque, e sim numa tabela de lotes (também controlado por filial). o controle deve ser feito por lote de produtos desde que a empresa trabalhe dessa forma. então, quando houver uma venda, é necessário saber se há saldo em lote e qual a quantidade unitária do produto desse lote. mas esse é um recurso que deve ser muito, muito bem controlado. como disse o Hard.disk, imagine que do meu lote de R$ 5,00 tenha sobrado 2 peças. e tem o novo lote de R$ 7,00 com 10 peças. o cliente quer comprar 5 peças. como fica? esse controle deve ser muito bem feito, pois num caso desses deverá ser cobrado o menor preço, conforme dita a lei, e serão subtraídas as 2 peças do lote de R$ 5,00 e 3 do lote de R$ 7,00. então, na próxima venda, deverá ser cobrado R$ 7,00, pois terá sobrado o lote de 7 peças a R$ 7,00 cada.
não sei se fui claro... mas é isso....
01/12/2004
Emerson Nascimento
01/12/2004
Dopi
No comercio em geral, certamente não há preocupaçao com de Lotes por causa do Preço de Entrada... Nesse caso é muito comum usar o Calculo do Preço Medio de Entrada para apurar corretamente o lucro...
O raciocinio do Lojista é : Vou vender por Preço de Entrada Atual + X¬ de Lucro
Mas o Lote é necessário para um controle de Validades dos produtos, Garantias, etc...
01/12/2004
Hard.disk
entaum demetrioi..
Como eu disse antes... meus clientes que usam o meu sistema q controla estoque saum clientes pekenos,, na verdade.. eh uma rede de pet shops...
onde naum importa o conceito de lote... o que normalmente acontece eh o fornecedor aumentar em X¬ o preço dos produtos... e meu aplicativo permite aplicar esses X¬ nos produtos que atendem x condições que o cliente pediu.. logo não faço esse controle de lote.. nem de preço por lote.. ja que o mercado dos meus clientes naum trabalham assim.. mas axu q c eu precisasse fazer faria sim.. do seu jeito... mas antes é preciso intender muito bem como q o cliente funciona.. pra saber c eh assim mesmo que ele quer trabalhar...
Abraços
02/12/2004
Luciohc
A solução foi:
With qryatualizaestoque Do
Begin
Close();
qryatualizaestoque.SQL.Clear;
qryatualizaestoque.SQL.Text:= ´UPDATE PRODUTOS SET ESTOQUE_ATUAL = ESTOQUE_ATUAL - ´
+ floattostr(dm.cdsitenvendaQUANTIDADE.Value) +
´ where cod_produto = ´ + inttostr(cod_produto);
qryatualizaestoque.ExecSQL();
end;
Estou com outra dúvida.
Como eu disse estou usando dbexpress e Interbase 6.0, estou precisando que quando inserir na tabela itenvenda o dbgrid seja atualizado com os produtos que estão sendo vendidos. Quando estou inserindo só está aparecendo no dbgrid os dados do último produto.
02/12/2004
Demetrioi
Ae hard.disk gostei muito da sua idéia de uma tabela de lotes, atualmente uso um campo na tabela de estoque para definir isto q vc falou mas acho que criar uma tabela lotes seja mais apropriado mesmo, vou dar uma sacada nisso hj a noite e tentar remodelar meu BD já que meus sistemas são quase 100¬ OO no que diz rewspeito a SQL principalmente. daí fica mais fácil.
Acho muito bom este tópico pois poucos programadores sabem como tratar esta parte de um sistema(que eu acho a fundamental).
valew galera
T+
demetrioi@bol.com.br
23/05/2005
Caninha51
Se prestarem atenção vcs não o ajudaram em nadica de nada!hehe
Ficaram tão empolgados com o assunto que esqueceram do ´dono´ do tópico!heheh
** Tô gargalhando aki na frente do micro heheheh
Quando chegou lá na frente o Hard.Disk depois de discutir com o outro, diz; - ´Qto ao erro.. naum sei direito qual eh.. ´ hehehe...
Ainda bem que no final o luciohc desenrolou o problema (sozinho)!! :))
Vixe, desenterrei o tópico!!
Valew as risadas... abraços!!!
Caninha51
23/05/2005
Japa
Mas foi bom... achu que todos nos aprendemos mais um pouco :D
24/05/2005
Demetrioi
05/06/2005
Mmoreira
Estou precisando da opinião do pessoal que tem experiencia em desenvolvimento de sistemas para controle de estoque.
eu estou querendo saber como devo proceder na atualização do estoque ou seja entrada de produtos no estoque .... Eu deveria ter uma tabela tipo TBENTRADA_PRODUTO onde eu guardaria a data da entrada, a referencia do produto em questao, o codigo da filial, a quantidade que entrou .... Será que é mais ou menos assim???
Estou fazendo este sistema para um cliente que fabrica bolsas de couro, ou seja após a fabricaçao das bolsas ele tem que lançar tudo no sistema.
Bom conto com a ajuda dos colegas ...
valewsss
06/06/2005
Henrique Rodrigues
With(Query)Do Begin Close(); Sql.Text := ´ UPDATE PRODUTOS SET QUANTIDADE = QUANTIDADE - :Qtd_Vendida WHERE COD_PROD = :Codigo_Prod ´; Params[0].AsInteger := Quantidade_Vendida; Params[1].AsInteger := CodigoDoProdutoVendido; ExecSql; End;
não entendi como o param[0] e [1] fazem ligação em uma consulta de itens de venda.
Isso faria a atualização de vários produtos ao mesmo tempo?
Clique aqui para fazer login e interagir na Comunidade :)