Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
createDB-Oracle.sql 25.33 KiB
-----------------------------------------------------------------------------------
-- *******************************************************************************
-- * Copyright (c) 2019 Contributors to the Eclipse Foundation
-- *
-- * See the NOTICE file(s) distributed with this work for additional
-- * information regarding copyright ownership.
-- *
-- * This program and the accompanying materials are made available under the
-- * terms of the Eclipse Public License v. 2.0 which is available at
-- * http://www.eclipse.org/legal/epl-2.0.
-- *
-- * SPDX-License-Identifier: EPL-2.0
-- *******************************************************************************
-----------------------------------------------------------------------------------

-- V1_0_0__InitialSetup

-- ATTACHMENT

CREATE SEQUENCE tbl_attachment_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;
   

CREATE TABLE tbl_attachment (
    id NUMBER(10) DEFAULT tbl_attachment_id_seq.nextval NOT NULL,
    file_name character varying(255),
    file_type character varying(255),
    statement_id NUMBER(19),
    attachment_lob_id NUMBER(10),
    len NUMBER(19),
    ts timestamp
);


ALTER TABLE tbl_attachment ADD (
  CONSTRAINT tbl_attachment_pk PRIMARY KEY (id));
 
CREATE SEQUENCE tbl_attachment_lob_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;
   

CREATE TABLE tbl_attachment_lob (
    id NUMBER(10) DEFAULT tbl_attachment_lob_id_seq.nextval NOT NULL,
    value BLOB NOT NULL
);


ALTER TABLE tbl_attachment_lob ADD (
  CONSTRAINT tbl_attachment_lob_pk PRIMARY KEY (id));

-- TAG

 
CREATE TABLE tbl_tag (
    id character varying(255) NOT NULL,
    name character varying(255) NOT NULL
);

ALTER TABLE tbl_tag ADD (
  CONSTRAINT tbl_tag_pk PRIMARY KEY (ID));

 
-- ATTACHMENT_2_TAG


CREATE TABLE tbl_attachment2tag (
    tag_id character varying(255) NOT NULL,
    attachment_id NUMBER(19) NOT NULL
);

ALTER TABLE tbl_attachment2tag
    ADD CONSTRAINT tbl_attachment2tag_pkey PRIMARY KEY (attachment_id, tag_id);

-- COMMENT

CREATE SEQUENCE tbl_comment_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;

CREATE TABLE tbl_comment (
    id NUMBER(10) DEFAULT tbl_comment_id_seq.nextval NOT NULL,
    disabled NUMBER(1),
    text CLOB NOT NULL,
    ts timestamp,
    user_id NUMBER(10),
    workflow_id NUMBER(10)
);

ALTER TABLE tbl_comment ADD (
  CONSTRAINT tbl_comment_pk PRIMARY KEY (ID));

-- DEPARTMENT

 CREATE SEQUENCE tbl_department_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;

CREATE TABLE tbl_department (
    id NUMBER(10) DEFAULT tbl_department_id_seq.nextval NOT NULL,
    departmentgroup character varying(255),
    name character varying(255)
);

ALTER TABLE tbl_department ADD (
  CONSTRAINT tbl_department_pk PRIMARY KEY (id));

ALTER TABLE tbl_department
    ADD CONSTRAINT tbl_department_name_departmentgroup_u UNIQUE (name, departmentgroup);

-- DEPARTMENT_STRUCTURE

 CREATE SEQUENCE tbl_departmentstructure_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;


 CREATE TABLE tbl_departmentstructure (
    id NUMBER(10) DEFAULT tbl_departmentstructure_id_seq.nextval NOT NULL,
    definition CLOB NOT NULL,
    version NUMBER(10) NOT NULL
);

ALTER TABLE tbl_departmentstructure ADD (
  CONSTRAINT tbl_departmentstructure_pk PRIMARY KEY (id));
 
-- REQ_DEPARTMENT

 CREATE SEQUENCE tbl_reqdepartment_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;


