Files
MBS/PROYECTO/addir/adprrp011.old.txt
T

298 lines
9.9 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP011
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"
DEFINE tipo_l CHAR(1)
FUNCTION adprrp011()
## 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
END RECORD
#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 "adprrp011" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Empleados Activos" AT 6,34 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
INPUT BY NAME decide
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime,letras.*, archivo
AFTER INPUT
EXIT INPUT
END INPUT
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
IF tipo_l = "N" THEN
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 ",
"FROM adtb00003 a,adtb00004 b,adtb00001 c,adtb00030 d ",
"WHERE (a.cod_puesto=b.cod_puesto) AND (a.departamento=c.departamento) AND ",
" a.nomina=? AND (a.status_t is null OR a.status_t NOT IN('D','E','T')) AND ",
" (a.num_emp = d.num_emp AND ",criterio CLIPPED,
") ORDER BY 1 "
ELSE
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 ",
"FROM adtb00003 a,adtb00004 b,adtb00001 c ",
"WHERE (a.cod_puesto=b.cod_puesto) AND (a.departamento=c.departamento) AND ",
" a.nomina=? AND (a.status_t is null OR a.status_t NOT IN('D','E','T'))", #AND ",
" ORDER BY 6 "
{
" (a.num_emp = d.num_emp AND ",criterio CLIPPED,
") ORDER BY 6 "
}
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 decide
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT emplear 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 emplear(list_emp.*)
END WHILE
FINISH REPORT emplear
RUN imprime
CLEAR SCREEN
END FUNCTION
## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT emplear(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
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
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, "adprrp011",
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 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 95, "Licencia",
COLUMN 104, "Entrada",
COLUMN 114, "Salario Mes"
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------",
"--------------------------------"
PRINT letras.negrillas_off
## AQUI SE INDICA LA IMPRESION DEL DETALLE
ON EVERY ROW
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 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.licencia using "#<<<<<<<<",
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: ", 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