Files
MBS/PROYECTO/nodir/noprrp035.jh
T

274 lines
8.7 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP035
OBJETIVO : Listar las informaciones Complementarias del reporte
ADPRRP011
PROGRAMADOR : JUAN F. SOTO
FECHA REALIZACION : Noviembre 7, 1995
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
DEFINE salir,tipo_l CHAR(1),
lj INTEGER
FUNCTION noprrp035()
## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE
DEFINE list_emp RECORD
num_emp LIKE adtb00003.num_emp,
nom1_emp LIKE adtb00003.nom1_emp,
nom2_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
apell2_emp LIKE adtb00003.apell1_emp,
cedula LIKE adtb00003.cedula,
serie LIKE adtb00003.serie,
fech_nac LIKE adtb00003.fech_nac,
fech_efec LIKE adtb00003.fech_efec,
estado_civil LIKE adtb00003.estado_civil,
sexo LIKE adtb00034.sexo
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp035 FROM "nofmrp035"
DISPLAY FORM nofmrp035
CALL pantalla()
DISPLAY "noprrp035" AT 4,3
DISPLAY "Empleados Activos" AT 6,34
## 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)
## AQUI SE DIGITA LA VARIABLE QUE INDICA LA CONDICION DEL REPORTE, ES DECIR
## SI SE TRATA DE EMPLEADOS SEMANALES O QUINCENALES
CONSTRUCT BY NAME criterio ON a.num_emp,a.nomina
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 != "N" AND tipo_l != "A" THEN
GOTO pide
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.nom1_emp,a.nom2_emp,",
" a.apell1_emp,a.apell2_emp,a.cedula,a.serie,a.fech_nac, ",
" a.fech_efec,a.estado_civil ",
"FROM adtb00003 a ",
"WHERE ",criterio clipped," AND (a.status_t is null OR a.status_t = 'I') ",
"ORDER BY 1 "
END IF
IF tipo_l = "A" THEN
LET SELEC =
"SELECT UNIQUE a.num_emp,a.nom1_emp,a.nom2_emp,",
" a.apell1_emp,a.apell2_emp,a.cedula,a.serie,a.fech_nac, ",
" a.fech_efec,a.estado_civil ",
"FROM adtb00003 a ",
"WHERE ",criterio clipped," AND (a.status_t is null OR a.status_t = 'I') ",
"ORDER BY 4 "
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)
START REPORT nace TO "C:\\archivo"
## AQUI SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
LET salir = "N"
WHILE salir != "S"
FETCH accion INTO list_emp.*
IF STATUS = NOTFOUND THEN
LET salir = "S"
EXIT WHILE
ELSE
LET salir = "N"
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT nace(list_emp.*)
END WHILE
FINISH REPORT nace
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT nace(x)
DEFINE x RECORD
num_emp LIKE adtb00003.num_emp,
nom1_emp LIKE adtb00003.nom1_emp,
nom2_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
apell2_emp LIKE adtb00003.apell1_emp,
cedula LIKE adtb00003.cedula,
serie LIKE adtb00003.serie,
fech_nac LIKE adtb00003.fech_nac,
fech_efec LIKE adtb00003.fech_efec,
estado_civil LIKE adtb00003.estado_civil,
sexo LIKE adtb00034.sexo
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
DEFINE l SMALLINT
DEFINE varia CHAR(12),
m_sexo,m_civil CHAR(10),
nom_provincia CHAR(20),
cod_prov,codigo_sol SMALLINT
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 2
BOTTOM MARGIN 4
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
LET lj = (157 - LENGTH(p_companias.nombre CLIPPED))/2
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 1, doce,comp_on,negrillas_on
PRINT COLUMN 1, "noprrp035",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 150, "Pag. ",pageno using "###"
PRINT COLUMN 60, "Sistema de Administracion de Personal",
COLUMN 150, today using "dd/mm/yy"
PRINT COLUMN 60, " Maestra de Personal ",
COLUMN 153, hora
PRINT doce,comp_on
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------",
"------------------------------------------------------"
PRINT COLUMN 103, "Estado",
COLUMN 115, "Fecha de",
COLUMN 127, "Lugar de",
COLUMN 148, "Fecha de"
PRINT COLUMN 2, "Codigo No.",
COLUMN 13, "Nombre Empleado",
COLUMN 74, "Cedula-Serie",
COLUMN 91, "Sexo",
COLUMN 103, "Civil ",
COLUMN 115, "Entrada",
COLUMN 127, "Nacimiento",
COLUMN 148, "Nacimiento"
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------",
"------------------------------------------------------"
ON EVERY ROW
# Busca el sexo de cada empleado y como la tabla esta estructurada para el
# Sexo de los familiares tambien, entonces para identificar el sexo del empleado
# hay distinguirlo con el codigo del parentesco(cod_par) que es cero(0).
SELECT @sexo INTO x.sexo
FROM adtb00021
WHERE @num_emp = x.num_emp
IF x.sexo = "M" THEN
LET m_sexo = "MASCULINO"
END IF
IF x.sexo = "F" THEN
LET m_sexo = "FEMENINO"
END IF
IF x.sexo IS NULL THEN
LET m_sexo = "NO DIGITADO"
END IF
IF x.estado_civil = "C" THEN
LET m_civil = "CASADO"
END IF
IF x.estado_civil = "S" THEN
LET m_civil = "SOLTERO"
END IF
IF x.estado_civil IS NULL THEN
LET m_civil = "NULO"
END IF
# Busqueda del codigo del solicitante
SELECT MAX(cod_sol) INTO codigo_sol FROM adtb00017
WHERE num_emp = x.num_emp
# Busqueda del codigo de la provincia en que nacio
SELECT unique cod_provincia INTO cod_prov
FROM adtb00012 WHERE cod_sol = codigo_sol
# Busqueda del nombre de la provincia en que nacio
SELECT unique nombre_provincia INTO nom_provincia
FROM vetb00020
WHERE cod_provincia = cod_prov
PRINT COLUMN 3, x.num_emp USING "&&&&",
COLUMN 14, x.apell1_emp clipped," ",x.apell2_emp clipped," ",
x.nom1_emp clipped," ",x.nom2_emp clipped," ",
COLUMN 72, x.cedula using "#########","-",x.serie using "&&&&",
COLUMN 91, m_sexo clipped,
COLUMN 103, m_civil clipped,
COLUMN 115, x.fech_efec using "dd/mm/yy",
COLUMN 125, nom_provincia,
COLUMN 148, x.fech_nac using "dd/mm/yy"
ON LAST ROW
skip 1 line
PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) using "###"
PRINT ASCII 27, ASCII 80
PRINT comp_off
END REPORT