CREATE TABLE tbl_reqdepartment (
    id NUMBER(10) DEFAULT tbl_reqdepartment_id_seq.nextval NOT NULL,
    contributed NUMBER(1),
    optional NUMBER(1),
    department_id NUMBER(10),
    workflowdata_id NUMBER(10)
);

ALTER TABLE tbl_reqdepartment ADD (
  CONSTRAINT tbl_reqdepartment_pk PRIMARY KEY (id));

-- STATEMENT


CREATE SEQUENCE tbl_statement_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;


CREATE TABLE tbl_statement (
    id NUMBER(10) DEFAULT tbl_statement_id_seq.nextval NOT NULL,
    business_key character varying(40) NOT NULL,
    city character varying(255) NOT NULL,
    district character varying(255) NOT NULL,
    due_date date NOT NULL,
    finished NUMBER(1) NOT NULL,
    receipt_date date NOT NULL,
    title character varying(255) NOT NULL,
    contact_db_id character varying(255) NOT NULL,
    department_structure_id NUMBER(10) NOT NULL,
    type_id NUMBER(10) NOT NULL,
    source_mail_id character varying(255),
    creation_date date NOT NULL,
    customer_reference character varying(255),
    finished_date date
);

ALTER TABLE tbl_statement ADD (
  CONSTRAINT tbl_statement_pk PRIMARY KEY (id));

-- STATMENET_2_PARENT

CREATE TABLE tbl_statement2parent (
    statement_id NUMBER(10) NOT NULL,
    parent_id NUMBER(10) NOT NULL
);

ALTER TABLE tbl_statement2parent
    ADD CONSTRAINT tbl_statement2parent_pkey PRIMARY KEY (parent_id, statement_id);

-- STATEMENT_EDIT_LOG

CREATE SEQUENCE tbl_statement_edit_log_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;

CREATE TABLE tbl_statement_edit_log (
    id NUMBER(10) DEFAULT tbl_statement_edit_log_id_seq.nextval NOT NULL,
    accesstype character varying(255) NOT NULL,
    ts timestamp(0) NOT NULL,
    statement_id NUMBER(10) NOT NULL,
    user_id NUMBER(10) NOT NULL
);

ALTER TABLE tbl_statement_edit_log ADD (
  CONSTRAINT tbl_statement_edit_log_pk PRIMARY KEY (id));

-- STATEMENT_TYPE
 
CREATE SEQUENCE tbl_statementtype_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;

 
CREATE TABLE tbl_statementtype (
    id NUMBER(10) DEFAULT tbl_statementtype_id_seq.nextval NOT NULL,
    name character varying(255)
);


ALTER TABLE tbl_statementtype ADD (
  CONSTRAINT tbl_statementtype_pk PRIMARY KEY (id));

-- TEXTBLOCK_DEFINITION

CREATE SEQUENCE tbl_textblockdefinition_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;
 
CREATE TABLE tbl_textblockdefinition (
    id NUMBER(10) DEFAULT tbl_textblockdefinition_id_seq.nextval NOT NULL,
    definition CLOB NOT NULL,
    version NUMBER(10) NOT NULL
);

ALTER TABLE tbl_textblockdefinition ADD (
  CONSTRAINT tbl_textblockdefinition_pk PRIMARY KEY (id));
 
-- USER

CREATE SEQUENCE tbl_user_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;


CREATE TABLE tbl_user (
    id NUMBER(10) DEFAULT tbl_user_id_seq.nextval NOT NULL,
    first_name character varying(255) NOT NULL,
    last_name character varying(255) NOT NULL,
    username character varying(255) NOT NULL,
    email_address character varying(255),
    department_id NUMBER(10)
);

ALTER TABLE tbl_user ADD (
  CONSTRAINT tbl_user_pk PRIMARY KEY (id));
 
ALTER TABLE tbl_user
    ADD CONSTRAINT tbl_user_username_u UNIQUE (username);

 
-- WORKFLOW_DATA

CREATE SEQUENCE tbl_workflowdata_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;

 
CREATE TABLE tbl_workflowdata (
    id NUMBER(10) DEFAULT tbl_workflowdata_id_seq.nextval NOT NULL,
    draft CLOB,
    initial_state NUMBER(1),
    pos character varying(255),
    statement_id NUMBER(10) NOT NULL,
    textblockdefinition_id NUMBER(10) NOT NULL
);

