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

291 lines
8.0 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP030
OBJETIVO : Listar las Informaciones Generales de los
Movimientos Considerados Deudas del Empleado
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Marzo 04, 1996
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
DEFINE fecha1,fecha2 DATE,
total1 DECIMAL(12,2)
## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE
DEFINE datos_30 RECORD
num_emp SMALLINT,
cod_mov SMALLINT,
fecha DATE,
num_nomi INTEGER,
monto DECIMAL(12,2)
END RECORD
FUNCTION noprrp030()
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp030 FROM "nofmrp030"
DISPLAY FORM nofmrp030
CALL pantalla()
DISPLAY "noprrp030" AT 4,3
DISPLAY "Historial de Deudas Por Empleado" AT 6,24
## INDICA EL PAPEL NECESARIO PARA IMPRIMIR EL REPORTE. 1 - PAPEL 9 1/2 X 11
## 2 - PAPEL 14 7/8 X 11
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
## ENTRADA DE LOS VALORES PARA BUSQUEDA DE INFORMACION POR MES Y ANO
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
IF fecha1 > TODAY THEN
LET numero_msg = 160
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
CONSTRUCT criterio ON a.num_emp,a.cod_mov FROM num_emp,cod_mov
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
START REPORT reporte_30 TO "C:\\archivo"
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE
LET selec =
"SELECT a.num_emp,a.cod_mov,a.fecha,a.num_doc,a.monto ",
"FROM notb00011 a, notb00014 b ",
"WHERE (a.status_t IS NULL) AND (a.cod_mov = b.cod_mov) AND ",
" (a.fecha BETWEEN ? AND ?) AND (a.cod_mov NOT IN (11,14)) AND ",
" (a.monto > 0) AND (a.fecha > '010194') AND ",criterio CLIPPED
DISPLAY "Buscando Informacion Ano Actual... Espere Por Favor" AT 19,14
PREPARE comando2 FROM selec
DECLARE busca2 CURSOR FOR comando2
OPEN busca2 USING fecha1,fecha2
WHILE STATUS != NOTFOUND
FETCH busca2 INTO datos_30.*
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_30(datos_30.*)
END WHILE
IF YEAR(fecha1) < YEAR(TODAY) THEN
LET selec =
"SELECT a.num_emp,a.cod_mov,a.fecha,a.num_nomi,a.valor ",
"FROM notb00016 a, notb00014 b ",
"WHERE (a.status_t IS NULL) AND (a.cod_mov = b.cod_mov) AND ",
" (a.fecha BETWEEN ? AND ?) AND (a.cod_mov NOT IN (11,14)) AND ",
" (a.valor <> 0) AND ",criterio CLIPPED
DISPLAY "Buscando Informacion Ano Anterior. Espere Por Favor" AT 19,14
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
OPEN busca USING fecha1,fecha2
WHILE STATUS != NOTFOUND
FETCH busca INTO datos_30.*
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 datos_30.fecha > "010194" AND datos_30.monto > 0 THEN
LET datos_30.monto = 0
END IF
IF datos_30.monto <> 0 THEN
OUTPUT TO REPORT reporte_30(datos_30.*)
END IF
END WHILE
END IF
IF YEAR(fecha2) >= YEAR(TODAY) THEN
LET selec =
"SELECT a.num_emp,a.cod_mov,a.fecha,a.num_nomi,a.valor ",
"FROM notb00008 a, notb00014 b ",
"WHERE (a.status_t IS NULL) AND (a.cod_mov = b.cod_mov) AND ",
" (a.fecha BETWEEN ? AND ?) AND (a.cod_mov NOT IN (11,14)) AND ",
" (a.valor < 0) AND ",criterio CLIPPED
DISPLAY "Buscando Informacion Ano Actual... Espere Por Favor" AT 19,14
PREPARE comando1 FROM selec
DECLARE busca1 CURSOR FOR comando1
OPEN busca1 USING fecha1,fecha2
WHILE STATUS != NOTFOUND
FETCH busca1 INTO datos_30.*
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_30(datos_30.*)
END WHILE
END IF
FINISH REPORT reporte_30
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT reporte_30(x)
DEFINE x RECORD
num_emp SMALLINT,
cod_mov SMALLINT,
fecha DATE,
num_nomi INTEGER,
monto DECIMAL(12,2)
END RECORD
DEFINE nom_mov CHAR(30),
nombre,apell CHAR(15)
## 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 2
ORDER BY x.num_emp,x.cod_mov,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 negrillas_on
PRINT COLUMN 1, "noprrp030",
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 Deudas Por Empleado",
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, "Movimiento",
COLUMN 40, "Fecha",
COLUMN 57, "Monto",
COLUMN 70, "Balance"
PRINT COLUMN 1, "________________________________________",
"________________________________________"
PRINT negrillas_off
BEFORE GROUP OF x.num_emp
SELECT a.nom1_emp,a.apell1_emp INTO nombre,apell FROM adtb00003 a
WHERE a.num_emp = x.num_emp
PRINT negrillas_on
PRINT COLUMN 1, "Empleado: (",x.num_emp USING "<<<<",") ",
nombre CLIPPED," ",apell,negrillas_off
BEFORE GROUP OF x.cod_mov
LET total1 = 0
SELECT a.descrip_mov INTO nom_mov FROM notb00002 a
WHERE a.cod_mov = x.cod_mov
SKIP 1 LINE
PRINT COLUMN 1, "(",x.cod_mov USING "<<<",") ",nom_mov CLIPPED;
ON EVERY ROW
IF total1 IS NULL THEN
LET total1 = 0
END IF
LET total1 = total1 + x.monto
PRINT COLUMN 40, x.fecha USING "dd/mm/yy",
COLUMN 50, x.monto USING "-,---,---.##",
COLUMN 65, total1 USING "-,---,---.##"
AFTER GROUP OF x.num_emp
SKIP TO TOP OF PAGE
ON LAST ROW
PRINT normal
PAGE TRAILER
PRINT " Positivo : Cargo Original, Negativo = Abono A Deuda"
END REPORT