{
------------------------------------------------------------------
 PROGRAMA          : ADPRMT029
 OBJETIVO          : Capturar, Modificar, Eliminar registros de la
                     Tabla de Planes de Seguros de Vida
 PROGRAMADOR       : Oscar Castillo
 FECHA REALIZACION : Wednesday, 22 November, 2000  
------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl" 

FUNCTION adprmt029() 
   CLEAR SCREEN 
   OPTIONS
        FORM LINE 9,
        ERROR LINE 23,
        COMMENT LINE 21

   OPEN FORM adfmmt029 FROM "adfmmt029"
   DISPLAY FORM adfmmt006
   CALL pantalla() 
   DISPLAY "adprmt006" AT 4,3 ATTRIBUTE(RED)
   DISPLAY "Nacionalidades" AT 6,36 ATTRIBUTE(BLACK)
   
   MENU "OPCIONES"
       COMMAND "Adicionar"   
               "<Esc> Adiciona Registro    <Ctrl-C> Cancela Operacion"
           let int_flag = false
           CLEAR FORM 
           CALL adpcad006()
       COMMAND "Consultar-modificar"
               "<Esc> Realiza Busqueda     <Ctrl-C> Cancela Operacion"
           let int_flag = false
           CALL adpcmf006()
       COMMAND "Salir" "Retorna Menu Anterior"
           EXIT MENU
     END MENU
END FUNCTION

FUNCTION adpcad006()
   WHENEVER ERROR CONTINUE
## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO

   INPUT BY NAME nacion.*

## VERIFICA QUE EL CODIGO NO EXISTA EN EL CATALOGO DE NACIONALIDADES. SI   
## EXISTE ENTONCES DESPLIEGA LOS DATOS DEL REGISTRO EXISTENTE.

         AFTER FIELD cod_nac  
               IF nacion.cod_nac IS NULL THEN
                  LET numero_msg = 16
                  CALL msg(numero_msg)
                  NEXT FIELD cod_nac  
               ELSE 
               SELECT * INTO nacion.* FROM adtb00007
                        WHERE cod_nac = nacion.cod_nac

               IF status >= 0 THEN
                IF status != NOTFOUND THEN
                  IF nacion.status_t = "E" THEN
                     LET numero_msg = 36
                     CALL msg(numero_msg)
                     NEXT FIELD cod_nac
                  END IF

                     DISPLAY BY NAME nacion.*
                     LET numero_msg = 12 
                     CALL msg(numero_msg)
                     LET nacion.nom_nac = NULL
                     NEXT FIELD cod_nac 
                  END IF 
               ELSE
                  CALL integridad()
                  IF bandera = 1 THEN
                     CLEAR SCREEN
                     RETURN
                  END IF 
               END IF 
               END IF 

         AFTER FIELD nom_nac
               IF nacion.nom_nac IS NULL THEN
                  LET numero_msg = 16 
                  CALL msg(numero_msg) 
                  NEXT FIELD nom_nac
               END IF

         AFTER INPUT
         IF int_flag THEN
            LET numero_msg = 2 
            CALL msg(numero_msg)
            LET int_flag = FALSE
            RETURN
         END IF

## SI NO OCURRE NINGUN ERROR SE PROCEDE A INSERTAR EL REGISTRO
         IF nacion.nom_nac IS NULL THEN
            LET numero_msg = 16
            CALL msg(numero_msg)
            NEXT FIELD nom_nac
         ELSE
            INSERT INTO adtb00007 VALUES (nacion.cod_nac,nacion.nom_nac,
                                          null, USER, CURRENT, null, null)

            LET numero_msg = 1
            CALL msg(numero_msg)
            CLEAR FORM

            LET nacion.cod_nac = NULL
            LET nacion.nom_nac = NULL
            NEXT FIELD cod_nac    

         END IF

         AFTER FIELD fech_mod
               EXIT INPUT
   END INPUT

END FUNCTION 

FUNCTION adpcmf006() 
## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA
## MODIFICACION DE REGISTROS.

   WHENEVER ERROR CONTINUE
    CONSTRUCT criterio ON adtb00007.*  FROM adtb00007.*         

    IF int_flag THEN   
       LET numero_msg = 2 
       CALL msg(numero_msg) 
       LET int_flag = FALSE
       RETURN
    END IF

    LET SELEC = " SELECT UNIQUE * FROM adtb00007 where ",         
               " status_t is null and ",
                  criterio clipped,
                 " ORDER BY 1"

    PREPARE busca FROM selec
           CALL integridad()

         IF bandera = 1 THEN
           CLEAR SCREEN
           RETURN
       END IF 

    DECLARE dato SCROLL CURSOR FOR busca
    OPEN dato 

   FETCH FIRST dato INTO nacion.*

  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
           CLEAR SCREEN
           RETURN
         END IF 
  END IF
    DISPLAY BY NAME nacion.*

    MENU "OPCIONES "
    COMMAND "Siguiente"
            "Presenta en pantalla el proximo registro encontrado"
            FETCH NEXT dato INTO nacion.*
            IF STATUS = NOTFOUND THEN
               LET numero_msg = 4 
               CALL msg(numero_msg) 
            END IF
            DISPLAY BY NAME nacion.*

    COMMAND "Anterior"
            "Presenta en pantalla el registro anterior encontrado"
            FETCH PREVIOUS dato INTO nacion.*
            IF STATUS = NOTFOUND THEN
               LET numero_msg = 5 
               CALL msg(numero_msg) 
            END IF
            DISPLAY BY NAME nacion.*

    COMMAND "Primero"
            "Presenta en pantalla el primer registro encontrado"
            FETCH FIRST dato INTO nacion.*
            DISPLAY BY NAME nacion.*
            LET numero_msg = 5 
            CALL msg(numero_msg) 

     COMMAND "Ultimo"
            "Presenta en pantalla el ultimo registro encontrado"
             FETCH LAST dato INTO nacion.*
             DISPLAY BY NAME nacion.*
             LET numero_msg = 4 
             CALL msg(numero_msg) 

     COMMAND "Escoger"
             "<Esc> Actualiza Registro    <Ctrl-C> Cancela Operacion"
            IF nacion.status_t = "E" THEN
              LET numero_msg = 39
              CALL msg(numero_msg)
              RETURN
            END IF

## SE SELECCIONAN LOS CAMPOS MODIFICABLES
             INPUT BY NAME nacion.nom_nac,
                           nacion.us_crea,
                           nacion.fech_crea,
                           nacion.us_mod,
                           nacion.fech_mod    WITHOUT DEFAULTS
       
             AFTER FIELD nom_nac
                   IF nacion.nom_nac IS NULL THEN 
                      LET numero_msg = 16 
                      CALL msg(numero_msg) 
                      NEXT FIELD nom_nac
                   END IF

  #### Verifica si el usuario presiono la tecla <Ctrl-C>   

      AFTER INPUT
      IF int_flag THEN
         LET numero_msg = 2 
         CALL msg(numero_msg) 
         LET int_flag = FALSE
         CLEAR FORM 
         RETURN
      END IF
      CALL integridad()

         IF bandera = 1 THEN
           CLEAR SCREEN
           RETURN
         END IF 

## AQUI SE ACTUALIZA EL REGISTRO
         UPDATE adtb00007 SET nom_nac = nacion.nom_nac,
                              us_mod      = USER, 
                              fech_mod    = CURRENT 
                WHERE cod_nac = nacion.cod_nac

      LET numero_msg = 13 
      CALL msg(numero_msg) 

      EXIT INPUT
END INPUT

## AQUI SE ELIMINAN LOS REGISTROS
    COMMAND KEY ("L") "eLiminar"
      UPDATE adtb00007 SET status_t = "E"
                WHERE cod_nac = nacion.cod_nac

      LET numero_msg = 39
      CALL msg(numero_msg)

    COMMAND "Retornar" 
            "Retorna al menu anterior" 
            CLEAR FORM 
            EXIT MENU
            END MENU
END FUNCTION

