{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP018 OBJETIVO : FROMULARIOS DE LOS MOVIMIENTOS PROGRAMADOR : Ing. Juan F. Soto FECHA REALIZACION : Enero 17, 1994 ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" FUNCTION noprrp018() DEFINE fecha1,fecha2 DATE ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE extras RECORD num_emp LIKE notb00007.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, cod_mov LIKE notb00007.cod_mov, descrip_mov CHAR(30) END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp018 FROM "nofmrp018" DISPLAY FORM nofmrp018 CALL pantalla() DISPLAY "noprrp018" 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) INPUT BY NAME novedad.tipo_emp AFTER FIELD tipo_emp IF novedad.tipo_emp is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_emp END IF EXIT INPUT END INPUT CONSTRUCT criterio ON a.cod_mov FROM cod_mov 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 UNIQUE b.num_emp,b.departamento,b.nivel_emp, ", "b.cod_puesto,b.nom1_emp,b.apell1_emp,a.cod_mov,", "a.descrip_mov ", "FROM adtb00003 b,notb00002 a ", "WHERE ", "b.nomina = ? AND ", "a.status_t is null AND ", criterio clipped, "ORDER BY 7,1" 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 EL CURSOR PARA BUSCAR LA INFORMACION SELECCIONADA DECLARE accion CURSOR FOR busca OPEN accion using novedad.tipo_emp DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT formualrio TO "C:\\archivo" ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE WHILE status != NOTFOUND FETCH accion INTO extras.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE EXIT WHILE FINISH REPORT formualrio END IF IF status = NOTFOUND THEN EXIT WHILE ELSE OUTPUT TO REPORT formualrio(extras.*,fecha1,fecha2) END IF END WHILE FINISH REPORT formualrio CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT formualrio(x,fech1,fech2) DEFINE x RECORD num_emp LIKE notb00007.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, cod_mov LIKE notb00007.cod_mov, descrip_mov CHAR(30) 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(5,2) DEFINE descuento1,porcentaje1,porcentaje2,acumula,acumula1 DECIMAL(5,2) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 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 novedad.tipo_emp = "Q" THEN LET varia = "QUINCENALES" END IF IF novedad.tipo_emp = "S" THEN LET varia = "SEMANALES" END IF IF novedad.tipo_emp = "V" THEN LET varia = "VENDEDORES" END IF ## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA- LET l = (100 - LENGTH(varia))/2 ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 1, doce, COLUMN 2, "noprrp018", COLUMN 14, negrillas_on, COLUMN 15, doble_on, COLUMN 16, comp_on, COLUMN 26, p_companias.nombre CLIPPED, COLUMN 73, negrillas_off, COLUMN 74, doble_off, COLUMN 75, comp_off, COLUMN 91, "Pag. ",pageno using "###" PRINT COLUMN 41, "Sistema de Nomina", COLUMN 93, today using "dd/mm/yy" PRINT COLUMN L, varia, COLUMN 96, hora SKIP 1 LINE PRINT COLUMN 2, "---------------------------------------------------", "------------------------------------------------" PRINT COLUMN 2, "Codigo No.", COLUMN 19, "| Nombre", COLUMN 59, "| Cantidad", COLUMN 69, "| Valor ", COLUMN 80, "| Total" PRINT COLUMN 2, "----------------------------------------------------", "-----------------------------------------------" BEFORE GROUP OF x.cod_mov PRINT COLUMN 1, negrillas_on PRINT COLUMN 1, x.descrip_mov PRINT negrillas_off ON EVERY ROW PRINT COLUMN 2, x.num_emp using "&&&&","-", COLUMN 7, x.departamento using "&&&&","-", COLUMN 11, x.nivel_emp using "&&","-", COLUMN 15, x.cod_puesto using "&&", COLUMN 23, x.nom1_emp clipped," ",x.apell1_emp clipped, COLUMN 69, "|", COLUMN 80, "|", COLUMN 91, "|" PRINT COLUMN 59, "__________|", COLUMN 70, "__________|", COLUMN 81, "__________|" AFTER GROUP OF x.cod_mov PRINT COLUMN 59, " |", COLUMN 70, " |", COLUMN 81, " |" PRINT COLUMN 1, " Total General", COLUMN 59, "__________|", COLUMN 70, "__________|", COLUMN 81, "__________|" PRINT COLUMN 2, "TOTAL Empleados: ",count(*) using "###" SKIP TO TOP OF PAGE END REPORT