DUPLICANDO NO ESTOQUE
Boa tarde galera.
Acontece o seguinte, um cliente relatou um problema ao lançar notas ao estoque de produtos. Alguns produtos duplicaram, triplicaram ou até quintoplicaram(?). Mas quando eu puxo aquela nota em minhas tabelas de entrada e entrada itens, a quantidade que foi lançada bate corretamente.
O que pode ter ocorrido? Sendo que isto nunca aconteceu neste mesmo cliente desde que ele usa o sistema em vários anos.
Minha rotina de encremento é bem simples.
do while not dsItemNota.eof
dsproduto.findfirst [Ô]codigo = [Ô] & dsitemnota!codprod
if not dsproduto.nomatch then
dsproduto.edit
dsproduto!estoque = cdbl(dsproduto!estoque) + cdbl(dsitemnota!qtd)
dsproduto.update
end if
dsitemnota.movenext
loop
Algum atraso na rede, vÃrus ou qualquer outro motivo poderia ter repetido o mesmo laço mais de uma vez?
Obrigado
Acontece o seguinte, um cliente relatou um problema ao lançar notas ao estoque de produtos. Alguns produtos duplicaram, triplicaram ou até quintoplicaram(?). Mas quando eu puxo aquela nota em minhas tabelas de entrada e entrada itens, a quantidade que foi lançada bate corretamente.
O que pode ter ocorrido? Sendo que isto nunca aconteceu neste mesmo cliente desde que ele usa o sistema em vários anos.
Minha rotina de encremento é bem simples.
do while not dsItemNota.eof
dsproduto.findfirst [Ô]codigo = [Ô] & dsitemnota!codprod
if not dsproduto.nomatch then
dsproduto.edit
dsproduto!estoque = cdbl(dsproduto!estoque) + cdbl(dsitemnota!qtd)
dsproduto.update
end if
dsitemnota.movenext
loop
Algum atraso na rede, vÃrus ou qualquer outro motivo poderia ter repetido o mesmo laço mais de uma vez?
Obrigado
Essa rotina pelo que parece, pode ser disparada várias vezes, o que explicaria a duplicidade... Verifique se não está ocorrendo isso...
se for uma function trate para que quando ele chegar no final do loop ele sai fora da função
ex:
function AtualizaEstoque () as boolean
AtualizaEstoque=false
sql=[Ô]UPDATE estoque SET estoque=estoque+cdbl(novaqtde) WHERE produto=[ô]X[ô]
conexao. execute
AtualizaEstoque=true
========================================
Assim você pode até usar o Loop mas quando interpretar a variavel como true ele passa para um proximo produto.
ex:
function AtualizaEstoque () as boolean
AtualizaEstoque=false
sql=[Ô]UPDATE estoque SET estoque=estoque+cdbl(novaqtde) WHERE produto=[ô]X[ô]
conexao. execute
AtualizaEstoque=true
========================================
Assim você pode até usar o Loop mas quando interpretar a variavel como true ele passa para um proximo produto.
Mas onde esta duplicado, que o cliente informou, na tela do cliente na contagem do estoque, onde exatamente esta mostrando a diferença?
Jesuel. Acho que os amigos acima responderam minha duvida. Existia uma falhazinha bem antiga no sistema.
Esse incremento ao estoque esta dentro da função [ô]enchelista[ô]. Uma bela mancada que passou despercebida em 1 ano.
Pode ter sido aberta o mesmo registro de entrada e dado este problema.
E o problema foi no cadastro de produtos no campo Estoque mesmo.
Esse incremento ao estoque esta dentro da função [ô]enchelista[ô]. Uma bela mancada que passou despercebida em 1 ano.
Pode ter sido aberta o mesmo registro de entrada e dado este problema.
E o problema foi no cadastro de produtos no campo Estoque mesmo.
Tópico encerrado , respostas não são mais permitidas