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