Files
MBS/PROYECTO/PRDIR/prprrp002.4gl
T

436 lines
12 KiB
Plaintext

{
===========================================================================
PROGRAMA : PRPRRP002
SISTEMA : PRODUCCION
OBJETIVO : VALIDACION REGISTRO HORAS PERSONAL NO PRODUCTIVO.
AUTOR : Tadeo. A. Ferreras F.
FECHA : SEPT. 15, 1994
===========================================================================
}
GLOBALS
"prprgb000.4gl"
DEFINE t_hn_dir,t_hn_ind,t_he_dir,t_he_ind DECIMAL(10,2)
DEFINE tt_hn_dir,tt_hn_ind,tt_he_dir,tt_he_ind DECIMAL(10,2)
DEFINE repor_2 RECORD
num_emp SMALLINT,
departamento SMALLINT,
nom1_emp CHAR(10),
nom2_emp CHAR(14),
apell1_emp CHAR(14),
apell2_emp CHAR(14),
nom_puesto CHAR(28),
cod_puesto SMALLINT
END RECORD
FUNCTION prprrp002()
DEFINE opcion CHAR(1)
OPTIONS
PROMPT LINE 23,
FORM LINE 8,
ERROR LINE 23
OPEN FORM prfmrp002 FROM "prfmrp001"
DISPLAY FORM prfmrp002
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
INPUT BY NAME prtb02.num_semana
AFTER FIELD num_semana
IF prtb02.num_semana IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_semana
END IF
SELECT UNIQUE a.semana_del,a.semana_al INTO prtb02.semana_del,prtb02.semana_al
FROM prtb00002 a
WHERE a.num_semana = prtb02.num_semana AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD num_semana
END IF
DISPLAY BY NAME prtb02.semana_del,prtb02.semana_al
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
PROMPT "Es el rango de fecha deseado [S/N]...? " FOR CHAR opcion
LET opcion = UPSHIFT(opcion)
IF opcion = "S" THEN
START REPORT reporte_2 TO "C:\\archivo"
DECLARE busca CURSOR FOR
SELECT UNIQUE a.num_emp,a.departamento,b.nom1_emp,b.nom2_emp,b.apell1_emp,
b.apell2_emp,c.nom_puesto,b.cod_puesto
FROM prtb00003 a,adtb00003 b,adtb00004 c
WHERE (a.num_semana = prtb02.num_semana and
a.departamento between 6000 and 6500 and
a.num_emp = b.num_emp and
b.nivel_emp != 2 and
a.status_t is null) and
b.cod_puesto = c.cod_puesto
DISPLAY "Buscando Informacion... Espere Por Favor" AT 17,14
DISPLAY "Reporte Generandose ... Espere Por Favor" AT 17,14
FOREACH busca INTO repor_2.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT reporte_2(repor_2.*)
END FOREACH
DECLARE busca1 CURSOR FOR
SELECT UNIQUE a.num_emp,'6199',b.nom1_emp,b.nom2_emp,b.apell1_emp,
b.apell2_emp,c.nom_puesto,b.cod_puesto
FROM prtb00003 a,adtb00003 b,adtb00004 c
WHERE (a.num_semana = prtb02.num_semana and
a.departamento between 6000 and 6500 and
a.num_emp = b.num_emp and
b.nivel_emp = 2 and
a.status_t is null) and
b.cod_puesto = c.cod_puesto
FOREACH busca1 INTO repor_2.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT reporte_2(repor_2.*)
END FOREACH
FINISH REPORT reporte_2
END IF
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT reporte_2(x)
DEFINE x RECORD
num_emp SMALLINT,
departamento SMALLINT,
nom1_emp CHAR(10),
nom2_emp CHAR(14),
apell1_emp CHAR(14),
apell2_emp CHAR(14),
nom_puesto CHAR(28),
cod_puesto SMALLINT
END RECORD,
id SMALLINT
OUTPUT
LEFT MARGIN 0
ORDER BY x.departamento,x.cod_puesto
format
page header
let comp_on = ascii 15
let comp_off = ascii 18
let doce = ascii 27, ascii 77
let doble_on = ascii 14
let doble_off = ascii 20
let hora = time
PRINT comp_on
PRINT COLUMN 1, "prprrp002",
COLUMN 49, " R A Y .O. V A C D O M I N I C A N A, S. A.",
COLUMN 141, "Pag. ",pageno USING "###"
PRINT COLUMN 49, " SISTEMA DE PRODUCCION ",
COLUMN 141, today using "dd/mm/yy"
PRINT COLUMN 49, "VALIDACION HORAS DIARIAS ADM Y PERSONAL NO DE PRODUCCION",
COLUMN 144, hora
PRINT COLUMN 1, "NUMERO SEMANA: ",prtb02.num_semana USING "&&&&"," ",
": DEL ",prtb02.semana_del USING "dd/mm/yy",
" AL ",prtb02.semana_al USING "dd/mm/yy"
PRINT "====================================================================",
"====================================================================",
"============"
PRINT COLUMN 64,
"| H O R A S I N D I R E C T A S ",
" |"
PRINT COLUMN 64, "| NORMALES |",
COLUMN 120, " EXTRAS |"
PRINT COLUMN 64,"|",
COLUMN 67, "S",
5 spaces, "D",
5 spaces, "L",
5 spaces, "M",
5 spaces, "M",
5 spaces, "J",
5 spaces, "V |",
2 spaces, "S",
5 spaces, "D",
5 spaces, "L",
5 spaces, "M",
5 spaces, "M",
5 spaces, "J",
5 spaces, "V |"
PRINT "====================================================================",
"====================================================================",
"============"
BEFORE GROUP OF x.departamento
IF x.departamento != 6199 THEN
SELECT a.nom_dpto INTO nom_dpto FROM adtb00001 a
WHERE a.departamento = x.departamento AND a.status_t IS NULL
END IF
IF x.departamento = 6199 THEN
LET nom_dpto = "SUPERVISORES"
END IF
LET t_hn_ind = 0
LET t_he_ind = 0
LET idx = 0
BEFORE GROUP OF x.cod_puesto
IF x.departamento >= 6000 and
x.departamento <= 6199 THEN
IF x.cod_puesto = 3 OR x.cod_puesto = 27 OR x.cod_puesto = 13 OR
x.cod_puesto = 14 THEN
LET idx = idx + 1
IF idx = 1 THEN
PRINT doble_on,nom_dpto clipped,doble_off
SKIP 1 LINE
END IF
END IF
END IF
IF x.departamento >= 6199 THEN
LET idx = idx + 1
IF idx = 1 THEN
PRINT doble_on,nom_dpto clipped,doble_off
SKIP 1 LINE
END IF
END IF
ON EVERY ROW
IF x.departamento >= 6000 AND
x.departamento < 6199 THEN
PRINT COLUMN 64, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|"
IF x.cod_puesto = 3 OR x.cod_puesto = 27 OR x.cod_puesto = 13 OR
x.cod_puesto = 14 THEN
PRINT COLUMN 1,x.num_emp using "&&&"," ",x.nom1_emp clipped,
" ",x.apell1_emp CLIPPED,
COLUMN 35, x.nom_puesto CLIPPED,
COLUMN 64, "|";
LET t_hn_ind = 0
LET t_he_ind = 0
LET prtb03.fecha = prtb02.semana_del
LET l = 65
LET prtb03.fecha = prtb02.semana_del
FOR j = 1 TO 7
LET prtb03.hn_ind = 0
IF x.departamento != 6199 THEN
SELECT a.hn_ind INTO prtb03.hn_ind FROM prtb00003 a
WHERE a.departamento = x.departamento AND a.num_emp = x.num_emp AND
a.fecha = prtb03.fecha AND a.status_t IS NULL
END IF
IF x.departamento = 6199 THEN
SELECT a.hn_ind INTO prtb03.hn_ind FROM prtb00003 a
WHERE a.num_emp = x.num_emp AND
a.fecha = prtb03.fecha AND a.status_t IS NULL
END IF
IF prtb03.hn_ind IS NULL THEN
LET prtb03.hn_ind = 0
END IF
PRINT COLUMN l, prtb03.hn_ind USING "##.##","|";
LET l = l + 6
LET t_hn_ind = t_hn_ind + prtb03.hn_ind
LET tt_hn_ind = tt_hn_ind + prtb03.hn_ind
LET prtb03.fecha = prtb03.fecha + 1
END FOR
LET prtb03.fecha = prtb02.semana_del
FOR j = 1 TO 7
LET prtb03.he_ind = 0
IF x.departamento != 6199 THEN
SELECT a.he_ind INTO prtb03.he_ind FROM prtb00003 a
WHERE a.departamento = x.departamento AND a.num_emp = x.num_emp AND
a.fecha = prtb03.fecha AND a.status_t IS NULL
END IF
IF x.departamento = 6199 THEN
SELECT a.he_ind INTO prtb03.he_ind FROM prtb00003 a
WHERE a.num_emp = x.num_emp AND
a.fecha = prtb03.fecha AND a.status_t IS NULL
END IF
IF prtb03.he_ind IS NULL THEN
LET prtb03.he_ind = 0
END IF
PRINT COLUMN l, prtb03.he_ind USING "##.##","|";
LET l = l + 6
LET t_he_ind = t_he_ind + prtb03.he_ind
LET tt_he_ind = tt_he_ind + prtb03.he_ind
LET prtb03.fecha = prtb03.fecha + 1
END FOR
PRINT COLUMN l," "
PRINT "--------------------------------------------------------------------",
"--------------------------------------------------------------------",
"------------"
END IF
END IF
IF x.departamento >= 6199 THEN
PRINT COLUMN 64, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|",
5 spaces, "|"
PRINT COLUMN 1,x.num_emp using "&&&&"," ",x.nom1_emp clipped,", ",x.apell1_emp,
COLUMN 35, x.nom_puesto CLIPPED,
COLUMN 64, "|";
LET t_hn_ind = 0
LET t_he_ind = 0
LET prtb03.fecha = prtb02.semana_del
LET l = 65
LET prtb03.fecha = prtb02.semana_del
FOR j = 1 TO 7
LET prtb03.hn_ind = 0
IF x.departamento != 6199 THEN
SELECT a.hn_ind INTO prtb03.hn_ind FROM prtb00003 a
WHERE a.departamento = x.departamento AND a.num_emp = x.num_emp AND
a.fecha = prtb03.fecha AND a.status_t IS NULL
END IF
IF x.departamento = 6199 THEN
SELECT a.hn_ind INTO prtb03.hn_ind FROM prtb00003 a
WHERE a.num_emp = x.num_emp AND
a.fecha = prtb03.fecha AND a.status_t IS NULL
END IF
IF prtb03.hn_ind IS NULL THEN
LET prtb03.hn_ind = 0
END IF
PRINT COLUMN l, prtb03.hn_ind USING "##.##","|";
LET l = l + 6
LET t_hn_ind = t_hn_ind + prtb03.hn_ind
LET tt_hn_ind = tt_hn_ind + prtb03.hn_ind
LET prtb03.fecha = prtb03.fecha + 1
END FOR
LET prtb03.fecha = prtb02.semana_del
FOR j = 1 TO 7
LET prtb03.he_ind = 0
IF x.departamento != 6199 THEN
SELECT a.he_ind INTO prtb03.he_ind FROM prtb00003 a
WHERE a.departamento = x.departamento AND a.num_emp = x.num_emp AND
a.fecha = prtb03.fecha AND a.status_t IS NULL
END IF
IF x.departamento = 6199 THEN
SELECT a.he_ind INTO prtb03.he_ind FROM prtb00003 a
WHERE a.num_emp = x.num_emp AND
a.fecha = prtb03.fecha AND a.status_t IS NULL
END IF
IF prtb03.he_ind IS NULL THEN
LET prtb03.he_ind = 0
END IF
PRINT COLUMN l, prtb03.he_ind USING "##.##","|";
LET l = l + 6
LET t_he_ind = t_he_ind + prtb03.he_ind
LET tt_he_ind = tt_he_ind + prtb03.he_ind
LET prtb03.fecha = prtb03.fecha + 1
END FOR
PRINT COLUMN l," "
PRINT "--------------------------------------------------------------------",
"--------------------------------------------------------------------",
"------------"
END IF
AFTER GROUP OF x.departamento
IF x.departamento >= 6000 AND
x.departamento <= 6199 THEN
IF x.cod_puesto = 3 OR x.cod_puesto = 27 OR x.cod_puesto = 13 OR
x.cod_puesto = 14 THEN
PRINT "-----------------------------------------------------------------",
"-----------------------------------------------------------------",
"------------------"
END IF
END IF
IF x.departamento >= 6199 THEN
PRINT "-----------------------------------------------------------------",
"-----------------------------------------------------------------",
"------------------"
END IF
ON LAST ROW
SKIP 1 LINE
PRINT "Total Registros Impresos===> ",COUNT(*) USING "####"
print comp_off
END REPORT