{ ------------------------------------------------------------------------------- PROGRAMA : adprrp045 OBJETIVO : Listar las Edades de los Empleados Quincenales y Semanales y Ex-Empleados PROGRAMADOR : Oscar A. Castillo FECHA REALIZACION : Thursday, 22 March, 2001 ------------------------------------------------------------------------------- } GLOBALS "adprgb000.4gl" DEFINE tipo_l CHAR(1), fecha1,fecha2 DATE, edad1,edad2 INTEGER FUNCTION adprrp045() ## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE DEFINE list_emp 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, cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, telefono LIKE adtb00003.telefono, fech_nac LIKE adtb00003.fech_nac, tipo_sangre LIKE adtb00003.tipo_sangre, licencia LIKE adtb00003.licencia, fech_efec LIKE adtb00003.fech_efec, sueldo_ac LIKE adtb00003.sueldo_ac, nom_dpto LIKE adtb00001.nom_dpto, nom_puesto LIKE adtb00004.nom_puesto, calle LIKE adtb00003.calle, casa_num LIKE adtb00003.casa_num, barrio LIKE adtb00003.barrio, urbanizacion LIKE adtb00003.urbanizacion, sexo LIKE adtb00030.sexo, dep_corp LIKE adtb00042.dep_corp, clase_emp LIKE adtb00003.clase_emp END RECORD, corporativo LIKE adtb00042.dep_corp, naci,naci1,horas,bonificacion,reg_pascual DECIMAL(12,2), naci2 INTEGER #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM adfmrp045 FROM "adfmrp045" DISPLAY FORM adfmrp045 CALL pantalla() DISPLAY "adprrp045" AT 4,3 ATTRIBUTE(RED) DISPLAY "Edades de Empleados " AT 6,23 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 = 1 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 INPUT BY NAME fecha1,fecha2,edad1,edad2 ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo AFTER FIELD fecha1 IF fecha1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha1 END IF AFTER FIELD fecha2 IF fecha2 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha2 END IF AFTER FIELD edad1 IF edad1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD edad1 END IF AFTER FIELD edad2 IF edad2 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD edad2 END IF AFTER INPUT EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT BY NAME criterio ON a.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 DE LOS QUINCENALES #IF tipo_l = "N" THEN LET SELEC = "SELECT UNIQUE a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ", " a.nom1_emp,a.apell1_emp,a.cedula,a.serie,a.telefono,a.fech_nac, ", " a.tipo_sangre,a.licencia,a.fech_efec,a.sueldo_ac,c.nom_dpto, ", " b.nom_puesto,a.calle,a.casa_num,a.barrio,a.urbanizacion,d.sexo, ", " e.dep_corp,a.clase_emp ", "FROM adtb00003 a,adtb00004 b,adtb00001 c,adtb00030 d,notb00008 t, OUTER adtb00043 e ", "WHERE (a.cod_puesto=b.cod_puesto) AND (a.departamento=c.departamento) AND ", #" (a.status_t is null OR a.status_t NOT IN('D','E','T')) AND ", " (a.num_emp = d.num_emp AND a.num_emp = e.num_emp AND ", " d.num_emp = e.num_emp AND a.num_emp = t.num_emp AND ", " t.fecha BETWEEN ? AND ? AND ", criterio CLIPPED, ") ORDER BY 22,1 " 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 USING fecha1,fecha2 DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT empleados2 TO archivo ## AQUI SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE WHILE STATUS != NOTFOUND FETCH accion INTO list_emp.* 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 SELECT SUM(a.valor),SUM(a.cantidad) INTO list_emp.sueldo_ac,horas FROM notb00008 a WHERE a.num_emp = list_emp.num_emp AND a.cod_mov IN (1,34) AND a.fecha BETWEEN fecha1 AND fecha2 # AND a.status_t IS NULL { SELECT SUM(a.cantidad) INTO horas FROM notb00008 a WHERE a.num_emp = list_emp.num_emp AND a.cod_mov = 1 AND a.fecha BETWEEN fecha1 AND fecha2 # AND a.status_t IS NULL } LET naci = (today - list_emp.fech_nac) LET naci1 = naci / 365 IF naci1 < 1 THEN LET naci1 = naci1 * 10 END IF LET naci2 = naci1 IF naci2 >= edad1 AND naci2 <= edad2 THEN OUTPUT TO REPORT empleados2(list_emp.*,naci2) END IF END WHILE FINISH REPORT empleados2 RUN imprime CLEAR SCREEN END FUNCTION ## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT empleados2(x,p_naci2) 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, cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, telefono LIKE adtb00003.telefono, fech_nac LIKE adtb00003.fech_nac, tipo_sangre LIKE adtb00003.tipo_sangre, licencia LIKE adtb00003.licencia, fech_efec LIKE adtb00003.fech_efec, sueldo_ac LIKE adtb00003.sueldo_ac, nom_dpto LIKE adtb00001.nom_dpto, nom_puesto LIKE adtb00004.nom_puesto, calle LIKE adtb00003.calle, casa_num LIKE adtb00003.casa_num, barrio LIKE adtb00003.barrio, urbanizacion LIKE adtb00003.urbanizacion, sexo LIKE adtb00030.sexo, dep_corp LIKE adtb00042.dep_corp, clase_emp LIKE adtb00003.clase_emp END RECORD, p_corp LIKE adtb00042.dep_corp, nombre_corp LIKE adtb00042.nombre_depto, p_horas,p_boni,p_regalia DECIMAL(12,2), p_naci2 INTEGER ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE hora CHAR(5) DEFINE l SMALLINT DEFINE varia CHAR(12), m_cedula LIKE adtb00038.cedula_n, m_sexo LIKE adtb00030.sexo OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 2 BOTTOM MARGIN 4 ORDER BY x.dep_corp FORMAT PAGE HEADER LET hora = time IF decide = "Q" THEN LET varia = "QUINCENALES" END IF IF decide = "S" THEN LET varia = "SEMANALES" END IF IF decide = "T" THEN LET varia = "EX-EMPLEADOS" 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 1, letras.doce,letras.comp_on,letras.negrillas_on PRINT COLUMN 1, "adprrp045", COLUMN 24, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 81, "Pag. ",pageno using "###" PRINT COLUMN 24, " Sistema de Administracion de Personal", COLUMN 81, today using "dd/mm/yyyy" PRINT COLUMN 24, " Edades de los Empleados ", COLUMN 81, hora SKIP 1 LINE PRINT COLUMN 2, "Desde : ",fecha1 USING "dd/mm/yyyy", " Hasta : ",fecha2 USING "dd/mm/yyyy" PRINT COLUMN 2, "Edades Entre : ",edad1 USING "###"," Y ",edad2 USING "###" PRINT COLUMN 2, "---------------------------------------------------", "----------------------------------------" PRINT COLUMN 2, "Codigo No.", COLUMN 18, "Nombre Empleado", COLUMN 49, "Salario ", COLUMN 65, "Edad" PRINT COLUMN 2, "---------------------------------------------------", "----------------------------------------" PRINT letras.negrillas_off ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.dep_corp SELECT a.nombre_depto INTO nombre_corp FROM adtb00042 a WHERE a.dep_corp = x.dep_corp AND a.status_t IS NULL PRINT COLUMN 1, "Departamento : ",x.dep_corp USING "#####"," - ", nombre_corp CLIPPED SKIP 1 LINE ON EVERY ROW INITIALIZE m_cedula,m_sexo TO NULL PRINT COLUMN 1, letras.negrillas_on, COLUMN 3, x.num_emp USING "&&&&","-", x.departamento USING "&&&&","-", x.nivel_emp USING "&&","-",x.cod_puesto USING "&&", " ",x.apell1_emp clipped,", ",x.nom1_emp clipped, #COLUMN 48, letras.negrillas_off, COLUMN 47, x.sueldo_ac using "###,###.##", COLUMN 65, p_naci2 using "###" AFTER GROUP OF x.dep_corp SKIP 1 LINE PRINT COLUMN 4, "Sub-Total ", COLUMN 44, GROUP SUM(x.sueldo_ac) USING "##,###,###.##" SKIP 1 LINE PRINT COLUMN 2, "Total Departamento = ", GROUP count(*) using "###" SKIP 1 LINE ON LAST ROW SKIP 1 LINE PRINT COLUMN 4, "Total ", COLUMN 44, SUM(x.sueldo_ac) USING "##,###,###.##" SKIP 1 LINE PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) using "###" PRINT letras.comp_off,ASCII 27, ASCII 80 END REPORT