Se puede hacer de muchas formas. Aprovecho una que hice. Lo tengo hecho en que el cliente me va pagando a mí, pero sólo habría que sustituir Cliente por Proveedor. Vamos a suponer que un día me levanto medio loco y me digo, voy a pagarle algo al Proveedor Alfred( te recuerdo que en el ejemplo son pagos que me hacen mis clientes). Abro el formulario y lo selecciono.
En ese momento se abre en vista dialogo el formulario Entregas con las facturas pendientes de ese cliente
Vamos a suponer que me da 300 euros. Lo escribo en Entrega y pulso el botón
Con esos 300, ha compensado las dos primeras facturas, por eso las marca como canceladas y de la tercera le quedan pendientes 149( y que no se olvide que me los debe). Por eso lo pone como negativo y en otro color. De la cuarta ni hablamos.
Vamos a suponer que pasan unos días, y el amigo Alfred se encuentra generoso y decide que quiere pagarme más. Lo elijo en el formulario y en el formulario entregas sólo me aparecen las que tiene pendientes. Las que ya están compensadas ¿para qué van a aperecer?
Y el muy "generoso" me da 200. Lo anoto en Entrega y pulso el botón y
La de 160, como tenía pendiente 149, la compensa y la marca como cancelada, y le sobran 51 euros, y como en la siguiente debía 98 ahora le quedan pendientes 47, que ya me los pagará algún día, eso espero. Y a medida que le voy haciendo ventas a ese cliente las facturas se van poniendo en cola. El código del botón es
Private Sub Compensar_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into entregas(idcliente,fechaentrega,entrega)values(idcliente,date(),entrega)"
DoCmd.GoToRecord , , acFirst
Dim i As Integer
For i = 1 To Me.Recordset.RecordCount
Resto = DSum("entrega", "entregas", "idcliente=" & Me.IdCliente & "") - DSum("totalventa", "ventas", "idventa<=" & Me.IdVenta & "")
If Resto >= 0 Then
Cancelada = True
DoCmd.GoToRecord , , acNext
ElseIf Resto < 0 Then
Exit Sub
End If
Next
End Sub
De todas formas, si ves que no me he explicado bien y quieres, repito, si quieres, mándame un mensaje (sólo el mensaje) a [email protected] y te mando el ejemplo.
Si lo haces, en el asunto del mensaje pon tu alias Hector Manuel, ya que si no sé quien me escribe ni los abro.
Julián González Cabarcos me puedes compartir tu ejemplo por e-mail por favor mi dirección es [email protected]. te lo agradeceré - Argenis Cardona Nolasco