Como volver a actualizar un inventario al cancelar una venta

Para todos los expertos de este Blog,

Por favor me pueden ayudar con la siguiente inquietud.

Tengo una base de datos en Access 2010, para el control de ventas e inventario de una miscelanea (almacén). La DB funciona perfectamente cuando se realiza una venta de un producto, este se descuenta automáticamente del inventario, puedo ver las ventas diarias y por fechas determinadas, etc, etc

Para que el inventario se actualice creé un botón en el formulario de venta con el siguiente código en el evento "Al dar click":

Ahora mi problema es que algunas veces por error se ingresan datos erróneos como el tipo de producto y la cantidad. Estoy haciendo un modulo que me permita modificar o eliminar la cantidad de ese producto. Pero cuando consulto de nuevo el inventario este no sufre ninguna modificación (no se actualiza a la cantidad modificada)... Me explico mejor:

Ejem: Tengo en inventario 20 lamparas

Hice una venta y por error digité 5 unidades y en inventario efectivamente me aparece = 15 Unds.

Pero resulta que no eran 5, sino 3... Entonces hago la modificación de la cantidad vendida y el inventario me debería quedar en 17... Pero el stock sigue apareciendo 15

Espero haberme hecho entender, si no es así por favor me informan.

El codigo que me descuenta del inventario cuando se realiza una venta es el siguiente:

  Private Sub ConfirmaVenta_Click()
If MsgBox("Esta Seguro de Realizar la Venta?", vbYesNo, "Aviso") = vbYes Then
With Me.DETALLE_VENTA.Form.RecordsetClone
.MoveFirst
Do While Not .EOF
CurrentDb.Execute ("UPDATE INVENTARIO set Cantidad_Disponible=Cantidad_Disponible-" & !Cant_Articulo & " WHERE Cod_Producto=" & !Cod_Producto)
.MoveNext
Loop
End With
Else
Exit Sub
End If
DoCmd.GoToRecord , , acNewRec
Me.TxtEfectivo.Value = clearConntent
End Sub

Mil gracias por su colaboración.

Atte: Lucho

Respuesta
1

Por como me imagino que lo tienes montado es un poco "complejo" solventar tu situación. Lo que se me ocurre es lo siguiente:

- En la tabla origen del subformulario añades un nuevo campo [Cant_Anterior] y asegúrate que el valor predeterminado es 0

- Añade ese campo en el subformulario y ponlo no visible

- En tu campo [Cant_Articulo], después de actualizar, genérale este código:

...

Private sub...

If not me.newrecord then

If not isnull(me.Cant_Articulo) then

me.Cant_Anterior=me.Cant_Articulo.oldvalue

End if

End if

End sub

...

Y modifica tu código de actualización en la línea del update, así:

Cantidad_Disponible=Cantidad_Disponible-" & !Cant_Articulo + !Cant_Anterior & " WHERE Cod_Producto=" & !Cod_Producto)

Al final del código, si quieres, añade otra consulta de actualización de valores para volver a dejar el valor de [Cant_Anterior] a cero.

Ten en cuenta que todo lo anterior te lo he explicado de cabeza, haciendo suposiciones de cómo lo tienes, y el código está escrito a vuelapluma.

Lo importante es que captes la idea; te corresponde a ti depurarla.

Se me ocurre que como ya tendrás valores introducidos quizá lo mejor sea manejar los valores null.

Para ello, no exijas valor predeterminado para el nuevo campo que te comentaba, y, en tu código, gestionas los nulos así:

Cantidad_Disponible=Cantidad_Disponible-" & !Cant_Articulo + nz(!Cant_Anterior,0) & " WHERE Cod_Producto=" & !Cod_Producto)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas