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

147 lines
5.5 KiB
Plaintext

SCHEMA smarmotech
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
DEFINE idx INT
FUNCTION imprime (datos_c, arr_costos)
DEFINE datos_c RECORD
num_doc INTEGER,
fecha DATE,
departamento SMALLINT,
cod_mov SMALLINT
END RECORD
DEFINE arr_costos DYNAMIC ARRAY OF RECORD
tipo LIKE cttb00003.cod_mq,
codigo INT,
emp_no LIKE cttb00003.emp_no,
h_directa LIKE cttb00003.h_directa,
h_indirecta LIKE cttb00003.h_indirecta,
e_directa LIKE cttb00003.e_directa,
e_indirecta LIKE cttb00003.e_indirecta,
cod_prod LIKE cttb00011.cod_prod,
lado2,lado1,lado3 DEC(12,5),
cantidad LIKE cttb00003.cantidad,
medida1 DEC(18,5),
codigo_bloque LIKE cttb00003.codigo_bloque,
turno SMALLINT,
depto_receptor SMALLINT,
ref INT
END RECORD
DEFINE nombre, descripcion, movimiento, departamento, turno, maquina, depto_receptor STRING
SELECT'(' + CAST(a.cod_mov AS VARCHAR) + ') ' + a.descrip_mov INTO movimiento
FROM cttb00005 a WHERE
a.cod_mov = datos_c.cod_mov AND a.status_t IS NULL
SELECT'('+ CAST(a.departamento AS VARCHAR)+') ' + a.nom_dpto INTO departamento
FROM adtb00001 a WHERE
a.departamento = datos_c.departamento AND a.status_t IS NULL
IF arr_costos.getLength() > 0 THEN
LET r_filename = 'prprmt003.4rp'
LET r_output = 'SVG' -- SVG = visor nativo de GDC (PDF abria en navegador externo y fallaba "Failed to load PDF")
LET preview = 1 -- mostrar previsualizacion
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
CALL fgl_winmessage("Reporte",
"No se pudo cargar el diseno "||r_filename||". Verifique que exista en el FGLRESOURCEPATH (carpeta bin).",
"exclamation")
RETURN
END IF
--run the report
IF handler IS NOT NULL THEN -- report engine was configured ok
START REPORT p_diaria TO XML HANDLER HANDLER
FOR idx = 1 TO arr_costos.getLength()
IF arr_costos[idx].cod_prod IS NOT NULL THEN
SELECT RTRIM(a.nom1_emp) +', '+RTRIM(a.apell1_emp) INTO nombre FROM adtb00003 a
WHERE a.num_emp = arr_costos[idx].emp_no
SELECT unique '('+RTRIM(a.cod_prod)+') '+ rtrim(a.descripcion)+', '+rtrim(a.unidad_med)
INTO descripcion FROM cttb00001 a
WHERE a.cod_prod = arr_costos[idx].cod_prod AND
a.status_t is null
SELECT a.descripcion INTO turno FROM cttb00018 a
WHERE a.turno = arr_costos[idx].turno AND a.status_t IS NULL
SELECT RTRIM(a.nombre)+'('+ISNULL(RTRIM(a.codigo_externo),' ')+')' INTO maquina
FROM irtb00009 a
WHERE a.status_t IS NULL AND a.departamento = datos_c.departamento
AND a.codigo = arr_costos[idx].codigo
SELECT CONCAT('(',a.departamento,')',a.nom_dpto) INTO depto_receptor FROM adtb00001 a
WHERE a.status_t IS NULL AND a.departamento = arr_costos[idx].depto_receptor
OUTPUT TO REPORT p_diaria(datos_c.*, arr_costos[idx].*, nombre,
descripcion, movimiento, departamento, turno, maquina, depto_receptor)
END IF
END FOR
FINISH REPORT p_diaria
END IF
END IF
END FUNCTION
REPORT p_diaria(datos_c, arr_costos, nombre, descripcion, movimiento, departamento, descrip_turno, descrip_maquina, depto_receptor)
DEFINE datos_c RECORD
num_doc INTEGER,
fecha DATE,
departamento SMALLINT,
cod_mov SMALLINT
END RECORD
DEFINE arr_costos RECORD
tipo LIKE cttb00003.cod_mq,
codigo INT,
emp_no LIKE cttb00003.emp_no,
h_directa LIKE cttb00003.h_directa,
h_indirecta LIKE cttb00003.h_indirecta,
e_directa LIKE cttb00003.e_directa,
e_indirecta LIKE cttb00003.e_indirecta,
cod_prod LIKE cttb00011.cod_prod,
lado2,lado1,lado3 DEC(12,5),
cantidad LIKE cttb00003.cantidad,
medida1 DEC(12,5),
codigo_bloque LIKE cttb00003.codigo_bloque,
turno SMALLINT,
depto_receptor SMALLINT,
ref INT
END RECORD
DEFINE nombre, descripcion, movimiento, departamento, descrip_turno,
descrip_maquina, depto_receptor VARCHAR(100)
FORMAT
ON EVERY ROW
PRINTX datos_c.num_doc, datos_c.fecha, departamento, movimiento, nombre, descripcion,
arr_costos.*, descrip_turno, descrip_maquina, depto_receptor
END REPORT