ALTER TABLE tbl_workflowdata ADD (
  CONSTRAINT tbl_workflowdata_pk PRIMARY KEY (id));
 
ALTER TABLE tbl_workflowdata
    ADD CONSTRAINT tbl_workflowdata_statement_u UNIQUE (statement_id);
    
    
-- FKs

ALTER TABLE tbl_statement_edit_log
    ADD CONSTRAINT tbl_statement_edit_log_fk_1 FOREIGN KEY (statement_id) REFERENCES tbl_statement(id);
ALTER TABLE tbl_statement_edit_log
    ADD CONSTRAINT tbl_statement_edit_log_fk_2 FOREIGN KEY (user_id) REFERENCES tbl_user(id);
   

ALTER TABLE tbl_reqdepartment
    ADD CONSTRAINT tbl_reqdepartment_fk_1 FOREIGN KEY (department_id) REFERENCES tbl_department(id);
ALTER TABLE tbl_reqdepartment
    ADD CONSTRAINT tbl_reqdepartment_fk_2 FOREIGN KEY (workflowdata_id) REFERENCES tbl_workflowdata(id);


ALTER TABLE tbl_attachment2tag
    ADD CONSTRAINT tbl_attachment2tag_fk_1 FOREIGN KEY (attachment_id) REFERENCES tbl_attachment(id);
ALTER TABLE tbl_attachment2tag
    ADD CONSTRAINT tbl_attachment2tag_fk_2 FOREIGN KEY (tag_id) REFERENCES tbl_tag(id);

   
ALTER TABLE tbl_statement2parent
    ADD CONSTRAINT tbl_statement2parent_fk_1 FOREIGN KEY (parent_id) REFERENCES tbl_statement(id);
ALTER TABLE tbl_statement2parent
    ADD CONSTRAINT tbl_statement2parent_fk_2 FOREIGN KEY (statement_id) REFERENCES tbl_statement(id);


ALTER TABLE tbl_statement
    ADD CONSTRAINT tbl_statement_fk_1 FOREIGN KEY (type_id) REFERENCES tbl_statementtype(id);
ALTER TABLE tbl_statement
    ADD CONSTRAINT tbl_statement_fk_2 FOREIGN KEY (department_structure_id) REFERENCES tbl_departmentstructure(id);


ALTER TABLE tbl_comment
    ADD CONSTRAINT tbl_comment_fk_1 FOREIGN KEY (user_id) REFERENCES tbl_user(id);

ALTER TABLE tbl_workflowdata
    ADD CONSTRAINT tbl_workflowdata_fk_1 FOREIGN KEY (statement_id) REFERENCES tbl_statement(id);
ALTER TABLE tbl_workflowdata
    ADD CONSTRAINT tbl_workflowdata_fk_2 FOREIGN KEY (textblockdefinition_id) REFERENCES tbl_textblockdefinition(id);


ALTER TABLE tbl_attachment
    ADD CONSTRAINT tbl_attachment_fk_1 FOREIGN KEY (statement_id) REFERENCES tbl_statement(id);

ALTER TABLE tbl_attachment
    ADD CONSTRAINT tbl_attachment_fk_2 FOREIGN KEY (attachment_lob_id) REFERENCES tbl_attachment_lob(id);

ALTER TABLE tbl_comment
    ADD CONSTRAINT tbl_comment_fk_2 FOREIGN KEY (workflow_id) REFERENCES tbl_workflowdata(id);



-- VW_STATEMENT_POSITION_SEARCH

CREATE VIEW vw_statement_position_search AS
 SELECT s.id,
    s.due_date,
    s.finished,
    s.title,
    s.type_id,
    w.pos
   FROM tbl_statement s,
    tbl_workflowdata w
  WHERE (w.statement_id = s.id);

