Ayuda control de inventario

Saludos experto:
Tengo un problema y solicito tu ayuda, el caso es que tengo mi sistema de ventas, donde existe una tabla productos y otra ventas, cada vez que se vende un producto se debe restar de la cantidad de productos, para ello ocupo un replace y se lleva a cabo con un solo producto, sin embargo, al vender dos o más productos se descontaba solo del primer producto que encontraba, ahora he incluido un do while y queda de la siguiente manera:
cuenta=0
SELECT auxventas
LOCATE FOR auxventas.numventa=ident
DO WHILE FOUND() AND cuenta=0
   auxcan=auxventas.cantidad
  SELECT productos
  LOCATE FOR productos.claveprod=auxventas.claveprod
    IF FOUND()
    replace productos.cantidad WITH productos.cantidad-auxcan
    SKIP
  ELSE
    cuenta=1
  ENDIF
&&SKIP
enddo
Al ejecutar el formulario me crea un ciclo infinito, ¿podrías ayudarme?

1 respuesta

Respuesta
1
Select ventas
Go Top
Do While !Eof()
    aux = ventas.cantidad
    cve = ventas.claveprod
    Select productos
    Replace productos.cantidad With productos.cantidad - aux For productos.claveprod == cve
    Select ventas
    Skip
EndDo
Hola Victoramf:
Con el código que me proporcionaste ya termina el ciclo, solo que ahora se hace el reemplazo en todos los productos y no en los especificados.
Gracias por tu respuesta, espero puedes seguir ayudándome
¿Cve solo contiene la clave del producto de la tabla ventas?
Así es, solo contiene la clave del producto de ventas
Si contiene la clave de producto debe hacer la sustitución en la tabla Productos de esos productos.
Ejecuta el proceimiento para verificar que eso se esté llevando a cabo y poder determinar de esa manera lo que está sucediendo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas