{ ------------------------------------------------------------------------------- PROGRAMA : noprrp028 OBJETIVO : Listar El Historial de Prestamos de Empleado PROGRAMADOR : Tadeo A. Ferreras F. FECHA REALIZACION : Febrero 09, 1996 ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE datos_35 RECORD num_emp LIKE adtb00003.num_emp, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, fecha DATE, valor DECIMAL(12,2) END RECORD, monto2 DECIMAL(12,2), fecha1,fecha2 DATE FUNCTION noprrp028() #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp028 FROM "nofmrp028" DISPLAY FORM nofmrp028 CALL pantalla() DISPLAY "noprrp028" AT 4,3 DISPLAY "Historial de Prestamos (Avances de Salarios)" AT 6,18 ## 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 fecha1,fecha2 AFTER FIELD fecha1 IF fecha1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha1 END IF BEFORE FIELD fecha2 LET fecha2 = TODAY DISPLAY BY NAME fecha2 AFTER FIELD fecha2 IF fecha2 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha2 END IF IF fecha1 > fecha2 THEN LET numero_msg = 51 CALL msg(numero_msg) NEXT FIELD fecha2 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 CONSTRUCT criterio ON a.num_emp FROM num_emp 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.num_emp,a.nom1_emp,a.apell1_emp,b.fecha,b.monto ", "FROM adtb00003 a, notb00011 b ", "WHERE (a.num_emp = b.num_emp) AND (b.fecha BETWEEN ? AND ?) AND ", " (a.status_t is null) AND (b.cod_mov=25) AND (b.monto > 0) AND ", criterio clipped DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) ## 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 reporte_35 TO "C:\\archivo" ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE WHILE STATUS != NOTFOUND FETCH accion INTO datos_35.* 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 IF MONTH(datos_35.fecha) = 1 AND DAY(datos_35.fecha) = 1 THEN LET datos_35.valor = 0 END IF IF datos_35.valor > 0 THEN OUTPUT TO REPORT reporte_35(datos_35.*) END IF END WHILE FINISH REPORT reporte_35 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT reporte_35(x) DEFINE x RECORD num_emp LIKE adtb00003.num_emp, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, fecha DATE, valor DECIMAL(12,2) END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE negrillas_on,negrillas_off,normal CHAR(2) DEFINE hora CHAR(5) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.num_emp,x.fecha FORMAT PAGE HEADER LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET normal = ASCII 27, ASCII 80 LET hora = time ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 1, normal,negrillas_on PRINT COLUMN 2, "noprrp028", COLUMN 17, p_companias.nombre CLIPPED, COLUMN 73, "Pag. ",pageno using "###" PRINT COLUMN 17, " Sistema de Nomina", COLUMN 73, today using "dd/mm/yy" PRINT COLUMN 17, " Historial de Prestamos ", COLUMN 76, hora SKIP 1 LINE PRINT COLUMN 1, "Fecha: Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2 USING "dd/mm/yy" PRINT COLUMN 1, "-------------------------------------------------", "-------------------------------" PRINT COLUMN 1, "Empleado", COLUMN 55, "Fecha", COLUMN 76, "Monto" PRINT COLUMN 1, "-------------------------------------------------", "-------------------------------" PRINT negrillas_off ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.num_emp LET monto2 = 0 IF YEAR(fecha2) < YEAR(TODAY) THEN SELECT SUM(a.valor) INTO monto2 FROM notb00016 a WHERE a.num_emp = x.num_emp AND YEAR(a.fecha) <= YEAR(fecha2) AND a.fecha <= fecha2 AND a.cod_mov = 25 AND a.status_t IS NULL ELSE SELECT SUM(a.valor) INTO monto2 FROM notb00008 a WHERE a.num_emp = x.num_emp AND a.fecha <= fecha2 AND a.cod_mov = 25 AND a.status_t IS NULL END IF IF monto2 IS NULL THEN LET monto2 = 0 END IF PRINT negrillas_on PRINT COLUMN 1, x.num_emp USING "####"," ",x.nom1_emp CLIPPED," ", x.apell1_emp CLIPPED PRINT negrillas_off ON EVERY ROW PRINT COLUMN 55, x.fecha USING "dd/mm/yy", COLUMN 67, x.valor USING "###,###,###.##" AFTER GROUP OF x.num_emp SKIP 1 LINE PRINT COLUMN 67, "==============" PRINT COLUMN 2, "Balance Empleado = ", COLUMN 67, monto2 USING "###,###,###.##" END REPORT