Files

110 lines
4.0 KiB
Plaintext

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