-- VW_STATEMENT_REQDEPARTMENT_USERS

 
CREATE VIEW vw_statement_reqdepartment_users AS
 SELECT row_number() OVER (ORDER BY u.id) AS id,
    u.id AS user_id,
    u.first_name,
    u.last_name,
    u.username AS user_name,
    u.email_address,
    wd.statement_id,
    wd.id AS workflow_id,
    u.department_id,
    d.name AS department_name,
    d.departmentgroup AS department_group
   FROM (((tbl_user u
     JOIN tbl_department d ON ((u.department_id = d.id)))
     JOIN tbl_reqdepartment rd ON ((rd.department_id = d.id)))
     JOIN tbl_workflowdata wd ON ((wd.id = rd.workflowdata_id)));

-- VW_STATEMENT_SEARCH

CREATE VIEW vw_statement_search AS
 SELECT s.id,
    s.business_key,
    s.city,
    s.district,
    s.due_date,
    s.finished,
    s.receipt_date,
    s.creation_date,
    s.customer_reference,
    s.title,
    s.type_id,
    s.contact_db_id,
    s.source_mail_id,
    upper(s.id || '|@|' || COALESCE(t.name, '') ||  '|@|' || COALESCE (s.title, '') || '|@|' || COALESCE (s.city, '')  || '|@|' || COALESCE (s.district, '') || '|@|' || COALESCE (s.customer_reference, '') || '|@|' ) AS searchfield
   FROM tbl_statement s,
    tbl_statementtype t
  WHERE (s.type_id = t.id);


-- VW_USER_STATEMENT_SEARCH

CREATE VIEW vw_user_statement_search AS
 SELECT DISTINCT s.id,
    s.business_key,
    s.city,
    s.district,
    s.due_date,
    s.finished,
    s.receipt_date,
    s.creation_date,
    s.customer_reference,
    s.title,
    s.type_id,
    s.contact_db_id,
    e.user_id,
    s.source_mail_id,
    upper(s.id || '|@|' || COALESCE(t.name, '') ||  '|@|' || COALESCE (s.title, '') || '|@|' || COALESCE (s.city, '')  || '|@|' || COALESCE (s.district, '') || '|@|' || COALESCE (s.customer_reference, '') || '|@|' ) AS searchfield
   FROM tbl_statement s,
    tbl_statementtype t,
    tbl_statement_edit_log e
  WHERE ((s.type_id = t.id) AND (e.statement_id = s.id));
 
 

 
-- INSERT STATEMENT_TYPES

 
INSERT INTO tbl_statementtype VALUES (1, 'Bauleitplanung');
INSERT INTO tbl_statementtype VALUES (2, 'Mitverlegungsanfrage');
INSERT INTO tbl_statementtype VALUES (3, 'Bauvoranfrage');
INSERT INTO tbl_statementtype VALUES (4, 'Planfeststellungsverfahren');
INSERT INTO tbl_statementtype VALUES (5, 'Formlose Anfrage');


-- INSERT TAGS

INSERT INTO tbl_tag VALUES ('email-text', 'Emailanfrage');
INSERT INTO tbl_tag VALUES ('email', 'Email');
INSERT INTO tbl_tag VALUES ('outbox', 'Ausgang');
INSERT INTO tbl_tag VALUES ('consideration', 'Abwägungsergebnis');
INSERT INTO tbl_tag VALUES ('statement', 'Stellungnahme');
INSERT INTO tbl_tag VALUES ('cover-letter', 'Anschreiben');
INSERT INTO tbl_tag VALUES ('overview', 'Übersicht');
INSERT INTO tbl_tag VALUES ('expertise', 'Gutachten');
INSERT INTO tbl_tag VALUES ('plan', 'Plan');
INSERT INTO tbl_tag VALUES ('explanatory-report', 'Erläuterungsbericht');

-- INSERT DEPARTMENTSTRUCTURE

INSERT INTO TBL_DEPARTMENTSTRUCTURE (DEFINITION, VERSION) VALUES ('{}', 1);

-- INSERT TEXTBLOCKDEFINITION

INSERT INTO TBL_TEXTBLOCKDEFINITION (DEFINITION, VERSION) VALUES('{"groups":[],"negativeGroups":[],"selects":{}}', 1);


