248 lines
8.7 KiB
Plaintext
248 lines
8.7 KiB
Plaintext
|
|
DEFINE pano,pmes SMALLINT,
|
|
titulomes,titulodepartamento VARCHAR(60),
|
|
usuarios,clave,argumento,xtitulomes VARCHAR(50),
|
|
titulo1,titulo2 STRING,
|
|
xnumemp INT,
|
|
tienegastos,tieneundepto VARCHAR(2)
|
|
|
|
TYPE data RECORD
|
|
categoria VARCHAR(20),
|
|
mes VARCHAR(20),
|
|
cuenta VARCHAR(14),
|
|
descripcion VARCHAR(100),
|
|
valor DEC(12,2) ,
|
|
departamento VARCHAR(60),
|
|
codigodepto INT,
|
|
otrovalor DEC(12,2),
|
|
sumariza VARCHAR(2),
|
|
acumulado FLOAT
|
|
|
|
END RECORD
|
|
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
|
|
hand om.SaxDocumentHandler,
|
|
info STRING
|
|
LET pano = YEAR(TODAY)
|
|
LET pmes = MONTH(TODAY)
|
|
LET pmes = 9
|
|
# Query busca el titulo del mes
|
|
SELECT a.descrip INTO xtitulomes FROM mestable a WHERE a.mes = pmes
|
|
|
|
# Busca la informacion del usuario
|
|
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
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
CALL setupreporte() RETURNING hand
|
|
CALL ui.Interface.frontCall( "standard", "launchurl", [fgl_report_getBrowserURL()], [] )
|
|
END FUNCTION
|
|
FUNCTION setupreporte()
|
|
DEFINE hand om.SaxDocumentHandler,
|
|
filename,r_output STRING,
|
|
preview BOOLEAN,
|
|
cuenta,cuentadpto INT,
|
|
x data,
|
|
xtitulodepartamento VARCHAR(60)
|
|
LET titulomes = "Septiembre"
|
|
LET filename = 'dashboard_master.4rp'
|
|
LET r_output = "HTML"
|
|
LET preview = TRUE
|
|
LET tienegastos = "SI"
|
|
LET tieneundepto = "NO"
|
|
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"
|
|
ELSE
|
|
SELECT COUNT(*) INTO cuentadpto FROM adtb00001 a WHERE a.num_emp_supervisa = xnumemp AND a.status_t IS NULL
|
|
|
|
IF cuentadpto > 1 THEN
|
|
DECLARE cur_depto CURSOR FOR
|
|
SELECT a.nom_dpto INTO xtitulodepartamento
|
|
FROM adtb00001 a
|
|
WHERE a.num_emp_supervisa = xnumemp
|
|
LET titulodepartamento = NULL
|
|
FOREACH cur_depto
|
|
LET titulodepartamento = "(",xtitulodepartamento CLIPPED,")", "(",titulodepartamento CLIPPED,")"
|
|
END FOREACH
|
|
LET tieneundepto = "NO"
|
|
LET titulo1 = "Gastos Acumulado Por Departamento Del Mes De ",xtitulomes CLIPPED
|
|
LET titulo2 = "Gastos Partidas del mes de ",xtitulomes CLIPPED
|
|
ELSE
|
|
LET tieneundepto = "SI"
|
|
LET titulo1 = "Gastos Mensuales Del Mes De ",xtitulomes CLIPPED
|
|
LET titulo2 = "Gastos Partidas del mes de ",xtitulomes CLIPPED
|
|
END IF
|
|
|
|
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
|
|
|
|
START REPORT master_report TO XML HANDLER hand
|
|
OUTPUT TO REPORT master_report(x.*)
|
|
FINISH REPORT master_report
|
|
|
|
RETURN hand
|
|
END FUNCTION
|
|
REPORT master_report(x)
|
|
DEFINE x data,
|
|
i INT
|
|
|
|
|
|
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
PRINTX titulodepartamento
|
|
LET i = 0
|
|
ON EVERY ROW
|
|
START REPORT report_depto
|
|
IF tieneundepto = "NO" THEN
|
|
DECLARE busca_data_dpto CURSOR FOR
|
|
SELECT 'GDEPTO',c.descrip,a.cuenta,a.descripcioncuenta,SUM(a.balance),a.nombredepartamento,
|
|
a.codigodepartamento,c.mes
|
|
FROM vwanalitico a,mestable c,adtb00001 b
|
|
WHERE a.control = '7' AND
|
|
a.ano = pano AND
|
|
a.codigodepartamento = b.departamento AND
|
|
b.num_emp_supervisa = xnumemp AND
|
|
a.numero_mes <= pmes AND a.numero_mes = c.mes
|
|
GROUP BY c.descrip,a.cuenta,a.descripcioncuenta,a.nombredepartamento,a.codigodepartamento,
|
|
c.mes
|
|
|
|
FOREACH busca_data_dpto INTO x.*
|
|
OUTPUT TO REPORT report_depto(x.*)
|
|
|
|
END FOREACH
|
|
FINISH REPORT report_depto
|
|
CLOSE busca_data_dpto
|
|
ELSE
|
|
DISPLAY "tiene ",tieneundepto
|
|
DECLARE busca_data_dpto1 CURSOR FOR
|
|
SELECT 'GDEPTO',' ',c.mes,' ',SUM(a.balance),c.descrip
|
|
|
|
FROM vwanalitico a,mestable c,adtb00001 b
|
|
WHERE a.control = '7' AND
|
|
a.ano = pano AND
|
|
a.codigodepartamento = b.departamento AND
|
|
b.num_emp_supervisa = xnumemp AND
|
|
a.numero_mes <= pmes AND a.numero_mes = c.mes
|
|
GROUP BY c.descrip, c.mes
|
|
|
|
FOREACH busca_data_dpto1 INTO x.*
|
|
OUTPUT TO REPORT report_depto(x.*)
|
|
|
|
END FOREACH
|
|
FINISH REPORT report_depto
|
|
CLOSE busca_data_dpto1
|
|
END IF
|
|
START REPORT report_mes
|
|
|
|
DECLARE busca_data_mes CURSOR FOR
|
|
SELECT ' ',' ',a.cuenta,a.descripcioncuenta,SUM(a.balance),' ','0'
|
|
FROM vwanalitico a,mestable c,adtb00001 b
|
|
WHERE a.control = '7' AND
|
|
a.ano = pano AND
|
|
a.codigodepartamento = b.departamento AND
|
|
b.num_emp_supervisa = xnumemp AND
|
|
a.numero_mes = pmes AND a.numero_mes = c.mes
|
|
GROUP BY a.cuenta,a.descripcioncuenta
|
|
ORDER BY 5 DESC
|
|
LET x.otrovalor =0
|
|
FOREACH busca_data_mes INTO x.*
|
|
LET i = i + 1
|
|
IF i < 13 THEN
|
|
LET x.sumariza = "NO"
|
|
ELSE
|
|
LET x.sumariza = "SI"
|
|
LET X.descripcion = 'OTROS GASTOS'
|
|
LET x.otrovalor = x.otrovalor + x.valor
|
|
END IF
|
|
OUTPUT TO REPORT report_mes(x.*)
|
|
|
|
END FOREACH
|
|
FINISH REPORT report_mes
|
|
CLOSE busca_data_mes
|
|
|
|
START REPORT report_detalle
|
|
|
|
DECLARE busca_detalle CURSOR FOR
|
|
SELECT 'GDEPTO',c.descrip,a.cuenta,a.descripcioncuenta,SUM(a.balance),
|
|
a.nombredepartamento,a.codigodepartamento,'0',' ','0'
|
|
FROM vwanalitico a,mestable c,adtb00001 b
|
|
WHERE a.control = '7' AND
|
|
a.ano = pano AND
|
|
a.codigodepartamento = b.departamento AND
|
|
b.num_emp_supervisa = xnumemp AND
|
|
a.numero_mes = pmes AND a.numero_mes = c.mes
|
|
GROUP BY c.descrip,a.cuenta,a.descripcioncuenta,a.nombredepartamento,a.codigodepartamento
|
|
|
|
UNION
|
|
|
|
SELECT 'GDEPTO','',a.cuenta,a.descripcioncuenta,'0',
|
|
a.nombredepartamento,a.codigodepartamento,'0',' ',SUM(a.balance)
|
|
FROM vwanalitico a,mestable c,adtb00001 b
|
|
WHERE a.control = '7' AND
|
|
a.ano = pano AND
|
|
a.codigodepartamento = b.departamento AND
|
|
b.num_emp_supervisa = xnumemp AND
|
|
a.numero_mes <= pmes AND a.numero_mes = c.mes
|
|
GROUP BY a.cuenta,a.descripcioncuenta,a.nombredepartamento,
|
|
a.codigodepartamento
|
|
ORDER BY a.nombredepartamento,a.cuenta
|
|
FOREACH busca_detalle INTO x.*
|
|
OUTPUT TO REPORT report_detalle(x.*)
|
|
END FOREACH
|
|
FINISH REPORT report_detalle
|
|
CLOSE busca_detalle
|
|
END REPORT
|
|
REPORT report_depto(x)
|
|
DEFINE x data
|
|
ORDER EXTERNAL BY x.departamento
|
|
FORMAT
|
|
ON EVERY ROW
|
|
PRINTX x.*,tieneundepto,titulo1
|
|
END REPORT
|
|
REPORT report_mes(x)
|
|
DEFINE x data
|
|
|
|
ORDER EXTERNAL BY x.mes
|
|
FORMAT
|
|
ON EVERY ROW
|
|
PRINTX x.*,tienegastos,titulomes,titulo2
|
|
END REPORT
|
|
REPORT report_detalle(z)
|
|
DEFINE z data,
|
|
xacumulado FLOAT
|
|
ORDER EXTERNAL BY z.departamento,z.cuenta
|
|
FORMAT
|
|
BEFORE GROUP OF z.departamento
|
|
PRINTX z.departamento
|
|
|
|
AFTER GROUP OF z.cuenta
|
|
LET xacumulado = GROUP SUM(z.acumulado)
|
|
PRINTX z.descripcion,z.valor,xacumulado
|
|
END REPORT |