{ ----------------------------------------------------------------------------- PROGRAMA : CGPRCS002 OBJETIVO : Consulta de Transaciones REALIZADO POR : Ing. Tadeo A. Ferreras FECHA : Febrero 22, 1994. ----------------------------------------------------------------------------- } GLOBALS "cgprgb000.4gl" DEFINE balance2 DECIMAL(12,2) DEFINE cuenta1 RECORD fecha DATE, ref CHAR(14), cod_aux SMALLINT, cod_sec SMALLINT, departamento SMALLINT, debito DECIMAL(12,2), credito DECIMAL(12,2) END RECORD DEFINE cuenta2 DYNAMIC ARRAY OF RECORD fecha DATE, detalle CHAR(23), departamento SMALLINT, debito DECIMAL(12,2), credito DECIMAL(12,2), balance1 DECIMAL(12,2) END RECORD DEFINE recibo1 RECORD cuenta_no CHAR(8), descripcion CHAR(30), balance DECIMAL(12,2) END RECORD DEFINE fecha1,fecha2 DATE MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_compania.* FROM companias a CALL cgprcs002() END MAIN ###### Funcion que adiciona informacion referente a la aplicacion de un pago FUNCTION cgprcs002() DEFINE porc_p DECIMAL(10,2) DEFINE emp SMALLINT DEFINE hoy DATE OPTIONS FORM LINE 8, ERROR LINE 24, COMMENT LINE 22, PROMPT LINE 23 CALL pantalla() OPEN FORM cgfmcs002 FROM "cgfmcs002" DISPLAY FORM cgfmcs002 DISPLAY "cgprcs002" AT 4,3 DISPLAY "Transacciones" AT 6,33 DISPLAY " CANCELA OPERACION" AT 2,5 ATTRIBUTE (BOLD) LET int_flag = FALSE INPUT BY NAME fecha1,fecha2 AFTER FIELD fecha1 IF fecha1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha1 END IF AFTER FIELD fecha2 IF fecha2 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha2 END IF IF fecha1 > fecha2 THEN LET numero_msg = 149 CALL msg(numero_msg) NEXT FIELD fecha1 END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT criterio ON a.cuenta_no FROM cuenta_no IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET selec = "SELECT UNIQUE a.cuenta_no,b.descripcion ", "FROM cgtb00004 a,cgtb00001 b ", "WHERE a.cuenta_no = b.cuenta_no AND a.status_t IS NULL AND ", " b.status_t IS NULL AND a.fecha BETWEEN ? AND ? AND ", criterio CLIPPED," ORDER BY 1 " PREPARE comando FROM selec DECLARE busca SCROLL CURSOR FOR comando OPEN busca USING fecha1,fecha2 FETCH FIRST busca INTO recibo1.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL buscando() MENU "Opcion" COMMAND "Siguiente" FETCH NEXT busca INTO recibo1.* IF STATUS = NOTFOUND THEN FETCH LAST busca INTO recibo1.* CALL buscando() LET numero_msg = 5 CALL msg(numero_msg) END IF CALL buscando() COMMAND "Anterior" FETCH PREVIOUS busca INTO recibo1.* IF STATUS = NOTFOUND THEN FETCH FIRST busca INTO recibo1.* CALL buscando() LET numero_msg = 5 CALL msg(numero_msg) END IF CALL buscando() COMMAND "Primero" FETCH FIRST busca INTO recibo1.* CALL buscando() LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Ultimo" FETCH LAST busca INTO recibo1.* CALL buscando() LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Ver" DECLARE busca1 SCROLL CURSOR FOR SELECT a.fecha,a.ref,a.cod_aux,a.cod_sec,a.departamento, a.debito,a.credito FROM cgtb00004 a WHERE a.fecha BETWEEN fecha1 AND fecha2 AND a.status_t IS NULL AND a.cuenta_no = recibo1.cuenta_no ORDER BY 1,2 OPEN busca1 LET balance2 = recibo1.balance LET idx = 1 WHILE STATUS != NOTFOUND FETCH ABSOLUTE idx busca1 INTO cuenta1.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF IF cuenta1.debito IS NULL THEN LET cuenta1.debito = 0 END IF IF cuenta1.credito IS NULL THEN LET cuenta1.credito = 0 END IF LET cuenta2[idx].fecha = cuenta1.fecha LET cuenta2[idx].detalle = cuenta1.ref," ", cuenta1.cod_aux USING "&&","-", cuenta1.cod_sec USING "&&&&" LET cuenta2[idx].departamento = cuenta1.departamento LET cuenta2[idx].debito = cuenta1.debito LET cuenta2[idx].credito = cuenta1.credito LET cuenta2[idx].balance1 = balance2 + (cuenta2[idx].debito - cuenta2[idx].credito) LET balance2 = cuenta2[idx].balance1 LET idx = idx + 1 END WHILE CALL SET_COUNT(idx - 1) DISPLAY ARRAY cuenta2 TO s_cuenta2.* LET curr = arr_curr() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF COMMAND "Retornar" EXIT MENU END MENU END FUNCTION FUNCTION buscando() SELECT SUM(a.debito-a.credito) INTO recibo1.balance FROM cgtb00004 a WHERE a.cuenta_no = recibo1.cuenta_no AND a.status_t IS NULL AND a.fecha < fecha1 IF recibo1.balance IS NULL THEN LET recibo1.balance = 0 END IF DISPLAY BY NAME recibo1.* END FUNCTION