Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,287 @@
|
||||
{
|
||||
-------------------------------------------------------------------------
|
||||
PROGRAMA : ADPRRP016
|
||||
OBJETIVO : Tardanzas de los Empleados
|
||||
PROGRAMADOR : Juan F. Soto
|
||||
FECHA : Septiembre 29, 1994.
|
||||
-------------------------------------------------------------------------
|
||||
}
|
||||
GLOBALS
|
||||
"adprgb000.4gl"
|
||||
DEFINE permiso CHAR(1)
|
||||
DEFINE fecha1 DATE
|
||||
DEFINE cant_dia INTEGER
|
||||
DEFINE datos_tarde RECORD
|
||||
num_emp SMALLINT,
|
||||
nom_emp CHAR(14),
|
||||
apell CHAR(14),
|
||||
fecha DATE,
|
||||
hora_ent LIKE adtb00023.hora_ent,
|
||||
hora_sal LIKE adtb00023.hora_sal
|
||||
END RECORD,
|
||||
hora_control LIKE adtb00023.hora_ent,
|
||||
l,m,mi,j,v SMALLINT,
|
||||
hora_e LIKE adtb00023.hora_ent
|
||||
|
||||
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 adprrp016()
|
||||
OPTIONS
|
||||
ERROR LINE 24,
|
||||
FORM LINE 8
|
||||
|
||||
CALL pantalla()
|
||||
DISPLAY "adprrp016" AT 4,3 ATTRIBUTE(RED)
|
||||
DISPLAY "Tardanzas de Personal" AT 6,30 ATTRIBUTE(BLACK)
|
||||
OPEN FORM adfmrp016 FROM "adfmrp016"
|
||||
DISPLAY FORM adfmrp016
|
||||
|
||||
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
|
||||
|
||||
## Busca Los Empleados con su horario de llegada
|
||||
|
||||
DECLARE busca CURSOR FOR
|
||||
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 #a.nivel_emp != 1 and
|
||||
b.fecha between semana_del and semana_al and
|
||||
b.hora_ent BETWEEN "08:10" AND "13:00" AND b.status_t IS NULL
|
||||
GROUP BY 1,2,3,4 ORDER BY b.fecha
|
||||
|
||||
DISPLAY "Impresion en Proceso... Espere Por Favor" AT 19,14
|
||||
START REPORT tarde TO archivo
|
||||
|
||||
LET l = 0
|
||||
LET m = 0
|
||||
LET mi = 0
|
||||
LET j = 0
|
||||
LET v = 0
|
||||
LET idx = 0
|
||||
|
||||
FOREACH busca INTO datos_tarde.*
|
||||
|
||||
LET fecha1 = NULL
|
||||
LET cant_dia = 0
|
||||
LET permiso = "N"
|
||||
|
||||
### Busca si el empleado tuvo permiso para tardanza
|
||||
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
|
||||
|
||||
SELECT min(b.hora_ent)
|
||||
INTO hora_e
|
||||
FROM adtb00023 b
|
||||
WHERE b.fecha = datos_tarde.fecha and
|
||||
b.hora_ent < "08:10" AND b.status_t IS NULL and
|
||||
b.num_emp = datos_tarde.num_emp
|
||||
|
||||
IF hora_e IS NULL THEN
|
||||
IF fecha1 < datos_tarde.fecha THEN
|
||||
IF datos_tarde.hora_ent >= "08:10" THEN
|
||||
LET idx = idx + 1
|
||||
CASE
|
||||
WHEN weekday(datos_tarde.fecha) = 1
|
||||
LET l = l + 1
|
||||
LET salida[l].lunes = datos_tarde.hora_ent CLIPPED," ",
|
||||
datos_tarde.nom_emp clipped," ",
|
||||
datos_tarde.apell clipped
|
||||
EXIT CASE
|
||||
WHEN weekday(datos_tarde.fecha) = 2
|
||||
LET m = m + 1
|
||||
LET salida[m].martes = datos_tarde.hora_ent CLIPPED," ",
|
||||
datos_tarde.nom_emp clipped," ",
|
||||
datos_tarde.apell clipped
|
||||
EXIT CASE
|
||||
WHEN weekday(datos_tarde.fecha) = 3
|
||||
LET mi = mi + 1
|
||||
LET salida[mi].miercoles = datos_tarde.hora_ent CLIPPED," ",
|
||||
datos_tarde.nom_emp clipped," ",
|
||||
datos_tarde.apell clipped
|
||||
EXIT CASE
|
||||
WHEN weekday(datos_tarde.fecha) = 4
|
||||
LET j = j + 1
|
||||
LET salida[j].jueves = datos_tarde.hora_ent CLIPPED," ",
|
||||
datos_tarde.nom_emp clipped," ",
|
||||
datos_tarde.apell clipped
|
||||
EXIT CASE
|
||||
WHEN weekday(datos_tarde.fecha) = 5
|
||||
LET v = v + 1
|
||||
LET salida[v].viernes = datos_tarde.hora_ent CLIPPED," ",
|
||||
datos_tarde.nom_emp clipped," ",
|
||||
datos_tarde.apell clipped
|
||||
EXIT CASE
|
||||
END CASE
|
||||
LET permiso = "S"
|
||||
|
||||
|
||||
OUTPUT TO REPORT tarde()
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
END FOREACH
|
||||
|
||||
FINISH REPORT tarde
|
||||
RUN imprime
|
||||
END FUNCTION
|
||||
|
||||
REPORT tarde()
|
||||
|
||||
DEFINE nombre1,apellidos11,apellidos1,nombre,apellidos CHAR(20)
|
||||
DEFINE dias_2 SMALLINT
|
||||
|
||||
OUTPUT
|
||||
LEFT MARGIN 3
|
||||
|
||||
FORMAT
|
||||
PAGE HEADER
|
||||
|
||||
PRINT letras.comp_on,letras.doce
|
||||
PRINT letras.negrillas_on,
|
||||
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"
|
||||
|
||||
#### Busca nombre del Gerente General
|
||||
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"))
|
||||
|
||||
{
|
||||
SELECT nom1_emp,apell1_emp INTO nombre,apellidos
|
||||
FROM adtb00003
|
||||
WHERE departamento = 1000 and nivel_emp = 1
|
||||
}
|
||||
|
||||
PRINT letras.negrillas_off
|
||||
SKIP 1 LINE
|
||||
#PRINT COLUMN 1, "A : ",nombre1 clipped," ",apellidos1
|
||||
PRINT COLUMN 1, "A : ","RENE MONTES"
|
||||
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.comp_on,letras.doce
|
||||
LET dias_1 = month(semana_del)
|
||||
LET dias_2 = month(semana_al)
|
||||
CALL meses()
|
||||
|
||||
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,
|
||||
"---------------------------------------------------------------------------",
|
||||
"--------------------------------------------------------------------------"
|
||||
ON LAST ROW
|
||||
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
|
||||
PAGE TRAILER
|
||||
### Busca nombre del Gerente de Personal
|
||||
|
||||
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
|
||||
PRINT letras.comp_off
|
||||
END REPORT
|
||||
|
||||
FUNCTION meses()
|
||||
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
|
||||
Reference in New Issue
Block a user