110 lines
4.0 KiB
Plaintext
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 |