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 de Antonio Garcia
1
1
Antonio Garcia, clipper todas sus versiones (manejo total) power builder todas...
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