Files
MBS/PROYECTO/nodir/noprrp028.4gl
T

226 lines
6.5 KiB
Plaintext

{
-------------------------------------------------------------------------------
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