GLOBALS "cgprgb000.4gl" FUNCTION edprrp118( fecha1, fecha2, detalle, entra, afecta, p_companias, acumulado_arr, usuario) 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 DEFINE acumulado_arr DYNAMIC ARRAY OF RECORD cod_mov LIKE irtb00006.cod_mov, descrip_mov LIKE intb00005.descrip_mov, departamento SMALLINT, nombre CHAR(30), consumo DECIMAL(12, 2), cuenta CHAR(10), gasto_ind LIKE irtb00013.costo_st, descripcion CHAR(50), consumo_cuenta DECIMAL(12, 2), cuenta_inv CHAR(10) END RECORD, ordenar CHAR(30) DEFINE afecta CHAR(3), fecha1, fecha2 DATE, p_cctb01 RECORD LIKE cctb00001.*, entra CHAR(14), detalle CHAR(100), p_companias CHAR(30), idz INT, ###### Variables para almacenar los datos selecionados usuario, clave CHAR(80), impresor SMALLINT LET r_filename = "edprrp118b.4rp" LET idz = 1 FOR idx = 1 TO acumulado_arr.getLength() IF idx = 1 THEN IF fgl_report_loadCurrentSettings(r_filename) THEN LET preview = 1 CALL seleccionarsalida() RETURNING r_output -- 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 END IF START REPORT entrada14 TO XML HANDLER HANDLER END IF LET ordenar = acumulado_arr[idz].cuenta CLIPPED, "-", acumulado_arr[idz].departamento USING "&&&&&" OUTPUT TO REPORT entrada14( p_cctb01.*, fecha1, fecha2, detalle, entra, afecta, p_companias, acumulado_arr[idz].*, ordenar, usuario) LET idz = idz + 1 END FOR IF idx > 1 THEN FINISH REPORT entrada14 ELSE CALL fgl_winmessage( "INFO", "NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS", "INFO") END IF --RUN imprime END FUNCTION REPORT entrada14( x, fecha1, fecha2, detalle1, entrada, afecta, p_companias, y, xordenar, usuario) DEFINE x RECORD LIKE cctb00001.* DEFINE usuario VARCHAR(50) DEFINE y RECORD cod_mov LIKE irtb00006.cod_mov, descrip_mov LIKE intb00005.descrip_mov, departamento SMALLINT, nombre CHAR(30), consumo DECIMAL(12, 2), cuenta CHAR(10), gasto_ind LIKE irtb00013.costo_st, descripcion CHAR(30), consumo_cuenta DECIMAL(12, 2), cuenta_inv CHAR(10) END RECORD, xordenar VARCHAR(30) ### Acumula los valores de las diferentes cuentas para entrada diario de nomina DEFINE invdebito, invcredito, debito, credito, total_departamento, total_haber, total_deber DECIMAL(12, 2), detalle1, nombre_cta, rango_fecha CHAR(100), fecha1, fecha2 DATE, #### Almacena las fecha del rango de busqueda hora CHAR(5), entrada CHAR(14), actual VARCHAR(20), afecta CHAR(3), p_companias, desc_cuenta CHAR(30) ORDER BY xordenar FORMAT FIRST PAGE HEADER LET hora = TIME LET actual = TODAY USING "dd/mm/yyyy" LET rango_fecha = "Del ", fecha1 USING "dd/mm/yyyy", " Al ", fecha2 USING "dd/mm/yyyy" LET total_deber = 0 LET total_haber = 0 BEFORE GROUP OF y.departamento LET total_departamento = 0 AFTER GROUP OF xordenar IF y.consumo < 0 THEN LET debito = GROUP SUM(y.consumo_cuenta) * -1 LET credito = 0 ELSE LET debito = 0 LET credito = GROUP SUM(y.consumo_cuenta) END IF PRINTX entrada, hora, actual, rango_fecha, p_companias, y.cod_mov, y.consumo, y.cuenta, y.departamento, y.descrip_mov, y.gasto_ind, y.nombre, y.consumo_cuenta, y.descripcion, debito, credito, detalle1 IF afecta = "S" THEN BEGIN WORK IF y.consumo < 0 THEN INSERT INTO cgtb00004( fecha, tipo, ref, cuenta_no, departamento, detalle_1, debito, credito, us_crea, fech_crea) VALUES(fecha2, 1, entrada, y.cuenta, y.departamento, detalle1, debito, 0, usuarios, GETDATE()) ELSE INSERT INTO cgtb00004( fecha, tipo, ref, cuenta_no, departamento, detalle_1, debito, credito, us_crea, fech_crea) VALUES(fecha2, 1, entrada, y.cuenta, y.departamento, detalle1, 0, credito, usuarios, GETDATE()) END IF COMMIT WORK END IF LET total_deber = debito + total_deber LET total_haber = credito + total_haber ON LAST ROW SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = y.cuenta_inv IF nombre_cta IS NULL THEN LET nombre_cta = "CUENTA SIN DESCRIPCION" END IF IF y.consumo < 0 THEN LET invcredito = SUM(y.consumo_cuenta * -1) LET invdebito = 0 LET total_haber = invcredito + total_haber ELSE LET invdebito = SUM(y.consumo_cuenta) LET invcredito = 0 LET total_deber = invdebito + total_deber END IF IF afecta = "S" THEN BEGIN WORK IF y.consumo < 0 THEN INSERT INTO cgtb00004( fecha, tipo, ref, cuenta_no, detalle_1, debito, credito, us_crea, fech_crea) VALUES(fecha2, 1, entrada, y.cuenta_inv, detalle1, 0, invcredito, usuarios, GETDATE()) ELSE INSERT INTO cgtb00004( fecha, tipo, ref, cuenta_no, detalle_1, debito, credito, us_crea, fech_crea) VALUES(fecha2, 1, entrada, y.cuenta_inv, detalle1, invcredito, 0, usuarios, GETDATE()) END IF {UPDATE cgtb00011 SET referencia = referencia + 1, us_mod = usuario, fech_mod = getdate() WHERE entrada_no = 5} COMMIT WORK END IF PRINTX y.cuenta_inv, total_haber, nombre_cta, desc_cuenta, total_deber, invdebito, invcredito END REPORT