GLOBALS "adprgb000.4gl" DEFINE periodo SMALLINT, fecha_inicial,fecha_final DATE DEFINE arr_vacaciones DYNAMIC ARRAY OF RECORD genera, empleado, departamento, puesto STRING, sueldo , valor_vacacion , proporcion_vac FLOAT, fecha_ult_vac CHAR(10), fecha_salida DATE, estado STRING, dias_tomados , balance_dias SMALLINT, num_emp INT, fecha_efectiva DATE, tipo_sueldo CHAR(20) END RECORD, xnum_nomi INT, xtipo_emp VARCHAR(2) MAIN DEFER INTERRUPT CALL STARTLOG("adprmt33.log") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "smarmotech" USER usuarios USING clave CALL adprmt033() END MAIN FUNCTION adprmt033() CALL ui.Interface.loadStyles("formularios") OPEN WINDOW w1 WITH FORM "adfmwd016" DIALOG ATTRIBUTE(UNBUFFERED) INPUT BY NAME periodo,xtipo_emp,xnum_nomi AFTER FIELD xnum_nomi SELECT a.num_nomi FROM notb00010 a WHERE a.num_nomi = xnum_nomi AND a.tipo_emp =xtipo_emp IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD xtipo_emp END IF AFTER FIELD periodo SELECT MIN(a.fecha_inicio),MAX(a.fecha_corte) INTO fecha_inicial,fecha_final FROM prdtable a WHERE a.ano = periodo IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD periodo END IF DISPLAY BY NAME fecha_inicial,fecha_final AFTER INPUT DECLARE busca_vacaciones CURSOR FOR SELECT 'NO',RTRIM(a.nom1_emp)+' '+ISNULL(a.apell1_emp,' '),b.nom_dpto,c.nom_puesto,a.sueldo_ac,'0','0',' ',' ', ' ','0','0',a.num_emp,a.fech_efec, a.tipo_sueldo FROM adtb00003 a,adtb00001 b,adtb00004 c WHERE num_emp not in (select num_emp from notb00008 where cod_mov = 36 AND fecha between fecha_inicial and fecha_final) and a.departamento = b.departamento and a.cod_puesto = c.cod_puesto and a.status_t is null order by b.nom_dpto LET idx = 1 FOREACH busca_vacaciones INTO arr_vacaciones[idx].* SELECT MAX(CONVERT(CHAR(10),a.fecha,103)) INTO arr_vacaciones[idx].fecha_ult_vac FROM notb00008 a WHERE a.num_emp = arr_vacaciones[idx].num_emp AND a.cod_mov = 36 LET idx = idx + 1 END FOREACH END INPUT INPUT ARRAY arr_vacaciones FROM svacaciones.* ATTRIBUTE(WITHOUT DEFAULTS) BEFORE INPUT CALL DIALOG.setActionActive( "insert", FALSE ) CALL DIALOG.setActionActive( "append", FALSE ) CALL DIALOG.setActionActive( "delete", FALSE ) CALL dialog.setActionHidden('insert',TRUE) CALL dialog.setActionHidden('append',TRUE) CALL dialog.setActionHidden('delete',TRUE) ON ACTION procesar ATTRIBUTE(TEXT="Procesa",IMAGE="fa-american-sign-language-interpreting") FOR idx = 1 TO arr_vacaciones.getLength() IF arr_vacaciones[idx].genera = "SI" THEN CALL vacaciones('A',arr_vacaciones[idx].tipo_sueldo,'36',null,TODAY, arr_vacaciones[idx].fecha_efectiva, arr_vacaciones[idx].fecha_salida,xnum_nomi,arr_vacaciones[idx].num_emp, xtipo_emp,arr_vacaciones[idx].sueldo) RETURNING arr_vacaciones[idx].estado,arr_vacaciones[idx].proporcion_vac, arr_vacaciones[idx].valor_vacacion, arr_vacaciones[idx].dias_tomados,arr_vacaciones[idx].balance_dias END IF END FOR END INPUT ON ACTION CANCEL ATTRIBUTE(TEXT="Cancelar",IMAGE="quit") EXIT PROGRAM END DIALOG CLOSE WINDOW w1 END FUNCTION