Files
MBS/PROYECTO/addir/adprrp023.4gl
T

289 lines
9.4 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP023
OBJETIVO : LISTAR LAS ROTACIONES QUE HA TENIDO EL PERSONAL
EN LOS DEPARTAMENTOS BAJO UN RANGO DE FECHA
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Julio 07, 1993
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
DEFINE datos_p RECORD LIKE adtb00020.*
DEFINE datos_e RECORD LIKE adtb00003.*
FUNCTION adprrp023()
DEFINE a_depto,a_num SMALLINT
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM adfmrp023 FROM "adfmrp023"
DISPLAY FORM adfmrp023
CALL pantalla()
DISPLAY "adprrp023" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Relacion Rotacion del Personal" AT 6,28 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 LA ROTACION DEL PERSONAL
LET datos.fech_ini = NULL
LET datos.fech_fin = NULL
INPUT BY NAME datos.fech_ini,datos.fech_fin
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
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE
DECLARE accion CURSOR FOR
SELECT a.*,b.* FROM adtb00020 a,adtb00003 b
WHERE a.num_emp = b.num_emp AND (a.cod_mto=4 OR a.cod_mto=1) AND
a.sec_mto between 1 and 5 AND a.fech_efec between
datos.fech_ini and datos.fech_fin AND a.status_t is null
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT rotar TO archivo
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
FOREACH accion INTO datos_p.*,datos_e.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET a_depto = depto.departamento
LET a_num = datos_p.num_emp
OUTPUT TO REPORT rotar(datos_p.*,datos_e.*)
END FOREACH
FINISH REPORT rotar
RUN imprime
CLEAR SCREEN
END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT rotar(x,j)
DEFINE x RECORD LIKE adtb00020.*
DEFINE j RECORD LIKE adtb00003.*
DEFINE x_depto,x_num SMALLINT
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
DEFINE entrada,salida,salida1,salida2,salida3 SMALLINT
DEFINE total_ent,total_sal,t_salidas,no_empleados1,no_empleados SMALLINT
DEFINE indice_sal DECIMAL(10,2)
DEFINE nom_dpto CHAR(40)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
ORDER BY x.departamento,x.num_emp
FORMAT
PAGE HEADER
LET hora = time
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 1, letras.doce,
COLUMN 2, "adprrp023",
COLUMN 14, letras.negrillas_on,
COLUMN 15, letras.doble_on,
COLUMN 16, letras.comp_on,
COLUMN 26, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 73, letras.negrillas_off,
COLUMN 74, letras.doble_off,
COLUMN 75, letras.comp_off,
COLUMN 91, "Pag. ",pageno using "###"
PRINT COLUMN 31, "Sistema de Administracion de Personal",
COLUMN 93, today using "dd/mm/yyyy"
PRINT COLUMN 35, "Relacion Rotacion de Personal",
COLUMN 96, 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 49, "S A L I D A S"
PRINT COLUMN 48, "=========================================="
PRINT COLUMN 48, "Mutuo",
COLUMN 94, "Total"
PRINT COLUMN 2, "Departamento",
COLUMN 36, "Entradas",
COLUMN 48, "Acuerdo",
COLUMN 59, "Desahucio",
COLUMN 72, "Renuncia",
COLUMN 84, "Despido",
COLUMN 94, "Salidas"
PRINT COLUMN 2, "--------------------------------------------------",
"-------------------------------------------------"
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.departamento
LET entrada = 0
LET salida = 0
LET salida1 = 0
LET salida2 = 0
LET salida3 = 0
LET total_sal = 0
SELECT a.nom_dpto INTO nom_dpto FROM adtb00001 a
WHERE a.status_t IS NULL AND a.departamento = x.departamento
PRINT COLUMN 2, nom_dpto
ON EVERY ROW
IF total_ent IS NULL THEN
LET total_ent = 0
END IF
PRINT COLUMN 2,x.num_emp USING "&&&&"," ",j.nom1_emp CLIPPED," ",
j.nom2_emp CLIPPED," ",j.apell1_emp CLIPPED," ";
IF x.cod_mto = 1 THEN
LET entrada = entrada + 1
PRINT COLUMN 40, "X"
END IF
IF x.cod_mto = 4 THEN
CASE
WHEN x.sec_mto = 1
LET salida = salida + 1
PRINT COLUMN 52, "X"
EXIT CASE
WHEN x.sec_mto = 2
LET salida1 = salida1 + 1
PRINT COLUMN 64, "X"
EXIT CASE
WHEN x.sec_mto = 5
LET salida2 = salida2 + 1
PRINT COLUMN 77, "X"
EXIT CASE
OTHERWISE
LET salida3 = salida3 + 1
PRINT COLUMN 88, "X"
EXIT CASE
END CASE
END IF
## CALCULO DE LOS CAMPOS DE IMPRESION DEL DETALLE
AFTER GROUP OF x.departamento
IF t_salidas IS NULL THEN
LET t_salidas = 0
END IF
LET total_ent = total_ent + entrada
LET total_sal = salida + salida1 + salida2 + salida3
LET t_salidas = t_salidas + total_sal
PRINT COLUMN 2, "--------------------------------------------------",
"-------------------------------------------------"
PRINT COLUMN 2, "Total Por Departamento -->",
COLUMN 38, entrada using "###",
COLUMN 50, salida using "###",
COLUMN 62, salida1 using "###",
COLUMN 75, salida2 using "###",
COLUMN 86, salida3 using "###",
COLUMN 96, total_sal using "<<<"
SKIP 1 LINE
## CALCULO DEL INDICE DE AUSENCIA
ON LAST ROW
SELECT COUNT(*) INTO no_empleados FROM adtb00020
WHERE status_t is null AND fecha <= datos.fech_fin AND cod_mto = 1
SELECT COUNT(*) INTO no_empleados1 FROM adtb00020
WHERE status_t is null AND fecha <= datos.fech_fin AND cod_mto = 4
LET no_empleados = no_empleados - no_empleados1
LET indice_sal = (t_salidas/no_empleados)*100
PRINT COLUMN 2, "Total Entradas:",
COLUMN 18, total_ent using "<<<",
COLUMN 27, "Total Salidas:",
COLUMN 42, t_salidas using "<<<",
COLUMN 52, "Total Empleados:",
COLUMN 69, no_empleados using "<<<",
COLUMN 78, "INDICE SALIDA:",
COLUMN 93, indice_sal using "###","%"
PRINT COLUMN 2, "==================================================",
"================================================="
LET total_ent = 0
END REPORT