Files

269 lines
8.6 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP019
OBJETIVO : LISTA LAS AMONESTACIONES QUE HAN RECIBIDO LOS
EMPLEADOS Y EL TOTAL DE AMONESTACIONES QUE HAN
RECIBIDO CADA UNO DE ELLOS
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Junio 28, 1993
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
FUNCTION adprrp019()
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE amonestan RECORD
num_emp LIKE adtb00026.num_emp,
departamento LIKE adtb00026.departamento,
nivel_emp LIKE adtb00026.nivel_emp,
cod_puesto LIKE adtb00026.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
nom_puesto LIKE adtb00004.nom_puesto,
nom_dpto LIKE adtb00001.nom_dpto,
amon_num LIKE adtb00026.amon_num,
fecha LIKE adtb00026.fecha,
violacion LIKE adtb00026.violacion,
violacion1 LIKE adtb00026.violacion
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM adfmrp009 FROM "adfmrp009"
DISPLAY FORM adfmrp009
CALL pantalla()
DISPLAY "adprrp019" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Amonestaciones" AT 6,36 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 AMONESTACIONES
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 LA IMPRESION
CONSTRUCT criterio ON a.num_emp FROM 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.num_emp,a.departamento,a.nivel_emp,a.cod_puesto,b.nom1_emp, ",
" b.apell1_emp,c.nom_puesto,d.nom_dpto,a.amon_num,a.fecha, ",
" a.violacion,a.violacion1 ",
"FROM adtb00026 a,adtb00003 b,adtb00004 c,adtb00001 d ",
"WHERE a.num_emp = b.num_emp AND a.departamento = b.departamento AND ",
" a.nivel_emp = b.nivel_emp AND a.cod_puesto = b.cod_puesto AND ",
" a.cod_puesto=c.cod_puesto AND a.departamento=d.departamento AND ",
" a.fecha between ? and ? AND a.status_t is null AND ",
criterio clipped," ORDER BY 1"
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
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
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 amonestar TO archivo
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE SALIDA
## AL REPORTE
FOREACH accion INTO amonestan.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT amonestar(amonestan.*)
END FOREACH
FINISH REPORT amonestar
RUN imprime
CLEAR SCREEN
END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT amonestar(x)
DEFINE x RECORD
num_emp LIKE adtb00026.num_emp,
departamento LIKE adtb00026.departamento,
nivel_emp LIKE adtb00026.nivel_emp,
cod_puesto LIKE adtb00026.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
nom_puesto LIKE adtb00004.nom_puesto,
nom_dpto LIKE adtb00001.nom_dpto,
amon_num LIKE adtb00026.amon_num,
fecha LIKE adtb00026.fecha,
violacion LIKE adtb00026.violacion,
violacion1 LIKE adtb00026.violacion
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
DEFINE num_amon SMALLINT
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,
COLUMN 2, "adprrp019",
COLUMN 14, letras.negrillas_on,
COLUMN 45, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 65, letras.negrillas_off,
COLUMN 139, "Pag. ",pageno using "###"
PRINT COLUMN 48, "Sistema de Administracion de Personal",
COLUMN 134, today using "dd/mm/yyyy"
PRINT COLUMN 59, "Amonestaciones",
COLUMN 137, 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 2, "---------------------------------------------------",
"---------------------------------------------------",
"--------------------------------------"
PRINT COLUMN 114, "Numero",
COLUMN 130, "Fecha"
PRINT COLUMN 2, "Ficha No.",
COLUMN 17, "Nombre Empleado",
COLUMN 49, "Puesto",
COLUMN 81, "Departamento",
COLUMN 114, "Documento",
COLUMN 130, "Amonestacion"
PRINT COLUMN 2, "----------------------------------------------------",
"---------------------------------------------------",
"-------------------------------------"
skip 1 line
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.num_emp
LET num_amon = 0
PRINT COLUMN 1, letras.negrillas_on,
COLUMN 2, x.num_emp using "&&&&","-",
COLUMN 7, x.departamento using "&&&&","-",
COLUMN 12, x.nivel_emp using "&&","-",
COLUMN 15, x.cod_puesto using "&&",
COLUMN 19, x.nom1_emp clipped," ",x.apell1_emp clipped,
COLUMN 51, x.nom_puesto,
COLUMN 83, x.nom_dpto,
COLUMN 113, letras.negrillas_off
ON EVERY ROW
## AQUI SE CALCULA LA CANTIDAD DE AMONESTACIONES QUE RECIBE CADA EMPLEADO
LET num_amon = num_amon + 1
PRINT COLUMN 2, x.violacion clipped,x.violacion1[1,55] CLIPPED,
COLUMN 118, x.amon_num using "####",
COLUMN 132, x.fecha using "dd/mm/yyyy"
AFTER GROUP OF x.num_emp
## AQUI SE IMPRIMEN EL TOTAL DE AMONESTACIONES QUE RECIBE CADA EMPLEADO
PRINT COLUMN 114, "Total Amonestaciones:",
COLUMN 136, num_amon using "#<<"
ON LAST ROW
## AQUI SE APAGA EL CARACTER DE IMPRESION COMPRIMIDO
PRINT ASCII 18
PRINT ASCII 27, ASCII 80
END REPORT