Files

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