Files
MBS/PROYECTO/tedirbk/tedir/teprcs001.4gl
T

231 lines
7.0 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : TEPRCS001
OBJETIVO : Estado De Cuentas
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Junio 8, 1993
-------------------------------------------------------------------------------
}
GLOBALS "teprgb000.4gl"
DEFINE fecha DATE
DEFINE balance4,balance3,p_valor,p_monto DECIMAL(12,2)
DEFINE mov CHAR(1)
DEFINE pcasa,pcalle,pbarrio CHAR(20)
DEFINE provincia CHAR(3)
DEFINE tipo CHAR(1)
DEFINE idx_1, idx_2, idx_3 SMALLINT
DEFINE salir, salir1, salir3, tipo_venta CHAR(1)
DEFINE selec5, selec6 CHAR(1500)
DEFINE cuenta1 RECORD
fecha_inicial DATE,
fecha_final DATE,
tipo_cliente LIKE cctb00001.tipo_cliente,
sec_cliente LIKE cctb00001.sec_cliente,
nombre LIKE vetb00004.nombre,
direccion CHAR(60),
ciudad CHAR(60),
limite DECIMAL(12,2),
prima DECIMAL(5,2),
balance DECIMAL(12,2)
END RECORD
DEFINE cuenta2 ARRAY[500] OF RECORD
num_doc LIKE cctb00001.num_doc,
tipo_doc LIKE cctb00001.tipo_doc,
fecha_orig LIKE cctb00001.fecha_orig,
aplica_a LIKE cctb00001.aplica_a,
debito DECIMAL(12,2),
credito DECIMAL(12,2),
balance1 DECIMAL(12,2)
END RECORD
DEFINE apartado CHAR(30)
DEFINE busca_d RECORD
num_doc LIKE cctb00001.num_doc,
tipo_doc LIKE cctb00001.tipo_doc,
fecha_orig LIKE cctb00001.fecha_orig,
aplica_a LIKE cctb00001.aplica_a,
valor DECIMAL(12,2)
END RECORD
FUNCTION teprcs001()
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM tefmcs001 FROM "tefmcs001"
DISPLAY FORM tefmcs001
CALL pantalla()
DISPLAY "teprcs001" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Estado Cuentas " AT 6,32ATTRIBUTE(BLACK)
LABEL volvera:
INPUT BY NAME cuenta1.*
AFTER FIELD fecha_inicial
IF cuenta1.fecha_inicial is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_inicial
END IF
BEFORE FIELD fecha_final
LET cuenta1.fecha_final = today
AFTER FIELD fecha_final
IF cuenta1.fecha_final is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
IF cuenta1.fecha_final < cuenta1.fecha_inicial THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
AFTER FIELD tipo_cliente
IF cuenta1.tipo_cliente IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
AFTER FIELD sec_cliente
IF cuenta1.sec_cliente IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sec_cliente
END IF
SELECT UNIQUE ventas INTO tipo FROM vetb00002 WHERE
tipo_cliente = cuenta1.tipo_cliente AND
sec_cliente = cuenta1.sec_cliente
SELECT nombre,cod_provincia,zona_postal,limite_credito
INTO cuenta1.nombre,provincia,apartado,cuenta1.limite
FROM vetb00004
WHERE tipo_cliente = cuenta1.tipo_cliente AND
sec_cliente = cuenta1.sec_cliente AND
status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
DISPLAY BY NAME cuenta1.nombre,cuenta1.limite
SELECT calle,casa_num,barrio INTO pcalle,pcasa,pbarrio
FROM vetb00005 WHERE tipo_cliente = cuenta1.tipo_cliente AND
sec_cliente = cuenta1.sec_cliente
LET cuenta1.direccion = pcalle clipped," ",pcasa clipped,", ",pbarrio clipped
DISPLAY BY NAME cuenta1.direccion
IF tipo = 1 THEN
SELECT nombre_provincia INTO cuenta1.ciudad FROM vetb00020
WHERE cod_provincia = provincia
ELSE
SELECT nom_pais INTO cuenta1.ciudad FROM cotb00018
WHERE cod_pais = provincia
END IF
LET cuenta1.ciudad = cuenta1.ciudad clipped," ",apartado clipped
DISPLAY BY NAME cuenta1.ciudad
DISPLAY BY NAME cuenta1.limite
AFTER FIELD prima
DISPLAY "Buscando Balance Inicial... Espere" AT 23,1 ATTRIBUTE (BOLD)
SELECT sum(a.valor+a.monto_desc)
INTO cuenta1.balance
FROM cctb00001 a
WHERE
a.status_t is null
and a.fecha_orig < cuenta1.fecha_inicial
and a.tipo_cliente = cuenta1.tipo_cliente
and a.sec_cliente = cuenta1.sec_cliente
IF cuenta1.balance IS NULL THEN
LET cuenta1.balance = 0
END IF
IF STATUS = NOTFOUND THEN
LET cuenta1.balance = 0
END IF
IF cuenta1.prima is not null THEN
LET cuenta1.balance = cuenta1.balance * cuenta1.prima
END IF
DISPLAY " " AT 23,1 ATTRIBUTE (BOLD)
LET fecha = cuenta1.fecha_inicial
DISPLAY BY NAME cuenta1.balance
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
DECLARE buscar CURSOR FOR
SELECT a.num_doc,a.tipo_doc,a.fecha_orig,a.aplica_a,a.valor+a.monto_desc
FROM cctb00001 a WHERE a.status_t IS NULL AND
a.tipo_cliente = cuenta1.tipo_cliente AND
a.sec_cliente = cuenta1.sec_cliente AND
a.fecha_orig BETWEEN cuenta1.fecha_inicial AND cuenta1.fecha_final
ORDER BY 4,3
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 24,14
ATTRIBUTE (REVERSE,BOLD)
LET idx_1 = 1
DISPLAY " " AT 24,14
FOREACH buscar INTO busca_d.*
LET cuenta2[idx_1].num_doc = busca_d.num_doc
LET cuenta2[idx_1].tipo_doc = busca_d.tipo_doc
LET cuenta2[idx_1].aplica_a = busca_d.aplica_a
LET cuenta2[idx_1].fecha_orig = busca_d.fecha_orig using "dd/mm/yyyy"
IF cuenta1.prima is not null THEN
LET busca_d.valor = busca_d.valor * cuenta1.prima
END IF
IF busca_d.valor < 0 THEN
LET cuenta1.balance = cuenta1.balance + busca_d.valor
LET cuenta2[idx_1].balance1 = cuenta1.balance
LET cuenta2[idx_1].credito = busca_d.valor
LET cuenta2[idx_1].debito = 0
ELSE
LET cuenta2[idx_1].debito = busca_d.valor
LET cuenta1.balance = cuenta1.balance + busca_d.valor
LET cuenta2[idx_1].balance1 = cuenta1.balance
LET cuenta2[idx_1].credito = 0
END IF
LET idx_1 = idx_1 + 1
END FOREACH
CALL SET_COUNT(idx_1 - 1)
DISPLAY ARRAY cuenta2 TO cuenta.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
CLEAR FORM
GOTO volvera
END FUNCTION