Files

157 lines
4.8 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP020
OBJETIVO : LISTA LAS HORAS DE ENTRADAS Y SALIDAS DIARIAS
DE TODOS LOS EMPLEADOS DE LA EMPRESA ORDENADO
POR DEPARTAMENTO
PROGRAMADOR : Ing. Juan Soto
FECHA REALIZACION : Julio 01, 1993
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
## DEFINICION DE VARIABLE PARA BUSCAR LAS HORAS DE FORMA ORDENADA
DEFINE reg1 INTEGER,
fecha_inicial,fecha_final DATETIME YEAR TO MINUTE
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL adprrp020()
END MAIN
FUNCTION adprrp020()
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE diaria RECORD
fecha DATETIME YEAR TO MINUTE,
checktype CHAR(10),
nom_dpto VARCHAR(60),
num_emp,departamento, nivel_emp,cod_puesto INT,
nom1_emp,apell1_emp VARCHAR(60)
END RECORD
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM adfmrp020 FROM "adfmrp020"
DISPLAY FORM adfmrp020
DISPLAY "adprrp020" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Entradas y Salidas Diarias" AT 6,30 ATTRIBUTE(BLACK)
DIALOG ATTRIBUTE(UNBUFFERED)
INPUT BY NAME fecha_inicial,fecha_final
BEFORE INPUT
LET fecha_inicial = CURRENT
LET fecha_final = CURRENT
DISPLAY "dato ",fecha_inicial
DISPLAY BY NAME fecha_inicial,fecha_final
AFTER INPUT
END INPUT
CONSTRUCT criterio ON c.departamento,a.num_emp FROM departamento,num_emp
BEFORE CONSTRUCT
CALL departamentos()
AFTER CONSTRUCT
END CONSTRUCT
ON ACTION CANCEL ATTRIBUTE(TEXT="Cancelar",IMAGE="quit")
EXIT PROGRAM
ON ACTION imprimir ATTRIBUTE(TEXT="Imprime", IMAGE="printer")
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE
LET SELEC =
" SELECT MIN(a.checktime),a.checktype,b.nom_dpto,a.num_emp,c.departamento,
c.nivel_emp,c.cod_puesto,c.nom1_emp,c.apell1_emp
FROM CHECKINOUT a,adtb00001 b,adtb00003 c
WHERE c.departamento = b.departamento AND a.num_emp = c.num_emp AND
c.status_t is null and a.CHECKTIME between '",fecha_inicial,"' and '",fecha_final,"' AND ",
criterio CLIPPED,
" GROUP BY b.nom_dpto,a.num_emp,c.departamento,
c.nivel_emp,c.cod_puesto,c.nom1_emp,c.apell1_emp,a.checktype
order by c.departamento,a.num_emp
"
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
CALL seleccionarSalida() RETURNING r_output
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE SALIDA
## AL REPORTE
LET idx = 1
FOREACH accion INTO reg1,diaria.*
IF idx = 1 THEN
LET r_filename = 'noprrp020.4rp'
LET preview = 1
IF fgl_report_loadCurrentSettings(r_filename) THEN
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
START REPORT memo3 TO XML HANDLER HANDLER
EXIT FOREACH
END IF
END IF
OUTPUT TO REPORT memo3(diaria.*)
END FOREACH
FINISH REPORT memo3
END DIALOG
END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA EL
## REPORTE
REPORT memo3(x)
DEFINE x RECORD
fecha DATETIME YEAR TO MINUTE,
checktype CHAR(10),
nom_dpto VARCHAR(60),
num_emp,departamento, nivel_emp,cod_puesto INT,
nom1_emp,apell1_emp VARCHAR(60)
END RECORD
DEFINE hora CHAR(5),
tiporegistro VARCHAR(30),
estado STRING
ORDER BY x.departamento,x.num_emp,x.fecha
FORMAT
FIRST PAGE HEADER
SELECT a.nombre INTO p_companias.nombre FROM companias a
LET hora = TIME
PRINTX p_companias.nombre,hora,fecha_inicial,fecha_final
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.departamento
PRINTX x.nom_dpto
ON EVERY ROW
IF x.checktype = 'I' THEN
LET tiporegistro ='ENTRADA'
ELSE
LET tiporegistro = 'SALIDAS'
END IF
PRINTX x.num_emp,x.checktype,x.nom1_emp,x.apell1_emp,x.fecha,x.nom_dpto,x.departamento,tiporegistro,estado
ON LAST ROW
LET reg1 = COUNT(*)
PRINTX reg1
END REPORT