{ ------------------------------------------------------------------------------- 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