ConstruccionesCNJ_FactuGES/BD/factuges.sql
2007-06-21 15:50:59 +00:00

515 lines
14 KiB
SQL

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;