Fechas y vencimientos

Tengo una tabla con los siguientes campos:
Nº recibos
Tipo de pago
Fecha 1er pago
Fecha ultimo pago importe.
Tengo varios tipos de pago, mensual, trimestral, etc.
Necesito pagos extras, es decir pagos que se realizan exclusivamente
en los meses de julio y diciembre.
Te pongo un ejemplo:
Un cooperativista quiere tener dos pagos extras y empieza a pagar en el mes de julio. Seria:
Nº pagos 2
Tipo pago extra
fec1erpago 01/07/02
fecha último pago 01/12/02
Importe pago 1000
Es decir,
1 pago: 01/07/02; 2 pago: 01/12/02
Los días da igual, pero los vencimientos siempre son en julio y en diciembre.
Si otro quisiera 5 pagos extras de 1500, siendo el 1º en diciembre, seria
nº pagos 5
tipo pago extra
fecha 1er pago 01/12/02
fecha último pago 01/12/04
importe pago 1500
Es decir:
1: 01/12/02; 2: 01/07/03; 3: 01/12/03; 4: 01/07/04; 5: 01/12/04
No se se me explico...
Yo lo he hecho así:
Private Sub f_final_Enter()
Dim x As Integer ' contador
If Me.tipo_de_pago.Value = "SEMESTRAL" Then
Me.f_final = DateAdd("m", Me.Nº_recibos + 2, Me.F_inicio)
ElseIf Me.tipo_de_pago.Value = "TRIMESTRAL" Then
Me.f_final = DateAdd("q", Me.Nº_recibos - 1, Me.F_inicio)
ElseIf Me.tipo_de_pago.Value = "MENSUAL" Then
Me.f_final = DateAdd("m", Me.Nº_recibos - 1, Me.F_inicio)
ElseIf Me.tipo_de_pago.Value = "EXTRA" AND Month(Me.F_inicio) = 7 Then
For x = 1 To Me.Nº_recibos
Me.f_final = DateAdd("m", 5, Me.F_inicio)
Me.f_final = DateAdd("m", 7, Me.F_inicio)
Next x
ElseIf Me.tipo_de_pago.Value = "EXTRA" AND Month(Me.F_inicio) = 12 Then
For x = 1 To Me.Nº_recibos
Me.f_final = DateAdd("m", 7, Me.F_inicio)
Me.f_final = DateAdd("m", 5, Me.F_inicio)
Next x
End If
End Sub
Y me funciona todo menos los pagos extras... Voy bien encaminado o se puede hacer de otra forma?
También tendría que sacar un informe de la relación de dichos pagos con sus vencimientos, importes, etc. Del cooperativista:
EJEMPLO:
Un cooperativista que tenga estos pagos en la tabla/consulta anterior:
nº t.pago f1erpago f.ult.pago import
2 mens 01/01/02 01/02/02 1500
2 extra 01/07/02 01/12/02 1000
El informe, tendría que sacarme:
nº t.pago fecha vto importe
1 mensual 01/01/02 1500
2 mensual 01/02/02 1500
3 extra 01/07/02 1000
4 extra 01/12/02 1000
Total efectos 5000

1 Respuesta

Respuesta
1
Ufff
Muy complicado y sin análisis previo, lo cual te ha llevado a un callejón sin salida.
Partiendo de ese fichero que has generado deberías crear una tabla donde fueras generando todos los pagos, un mensual con 6 recibos tendría que aparecerte 6 veces en tu informe por lo que necesitas una rutina de conteo igual que en extras.
En extras no te funciona por que como podrás comprobar dentro del for/next la fecha de inicio siempre es la misma estés en el numero de recibo que estés, por lo que la fecha final siempre es la misma, lo lógico es que en ese bucle una vez generado un vencimiento, esa fecha fuera el inicio del siguiente.
Lo dicho te seria más fácil si partiendo de ese fichero
Generaras los vencimientos, y los informes partieran de ahí.
¿Pero entonces como hago para que salga la fecha final correcta en el caso de pago extra?
¿Declaro una variable de tipo date y la utilizo para sacar la fecha final en el for, y luego igualo el valor obtenido a la fecha final? En caso de ser así, ¿en el for tendría que hacer esto?:
ElseIf Me.tipo_de_pago.Value = "EXTRA" AND Month(Me.F_inicio) = 7 Then
For x = 1 To Me.Nº_recibos
variable date= variable date + DateAdd("m", 5, Me.F_inicio)
variable date = variable date + DateAdd("m", 7, Me.F_inicio)
Next x
Gracias.
Esta rutina funciona siempre que el inicio del pago tenga lógica, te cuento, con esta rutina solo te vale cuando los inicios de pago sean julio o diciembre.
variable date = f_inicio
For x = 1 To Me.Nº_recibos
if month(variable date) = 7 then
variable date=DateAdd("m", 5, variable date)
else
variable date =DateAdd("m", 7, variable date)
Endif
(Aquí deberías meter algo para poder sacar las fechas generadas)
Next x
entre el endif y en next x que meto????
Gracias.
En principio podías meter un msgbox(format(variable date,"short date")) para ver las fechas que generarías.
En el caso de que sean correctas yo gravaría la fecha en una tabla para luego poder listarlas. Pero eso depende de lo que quieras hacer con ellas.
Un saludo
Jose Antonio
PD.- Supongo que lo tendrás en cuenta, pero por si acaso, variable date no es un nombre válido y supongo que lo sustituirás por un nombre de variable válido.
Antes de nada gracias de nuevo por tu interés...
Mira a lo mejor me he explicado mal.
Donde tiene que aparecer la fecha final es en un subformulario de un formulario Cooperativistas donde metemos todos los datos personales del mismo, así como la vivienda elegida, y la forma de pago.
En la forma de pago, tengo el subformulario que es la tabla que de comente en un principio. En este subformulario en el campo de fecha final debe de aparecer la fecha final del pago que haya elegido, (la última fecha).
Luego en los informes si que me vendría bien tener todas las fechas guardadas para sacar los listados.
Lo del nombre de la variable claro que lo se, hombre... pero gracias de todas formas.
Si debe aparecer en un subformulario, y ademas te interesa tenerlas guardadas, lo más sencillo es que géneros los vencimientos en una tabla, y luego el subformulario del informe lo generes vinculándolo a la tabla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas