318 lines
9.9 KiB
Plaintext
318 lines
9.9 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------
|
|
PROGRAMA : ADPRRP030
|
|
OBJETIVO : Tardanzas de los Empleados
|
|
Reporte de todos los empleados con tardanzas
|
|
para enviar a la Gerencia General
|
|
PROGRAMADOR : Juan F. Soto
|
|
FECHA : Septiembre 29, 1994.
|
|
-------------------------------------------------------------------------
|
|
}
|
|
GLOBALS
|
|
"adprgb000.4gl"
|
|
DEFINE ch_depto1 CHAR(4)
|
|
DEFINE nombre_dpto1 CHAR(30)
|
|
DEFINE fecha1 DATE
|
|
DEFINE depto1,cant_dia INTEGER
|
|
DEFINE datos_tarde RECORD
|
|
departamento INTEGER,
|
|
num_emp SMALLINT,
|
|
nom_emp CHAR(14),
|
|
apell CHAR(14),
|
|
fecha DATE,
|
|
hora_ent LIKE adtb00023.hora_ent,
|
|
hora_sal LIKE adtb00023.hora_sal,
|
|
depto INTEGER
|
|
END RECORD,
|
|
hora_control LIKE adtb00023.hora_ent,
|
|
l,m,mi,j,v SMALLINT
|
|
|
|
DEFINE salida ARRAY[100] OF RECORD
|
|
lunes CHAR(30),
|
|
martes CHAR(30),
|
|
miercoles CHAR(30),
|
|
jueves CHAR(30),
|
|
viernes CHAR(30)
|
|
END RECORD
|
|
|
|
DEFINE semana_del,semana_al DATE
|
|
DEFINE dias_1 INTEGER
|
|
|
|
FUNCTION adprrp030()
|
|
OPTIONS
|
|
ERROR LINE 24,
|
|
FORM LINE 8
|
|
|
|
CALL pantalla()
|
|
DISPLAY "adprrp030" AT 4,3 ATTRIBUTE(RED)
|
|
DISPLAY "Tardanzas de Empleados Por Departamento" AT 6,20 ATTRIBUTE(BLACK)
|
|
OPEN FORM adfmrp030 FROM "adfmrp016"
|
|
DISPLAY FORM adfmrp030
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
|
|
|
|
|
|
INPUT BY NAME semana_del,semana_al
|
|
|
|
ON KEY(CONTROL-P)
|
|
CALL busca_printer() RETURNING imprime, letras.*, archivo
|
|
|
|
AFTER FIELD semana_al
|
|
LET dias_1 = semana_al - semana_del
|
|
|
|
IF dias_1 > 5 THEN
|
|
LET numero_msg = 97
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD semana_del
|
|
END IF
|
|
|
|
IF dias_1 < 4 THEN
|
|
LET numero_msg = 98
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD semana_del
|
|
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
|
|
|
|
DISPLAY "Buscando Informacion... Espere Por Favor" AT 19,14
|
|
|
|
DECLARE busca CURSOR FOR
|
|
{SELECT UNIQUE a.departamento,a.num_emp,a.nom1_emp,a.apell1_emp,b.fecha,
|
|
min(b.hora_ent)
|
|
FROM adtb00003 a,adtb00023 b
|
|
WHERE a.num_emp = b.num_emp and #a.nivel_emp != 1 and
|
|
b.fecha between semana_del and semana_al and
|
|
b.hora_ent between "01:00" and "10:00" AND a.departamento > 0
|
|
GROUP BY 1,2,3,4,5
|
|
ORDER BY b.fecha
|
|
}
|
|
SELECT UNIQUE ' ',a.num_emp,a.nom1_emp,a.apell1_emp,b.fecha,
|
|
min(b.hora_ent)
|
|
FROM adtb00003 a,adtb00023 b
|
|
WHERE a.num_emp = b.num_emp and
|
|
b.fecha between semana_del and semana_al and
|
|
b.hora_ent between "01:00" and "10:00" AND b.status_t is null
|
|
GROUP BY 1,2,3,4,5
|
|
ORDER BY b.fecha
|
|
|
|
DISPLAY "Buscando Informacion... Espere Por Favor" AT 19,14
|
|
|
|
START REPORT tarde30 TO archivo
|
|
DISPLAY "Impresion en Proceso... Espere Por Favor" AT 19,14
|
|
|
|
FOREACH busca INTO datos_tarde.*
|
|
SELECT a.departamento INTO datos_tarde.departamento
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = datos_tarde.num_emp
|
|
|
|
LET depto1 = datos_tarde.departamento
|
|
LET ch_depto1 = depto1 USING "&&&&"
|
|
LET ch_depto1 = ch_depto1[1],"000"
|
|
LET datos_tarde.depto = ch_depto1
|
|
|
|
LET fecha1 = NULL
|
|
LET cant_dia = 0
|
|
SELECT MAX(a.fecha) INTO fecha1 FROM adtb00032 a
|
|
WHERE a.num_emp = datos_tarde.num_emp AND a.cod_mov = 9 AND a.sec_mov = 99
|
|
and a.fecha <= datos_tarde.fecha
|
|
|
|
SELECT a.num_dia INTO cant_dia FROM adtb00032 a
|
|
WHERE a.num_emp = datos_tarde.num_emp AND a.cod_mov = 9 AND a.sec_mov = 99
|
|
and a.fecha = fecha1
|
|
|
|
IF cant_dia IS NULL THEN
|
|
LET cant_dia = 0
|
|
END IF
|
|
IF fecha1 IS NULL THEN
|
|
LET fecha1 = datos_tarde.fecha - 1
|
|
END IF
|
|
|
|
IF datos_tarde.fecha>=fecha1 AND datos_tarde.fecha<=(fecha1+cant_dia) THEN
|
|
LET fecha1 = datos_tarde.fecha + 10
|
|
ELSE
|
|
LET fecha1 = datos_tarde.fecha - 10
|
|
END IF
|
|
IF STATUS = NOTFOUND THEN
|
|
LET fecha1 = datos_tarde.fecha - 10
|
|
END IF
|
|
|
|
IF fecha1 < datos_tarde.fecha THEN
|
|
IF datos_tarde.hora_ent > "08:10" THEN
|
|
OUTPUT TO REPORT tarde30(datos_tarde.*)
|
|
END IF
|
|
END IF
|
|
|
|
END FOREACH
|
|
|
|
FINISH REPORT tarde30
|
|
RUN imprime
|
|
END FUNCTION
|
|
|
|
REPORT tarde30(x)
|
|
DEFINE x RECORD
|
|
departamento INTEGER,
|
|
num_emp SMALLINT,
|
|
nom_emp CHAR(14),
|
|
apell CHAR(14),
|
|
fecha DATE,
|
|
hora_ent LIKE adtb00023.hora_ent,
|
|
hora_sal LIKE adtb00023.hora_sal,
|
|
depto INTEGER
|
|
END RECORD,
|
|
mdepto INTEGER
|
|
|
|
DEFINE nombre1,apellidos11,apellidos1,nombre,apellidos CHAR(20)
|
|
DEFINE x_depto1 SMALLINT
|
|
DEFINE cc_dpto,cc_dpto1 CHAR(1)
|
|
DEFINE dias_2 SMALLINT
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 3
|
|
ORDER BY x.depto,x.departamento
|
|
|
|
FORMAT
|
|
BEFORE GROUP OF x.depto
|
|
|
|
LET l = 0
|
|
LET m = 0
|
|
LET mi = 0
|
|
LET j = 0
|
|
LET v = 0
|
|
LET idx = 0
|
|
|
|
PRINT letras.negrillas_on
|
|
PRINT COLUMN 19, "R A Y . O . V A C D O M I N I C A N A, S. A."
|
|
PRINT COLUMN 30, "Tardanzas de Los Empleados"
|
|
|
|
LET mdepto = x.depto + 100
|
|
|
|
SELECT UNIQUE nom1_emp,apell1_emp INTO nombre,apellidos
|
|
FROM adtb00003
|
|
WHERE departamento BETWEEN x.depto AND mdepto and nivel_emp = 1 AND
|
|
(status_t IS NULL OR status_t NOT IN ("D","T","E"))
|
|
|
|
LET cc_dpto = x.depto USING "&"
|
|
|
|
PRINT letras.negrillas_off
|
|
PRINT letras.comp_on,letras.doce
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "A : ",nombre clipped," ",apellidos
|
|
PRINT
|
|
PRINT COLUMN 1, "DE : ","GERENCIA DE PERSONAL"
|
|
PRINT
|
|
PRINT COLUMN 1, "ASUNTO : ","Tardanzas del personal"
|
|
PRINT
|
|
PRINT COLUMN 1, "FECHA : ",today using "dd/mm/yyyy"
|
|
#PRINT letras.doce
|
|
LET dias_1 = month(semana_del)
|
|
LET dias_2 = month(semana_al)
|
|
CALL meses1()
|
|
|
|
SKIP 2 LINES
|
|
PRINT
|
|
"Mas abajo detallo las personas que llegaron tarde en la semana del ",
|
|
day(semana_del) using "##"," de ",nombre_mes[dias_1]
|
|
|
|
PRINT "al ",day(semana_al) using "##", " de ",nombre_mes[dias_2] clipped,
|
|
" del ",year(semana_del) using "####",
|
|
" segun reporte de entrada que suministran los vigilantes."
|
|
SKIP 2 LINE
|
|
PRINT COLUMN 1, "LUNES",
|
|
COLUMN 31, "MARTES",
|
|
COLUMN 62, "MIERCOLES",
|
|
COLUMN 92, "JUEVES",
|
|
COLUMN 125, "VIERNES"
|
|
PRINT COLUMN 1,
|
|
"---------------------------------------------------------------------------",
|
|
"--------------------------------------------------------------------------"
|
|
LET idx = 0
|
|
ON EVERY ROW
|
|
LET idx = idx + 1
|
|
CASE
|
|
WHEN weekday(x.fecha) = 1
|
|
LET l = l + 1
|
|
LET salida[l].lunes = x.hora_ent clipped ," ",
|
|
x.nom_emp clipped," ",
|
|
x.apell clipped
|
|
EXIT CASE
|
|
WHEN weekday(x.fecha) = 2
|
|
LET m = m + 1
|
|
LET salida[m].martes = x.hora_ent clipped ," ",
|
|
x.nom_emp clipped," ",
|
|
x.apell clipped
|
|
EXIT CASE
|
|
WHEN weekday(x.fecha) = 3
|
|
LET mi = mi + 1
|
|
LET salida[mi].miercoles = x.hora_ent clipped ," ",
|
|
x.nom_emp clipped," ",
|
|
x.apell clipped
|
|
EXIT CASE
|
|
WHEN weekday(x.fecha) = 4
|
|
LET j = j + 1
|
|
LET salida[j].jueves = x.hora_ent clipped ," ",
|
|
x.nom_emp clipped," ",
|
|
x.apell clipped
|
|
EXIT CASE
|
|
WHEN weekday(x.fecha) = 5
|
|
LET v = v + 1
|
|
LET salida[v].viernes = x.hora_ent clipped ," ",
|
|
x.nom_emp clipped," ",
|
|
x.apell clipped
|
|
EXIT CASE
|
|
END CASE
|
|
|
|
AFTER GROUP OF x.depto
|
|
FOR l = 1 TO idx
|
|
|
|
PRINT COLUMN 1, salida[l].lunes CLIPPED,
|
|
COLUMN 31, salida[l].martes CLIPPED,
|
|
COLUMN 62, salida[l].miercoles CLIPPED,
|
|
COLUMN 92, salida[l].jueves CLIPPED,
|
|
COLUMN 125, salida[l].viernes CLIPPED
|
|
END FOR
|
|
FOR l = 1 TO idx
|
|
LET salida[l].lunes = NULL
|
|
LET salida[l].martes = NULL
|
|
LET salida[l].miercoles = NULL
|
|
LET salida[l].jueves = NULL
|
|
LET salida[l].viernes = NULL
|
|
END FOR
|
|
SKIP TO TOP OF PAGE
|
|
PAGE TRAILER
|
|
SELECT nom1_emp,apell1_emp,apell2_emp INTO nombre1,apellidos1,apellidos11
|
|
FROM adtb00003
|
|
WHERE departamento = 3000 and nivel_emp = 1 and
|
|
(status_t is null or status_t NOT IN ("D","T","E"))
|
|
|
|
PRINT COLUMN 40, "Atentamente, "
|
|
SKIP 2 LINES
|
|
PRINT COLUMN 38, nombre1 clipped," ",apellidos1 clipped," ",apellidos11
|
|
PRINT COLUMN 38, "GERENTE DE PERSONAL"
|
|
SKIP 14 LINES
|
|
END REPORT
|
|
|
|
FUNCTION meses1()
|
|
LET nombre_mes[1] = "Enero"
|
|
LET nombre_mes[2] = "Febrero"
|
|
LET nombre_mes[3] = "Marzo"
|
|
LET nombre_mes[4] = "Abril"
|
|
LET nombre_mes[5] = "Mayo"
|
|
LET nombre_mes[6] = "Junio"
|
|
LET nombre_mes[7] = "Julio"
|
|
LET nombre_mes[8] = "Agosto"
|
|
LET nombre_mes[9] = "Septiembre"
|
|
LET nombre_mes[10] = "Octubre"
|
|
LET nombre_mes[11] = "Noviembre"
|
|
LET nombre_mes[12] = "Diciembre"
|
|
END FUNCTION
|