{ ------------------------------------------------------------------------------- PROGRAMA : CPPRRP013 SISTEMA : Cuenta por Pagar OBJETIVO : Analisis de Gastos Por Cuentas Y dptos. PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Marzo 1, 1993 ------------------------------------------------------------------------------- } GLOBALS "cpprgb000.4gl" DEFINE fecha_inicial, fecha_final DATE DEFINE salir CHAR(1) DEFINE selec5 CHAR(1500) DEFINE cuenta_no CHAR(8) DEFINE descripcion CHAR(30) DEFINE datos_13 RECORD departamento LIKE cptb00003.departamento, fecha_orig LIKE cptb00003.fecha, num_doc LIKE cptb00003.factura, cod_sp LIKE cptb00003.cod_sp, cod_sp_sec LIKE cptb00003.cod_sp_sec, nom_sup CHAR(45), valor 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_companias.* FROM companias a CALL cpprrp013() END MAIN FUNCTION cpprrp013() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cpfmrp013 FROM "cpfmrp013" DISPLAY FORM cpfmrp013 #CALL pantalla() DISPLAY "cpprrp013" AT 4,3 DISPLAY "Analisis de Gastos por Cuentas y Dptos." AT 6,19 LET tipo_papel = 1 #CALL msgrp000(tipo_papel) INPUT BY NAME fecha_inicial,fecha_final,cuenta_no AFTER FIELD fecha_inicial IF fecha_inicial is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF BEFORE FIELD fecha_final LET fecha_final = today AFTER FIELD fecha_final IF fecha_final is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF AFTER FIELD cuenta_no IF cuenta_no is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cuenta_no END IF SELECT UNIQUE a.descripcion INTO descripcion FROM cgtb00001 a WHERE a.cuenta_no = cuenta_no AND a.status_t IS NULL IF descripcion IS NULL THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cuenta_no END IF DISPLAY BY NAME descripcion END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT criterio ON a.departamento FROM dpto IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET selec5 = "SELECT a.departamento,Convert(varchar(10),a.fecha,103),a.factura,a.cod_sp,a.cod_sp_sec, ", " b.nom_sp,SUM(a.debito-a.credito) ", "FROM cptb00003 a,cotb00001 b,OUTER adtb00033 c ", "WHERE ",criterio clipped," AND a.departamento = c.departamento AND ", " a.fecha BETWEEN ? AND ? AND a.cod_sp = b.cod_sp AND ", " a.cod_sp_sec = b.cod_sp_sec AND a.status_t is null AND ", " a.cuenta_no = ? GROUP BY a.departamento,a.fecha,a.factura,a.cod_sp,a.cod_sp_sec,b.nom_sp" DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE b_balance FROM selec5 DECLARE c_balance CURSOR FOR b_balance OPEN c_balance USING fecha_inicial,fecha_final,cuenta_no CALL seleccionarsalida() RETURNING r_output LET handler = configureOutput(r_output) START REPORT reporte_13 TO XML HANDLER HANDLER DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) LET salir = "N" WHILE salir != "S" FETCH c_balance INTO datos_13.* IF status = notfound THEN LET salir = "S" EXIT WHILE END IF IF int_flag THEN LET int_flag = FALSE LET numero_msg = 2 CALL msg(numero_msg) RETURN END IF OUTPUT TO REPORT reporte_13(datos_13.*) END WHILE FINISH REPORT reporte_13 CLEAR SCREEN END FUNCTION REPORT reporte_13(x) DEFINE x RECORD departamento LIKE cptb00003.departamento, fecha_orig LIKE cptb00003.fecha, num_doc LIKE cptb00003.factura, cod_sp LIKE cptb00003.cod_sp, cod_sp_sec LIKE cptb00003.cod_sp_sec, nom_sup CHAR(45), valor DECIMAL(12,2) END RECORD DEFINE nom_dpto CHAR(30) DEFINE registro INTEGER DEFINE p_numero,p_zona CHAR(10) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE normall CHAR(3) DEFINE hora CHAR(5) DEFINE tipo CHAR(2) DEFINE imp_cli CHAR(1) DEFINE balance1,balancea,balanceb DECIMAL(12,2) DEFINE credito, debito, tcredito, tdebito, tbalance, limite, b_balance,total1,total2 DECIMAL(12,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.departamento,x.fecha_orig,x.num_doc FORMAT PAGE HEADER LET hora = time LET lj = (83 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, "cpprrp013", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 76, "Pag. ",pageno using "###" PRINT COLUMN 17, " Sistema de Cuentas por Pagar", COLUMN 76, today using "dd/mm/yy" PRINT COLUMN 17, " Analisis de Gastos por Cuentas y Dptos.", COLUMN 79, hora PRINT COLUMN 24, "Del ",fecha_inicial USING "dd/mm/yy", " Al ", fecha_final using "dd/mm/yy" SKIP 1 LINES PRINT COLUMN 1, "Cuenta No. ",cuenta_no CLIPPED," ", descripcion CLIPPED PRINT COLUMN 1,"--------------------------------------------------", "-----------------------------" PRINT COLUMN 1, "Fecha", COLUMN 12, "Factura", COLUMN 24, "Suplidor", COLUMN 65, "Valor Factura" PRINT COLUMN 1,"--------------------------------------------------", "-----------------------------" BEFORE GROUP OF x.departamento LET total1 = 0 IF x.departamento IS NOT NULL THEN SELECT UNIQUE a.nom_dpto INTO nom_dpto FROM adtb00001 a WHERE a.departamento = x.departamento ELSE LET nom_dpto = "SIN DEPARTAMENTO" END IF PRINT COLUMN 1, x.departamento," ",nom_dpto CLIPPED SKIP 1 LINE ON EVERY ROW IF total2 IS NULL THEN LET total2 = 0 END IF LET total1 = total1 + x.valor LET total2 = total2 + x.valor PRINT COLUMN 1, x.fecha_orig USING "dd/mm/yy", COLUMN 12, x.num_doc, COLUMN 24, x.cod_sp USING "&&","-", x.cod_sp_sec using "&&&&"," ", x.nom_sup clipped, COLUMN 66, x.valor using "(((,(((,(((.##)" AFTER GROUP OF x.departamento SKIP 1 LINE PRINT COLUMN 1, "Total Dpto.--->", COLUMN 66, total1 USING "(((,(((,((&.&&)" SKIP 1 LINE ON LAST ROW SKIP 1 LINE PRINT COLUMN 1, "Total Gral.--->", COLUMN 66, total2 USING "(((,(((,((&.&&)" LET total1 = 0 LET total2 = 0 PRINT normal END REPORT