-- Updates: 

-- V2_0_0__ViewReqDepartmentUsersAddContribution 

CREATE OR REPLACE VIEW vw_statement_reqdepartment_users
AS SELECT row_number() OVER (ORDER BY u.id) AS id,
    u.id AS user_id,
    u.first_name,
    u.last_name,
    u.username AS user_name,
    u.email_address,
    wd.statement_id,
    wd.id AS workflow_id,
    u.department_id,
    d.name AS department_name,
    d.departmentgroup AS department_group,
    rd.contributed AS department_contributed
   FROM (((tbl_user u
     JOIN tbl_department d ON ((u.department_id = d.id)))
     JOIN tbl_reqdepartment rd ON ((rd.department_id = d.id)))
     JOIN tbl_workflowdata wd ON ((wd.id = rd.workflowdata_id)));



-- V2_0_1__DepartmentsDueDate

-- Add a due date for department contributions parameter to statement table

-- Add new department_due_date column
ALTER TABLE tbl_statement ADD departments_due_date date NULL;

-- Copy Value of due_date to department_due_date
UPDATE tbl_statement SET departments_due_date = due_date where departments_due_date is null ;

-- Set new department_due_date column to NOT NULL
ALTER TABLE tbl_statement modify departments_due_date NOT NULL; 


-- VW_STATEMENT_SEARCH

CREATE OR REPLACE VIEW vw_statement_search AS
 SELECT s.id,
    s.business_key,
    s.city,
    s.district,
    s.due_date,
    s.finished,
    s.receipt_date,
    s.creation_date,
    s.customer_reference,
    s.title,
    s.type_id,
    s.contact_db_id,
    s.source_mail_id,
    upper(s.id || '|@|' || COALESCE(t.name, '') ||  '|@|' || COALESCE (s.title, '') || '|@|' || COALESCE (s.city, '')  || '|@|' || COALESCE (s.district, '') || '|@|' || COALESCE (s.customer_reference, '') || '|@|' ) AS searchfield,
    s.departments_due_date
   FROM tbl_statement s,
    tbl_statementtype t
  WHERE (s.type_id = t.id);


-- VW_USER_STATEMENT_SEARCH

CREATE OR REPLACE VIEW vw_user_statement_search AS
 SELECT DISTINCT s.id,
    s.business_key,
    s.city,
    s.district,
    s.due_date,
    s.finished,
    s.receipt_date,
    s.creation_date,
    s.customer_reference,
    s.title,
    s.type_id,
    s.contact_db_id,
    e.user_id,
    s.source_mail_id,
    upper(s.id || '|@|' || COALESCE(t.name, '') ||  '|@|' || COALESCE (s.title, '') || '|@|' || COALESCE (s.city, '')  || '|@|' || COALESCE (s.district, '') || '|@|' || COALESCE (s.customer_reference, '') || '|@|' ) AS searchfield,
    s.departments_due_date
   FROM tbl_statement s,
    tbl_statementtype t,
    tbl_statement_edit_log e
  WHERE ((s.type_id = t.id) AND (e.statement_id = s.id));
 


-- V2_0_2__MultipleUserDepartments

-- create sequence user2department_id_seq

CREATE SEQUENCE tbl_user2department_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;
   
-- create table user2department 

CREATE TABLE tbl_user2department (
    id NUMBER(10) DEFAULT tbl_user2department_id_seq.nextval NOT NULL,
    user_id NUMBER(10) NOT NULL,
    department_id NUMBER(10) NOT NULL,
    stand_in NUMBER(1) NOT NULL
);

ALTER TABLE tbl_user2department ADD
    CONSTRAINT tbl_user2department_pk PRIMARY KEY (id);

ALTER TABLE tbl_user2department ADD
    CONSTRAINT tbl_user2department_uk UNIQUE (user_id, department_id);

-- public.tbl_user2department foreign keys

ALTER TABLE tbl_user2department 
    ADD CONSTRAINT tbl_user2department_fk_1 FOREIGN KEY (user_id) REFERENCES tbl_user(id);
