311 lines
13 KiB
Plaintext
311 lines
13 KiB
Plaintext
GLOBALS "cgprgb000.4gl"
|
|
#DEFINE usuarios,clave VARCHAR(50), idx,scr_l SMALLINT
|
|
DEFINE pcompanias RECORD LIKE companias.*
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
|
|
--CALL STARTLOG("CGPRMT021.TXT")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave
|
|
SELECT a.* INTO pcompanias.* FROM companias a
|
|
CALL cgprcs024()
|
|
END MAIN
|
|
|
|
FUNCTION cgprcs024()
|
|
DEFINE gastos DYNAMIC ARRAY OF RECORD
|
|
cuenta_no VARCHAR(10),
|
|
descripcion VARCHAR(100),
|
|
ac_mes_anterior ,
|
|
gastos_r_fecha ,
|
|
ac_fecha_ac ,
|
|
anio_anterior DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE fecha RECORD
|
|
desde DATE,
|
|
hasta DATE
|
|
END RECORD,
|
|
usuario_c VARCHAR(50),
|
|
p_arr1 SMALLINT,
|
|
ent_diario CHAR(14),
|
|
ch_ano CHAR(4),
|
|
cdepartamentos INT,
|
|
fecha_ini_act,fecha_ini_ant,fecha_fin_ant DATE,
|
|
fechaISO VARCHAR(10)
|
|
|
|
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
|
|
|
|
OPEN WINDOW w1 WITH FORM "cgfmcs024"
|
|
CALL ui.Interface.LoadStyles("formularios")
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
|
|
INPUT BY NAME fecha.desde, fecha.hasta,cdepartamentos ATTRIBUTE(WITHOUT defaults)
|
|
|
|
BEFORE INPUT
|
|
SELECT RTRIM(a.nom1_emp)||' '||a.apell1_emp INTO usuario_c FROM adtb00003 a,seg0001 b
|
|
WHERE b.usuario = usuarios AND a.num_emp = b.num_emp
|
|
|
|
|
|
LET fecha.desde = ''
|
|
LET fecha.hasta = TODAY
|
|
DISPLAY BY NAME usuario_c
|
|
CALL deptoSupervisa(usuarios)
|
|
|
|
BEFORE FIELD cdepartamentos
|
|
IF fecha.desde IS NULL OR fecha.hasta IS NULL THEN
|
|
CALL fgl_winmessage("INFO","DEBE ESPECIFICAR AMBAS FECHAS DE BUSQUEDA","INFO")
|
|
NEXT FIELD desde
|
|
END IF
|
|
|
|
AFTER FIELD desde
|
|
IF fecha.desde IS NULL THEN
|
|
LET numero_msg = 16
|
|
--CALL msg(numero_msg)
|
|
NEXT FIELD desde
|
|
END IF
|
|
SELECT MIN(a.fecha_inicio) INTO fecha_ini_act FROM prdtable a WHERE a.ano = YEAR(fecha.desde)
|
|
|
|
AFTER FIELD hasta
|
|
IF fecha.hasta IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD hasta
|
|
END IF
|
|
SELECT MIN(a.fecha_inicio) INTO fecha_ini_ant FROM prdtable a WHERE a.ano = YEAR(fecha.desde)-1
|
|
SELECT MAX(a.fecha_corte) INTO fecha_fin_ant FROM prdtable a WHERE a.ano = YEAR(fecha.desde)-1
|
|
|
|
AFTER FIELD cdepartamentos
|
|
IF cdepartamentos IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cdepartamentos
|
|
END IF
|
|
|
|
ON CHANGE cdepartamentos
|
|
IF cdepartamentos IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cdepartamentos
|
|
END IF
|
|
CALL gastos.clear()
|
|
LET fechaISO = fecha.hasta USING "YYYYMMDD"
|
|
DISPLAY "FECHA: ",fechaISO
|
|
DISPLAY "fecha: ",fecha.hasta
|
|
LET selec =
|
|
"SELECT distinct a.cuenta_no,b.descripcion ",
|
|
"FROM cgtb00001 b, cgtb00004 a, chequeo d,adtb00001 c ",
|
|
"WHERE (a.cuenta_no = b.cuenta_no) AND (SUBSTRING(b.cuenta_no,1,1) = '7') AND ",
|
|
"(a.departamento = d.departamento) AND a.status_t IS NULL AND ",
|
|
"(a.departamento = c.departamento) AND ",
|
|
"(a.fecha <= '",fechaISO clipped,"') AND ",
|
|
"(a.departamento = ", cdepartamentos, ") AND ",
|
|
" a.ref NOT LIKE 'ED.99%' AND a.cuenta_no <> '7600' and ",
|
|
"b.status_t is null ",
|
|
"ORDER BY a.cuenta_no, b.descripcion "
|
|
|
|
LET idx = 1
|
|
DISPLAY selec
|
|
PREPARE comando FROM selec
|
|
DECLARE busco CURSOR FOR comando
|
|
|
|
|
|
|
|
LET ch_ano = YEAR(fecha.hasta) using "&&&&"
|
|
LET ch_ano = ch_ano[3,4]
|
|
LET ent_diario = "ED.99-999/12",ch_ano CLIPPED
|
|
#DISPLAY "ent_diario: ",ent_diario
|
|
|
|
FOREACH busco INTO gastos[idx].cuenta_no, gastos[idx].descripcion
|
|
|
|
#ACUMULADO AL MES ANTERIOR
|
|
SELECT ISNULL(SUM(a.debito-a.credito),0)
|
|
INTO gastos[idx].ac_mes_anterior
|
|
FROM cgtb00004 a
|
|
WHERE (a.ref =a.ref AND a.tipo<>3) AND
|
|
(a.cuenta_no = gastos[idx].cuenta_no) AND
|
|
(a.fecha BETWEEN fecha_ini_act AND fecha.desde ) AND
|
|
(a.departamento = cdepartamentos) AND
|
|
a.status_t is NULL
|
|
--227-1322-2108
|
|
IF gastos[idx].ac_mes_anterior IS NULL THEN
|
|
LET gastos[idx].ac_mes_anterior = 0
|
|
END IF
|
|
|
|
#GASTOS RANGO DE FECHAS:
|
|
SELECT ISNULL(SUM(a.debito-a.credito),0)
|
|
INTO gastos[idx].gastos_r_fecha
|
|
FROM cgtb00004 a
|
|
WHERE (a.cuenta_no = gastos[idx].cuenta_no) AND
|
|
(a.fecha BETWEEN fecha.desde AND fecha.hasta) AND
|
|
(a.departamento = cdepartamentos) AND
|
|
(a.ref =a.ref AND a.tipo <>3) AND
|
|
a.status_t IS NULL
|
|
|
|
IF gastos[idx].gastos_r_fecha IS NULL THEN
|
|
LET gastos[idx].gastos_r_fecha = 0
|
|
END IF
|
|
|
|
#ACUMULADO A LA FECHA
|
|
LET gastos[idx].ac_fecha_ac = gastos[idx].ac_mes_anterior + gastos[idx].gastos_r_fecha
|
|
|
|
#REALIZADO MES ANO ANTERIOR:
|
|
SELECT ISNULL(SUM(a.debito-a.credito),0) INTO
|
|
gastos[idx].anio_anterior
|
|
FROM cgtb00004 a
|
|
WHERE (a.ref =a.ref AND a.tipo<>3) AND
|
|
(a.cuenta_no = gastos[idx].cuenta_no) AND
|
|
(a.fecha BETWEEN fecha_ini_ant AND fecha_fin_ant) AND
|
|
(a.departamento = cdepartamentos) AND
|
|
a.status_t is NULL
|
|
|
|
IF gastos[idx].anio_anterior = 0 AND gastos[idx].gastos_r_fecha = 0 AND gastos[idx].ac_mes_anterior =0 AND
|
|
gastos[idx].ac_fecha_ac = 0 THEN
|
|
CALL gastos.deleteElement(idx)
|
|
CONTINUE FOREACH
|
|
END IF
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END INPUT
|
|
|
|
{ LET ch_ano = YEAR(fe) using "&&&&"
|
|
LET ch_ano = ch_ano[3,4]
|
|
LET ent_diario = "ED.99-999/12",ch_ano CLIPPED}
|
|
|
|
INPUT ARRAY gastos FROM recordd.*
|
|
BEFORE INPUT
|
|
CALL DIALOG.setActionActive("insert", FALSE)
|
|
CALL DIALOG.setActionActive("append", FALSE)
|
|
CALL DIALOG.setActionActive("delete", FALSE)
|
|
|
|
BEFORE ROW
|
|
LET p_arr1 = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
ON ACTION reporte
|
|
CALL generaReporte(gastos,fecha.*)
|
|
|
|
ON ACTION acumesant
|
|
CALL detalleGastos(ent_diario,gastos[p_arr1].cuenta_no,
|
|
cdepartamentos, 'acumesant',fecha.*)
|
|
|
|
ON ACTION gasranfech
|
|
CALL detalleGastos(ent_diario,gastos[p_arr1].cuenta_no,
|
|
cdepartamentos, 'gasranfech',fecha.*)
|
|
|
|
--ON ACTION acufechaant
|
|
-- CALL detalleGastos(gastosDetalle,ent_diario,gastos[p_arr1].cuenta_no,
|
|
-- cdepartamentos, 'acufechaant')
|
|
|
|
ON ACTION anioant
|
|
CALL detalleGastos("ED.99-999/12*",gastos[p_arr1].cuenta_no,
|
|
cdepartamentos, 'anioant',fecha.*)
|
|
|
|
END INPUT
|
|
|
|
|
|
ON ACTION CANCEL
|
|
EXIT DIALOG
|
|
CLOSE WINDOW w1
|
|
END DIALOG
|
|
CLOSE WINDOW w1
|
|
END FUNCTION
|
|
|
|
FUNCTION generaReporte(gastos, fecha)
|
|
DEFINE fecha RECORD
|
|
desde DATE,
|
|
hasta DATE
|
|
END RECORD
|
|
|
|
DEFINE gastos DYNAMIC ARRAY OF RECORD
|
|
cuenta_no VARCHAR(10),
|
|
descripcion VARCHAR(100),
|
|
ac_mes_anterior ,
|
|
gastos_r_fecha ,
|
|
ac_fecha_ac ,
|
|
anio_anterior DECIMAL(12,2)
|
|
END RECORD,
|
|
idz INT
|
|
|
|
LET r_filename ="cgprcs024.4rp"
|
|
|
|
FOR idz = 1 TO gastos.getLength()
|
|
#DISPLAY gastos[idz].ac_fecha_ac,gastos[idz].ac_mes_anterior,gastos[idz].anio_anterior,gastos[idz].gastos_r_fecha, gastos[idz].descripcion
|
|
|
|
IF idz = 1 THEN
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
--LET r_output='SVG'
|
|
LET preview=1
|
|
CALL seleccionarsalida() RETURNING r_output
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
|
|
START REPORT gastos_gral TO XML HANDLER HANDLER
|
|
END IF
|
|
END IF
|
|
OUTPUT TO REPORT gastos_gral(gastos[idz].*,fecha.*)
|
|
END FOR
|
|
|
|
IF idx > 1 THEN
|
|
FINISH REPORT gastos_gral
|
|
ELSE
|
|
CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS","INFO")
|
|
END IF
|
|
END FUNCTION
|
|
|
|
REPORT gastos_gral(x,y)
|
|
DEFINE y RECORD
|
|
desde DATE,
|
|
hasta DATE
|
|
END RECORD
|
|
DEFINE x RECORD
|
|
cuenta_no VARCHAR(10),
|
|
descripcion VARCHAR(50),
|
|
ac_mes_anterior DECIMAL(12,5),
|
|
gastos_r_fecha DECIMAL(12,5),
|
|
ac_fecha_ac DECIMAL(12,5),
|
|
anio_anterior DECIMAL(12,5)
|
|
END RECORD,
|
|
totalAc_mes_anterior DECIMAL(12,2),
|
|
totalGastos_r_fecha DECIMAL(12,2),
|
|
totalAc_fecha_ac DECIMAL(12,2),
|
|
totaAnio_anterior DECIMAL(12,2),
|
|
fecha_reporte char(30),
|
|
|
|
fechas VARCHAR (35)
|
|
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
LET totalAc_mes_anterior = 0
|
|
LET totalGastos_r_fecha = 0
|
|
LET totalAc_fecha_ac = 0
|
|
LET totaAnio_anterior = 0
|
|
LET fecha_reporte = CURRENT
|
|
LET fechas = "Desde ",y.desde USING "dd/mm/yyyy"," Hasta ",y.hasta USING "dd/mm/yyyy"
|
|
DISPLAY pcompanias.nombre
|
|
PRINTX pcompanias.nombre, fechas, fecha_reporte
|
|
|
|
ON EVERY ROW
|
|
|
|
LET totalAc_mes_anterior = totalAc_mes_anterior + x.ac_mes_anterior
|
|
LET totalGastos_r_fecha = totalGastos_r_fecha + x.gastos_r_fecha
|
|
LET totalAc_fecha_ac = totalAc_fecha_ac + x.ac_fecha_ac
|
|
LET totaAnio_anterior = totaAnio_anterior + x.anio_anterior
|
|
|
|
|
|
PRINTX x.cuenta_no, x.descripcion, x.ac_mes_anterior, x.gastos_r_fecha,
|
|
x.ac_fecha_ac, x.anio_anterior
|
|
|
|
ON LAST ROW
|
|
LET totalAc_mes_anterior = SUM(x.ac_mes_anterior)
|
|
LET totalGastos_r_fecha = SUM(x.gastos_r_fecha)
|
|
LET totalAc_fecha_ac = SUM(x.ac_fecha_ac)
|
|
LET totaAnio_anterior = SUM(x.anio_anterior)
|
|
|
|
PRINTX totalAc_mes_anterior,totalGastos_r_fecha,totalAc_fecha_ac,
|
|
totaAnio_anterior
|
|
END REPORT
|