Files
2026-09-22 20:38:51 -04:00

233 lines
7.0 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. Betania Guerrero Perez
FECHA REALIZACION : Julio 01, 1993
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
## DEFINICION DE VARIABLE PARA BUSCAR LAS HORAS DE FORMA ORDENADA
DEFINE reg1 INTEGER
FUNCTION adprrp020()
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE diaria RECORD
fecha LIKE adtb00023.fecha,
nom_dpto LIKE adtb00001.nom_dpto,
num_emp LIKE adtb00023.num_emp,
departamento LIKE adtb00023.departamento,
nivel_emp LIKE adtb00023.nivel_emp,
cod_puesto LIKE adtb00023.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
hora_ent LIKE adtb00023.hora_ent,
hora_sal LIKE adtb00023.hora_sal,
depto CHAR(4),
depart CHAR(4)
END RECORD
WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM adfmrp020 FROM "adfmrp020"
DISPLAY FORM adfmrp020
CALL pantalla()
DISPLAY "adprrp020" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Entradas y Salidas Diarias" AT 6,30 ATTRIBUTE(BLACK)
## INDICA EL TIPO DE PAPEL NECESARIO PARA EL REPORTE. 1 - PAPEL 9 1/2 X 11
## 2 - PAPEL 14 7/8 X 11
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
## DEFINICION DEL CRITERIO DE BUSQUEDA PARA LA IMPRESION DEL REPORTE
CONSTRUCT criterio ON a.fecha,a.num_emp FROM fecha,num_emp
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime,letras.*, archivo
AFTER CONSTRUCT
EXIT CONSTRUCT
END CONSTRUCT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE
LET SELEC =
"SELECT a.rowid,a.fecha,b.nom_dpto,a.num_emp,a.departamento, ",
" a.nivel_emp,a.cod_puesto,c.nom1_emp,c.apell1_emp, ",
" a.hora_ent,a.hora_sal ",
"FROM adtb00023 a,adtb00001 b,adtb00003 c ",
"WHERE a.departamento = b.departamento AND a.num_emp = c.num_emp AND ",
" a.status_t is null AND ",criterio clipped," ORDER BY 5,6,1 "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
## SE PREPARA LA INFORMACION SELECCIONADA
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
## SE DECLARA UN CURSOR PARA BUSCAR LA INFORMACION SELECCIONADA
DECLARE accion CURSOR FOR busca
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT memo3 TO archivo
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE SALIDA
## AL REPORTE
FOREACH accion INTO reg1,diaria.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
## ASIGNACION DE VARIABLES PARA AGRUPAR LOS DEPARTAMENTOS POR EL PRIMER
## NUMERO
LET diaria.depto = diaria.departamento
LET diaria.depart = diaria.depto[1,1]
OUTPUT TO REPORT memo3(diaria.*)
END FOREACH
FINISH REPORT memo3
RUN imprime
CLEAR SCREEN
END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA EL
## REPORTE
REPORT memo3(x)
DEFINE x RECORD
fecha LIKE adtb00023.fecha,
nom_dpto LIKE adtb00001.nom_dpto,
num_emp LIKE adtb00023.num_emp,
departamento LIKE adtb00023.departamento,
nivel_emp LIKE adtb00023.nivel_emp,
cod_puesto LIKE adtb00023.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
hora_ent LIKE adtb00023.hora_ent,
hora_sal LIKE adtb00023.hora_sal,
depto CHAR(4),
depart CHAR(4)
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
FORMAT
PAGE HEADER
LET hora = time
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 1, letras.normal,
COLUMN 2, "adprrp020",
COLUMN 14, letras.negrillas_on,
COLUMN 15, letras.doble_on,
COLUMN 16, letras.comp_on,
COLUMN 17, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 65, letras.negrillas_off,
COLUMN 66, letras.doble_off,
COLUMN 67, letras.comp_off,
COLUMN 76, "Pag. ",pageno using "###"
PRINT COLUMN 22, "Sistema de Administracion de Personal",
COLUMN 75, today using "dd/mm/yyyy"
PRINT COLUMN 27, "Entradas y Salidas Diarias",
COLUMN 78, hora
SKIP 1 LINES
PRINT COLUMN 2, "===============================================",
"================================="
PRINT COLUMN 55, "Horas",
COLUMN 66, "Horas"
PRINT COLUMN 2, "Ficha No.",
COLUMN 21, "Nombre Empleado",
COLUMN 44, "Fecha",
COLUMN 55, "Entrada",
COLUMN 66, "Salida"
PRINT COLUMN 2, "===============================================",
"================================="
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.depart
PRINT COLUMN 1, letras.negrillas_on,
COLUMN 5, "Departamento:",
COLUMN 19, x.nom_dpto,
COLUMN 55, letras.negrillas_off
BEFORE GROUP OF x.num_emp
PRINT COLUMN 2, x.num_emp using "&&&&","-",
COLUMN 7, x.departamento using "&&&&","-",
COLUMN 12, x.nivel_emp using "&&","-",
COLUMN 15, x.cod_puesto using "&&",
COLUMN 21, x.nom1_emp clipped," ",x.apell1_emp clipped;
ON EVERY ROW
PRINT COLUMN 42, x.fecha USING "dd/mm/yyyy",
COLUMN 56, x.hora_ent,
COLUMN 67, x.hora_sal
AFTER GROUP OF x.depart
SKIP 1 LINE
END REPORT