ALTER TABLE tbl_user2department ADD CONSTRAINT tbl_user2department_fk_2 FOREIGN KEY (department_id) REFERENCES tbl_department(id);

-- create entries for existing

INSERT into tbl_user2department (user_id, department_id, stand_in) select id, department_id , 0 from tbl_user where department_id is not null;

-- update view vw_statement_reqdepartment_users, replace user.department_id with ref via tbl_user2department

CREATE OR REPLACE VIEW vw_statement_reqdepartment_users
AS SELECT row_number() OVER (ORDER BY u.id) AS id,
    u.id AS user_id,
    u.first_name,
    u.last_name,
    u.username AS user_name,
    u.email_address,
    wd.statement_id,
    wd.id AS workflow_id,
    ud.department_id,
    d.name AS department_name,
    d.departmentgroup AS department_group,
    rd.contributed AS department_contributed,
    rd.optional AS department_optional,
    ud.stand_in as stand_in
   FROM tbl_user2department ud
     JOIN tbl_user u ON ud.user_id  = u.id
     JOIN tbl_department d ON ud.department_id = d.id
     JOIN tbl_reqdepartment rd ON rd.department_id = d.id
     JOIN tbl_workflowdata wd ON wd.id = rd.workflowdata_id;


-- rm reference from user to department

ALTER table tbl_user DROP COLUMN department_id;


-- V2_0_3__StatementDraft

-- create sequence tbl_statementdraft_id_seq

CREATE SEQUENCE tbl_statementdraft_id_seq
    START WITH 1
    INCREMENT BY 1
    NOMAXVALUE
    NOMINVALUE
    NOCACHE;


-- create table tbl_statementdraft 

CREATE TABLE tbl_statementdraft (
    id NUMBER(10) DEFAULT tbl_statementdraft_id_seq.nextval NOT NULL,
    workflow_id NUMBER(10) NOT NULL,
    user_id NUMBER(10),
    draft CLOB NOT NULL,
    msg character varying(255),
    ts timestamp NOT NULL
);

ALTER TABLE tbl_statementdraft ADD
    CONSTRAINT tbl_statementdraft_pk PRIMARY KEY (id);

-- public.tbl_statementdraft foreign keys

ALTER TABLE tbl_statementdraft ADD CONSTRAINT tbl_statementdraft_fk_1 FOREIGN KEY (workflow_id) REFERENCES tbl_workflowdata(id);
ALTER TABLE tbl_statementdraft ADD CONSTRAINT tbl_statementdraft_fk_2 FOREIGN KEY (user_id) REFERENCES tbl_user(id);

-- copy existing values

INSERT into tbl_statementdraft (workflow_id, draft, ts, msg) select id, draft , current_timestamp, 'initial-migrate'  from tbl_workflowdata where draft is not null;

-- view

CREATE OR REPLACE VIEW vw_statementdraft_history
AS select sd.id as id, row_number() over (PARTITION by sd.workflow_id order by sd.id) as v, wd.statement_id as statement_id, sd.workflow_id as workflow_id, sd.user_id as user_id, u.username as username, u.first_name as user_first_name, u.last_name as user_last_name, sd.ts as ts, sd.msg as msg, sd.draft as draft from tbl_statementdraft sd join tbl_workflowdata wd on wd.id = sd.workflow_id left join tbl_user u on u.id = sd.user_id;


-- delete column workflowdata draft entries

ALTER table tbl_workflowdata DROP COLUMN draft;


-- V2_0_4__UserDetails

-- add phone, fax and initials to table user

ALTER TABLE tbl_user ADD phone character varying(255);
ALTER TABLE tbl_user ADD fax character varying(255);
ALTER TABLE tbl_user ADD initials character varying(255);


-- V2_0_5__CancelStatements

-- add canceled indicator to tbl_statement

ALTER TABLE tbl_statement ADD canceled NUMBER(1) DEFAULT 0 NOT NULL;


-- VW_STATEMENT_SEARCH

