291 lines
8.0 KiB
Plaintext
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
|