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