CREATE TABLE PERMISOS (
  NRO_PERMISO INTEGER NOT NULL PRIMARY KEY,
  NRO_USUARIO INTEGER NOT NULL,
  PERMISO BOOLEAN,
  OPCION INTEGER NOT NULL
);
-----
CREATE OR ALTER TRIGGER PERMISOS_BI FOR PERMISOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
    IF (NEW.NRO_PERMISO IS NULL) THEN BEGIN
      NEW.NRO_PERMISO = GEN_ID(ORDEN_GEN, 1);
    END
END;
-----
CREATE OR ALTER VIEW OPCIONES_VW(
    NRO,
    NOMBRE)
AS
SELECT
      NOMBRES.NRO_NOMBRE AS NRO,
      NOMBRES.NOMBRE
    FROM NOMBRES
    WHERE NOMBRES.NRO_GRUPO_NOMBRE = 1;
-----
DELETE FROM NOMBRES;
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (0, 1, 'Opciones');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (0, 4, 'CONDICION_IVA');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (0, 101, 'REGULARIDAD');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (0, 103, 'Numeros Letras');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (1, 1, 'Opcion 1');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (1, 2, 'Opcion 2');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (1, 3, 'Opcion 3');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (4, 1, 'Inscripto');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (4, 4, 'Exento');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (4, 5, 'Final');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (4, 6, 'Monotributo');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (101, 1, 'Regular / Cursando');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (101, 2, 'Libre');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (101, 3, 'Equivalencia');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (101, 4, 'Regular/ a Final');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (101, 5, 'Regular / Promocion Directa');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (101, 6, 'Desaprobada');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 0, 'Cero');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 1, 'Uno');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 2, 'Dos');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 3, 'Tres');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 4, 'Cuatro');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 5, 'Cinco');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 6, 'Seis');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 7, 'Siete');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 8, 'Ocho');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 9, 'Nueve');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 10, 'Diez');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (103, 11, 'Promocion');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (104, 1, 'NO Aprobado');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (104, 2, 'Aprobado');
-----
INSERT INTO NOMBRES (NRO_GRUPO_NOMBRE, NRO_NOMBRE, NOMBRE)
             VALUES (104, 3, 'Permitido');
-----
CREATE OR ALTER TRIGGER USUARIOS_AI FOR USUARIOS
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
  INSERT INTO PERMISOS (NRO_USUARIO, PERMISO, OPCION)
    SELECT
        NEW.NRO_USUARIO,
        FALSE,
        OPCIONES_VW.NRO
      FROM OPCIONES_VW
      WHERE
        NOT EXISTS (
          SELECT
              *
            FROM PERMISOS
            WHERE
              NEW.NRO_USUARIO = PERMISOS.NRO_USUARIO AND
              OPCIONES_VW.NRO = PERMISOS.OPCION);

END