{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP011 OBJETIVO : LISTAR LAS HORAS EXTRAS DE LOS EMPLEADOS PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Septiembre 07, 1993 ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" DEFINE fecha_inicial,fecha_final DATE DEFINE tipo CHAR(1) DEFINE h_35,h_100,v_35,v_100 DECIMAL(12,2) FUNCTION noprrp011() DEFINE fecha1,fecha2 DATE ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE extras RECORD num_emp LIKE adtb00003.num_emp, departamento LIKE adtb00003.departamento, nivel LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp CHAR(10), apell1_emp CHAR(10), cod_mov LIKE notb00008.cod_mov, cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp011 FROM "nofmrp011" DISPLAY FORM nofmrp011 CALL pantalla() DISPLAY "noprrp011" AT 4,3 DISPLAY "Horas Extras Empleados" AT 6,32 ## 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) ## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE INPUT BY NAME fecha_inicial,fecha_final,tipo AFTER FIELD fecha_inicial IF fecha_inicial IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF AFTER FIELD fecha_final IF fecha_final IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF IF fecha_inicial > fecha_final THEN LET numero_msg = 51 CALL msg(numero_msg) NEXT FIELD tipo END IF AFTER FIELD tipo IF tipo IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo END IF END INPUT 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 DECLARE buscar CURSOR FOR SELECT a.num_emp,b.departamento,b.nivel_emp,b.cod_puesto,b.nom1_emp, b.apell1_emp,a.cod_mov,SUM(a.cantidad),SUM(a.valor) FROM adtb00003 b,notb00008 a WHERE a.num_emp = b.num_emp AND a.tipo_emp = tipo AND a.cod_mov IN (2,3) AND a.fecha BETWEEN fecha_inicial AND fecha_final AND a.status_t IS NULL GROUP BY 1,2,3,4,5,6,7 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 DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT list_extras TO "C:\\archivo" ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE FOREACH buscar INTO extras.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF OUTPUT TO REPORT list_extras(extras.*,fecha1,fecha2) END FOREACH FINISH REPORT list_extras CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT list_extras(x,fech1,fech2) DEFINE x RECORD num_emp LIKE notb00008.num_emp, departamento LIKE adtb00003.departamento, nivel LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp CHAR(10), apell1_emp CHAR(10), cod_mov LIKE notb00008.cod_mov, cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE l smallint DEFINE varia CHAR(11) DEFINE fech1,fech2 DATE DEFINE descu,descuento,porciento1,porciento2,acumulado DECIMAL(5,2) DEFINE acumulado1,total,total1,total2,total3,total4 DECIMAL(12,2) DEFINE descuento1,porcentaje1,porcentaje2,acumula,acumula1 DECIMAL(5,2), nombre_dp CHAR(20) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.departamento,x.num_emp,x.cod_mov FORMAT PAGE HEADER LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time IF tipo = "Q" THEN LET varia = "Horas Extras Empleados Quincenales" END IF IF tipo = "S" THEN LET varia = "Horas Extras Empleados Semanales" END IF ## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA- ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS LET l = (90 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, doce,negrillas_on PRINT COLUMN 2, "noprrp011", COLUMN l, p_companias.nombre CLIPPED, COLUMN 83, "Pag. ",pageno using "###" PRINT COLUMN 22, " Sistema de Nomina", COLUMN 83, today using "dd/mm/yy" LET l = (90 - LENGTH(varia CLIPPED))/2 PRINT COLUMN l, varia, COLUMN 86, hora SKIP 1 LINE PRINT COLUMN 1, "Del ", fecha_inicial USING "dd/mm/yy", " Al ", fecha_final USING "dd/mm/yy" PRINT COLUMN 2, "---------------------------------------------", "---------------------------------------------" PRINT COLUMN 1, "Codigo No.", COLUMN 19, "Nombre", COLUMN 42, "Horas 100%", COLUMN 55, "Valor ", COLUMN 62, "Hora 35%", COLUMN 75, "Valor ", COLUMN 84, "Total " PRINT COLUMN 2, "---------------------------------------------", "---------------------------------------------" PRINT COLUMN 1,negrillas_off ## AQUI COMIENZA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.departamento SELECT a.nom_dpto INTO nombre_dp FROM adtb00001 a WHERE a.departamento = x.departamento PRINT COLUMN 1,doble_on,negrillas_on,nombre_dp,negrillas_off SKIP 1 LINE BEFORE GROUP OF x.num_emp LET total = 0 PRINT COLUMN 1, x.num_emp USING "&&&&","-", x.departamento USING "&&&&","-",x.nivel USING"&&", "-",x.cod_puesto USING "&&"," ",x.nom1_emp CLIPPED, " ",x.apell1_emp CLIPPED; ON EVERY ROW LET total = total + x.valor IF h_35 IS NULL THEN LET h_35 = 0 END IF IF h_100 IS NULL THEN LET h_100 = 0 END IF IF v_35 IS NULL THEN LET v_35 = 0 END IF IF v_100 IS NULL THEN LET v_100 = 0 END IF IF x.cod_mov = 2 THEN LET h_35 = h_35 + x.cantidad LET v_35 = v_35 + x.valor PRINT COLUMN 42, x.cantidad USING "##,###.##", COLUMN 52, x.valor USING "##,###.##"; ELSE LET h_100 = h_100 + x.cantidad LET v_100 = v_100 + x.valor PRINT COLUMN 62, x.cantidad USING "##,###.##", COLUMN 72, x.valor USING "##,###.##"; END IF AFTER GROUP OF x.num_emp PRINT COLUMN 82, total USING "##,###.##" ON LAST ROW SKIP 1 LINES PRINT COLUMN 1, negrillas_on PRINT COLUMN 2, "TOTAL HORAS", COLUMN 41, h_35 using "###,###.##", COLUMN 51, v_35 using "###,###.##", COLUMN 61, h_100 using "###,###.##", COLUMN 71, v_100 using "###,###.##", COLUMN 81, v_35 + v_100 using "###,###.##" LET h_35 = 0 LET h_100 = 0 LET v_35 = 0 LET v_100 = 0 END REPORT