{ ------------------------------------------------------------------------------- PROGRAMA : ADPRRP019 OBJETIVO : LISTA LAS AMONESTACIONES QUE HAN RECIBIDO LOS EMPLEADOS Y EL TOTAL DE AMONESTACIONES QUE HAN RECIBIDO CADA UNO DE ELLOS PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Junio 28, 1993 ------------------------------------------------------------------------------- } GLOBALS "adprgb000.4gl" FUNCTION adprrp019() ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE amonestan RECORD num_emp LIKE adtb00026.num_emp, departamento LIKE adtb00026.departamento, nivel_emp LIKE adtb00026.nivel_emp, cod_puesto LIKE adtb00026.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, nom_puesto LIKE adtb00004.nom_puesto, nom_dpto LIKE adtb00001.nom_dpto, amon_num LIKE adtb00026.amon_num, fecha LIKE adtb00026.fecha, violacion LIKE adtb00026.violacion, violacion1 LIKE adtb00026.violacion END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM adfmrp009 FROM "adfmrp009" DISPLAY FORM adfmrp009 CALL pantalla() DISPLAY "adprrp019" AT 4,3 ATTRIBUTE(RED) DISPLAY "Amonestaciones" AT 6,36 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 ## SE INDICA EL RANGO DE FECHA DESEADO PARA LISTAR LAS AMONESTACIONES LET datos.fech_ini = NULL LET datos.fech_fin = NULL INPUT BY NAME datos.fech_ini,datos.fech_fin WITHOUT DEFAULTS ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo AFTER FIELD fech_ini IF datos.fech_ini IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_ini END IF AFTER FIELD fech_fin IF datos.fech_fin IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_fin END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF EXIT INPUT END INPUT ## DEFINICION DEL CRITERIO DE BUSQUEDA PARA LA IMPRESION 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,d.nom_dpto,a.amon_num,a.fecha, ", " a.violacion,a.violacion1 ", "FROM adtb00026 a,adtb00003 b,adtb00004 c,adtb00001 d ", "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.departamento=d.departamento AND ", " a.fecha between ? and ? AND a.status_t is null AND ", criterio clipped," ORDER BY 1" 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 OPEN accion using datos.fech_ini,datos.fech_fin DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT amonestar TO archivo ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE SALIDA ## AL REPORTE FOREACH accion INTO amonestan.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF OUTPUT TO REPORT amonestar(amonestan.*) END FOREACH FINISH REPORT amonestar RUN imprime CLEAR SCREEN END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT amonestar(x) DEFINE x RECORD num_emp LIKE adtb00026.num_emp, departamento LIKE adtb00026.departamento, nivel_emp LIKE adtb00026.nivel_emp, cod_puesto LIKE adtb00026.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, nom_puesto LIKE adtb00004.nom_puesto, nom_dpto LIKE adtb00001.nom_dpto, amon_num LIKE adtb00026.amon_num, fecha LIKE adtb00026.fecha, violacion LIKE adtb00026.violacion, violacion1 LIKE adtb00026.violacion END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE hora CHAR(5) DEFINE num_amon SMALLINT 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, COLUMN 2, "adprrp019", COLUMN 14, letras.negrillas_on, COLUMN 45, "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 139, "Pag. ",pageno using "###" PRINT COLUMN 48, "Sistema de Administracion de Personal", COLUMN 134, today using "dd/mm/yyyy" PRINT COLUMN 59, "Amonestaciones", COLUMN 137, hora skip 1 line PRINT COLUMN 2, "Desde: ",datos.fech_ini using "dd/mm/yyyy", COLUMN 20, "Hasta: ",datos.fech_fin using "dd/mm/yyyy" PRINT COLUMN 2, "---------------------------------------------------", "---------------------------------------------------", "--------------------------------------" PRINT COLUMN 114, "Numero", COLUMN 130, "Fecha" PRINT COLUMN 2, "Ficha No.", COLUMN 17, "Nombre Empleado", COLUMN 49, "Puesto", COLUMN 81, "Departamento", COLUMN 114, "Documento", COLUMN 130, "Amonestacion" PRINT COLUMN 2, "----------------------------------------------------", "---------------------------------------------------", "-------------------------------------" skip 1 line ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.num_emp LET num_amon = 0 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 83, x.nom_dpto, COLUMN 113, letras.negrillas_off ON EVERY ROW ## AQUI SE CALCULA LA CANTIDAD DE AMONESTACIONES QUE RECIBE CADA EMPLEADO LET num_amon = num_amon + 1 PRINT COLUMN 2, x.violacion clipped,x.violacion1[1,55] CLIPPED, COLUMN 118, x.amon_num using "####", COLUMN 132, x.fecha using "dd/mm/yyyy" AFTER GROUP OF x.num_emp ## AQUI SE IMPRIMEN EL TOTAL DE AMONESTACIONES QUE RECIBE CADA EMPLEADO PRINT COLUMN 114, "Total Amonestaciones:", COLUMN 136, num_amon using "#<<" ON LAST ROW ## AQUI SE APAGA EL CARACTER DE IMPRESION COMPRIMIDO PRINT ASCII 18 PRINT ASCII 27, ASCII 80 END REPORT