CREATE OR REPLACE VIEW vw_statement_search AS
 SELECT s.id,
    s.business_key,
    s.city,
    s.district,
    s.due_date,
    s.finished,
    s.receipt_date,
    s.creation_date,
    s.customer_reference,
    s.title,
    s.type_id,
    s.contact_db_id,
    s.source_mail_id,
    upper(s.id || '|@|' || COALESCE(t.name, '') ||  '|@|' || COALESCE (s.title, '') || '|@|' || COALESCE (s.city, '')  || '|@|' || COALESCE (s.district, '') || '|@|' || COALESCE (s.customer_reference, '') || '|@|' ) AS searchfield,
    s.departments_due_date,
  	s.canceled
   FROM tbl_statement s,
    tbl_statementtype t
  WHERE (s.type_id = t.id);


-- VW_USER_STATEMENT_SEARCH

CREATE OR REPLACE VIEW vw_user_statement_search AS
 SELECT DISTINCT s.id,
    s.business_key,
    s.city,
    s.district,
    s.due_date,
    s.finished,
    s.receipt_date,
    s.creation_date,
    s.customer_reference,
    s.title,
    s.type_id,
    s.contact_db_id,
    e.user_id,
    s.source_mail_id,
    upper(s.id || '|@|' || COALESCE(t.name, '') ||  '|@|' || COALESCE (s.title, '') || '|@|' || COALESCE (s.city, '')  || '|@|' || COALESCE (s.district, '') || '|@|' || COALESCE (s.customer_reference, '') || '|@|' ) AS searchfield,
    s.departments_due_date,
  	s.canceled
   FROM tbl_statement s,
    tbl_statementtype t,
    tbl_statement_edit_log e
  WHERE ((s.type_id = t.id) AND (e.statement_id = s.id));
 
 
-- VW_STATEMENT_POSITION_SEARCH

CREATE OR REPLACE VIEW vw_statement_position_search AS
 SELECT s.id,
    s.due_date,
    s.finished,
    s.title,
    s.type_id,
    w.pos,
    s.canceled
   FROM tbl_statement s,
    tbl_workflowdata w
  WHERE (w.statement_id = s.id);
  
  
-- V_2_0_6__DisableTagsAndStatementtypes


-- disable tags: add standard flag for tags not allowed to disable and disabled flag
ALTER TABLE tbl_tag ADD standard NUMBER(1) DEFAULT 0 NOT NULL;
ALTER TABLE tbl_tag ADD disabled NUMBER(1) DEFAULT 0 NOT NULL;

ALTER TABLE tbl_tag ADD CONSTRAINT tbl_tag_name_u UNIQUE (name);

UPDATE tbl_tag set standard = 1 WHERE id IN ('email-text', 'email', 'outbox', 'consideration', 'statement', 'cover-letter', 'overview', 'expertise', 'plan', 'explanatory-report');

-- disable statementtype: add disabled flag

ALTER TABLE tbl_statementtype ADD disabled NUMBER(1) DEFAULT 0 NOT NULL;

ALTER TABLE tbl_statementtype ADD CONSTRAINT tbl_statementtype_name_u UNIQUE (name);


CREATE OR REPLACE VIEW vw_deletable_tag AS
SELECT * from tbl_tag where id not in (select distinct t.id from tbl_attachment2tag tat join tbl_tag t on t.id = tat.tag_id) and standard != 1 and disabled = 1;


CREATE OR REPLACE VIEW vw_deletable_statementtype AS
SELECT * from tbl_statementtype ts where id not in (select distinct st.id from tbl_statement s join tbl_statementtype st  on st.id = s.type_id) and disabled = 1;


-- increment id sequence by 5 to ensure valid nextval

SELECT tbl_statementtype_id_seq.nextval FROM dual;
SELECT tbl_statementtype_id_seq.nextval FROM dual;
SELECT tbl_statementtype_id_seq.nextval FROM dual;
SELECT tbl_statementtype_id_seq.nextval FROM dual;
SELECT tbl_statementtype_id_seq.nextval FROM dual;



-- add street column to tbl_statement

ALTER TABLE tbl_statement ADD street character varying(255) NULL;


-- VW_STATEMENT_SEARCH

