YO HICE ESTO PARA DESCONTAR STOCK DE OTRO AARCHIVO, ESPERO TE SIRVA
Para descontar productos de otro archivo al confeccionar una factura yo hago lo siguiente:
Tengo tres archivos: Productos, Factura, Detalle (aqui se guardan los detalles de la factura).
Dentro del formulario de la Factura pongo un browse que contenga los detalles de la factura (el browse corresponde al archivo Detalles). Para registrar los detalles NO USO EL EDITIN PLACE, sino que los registro EN UN FORM.
En el form del archivo de detalle creo una variable local NEW:cantidad (que guarda la cantidad que estas ingresando) y SAV:cantidad (que guarda, en el caso de qe estes modificando el detalle, la cantidad anterior. Esto es muy importante ya que accidentalente puedes ingresar una cantidad erronea, aceptes el cambio y al darte cuenta, ingreses al detalle nuevamente a modificarla, por ello la importancia de estas variables.
Bien, vamos ahora con el FORM Detalle: Generalmente el archivo debe contener el codigo del producto, cantidad, precio, etc.
- Ingresa codigo Embebido en
--- > WindowManager Method Executable Code Section
-----> Init
-------> Byte (priority 6500)
!Inicializando variable
SAV:cantidad = Detalle.Record.Cantidad
- Ingresa codigo Embebido en
--- > WindowManager Method Executable Code Section
-----> TAke Completed
-------> Byte (priority 6300)
!LLamando a la Rutina Modificar archivo de productos
!que ya la vamos a escribir
DO ActualizarProductos
- En en punto Emebido "Procedure Routines" vas a crear la siguiente rutina con Priority 4000
(Donde cantidad Stock es el campo donde se guarda el stock de prodcutos en el archivo de productos)
ActualizarProductos ROUTINE
CASE ThisWindow.Request
OF InsertRecord
Productos.Record.CantidadStock -= Detalles.Record.Cantidad
IF Access:Productos.Update() THEN
STOP(ERROR())
END !end if
OF ChangeRecord
Productos.Record.CantidadStock += SAV:Cantidad
Productos.Record.CantidadStock -= NEW:Cantidad
IF Access:Productos.Update() THEN
STOP(ERROR())
END
OF DeleteRecord
Productos.Record.CodigoProducto = Detalle.Record.CodigoProducto
Products.Record.CantidadStock += Detalle.Record.Cantidad
IF Access:Products.Update() THEN
STOP(ERROR())
END
END !End case
Ahora ingresa codigo emebido en el campo Cantidad del archivo de detalles
----> Contro Event Handling
------> Aceppted (Priority 8800)
NEW:Cantidad = Detalle.Record.Cantidad
Con eso vas a poder actualizar el archivo de productos cuando registres una factura, espero que te sea de ayuda.