DEFINE pano,pmes SMALLINT, titulomes,titulodepartamento VARCHAR(60), usuarios,clave VARCHAR(50), xnumemp INT, tienegastos VARCHAR(2) MAIN CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "smarmotech" USER usuarios USING clave CALL reporte() END MAIN FUNCTION reporte() DEFINE data RECORD categoria VARCHAR(20), mes VARCHAR(20), cuenta VARCHAR(14), descripcion VARCHAR(100), valor DEC(12,2) , departamento VARCHAR(60) END RECORD, hand om.SaxDocumentHandler LET pano = YEAR(TODAY) LET pmes = MONTH(TODAY) LET pmes = 10 SELECT a.descrip INTO titulomes FROM mestable a WHERE a.mes = pmes SELECT b.nom_dpto,a.num_emp INTO titulodepartamento,xnumemp FROM seg0001 a,adtb00001 b,adtb00004 c,adtb00003 d WHERE a.usuario =usuarios AND a.departamento = b.departamento AND a.num_emp = d.num_emp AND d.cod_puesto = c.cod_puesto AND c.supervisor = 'SI' IF STATUS = NOTFOUND THEN DISPLAY "NO DESPLEGA DASHBOARD" EXIT PROGRAM END IF CALL setupreporte() RETURNING hand DECLARE busca_gastos CURSOR FOR SELECT c.descrip,SUM(a.balance),d.nom_dpto,c.mes FROM vwanalitico a,mestable c,adtb00001 d WHERE a.control = '7' AND a.ano = pano AND a.codigodepartamento = d.departamento AND d.num_emp_supervisa = xnumemp AND a.numero_mes <= pmes AND a.numero_mes = c.mes GROUP BY c.descrip,c.mes,d.nom_dpto ORDER BY d.nom_dpto,c.mes START REPORT datarep TO XML HANDLER hand FOREACH busca_gastos INTO data.mes,data.valor,data.departamento OUTPUT TO REPORT datarep(data.*) END FOREACH FINISH REPORT datarep CALL ui.Interface.frontCall( "standard", "launchurl", [fgl_report_getBrowserURL()], [] ) END FUNCTION REPORT datarep(x) DEFINE x RECORD categoria VARCHAR(20), mes VARCHAR(20), cuenta VARCHAR(14), descripcion VARCHAR(100), valor DEC(12,2) , departamento VARCHAR(60) END RECORD, z RECORD descripcion VARCHAR(20), balance DEC(12,2) END RECORD, i SMALLINT ORDER BY x.departamento,x.mes FORMAT AFTER GROUP OF x.departamento PRINTX x.*,tienegastos,titulodepartamento,titulomes ON LAST ROW IF tienegastos = "SI" THEN DECLARE busca_Cuenta CURSOR FOR SELECT a.descripcioncuenta,SUM(a.balance) FROM vwanalitico a,adtb00001 b WHERE a.ano = pano AND a.numero_mes = pmes AND b.num_emp_supervisa = xnumemp AND a.control='7' GROUP BY a.descripcioncuenta ORDER BY 2 DESC LET i =1 FOREACH busca_cuenta INTO z.* PRINTX z.* LET i = i+1 END FOREACH END IF END REPORT FUNCTION setupreporte() DEFINE hand om.SaxDocumentHandler, filename,r_output STRING, preview BOOLEAN, cuenta INT LET filename = 'dashboard.4rp' LET r_output = "SVG" LET preview = TRUE LET tienegastos = "SI" SELECT ISNULL(COUNT(*),0) INTO cuenta FROM vwanalitico a,adtb00001 b WHERE ano = pano AND numero_mes = pmes AND a.codigodepartamento = b.departamento AND b.num_emp_supervisa = xnumemp IF cuenta = 0 THEN LET tienegastos = "NO" END IF LET tienegastos="NO" IF fgl_report_loadCurrentSettings(filename) THEN CALL fgl_report_selectDevice(r_output) CALL fgl_report_selectPreview(preview) CALL fgl_report_commitCurrentSettings() RETURNING hand IF hand IS NULL THEN DISPLAY " ERROR " EXIT PROGRAM END IF END IF RETURN hand END FUNCTION