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

419 lines
11 KiB
Plaintext

{
===========================================================================
PROGRAMA : PRPRRP001
SISTEMA : PRODUCCION
OBJETIVO : LISTAR FORMULARIO PARA REGISTRAR HORAS PERSONAL NO
PRODUCTIVO.
AUTOR : Tadeo. A. Ferreras F.
FECHA : SEPT. 15, 1994
===========================================================================
}
GLOBALS
"prprgb000.4gl"
DEFINE repor_1 RECORD
num_emp SMALLINT,
departamento SMALLINT,
nom1_emp CHAR(14),
nom2_emp CHAR(14),
apell1_emp CHAR(14),
apell2_emp CHAR(14),
nom_dpto CHAR(30),
nom_puesto CHAR(28),
cod_puesto SMALLINT
END RECORD
MAIN
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename STRING, -- filename of Report Design Document including .4rp extension
r_output STRING, -- output format option
preview INTEGER -- TRUE/FALSE, to set preview option
DEFER INTERRUPT
-- prompt user for report settings to replace defaults
CALL selectOutput() RETURNING r_filename, r_output, preview
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
ELSE
EXIT PROGRAM
END IF
--run the report
IF handler IS NOT NULL THEN -- report engine was configured ok
CALL prprrp001()
ELSE
EXIT PROGRAM
END IF
END MAIN
FUNCTION prprrp001()
DEFINE opcion CHAR(1)
OPTIONS
PROMPT LINE 23,
FORM LINE 8,
ERROR LINE 23
OPEN FORM prfmrp001 FROM "prfmrp001"
DISPLAY FORM prfmrp001
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
CONNECT TO "smarmotech" USER "jsoto" USING "lmmjvsd2009"
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
SELECT UNIQUE a.num_semana FROM prtb00003 a
WHERE a.num_semana = prtb02.num_semana AND a.status_t IS NULL
IF STATUS != NOTFOUND THEN
PROMPT
"LISTADO EXISTE, SI DESEAS IMPRIMIRLO BORRARA INFORMACION DE LA SEMANA [S/N]"
FOR CHAR opcion1
LET opcion1 = UPSHIFT(opcion1)
IF opcion1 != "S" THEN
RETURN
END IF
ELSE
LET opcion1 = "S"
END IF
IF opcion1 = "S" THEN
DECLARE busca CURSOR FOR
SELECT a.num_emp,a.departamento,a.nom1_emp,a.nom2_emp,a.apell1_emp,
a.apell2_emp,b.nom_dpto,c.nom_puesto,a.cod_puesto
FROM adtb00003 a,adtb00001 b,adtb00004 c
WHERE a.departamento = b.departamento and
a.nivel_emp != 2 and
a.cod_puesto = c.cod_puesto and
a.status_t is null and a.departamento between 6000 and 6500
ORDER BY 2,9,1
DISPLAY "Buscando Informacion... Espere Por Favor" AT 17,14
START REPORT reporte_1 TO "C:\\archivo"
DISPLAY "Reporte Generandose ... Espere Por Favor" AT 17,14
FOREACH busca INTO repor_1.*
OUTPUT TO REPORT reporte_1(repor_1.*)
END FOREACH
DECLARE busca1 CURSOR FOR
SELECT a.num_emp,'6199',a.nom1_emp,a.nom2_emp,a.apell1_emp,
a.apell2_emp,b.nom_dpto,c.nom_puesto,a.cod_puesto
FROM adtb00003 a,adtb00001 b,adtb00004 c
WHERE a.departamento = b.departamento and
a.nivel_emp = 2 and
a.cod_puesto = c.cod_puesto and
a.status_t is null and a.departamento between 6000 and 6500
ORDER BY 2,9,1
FOREACH busca1 INTO repor_1.*
OUTPUT TO REPORT reporte_1(repor_1.*)
END FOREACH
FINISH REPORT reporte_1
END IF
END IF
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT reporte_1(x)
DEFINE x RECORD
num_emp SMALLINT,
departamento SMALLINT,
nom1_emp CHAR(14),
nom2_emp CHAR(14),
apell1_emp CHAR(14),
apell2_emp CHAR(14),
nom_dpto CHAR(30),
nom_puesto CHAR(28),
cod_puesto SMALLINT
END RECORD
OUTPUT
LEFT MARGIN 0
ORDER BY x.departamento,x.cod_puesto,x.num_emp
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, "prprrp001",
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, "REGISTRO HORAS DIARIAS Y PERSONAL NO DE PRODUCCION",
COLUMN 144, hora
skip 1 line
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
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,x.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,x.nom_dpto clipped,doble_off
SKIP 1 LINE
END IF
{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, "|"}
END IF
ON EVERY ROW
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 prtb03.fecha = prtb02.semana_del
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 CLIPPED,
COLUMN 35, x.nom_puesto CLIPPED,
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 "--------------------------------------------------------------------",
"--------------------------------------------------------------------",
"-----------"
END IF
END IF
IF x.departamento >= 6199 THEN
LET prtb03.fecha = prtb02.semana_del
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, "|",
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 "--------------------------------------------------------------------",
"--------------------------------------------------------------------",
"-----------"
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
FUNCTION selectOutput()
DEFINE
r_output STRING, -- output format option
r_action STRING, -- used to set preview option
r_filename STRING, -- filename of Report Design document (the .4rp filename)
preview INTEGER -- preview option TRUE/FALSE, to display report in Report Viewer
-- display form allowing user to select the .4rp filename and output options
CLOSE WINDOW SCREEN
OPTIONS INPUT WRAP
OPEN WINDOW f_configuration WITH FORM "Configuration"
LET INT_FLAG=FALSE
LET preview = FALSE
INPUT BY NAME r_filename,r_output,r_action
ON ACTION CANCEL
EXIT PROGRAM
ON ACTION CLOSE
EXIT PROGRAM
END INPUT
CLOSE WINDOW f_configuration
CALL ui.interface.refresh()
-- set preview variable to match output option r_action
IF r_action IS NOT NULL THEN
IF r_action == "preview" THEN
LET preview = TRUE
END IF
END IF
--return report name (filename of Report Design Document) and output option variables to be used to configure the report engine
RETURN r_filename||".4rp", r_output, preview
END FUNCTION