SISTEMA DE PDV

KURTGU 26/02/2015 16:36:02
#444810
Pesssoal gostaria de saber se alguem tem alguma funcao que ao fechar a venda, com todos os itens dentro de um listview, ele crie um laco pra ir dando baixa no estoque...

Ja pesquisei na net e nao achei nada..Tenho todo o PDV montado, mais gostaria de somente da a baixa no estoque dos produtos da lista de venda...

ALGUEM TEM ALGUMA COISA PRONTA, nao tenho nada pronto nesse sentido por isso estou recorrendo aqui, se alguem tiver como me passar uma funcao que faca o select e update e ir atualizando o campo quantidade agradeceria muito...

ULTILIZO BANCO MYSQL...
MOUSER 27/02/2015 13:40:11
#444833
Eu estou montando algo parecido, O que estou fazendo para dar baixa: no lugar do Listview estou usando Datagridview, a cada item add na DGV automaticamente ele puxa a quantidade, e antes de add, pergunta se é realmente o item, se sim, ja add na DGV e ja da baixa -1 no estoque.
Vou montar um código hoje, mas é mais ou menos isso:

strQuery = Select cod, Produto, Estoque ...
... [ô] Aonde joga os valores pesquisados em variaveis

if estoq = 0 then
msgbox ([Ô]Produto sem estoque[Ô])
Else
... [ô]Nesta parte onde você joga no ListView
End If
FFCOUTO 27/02/2015 14:26:38
#444834
Resposta escolhida
Amigos,

Vamos ter em mente que o estoque do produto nada mais é que a soma das entradas menos a soma das saídas.
Portanto, não vejo praticidade em fazer atualização num campo que deve ser calculado.
O ideal é ter uma tabela de movimentação de produtos e nela constar o tipo de movimento e a quantidade do produto.
Dessa forma, creio exisitir duas maneiras básicas de fazer isso.

1ª A tabela ter um campo [ô]Movimento[ô] onde será armazenada E ou S e o campo quantidade: Dessa forma o sql ficaria.
SELECT (SELECT SUM(quantidade) FROM movto WHERE (movimento = [ô]E[ô]) - SELECT SUM(quantidade) FROM movto WHERE (movimento = [ô]S[ô])) AS estoque_atual;


2ª Usar a quantidade positiva para entradas e negativas para saida: Dessa foram o sql ficaria.
SELECT SUM(quantidade) AS estoque_atual FROM movto;


Eu particularmente, utilizo a primeira opção e ainda uso um campo operacao para definir por exemplo, se é uma venda, devolução, estorno, etc

KURTGU 28/02/2015 10:18:38
#444852
Fabiano, vamos supor so pra eu enteder mesmo, crio uma tabela aonde irei ter os produtos de saida mais da mesma forma nao irei ter que da um update para diminuir a quantidade do produto?
KURTGU 28/02/2015 10:43:22
#444853
Fabiano ve se eu entendi voce da um insert dos produtos nessa tabela e depois faz um select com count seria isso?
FFCOUTO 28/02/2015 13:55:18
#444854
KURTGU,

A sua última resposta chegou quase perto. No lugar do Count seria o SUM para somar as quantidades.
Vamos ao raciocínio:
1. Você terá uma tabela que se chamará, por exemplo, mov_estoque com os campos id, id_pedido, id_produto, qtde, movimento, e outros que forem necessários para seu sistema.
2. Ao fazer a venda você fará um loop dos seus produtos e fará um INSERT. Lembre-se o campo id é auto-numerado. Ex.:
INSERT INTO mov_estoque (id_pedido, id_produto, qtde, movimento) VALUES (10, 1000, 50, [ô]S[ô])
.
3. Quando você compra seus produtos você também fará uma entrada da mesma forma. Ex:
INSERT INTO mov_estoque (id_pedido, id_produto, qtde, movimento) VALUES (5, 1000, 150, [ô]E[ô]);

4. Para você ter o estoque do produto (no caso aqui de código 1000) bastar executar o select que passei acima.
SELECT (SELECT SUM(quantidade) FROM movto WHERE (movimento = [ô]E[ô]) AND (id_produto = 1000) - SELECT SUM(quantidade) FROM movto WHERE (movimento = [ô]S[ô]) AND (id_produto = 1000)) AS estoque_atual.


Veja que você terá o estoque atual igual a 100 que é a diferença entre as somas de entradas e saídas.

Espero que tenha compreendido
KURTGU 28/02/2015 15:58:10
#444855
Fabiano Couto vlw cara entendi sim vou ver o que consigo fazer aqui...
Tópico encerrado , respostas não são mais permitidas