Files

284 lines
9.4 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP031
OBJETIVO : HISTORIAL DE EMPLEADOS
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Oct. 12, 1994
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
FUNCTION adprrp031()
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE historial RECORD
cod_sol LIKE adtb00020.cod_sol,
num_emp LIKE adtb00020.num_emp,
departamento LIKE adtb00020.departamento,
nivel_emp LIKE adtb00020.nivel_emp,
cod_puesto LIKE adtb00020.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
fech_efec LIKE adtb00020.fech_efec,
sueldo_ac LIKE adtb00020.sueldo_ac,
nomina LIKE adtb00020.nomina,
estado_civil LIKE adtb00020.estado_civil,
tipo_sangre LIKE adtb00020.tipo_sangre,
cod_mto LIKE adtb00020.cod_mto,
sec_mto LIKE adtb00020.sec_mto,
desc_mto LIKE adtb00009.desc_mto,
observacion CHAR(60)
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM adfmrp031 FROM "adfmrp007"
DISPLAY FORM adfmrp031
CALL pantalla()
DISPLAY "adprrp031" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Historial de Empleados" AT 6,31 ATTRIBUTE(BLACK)
## INDICA EL TIPO DE PAPEL NECESARIO PARA 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
## SE INDICA EL RANGO DE FECHA DESEADO PARA LISTAR LAS AUSENCIAS
LET datos.fech_ini = NULL
LET datos.fech_fin = NULL
INPUT BY NAME datos.fech_ini,datos.fech_fin WITHOUT DEFAULTS
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime, letras.*, archivo
AFTER FIELD fech_ini
IF datos.fech_ini IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_ini
END IF
AFTER FIELD fech_fin
IF datos.fech_fin IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_fin
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT INPUT
END INPUT
## DEFINICION DEL CRITERIO DE BUSQUEDA PARA IMPRIMIR EL REPORTE
CONSTRUCT criterio ON a.departamento,a.num_emp FROM departamento,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
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE
LET SELEC =
"SELECT a.cod_sol,a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ",
" b.nom1_emp,b.apell1_emp,a.fech_efec,a.sueldo_ac,a.nomina, ",
" a.estado_civil,a.tipo_sangre,a.cod_mto,a.sec_mto,d.desc_mto, ",
" a.observacion ",
"FROM adtb00020 a,adtb00003 b,adtb00009 d ",
"WHERE ",criterio CLIPPED," AND a.num_emp = b.num_emp AND ",
" a.cod_mto=d.cod_mto AND a.sec_mto=d.sec_mto AND ",
" a.status_t is null AND a.fech_efec BETWEEN ? AND ? ORDER BY 2,8"
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
## SE PREPARA LA INFORMACION SELECCIONADA
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
## SE DECLARA UN CURSOR PARA BUSCAR LA INFORMACION SELECCIONADA
DECLARE accion CURSOR FOR busca
OPEN accion USING datos.fech_ini,datos.fech_fin
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT historial1 TO archivo
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
WHILE STATUS != NOTFOUND
FETCH accion INTO historial.*
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 historial1(historial.*)
END WHILE
FINISH REPORT historial1
RUN imprime
CLEAR SCREEN
END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT historial1(x)
DEFINE x RECORD
cod_sol LIKE adtb00020.cod_sol,
num_emp LIKE adtb00020.num_emp,
departamento LIKE adtb00020.departamento,
nivel_emp LIKE adtb00020.nivel_emp,
cod_puesto LIKE adtb00020.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
fech_efec LIKE adtb00020.fech_efec,
sueldo_ac LIKE adtb00020.sueldo_ac,
nomina LIKE adtb00020.nomina,
estado_civil LIKE adtb00020.estado_civil,
tipo_sangre LIKE adtb00020.tipo_sangre,
cod_mto LIKE adtb00020.cod_mto,
sec_mto LIKE adtb00020.sec_mto,
desc_mto LIKE adtb00009.desc_mto,
observacion CHAR(60)
END RECORD
DEFINE nom1_emp,apell1_emp CHAR(15),
nom_dpto CHAR(30)
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
DEFINE num_emp,num_historiales,no_empleados,num_ausen SMALLINT
DEFINE indice DECIMAL(5,2)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
FORMAT
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, "adprrp031",
COLUMN 82, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 203, "Pag. ",pageno using "###"
PRINT COLUMN 82, " Sistema de Administracion de Personal",
COLUMN 203, today using "dd/mm/yyyy"
PRINT COLUMN 82, " Historial de Empleados",
COLUMN 205, hora
skip 1 line
PRINT COLUMN 2, "Desde: ",datos.fech_ini using "dd/mm/yyyy",
COLUMN 20, "Hasta: ",datos.fech_fin using "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------",
"----------"
PRINT COLUMN 1, "Empleado",
COLUMN 50, "Fecha",
COLUMN 60, "Sueldo",
COLUMN 85, "Nomina",
COLUMN 92, "Etdo. Civil",
COLUMN 104, "Tipo Sangre",
COLUMN 116, "Movimiento",
COLUMN 153, "Observacion"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------",
"----------"
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.num_emp
LET num_emp = 0
PRINT COLUMN 1, letras.negrillas_on
PRINT COLUMN 1, x.num_emp using "&&&&","-",
x.departamento using "&&&&","-",
x.nivel_emp using "&&","-",x.cod_puesto using "&&",
" ",x.nom1_emp clipped," ",x.apell1_emp clipped;
ON EVERY ROW
IF x.cod_mto = 1 THEN
LET x.observacion = "SU CODIGO DE SOLICITANTE ES ",x.cod_sol
USING "<<<<"
END IF
PRINT COLUMN 50,x.fech_efec USING "dd/mm/yyyy",
COLUMN 60,x.sueldo_ac USING "###,###.##",
COLUMN 88,x.nomina CLIPPED,
COLUMN 92,x.estado_civil,
COLUMN 108,x.tipo_sangre CLIPPED,
COLUMN 116,x.cod_mto USING "&","-",x.sec_mto USING "&&&"," ",
x.desc_mto CLIPPED,
COLUMN 153,x.observacion CLIPPED
IF num_historiales is null THEN
LET num_historiales = 0
END IF
LET num_emp = num_emp + 1
LET num_historiales = num_historiales + 1
AFTER GROUP OF x.num_emp
PRINT COLUMN 1, "Total Acciones Por Empleado: ",num_emp
USING "###,###"
skip 1 line
ON LAST ROW
PRINT COLUMN 1, "Total Acciones En General : ",num_historiales
USING "###,###"
## AQUI SE APAGA EL CARACTER DE IMPRESION COMPRIMIDO
PRINT ASCII 18
PRINT ASCII 27, ASCII 80
END REPORT