Tiene una tabla para capturar los días festivos, si no captura información en esta tabla la función tendrá un error de calculo por tal razón hay que tener esta tabla con datos correctos y actuales y tener un campo índice principal de fecha.
FUNCTION diashab(fecha1,fecha2)
LOCAL num AS INTEGER
* validando entrada de fechas
IF (!EMPTY(EVALUATE('fecha1'))) AND (!EMPTY(EVALUATE('fecha2')))
* validando fechas
IF fecha1 < fecha2
* numero de dias habilies
num=0
* dias entre 2 fechas
dias=(fecha2-fecha1)+1
* para sumar un dia a la fecha inicial
feccom=fecha1
* habre la tabla con las fechas de dias festivos (libres)
IF !USED('diainabil')
rut_nom=LOCFILE('diainabil','dbf')
USE &rut_nom ALIAS diainabil IN 0 ORDER fechaini
ENDIF
SELECT diainabil
* contando los dias habiles
FOR i=1 TO dias
* contando sin incluir a sabados y domingos
IF !INLIST(DOW(feccom),1,7)
num=num+1
ENDIF
* restando las fechas de dias libres entre semana.
IF SEEK(feccom) AND INLIST(DOW(feccom),2,3,4,5,6)
num=num-1
ENDIF
*incrementa la fecha
feccom=feccom+1
ENDFOR
* retorna el numero de dias habiles entre esas fechas
USE IN diainabil
RETURN num
ELSE
* eror en fecha
RETURN .F.
ENDIF
ELSE
* error en tipo de datos
RETURN .F.
ENDIF
ENDFUNC
Emmanuel Nuñez Sanchez
¿Cuál es la estructura de la tabla de los días festivos?
ResponderBorrarEn mi trabajo necesitaba calcular una fecha límite excluyendo fines de semana y feriados, y encontré una herramienta online que me mostró cómo contar solo los días laborales de manera automática, algo que me ahorró muchísimo tiempo.
ResponderBorrar