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

317 lines
11 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : adprrp043
OBJETIVO : Listar las informaciones generales de los
Empleados Quincenales y Semanales y Ex-Empleados
Agrupados por los Deptos. Corporativos.
PROGRAMADOR : Oscar A. Castillo
FECHA REALIZACION : Tuesday, 06 February, 2001
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
DEFINE tipo_l CHAR(1)
FUNCTION adprrp043()
## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE
DEFINE list_emp 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,
cedula LIKE adtb00003.cedula,
serie LIKE adtb00003.serie,
telefono LIKE adtb00003.telefono,
fech_nac LIKE adtb00003.fech_nac,
tipo_sangre LIKE adtb00003.tipo_sangre,
licencia LIKE adtb00003.licencia,
fech_efec LIKE adtb00003.fech_efec,
sueldo_ac LIKE adtb00003.sueldo_ac,
nom_dpto LIKE adtb00001.nom_dpto,
nom_puesto LIKE adtb00004.nom_puesto,
calle LIKE adtb00003.calle,
casa_num LIKE adtb00003.casa_num,
barrio LIKE adtb00003.barrio,
urbanizacion LIKE adtb00003.urbanizacion,
sexo LIKE adtb00030.sexo,
dep_corp LIKE adtb00042.dep_corp,
clase_emp LIKE adtb00003.clase_emp
END RECORD,
corporativo LIKE adtb00042.dep_corp
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM adfmrp011 FROM "adfmrp011"
DISPLAY FORM adfmrp011
CALL pantalla()
DISPLAY "adprrp043" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Empleados Deartamentos Corporativos " AT 6,23 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 = 1
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
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT BY NAME criterio ON a.num_emp
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
{
LABEL pide:
PROMPT "Listado Numerico o Alfabetico (N/A)? " FOR CHAR tipo_l
LET tipo_l = UPSHIFT(tipo_l)
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
LET SELEC =
"SELECT UNIQUE a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ",
" a.nom1_emp,a.apell1_emp,a.cedula,a.serie,a.telefono,a.fech_nac, ",
" a.tipo_sangre,a.licencia,a.fech_efec,a.sueldo_ac,c.nom_dpto, ",
" b.nom_puesto,a.calle,a.casa_num,a.barrio,a.urbanizacion,d.sexo, ",
" e.dep_corp,a.clase_emp ",
"FROM adtb00003 a,adtb00004 b,adtb00001 c,adtb00030 d, adtb00043 e ",
"WHERE (a.cod_puesto=b.cod_puesto) AND (a.departamento=c.departamento) AND ",
" (a.status_t is null OR a.status_t NOT IN('D','E','T')) AND ",
" (a.num_emp = d.num_emp AND a.num_emp = e.num_emp AND ",
" d.num_emp = e.num_emp ", #criterio CLIPPED,
") ORDER BY 22 "
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 empleados TO archivo
## 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 empleados(list_emp.*)
END WHILE
FINISH REPORT empleados
RUN imprime
CLEAR SCREEN
END FUNCTION
## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT empleados(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,
cedula LIKE adtb00003.cedula,
serie LIKE adtb00003.serie,
telefono LIKE adtb00003.telefono,
fech_nac LIKE adtb00003.fech_nac,
tipo_sangre LIKE adtb00003.tipo_sangre,
licencia LIKE adtb00003.licencia,
fech_efec LIKE adtb00003.fech_efec,
sueldo_ac LIKE adtb00003.sueldo_ac,
nom_dpto LIKE adtb00001.nom_dpto,
nom_puesto LIKE adtb00004.nom_puesto,
calle LIKE adtb00003.calle,
casa_num LIKE adtb00003.casa_num,
barrio LIKE adtb00003.barrio,
urbanizacion LIKE adtb00003.urbanizacion,
sexo LIKE adtb00030.sexo,
dep_corp LIKE adtb00042.dep_corp,
clase_emp LIKE adtb00003.clase_emp
END RECORD,
p_corp LIKE adtb00042.dep_corp,
nombre_corp LIKE adtb00042.nombre_depto
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
DEFINE l SMALLINT
DEFINE varia CHAR(12),
m_cedula LIKE adtb00038.cedula_n,
m_sexo LIKE adtb00030.sexo
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 2
BOTTOM MARGIN 4
ORDER BY x.dep_corp
FORMAT
PAGE HEADER
LET hora = time
IF decide = "Q" THEN
LET varia = "QUINCENALES"
END IF
IF decide = "S" THEN
LET varia = "SEMANALES"
END IF
IF decide = "T" THEN
LET varia = "EX-EMPLEADOS"
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 1, letras.doce,letras.comp_on,letras.negrillas_on
PRINT COLUMN 1, "adprrp043",
COLUMN 44, "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 44, " Sistema de Administracion de Personal",
COLUMN 128, today using "dd/mm/yyyy"
PRINT COLUMN 44, " Maestra de Personal ",varia CLIPPED,
COLUMN 131, hora
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------",
"--------------------------------"
PRINT COLUMN 75, "Fecha de",
COLUMN 86, "Tipo de",
COLUMN 95, "Clase",
COLUMN 104, "Fecha de"
PRINT COLUMN 2, "Codigo No.",
COLUMN 18, "Nombre Empleado",
COLUMN 49, "Cedula",
COLUMN 60, "Serie",
COLUMN 66, "Telefono",
COLUMN 75, "Nacimiento",
COLUMN 86, "Sangre",
COLUMN 96, "Emp.",
COLUMN 104, "Entrada",
COLUMN 114, "Salario Mes"
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------",
"--------------------------------"
PRINT letras.negrillas_off
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.dep_corp
SELECT a.nombre_depto
INTO nombre_corp
FROM adtb00042 a
WHERE a.dep_corp = x.dep_corp
AND a.status_t IS NULL
PRINT COLUMN 1, "Departamento : ",x.dep_corp USING "#####"," - ",
nombre_corp CLIPPED
SKIP 1 LINE
ON EVERY ROW
INITIALIZE m_cedula,m_sexo TO NULL
SELECT a.cedula_n
INTO m_cedula
FROM adtb00038 a
WHERE a.num_emp = x.num_emp
SELECT a.sexo
INTO m_sexo
FROM adtb00030 a
WHERE a.num_emp = x.num_emp
PRINT COLUMN 1, letras.negrillas_on,
COLUMN 3, x.num_emp USING "&&&&","-",
x.departamento USING "&&&&","-",
x.nivel_emp USING "&&","-",x.cod_puesto USING "&&",
" ",x.apell1_emp clipped,", ",x.nom1_emp clipped,
COLUMN 48, letras.negrillas_off,
COLUMN 47, m_cedula CLIPPED, #using "###-#######-#",
#COLUMN 52, x.cedula using "#<<<<<<<<","-",x.serie using "&&&&",
COLUMN 70, x.telefono,
COLUMN 80, x.fech_nac using "dd/mm/yyyy",
COLUMN 92, x.tipo_sangre,
COLUMN 98, x.clase_emp CLIPPED,
COLUMN 108, x.fech_efec using "dd/mm/yyyy",
COLUMN 117, x.sueldo_ac using "#,###,###.##"
PRINT #COLUMN 1, "Departamento: ",x.nom_dpto,
COLUMN 45, "Puesto: ",x.nom_puesto,
COLUMN 84, "Direccion: ",x.calle clipped," ",x.casa_num clipped,
" ",x.barrio clipped," ",x.urbanizacion clipped,
" Sexo: ", m_sexo CLIPPED #x.sexo
SKIP 1 LINE
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) using "###"
PRINT letras.comp_off,ASCII 27, ASCII 80
END REPORT