{ 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