{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP008 OBJETIVO : Cuentas por Cobrar a mas de x dias PROGRAMADOR : Lic. Abner Montalvo Zapata FECHA REALIZACION : Abril 6, 1993 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE fecha_corte DATE DEFINE dias_venc, idx_1, idx_2 SMALLINT DEFINE doccli RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), aplica_a INTEGER, tipo CHAR(2), fecha DATE, valor DECIMAL(12,2), cliente CHAR(6) END RECORD FUNCTION ccprrp008() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ccfmrp008 FROM "ccfmrp008" DISPLAY FORM ccfmrp008 CALL pantalla() DISPLAY "ccprrp008" AT 4,3 DISPLAY "Cuentas por Cobrar Vencidas" AT 6,26 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha_corte, dias_venc 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 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 DECLARE fts_pendientes CURSOR FOR SELECT UNIQUE b.tipo_cliente,b.sec_cliente,a.nombre,b.num_doc,b.tipo_doc, MIN(b.fecha_orig) FROM vetb00004 a,cctb00001 b WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND b.status_t IS NULL AND b.fecha_orig <= fecha_corte AND b.num_doc = b.aplica_a AND (fecha_corte-b.fecha_orig) >= dias_venc GROUP BY 1,2,3,4,5 DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) START REPORT reporte8 TO "C:\\ccrp08" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) FOREACH fts_pendientes INTO doccli.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET doccli.cliente = doccli.tipo_cliente using "&&", doccli.sec_cliente using "&&&&" IF doccli.tipo = "AV" THEN SELECT SUM(a.valor+a.monto_desc)*-1 INTO doccli.valor FROM cctb00001 a WHERE a.tipo_cliente=doccli.tipo_cliente AND a.sec_cliente=doccli.sec_cliente AND a.fecha_orig <= fecha_corte AND a.status_t IS NULL AND a.num_doc = doccli.aplica_a AND a.tipo_doc = "AV" ELSE SELECT SUM(a.valor+a.monto_desc) INTO doccli.valor FROM cctb00001 a WHERE a.tipo_cliente=doccli.tipo_cliente AND a.sec_cliente=doccli.sec_cliente AND a.fecha_orig <= fecha_corte AND a.status_t IS NULL AND a.aplica_a = doccli.aplica_a AND a.tipo_doc != "PC" END IF IF (fecha_corte - doccli.fecha) >= dias_venc AND doccli.valor <> 0 THEN OUTPUT TO REPORT reporte8(doccli.*) END IF END FOREACH FINISH REPORT reporte8 CLEAR SCREEN RUN "type C:\\ccrp08 > %USPRINT%" END FUNCTION REPORT reporte8(x) DEFINE x RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), aplica_a INTEGER, tipo CHAR(2), fecha DATE, valor DECIMAL(12,2), cliente CHAR(6) END RECORD DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) 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_fact DATE DEFINE de1a30, de31a45, de46a60, masde60, total_saldo DECIMAL(12,2) DEFINE valor,t30,t45,t60,tm60,tsaldo,tt45,ttm60,tt60,ttsaldo DECIMAL(12,2) DEFINE dias INTEGER OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.sec_cliente,x.aplica_a 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 69 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET comprimido = ASCII 15 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET normal = ASCII 27, ASCII 80 LET hora = time LET lj = (96 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, doce,negrillas_on PRINT COLUMN 1, "ccprrp008", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 89, "Pag. ",pageno using "###" PRINT COLUMN 33, "Sistema de Cuentas por Cobrar", COLUMN 89, today using "dd/mm/yyyy" PRINT COLUMN 30, "Cuentas por Cobrar a mas de ", dias_venc using "<<<<"," dias" PRINT COLUMN 43, "Al ", fecha_corte using "dd/mm/yy", COLUMN 92, hora SKIP 1 LINES PRINT COLUMN 5, "--------------------------------------------------", "------------------------------------------" PRINT COLUMN 7, "C l i e n t e", COLUMN 50, "De ", dias_venc + 1 using "<<<<", " a ", dias_venc + 15 using "<<<<", COLUMN 72, "Mas de ", dias_venc + 15 using "<<<<", COLUMN 92, "Total" PRINT COLUMN 5, "--------------------------------------------------", "------------------------------------------" PRINT COLUMN 1, negrillas_off BEFORE GROUP OF x.sec_cliente LET de31a45 = 0 LET masde60 = 0 LET total_saldo = 0 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 x.fecha IS NULL THEN LET fecha_fact = 0 END IF LET dias = fecha_corte - x.fecha IF dias <= (dias_venc + 15) THEN LET de31a45 = de31a45 + x.valor LET total_saldo = total_saldo + x.valor END IF IF dias > (dias_venc + 15) THEN LET masde60 = masde60 + x.valor LET total_saldo = total_saldo + x.valor END IF AFTER GROUP OF x.sec_cliente PRINT COLUMN 5, x.tipo_cliente using "&&", "-", x.sec_cliente using "&&&&", " ", x.nombre clipped, COLUMN 45, de31a45 using "(((,(((,(((.##)", COLUMN 66, masde60 using "(((,(((,(((.##)", COLUMN 82, 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 IF tt45 IS NULL THEN LET tt45 = 0 END IF IF ttm60 IS NULL THEN LET ttm60 = 0 END IF IF ttsaldo IS NULL THEN LET ttsaldo = 0 END IF IF x.sec_cliente < 9000 THEN LET t45 = t45 + de31a45 LET tm60 = tm60 + masde60 LET tsaldo = tsaldo + total_saldo ELSE LET tt45 = tt45 + de31a45 LET ttm60 = ttm60 + masde60 LET ttsaldo = ttsaldo + total_saldo END IF LET de31a45 = 0 LET masde60 = 0 LET total_saldo = 0 ON LAST ROW SKIP 1 LINE PRINT COLUMN 5, "Total Clientes Locales -->", COLUMN 45, t45 using "(((,(((,(((.##)", COLUMN 66, tm60 using "(((,(((,(((.##)", COLUMN 82, tsaldo using "(((,(((,(((.##)" SKIP 1 LINE PRINT COLUMN 6, "Total Clientes Exterior -->", COLUMN 45, tt45 using "(((,(((,(((.##)", COLUMN 66, ttm60 using "(((,(((,(((.##)", COLUMN 82, ttsaldo using "(((,(((,(((.##)" LET tt45 = 0 LET ttm60 = 0 LET ttsaldo = 0 PRINT normal END REPORT