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

315 lines
9.7 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : adprrp047
OBJETIVO : Listar las informaciones generales de los
Empleados en formato ascii
PROGRAMADOR : Oscar A. Castillo
FECHA REALIZACION : Wednesday, 16 January, 2002
-------------------------------------------------------------------------------
}
DATABASE rayovac
GLOBALS #"adprgb000.4gl"
DEFINE tipo_l CHAR(1)
DEFINE tipo_papel SMALLINT
DEFINE numero_msg LIKE msgtable.cod_msg
DEFINE selec3,selec2,selec1,selec CHAR(1000)
DEFINE letras RECORD
negrillas_on ,
negrillas_off ,
doble_on ,
doble_off ,
comp_on ,
comp_off ,
doce ,
normal CHAR(6)
END RECORD,
formato1 RECORD
apellido CHAR(30),
nombre CHAR(30),
cedula CHAR(13),
cedula1 CHAR(11),
cargo CHAR(60)
END RECORD
DEFINE impresor SMALLINT,
imprime CHAR(80),
archivo CHAR(20),
parametro CHAR(2),
orden CHAR(1),
destino CHAR(1)
END GLOBALS
MAIN
CALL adprrp047()
END MAIN
FUNCTION pantalla()
DEFINE fecha CHAR(10),
hora char(5)
LET fecha = today USING "dd/mm/yyyy"
LET hora = time
DISPLAY "R A Y . O . V A C D O M I N I C A N A, S. A." AT 4,17
ATTRIBUTE (REVERSE,BLUE)
DISPLAY fecha AT 4,68 ATTRIBUTE (RED)
# DISPLAY "Sistema de Administracion de Personal" AT 5,21 ATTRIBUTE(BLACK)
DISPLAY "Human Resource System" AT 5,30 ATTRIBUTE(BLUE)
DISPLAY hora AT 6,73 ATTRIBUTE(RED)
CALL fgl_drawbox(5,79,3,1)
# CALL fgl_drawbox(1,79,22,1)
END FUNCTION
FUNCTION adprrp047()
## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE
DEFINE list_emp RECORD
num_emp LIKE adtb00003.num_emp,
nivel_emp LIKE adtb00003.nivel_emp,
cod_puesto LIKE adtb00003.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
nom2_emp LIKE adtb00003.nom2_emp,
apell1_emp LIKE adtb00003.apell1_emp,
apell2_emp LIKE adtb00003.apell2_emp,
cedula LIKE adtb00003.cedula,
serie LIKE adtb00003.serie,
nom_puesto LIKE adtb00004.nom_puesto,
tipo_sangre LIKE adtb00003.tipo_sangre
END RECORD
DEFINE nom_reporte CHAR(20),
ubicacion CHAR(1),
conjunto CHAR(30)
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM adfmrp047 FROM "adfmrp047"
DISPLAY FORM adfmrp047
CALL pantalla()
DISPLAY "adprrp047" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Maestra Empleado Resumen" AT 6,28 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
INPUT BY NAME nom_reporte,ubicacion
AFTER FIELD nom_reporte
IF nom_reporte IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_reporte
END IF
AFTER FIELD ubicacion
IF ubicacion IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD ubicacion
END IF
END INPUT
{
LABEL pide:
PROMPT "Listado Numerico o Alfabetico (N/A)? " FOR CHAR tipo_l
LET tipo_l = UPSHIFT(tipo_l)
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF tipo_l IS NULL THEN
LET tipo_l = "K"
END IF
IF tipo_l != "N" AND tipo_l != "A" THEN
GOTO pide
END IF
IF decide IS NULL THEN
LET decide = "S"
END IF
}
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE DE LOS QUINCENALES
{
IF tipo_l = "N" THEN
LET SELEC =
"SELECT UNIQUE a.num_emp,a.nivel_emp,a.cod_puesto, ",
" a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp,a.cedula,a.serie, ",
" b.nom_puesto,a.tipo_sangre ",
"FROM adtb00003 a,adtb00004 b ",
"WHERE a.cod_puesto=b.cod_puesto AND ",
" a.num_emp != 888 AND ",
" (a.status_t is null OR ",
" a.status_t NOT IN('D','E','T')) ",
"ORDER BY 1 "
ELSE
}
LET SELEC =
"SELECT UNIQUE a.num_emp,a.nivel_emp,a.cod_puesto, ",
" a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp,a.cedula,a.serie, ",
" b.nom_puesto,a.tipo_sangre ",
"FROM adtb00003 a,adtb00004 b ",
"WHERE a.cod_puesto=b.cod_puesto AND ",
" a.num_emp != 888 AND ",
" (a.status_t is null OR ",
" a.status_t NOT IN('D','E','T')) ",
"ORDER BY 6,7,4,5 "
# 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
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET conjunto = ubicacion CLIPPED ,":\\", nom_reporte CLIPPED
display " con ",conjunto
START REPORT emplear47 TO conjunto
## AQUI SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
WHILE STATUS != NOTFOUND
FETCH accion INTO list_emp.*
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 emplear47(list_emp.*)
END WHILE
FINISH REPORT emplear47
#RUN imprime
CLEAR SCREEN
END FUNCTION
## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT emplear47(x)
DEFINE x RECORD
num_emp LIKE adtb00003.num_emp,
nivel_emp LIKE adtb00003.nivel_emp,
cod_puesto LIKE adtb00003.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
nom2_emp LIKE adtb00003.nom2_emp,
apell1_emp LIKE adtb00003.apell1_emp,
apell2_emp LIKE adtb00003.apell2_emp,
cedula LIKE adtb00003.cedula,
serie LIKE adtb00003.serie,
nom_puesto LIKE adtb00004.nom_puesto,
tipo_sangre LIKE adtb00003.tipo_sangre
END RECORD,
formato RECORD
apellido CHAR(30),
nombre CHAR(30),
cedula CHAR(13),
cedula1 CHAR(11),
cargo CHAR(60)
END RECORD,
pri CHAR(3),
seg CHAR(7),
ter CHAR(1)
## 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
PAGE LENGTH 1000
#ORDER BY x.num_emp
FORMAT
FIRST PAGE HEADER
{
LET hora = time
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 1, letras.comp_on,letras.negrillas_on
PRINT COLUMN 1, "adprrp047",
COLUMN 44, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 128, "Pag. ",pageno using "###"
PRINT COLUMN 44, " Sistema de Administracion de Personal",
COLUMN 128, today using "dd/mm/yyyy"
PRINT COLUMN 44, " Maestra de Personal ",
COLUMN 131, hora
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------" ,
"-------------------------------"
PRINT COLUMN 2, "APELLIDOS",
COLUMN 34, "NOMBRES",
COLUMN 66, "CEDULA",
COLUMN 80, "POSICION"
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------" ,
"-------------------------------"
PRINT letras.negrillas_off
}
## AQUI SE INDICA LA IMPRESION DEL DETALLE
#BEFORE GROUP OF x.num_emp
ON EVERY ROW
SELECT a.cedula_n
INTO formato.cedula
FROM adtb00038 a
WHERE a.num_emp = x.num_emp
IF formato.cedula IS NOT NULL THEN
LET pri = formato.cedula[1,3]
LET seg = formato.cedula[5,11]
LET ter = formato.cedula[13]
LET formato.cedula1 = pri CLIPPED,seg CLIPPED,ter CLIPPED
LET formato.apellido = x.apell1_emp clipped," ",x.apell2_emp
LET formato.nombre = x.nom1_emp clipped," ",x.nom2_emp
PRINT COLUMN 2, formato.apellido CLIPPED,
COLUMN 34, formato.nombre CLIPPED ,
COLUMN 66, formato.cedula1 CLIPPED,
COLUMN 80, x.nom_puesto CLIPPED
END IF
{
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) using "###"
PRINT letras.comp_off
}
END REPORT