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

253 lines
7.6 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP024
OBJETIVO : Acumulado Por empleado y tipo de descuento
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Agosto 25, 1993
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
DEFINE nomina,tipo_emp CHAR(1)
DEFINE fecha DATE
FUNCTION noprrp024()
## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE
DEFINE list_empl RECORD
num_emp SMALLINT,
nom1_emp CHAR(15),
nom2_emp CHAR(15),
apell1_emp CHAR(15),
pell2_emp CHAR(15),
valor DECIMAL(12,2)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp024 FROM "nofmrp024"
DISPLAY FORM nofmrp024
CALL pantalla()
DISPLAY "noprrp024" AT 4,3
DISPLAY "Acumulado Por Empleado " AT 6,29
## 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)
INPUT BY NAME nomina,tipo_emp,fecha
AFTER FIELD nomina
IF nomina IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nomina
END IF
AFTER FIELD tipo_emp
IF nomina IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_emp
END IF
AFTER FIELD fecha
IF nomina IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha
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 FROM num_emp
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE
IF nomina = "Q" THEN
IF tipo_emp = "I" THEN
LET SELEC =
"SELECT a.num_emp,a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp, ",
" sum(b.valor) ",
"FROM adtb00003 a,notb00008 b ",
"WHERE (a.status_t IS NULL or a.status_t = 'I') ",
"AND a.nomina IN ('Q','V') AND ",
" b.cod_mov NOT IN (100,101,102) AND a.num_emp = b.num_emp AND ",
" b.clase_mov IN ('I','E') AND b.fecha <= ? AND ",criterio CLIPPED,
" GROUP BY 1,2,3,4,5 ORDER BY 1 "
ELSE
LET SELEC =
"SELECT a.num_emp,a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp, ",
" sum(b.valor) ",
"FROM adtb00003 a,notb00008 b ",
"WHERE (a.status_t IS NULL OR a.status_t = 'I') ",
"AND a.nomina IN ('Q','V') AND ",
" b.cod_mov NOT IN (100,101,102) AND a.num_emp = b.num_emp AND ",
" b.clase_mov NOT IN ('I','E') AND b.fecha <= ? AND ",
criterio CLIPPED," GROUP BY 1,2,3,4,5 ORDER BY 1 "
END IF
ELSE
IF tipo_emp = "I" THEN
LET SELEC =
"SELECT a.num_emp,a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp, ",
" sum(b.valor) ",
"FROM adtb00003 a,notb00008 b ",
"WHERE (a.status_t IS NULL OR a.status_t = 'I') ",
"AND a.nomina = 'S' AND ",
" b.cod_mov NOT IN (100,101,102) AND a.num_emp = b.num_emp AND ",
" b.clase_mov IN ('I','E') AND b.fecha <= ? AND ",criterio CLIPPED,
" GROUP BY 1,2,3,4,5 ORDER BY 1 "
ELSE
LET SELEC =
"SELECT a.num_emp,a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp, ",
" sum(b.valor) ",
"FROM adtb00003 a,notb00008 b ",
"WHERE (a.status_t IS NULL OR a.status_t = 'I') ",
"AND a.nomina = 'S' AND ",
" b.cod_mov NOT IN (100,101,102) AND a.num_emp = b.num_emp AND ",
" b.clase_mov NOT IN ('I','E') AND b.fecha < ? AND ",
criterio CLIPPED," GROUP BY 1,2,3,4,5 ORDER BY 1 "
END IF
END IF
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
## AQUI SE PREPARA LA INFORMACION SELECCIONADA
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion USING fecha
START REPORT emplea24 TO "C:\\archivo"
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
## AQUI SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
WHILE STATUS != NOTFOUND
FETCH accion INTO list_empl.*
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 emplea24(list_empl.*)
END WHILE
FINISH REPORT emplea24
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT emplea24(x)
DEFINE x RECORD
num_emp SMALLINT,
nom1_emp CHAR(15),
nom2_emp CHAR(15),
apell1_emp CHAR(15),
apell2_emp CHAR(15),
valor DECIMAL(12,2)
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
DEFINE l SMALLINT
DEFINE varia CHAR(12)
DEFINE tipo_nom,tipo_mov CHAR(11)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 4
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA-
LET l = (80 - LENGTH(p_companias.nombre CLIPPED))/2
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 2, comp_off
PRINT COLUMN 1, "noprrp024",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 73, "Pag. ",pageno using "###"
PRINT COLUMN 31, "Sistema de Nomina",
COLUMN 73, today using "dd/mm/yy"
IF nomina = "Q" THEN
LET tipo_nom = "QUINCENALES"
ELSE
LET tipo_nom = " SEMANALES "
END IF
IF tipo_emp="I" THEN
LET tipo_mov = " INGRESOS "
ELSE
LET tipo_mov = "DESCUENTOS"
END IF
PRINT COLUMN 20, tipo_mov," Acumulado Para ",tipo_nom," Al ",
fecha USING "dd/mm/yy",
COLUMN 76, hora
PRINT COLUMN 1, "--------------------------------------------------",
"------------------------------"
PRINT COLUMN 1, "Ficha",
COLUMN 10, "Nombre Empleado",
COLUMN 70, "Monto"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-----------------------------------------",comp_off
## AQUI SE INDICA LA IMPRESION DEL DETALLE
ON EVERY ROW
PRINT COLUMN 1, x.num_emp using "&&&&", " ",
COLUMN 10, x.nom1_emp CLIPPED, " ",x.nom2_emp CLIPPED," ",
x.apell1_emp CLIPPED,
COLUMN 65, x.valor USING "##,###,###.##"
ON LAST ROW
skip 1 line
PRINT COLUMN 1, "Total de Registros Impresos = ",count(*) using "###"
END REPORT