232 lines
6.2 KiB
Plaintext
232 lines
6.2 KiB
Plaintext
{
|
|
-----------------------------------------------------------------------------
|
|
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 "<CTRL-C> 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
|
|
|