CREATE DOMAIN TIPO_ID AS INTEGER; CREATE DOMAIN TIPO_PERFIL AS VARCHAR(15); CREATE DOMAIN TIPO_USUARIO AS VARCHAR(20); CREATE DOMAIN TIPO_PASSWORD AS VARCHAR(10); CREATE DOMAIN TIPO_NOTAS AS BLOB SUB_TYPE TEXT; CREATE DOMAIN TIPO_BINARIO AS BLOB SUB_TYPE 0 SEGMENT SIZE 80; CREATE DOMAIN TIPO_IMPORTE AS NUMERIC(11, 2); CREATE DOMAIN TIPO_PORCENTAJE AS FLOAT; CREATE DOMAIN TIPO_CONCEPTO AS VARCHAR(2000); CREATE DOMAIN TIPO_BOOLEANO AS SMALLINT; CREATE TABLE EMPRESAS ( ID TIPO_ID NOT NULL, NIF_CIF VARCHAR(15), NOMBRE VARCHAR(255), RAZON_SOCIAL VARCHAR(255), CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10), TELEFONO_1 VARCHAR(25), TELEFONO_2 VARCHAR(25), MOVIL_1 VARCHAR(25), MOVIL_2 VARCHAR(25), FAX VARCHAR(25), EMAIL_1 VARCHAR(255), EMAIL_2 VARCHAR(255), PAGINA_WEB VARCHAR(255), NOTAS TIPO_NOTAS, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, LOGOTIPO TIPO_BINARIO, REGISTRO_MERCANTIL VARCHAR(255), IVA TIPO_PORCENTAJE ); ALTER TABLE EMPRESAS ADD CONSTRAINT PK_EMPRESAS PRIMARY KEY (ID); CREATE GENERATOR GEN_EMPRESAS_ID; SET GENERATOR GEN_EMPRESAS_ID TO 0; CREATE TABLE PERFILES ( ID TIPO_ID NOT NULL, PERFIL TIPO_PERFIL NOT NULL ); ALTER TABLE PERFILES ADD CONSTRAINT PK_PERFILES PRIMARY KEY (ID); CREATE GENERATOR GEN_PERFILES_ID; SET GENERATOR GEN_PERFILES_ID TO 0; CREATE TABLE USUARIOS ( ID TIPO_ID NOT NULL, USUARIO TIPO_USUARIO NOT NULL, PASS TIPO_PASSWORD, ACTIVO TIPO_BOOLEANO, LAST_LOGIN TIMESTAMP ); ALTER TABLE USUARIOS ADD CONSTRAINT PK_USUARIOS PRIMARY KEY (ID); CREATE GENERATOR GEN_USUARIOS_ID; SET GENERATOR GEN_USUARIOS_ID TO 0; CREATE TABLE PERFILES_USUARIOS ( ID_PERFIL TIPO_ID NOT NULL, ID_USUARIO TIPO_ID NOT NULL ); ALTER TABLE PERFILES_USUARIOS ADD CONSTRAINT PK_PERFILES_USUARIOS PRIMARY KEY (ID_PERFIL, ID_USUARIO); CREATE TABLE CATEGORIAS ( ID TIPO_ID NOT NULL, CATEGORIA VARCHAR(255) NOT NULL ); ALTER TABLE CATEGORIAS ADD CONSTRAINT PK_CATEGORIAS PRIMARY KEY (ID); CREATE GENERATOR GEN_CATEGORIAS_ID; SET GENERATOR GEN_CATEGORIAS_ID TO 0; CREATE TABLE CONTACTOS ( ID TIPO_ID NOT NULL, NIF_CIF VARCHAR(15), NOMBRE VARCHAR(255) NOT NULL, CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10), TELEFONO_1 VARCHAR(25), TELEFONO_2 VARCHAR(25), MOVIL_1 VARCHAR(25), MOVIL_2 VARCHAR(25), FAX VARCHAR(25), EMAIL_1 VARCHAR(255), EMAIL_2 VARCHAR(255), PAGINA_WEB VARCHAR(255), NOTAS TIPO_NOTAS, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO ); ALTER TABLE CONTACTOS ADD CONSTRAINT PK_CONTACTOS PRIMARY KEY (ID); CREATE GENERATOR GEN_CONTACTOS_ID; SET GENERATOR GEN_CONTACTOS_ID TO 0; CREATE TABLE CONTACTOS_CATEGORIAS ( ID_CONTACTO TIPO_ID NOT NULL, ID_CATEGORIA TIPO_ID NOT NULL ); ALTER TABLE CONTACTOS_CATEGORIAS ADD CONSTRAINT PK_CONTACTOS_CATEGORIAS PRIMARY KEY (ID_CONTACTO, ID_CATEGORIA); CREATE TABLE CONTACTOS_DATOS_BANCO ( ID TIPO_ID NOT NULL, ID_CONTACTO TIPO_ID NOT NULL, TITULAR VARCHAR(255), ENTIDAD VARCHAR(15), SUCURSAL VARCHAR(15), DC VARCHAR(15), CUENTA VARCHAR(15) ); ALTER TABLE CONTACTOS_DATOS_BANCO ADD CONSTRAINT PK_CONTACTOS_DATOS_BANCO PRIMARY KEY (ID); CREATE INDEX IDX_CONTACTOS_DATOS_BANCO ON CONTACTOS_DATOS_BANCO (ID_CONTACTO); CREATE GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID; SET GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID TO 0; CREATE TABLE CLIENTES_DATOS ( ID_CLIENTE TIPO_ID NOT NULL, ID_VENDEDOR TIPO_ID, PROCEDENCIA VARCHAR(2000) ); ALTER TABLE CLIENTES_DATOS ADD CONSTRAINT PK_CLIENTES_DATOS PRIMARY KEY (ID_CLIENTE); CREATE TABLE VENDEDORES_DATOS ( ID_VENDEDOR TIPO_ID NOT NULL, PORCENTAJE_COMISION TIPO_PORCENTAJE DEFAULT 0 ); ALTER TABLE VENDEDORES_DATOS ADD CONSTRAINT PK_VENDEDORES_DATOS PRIMARY KEY (ID_VENDEDOR); CREATE TABLE PROVEEDORES_DATOS ( ID_PROVEEDOR TIPO_ID NOT NULL, DISTRIBUYE VARCHAR(2000), DESCUENTO TIPO_PORCENTAJE ); ALTER TABLE PROVEEDORES_DATOS ADD CONSTRAINT PK_PROVEEDORES_DATOS PRIMARY KEY (ID_PROVEEDOR); CREATE TABLE EMPRESAS_CONTACTOS ( ID_EMPRESA TIPO_ID NOT NULL, ID_CONTACTO TIPO_ID NOT NULL ); ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT PK_EMPRESAS_CONTACTOS PRIMARY KEY (ID_EMPRESA, ID_CONTACTO); CREATE TABLE EMPRESAS_USUARIOS ( ID_EMPRESA TIPO_ID NOT NULL, ID_USUARIO TIPO_ID NOT NULL ); ALTER TABLE EMPRESAS_USUARIOS ADD CONSTRAINT PK_EMPRESAS_USUARIOS PRIMARY KEY (ID_EMPRESA, ID_USUARIO); CREATE TABLE PRESUPUESTOS ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_CLIENTE TIPO_ID, ID_VENDEDOR TIPO_ID, TIPO VARCHAR(10), REFERENCIA VARCHAR(255), FECHA_PRESUPUESTO DATE, VIGENCIA INTEGER, SITUACION VARCHAR(255), FECHA_DECISION DATE, BASE_IMPONIBLE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, OBSERVACIONES TIPO_NOTAS, PLAZO_ENTREGA TIPO_NOTAS, FORMA_PAGO TIPO_NOTAS, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO ); ALTER TABLE PRESUPUESTOS ADD CONSTRAINT PK_PRESUPUESTOS PRIMARY KEY (ID); CREATE GENERATOR GEN_PRESUPUESTOS_ID; SET GENERATOR GEN_PRESUPUESTOS_ID TO 0; CREATE TABLE PRESUPUESTOS_DETALLES ( ID TIPO_ID NOT NULL, ID_PRESUPUESTO TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), CONCEPTO TIPO_CONCEPTO, CANTIDAD INTEGER, PUNTOS INTEGER, IMPORTE_PUNTOS TIPO_IMPORTE, IMPORTE_UNIDAD TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, VISIBLE TIPO_BOOLEANO ); ALTER TABLE PRESUPUESTOS_DETALLES ADD CONSTRAINT PK_PRESUPUESTOS_DETALLES PRIMARY KEY (ID); CREATE GENERATOR GEN_PRESUPUESTOS_DETALLES_ID; SET GENERATOR GEN_PRESUPUESTOS_DETALLES_ID TO 0; CREATE TABLE FACTURAS_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_CONTRATO TIPO_ID, REFERENCIA VARCHAR(255), FECHA_FACTURA DATE, VENCIMIENTO INTEGER, SITUACION VARCHAR(255), FECHA_PAGADO DATE, BASE_IMPONIBLE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, OBSERVACIONES TIPO_NOTAS, FORMA_PAGO TIPO_NOTAS, ID_CLIENTE TIPO_ID, NIF_CIF VARCHAR(15), NOMBRE VARCHAR(255), CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10), FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO ); ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT PK_FACTURAS_CLIENTE PRIMARY KEY (ID); ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT FK_FACTURAS_CLIENTE_CONTACTOS FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT FK_FACTURAS_CLIENTE_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; CREATE TABLE FACTURAS_CLIENTE_DETALLES ( ID TIPO_ID NOT NULL, ID_FACTURA TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), CONCEPTO TIPO_CONCEPTO, CANTIDAD INTEGER, IMPORTE_UNIDAD TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, VISIBLE TIPO_BOOLEANO ); ALTER TABLE FACTURAS_CLIENTE_DETALLES ADD CONSTRAINT PK_FACTURAS_CLIENTE_DETALLES PRIMARY KEY (ID); CREATE TABLE PEDIDOS_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_PROVEEDOR TIPO_ID, ID_MONTAJE TIPO_ID, REFERENCIA VARCHAR(255), FECHA_PEDIDO DATE, FECHA_CONFIRMACION DATE, FECHA_ENTREGA DATE, SITUACION VARCHAR(255), DIRECCION_ENTREGA TIPO_NOTAS, OBSERVACIONES TIPO_NOTAS, IMPORTE_TOTAL TIPO_IMPORTE, INCIDENCIAS TIPO_NOTAS, INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO ); ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT PK_PEDIDOS_PROVEEDOR PRIMARY KEY (ID); ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID); ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR2 FOREIGN KEY (ID_PROVEEDOR) REFERENCES CONTACTOS (ID); CREATE GENERATOR GEN_PEDIDOS_PROV_ID; SET GENERATOR GEN_PEDIDOS_PROV_ID TO 0; CREATE TABLE PEDIDOS_PROVEEDOR_DETALLES ( ID TIPO_ID NOT NULL, ID_PEDIDO TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), CONCEPTO TIPO_CONCEPTO, CANTIDAD INTEGER, IMPORTE_UNIDAD TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, VISIBLE TIPO_BOOLEANO ); ALTER TABLE PEDIDOS_PROVEEDOR_DETALLES ADD CONSTRAINT PK_PEDIDOS_PROVEEDOR_DETALLES PRIMARY KEY (ID); CREATE GENERATOR GEN_PEDIDOS_PROV_DETALLES_ID; SET GENERATOR GEN_PEDIDOS_PROV_DETALLES_ID TO 0; CREATE TABLE CONFIGURACION ( CODIGO VARCHAR(50) NOT NULL, VALOR VARCHAR(255) NOT NULL ); CREATE TABLE REFERENCIAS ( CODIGO VARCHAR(50) NOT NULL, VALOR VARCHAR(255) NOT NULL ); CREATE TABLE COBROS ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_CLIENTE TIPO_ID, ID_MONTAJE TIPO_ID, REFERENCIA VARCHAR(255), FECHA_COBRO TIMESTAMP, DESCRIPCION TIPO_CONCEPTO, IMPORTE TIPO_IMPORTE, FORMA_PAGO VARCHAR(255), FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO ); ALTER TABLE COBROS ADD CONSTRAINT PK_COBROS PRIMARY KEY (ID); ALTER TABLE COBROS ADD CONSTRAINT FK_COBROS FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID); CREATE GENERATOR GEN_COBROS_CLIENTE_ID; SET GENERATOR GEN_COBROS_CLIENTE_ID TO 1; ALTER TABLE PRESUPUESTOS_DETALLES ADD DESCUENTO TIPO_PORCENTAJE; ALTER TABLE REFERENCIAS ADD ID_EMPRESA TIPO_ID; alter table REFERENCIAS add constraint FK_REFERENCIAS foreign key (ID_EMPRESA) references EMPRESAS(ID); ALTER TABLE FACTURAS_CLIENTE_DETALLES ADD FECHA_ALTA TIMESTAMP; ALTER TABLE FACTURAS_CLIENTE_DETALLES ADD FECHA_MODIFICACION TIMESTAMP; ALTER TABLE PEDIDOS_PROVEEDOR_DETALLES ADD FECHA_ALTA TIMESTAMP; ALTER TABLE PEDIDOS_PROVEEDOR_DETALLES ADD FECHA_MODIFICACION TIMESTAMP; ALTER TABLE PRESUPUESTOS_DETALLES ADD FECHA_ALTA TIMESTAMP; ALTER TABLE PRESUPUESTOS_DETALLES ADD FECHA_MODIFICACION TIMESTAMP; CREATE TRIGGER TRI_INSERT_FACTURAS_CLIENTE FOR FACTURAS_CLIENTE ACTIVE BEFORE INSERT POSITION 0 AS begin NEW.FECHA_ALTA = current_timestamp; NEW.FECHA_MODIFICACION = Null; end; CREATE TRIGGER TRI_INSERT_PEDIDOS_PROVEEDOR FOR PEDIDOS_PROVEEDOR ACTIVE BEFORE INSERT POSITION 0 AS begin NEW.FECHA_ALTA = current_timestamp; NEW.FECHA_MODIFICACION = Null; end; CREATE TRIGGER TRI_INSERT_PRESUPUESTOS FOR PRESUPUESTOS ACTIVE BEFORE INSERT POSITION 0 AS begin NEW.FECHA_ALTA = current_timestamp; NEW.FECHA_MODIFICACION = Null; end; CREATE TRIGGER TRI_INSERT_FACTURAS_CLIENTE_DET FOR FACTURAS_CLIENTE_DETALLES ACTIVE BEFORE INSERT POSITION 0 AS begin NEW.FECHA_ALTA = current_timestamp; NEW.FECHA_MODIFICACION = Null; end; CREATE TRIGGER TRI_INSERT_PEDIDOS_PROV_DET FOR PEDIDOS_PROVEEDOR_DETALLES ACTIVE BEFORE INSERT POSITION 0 AS begin NEW.FECHA_ALTA = current_timestamp; NEW.FECHA_MODIFICACION = Null; end; CREATE TRIGGER TRI_INSERT_PRESUPUESTOS_DET FOR PRESUPUESTOS_DETALLES ACTIVE BEFORE INSERT POSITION 0 AS begin NEW.FECHA_ALTA = current_timestamp; NEW.FECHA_MODIFICACION = Null; end; CREATE TRIGGER TRI_UPDATE_FACTURAS_CLIENTE FOR FACTURAS_CLIENTE ACTIVE BEFORE UPDATE POSITION 0 AS begin NEW.FECHA_MODIFICACION = current_timestamp; end; CREATE TRIGGER TRI_UPDATE_PEDIDOS_PROVEEDOR FOR PEDIDOS_PROVEEDOR ACTIVE BEFORE UPDATE POSITION 0 AS begin NEW.FECHA_MODIFICACION = current_timestamp; end; CREATE TRIGGER TRI_UPDATE_PRESUPUESTOS FOR PRESUPUESTOS ACTIVE BEFORE UPDATE POSITION 0 AS begin NEW.FECHA_MODIFICACION = current_timestamp; end; CREATE TRIGGER TRI_UPDATE_FACTURAS_CLIENTE_DET FOR FACTURAS_CLIENTE_DETALLES ACTIVE BEFORE UPDATE POSITION 0 AS begin NEW.FECHA_MODIFICACION = current_timestamp; end; CREATE TRIGGER TRI_UPDATE_PEDIDOS_PROV_DET FOR PEDIDOS_PROVEEDOR_DETALLES ACTIVE BEFORE UPDATE POSITION 0 AS begin NEW.FECHA_MODIFICACION = current_timestamp; end; CREATE TRIGGER TRI_UPDATE_PRESUPUESTOS_DET FOR PRESUPUESTOS_DETALLES ACTIVE BEFORE UPDATE POSITION 0 AS begin NEW.FECHA_MODIFICACION = current_timestamp; end; ALTER TABLE PEDIDOS_PROVEEDOR_DETALLES ADD REFERENCIA VARCHAR(255); ALTER TABLE COBROS ADD CONSTRAINT FK_COBROS_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; alter table PRESUPUESTOS add constraint FK_PRESUPUESTOS2 foreign key (ID_CLIENTE) references CONTACTOS(ID) ON DELETE NO ACTION ON UPDATE NO ACTION; /****************************************************************************/ /* INSERTAR DATOS */ INSERT INTO CATEGORIAS (CATEGORIA) VALUES ('CLIENTE'); INSERT INTO CATEGORIAS (CATEGORIA) VALUES ('PROVEEDOR'); INSERT INTO CATEGORIAS (CATEGORIA) VALUES ('VENDEDOR'); INSERT INTO CATEGORIAS (CATEGORIA) VALUES ('INSTALADOR'); INSERT INTO REFERENCIAS (CODIGO, VALOR) VALUES ('REF_PRESUPUESTOS', '0'); COMMIT;