Files
MBS/PROYECTO/ccdir/ccprrp047.4gl
T

148 lines
4.6 KiB
Plaintext

{
PROGRAMA : CCPRRP047
DESARROLLADOR : JUAN SOTO
FECHA : ABRIL 17, 2012
OBJETIVO : REPORTE COBROS PARA ENVIARLO POR CORREO
}
GLOBALS
"ccprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL ccprrp047()
END MAIN
FUNCTION ccprrp047()
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
DEFINE xcobros RECORD
ano SMALLINT,
mes VARCHAR(12),
tasa DEC(12,2),
TipoCobro VARCHAR(40),
ocupacion VARCHAR(40),
nombre VARCHAR(30),
apellido VARCHAR(30),
valorrd DEC(12,2),
valororig DEC(12,2),
valorAcumuladoRD DEC(12,2),
ValorAcumuladoOrig DEC(12,2)
END RECORD,
fecha_inicial,fecha_ini_periodo DATE
LET preview = true
LET r_output = "SVG"
LET r_filename='ccprrp047.4rp'
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
ELSE
EXIT PROGRAM
END IF
--run the report
IF handler IS NOT NULL THEN -- report engine was configured ok
START REPORT xmlcobros TO "tonto"
SELECT MIN(a.fecha_inicio) INTO fecha_ini_periodo
FROM prdtable a
WHERE a.ano = year(today)
SELECT a.fecha_inicio INTO fecha_inicial
FROM prdtable a
WHERE a.ano = year(today) AND a.mes = MONTH(today)
CALL fgl_winmessage("ERROR",fecha_inicial,"STOP")
DECLARE busca CURSOR FOR
SELECT a.ano,a.nombremes,a.tasa,a.tipocobro,a.ocupacion,
SUM(a.valorrd),sum(a.valor),'0','0'
FROM vwcobros a
WHERE a.fecha_orig BETWEEN fecha_inicial AND TODAY
GROUP BY a.ano,a.nombremes,a.tasa,a.tipocobro,a.ocupacion
UNION
SELECT a.ano,a.nombremes,a.tasa,a.tipocobro,a.ocupacion,
'0','0',SUM(a.valorrd),sum(a.valor)
FROM vwcobros a
WHERE a.fecha_orig BETWEEN fecha_ini_periodo AND TODAY
GROUP BY a.ano,a.nombremes,a.tasa,a.tipocobro,a.ocupacion
FOREACH busca INTO xcobros.*
OUTPUT TO REPORT xmlcobros(xcobros.*)
END FOREACH
FINISH REPORT xmlcobros
END IF
END FUNCTION
REPORT xmlcobros(x)
DEFINE x RECORD
ano SMALLINT,
mes VARCHAR(12),
tasa DEC(12,2),
TipoCobro VARCHAR(40),
ocupacion VARCHAR(40),
nombre VARCHAR(30),
apellido VARCHAR(30),
valorrd DEC(12,2),
valororig DEC(12,2),
valorAcumuladoRD DEC(12,2),
ValorAcumuladoOrig DEC(12,2)
END RECORD,
total_cobros_rd,total_cobros_orig,total_cobros_acum_rd,total_cobros_acum_orig DEC(12,2),
ttotal_cobros_rd,ttotal_cobros_orig,ttotal_cobros_acum_rd,ttotal_cobros_acum_orig DEC(12,2)
ORDER EXTERNAL BY x.tipocobro,x.ocupacion
FORMAT
FIRST PAGE HEADER
LET ttotal_cobros_Rd = 0
LET ttotal_cobros_orig = 0
LET ttotal_cobros_acum_rd = 0
LET ttotal_cobros_acum_orig = 0
BEFORE GROUP OF x.ocupacion
LET total_cobros_Rd = 0
LET total_cobros_orig = 0
LET total_cobros_acum_rd = 0
LET total_cobros_acum_orig = 0
ON EVERY ROW
LET total_cobros_Rd = total_cobros_rd + x.valorrd
LET total_cobros_orig = total_cobros_orig + x.valororig
LET total_cobros_acum_rd = total_cobros_acum_rd + x.valorAcumuladoRD
LET total_cobros_acum_orig = total_cobros_acum_orig + x.ValorAcumuladoOrig
LET ttotal_cobros_Rd = ttotal_cobros_rd + x.valorrd
LET ttotal_cobros_orig = ttotal_cobros_orig + x.valororig
LET ttotal_cobros_acum_rd = ttotal_cobros_acum_rd + x.valorAcumuladoRD
LET ttotal_cobros_acum_orig = ttotal_cobros_acum_orig + x.ValorAcumuladoOrig
PRINTX x.*,total_cobros_acum_orig,total_cobros_acum_rd,total_cobros_orig,
total_cobros_rd,ttotal_cobros_acum_orig,ttotal_cobros_acum_rd,ttotal_cobros_orig,
ttotal_cobros_rd,p_companias.nombre
END REPORT