299 lines
9.5 KiB
Plaintext
299 lines
9.5 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
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
|
|
|