{ ------------------------------------------------------------------------------- PROGRAMA : CPPRRP005 OBJETIVO : Cuentas por Pagar a mas de x dias PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Junio 17, 1993 ------------------------------------------------------------------------------- } GLOBALS "cpprgb000.4gl" DEFINE fecha_corte DATE DEFINE dias_venc INTEGER, cod_sup SMALLINT DEFINE doccli RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, aplica_a CHAR(10), pendiente DECIMAL(12,2), suplidor CHAR(6) END RECORD MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL cpprrp005() END MAIN FUNCTION cpprrp005() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cpfmrp005 FROM "cpfmrp005" DISPLAY FORM cpfmrp005 CALL pantalla() DISPLAY "cpprrp005" AT 4,3 DISPLAY "Cuentas Por Pagar a Mas De X Dias" AT 6,23 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha_corte,dias_venc,cod_sup BEFORE FIELD fecha_corte LET fecha_corte = today AFTER FIELD fecha_corte IF fecha_corte is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_corte END IF AFTER FIELD dias_venc IF dias_venc is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD dias_venc END IF AFTER FIELD cod_sup IF cod_sup is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sup END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF # Busca pendiente de las facturas cuyas fechas de vencimiento son menores # a la fecha de corte DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 DECLARE fts_pendientes CURSOR FOR SELECT a.cod_sp,a.cod_sp_sec,a.aplica_a,SUM(a.valor) FROM cptb00001 a WHERE (a.cod_sp = cod_sup) AND (a.fecha_orig <= fecha_corte) and (a.status_t is null) AND (a.tipo_doc NOT IN ("CP")) GROUP BY 1,2,3 HAVING SUM(a.valor) <> 0 ORDER BY 1,2,3 OPEN fts_pendientes START REPORT reporte88 TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 WHILE STATUS != NOTFOUND FETCH fts_pendientes INTO doccli.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET doccli.suplidor = doccli.cod_sp using "&&", doccli.cod_sp_sec using "&&&&" DISPLAY "Datos---> ",doccli.suplidor," ",doccli.aplica_a," ", doccli.pendiente USING "###,###,##&.&&" AT 20,10 OUTPUT TO REPORT reporte88(doccli.*) END WHILE FINISH REPORT reporte88 RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reporte88(x) DEFINE x RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, aplica_a CHAR(10), pendiente DECIMAL(12,2), suplidor CHAR(6) END RECORD 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 comprimido CHAR(3) DEFINE normall CHAR(3) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE imprime CHAR(1) DEFINE fecha_factura DATE, nom_sup CHAR(30) DEFINE de1a30, de31a45, de46a60, masde60, total_saldo DECIMAL(12,2) DEFINE mont, t30, t45, t60, tm60, tsaldo DECIMAL(12,2) DEFINE dias INTEGER OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.suplidor 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 = (91 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_off,doce, negrillas_on PRINT COLUMN 1, "cpprrp005", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 84, "Pag. ",pageno using "###" PRINT COLUMN 30, "Sistema de Cuentas por Pagar", COLUMN 82, today using "dd/mm/yyyy" PRINT COLUMN 27, "Cuentas Por Pagar a mas de ", dias_venc using "<<<<", " dias" PRINT COLUMN 39, "Al ", fecha_corte using "dd/mm/yy", COLUMN 87, hora SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "------------------------------------------" PRINT COLUMN 2, "S u p l i d o r", COLUMN 45, "De ", dias_venc + 1 using "<<<<", " a ", dias_venc + 15 using "<<<<", COLUMN 67, "Mas de ", dias_venc + 15 using "<<<<", COLUMN 87, "Total" PRINT COLUMN 1, "--------------------------------------------------", "------------------------------------------" PRINT COLUMN 1, negrillas_off BEFORE GROUP OF x.suplidor LET imprime = "S" SELECT a.nom_sp INTO nom_sup FROM cotb00001 a WHERE a.cod_sp = x.cod_sp AND a.cod_sp_sec = x.cod_sp_sec IF STATUS = NOTFOUND THEN LET imprime = "N" LET STATUS = 0 END IF ON EVERY ROW IF de31a45 IS NULL THEN LET de31a45 = 0 END IF IF masde60 IS NULL THEN LET masde60 = 0 END IF IF total_saldo IS NULL THEN LET total_saldo = 0 END IF IF imprime = "S" THEN SELECT MIN(a.fecha_orig) INTO fecha_factura FROM cptb00001 a WHERE a.num_doc = x.aplica_a AND a.cod_sp = x.cod_sp AND a.cod_sp_sec = x.cod_sp_sec IF fecha_factura IS NULL THEN LET fecha_factura = 0 END IF LET dias = fecha_corte - fecha_factura IF dias <= dias_venc + 15 THEN LET de31a45 = de31a45 + x.pendiente LET total_saldo = total_saldo + x.pendiente ELSE LET masde60 = masde60 + x.pendiente END IF END IF AFTER GROUP OF x.suplidor IF imprime = "S" THEN SELECT SUM(a.valor*-1) INTO mont FROM cptb00001 a WHERE a.cod_sp = x.cod_sp AND a.cod_sp_sec = x.cod_sp_sec AND a.fecha_orig <= fecha_corte AND a.tipo_doc = "CP" AND a.aplica_a IS NULL IF mont IS NULL THEN LET mont = 0 END IF LET masde60 = masde60 - mont IF de31a45 = 0 AND masde60 = 0 AND total_saldo = 0 THEN LET imprime = "N" END IF LET total_saldo = 0 LET total_saldo = de31a45 + masde60 PRINT COLUMN 1, x.cod_sp using "&&", "-", x.cod_sp_sec using "&&&&", " ", nom_sup clipped, COLUMN 40, de31a45 using "(((,(((,(((.##)", COLUMN 61, masde60 using "(((,(((,(((.##)", COLUMN 77, total_saldo using "(((,(((,(((.##)" IF t45 IS NULL THEN LET t45 = 0 END IF IF tm60 IS NULL THEN LET tm60 = 0 END IF IF tsaldo IS NULL THEN LET tsaldo = 0 END IF LET t45 = t45 + de31a45 LET tm60 = tm60 + masde60 LET tsaldo = tsaldo + total_saldo LET de31a45 = 0 LET masde60 = 0 LET total_saldo = 0 END IF ON LAST ROW SKIP 1 LINE PRINT COLUMN 23, "Totales -->", COLUMN 40, t45 using "(((,(((,(((.##)", COLUMN 61, tm60 using "(((,(((,(((.##)", COLUMN 77, tsaldo using "(((,(((,(((.##)" LET t45 = 0 LET tm60 = 0 LET tsaldo = 0 PRINT normall END REPORT