CREATE OR REPLACE VIEW vw_statement_search AS
 SELECT s.id,
    s.business_key,
    s.city,
    s.district,
    s.due_date,
    s.finished,
    s.receipt_date,
    s.creation_date,
    s.customer_reference,
    s.title,
    s.type_id,
    s.contact_db_id,
    s.source_mail_id,
   upper(s.id || '|@|' || COALESCE(t.name, '') ||  '|@|' || COALESCE (s.title, '') || '|@|' || COALESCE (s.city, '')  || '|@|' || COALESCE (s.street, '')  || '|@|' || COALESCE (s.district, '') || '|@|' || COALESCE (s.customer_reference, '') || '|@|' ) AS searchfield,
    s.departments_due_date,
  	s.canceled,
  	s.street
   FROM tbl_statement s,
    tbl_statementtype t
  WHERE (s.type_id = t.id);


-- VW_USER_STATEMENT_SEARCH

CREATE OR REPLACE VIEW vw_user_statement_search AS
 SELECT DISTINCT s.id,
    s.business_key,
    s.city,
    s.district,
    s.due_date,
    s.finished,
    s.receipt_date,
    s.creation_date,
    s.customer_reference,
    s.title,
    s.type_id,
    s.contact_db_id,
    e.user_id,
    s.source_mail_id,
    upper(s.id || '|@|' || COALESCE(t.name, '') ||  '|@|' || COALESCE (s.title, '') || '|@|' || COALESCE (s.city, '')  || '|@|' || COALESCE (s.street, '')  || '|@|' || COALESCE (s.district, '') || '|@|' || COALESCE (s.customer_reference, '') || '|@|' ) AS searchfield,
    s.departments_due_date,
  	s.canceled,
    s.street
   FROM tbl_statement s,
    tbl_statementtype t,
    tbl_statement_edit_log e
  WHERE ((s.type_id = t.id) AND (e.statement_id = s.id));



-- V_2_0_8__MoreInfo

ALTER TABLE tbl_statement ADD more_info character varying(255) NULL;


-- VW_STATEMENT_SEARCH

CREATE OR REPLACE VIEW vw_statement_search AS
 SELECT s.id,
    s.business_key,
    s.city,
    s.district,
    s.due_date,
    s.finished,
    s.receipt_date,
    s.creation_date,
    s.customer_reference,
    s.more_info,
    s.title,
    s.type_id,
    s.contact_db_id,
    s.source_mail_id,
   upper(s.id || '|@|' || COALESCE(t.name, '') ||  '|@|' || COALESCE (s.title, '') || '|@|' || COALESCE (s.city, '')  || '|@|' || COALESCE (s.street, '')  || '|@|' || COALESCE (s.district, '') || '|@|' || COALESCE (s.customer_reference, '') || '|@|' ) AS searchfield,
    s.departments_due_date,
  	s.canceled,
    s.street,
    s.more_info
   FROM tbl_statement s,
    tbl_statementtype t
  WHERE (s.type_id = t.id);


-- VW_USER_STATEMENT_SEARCH

CREATE OR REPLACE VIEW vw_user_statement_search AS
 SELECT DISTINCT s.id,
    s.business_key,
    s.city,
    s.district,
    s.due_date,
    s.finished,
    s.receipt_date,
    s.creation_date,
    s.customer_reference,
    s.title,
    s.type_id,
    s.contact_db_id,
    e.user_id,
    s.source_mail_id,
   upper(s.id || '|@|' || COALESCE(t.name, '') ||  '|@|' || COALESCE (s.title, '') || '|@|' || COALESCE (s.city, '')  || '|@|' || COALESCE (s.street, '')  || '|@|' || COALESCE (s.district, '') || '|@|' || COALESCE (s.customer_reference, '') || '|@|' ) AS searchfield,
    s.departments_due_date,
  	s.canceled,
    s.street,
  	s.more_info
   FROM tbl_statement s,
    tbl_statementtype t,
    tbl_statement_edit_log e
  WHERE ((s.type_id = t.id) AND (e.statement_id = s.id));