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

220 lines
5.9 KiB
Plaintext

{
------------------------------------------------------------------------------
PROGRAMA : CGPRMT010
OBJETIVO : Mantenimiento de Entradas de diario
PROGRAMADOR : Ing. Juan F. Soto
FECHA REALIZACION : Octubre 13, 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 cgprmt010()
END MAIN
FUNCTION cgprmt010()
OPTIONS
FORM LINE 9,
ERROR LINE 24,
COMMENT LINE 23
#CALL pantalla()
OPEN FORM cgfmmt010 FROM "cgfmmt010"
DISPLAY FORM cgfmmt010
CLEAR FORM
DISPLAY "cgprmt010" AT 4,3
DISPLAY "Maestra Entradas de Diario" AT 6,27
MENU "OPCION"
COMMAND "Adicionar" "<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion"
LET int_flag = false
CALL cgpcad10()
COMMAND "Consultar-modificar"
"<Esc> Busca Registro <Ctrl-C> Cancela Operacion"
CALL cgpcmod10()
COMMAND "Salir"
EXIT MENU
END MENU
END FUNCTION
FUNCTION cgpcad10()
# Captura de informacion
INITIALIZE entradas.* TO NULL
INPUT BY NAME entradas.* WITHOUT DEFAULTS ATTRIBUTE (BOLD)
AFTER FIELD entrada_no
IF entradas.entrada_no is not null THEN
SELECT * INTO entradas.* FROM cgtb00011
WHERE entrada_no = entradas.entrada_no and status_t is null
# Chequeo del registro si esta eliminado
IF status != notfound THEN
IF entradas.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD entrada_no
END IF
END IF
# Chequeo si el registro existe, si existe desplega las informaciones
IF status != notfound THEN
LET numero_msg = 12
CALL msg(numero_msg)
DISPLAY BY NAME entradas.entrada_no,entradas.descripcion,
entradas.prog_4gl
INITIALIZE entradas.* TO NULL
NEXT FIELD entrada_no
END IF
DISPLAY BY NAME entradas.descripcion
ELSE
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD entrada_no
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
INSERT INTO cgtb00011 values
(entradas.entrada_no,entradas.descripcion,
entradas.prog_4gl,entradas.referencia,
null,SUSER_SNAME(),GETDATE(),null,null)
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET numero_msg = 1
CALL msg(numero_msg)
INITIALIZE entradas.* TO NULL
CLEAR FORM
NEXT FIELD entrada_no
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION cgpcmod10()
# Captura del criterio de seleccion
CONSTRUCT BY NAME criterio ON cgtb00011.*
LET selec2 =
"SELECT * FROM cgtb00011 WHERE ",criterio clipped," and status_t is null ",
" ORDER BY 1"
PREPARE comando FROM selec2
DECLARE busca SCROLL CURSOR FOR comando
OPEN busca
FETCH FIRST busca INTO entradas.*
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
DISPLAY BY NAME entradas.*
MENU "OPCION"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT busca INTO entradas.*
IF status = notfound THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME entradas.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS busca INTO entradas.*
IF status = notfound THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME entradas.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST busca INTO entradas.*
LET numero_msg = 5
CALL msg(numero_msg)
DISPLAY BY NAME entradas.*
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH FIRST busca INTO entradas.*
LET numero_msg = 4
CALL msg(numero_msg)
DISPLAY BY NAME entradas.*
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
IF entradas.status_t = "E" THEN
LET numero_msg = 39
CALL msg(numero_msg)
RETURN
END IF
INPUT BY NAME entradas.* WITHOUT DEFAULTS ATTRIBUTE (BOLD)
BEFORE FIELD entrada_no
NEXT FIELD descripcion
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF entradas.descripcion is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descripcion
END IF
EXIT INPUT
END INPUT
UPDATE cgtb00011 set descripcion = entradas.descripcion,
prog_4gl = entradas.prog_4gl,
referencia = entradas.referencia
WHERE entrada_no = entradas.entrada_no
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY("L") "eLiminar"
UPDATE cgtb00011 set status_t = "E"
WHERE entrada_no = entradas.entrada_no
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
EXIT MENU
END MENU
END FUNCTION