258 lines
7.5 KiB
Plaintext
258 lines
7.5 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : TEPRCS002
|
|
OBJETIVO : Estado De Cuentas del Suplidor
|
|
PROGRAMADOR : Tadeo A. Ferreras
|
|
FECHA REALIZACION : Junio 16, 1993
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "teprgb000.4gl"
|
|
|
|
DEFINE fecha DATE
|
|
DEFINE balance4,balance3,p_valor,p_monto DECIMAL(12,2)
|
|
DEFINE mov CHAR(1)
|
|
DEFINE direccion CHAR(30)
|
|
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,
|
|
cod_sp LIKE cptb00001.cod_sp,
|
|
cod_sp_sec LIKE cptb00001.cod_sp_sec,
|
|
nom_sp LIKE cotb00001.nom_sp,
|
|
direccion CHAR(30),
|
|
ciu_sp CHAR(30),
|
|
prima DECIMAL(5,2),
|
|
balance DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE cuenta11 RECORD
|
|
fecha_inicial DATE,
|
|
fecha_final DATE,
|
|
cod_sp LIKE cptb00001.cod_sp,
|
|
cod_sp_sec LIKE cptb00001.cod_sp_sec,
|
|
nom_sp LIKE cotb00001.nom_sp,
|
|
direccion CHAR(30),
|
|
ciu_sp CHAR(30),
|
|
prima DECIMAL(5,2),
|
|
balance DECIMAL(12,2)
|
|
END RECORD
|
|
DEFINE cuenta2 ARRAY[500] OF RECORD
|
|
num_doc LIKE cptb00001.num_doc,
|
|
tipo_doc LIKE cptb00001.tipo_doc,
|
|
fecha_orig LIKE cptb00001.fecha_orig,
|
|
aplica_a CHAR(13),
|
|
debito DECIMAL(12,2),
|
|
credito DECIMAL(12,2),
|
|
balance1 DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE cuenta3 ARRAY[500] OF RECORD
|
|
num_doc LIKE cptb00001.num_doc,
|
|
tipo_doc LIKE cptb00001.tipo_doc,
|
|
fecha_orig LIKE cptb00001.fecha_orig,
|
|
aplica_a CHAR(13),
|
|
debito DECIMAL(12,2),
|
|
credito DECIMAL(12,2),
|
|
balance1 DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE busca_d RECORD
|
|
num_doc LIKE cptb00001.num_doc,
|
|
tipo_doc LIKE cptb00001.tipo_doc,
|
|
fecha_orig LIKE cptb00001.fecha_orig,
|
|
aplica_a LIKE cptb00001.aplica_a,
|
|
valor DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
FUNCTION teprcs002()
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
OPEN FORM tefmcs002 FROM "tefmcs002"
|
|
DISPLAY FORM tefmcs002
|
|
CALL pantalla()
|
|
DISPLAY "teprcs002" AT 4,3 ATTRIBUTE(RED)
|
|
DISPLAY "Estado de Cuenta del Suplidor" AT 6,25 ATTRIBUTE(BLACK)
|
|
|
|
LABEL volvera:
|
|
INPUT BY NAME cuenta1.* WITHOUT DEFAULTS
|
|
|
|
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 cod_sp
|
|
IF cuenta1.cod_sp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
AFTER FIELD cod_sp_sec
|
|
IF cuenta1.cod_sp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp_sec
|
|
END IF
|
|
|
|
|
|
SELECT a.nom_sp,a.dir_sp,a.ciu_sp
|
|
INTO cuenta1.nom_sp,cuenta1.direccion,cuenta1.ciu_sp
|
|
FROM cotb00001 a
|
|
WHERE a.cod_sp = cuenta1.cod_sp AND
|
|
a.cod_sp_sec = cuenta1.cod_sp_sec AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
DISPLAY BY NAME cuenta1.nom_sp,cuenta1.direccion,cuenta1.ciu_sp
|
|
|
|
BEFORE FIELD prima
|
|
|
|
DISPLAY "Buscando Balance Inicial... Espere" AT 23,1 ATTRIBUTE (BOLD)
|
|
|
|
SELECT sum(a.valor)
|
|
INTO cuenta1.balance
|
|
FROM cptb00001 a
|
|
WHERE
|
|
a.status_t is null
|
|
and a.fecha_orig < cuenta1.fecha_inicial
|
|
and a.cod_sp = cuenta1.cod_sp
|
|
and a.cod_sp_sec = cuenta1.cod_sp_sec
|
|
|
|
IF cuenta1.balance IS NULL THEN
|
|
LET cuenta1.balance = 0
|
|
END IF
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET cuenta1.balance = 0
|
|
END IF
|
|
|
|
AFTER FIELD prima
|
|
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
|
|
AFTER INPUT
|
|
|
|
IF cuenta1.cod_sp = 23 THEN
|
|
LET cuenta1.prima = null
|
|
EXIT INPUT
|
|
DISPLAY BY NAME cuenta1.prima
|
|
END IF
|
|
|
|
LET cuenta11.* = cuenta1.*
|
|
EXIT INPUT
|
|
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
|
|
FROM cptb00001 a WHERE a.status_t IS NULL AND
|
|
a.cod_sp = cuenta1.cod_sp AND
|
|
a.cod_sp_sec = cuenta1.cod_sp_sec 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].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.tipo_doc = "CP" AND busca_d.aplica_a IS NOT NULL THEN
|
|
LET busca_d.valor = 0
|
|
END IF
|
|
|
|
IF busca_d.valor <> 0 THEN
|
|
IF busca_d.valor > 0 THEN
|
|
LET cuenta2[idx_1].credito = busca_d.valor * -1 USING "###,###,###.##"
|
|
LET cuenta2[idx_1].debito = 0
|
|
END IF
|
|
IF busca_d.valor < 0 THEN
|
|
LET cuenta2[idx_1].debito = busca_d.valor * -1 USING "###,###,###.##"
|
|
LET cuenta2[idx_1].credito = 0
|
|
END IF
|
|
IF cuenta1.balance IS NULL THEN
|
|
LET cuenta1.balance = 0
|
|
END IF
|
|
LET cuenta1.balance = cuenta1.balance + busca_d.valor
|
|
LET cuenta2[idx_1].balance1 = cuenta1.balance USING "###,###,###.##"
|
|
|
|
IF busca_d.aplica_a IS NULL THEN
|
|
SELECT UNIQUE orden_no INTO busca_d.aplica_a FROM cptb00001
|
|
WHERE tipo_doc = cuenta2[idx_1].tipo_doc AND
|
|
num_doc = cuenta2[idx_1].num_doc AND
|
|
valor = busca_d.valor
|
|
LET cuenta2[idx_1].aplica_a = "OC-",busca_d.aplica_a clipped
|
|
ELSE
|
|
LET cuenta2[idx_1].aplica_a = "FT-",busca_d.aplica_a clipped
|
|
END IF
|
|
|
|
LET idx_1 = idx_1 + 1
|
|
END IF
|
|
|
|
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
|
|
|