{ ========================================================================== PROGRAMA : EDPRRP099 OBJETIVO : LISTAR LA ENTRADA DE DIARIO CIERRE DE ANO PROGRAMADOR : JUAN F. SOTO FECHA : DICIEMBRE 20, 1994 ========================================================================== } SCHEMA smarmotech GLOBALS "cgprgb000.4gl" DEFINE fecha2 DATE, decide CHAR(1), entrada_no CHAR(14), detalle CHAR(40), tipoEntrada SMALLINT DEFINE datos RECORD cuenta_no CHAR(10), departamento SMALLINT, cod_aux SMALLINT, cod_sec SMALLINT, num_doc CHAR(12), balance DECIMAL(12, 2) END RECORD 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_compania.* FROM companias a CALL edprrp099() END MAIN FUNCTION edprrp099() OPTIONS ERROR LINE 24, FORM LINE 9 CALL pantalla() DISPLAY "Entrada Cierre de Ano" AT 6, 29 OPEN FORM edfmrp099 FROM "/" DISPLAY FORM edfmrp099 INPUT BY NAME entrada_no, fecha2, decide, detalle AFTER FIELD entrada_no IF entrada_no IS NULL THEN ERROR "(16) CAMPO EN BLANCO" NEXT FIELD entrada_no END IF LET tipoEntrada = '03' SELECT UNIQUE a.ref FROM cgtb00004 a WHERE a.ref = entrada_no IF status != NOTFOUND THEN ERROR "(03) REGISTRO EXISTE" NEXT FIELD entrada_no END IF AFTER FIELD fecha2 IF fecha2 IS NULL THEN ERROR "(16) CAMPO EN BLANCO" NEXT FIELD fecha2 END IF AFTER INPUT IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = FALSE RETURN END IF EXIT INPUT END INPUT DISPLAY "Buscando Informacion.. Espere Por Favor" AT 15, 14 CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING HANDLER START REPORT entrada TO XML HANDLER handler DECLARE busca CURSOR FOR SELECT a.cuenta_no, a.departamento, a.cod_aux, a.cod_sec, a.num_doc, SUM(a.debito - a.credito) FROM cgtb00004 a WHERE (a.cuenta_no[1] = "4" OR a.cuenta_no[1] = "5" OR a.cuenta_no[1] = "7" OR a.cuenta_no[1] = "8") AND a.fecha <= fecha2 AND a.status_t IS NULL GROUP BY a.cuenta_no, a.departamento, a.cod_aux, a.cod_sec, a.num_doc ORDER BY a.cuenta_no DISPLAY "Reporte Generandose... Espere Por Favor" AT 15, 14 FOREACH busca INTO datos.* OUTPUT TO REPORT entrada(datos.*) END FOREACH FINISH REPORT entrada END FUNCTION REPORT entrada(x) DEFINE x RECORD cuenta_no CHAR(10), departamento SMALLINT, cod_aux SMALLINT, cod_sec SMALLINT, num_doc CHAR(12), balance DECIMAL(12, 2) END RECORD DEFINE p_descripcion CHAR(40) DEFINE negritas_on, negritas_off, comp_off, comp_on CHAR(3) DEFINE t_debito, t_credito, sumatoria, credito, debito DECIMAL(12, 2) OUTPUT LEFT MARGIN 3 FORMAT PAGE HEADER { LET negritas_on = ASCII 27, ASCII 69 LET negritas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 } PRINT comp_on PRINT COLUMN 1, "edprrp099", COLUMN 39, p_compania.nombre, COLUMN 90, "Pag. ", PAGENO USING "<<<" PRINT COLUMN 38, "ENTRADA CIERRE DE ANO", COLUMN 90, TODAY USING "dd/mm/yy" SKIP 1 LINE PRINT COLUMN 1, "ENTRADA NO. ", entrada_no PRINT "============================================================================", "==================================" PRINT COLUMN 1, "CUENTA NO.", COLUMN 12, "DEPART", COLUMN 20, "CATAL.", COLUMN 28, "REF", COLUMN 40, "DESCRIPCION", COLUMN 77, "DEBITO", COLUMN 100, "CREDITO" PRINT "=============================================================================", "=================================" SKIP 1 LINE PRINT "DETALLE: ", detalle SKIP 1 LINE ON EVERY ROW SELECT descripcion INTO p_descripcion FROM cgtb00001 WHERE cuenta_no = x.cuenta_no IF t_debito IS NULL THEN LET t_debito = 0 END IF IF t_credito IS NULL THEN LET t_credito = 0 END IF LET credito = 0 LET debito = 0 IF x.balance > 0 THEN LET credito = x.balance ELSE LET debito = x.balance * -1 END IF PRINT COLUMN 1, x.cuenta_no, COLUMN 12, x.departamento USING "####", COLUMN 20, x.cod_aux USING "##", "-", x.cod_sec USING "####", COLUMN 28, x.num_doc, COLUMN 40, p_descripcion[1, 20], COLUMN 70, debito USING "####,###,###.##", COLUMN 94, credito USING "###,###,###.##" LET t_debito = t_debito + debito LET t_credito = t_credito + credito IF decide = "S" THEN INSERT INTO cgtb00004( ref, fecha, tipo, cuenta_no, departamento, cod_aux, cod_sec, num_doc, debito, credito, us_crea, fech_crea, detalle_1) VALUES(entrada_no, fecha2, tipoEntrada, x.cuenta_no, x.departamento, x.cod_aux, x.cod_sec, x.num_doc, debito, credito, suser_sname(), getdate(), DETALLE) END IF ON LAST ROW SELECT descripcion INTO p_descripcion FROM cgtb00001 WHERE cuenta_no = "3312" LET sumatoria = SUM(x.balance) LET credito = 0 LET debito = 0 IF sumatoria < 0 THEN LET credito = SUM(x.balance) * -1 ELSE LET debito = SUM(x.balance) END IF LET t_debito = t_debito + debito LET t_credito = t_credito + credito PRINT COLUMN 1, "3312", COLUMN 40, p_descripcion[1, 20], COLUMN 70, debito USING "#,###,###,###.##", COLUMN 95, credito USING "#,###,###,###.##" PRINT COLUMN 70, "--------------", COLUMN 94, "--------------" PRINT COLUMN 70, t_debito USING "###,###,###,###.##", COLUMN 94, t_credito USING "###,###,###,###.##" IF decide = "S" THEN INSERT INTO cgtb00004( ref, fecha, tipo, cuenta_no, departamento, cod_aux, cod_sec, num_doc, debito, credito, us_crea, fech_crea, detalle_1) VALUES(entrada_no, fecha2, tipoEntrada, "3312", x.departamento, x.cod_aux, x.cod_sec, x.num_doc, debito, credito, suser_sname(), getdate(), detalle) END IF PRINT comp_off END REPORT FUNCTION pantalla() DEFINE fecha CHAR(8), hora CHAR(5) LET fecha = TODAY USING "dd/mm/yy" LET hora = TIME DISPLAY " M A R M O T E C H, S A. " AT 4, 17 ATTRIBUTE(REVERSE, BLUE) DISPLAY fecha AT 4, 70 ATTRIBUTE(BLUE) DISPLAY "Sistema Contabilidad General" AT 5, 24 DISPLAY hora AT 6, 73 ATTRIBUTE(BLUE) CALL FGL_DRAWBOX(5, 79, 3, 1) CALL FGL_DRAWBOX(1, 79, 22, 1) END FUNCTION