{ ------------------------------------------------------------------------------- PROGRAMA : ADPRRP031 OBJETIVO : HISTORIAL DE EMPLEADOS PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Oct. 12, 1994 ------------------------------------------------------------------------------- } GLOBALS "adprgb000.4gl" FUNCTION adprrp031() ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE historial RECORD cod_sol LIKE adtb00020.cod_sol, num_emp LIKE adtb00020.num_emp, departamento LIKE adtb00020.departamento, nivel_emp LIKE adtb00020.nivel_emp, cod_puesto LIKE adtb00020.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, fech_efec LIKE adtb00020.fech_efec, sueldo_ac LIKE adtb00020.sueldo_ac, nomina LIKE adtb00020.nomina, estado_civil LIKE adtb00020.estado_civil, tipo_sangre LIKE adtb00020.tipo_sangre, cod_mto LIKE adtb00020.cod_mto, sec_mto LIKE adtb00020.sec_mto, desc_mto LIKE adtb00009.desc_mto, observacion CHAR(60) END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM adfmrp031 FROM "adfmrp007" DISPLAY FORM adfmrp031 CALL pantalla() DISPLAY "adprrp031" AT 4,3 ATTRIBUTE(RED) DISPLAY "Historial de Empleados" AT 6,31 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 AUSENCIAS 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 IMPRIMIR EL REPORTE CONSTRUCT criterio ON a.departamento,a.num_emp FROM departamento,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.cod_sol,a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ", " b.nom1_emp,b.apell1_emp,a.fech_efec,a.sueldo_ac,a.nomina, ", " a.estado_civil,a.tipo_sangre,a.cod_mto,a.sec_mto,d.desc_mto, ", " a.observacion ", "FROM adtb00020 a,adtb00003 b,adtb00009 d ", "WHERE ",criterio CLIPPED," AND a.num_emp = b.num_emp AND ", " a.cod_mto=d.cod_mto AND a.sec_mto=d.sec_mto AND ", " a.status_t is null AND a.fech_efec BETWEEN ? AND ? ORDER BY 2,8" 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 ## 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 historial1 TO archivo ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE WHILE STATUS != NOTFOUND FETCH accion INTO historial.* IF status = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF OUTPUT TO REPORT historial1(historial.*) END WHILE FINISH REPORT historial1 RUN imprime CLEAR SCREEN END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT historial1(x) DEFINE x RECORD cod_sol LIKE adtb00020.cod_sol, num_emp LIKE adtb00020.num_emp, departamento LIKE adtb00020.departamento, nivel_emp LIKE adtb00020.nivel_emp, cod_puesto LIKE adtb00020.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, fech_efec LIKE adtb00020.fech_efec, sueldo_ac LIKE adtb00020.sueldo_ac, nomina LIKE adtb00020.nomina, estado_civil LIKE adtb00020.estado_civil, tipo_sangre LIKE adtb00020.tipo_sangre, cod_mto LIKE adtb00020.cod_mto, sec_mto LIKE adtb00020.sec_mto, desc_mto LIKE adtb00009.desc_mto, observacion CHAR(60) END RECORD DEFINE nom1_emp,apell1_emp CHAR(15), nom_dpto CHAR(30) ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE hora CHAR(5) DEFINE num_emp,num_historiales,no_empleados,num_ausen SMALLINT DEFINE indice DECIMAL(5,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, "adprrp031", COLUMN 82, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 203, "Pag. ",pageno using "###" PRINT COLUMN 82, " Sistema de Administracion de Personal", COLUMN 203, today using "dd/mm/yyyy" PRINT COLUMN 82, " Historial de Empleados", COLUMN 205, 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 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "----------" PRINT COLUMN 1, "Empleado", COLUMN 50, "Fecha", COLUMN 60, "Sueldo", COLUMN 85, "Nomina", COLUMN 92, "Etdo. Civil", COLUMN 104, "Tipo Sangre", COLUMN 116, "Movimiento", COLUMN 153, "Observacion" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "----------" ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.num_emp LET num_emp = 0 PRINT COLUMN 1, letras.negrillas_on PRINT COLUMN 1, x.num_emp using "&&&&","-", x.departamento using "&&&&","-", x.nivel_emp using "&&","-",x.cod_puesto using "&&", " ",x.nom1_emp clipped," ",x.apell1_emp clipped; ON EVERY ROW IF x.cod_mto = 1 THEN LET x.observacion = "SU CODIGO DE SOLICITANTE ES ",x.cod_sol USING "<<<<" END IF PRINT COLUMN 50,x.fech_efec USING "dd/mm/yyyy", COLUMN 60,x.sueldo_ac USING "###,###.##", COLUMN 88,x.nomina CLIPPED, COLUMN 92,x.estado_civil, COLUMN 108,x.tipo_sangre CLIPPED, COLUMN 116,x.cod_mto USING "&","-",x.sec_mto USING "&&&"," ", x.desc_mto CLIPPED, COLUMN 153,x.observacion CLIPPED IF num_historiales is null THEN LET num_historiales = 0 END IF LET num_emp = num_emp + 1 LET num_historiales = num_historiales + 1 AFTER GROUP OF x.num_emp PRINT COLUMN 1, "Total Acciones Por Empleado: ",num_emp USING "###,###" skip 1 line ON LAST ROW PRINT COLUMN 1, "Total Acciones En General : ",num_historiales USING "###,###" ## AQUI SE APAGA EL CARACTER DE IMPRESION COMPRIMIDO PRINT ASCII 18 PRINT ASCII 27, ASCII 80 END REPORT