Files
MBS/PROYECTO/codir/coprmt014.4gl
T

260 lines
6.9 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : COPRMT014
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Compania Aseguradora
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : AGOSTO 1997
DIRECTOR DE PROYECTO : JOSE ALFREDO PAULINO ALEJO
-------------------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
FUNCTION coprmt014()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM cofmmt014 FROM "cofmmt014"
DISPLAY FORM cofmmt014
CALL pantalla()
DISPLAY "coprmt014" AT 4,3
DISPLAY "Companias Aseguradoras" AT 6,29
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Delete> Cancela Operacion"
CLEAR FORM
LET int_flag = false
CALL copcad014()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Delete> Cancela Operacion"
LET int_flag = false
CALL copcmf014()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION copcad014()
WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
INPUT BY NAME seguros.*
## Verifica que el seguro exista en el catalogo de seguros. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD cod_ca
IF seguros.cod_ca IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_ca
ELSE
SELECT * INTO seguros.* FROM cotb00022
WHERE cod_ca = seguros.cod_ca
IF STATUS != NOTFOUND THEN
IF seguros.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD cod_ca
END IF
DISPLAY BY NAME seguros.*
LET numero_msg = 12
CALL msg(numero_msg)
LET seguros.nom_ca = NULL
LET seguros.poliza = NULL
NEXT FIELD cod_ca
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
INITIALIZE seguros.nom_ca,seguros.poliza TO NULL
DISPLAY BY NAME seguros.nom_ca,seguros.poliza
END IF
END IF
AFTER FIELD nom_ca
IF seguros.nom_ca IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_ca
END IF
AFTER FIELD poliza
IF seguros.poliza IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD poliza
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF seguros.poliza IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD poliza
ELSE
INSERT INTO cotb00022 VALUES (seguros.cod_ca,seguros.nom_ca,
seguros.poliza,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 seguros.cod_ca = NULL
LET seguros.nom_ca = NULL
LET seguros.poliza = NULL
NEXT FIELD cod_ca
END IF
END INPUT
END FUNCTION
FUNCTION copcmf014()
WHENEVER ERROR CONTINUE
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON cotb00022.* FROM cotb00022.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET numero_msg = FALSE
RETURN
END IF
LET SELEC = "SELECT UNIQUE * FROM cotb00022 where ",
" status_t is null and ",
criterio clipped,
" ORDER BY 1"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
FETCH FIRST datos INTO seguros.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 36
CALL msg(numero_msg)
RETURN
END IF
DISPLAY BY NAME seguros.*
MENU "OPCIONES"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO seguros.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME seguros.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO seguros.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME seguros.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO seguros.*
DISPLAY BY NAME seguros.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO seguros.*
DISPLAY BY NAME seguros.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
IF seguros.status_t != "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
RETURN
END IF
INPUT BY NAME seguros.nom_ca,
seguros.poliza,
seguros.us_crea,
seguros.fech_crea,
seguros.us_mod,
seguros.fech_mod WITHOUT DEFAULTS
AFTER FIELD poliza
IF seguros.poliza IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD poliza
END IF
AFTER INPUT
## Verifica si el usuario presiono la tecla <Delete>
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
UPDATE cotb00022 SET nom_ca = seguros.nom_ca,
poliza = seguros.poliza,
us_mod = USER,
fech_mod = CURRENT
WHERE cod_ca = seguros.cod_ca
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE cotb00022 SET status_t = "E"
WHERE cod_ca = seguros.cod_ca
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION