{ ------------------------------------------------------------------------------- PROGRAMA : CPPRRP003 SISTEMA : Cuenta por Pagar OBJETIVO : Mayor Auxiliar PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Marzo 1, 1993 ------------------------------------------------------------------------------- } GLOBALS "cpprgb000.4gl" DEFINE mov CHAR(1) DEFINE idx_1, idx_2, idx_3 SMALLINT DEFINE fecha_inicial, fecha_final DATE DEFINE salir, salir1, salir3, tipo_venta CHAR(1) DEFINE selec5, selec6 CHAR(1500) DEFINE cod_sp SMALLINT DEFINE tot_gen1 RECORD totald DECIMAL(10,2), totalc DECIMAL(10,2), totalg DECIMAL(10,2) END RECORD DEFINE suplidor RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, nom_sup CHAR(45), suplid CHAR(6) END RECORD DEFINE mvtos RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, nom_sup CHAR(45), tipo_doc CHAR(2), num_doc CHAR(10), fecha_doc DATE, aplica_a CHAR(10), valor DECIMAL(10,2), suplid CHAR(6) 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 cpprrp003() END MAIN FUNCTION cpprrp003() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cpfmrp003 FROM "cpfmrp003" DISPLAY FORM cpfmrp003 # CALL pantalla() DISPLAY "cpprrp003" AT 4,3 DISPLAY " Mayor Auxiliar " AT 6,31 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha_inicial,fecha_final,cod_sp 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 IF fecha_final < fecha_inicial THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD fecha_final END IF AFTER FIELD cod_sp IF cod_sp is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sp END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF fecha_inicial is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF IF fecha_final is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF IF fecha_final < fecha_inicial THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD fecha_final END IF IF cod_sp is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sp END IF EXIT INPUT END INPUT CONSTRUCT criterio ON a.cod_sp_sec FROM cod_sp_sec # Busca Balances de los suplidores #CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, # doble_on,doble_off,comp_on,comp_off, # doce,normal,archivo,copia #START REPORT reporte61 TO archivo CALL configureoutput("SVG") RETURNING handler START REPORT reporte61 TO XML HANDLER handler LET selec5 = "SELECT UNIQUE a.cod_sp,a.cod_sp_sec,b.nom_sp ", "FROM cptb00001 a,cotb00001 b ", "WHERE (a.cod_sp = b.cod_sp AND a.cod_sp = ? AND ",criterio clipped, " AND a.cod_sp_sec=b.cod_sp_sec) ", "ORDER BY 1,2 " DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE b_balance FROM selec5 DECLARE c_balance SCROLL CURSOR FOR b_balance OPEN c_balance USING cod_sp DISPLAY " " AT 19,14 DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) LET idx_2 = 1 LET salir1 = "N" WHILE salir1 != "S" FETCH ABSOLUTE idx_2 c_balance INTO suplidor.* IF status = notfound THEN LET idx_2 = 1 LET salir1 = "S" EXIT WHILE END IF LET idx_2 = idx_2 + 1 LET suplidor.suplid = suplidor.cod_sp using "&&", suplidor.cod_sp_sec using "&&&&" OUTPUT TO REPORT reporte61(suplidor.*) END WHILE IF not int_flag THEN LET int_flag = false FINISH REPORT reporte61 DISPLAY BY NAME tot_gen1.* CALL fgl_winmessage("INFO","Presione OK para continuar","OK") # LET opt = UPSHIFT(opt) # IF opt = "S" THEN # RUN imprime # END IF END IF END FUNCTION REPORT reporte61(x) DEFINE x RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, nom_sup CHAR(45), suplid CHAR(6) END RECORD DEFINE j RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, tipo_doc CHAR(2), num_doc CHAR(10), fecha_doc DATE, aplica_a CHAR(10), valor DECIMAL(10,2) END RECORD 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 comprimido 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 DECIMAL(12,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.suplid FORMAT PAGE HEADER LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time LET lj = (110 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on # PRINT COLUMN 1, doce PRINT COLUMN 1, "cpprrp003", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 103, "Pag. ",pageno using "###" PRINT COLUMN 39, "Sistema de Cuentas por Pagar", COLUMN 101, today using "dd/mm/yyyy" PRINT COLUMN 46, " Mayor Auxiliar ", COLUMN 106, hora PRINT COLUMN 42, "Del ", fecha_inicial using "dd/mm/yy", " Al ", fecha_final using "dd/mm/yy" # , negrillas_off clipped SKIP 1 LINES BEFORE GROUP OF x.suplid DECLARE busqueda CURSOR FOR SELECT a.cod_sp, a.cod_sp_sec,a.tipo_doc, a.num_doc, a.fecha_orig, a.aplica_a, a.valor FROM cptb00001 a WHERE a.status_t is null AND a.cod_sp = x.cod_sp AND a.cod_sp_sec = x.cod_sp_sec AND a.fecha_orig BETWEEN fecha_inicial AND fecha_final ORDER BY 1,2,5,4,3 IF tdebito IS NULL THEN LET tdebito = 0 END IF IF tcredito IS NULL THEN LET tcredito = 0 END IF IF tbalance IS NULL THEN LET tbalance = 0 END IF SELECT SUM(b.valor) INTO balancea FROM cptb00001 b WHERE b.cod_sp = x.cod_sp and b.cod_sp_sec = x.cod_sp_sec and b.tipo_doc = "CP" and b.aplica_a IS NULL and b.fecha_orig < fecha_inicial and b.status_t is null SELECT SUM(b.valor) INTO balanceb FROM cptb00001 b WHERE b.cod_sp = x.cod_sp and b.cod_sp_sec = x.cod_sp_sec and b.tipo_doc != "CP" and b.fecha_orig < fecha_inicial and b.status_t is null IF balancea IS NULL THEN LET balancea = 0 END IF IF balanceb IS NULL THEN LET balanceb = 0 END IF LET balance1 = balancea + balanceb IF balance1 IS NULL THEN LET balance1 = 0 END IF IF limite IS NULL THEN LET limite = 0 END IF PRINT COLUMN 1, " ", " ", " " PRINT COLUMN 1, "Suplidor:", COLUMN 10, x.cod_sp using "&&","-", x.cod_sp_sec using "&&&&", COLUMN 18, x.nom_sup clipped, COLUMN 81, "Balance Inicial", COLUMN 97, balance1 using "(((,(((,(((.##)" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------", negrillas_off clipped LET b_balance = balance1 # SKIP 1 LINE PRINT COLUMN 4, "D O C U M E N T O", COLUMN 29, "A F E C T A" PRINT COLUMN 1, "|----------------------|", COLUMN 27, "|---------------|" PRINT COLUMN 3, "Numero", COLUMN 11, "Tipo", COLUMN 17, "Fecha", COLUMN 29, "Numero", COLUMN 38, "Tipo", COLUMN 63, "D E B I T O", COLUMN 80, "C R E D I T O", COLUMN 99, "B A L A N C E" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "-----------" LET debito = 0 LET credito = 0 FOREACH busqueda INTO j.* IF j.tipo_doc = "CP" AND j.aplica_a IS NOT NULL THEN LET j.valor = 0 END IF IF j.valor <> 0 THEN PRINT COLUMN 3, j.num_doc clipped, COLUMN 12, j.tipo_doc clipped, COLUMN 16, j.fecha_doc using "dd/mm/yy", COLUMN 28, j.aplica_a clipped, COLUMN 39, "FT"; LET b_balance = b_balance + j.valor IF j.valor <= 0 THEN PRINT COLUMN 59, j.valor using "###,###,###.##", COLUMN 98, b_balance using "(((,(((,(((.##)" LET debito = debito + j.valor ELSE PRINT COLUMN 78, j.valor using "###,###,###.##", COLUMN 98, b_balance using "(((,(((,(((.##)" LET credito = credito + j.valor END IF END IF END FOREACH IF debito IS NULL THEN LET debito = 0 END IF IF credito IS NULL THEN LET credito = 0 END IF PRINT COLUMN 27, "Total Suplidor", COLUMN 59, debito using "###,###,##&.&&", COLUMN 78, credito using "###,###,##&.&&", COLUMN 98, b_balance using "(((,(((,(((.##)" PRINT COLUMN 59, "===============", COLUMN 78, "===============", COLUMN 98, "===============" , negrillas_off clipped AFTER GROUP OF x.suplid SKIP 1 LINE LET tcredito = tcredito + credito LET tdebito = tdebito + debito LET tbalance = tbalance + b_balance LET credito = 0 LET debito = 0 LET balance1 = 0 ON LAST ROW SKIP 1 LINE PRINT COLUMN 27, "Total General", COLUMN 59, tdebito using "###,###,##&.&&", COLUMN 78, tcredito using "###,###,##&.&&", COLUMN 98, tbalance using "(((,(((,(((.##)" , negrillas_off clipped LET tot_gen1.totald = tdebito LET tot_gen1.totalc = tcredito LET tot_gen1.totalg = tbalance LET tdebito = 0 LET tcredito = 0 LET tbalance = 0 PRINT normall END REPORT