alter table "PRESUPUESTOS" drop "TIPO";

ALTER TABLE CONFIGURACION
ADD EMPRESA TIPO_ID;

CREATE TABLE MONTAJES (
    ID                  TIPO_ID NOT NULL,
    ID_EMPRESA          TIPO_ID,
    ID_CLIENTE          TIPO_ID,
    REFERENCIA          VARCHAR(255),
    FECHA_INICIO        TIMESTAMP,
    FECHA_FIN    	TIMESTAMP,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP,
    USUARIO             TIPO_USUARIO
);
ALTER TABLE MONTAJES ADD CONSTRAINT PK_MONTAJES PRIMARY KEY (ID);
ALTER TABLE MONTAJES ADD CONSTRAINT FK_MONTAJES_CONTACTO FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE MONTAJES ADD CONSTRAINT FK_MONTAJES_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE GENERATOR GEN_MONTAJES_ID;
SET GENERATOR GEN_MONTAJES_ID TO 1;


ALTER TABLE MONTAJES
ADD ID_PRESUPUESTO TIPO_ID;
ALTER TABLE MONTAJES ADD CONSTRAINT FK_MONTAJES_PRESUPUESTOS FOREIGN KEY (ID_PRESUPUESTO) REFERENCES PRESUPUESTOS (ID);


ALTER TABLE MONTAJES
ADD SITUACION VARCHAR(255);


CREATE TABLE MONTAJES_DETALLES (
    ID                  TIPO_ID NOT NULL,
    ID_MONTAJE          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,
    DESCUENTO           TIPO_PORCENTAJE,
    IMPORTE_TOTAL       TIPO_IMPORTE,
    VISIBLE             TIPO_BOOLEANO,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP
);

ALTER TABLE MONTAJES_DETALLES ADD CONSTRAINT PK_MONTAJES_DETALLES PRIMARY KEY (ID);

/* Trigger: TRI_INSERT_PRESUPUESTOS_DET */
CREATE TRIGGER TRI_INSERT_MONTAJES_DET FOR MONTAJES_DETALLES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end;


/* Trigger: TRI_UPDATE_PRESUPUESTOS_DET */
CREATE TRIGGER TRI_UPDATE_MONTAJES_DET FOR MONTAJES_DETALLES
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end;

CREATE GENERATOR GEN_MONTAJES_DETALLES_ID;
SET GENERATOR GEN_MONTAJES_DETALLES_ID TO 1;



CREATE TABLE MONTAJES_GASTOS (
    ID                  TIPO_ID NOT NULL,
    ID_EMPRESA          TIPO_ID,
    ID_MONTAJE          TIPO_ID,
    FECHA_GASTO         TIMESTAMP,
    DESCRIPCION         TIPO_CONCEPTO,
    IMPORTE             TIPO_IMPORTE,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP,
    USUARIO             TIPO_USUARIO
);
ALTER TABLE MONTAJES_GASTOS ADD CONSTRAINT PK_MONTAJES_GASTOS PRIMARY KEY (ID);

CREATE GENERATOR GEN_MONTAJES_GASTOS_ID;
SET GENERATOR GEN_MONTAJES_GASTOS_ID TO 1;

ALTER TABLE MONTAJES
ADD IMPORTE_TOTAL TIPO_IMPORTE;


alter table MONTAJES
add constraint UNQ_MONTAJES
unique (ID_PRESUPUESTO)



