Files
MBS/PROYECTO/nodir/noprrp003.4gl
T

147 lines
4.3 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP003
OBJETIVO : Reporte de Herramientas por Empleado (adtb00057)
DESARROLLADOR : Ing. Elvis Garcia
-------------------------------------------------------------------------------
Version .4rp: el reporte NO formatea columnas. Solo hace PRINTX; el diseno
visual vive en noprrp003.4rp (Report Studio).
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
DEFINE inv DYNAMIC ARRAY OF RECORD
num_emp INT,
nombre_emp STRING,
departamento SMALLINT,
nom_dpto STRING,
fecha DATE,
codigo STRING,
descripcion STRING,
documento STRING,
cantidad DECIMAL(18,5)
END RECORD
DEFINE p_num_emp_desde, p_num_emp_hasta INT
DEFINE p_departamento SMALLINT
DEFINE p_nom_desde, p_nom_hasta STRING
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL noprrp003()
END MAIN
FUNCTION noprrp003()
DEFINE handler om.SaxDocumentHandler
DEFINE r_filename STRING
DEFINE r_output STRING
DEFINE preview INT
DEFINE idx INT
DEFINE query STRING
DEFINE criterio STRING
OPEN FORM f FROM "nofmrp003"
DISPLAY FORM f
CALL carga_deptos()
CONSTRUCT criterio ON a.num_emp, e.departamento
FROM num_emp, departamento
IF int_flag THEN
LET int_flag = FALSE
RETURN
END IF
LET query =
"SELECT a.num_emp, ",
" RTRIM(e.nom1_emp)+' '+RTRIM(ISNULL(e.apell1_emp,'')), ",
" e.departamento, ",
" RTRIM(ISNULL(d.nom_dpto,'')), ",
" a.fecha, a.codigo, ",
" RTRIM(ISNULL(b.descrip_esp,'')), ",
" a.documento, a.cantidad ",
" FROM adtb00057 a ",
" LEFT JOIN adtb00003 e ON e.num_emp = a.num_emp ",
" LEFT JOIN adtb00001 d ON d.departamento = e.departamento ",
" LEFT JOIN irtb00002 b ",
" ON CAST(b.cod_n AS VARCHAR(10))+'-'+ ",
" CAST(b.cod_grupo AS VARCHAR(10))+'-'+ ",
" CAST(b.cod_tipo AS VARCHAR(10))+'-'+ ",
" CAST(b.cod_sec AS VARCHAR(10)) = a.codigo ",
" WHERE ", criterio CLIPPED, " AND e.status_t is null ",
" ORDER BY e.departamento, a.num_emp, a.fecha "
PREPARE p_rep FROM query
DECLARE cur_rep CURSOR FOR p_rep
CALL inv.clear()
LET idx = 1
FOREACH cur_rep INTO inv[idx].*
LET idx = idx + 1
END FOREACH
IF idx > 1 THEN
LET r_filename = "noprrp003.4rp"
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
CALL selectoutput2() RETURNING r_output
CALL fgl_report_selectDevice(r_output)
CALL fgl_report_selectPreview(preview)
LET handler = fgl_report_commitCurrentSettings()
END IF
START REPORT rep_herr TO XML HANDLER handler
FOR idx = 1 TO inv.getLength()
OUTPUT TO REPORT rep_herr(inv[idx].*)
END FOR
FINISH REPORT rep_herr
ELSE
CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS","INFO")
END IF
END FUNCTION
FUNCTION carga_deptos()
DEFINE cb ui.ComboBox
DEFINE cod SMALLINT
DEFINE nom STRING
LET cb = ui.ComboBox.forName("departamento")
CALL cb.clear()
CALL cb.addItem(NULL, "TODOS")
DECLARE cur_dp CURSOR FOR
SELECT departamento, nom_dpto FROM adtb00001
WHERE status_t IS NULL ORDER BY nom_dpto
FOREACH cur_dp INTO cod, nom
CALL cb.addItem(cod, nom)
END FOREACH
END FUNCTION
REPORT rep_herr(x)
DEFINE x RECORD
num_emp INT,
nombre_emp STRING,
departamento SMALLINT,
nom_dpto STRING,
fecha DATE,
codigo STRING,
descripcion STRING,
documento STRING,
cantidad DECIMAL(18,5)
END RECORD
ORDER EXTERNAL BY x.num_emp
FORMAT
BEFORE GROUP OF x.num_emp
PRINTX x.num_emp, x.nombre_emp, x.departamento, x.nom_dpto
ON EVERY ROW
PRINTX x.fecha, x.codigo, x.descripcion, x.documento, x.cantidad
END REPORT