151 lines
5.2 KiB
Plaintext
151 lines
5.2 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : NOPRRP039
|
|
OBJETIVO : REPORTE EMPLEADOS
|
|
PROGRAMADOR : Ing. JUAN SOTO
|
|
FECHA REALIZACION : Abril, 20 2010
|
|
------------------------------------------------------------------
|
|
}
|
|
GLOBALS "noprgb000.4gl"
|
|
|
|
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
|
|
r_filename STRING, -- filename of Report Design Document including .4rp extension
|
|
r_output STRING, -- output format option
|
|
preview INTEGER -- TRUE/FALSE, to set preview option
|
|
DEFINE chempleados STRING,
|
|
pano1,pano2 SMALLINT
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
CALL noprrp039()
|
|
END MAIN
|
|
FUNCTION noprrp039()
|
|
DEFINE tipoEmpleados SMALLINT
|
|
|
|
OPEN WINDOW w1 WITH FORM "nofmrp039"
|
|
CONSTRUCT BY NAME criterio ON a.num_emp,a.cod_puesto,a.nomina,a.nom1_emp,a.apell1_emp,a.fech_efec,a.fecha_salida,a.fech_nac
|
|
BEFORE CONSTRUCT
|
|
LET kpuesto = ui.ComboBox.forName("formonly.cod_puesto")
|
|
CALL puestos()
|
|
AFTER CONSTRUCT
|
|
IF int_flag THEN
|
|
CALL msg(2)
|
|
LET int_flag = FALSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
END CONSTRUCT
|
|
LET chempleados = NULL
|
|
INPUT BY NAME tipoEmpleados,pano1,pano2
|
|
IF tipoEmpleados = 9 THEN
|
|
LET chEmpleados = "TODOS LOS EMPLEADOS"
|
|
LET selec =
|
|
"SELECT a.num_emp,a.departamento,a.cod_puesto,",
|
|
" a.nom1_emp,a.apell1_emp,a.apell2_emp,a.calle,a.casa_num,CONVERT(CHAR(10),a.fech_efec,103), ",
|
|
" a.cedula,a.sueldo_ac ",
|
|
" FROM adtb00003 a WHERE ",criterio CLIPPED, " ORDER BY a.departamento,a.num_emp "
|
|
END IF
|
|
IF tipoEmpleados = 0 THEN
|
|
LET chEmpleados = "EMPLEADOS ACTIVOS"
|
|
LET selec =
|
|
"SELECT a.num_emp,a.departamento,a.cod_puesto,",
|
|
" a.nom1_emp,a.apell1_emp,a.apell2_emp,a.calle,a.casa_num,CONVERT(CHAR(10),a.fech_efec,103), ",
|
|
" a.cedula,a.sueldo_ac ",
|
|
" FROM adtb00003 a WHERE ",criterio CLIPPED,
|
|
" AND (a.status_t is null or a.status_t = 'I')",
|
|
" ORDER BY a.departamento,a.num_emp "
|
|
END IF
|
|
|
|
IF tipoEmpleados = 1 THEN
|
|
LET chEmpleados = "EMPLEADOS DESACTIVOS"
|
|
LET selec =
|
|
"SELECT a.num_emp,a.departamento,a.cod_puesto,",
|
|
" a.nom1_emp,a.apell1_emp,a.apell2_emp,a.calle,a.casa_num,CONVERT(CHAR(10),a.fech_efec,103),",
|
|
" a.cedula,a.sueldo_ac ",
|
|
" FROM adtb00003 a WHERE ",criterio CLIPPED,
|
|
" AND a.status_t is not null",
|
|
" ORDER BY a.departamento,a.num_emp "
|
|
|
|
END IF
|
|
IF int_flag THEN
|
|
CALL msg(2)
|
|
LET int_flag = FALSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE busca_emp CURSOR FOR comando
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
LET r_filename = 'noprrp039.4rp'
|
|
LET idx =1
|
|
FOREACH busca_emp INTO emplea.num_emp,emplea.departamento,emplea.cod_puesto,
|
|
emplea.nom1_emp,emplea.apell1_emp,emplea.apell2_emp,
|
|
emplea.calle,emplea.casa_num,emplea.fech_efec,
|
|
emplea.cedula,emplea.sueldo_ac
|
|
#CALL fgl_winmessage("imagen",emplea.foto_empleado,"stop")
|
|
IF idx = 1 THEN
|
|
# IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
# LET r_output='SVG'
|
|
# LET preview=1
|
|
# CALL fgl_report_selectDevice(r_output) -- changing default
|
|
# CALL fgl_report_selectPreview(preview) -- changing default
|
|
# LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
# END IF
|
|
|
|
# IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT reporte TO "archivo"
|
|
# END IF
|
|
END IF
|
|
LET idx = idx +1
|
|
|
|
IF pano1 > 0 AND pano2 > 0 THEN
|
|
LET tiempo = (today-emplea.fech_efec)/365
|
|
IF tiempo > pano1 AND tiempo < pano2 THEN
|
|
|
|
OUTPUT TO REPORT reporte (emplea.*,tiempo)
|
|
END IF
|
|
ELSE
|
|
|
|
OUTPUT TO REPORT reporte (emplea.*,tiempo)
|
|
END IF
|
|
END FOREACH
|
|
IF idx > 1 THEN
|
|
CALL fgl_winmessage("REPORTE","REPORTE TERMINADO","STOP")
|
|
|
|
FINISH REPORT reporte
|
|
ELSE
|
|
CALL fgl_winmessage("ERROR","NO EXISTEN REGISTROS CON ESTA CONDCION","STOP")
|
|
|
|
END IF
|
|
CLOSE WINDOW w1
|
|
END FUNCTION
|
|
REPORT reporte(x,xtiempo)
|
|
DEFINE nombre_depto,nombre_puesto VARCHAR(30),
|
|
x RECORD LIKE adtb00003.*,
|
|
total_empleados,total_empleados_g INT,
|
|
xtiempo SMALLINT
|
|
# ORDER BY x.departamento
|
|
FORMAT
|
|
BEFORE GROUP OF x.departamento
|
|
LET nombre_depto = NULL
|
|
SELECT a.nom_dpto INTO nombre_depto FROM adtb00001 a
|
|
WHERE a.departamento = x.departamento
|
|
|
|
LET total_empleados = 0
|
|
|
|
ON EVERY ROW
|
|
SELECT a.nom_puesto INTO nombre_puesto FROM adtb00004 a
|
|
WHERE a.cod_puesto = x.cod_puesto
|
|
|
|
LET total_empleados = total_empleados + 1
|
|
PRINTX x.*,p_companias.nombre,nombre_depto,nombre_puesto,chempleados,
|
|
total_empleados,xtiempo
|
|
ON LAST ROW
|
|
LET total_empleados_g = COUNT(*)
|
|
PRINTX total_empleados_g
|
|
END REPORT |