Files

259 lines
8.5 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,
nom2_emp LIKE adtb00003.nom2_emp,
apell1_emp LIKE adtb00003.apell1_emp,
apell2_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,
cod1 LIKE adtb00003.cod_seg1,
cod2 LIKE adtb00003.cod_seg1,
cod3 LIKE adtb00003.cod_seg1
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.nom2_emp,a.apell1_emp,a.apell2_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,a.cod_seg1, ",
" a.cod_seg2,a.cod_seg3 ",
"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.nom2_emp,a.apell1_emp,a.apell2_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,
nom2_emp LIKE adtb00003.nom2_emp,
apell1_emp LIKE adtb00003.apell1_emp,
apell2_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,
cod1 LIKE adtb00003.cod_seg1,
cod2 LIKE adtb00003.cod_seg1,
cod3 LIKE adtb00003.cod_seg1
END RECORD
## 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,
codigo_idss CHAR(15)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 0
FORMAT
FIRST PAGE HEADER
PRINT " "
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
{ NOMINA AUTOMATICA
PRINT "D",x.nom1_emp[1,12],x.nom2_emp[1,12],x.apell1_emp[1,12],
x.apell2_emp[1,12],m_cedula,m_sexo,x.fech_nac USING "YYYYMMDD",
x.departamento USING "&&&&&&&&&","0000000000","4",52 spaces
}
# SEGURIDAD SOCIAL
LET codigo_idss = x.cod1 USING "<<<<",x.cod2 USING "<<<<",x.cod3 USING "<<<<"
PRINT "C",";",m_cedula CLIPPED,";",x.nom1_emp CLIPPED," ",x.nom2_emp CLIPPED,";",
x.apell1_emp CLIPPED,";",x.apell2_emp CLIPPED,";",
x.fech_nac USING "ddmmyyyy",";",codigo_idss CLIPPED,";",
x.sueldo_ac USING "<<<<<<.##",";","F"
END REPORT