{ ------------------------------------------------------------------------------- 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