Cálculo Días Fijos en Fechas

He visto esta página, buscando alguna solución a mi pobre informe que tengo que realizar en el curro y me he dicho que voy a ver si algún experto me podría ayudar, :D
Bien mi pregunta es ésta:
Necesitaría la fórmula o el proceso de cálculo de días fijos teniendo una fecha de vencimineto.
Ejemplo :
¿Tengo un cliente que tiene forma de pago efecto 30 días con días fijos 15 y 30 que es lo que tendría que poner en la fórmula para calcular su fecha de vencimiento?
Imaginate que la fecha de factura es 05/04/2004 -- el vencimiento sería el 05/05/2004 pero como tiene días fijos el día 5 tendría que ser un 15.
En la base de datos tengo registrado los días fijos de cada cliente y la forma de pago también.
Me puedes ayudar y orientarme de como podría hacerlo.

2 Respuestas

Respuesta
1
Te propongo la siguiente función:
' El array iDiasFijos debe venir ordenado de forma ascendente
Public Function Vencimiento(fFactura As Date, iDiasVista As Long, ParamArray iDiasFijos() As Variant) As Date
Dim k As Long
Vencimiento = fFactura + iDiasVista
If UBound(iDiasFijos) >= 0 Then
For k = 0 To UBound(iDiasFijos)
If Day(Vencimiento) <= iDiasFijos(k) Then
Vencimiento = Vencimiento + (iDiasFijos(k) - Day(Vencimiento))
Exit For
End If
Next k
If k = UBound(iDiasFijos) + 1 Then
Vencimiento = DateAdd("m", 1, Vencimiento)
Vencimiento = Vencimiento + (iDiasFijos(0) - Day(Vencimiento))
End If
End If
End Function
En el ejemplo que me pones tendrás que:
Vencimiento ("05/04/2004", 30, 15, 30) = 15/05/2004
La función trata bien el salto entre años y meses. La única pega la tendrás con los días fijos 29,30,31 y febrero.
Por ejemplo, fecha factura el 1/1/2004, efecto 30 y día fijo 30, entonces el vencimiento será el 31/1/2004, pero el día fijo que le corresponde sería el 30/2/2004 que no existe. En este caso la función te devuelve el día 1/3/2004. Queda en tu mano aceptar esta solución o retocar el código para que devuelva el último día del mes de febrero.
No olvides valorar la respuesta.
Respuesta
Desculpa la molestia
A ver...
No entiendo que quieres decir con 5 días fijo...
Podrías explicarme eso...
Por lo pronto te adelante que para sumar fechas se usa el comando
dateadd(intervalo, fecha, cantidad)
Intervalo sirve para especificar si son "d" días, "m" meses, etc
Los que se van a sumar
A ver explicame un poco más

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas