Files
MBS/PROYECTO/cgdir/cgprcs001.4gl
T

230 lines
6.2 KiB
Plaintext

{
-----------------------------------------------------------------------------
PROGRAMA : CGPRCS001
OBJETIVO : Consulta de Cheques de pago
REALIZADO POR : Juan Fco Soto
FECHA : Mayo 26, 1993.
-----------------------------------------------------------------------------
}
GLOBALS "cgprgb000.4gl"
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 cgprcs001()
END MAIN
###### Funcion que adiciona informacion referente a la aplicacion de un pago
FUNCTION cgprcs001()
OPTIONS
FORM LINE 8,
ERROR LINE 24,
COMMENT LINE 22,
PROMPT LINE 23
CALL pantalla()
OPEN FORM cgfmcs001 FROM "cgfmcs001"
DISPLAY FORM cgfmcs001
DISPLAY "cgprcs001" AT 4,3
DISPLAY "Registro de Cheques" AT 6,30
MENU "Cons."
COMMAND "Consultar"
"Presione ESC Para Buscar Informacion Ctrl-C Para Cancelar "
LET int_flag = FALSE
CALL cgmod001()
COMMAND "Salir"
LET int_flag = FALSE
EXIT MENU
END MENU
END FUNCTION
FUNCTION cgmod001()
CLEAR FORM
CONSTRUCT criterio ON a.cheque_no,a.cuenta_no,a.portador
FROM numero,cuenta_p,nom_sup
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET selec_p =
"SELECT UNIQUE 'CK',a.cuenta_no,a.cheque_no,0,0,a.portador, ",
" a.fecha,a.tasa,a.monto,c.codigo,' ' ",
"FROM cgtb00005 a,outer tetb00006 c ",
"WHERE (a.status_t IS NULL OR a.status_t='C') AND a.cheque_no=c.cheque_no and ",
" a.cuenta_no = c.banco AND ",criterio CLIPPED,
" ORDER BY 3 "
PREPARE comando FROM selec_p
DECLARE accion5 SCROLL CURSOR FOR comando
OPEN accion5
FETCH FIRST accion5 INTO recibo.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
LET referencia = "CK.",recibo.numero USING "&&&&&&"
SELECT UNIQUE a.detalle_1,a.detalle_2 INTO detalle_1,detalle_2
FROM cgtb00004 a
WHERE a.ref = referencia AND (a.status_t IS NULL OR a.status_t = 'C') AND
a.cuenta_no = recibo.cuenta_p
CALL procede()
DISPLAY BY NAME recibo.*,p_descrip
MENU "Consulta"
COMMAND "Primero"
FETCH FIRST accion5 INTO recibo.*
LET referencia = "CK.",recibo.numero USING "&&&&&&"
SELECT UNIQUE a.detalle_1,a.detalle_2 INTO detalle_1,detalle_2
FROM cgtb00004 a
WHERE a.ref = referencia AND a.status_t IS NULL AND
a.cuenta_no = recibo.cuenta_p
CALL procede()
DISPLAY BY NAME recibo.*,p_descrip
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Siguiente"
FETCH NEXT accion5 INTO recibo.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
SELECT UNIQUE a.detalle_1,a.detalle_2 INTO detalle_1,detalle_2
FROM cgtb00004 a
WHERE (a.ref = referencia) AND
(a.cuenta_no = recibo.cuenta_p)
CALL procede()
DISPLAY BY NAME recibo.*,p_descrip
COMMAND "Anterior"
FETCH PREVIOUS accion5 INTO recibo.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
LET referencia = "CK.",recibo.numero USING "&&&&&&"
SELECT UNIQUE a.detalle_1,a.detalle_2 INTO detalle_1,detalle_2
FROM cgtb00004 a
WHERE a.ref = referencia AND
a.cuenta_no = recibo.cuenta_p
CALL procede()
DISPLAY BY NAME recibo.*,p_descrip
COMMAND "Ultimo"
FETCH LAST accion5 INTO recibo.*
LET referencia = "CK.",recibo.numero USING "&&&&&&"
SELECT UNIQUE a.detalle_1,a.detalle_2
INTO detalle_1,detalle_2
FROM cgtb00004 a
WHERE a.ref = referencia AND
a.cuenta_no = recibo.cuenta_p
CALL procede()
DISPLAY BY NAME recibo.*,p_descrip
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Ver"
"Ver Informacion de las Cuentas Contables o Transacciones Cuentas por Pagar"
####### Creando la facilidad para cancelar proceso mediante DELETE o SUPR
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET numero1 = recibo.numero USING "<<<<<<<"
DECLARE buscara CURSOR FOR
SELECT b.tipo,b.orden_no,b.aplica_a,b.valor*-1,b.valor*-1
FROM cptb00001 b
WHERE b.status_t IS NULL AND b.num_doc = numero1 AND
b.tipo_doc = recibo.tipo_doc AND
b.cta_ctble = recibo.cuenta_p
LET idx = 1
LET i = 0
FOREACH buscara INTO arr_recibo[idx].*
LET arr_recibo[idx].valor_pen = 0
LET idx = idx + 1
LET i = i + 1
END FOREACH
CALL SET_COUNT(idx -1)
IF i = 0 THEN
LET existe = "N"
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
IF idx > 1 THEN
DISPLAY ARRAY arr_recibo TO s_recibo.*
END IF
LET referencia = "CK.",recibo.numero USING "&&&&&&"
DECLARE buscara1 CURSOR FOR
SELECT c.cuenta_no,c.departamento,c.cod_aux,c.cod_sec,c.num_doc,d.descripcion,
c.debito,c.credito
FROM cgtb00004 c,cgtb00001 d
WHERE c.cuenta_no = d.cuenta_no AND c.ref = referencia AND
c.detalles LIKE recibo.cuenta_p AND
d.status_t IS NULL AND c.cuenta_no NOT IN (recibo.cuenta_p)
LET idx = 1
FOREACH buscara1 INTO arr_cuenta1[idx].*
LET idx = idx + 1
END FOREACH
CALL SET_COUNT(idx - 1)
DISPLAY ARRAY arr_cuenta1 TO s_cuenta.*
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
# Funcion para buscar la descripcion de la procedencia
FUNCTION procede()
SELECT descripcion INTO p_descrip FROM tetb00003
WHERE @codigo = recibo.codigo
DISPLAY BY NAME p_descrip
END FUNCTION