Files
MBS/PROYECTO/addir/adprrp029.4gl
T

223 lines
7.1 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP029
OBJETIVO : Listar las informaciones generales de los
Empleados Quincenales y Semanales y Ex-Empleados
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Junio 24, 1993
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
FUNCTION adprrp029()
## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE
DEFINE list_29 RECORD
num_emp LIKE adtb00003.num_emp,
departamento LIKE adtb00003.departamento,
nivel_emp LIKE adtb00003.nivel_emp,
cod_puesto LIKE adtb00003.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
fech_efec DATE,
nom_dpto LIKE adtb00001.nom_dpto,
nom_puesto LIKE adtb00004.nom_puesto,
sal_min DECIMAL(12,2),
sal_max DECIMAL(12,2),
tipo_emp CHAR(1)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM adfmrp029 FROM "adfmrp001"
DISPLAY FORM adfmrp029
CALL pantalla()
DISPLAY "adprrp029" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Relacion de Personal Por Centro de Costo" AT 6,22 ATTRIBUTE(BLACK)
## 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 = 2
CALL msgrp000(tipo_papel)
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
## AQUI SE DIGITA LA VARIABLE QUE INDICA LA CONDICION DEL REPORTE, ES DECIR
## SI SE TRATA DE EMPLEADOS SEMANALES O QUINCENALES
CONSTRUCT CRITERIO ON a.nomina FROM decide
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 DE LOS QUINCENALES
LET SELEC =
"SELECT UNIQUE a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ",
" a.nom1_emp,a.apell1_emp,a.fech_efec,c.nom_dpto,b.nom_puesto, ",
" b.salario_min,b.salario_max,a.nomina ",
" FROM adtb00003 a,adtb00004 b,adtb00001 c ",
" WHERE a.cod_puesto=b.cod_puesto AND a.departamento=c.departamento AND ",
" a.departamento BETWEEN 6000 AND 6999 AND (a.status_t is null OR ",
" a.status_t NOT IN ('D','E','T')) AND ",criterio clipped
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
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
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT empleado29 TO archivo
## AQUI SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
FOREACH accion INTO list_29.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT empleado29(list_29.*)
END FOREACH
FINISH REPORT empleado29
RUN imprime
CLEAR SCREEN
END FUNCTION
## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT empleado29(x)
DEFINE x RECORD
num_emp LIKE adtb00003.num_emp,
departamento LIKE adtb00003.departamento,
nivel_emp LIKE adtb00003.nivel_emp,
cod_puesto LIKE adtb00003.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
fech_efec DATE,
nom_dpto LIKE adtb00001.nom_dpto,
nom_puesto LIKE adtb00004.nom_puesto,
sal_min DECIMAL(12,2),
sal_max DECIMAL(12,2),
tipo_emp CHAR(1)
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
DEFINE l SMALLINT
DEFINE varia CHAR(12)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 2
BOTTOM MARGIN 4
ORDER BY x.departamento,x.nivel_emp,x.num_emp
FORMAT
PAGE HEADER
LET hora = time
IF decide = "Q" THEN
LET varia = "QUINCENALES"
END IF
IF decide = "S" THEN
LET varia = "SEMANALES"
END IF
## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA-
LET l = (135 - LENGTH(varia))/2
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 16, letras.negrillas_on,letras.doce
PRINT COLUMN 1,"adprrp029",
COLUMN 43, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 134, "Pag. ",pageno using "###"
PRINT COLUMN 43, " Sistema de Administracion de Personal",
COLUMN 128, today using "dd/mm/yyyy"
PRINT COLUMN 43, " RELACION DE PERSONAL POR CENTRO DE COSTO",
COLUMN 131, hora
PRINT COLUMN l, varia
PRINT COLUMN 90, letras.negrillas_off
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------",
"--------------------------------"
PRINT COLUMN 1, "CODIGO NO.",
COLUMN 18, "NOMBRE EMPLEADO",
COLUMN 50, "PUESTO",
COLUMN 78, "FECHA DE ENT.",
COLUMN 100, "SAL. MINIMO",
COLUMN 115, "SAL. MAXIMO"
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------",
"--------------------------------"
PRINT letras.negrillas_off
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.departamento
LET idx = 0
PRINT COLUMN 1,letras.negrillas_on
PRINT COLUMN 1,x.departamento USING "&&&&"," ",x.nom_dpto CLIPPED
PRINT COLUMN 1,letras.negrillas_off
ON EVERY ROW
LET idx = idx + 1
PRINT COLUMN 1, x.num_emp USING "&&&&",
COLUMN 18, x.nom1_emp clipped," ",x.apell1_emp clipped," ",
COLUMN 47, x.tipo_emp,
COLUMN 50, x.nom_puesto CLIPPED,
COLUMN 82, x.fech_efec USING "dd/mm/yyyy",
COLUMN 96, x.sal_min USING "###,###,###.##",
COLUMN 112, x.sal_max USING "###,###,###.##"
AFTER GROUP OF x.departamento
skip 1 line
PRINT COLUMN 1, "TOTAL EMPLEADOS: ",idx USING "####"
ON LAST ROW
skip 1 line
PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) using "###"
PRINT ASCII 27, ASCII 80
END REPORT