Files

297 lines
9.1 KiB
Plaintext

{
-------------------------------------------------------------------------------
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