{ ------------------------------------------------------------------------------- PROGRAMA : ADPRRP025 OBJETIVO : INFORMA A LOS VIGILANTE LA SALIDA DE UN EMPLEADO PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Junio 29, 1993 ------------------------------------------------------------------------------- } GLOBALS "adprgb000.4gl" FUNCTION adprrp025() ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE salida RECORD fech_efec LIKE adtb00020.fech_efec, nom1_emp LIKE adtb00003.nom1_emp, nom2_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, apell2_emp LIKE adtb00003.apell1_emp, num_emp LIKE adtb00020.num_emp, departamento LIKE adtb00020.departamento, nivel_emp LIKE adtb00020.nivel_emp, cod_puesto LIKE adtb00020.cod_puesto, num2_emp LIKE adtb00020.num2_emp END RECORD WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM adfmrp015 FROM "adfmrp015" DISPLAY FORM adfmrp015 CALL pantalla() DISPLAY "adprrp025" AT 4,3 ATTRIBUTE(RED) DISPLAY "Salida de Empleado" AT 6,33 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 LA FECHA DE SALIDA DEL EMPLEADO LET rango.fech_in = today INPUT BY NAME rango.fech_in WITHOUT DEFAULTS ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo AFTER FIELD fech_in IF rango.fech_in IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_in 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 DEL REPORTE CONSTRUCT criterio ON b.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 b.fech_efec,d.nom1_emp,d.nom2_emp,d.apell1_emp,d.apell2_emp, ", " b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto,b.num2_emp ", "FROM adtb00020 b,adtb00003 d ", "WHERE b.cod_mto=4 AND d.num_emp=b.num_emp AND d.status_t IN('T','D') AND ", criterio clipped," ORDER BY 4" 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 memo1 TO archivo ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE FOREACH accion INTO salida.* 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 memo1(salida.*) END IF END FOREACH FINISH REPORT memo1 RUN imprime CLEAR SCREEN END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT memo1(x) DEFINE x RECORD fech_efec LIKE adtb00020.fech_efec, nom1_emp LIKE adtb00003.nom1_emp, nom2_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, apell2_emp LIKE adtb00003.apell1_emp, num_emp LIKE adtb00020.num_emp, departamento LIKE adtb00020.departamento, nivel_emp LIKE adtb00020.nivel_emp, cod_puesto LIKE adtb00020.cod_puesto, num2_emp LIKE adtb00020.num2_emp END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE hora CHAR(5) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 3 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, "adprrp025", 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 75, "Pag. ",pageno using "###" PRINT COLUMN 22, "Sistema de Administracion de Personal", COLUMN 73, today using "dd/mm/yyyy" PRINT COLUMN 31, "Salida de Empleado", COLUMN 76, hora Skip 3 lines PRINT COLUMN 5, "A", COLUMN 12, ":", COLUMN 14, "Todos los Vigilantes" skip 1 line PRINT COLUMN 5, "DE", COLUMN 12, ":", COLUMN 14, "Gerencia de Personal" skip 1 line PRINT COLUMN 5, "ASUNTO", COLUMN 12, ":", COLUMN 14, "Salida de Empleado" skip 1 line PRINT COLUMN 5, "FECHA", COLUMN 12, ":", COLUMN 14, rango.fech_in using "dd/mm/yyyy" AFTER GROUP OF x.num_emp ## SE SELECCIONA EL EMPLEADO QUE VA A FIRMAR EL REPORTE SELECT nom1_emp,apell1_emp INTO nombre1,apellido1 FROM adtb00003 WHERE cod_puesto = 5 AND departamento = 3000 AND (status_t IS NULL OR status_t NOT IN("T","D","E")) LET descrip1 = nombre1 clipped," ",apellido1 clipped skip 4 lines ## AQUI SE IMPRIME EL TEXTO DEL REPORTE PRINT COLUMN 5, "A partir del dia", COLUMN 22, x.fech_efec using "dd/mm/yyyy",",", COLUMN 32, "el(la) senor(a)", COLUMN 48, x.nom1_emp clipped," ",x.nom2_emp CLIPPED," ", x.apell1_emp CLIPPED," ",x.apell2_emp clipped SKIP 1 LINE PRINT COLUMN 5, "ficha no.", COLUMN 15, x.num_emp using "&&&&","-", COLUMN 20, x.departamento using "&&&&","-", COLUMN 25, x.nivel_emp using "&&","-", COLUMN 28, x.cod_puesto using "&&", COLUMN 31, "ha dejado de laborar en esta compania. Les " Skip 1 line PRINT COLUMN 5, "comunicamos esto para los fines de lugar." Skip 4 line ## AQUI SE IMPRIME EL EMPLEADO QUE FIRMA EL REPORTE PRINT COLUMN 47, "Atentamente," Skip 4 lines PRINT COLUMN 47, descrip1 PRINT COLUMN 47, "Gerente de Personal" skip 1 line PRINT COLUMN 1, nombre1[1,1],apellido1[1,1],"/yn" END REPORT