Calculo días hábiles

Estimado Ingeniero Antonio García. Solicito su colaboración, para obtener una función que permita imprimir un informe con un campo en el cual pueda mostrar los días hábiles transcurridos, desde una fecha de radicación almacenada en una tabla a la fecha de hoy.

1 respuesta

Respuesta
1
Esta función que solcitas es simple, existe una función que devuelve el nombre del día, la cual es DAYNAME(), con esta puedes encontrar los días SÁBADO o SATURDAY, y DOMINGO o SUNDAY, con respecto a los días de fiesta o asueto según tu país, puedes optar por un vector de tipo fecha, en el cual incluyas los días de asueto o feria, sin embargo este vector puede ser cargado desde una tabla o directamente en hard code, o sea incluyendo en código los días correspondientes.
Esta evaluación estará directamente en una función, la cual podrá ser usada en base a un loop el cual estuviera determinado con una fecha inicial y una final, y en su interior, asignar en un vector o datawindow los días que no cumplan con la evaluación de la función.
La función
FUNCION fp_dia_habil(<fecha>)
BOOLEAN lb_return = TRUE
BOOLEAN lb_exit
INTEGER li_for
STRING ls_day_name
ls_day_name = DAYNAME(<fecha>)
ls_day_name = LOWER(ls_day_name)
lb_return = NOT((ls_day_name = 'saturday') OR (ls_day_name = 'sunday'))
IF lb_return THEN
FOR li_for = 1 TO UPPERBOUND(vector_dias_fiesta[])
lb_exit = (LOWER(vector_dias_fiesta[li_for] = <fecha>))
IF lb_exit THEN
lb_return = NOT( lb_exit)
EXIT
END IF
NEXT
END IF
RETURN(lb_return)
LA EVALUACION
BOOLEAN lb_loop
BOOLEAN lb_fecha_habil
DATE ld_fecha
ld_fecha = ad_fecha_desde
DO
lb_loop = ((ld_fecha >= ad_fecha_desde) AND (ld_fecha <= ad_fecha_hasta))
IF lb_loop THEN
IF fp_dia_habil(ld_fecha) THEN
.....
.....
<proceso de acumulacion de fechas habiles.>
END IF
END IF
ld_fecha = RELATIVEDATE(ld_fecha, 1)
LOOP WHILE lb_loop
NOTAS
*- las variables ad_fecha_desde y ad_fecha_hasta son parametros que
recibe la funcion en donde se evaluan y generan los dias habiles

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas