{ ------------------------------------------------------------------------------- PROGRAMA : ADPRRP035 OBJETIVO : Listar El Historial de Prestamos de Empleado PROGRAMADOR : Tadeo A. Ferreras F. FECHA REALIZACION : Febrero 09, 1996 ------------------------------------------------------------------------------- } GLOBALS "adprgb000.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 adprrp035() #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM adfmrp035 FROM "adfmrp035" DISPLAY FORM adfmrp035 CALL pantalla() DISPLAY "adprrp035" AT 4,3 ATTRIBUTE(RED) DISPLAY "Historial de Prestamos (Avances de Salarios)" AT 6,18 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 ## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE INPUT BY NAME fecha1,fecha2 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 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 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.num_emp,a.nom1_emp,a.apell1_emp,b.fecha,b.valor ", "FROM adtb00003 a, notb00008 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.valor > 0) AND ", " (MONTH(b.fecha) > 1 AND DAY(b.fecha) > 1) AND ",criterio clipped, " ORDER BY 1,4 " 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 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 OUTPUT TO REPORT reporte_35(datos_35.*) END WHILE LET SELEC = "SELECT a.num_emp,a.nom1_emp,a.apell1_emp,b.fecha,b.valor ", "FROM adtb00003 a, notb00016 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.valor > 0) AND ", " (MONTH(b.fecha) > 1 AND DAY(b.fecha) > 1) AND ",criterio clipped, " ORDER BY 1,4 " ## SE PREPARA LA INFORMACION SELECCIONADA PREPARE busca1 FROM selec DECLARE accion1 CURSOR FOR busca1 OPEN accion1 USING fecha1,fecha2 WHILE STATUS != NOTFOUND FETCH accion1 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 OUTPUT TO REPORT reporte_35(datos_35.*) END WHILE FINISH REPORT reporte_35 RUN imprime CLEAR SCREEN 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 hora CHAR(5) 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.normal,letras.negrillas_on PRINT COLUMN 2, "adprrp035", COLUMN 17, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 73, "Pag. ",pageno using "###" PRINT COLUMN 17, " Sistema de Administracion de Personal", COLUMN 73, today using "dd/mm/yyyy" PRINT COLUMN 17, " Historial de Prestamos ", COLUMN 76, hora PRINT COLUMN 2, "---------------------------------------------------", "------------------------------" PRINT COLUMN 1, "Empleado", COLUMN 55, "Fecha", COLUMN 76, "Monto" PRINT COLUMN 2, "----------------------------------------------------", "-----------------------------" PRINT letras.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 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 letras.negrillas_on PRINT COLUMN 1, x.num_emp USING "####"," ",x.nom1_emp CLIPPED," ", x.apell1_emp CLIPPED; PRINT letras.negrillas_off ON EVERY ROW PRINT COLUMN 55, x.fecha USING "dd/mm/yyyy", COLUMN 68, x.valor USING "###,###,###.##" AFTER GROUP OF x.num_emp SKIP 1 LINE PRINT COLUMN 68, "==============" PRINT COLUMN 2, "Balance Empleado = ", COLUMN 68, monto2 USING "###,###,###.##" END REPORT