Files
MBS/PROYECTO/addir/adprrp015.4gl
T

229 lines
7.4 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP015
OBJETIVO : LISTA LOS ADIESTRAMIENTOS QUE HAN RECIBIDO
LOS EMPLEADOS Y UN TOTAL DE LOS ADIESTRAMIENTOS
QUE HA RECIBIDO CADA UNO DE ELLOS
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Junio 25, 1993
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
FUNCTION adprrp015()
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE l_adiestra RECORD
num_emp LIKE adtb00022.num_emp,
departamento LIKE adtb00022.departamento,
nivel_emp LIKE adtb00022.nivel_emp,
cod_puesto LIKE adtb00022.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
nom_puesto LIKE adtb00004.nom_puesto,
nom_evento LIKE adtb00022.nom_evento,
fech_evento LIKE adtb00022.fech_evento,
costo_evento LIKE adtb00022.costo_evento
END RECORD
DEFINE fecha_inicio,fecha_fin DATE
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM adfmrp005 FROM "adfmrp005"
DISPLAY FORM adfmrp005
CALL pantalla()
DISPLAY "adprrp015" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Adiestramientos Empleados" 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
INPUT BY NAME fecha_inicio, fecha_fin
BEFORE FIELD fecha_inicio
LET fecha_inicio = TODAY
DISPLAY BY NAME fecha_inicio
AFTER FIELD fecha_fin
IF fecha_fin IS NULL THEN
LET fecha_fin = TODAY
DISPLAY BY NAME fecha_fin
END IF
END INPUT
## DEFINICION DEL CRITERIO DE BUSQUEDA PARA LA IMPRESION DEL REPORTE
CONSTRUCT criterio ON a.num_emp FROM 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.num_emp,a.departamento,a.nivel_emp,a.cod_puesto,b.nom1_emp, ",
" b.apell1_emp,c.nom_puesto,a.nom_evento,a.fech_evento, ",
" a.costo_evento ",
"FROM adtb00022 a,adtb00003 b,adtb00004 c ",
"WHERE a.num_emp = b.num_emp AND a.departamento = b.departamento AND ",
" a.nivel_emp = b.nivel_emp AND a.cod_puesto = b.cod_puesto AND ",
" a.cod_puesto= c.cod_puesto AND a.status_t is null AND ",
" a.fech_evento BETWEEN ? AND ? AND ",
criterio clipped," ORDER BY 1,9"
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
DECLARE accion CURSOR FOR busca
OPEN accion USING fecha_inicio,fecha_fin
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT adiestrar TO archivo
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE SALIDA
## AL REPORTE
FOREACH accion INTO l_adiestra.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF status = NOTFOUND THEN
EXIT FOREACH
ELSE
OUTPUT TO REPORT adiestrar(l_adiestra.*)
END IF
END FOREACH
FINISH REPORT adiestrar
RUN imprime
CLEAR SCREEN
END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT adiestrar(x)
DEFINE x RECORD
num_emp LIKE adtb00022.num_emp,
departamento LIKE adtb00022.departamento,
nivel_emp LIKE adtb00022.nivel_emp,
cod_puesto LIKE adtb00022.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
nom_puesto LIKE adtb00004.nom_puesto,
nom_evento LIKE adtb00022.nom_evento,
fech_evento LIKE adtb00022.fech_evento,
costo_evento LIKE adtb00022.costo_evento
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
DEFINE num_ad,l SMALLINT
DEFINE monto DECIMAL(10,2)
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.comp_on,letras.negrillas_on
PRINT COLUMN 1, "adprrp015",
COLUMN 33, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 105, "Pag. ",pageno USING "###"
PRINT COLUMN 33, " Sistema de Administracion de Personal",
COLUMN 105, today USING "dd/mm/yyyy"
PRINT COLUMN 33, " Adiestramientos Empleados",
COLUMN 108, hora
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------",
"----------"
PRINT COLUMN 2, "Adiestramientos:",
COLUMN 51, "Fechas Eventos:",
COLUMN 83, "Costos:"
PRINT COLUMN 2, "----------------------------------------------------",
"---------------------------------------------------",
"---------"
PRINT COLUMN 14, letras.negrillas_off
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.num_emp
PRINT COLUMN 1, letras.negrillas_on,
COLUMN 2, x.num_emp USING "&&&&","-",
COLUMN 7, x.departamento USING "&&&&","-",
COLUMN 12, x.nivel_emp USING "&&","-",
COLUMN 15, x.cod_puesto USING "&&",
COLUMN 19, x.nom1_emp clipped," ",x.apell1_emp clipped,
COLUMN 51, x.nom_puesto,
COLUMN 120, letras.negrillas_off
ON EVERY ROW
## AQUI SE INCREMENTA LA VARIABLE QUE GUARDA LA CANTIDAD DE ADIESTRAMIENTOS
## RECIBIDOS POR CADA EMPLEADO Y EL COSTO DE CADA ADIESTRAMIENTO
PRINT COLUMN 2, x.nom_evento CLIPPED,
COLUMN 54, x.fech_evento USING "dd/mm/yyyy",
COLUMN 77, x.costo_evento USING "#,###,###.##"
AFTER GROUP OF x.num_emp
## AQUI SE IMPRIME EL TOTAL DE ADIESTRAMIENTOS RECIBIDOS POR CADA EMPLEADO
PRINT COLUMN 77, "------------"
PRINT COLUMN 2, "ADIESTRAMIENTOS RECIBIDOS: ",
GROUP COUNT(*) USING "#<",
COLUMN 63, "TOTAL COSTO:",
COLUMN 77, GROUP SUM(x.costo_evento) USING "#,###,###.##"
SKIP 1 LINE
ON LAST ROW
## AQUI SE APAGA EL CARACTER DE IMPRESION COMPRIMIDO
PRINT ASCII 18
PRINT ASCII 27, ASCII 80
END REPORT