{ ------------------------------------------------------------------------------- PROGRAMA : ADPRRP029 OBJETIVO : Listar las informaciones generales de los Empleados Quincenales y Semanales y Ex-Empleados PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Junio 24, 1993 ------------------------------------------------------------------------------- } GLOBALS "adprgb000.4gl" FUNCTION adprrp029() ## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE DEFINE list_29 RECORD num_emp LIKE adtb00003.num_emp, departamento LIKE adtb00003.departamento, nivel_emp LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, fech_efec DATE, nom_dpto LIKE adtb00001.nom_dpto, nom_puesto LIKE adtb00004.nom_puesto, sal_min DECIMAL(12,2), sal_max DECIMAL(12,2), tipo_emp CHAR(1) END RECORD #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM adfmrp029 FROM "adfmrp001" DISPLAY FORM adfmrp029 CALL pantalla() DISPLAY "adprrp029" AT 4,3 ATTRIBUTE(RED) DISPLAY "Relacion de Personal Por Centro de Costo" AT 6,22 ATTRIBUTE(BLACK) ## INDICA EL PAPEL NECESARIO PARA IMPRIMIR EL REPORTE. 1 - PAPEL 9 1/2 X 11 ## 2 - PAPEL 14 7/8 X 11 LET tipo_papel = 2 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime, letras.*, archivo ## AQUI SE DIGITA LA VARIABLE QUE INDICA LA CONDICION DEL REPORTE, ES DECIR ## SI SE TRATA DE EMPLEADOS SEMANALES O QUINCENALES CONSTRUCT CRITERIO ON a.nomina FROM decide 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 DE LOS QUINCENALES LET SELEC = "SELECT UNIQUE a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ", " a.nom1_emp,a.apell1_emp,a.fech_efec,c.nom_dpto,b.nom_puesto, ", " b.salario_min,b.salario_max,a.nomina ", " FROM adtb00003 a,adtb00004 b,adtb00001 c ", " WHERE a.cod_puesto=b.cod_puesto AND a.departamento=c.departamento AND ", " a.departamento BETWEEN 6000 AND 6999 AND (a.status_t is null OR ", " a.status_t NOT IN ('D','E','T')) AND ",criterio clipped DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) ## AQUI SE PREPARA LA INFORMACION SELECCIONADA PREPARE busca FROM selec DECLARE accion CURSOR FOR busca OPEN accion DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT empleado29 TO archivo ## AQUI SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE FOREACH accion INTO list_29.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF OUTPUT TO REPORT empleado29(list_29.*) END FOREACH FINISH REPORT empleado29 RUN imprime CLEAR SCREEN END FUNCTION ## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT empleado29(x) DEFINE x RECORD num_emp LIKE adtb00003.num_emp, departamento LIKE adtb00003.departamento, nivel_emp LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, fech_efec DATE, nom_dpto LIKE adtb00001.nom_dpto, nom_puesto LIKE adtb00004.nom_puesto, sal_min DECIMAL(12,2), sal_max DECIMAL(12,2), tipo_emp CHAR(1) END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE hora CHAR(5) DEFINE l SMALLINT DEFINE varia CHAR(12) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 2 BOTTOM MARGIN 4 ORDER BY x.departamento,x.nivel_emp,x.num_emp FORMAT PAGE HEADER LET hora = time IF decide = "Q" THEN LET varia = "QUINCENALES" END IF IF decide = "S" THEN LET varia = "SEMANALES" END IF ## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA- LET l = (135 - LENGTH(varia))/2 ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 16, letras.negrillas_on,letras.doce PRINT COLUMN 1,"adprrp029", COLUMN 43, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 134, "Pag. ",pageno using "###" PRINT COLUMN 43, " Sistema de Administracion de Personal", COLUMN 128, today using "dd/mm/yyyy" PRINT COLUMN 43, " RELACION DE PERSONAL POR CENTRO DE COSTO", COLUMN 131, hora PRINT COLUMN l, varia PRINT COLUMN 90, letras.negrillas_off PRINT COLUMN 2, "---------------------------------------------------", "---------------------------------------------------", "--------------------------------" PRINT COLUMN 1, "CODIGO NO.", COLUMN 18, "NOMBRE EMPLEADO", COLUMN 50, "PUESTO", COLUMN 78, "FECHA DE ENT.", COLUMN 100, "SAL. MINIMO", COLUMN 115, "SAL. MAXIMO" PRINT COLUMN 2, "---------------------------------------------------", "---------------------------------------------------", "--------------------------------" PRINT letras.negrillas_off ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.departamento LET idx = 0 PRINT COLUMN 1,letras.negrillas_on PRINT COLUMN 1,x.departamento USING "&&&&"," ",x.nom_dpto CLIPPED PRINT COLUMN 1,letras.negrillas_off ON EVERY ROW LET idx = idx + 1 PRINT COLUMN 1, x.num_emp USING "&&&&", COLUMN 18, x.nom1_emp clipped," ",x.apell1_emp clipped," ", COLUMN 47, x.tipo_emp, COLUMN 50, x.nom_puesto CLIPPED, COLUMN 82, x.fech_efec USING "dd/mm/yyyy", COLUMN 96, x.sal_min USING "###,###,###.##", COLUMN 112, x.sal_max USING "###,###,###.##" AFTER GROUP OF x.departamento skip 1 line PRINT COLUMN 1, "TOTAL EMPLEADOS: ",idx USING "####" ON LAST ROW skip 1 line PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) using "###" PRINT ASCII 27, ASCII 80 END REPORT