Files
MBS/PROYECTOS/isdir/isprmt005.4gl
T

344 lines
10 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : ISPRMT005
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Tipos de Movimientos.
PROGRAMADOR : Ing. Juan Soto
FECHA REALIZACION : Octubre 21, 1992.
------------------------------------------------------------------
}
GLOBALS "isprgb000.4gl"
FUNCTION isprmt005()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM isfmmt005 FROM "isfmmt005"
DISPLAY FORM isfmmt005
CALL pantalla()
DISPLAY "isprmt005" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Tipos de Movimientos" AT 6,30 ATTRIBUTE(BLACK)
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Supr> Cancela Operacion"
let int_flag = false
CLEAR FORM
let int_flag = false
CALL ispcad005()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Supr> Cancela Operacion"
CALL ispcmf005()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION ispcad005()
## Captura los datos que va a contener el registro
WHENEVER ERROR CONTINUE
INPUT BY NAME transacc.*
## Verifica que el codigo no exista en el catalogo de transacciones. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD cod_mov
IF transacc.cod_mov = 0 OR
transacc.cod_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_mov
ELSE
SELECT * INTO transacc.* FROM istb00005
WHERE cod_mov = transacc.cod_mov
IF status >= 0 THEN
IF STATUS != NOTFOUND THEN
IF transacc.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
DISPLAY BY NAME transacc.*
LET numero_msg = 12
CALL msg(numero_msg)
LET transacc.descrip_mov = NULL
LET transacc.status_mov = NULL
LET transacc.cuenta_1 = NULL
LET transacc.cuenta_2 = NULL
LET transacc.cuenta_3 = NULL
NEXT FIELD cod_mov
END IF
ELSE
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end if
END IF
END IF
AFTER FIELD descrip_mov
IF transacc.descrip_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip_mov
END IF
AFTER FIELD cuenta_1
IF transacc.cuenta_1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cuenta_1
END IF
AFTER FIELD cuenta_2
IF transacc.cuenta_2 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cuenta_2
END IF
# IF transacc.cuenta_1 = transacc.cuenta_2 THEN
# LET numero_msg = 24
# CALL msg(numero_msg)
# NEXT FIELD cuenta_2
# END IF
AFTER FIELD cuenta_3
IF (transacc.cuenta_3 = transacc.cuenta_1) OR
(transacc.cuenta_3 = transacc.cuenta_2) THEN
LET numero_msg = 24
CALL msg(numero_msg)
NEXT FIELD cuenta_3
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF transacc.descrip_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip_mov
ELSE
INSERT INTO istb00005 VALUES (transacc.cod_mov,
transacc.descrip_mov, transacc.status_mov,
transacc.cuenta_1, transacc.cuenta_2,
transacc.cuenta_3, null,USER, CURRENT, null, null)
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end if
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
LET transacc.cod_mov = NULL
LET transacc.descrip_mov = NULL
LET transacc.status_mov = NULL
LET transacc.cuenta_1 = NULL
LET transacc.cuenta_2 = NULL
LET transacc.cuenta_3 = NULL
NEXT FIELD cod_mov
END IF
AFTER FIELD fech_mod
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION ispcmf005()
## Aqui se prepara para la captura del criterio de seleccion
WHENEVER ERROR CONTINUE
CONSTRUCT BY NAME criterio ON istb00005.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE * FROM istb00005 where ",
" status_t is null and ",
criterio clipped,
" ORDER BY 1"
PREPARE busca FROM selec
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end if
DECLARE datos SCROLL CURSOR WITH HOLD FOR busca
OPEN datos
FETCH FIRST datos INTO transacc.*
IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
ELSE
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end if
END IF
DISPLAY BY NAME transacc.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO transacc.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end if
DISPLAY BY NAME transacc.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO transacc.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end if
DISPLAY BY NAME transacc.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO transacc.*
DISPLAY BY NAME transacc.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO transacc.*
DISPLAY BY NAME transacc.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Supr> Cancela Operacion"
INPUT BY NAME transacc.descrip_mov,
transacc.status_mov,
transacc.cuenta_1,
transacc.cuenta_2,
transacc.cuenta_3,
transacc.us_crea,
transacc.fech_crea,
transacc.us_mod,
transacc.fech_mod WITHOUT DEFAULTS
AFTER FIELD descrip_mov
IF transacc.descrip_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip_mov
END IF
AFTER FIELD cuenta_1
IF transacc.cuenta_1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cuenta_1
END IF
AFTER FIELD cuenta_2
IF transacc.cuenta_2 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cuenta_2
END IF
IF transacc.cuenta_1 = transacc.cuenta_2 THEN
LET numero_msg = 24
CALL msg(numero_msg)
NEXT FIELD cuenta_2
END IF
AFTER FIELD cuenta_3
IF (transacc.cuenta_3 = transacc.cuenta_1) OR
(transacc.cuenta_3 = transacc.cuenta_2) THEN
LET numero_msg = 24
CALL msg(numero_msg)
NEXT FIELD cuenta_3
END IF
AFTER INPUT
#### Verifica si el usuario presiono la tecla <Supr>
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
UPDATE istb00005 SET descrip_mov = transacc.descrip_mov,
status_mov = transacc.status_mov,
cuenta_1 = transacc.cuenta_1,
cuenta_2 = transacc.cuenta_2,
cuenta_3 = transacc.cuenta_3,
us_mod = USER,
fech_mod = CURRENT
WHERE cod_mov = transacc.cod_mov
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end if
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE istb00005 SET status_t = "E"
WHERE cod_mov = transacc.cod_mov
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION