521 lines
16 KiB
Plaintext
521 lines
16 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : TEPRRP002
|
|
OBJETIVO : Estado De Cuentas
|
|
PROGRAMADOR : Ing. Juan F. Soto
|
|
FECHA REALIZACION : Junio 1, 1993
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "teprgb000.4gl"
|
|
|
|
DEFINE opt CHAR(1)
|
|
DEFINE prima DECIMAL(10,2)
|
|
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 selec4,selec5, selec6 CHAR(1500)
|
|
|
|
DEFINE tot_gen1 RECORD
|
|
totald DECIMAL(10,2),
|
|
totalc DECIMAL(10,2),
|
|
totalg DECIMAL(10,2)
|
|
END RECORD
|
|
|
|
DEFINE clientes RECORD
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
valor DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE mvtos RECORD
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
tipo_doc CHAR(2),
|
|
num_doc INTEGER,
|
|
fecha_doc DATE,
|
|
aplica_a INTEGER,
|
|
valor DECIMAL(10,2),
|
|
monto_desc LIKE cctb00001.monto_desc,
|
|
cliente CHAR(6) ,
|
|
balance DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
FUNCTION teprrp002()
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
OPEN FORM tefmrp002 FROM "tefmrp002"
|
|
DISPLAY FORM tefmrp002
|
|
CALL pantalla()
|
|
DISPLAY "teprrp002" AT 4,3 ATTRIBUTE(RED)
|
|
DISPLAY " Estado Cuentas " AT 6,32 ATTRIBUTE(BLACK)
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
CALL defecto(impresor) RETURNING imprime,letras.*,archivo
|
|
|
|
CONSTRUCT criterio ON a.tipo_cliente,a.sec_cliente FROM
|
|
tipo_cliente, sec_cliente
|
|
|
|
INPUT BY NAME prima,fecha_inicial,fecha_final
|
|
ON KEY(CONTROL-P)
|
|
CALL busca_printer() RETURNING imprime,letras.*,archivo
|
|
|
|
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 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
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
LET parametro = "D"
|
|
CALL elijeimpresion(parametro) RETURNING orden,destino,letras.*
|
|
# Busca Balances de los clientes
|
|
|
|
LET selec5 =
|
|
"SELECT a.tipo_cliente,a.sec_cliente,sum(a.valor+a.monto_desc) ",
|
|
"FROM cctb00001 a ",
|
|
"WHERE ",criterio clipped," AND a.status_t is null AND a.fecha_orig < ? ",
|
|
"GROUP BY 1,2 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 fecha_inicial
|
|
|
|
# Busca los documentos que esten en el rango de fechas especificado
|
|
|
|
LET selec4 =
|
|
"SELECT a.tipo_cliente, a.sec_cliente, a.tipo_doc, a.num_doc, ",
|
|
" a.fecha_orig, a.aplica_a, a.valor, a.monto_desc ",
|
|
"FROM cctb00001 a ",
|
|
"WHERE ",criterio clipped," AND a.status_t IS NULL AND ",
|
|
" a.fecha_orig between ? AND ? ",
|
|
"ORDER BY 1,2,6,5 "
|
|
|
|
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
|
|
ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
DISPLAY "<< Buscando los Movimientos del Rango >>" AT 20,14
|
|
ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
PREPARE movi FROM selec4
|
|
DECLARE mvtos_cli SCROLL CURSOR FOR movi
|
|
OPEN mvtos_cli USING fecha_inicial,fecha_final
|
|
|
|
DISPLAY " " AT 20,14
|
|
|
|
START REPORT report14 TO archivo
|
|
|
|
DISPLAY " " AT 19,14
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE)
|
|
|
|
|
|
LET idx_1 = 1
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_1 mvtos_cli INTO mvtos.*
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET salir = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET salir = "S"
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
FINISH REPORT report14
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_1 = idx_1 + 1
|
|
LET mvtos.cliente = mvtos.tipo_cliente using "&&",
|
|
mvtos.sec_cliente using "&&&&"
|
|
|
|
LET mvtos.balance = 0
|
|
LET idx_2 = 1
|
|
LET salir1 = "N"
|
|
WHILE salir1 != "S"
|
|
FETCH ABSOLUTE idx_2 c_balance INTO clientes.*
|
|
IF status = notfound THEN
|
|
LET idx_2 = 1
|
|
LET salir1 = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
|
|
LET idx_2 = idx_2 + 1
|
|
IF mvtos.tipo_cliente = clientes.tipo_cliente AND
|
|
mvtos.sec_cliente = clientes.sec_cliente THEN
|
|
|
|
LET idx_2 = 1
|
|
LET mvtos.balance = clientes.valor
|
|
EXIT WHILE
|
|
END IF
|
|
END WHILE
|
|
# DISPLAY mvtos.cliente AT 13,1
|
|
IF prima is not null THEN
|
|
LET mvtos.valor = mvtos.valor * prima
|
|
LET mvtos.monto_desc = mvtos.monto_desc * prima
|
|
LET mvtos.balance = mvtos.balance * prima
|
|
END IF
|
|
|
|
DISPLAY mvtos.cliente AT 21,20
|
|
DISPLAY mvtos.tipo_doc AT 21,35
|
|
DISPLAY mvtos.num_doc AT 21,38
|
|
|
|
OUTPUT TO REPORT report14(mvtos.*)
|
|
END WHILE
|
|
|
|
FINISH REPORT report14
|
|
#IF not int_flag THEN
|
|
# LET int_flag = false
|
|
# FINISH REPORT report14
|
|
PROMPT "Desea Imprimir Reporte [S/N].....?" FOR CHAR opt
|
|
|
|
LET opt = UPSHIFT(opt)
|
|
IF opt = "S" THEN
|
|
#RUN imprime
|
|
CALL fdestino(destino,archivo,imprime)
|
|
END IF
|
|
#END IF
|
|
|
|
CLEAR SCREEN
|
|
END FUNCTION
|
|
|
|
REPORT report14(x)
|
|
DEFINE x RECORD
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
tipo_doc CHAR(2),
|
|
num_doc INTEGER,
|
|
fecha_doc DATE,
|
|
aplica_a INTEGER,
|
|
valor DECIMAL(10,2),
|
|
monto_desc LIKE cctb00001.monto_desc,
|
|
cliente CHAR(6) ,
|
|
balance DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE dias SMALLINT
|
|
DEFINE p_calle,p_descrip CHAR(30)
|
|
DEFINE p_casa,p_zona,p_numero CHAR(10)
|
|
DEFINE hora CHAR(5)
|
|
DEFINE tipo CHAR(2)
|
|
DEFINE imp_cli CHAR(1)
|
|
DEFINE credito, debito, tcredito, tdebito, tbalance,
|
|
limite, b_balance, v1_30, v31_45, v46_60, vm_60,p_valor DECIMAL(12,2)
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 2
|
|
PAGE LENGTH 33
|
|
|
|
ORDER BY x.cliente,x.aplica_a,x.fecha_doc
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = time
|
|
|
|
PRINT COLUMN 1, letras.comp_on
|
|
# PRINT COLUMN 1, letras.doce, letras.negrillas_on
|
|
PRINT COLUMN 1, "teprrp002",
|
|
COLUMN 31, "R A Y - O - V A C D O M I N I C A N A, S. A.",
|
|
COLUMN 103, "Pag.",
|
|
COLUMN 108, pageno using "###"
|
|
PRINT COLUMN 43, "Sistema de Tesoreria",
|
|
COLUMN 101, today using "dd/mm/yyyy"
|
|
|
|
PRINT COLUMN 44, " Estado de Cuenta ",
|
|
COLUMN 106, hora
|
|
|
|
PRINT COLUMN 47, " Al ", fecha_final using "dd/mm/yyyy"
|
|
# , letras.negrillas_off
|
|
|
|
IF prima is null THEN
|
|
PRINT COLUMN 53, "RD$"
|
|
ELSE
|
|
PRINT COLUMN 53, "US$"
|
|
END IF
|
|
|
|
SKIP 1 LINES
|
|
|
|
BEFORE GROUP OF x.cliente
|
|
LET v1_30 = 0
|
|
LET v31_45 = 0
|
|
LET v46_60 = 0
|
|
LET vm_60 = 0
|
|
|
|
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 b.nombre,b.limite_credito,b.zona_postal,b.num_rnc,
|
|
c.calle,c.casa_num,d.descrip
|
|
INTO descrip1,limite,p_zona,p_numero,p_calle,p_casa,
|
|
p_descrip
|
|
FROM vetb00004 b ,vetb00005 c,vetb00008 d
|
|
WHERE x.tipo_cliente = b.tipo_cliente and
|
|
x.sec_cliente = b.sec_cliente and
|
|
b.tipo_cliente = c.tipo_cliente and
|
|
b.sec_cliente = c.sec_cliente and
|
|
b.cod_zona = d.cod_zona and
|
|
b.status_t is null
|
|
|
|
IF x.balance IS NULL THEN
|
|
LET x.balance = 0
|
|
END IF
|
|
|
|
IF limite IS NULL THEN
|
|
LET limite = 0
|
|
END IF
|
|
|
|
IF prima is not null THEN
|
|
PRINT COLUMN 1,"Prima: ", prima using "###.##"
|
|
END IF
|
|
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"-----------"
|
|
,letras.negrillas_on
|
|
|
|
PRINT COLUMN 1, "Cliente:",
|
|
COLUMN 10, x.tipo_cliente using "&&","-",
|
|
x.sec_cliente using "&&&&",
|
|
COLUMN 18, descrip1 clipped,
|
|
COLUMN 49, "Limite Credito",
|
|
COLUMN 64, limite using "####,###,###.##",
|
|
COLUMN 81, "Balance Al: ", fecha_inicial using "dd/mm/yyyy"
|
|
|
|
PRINT COLUMN 10, p_calle clipped," ",p_casa,
|
|
COLUMN 24, "RNC: ", p_numero,
|
|
COLUMN 91, x.balance using "####,###,###.##"
|
|
PRINT COLUMN 10, p_descrip,
|
|
COLUMN 22, "ZONA POSTAL: ",p_zona,letras.negrillas_off
|
|
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"-----------"
|
|
|
|
LET b_balance = x.balance
|
|
|
|
# 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
|
|
|
|
|
|
ON EVERY ROW
|
|
|
|
# IF x.fecha_doc >= fecha_inicial AND
|
|
# x.fecha_doc <= fecha_final THEN
|
|
{
|
|
SELECT UNIQUE tipo_doc
|
|
INTO tipo
|
|
FROM cctb00001
|
|
WHERE num_doc = x.num_doc #aplica_a
|
|
}
|
|
|
|
PRINT COLUMN 3, x.num_doc using "######",
|
|
COLUMN 12, x.tipo_doc,
|
|
COLUMN 16, x.fecha_doc using "dd/mm/yyyy",
|
|
COLUMN 28, x.aplica_a using "######",
|
|
COLUMN 39, tipo;
|
|
|
|
LET b_balance = b_balance + (x.valor + x.monto_desc)
|
|
|
|
IF x.valor >= 0 THEN
|
|
PRINT COLUMN 59, x.valor using "####,###,###.##",
|
|
COLUMN 97, b_balance using "####,###,###.##"
|
|
LET debito = debito + x.valor
|
|
ELSE
|
|
PRINT COLUMN 78, x.valor + x.monto_desc using "####,###,###.##",
|
|
COLUMN 97, b_balance using "####,###,###.##"
|
|
LET credito = credito + (x.valor + x.monto_desc)
|
|
END IF
|
|
|
|
# END IF
|
|
|
|
AFTER GROUP OF x.aplica_a
|
|
LET p_valor = GROUP SUM(x.valor+x.monto_desc)
|
|
|
|
IF p_valor > 0 THEN
|
|
|
|
LET dias = fecha_inicial - x.fecha_doc
|
|
|
|
IF dias < 31 THEN
|
|
LET v1_30 = p_valor + v1_30
|
|
END IF
|
|
|
|
IF dias > 30 and dias < 46 THEN
|
|
LET v31_45 = p_valor + v31_45
|
|
END IF
|
|
|
|
IF dias > 45 and dias < 61 THEN
|
|
LET v46_60 = p_valor + v46_60
|
|
END IF
|
|
|
|
IF dias > 60 THEN
|
|
LET vm_60 = vm_60 + p_valor
|
|
END IF
|
|
END IF
|
|
|
|
PAGE TRAILER
|
|
PRINT COLUMN 1, "ANALISIS POR ANTIGUEDAD",letras.negrillas_on,
|
|
COLUMN 33, "1 a 30",
|
|
COLUMN 47, "31 a 45",
|
|
COLUMN 59, "46 a 60",
|
|
COLUMN 70, "Mas de 60",letras.negrillas_off
|
|
|
|
PRINT COLUMN 1, "DE SU APRECIADA CUENTA: ",
|
|
COLUMN 26, v1_30 using "##,###,###.##",
|
|
COLUMN 41, v31_45 using "##,###,###.##",
|
|
COLUMN 51, v46_60 using "##,###,###.##",
|
|
COLUMN 61, vm_60 using "##,###,###.##"
|
|
|
|
PRINT COLUMN 1, "NOTA: LE ROGAMOS REVISAR ESTE ESTADO Y NOTIFICAR A NUESTRO ",
|
|
"DEPARTAMENTO DE CONTABILIDAD SOBRE CUALQUIER "
|
|
PRINT COLUMN 1, "DISCREPANCIA O REPARO, A LA MAYOR BREVEDAD POSIBLE."
|
|
PRINT COLUMN 1, "APRECIAMOS SU RESPUESTA, POR TANTO, QUEDAREMOS AGRADECIDOS"
|
|
," POR SU ATENCION, SERVANSE USAR LA COPIA DE ESTE ESTADO"
|
|
PRINT COLUMN 1, "PARA SU CONFIRMACION."
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 10, letras.negrillas_on,
|
|
"NOMENCLATURA: PG- PAGOS FT- FACTURAS ND- NOTA DE DEBITO NC- NOTA CREDITO",
|
|
" DE- DEVOLUCIONES",
|
|
letras.negrillas_off
|
|
{ AFTER GROUP OF x.cliente
|
|
|
|
IF imp_cli = "S" THEN
|
|
SKIP 1 LINE
|
|
PRINT
|
|
COLUMN 1, letras.negrillas_on,
|
|
COLUMN 27, "Total Cliente",
|
|
COLUMN 59, debito using "####,###,###.##",
|
|
COLUMN 78, credito using "####,###,###.##",
|
|
COLUMN 97, b_balance using "####,###,###.##"
|
|
|
|
PRINT COLUMN 59, "===============",
|
|
COLUMN 78, "===============",
|
|
COLUMN 97, "==============="
|
|
, letras.negrillas_off
|
|
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------" ,
|
|
"-----------"
|
|
|
|
LET tcredito = tcredito + credito
|
|
LET tdebito = tdebito + debito
|
|
LET tbalance = tbalance + b_balance
|
|
LET credito = 0
|
|
LET debito = 0
|
|
LET x.balance = 0
|
|
|
|
END IF}
|
|
|
|
{ ON LAST ROW
|
|
SKIP 1 LINE
|
|
PRINT
|
|
COLUMN 1, letras.negrillas_on,
|
|
COLUMN 27, "Total General",
|
|
COLUMN 59, tdebito using "####,###,###.##",
|
|
COLUMN 78, tcredito using "####,###,###.##",
|
|
COLUMN 97, tbalance using "####,###,###.##"
|
|
# , letras.negrillas_off
|
|
|
|
LET tot_gen1.totald = tdebito
|
|
LET tot_gen1.totalc = tcredito
|
|
LET tot_gen1.totalg = tbalance
|
|
|
|
|
|
PRINT normall
|
|
# PRINT normal }
|
|
|
|
END REPORT
|
|
|