diff --git a/script/Script_Database.sql b/script/Script_Database.sql
new file mode 100644
index 0000000000000000000000000000000000000000..2d838f0ae76294a75315371d54d32e3bf4761170
--- /dev/null
+++ b/script/Script_Database.sql
@@ -0,0 +1,620 @@
+CREATE  FUNCTION update_ISSUER()
+RETURNS TRIGGER AS $$
+BEGIN
+    NEW.ISSUER_Update = session_user;
+    RETURN NEW;
+END;
+$$ language 'plpgsql';
+
+----------------------------------
+--drop table Finance_Request;
+create table Finance_Request (
+	-----Bearbeitung
+	OA_ID VARCHAR(17) NOT NULL Constraint Blank_Check_OA_ID CHECK (ltrim(OA_ID) = OA_ID AND rtrim(OA_ID) = OA_ID),
+	ts_form TIMESTAMP NOT NULL DEFAULT NOW(),
+	Ticket_Number VARCHAR (17) Constraint Blank_Check_Ticket_Number CHECK (ltrim(Ticket_Number) = Ticket_Number AND rtrim(Ticket_Number) = Ticket_Number),
+	Decision VARCHAR (1) NOT NULL DEFAULT 'o' CONSTRAINT Value_Check_Decision CHECK (Decision IN ('y','n','o')),
+	Reason_Denied VARCHAR(100),
+	Date_Approved DATE,
+	Postpayment_Check VARCHAR (1) NOT NULL DEFAULT 'o' CONSTRAINT Value_Check_Postpayment_Check CHECK (Postpayment_Check IN ('y','n','o')),
+	Comment_Postpayment_Check VARCHAR (250),
+	Report VARCHAR (40),
+	Processing_Status VARCHAR(50),
+	Processing_Comment TEXT,
+	-----Antragsteller
+	First_Name VARCHAR(40) NOT NULL Constraint Blank_Check_First_Name CHECK (ltrim(First_Name) = First_Name AND rtrim(First_Name) = First_Name),
+	Family_Name VARCHAR(40) NOT NULL Constraint Blank_Check_Family_Name CHECK (ltrim(Family_Name) = Family_Name AND rtrim(Family_Name) = Family_Name),
+	ORCID VARCHAR(19) Constraint Blank_Check_ORCID CHECK (ltrim(ORCID) = ORCID AND rtrim(ORCID) = ORCID),
+	DFG_number VARCHAR(200),
+	Institution VARCHAR(70) DEFAULT 'TU Dresden' CONSTRAINT Blank_Check_Institution CHECK (trim(Institution) = Institution),
+	School VARCHAR(50) NOT NULL Constraint Blank_Check_School CHECK (ltrim(School) = School AND rtrim(School) = School),
+	Faculty VARCHAR(50) Constraint Blank_Check_Faculty CHECK (ltrim(Faculty) = Faculty AND rtrim(Faculty) = Faculty),
+	Department VARCHAR(70) Constraint Blank_Check_Department CHECK (ltrim(Department) = Department AND rtrim(Department) = Department),
+	Institute VARCHAR(150) Constraint Blank_Check_Institute CHECK (ltrim(Institute) = Institute AND rtrim(Institute) = Institute),
+	Center VARCHAR(150) Constraint Blank_Check_Center CHECK (ltrim(Center) = Center AND rtrim(Center) = Center),
+	Chair VARCHAR(150) Constraint Blank_Check_Chair CHECK (ltrim(Chair) = Chair AND rtrim(Chair) = Chair),
+	Workgroup VARCHAR(150) Constraint Blank_Check_Workgroup CHECK (ltrim(Workgroup) = Workgroup AND rtrim(Workgroup) = Workgroup),
+	----Metadaten
+	Publisher VARCHAR(150) NOT NULL Constraint Blank_Check_Publisher CHECK (ltrim(Publisher) = Publisher AND rtrim(Publisher) = Publisher),
+	Journal VARCHAR(150) NOT NULL Constraint Blank_Check_Journal CHECK (ltrim(Journal) = Journal AND rtrim(Journal) = Journal),
+	EISSN VARCHAR(9) DEFAULT 'XXXX-XXXX',
+	Title VARCHAR(400) NOT NULL Constraint Blank_Check_Title CHECK (ltrim(title) = title AND rtrim(title) = title),
+	Article_Type VARCHAR(40) Constraint Blank_Check_Article_Type CHECK (ltrim(Article_Type) = Article_Type AND rtrim(Article_Type) = Article_Type),
+	Manuskript_ID VARCHAR(100) Constraint Blank_Check_Manuskript_ID CHECK (ltrim(Manuskript_ID) = Manuskript_ID AND rtrim(Manuskript_ID) = Manuskript_ID),
+	DOI VARCHAR(100) Constraint Blank_Check_DOI CHECK (ltrim(DOI) = DOI AND rtrim(DOI) = DOI),
+	Research_Article VARCHAR (1) NOT NULL DEFAULT 'o' CONSTRAINT Value_Check_Research_Article CHECK (Research_Article IN ('y','n','o')),
+	Date_Submitting DATE,
+	Date_Acceptance DATE,
+	Date_Publishing DATE,
+	License VARCHAR(16) Constraint Blank_Check_License CHECK (ltrim(License) = License AND rtrim(License) = License),
+	Media_Type VARCHAR(12) NOT NULL Constraint Blank_Check_Media_Type CHECK (ltrim(Media_Type) = Media_Type AND rtrim(Media_Type) = Media_Type),
+	ISSUER varchar(30) default session_user,
+	ISSUER_Update varchar(30) default session_user,
+	PRIMARY KEY(OA_ID)
+	);
+	
+CREATE TRIGGER update_ISSUER_request
+    BEFORE UPDATE
+    ON
+        Finance_Request
+    FOR EACH ROW
+EXECUTE PROCEDURE update_ISSUER();
+
+
+CREATE INDEX idx_Finance_Request_doi ON Finance_Request(doi);
+EXPLAIN SELECT * FROM Finance_Request WHERE doi = '10.1186/s12871-021-01264-2';
+
+select * from Finance_Request;
+
+-----------------------------------------------------------------------------------------------------------------------------
+--drop table Finance_Invoice;	
+create table Finance_Invoice (
+	ts_form TIMESTAMP NOT NULL DEFAULT NOW(),
+	Invoice_Number VARCHAR(100) Constraint Blank_Check_Invoice_Number CHECK (ltrim(Invoice_Number) = Invoice_Number AND rtrim(Invoice_Number) = Invoice_Number),
+	Ticket_Number VARCHAR (17) Constraint Blank_Check_Ticket_Number CHECK (ltrim(Ticket_Number) = Ticket_Number AND rtrim(Ticket_Number) = Ticket_Number),
+	Publisher VARCHAR(150) NOT NULL Constraint Blank_Check_Publisher CHECK (ltrim(Publisher) = Publisher AND rtrim(Publisher) = Publisher),
+	Date_Invoice_Due DATE,
+	Date_Invoice_Receipt DATE,
+	Date_Factually_Accurate DATE,
+	Date_Hauptkasse DATE,
+	Comment_Invoice VARCHAR(100),
+	ISSUER varchar(30) default session_user,
+	ISSUER_Update varchar(30) default session_user,
+	PRIMARY KEY(Invoice_Number)
+	);
+	
+CREATE TRIGGER update_ISSUER_Invoice
+    BEFORE UPDATE
+    ON
+        Finance_Invoice
+    FOR EACH ROW
+EXECUTE PROCEDURE update_ISSUER();
+	
+select * from Finance_Invoice;
+
+---------------------------------------------------------------------------
+
+--https://intranet.slub-dresden.de/pages/viewpage.action?pageId=187270120	
+--drop table Finance_Budget;
+create table Finance_Budget (
+	ts_form TIMESTAMP NOT NULL DEFAULT NOW(),
+	Budget_ID VARCHAR(20),
+	Amount_budget_brut NUMERIC(9,2),
+	Name_Budget VARCHAR(100),
+	Budget_Year INT,
+	Kostenart VARCHAR(20),
+	Produkt VARCHAR(20),
+	Kostenstelle VARCHAR(20),
+	Titelgruppe VARCHAR(20),
+	Central_Paying Boolean,		--neu: Wird zentral über unsere Transformationsverträge/Publikationsfonds gezahlt oder dezentral?
+	Budget_Comment VARCHAR(100),
+	ISSUER VARCHAR(30) default session_user,
+	ISSUER_Update VARCHAR(30) default session_user,
+	PRIMARY KEY(Budget_ID)
+	);
+	
+CREATE TRIGGER update_ISSUER_Budget
+    BEFORE UPDATE
+    ON
+        Finance_Budget
+    FOR EACH ROW
+EXECUTE PROCEDURE update_ISSUER();
+
+--------------------------------------------------------------------------
+
+--drop table Finance_Cost;
+create table Finance_Cost (
+	ts_form TIMESTAMP NOT NULL DEFAULT NOW(),
+	PK_Cost INT GENERATED ALWAYS AS IDENTITY,
+	OA_ID VARCHAR(17) Constraint Blank_Check_OA_ID CHECK (ltrim(OA_ID) = OA_ID AND rtrim(OA_ID) = OA_ID),
+	Invoice_Number VARCHAR(100) Constraint Blank_Check_Invoice_Number CHECK (ltrim(Invoice_Number) = Invoice_Number AND rtrim(Invoice_Number) = Invoice_Number),
+	Budget_ID VARCHAR(20) DEFAULT 'TUD_EL_2023' Constraint Blank_Check_Budget_ID CHECK (ltrim(Budget_ID) = Budget_ID AND rtrim(Budget_ID) = Budget_ID),
+	Cost_Type VARCHAR(100) Constraint Blank_Check_Cost_Type CHECK (ltrim(Cost_Type) = Cost_Type AND rtrim(Cost_Type) = Cost_Type),
+	Contract_Type VARCHAR(50) Constraint Blank_Check_Contract_Type CHECK (ltrim(Contract_Type) = Contract_Type AND rtrim(Contract_Type) = Contract_Type),
+	Amount_net NUMERIC(8,2),
+	Currency VARCHAR(3) Constraint Blank_Check_Currency CHECK (ltrim(Currency) = Currency AND rtrim(Currency) = Currency),
+	Amount_euro_net NUMERIC(8,2),
+	VAT_Percent NUMERIC(3,2) DEFAULT 1.19,
+	Amount_payment_brut NUMERIC(8,2), --Grüne Spalte
+--	Amount_euro_brut NUMERIC(8,2), als virtuelle Spalte
+	Comment_Cost VARCHAR(250),
+	ISSUER varchar(30) default session_user,
+	ISSUER_Update varchar(30) default session_user,
+	PRIMARY KEY(PK_Cost)
+	);
+
+CREATE TRIGGER update_ISSUER_Cost
+    BEFORE UPDATE
+    ON
+        Finance_Cost
+    FOR EACH ROW
+EXECUTE PROCEDURE update_ISSUER();
+
+
+select * from finance_cost where oa_id = 'OA2023_191'
+Handling fee!
+
+Invoice GAMES-44132-APF-0051635 Handling_Fee 158,44
+
+------------------------------------
+------------------------------------
+
+--Tabelle für MedFak/Uniklinikum
+drop table Finance_MF_Strukturen;
+create table Finance_MF_Strukturen (
+	ts_form TIMESTAMP NOT NULL DEFAULT NOW(),
+	PK_MF_Strukturen INT GENERATED ALWAYS AS IDENTITY,
+	Institution VARCHAR(100) NOT NULL Constraint Blank_Check_Institution CHECK (trim(Institution) = Institution),
+	Zuordnung VARCHAR(100) NOT NULL Constraint Blank_Check_Zuordnung CHECK (trim(Zuordnung) = Zuordnung),
+	Kurzbezeichnung VARCHAR(30) NOT NULL Constraint Blank_Check_Kurzbezeichnung CHECK (trim(Kurzbezeichnung) = Kurzbezeichnung),
+	Langbezeichnung VARCHAR(150) NOT NULL Constraint Blank_Check_Langbezeichnung CHECK (trim(Langbezeichnung) = Langbezeichnung),
+	PRIMARY KEY(PK_MF_Strukturen)
+)
+
+drop view view_Finance_MF_Strukturen;
+create view view_Finance_MF_Strukturen as
+select distinct Kurzbezeichnung from Finance_MF_Strukturen limit 10;
+
+create table Table_MF_Struk as
+select distinct Kurzbezeichnung from Finance_MF_Strukturen limit 10;
+
+
+
+
+
+
+
+
+select * from view_Finance_MF_Strukturen
+
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','ANA','Institut für Anatomie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','ASM','Institut und Poliklinik für Arbeits- und Sozialmedizin');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','CarL','Carus Lehrzentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','FTE','Forschungsgruppe Tissue Engineering');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','GES','Institut für Geschichte der Medizin');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','IMB','Institut für Medizinische Informatik und Biometrie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','IMU','Institut für Immunologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','KGE','Institut für Klinische Genetik');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','KKS','Koordinierungszentrum für Klinische Studien Dresden (KKS-DD)');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','KPH','Institut für Klinische Pharmakologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','KSM','Klinisches Sensoring und Monitoring');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','MBIO','Arbeitsbereich Medizinische Biologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','MEDSYS','Medizinische Systembiologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','MIB','Institut für Medizinische Mikrobiologie und Hygiene');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','MITZ','Medizinisch-Interprofessionelles-Trainingszentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','MOLDIA/MOD','Molekulare Diabetologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','MPH','Medizinische Physik');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','PCH','Institut für Physiologische Chemie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','PHT','Institut für Pharmakologie und Toxikologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','PHY','Institut für Physiologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','REM','Institut für Rechtsmedizin');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','VIR','Institut für Virologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','ZMI','Zetrum für Medizinische Informatik');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','Institute und weitere Einrichtungen der MF','ZEGV','Zentrum für evidenzbasierte Gesundheitsversorgung');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','gemeinsame Einrichtungen der MFD mit externen Partnern','BIOTEC','Biotechnology Center (inkl. Forschungsgruppe (Molecular) Tissue Engineering (Biotec/MF))');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','gemeinsame Einrichtungen der MFD mit externen Partnern','CRTD','Center for Regenerative Therapies Dresden (CRTD) - DFG-Forschungszentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','gemeinsame Einrichtungen der MFD mit externen Partnern','DKTK','Deutsches Konsortium für Translationale Krebsforschung (Partner: DKTK, DKFZ)');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','gemeinsame Einrichtungen der MFD mit externen Partnern','DZD-PLID','Deutsches Zentrum für Diabetesforschung - Paul Langerhans Institut Dresden (Partner: HMGU)');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','gemeinsame Einrichtungen der MFD mit externen Partnern','DZNE','Deutsches Zentrum für Neurodegenerative Erkrankungen, Standort Dresden (Partner: DZNE der Helmholtzgemeinschaft)');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','gemeinsame Einrichtungen der MFD mit externen Partnern','NCT','Nationales Centrum für Tumorerkrankungen (Partner: UKD, MFD, HZDR, DKFZ)');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('TU, Medizinische Fakultät Carl Gustav Carus Dresden','gemeinsame Einrichtungen der MFD mit externen Partnern','"OncoRay"/ZIC','Nationales Zentrum für Strahlenforschung in der Onkologie (Partner/Träger: UKD, HZDR)');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zentralbereiche des UKD','KIF','Klinische Infektiologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zentralbereiche des UKD','QM/QRM','Zentralbereich Qualitäts- und Medizinisches Risikomanagement/Qualitäts- und Medizinisches Risikomanagement');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Institute des UKD','IKL','Institut für Klinische Chemie und Laboratoriumsmedizin');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Institute des UKD','NRA','Institut und Poliklinik für Diagnostische und Interventionelle Neuroradiologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Institute des UKD','PAT','Institut für Pathologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Institute des UKD','RAD','Institut und Poliklinik für diagnostische und interventionelle Radiologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','AMED','Medizinische Klinik und Poliklinik III, Bereich Allgemeinmedizin');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','ANE','Klinik und Poliklinik für Anaesthesiologie und Intensivtherapie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','AUG','Klinik und Poliklinik für Augenheilkunde');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','DER','Klinik und Poliklinik für Dermatologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','GYN','Klinik und Poliklinik für Frauenheilkunde und Geburtshilfe');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','HNO','Klinik und Poliklinik für Hals-Nasen-Ohrenheilkunde');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','HZ-HCH','Klinik für Kardiochirurgie (am Herzzentrum)');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','KCH','Klinik und Poliklinik für Kinderchirurgie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','KIK','Klinik und Poliklinik für Kinder- und Jugendmedizin');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','KIK-NP','Klinik und Poliklinik für Kinder- und Jugendmedizin, Abteilung für Neuropädiatrie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','KJP','Klinik und Poliklinik für Kinder- und Jugendpsychiatrie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','MK1','Medizinische Klinik und Poliklinik I');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','MK3','Medizinische Klinik und Poliklinik III');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','HZ-KAR','Medizinische Klinik mit Schwerpunkt Kardiologie (am Herzzentrum)');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','MPS','Medizinische Psychologie und Medizinische Soziologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','NCH','Klinik und Poliklinik für Neurochirurgie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','NEU','Klinik und Poliklinik für Neurologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','NUK','Klinik und Poliklinik für Nuklearmedizin');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','PSM','Psychosoziale Medizin und Neurowissenschaften');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','PSO','Klinik und Poliklinik für Psychotherapie und Psychosomatik');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','PSY','Klinik und Poliklinik für Psychiatrie und Psychotherapie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','STR','Klinik und Poliklinik für Strahlentherapie und Radioonkologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','TRA','Bereich Transfusionsmedizin');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','URO','Klinik und Poliklinik für Urologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','VTG','Klinik und Poliklinik für Viszeral-, Thorax- und Gefäßchirurgie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','ZCHFOR/CFO','Abteilung Chirurgische Forschung');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','ZIM','Zentrum für Innere Medizin');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Kliniken, Polikliniken, selbständige Abteilungen des UKD','ZSG','Zentrum für Seelische Gesundheit');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zentrum für Muskuloskelettale Medizin','OUC','UniversitätsCentrum für Orthopädie und Unfallchirurgie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zentrum für Muskuloskelettale Medizin','PHCH','Abteilung für Plastische und Handchirurgie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zentrum für Muskuloskelettale Medizin','TFO','Zentrum für Translationale Knochen-, Gelenk- und Weichgewebeforschung');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zentrum für Muskuloskelettale Medizin','MKG','Klinik und Poliklinik für Mund-, Kiefer- und Gesichtschirurgie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zahnmedizin','KFO','Poliklinik für Kieferorthopädie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zahnmedizin','KZH','Kinderzahnheilkunde');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zahnmedizin','PAR','Poliklinik für Parodontologie');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zahnmedizin','ZAP','Poliklinik für Zahnärztliche Prothetik');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Zahnmedizin','ZER','Poliklinik für Zahnerhaltung');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','EKFZ','Else-Kröner-Fresenius-Zentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','DINZ','Diagnostisch-Internistisch-Neurologisches Zentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','DNVC','Dresdner NeurovaskuläresCentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','GKZ','Gynäkologisches Krebszentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','HTZ','Hauttumorzentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','MKG-UPÄC','Universitäts PlastischÄsthetisches Centrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','PCA','Prostatakarzinomzentrum am UniversitätsKrebsCentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','RBZ','Regionales Brustzentrum Dresden');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','SCIC','Sächsisches Cochlear Implant Centrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','SPZ','Sozialpädiatrisches Zentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','UAC','Universitäts Allergiecentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','UCARE','UniversitätsCentrum für Autoimmun- und Rheumatische Erkrankungen');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','UCC','Universitäts KrebsCentrum Dresden (University Cancer Center)');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','UCGA','UniversitätsCentrum für Gesundes Altern (in der MK3)');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','UGC','Universitäts GefäßCentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','UKF','Universitäts Kinder- Frauenzentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','UMC','Universitäts MukoviszidoseCentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','UPC','Universitäts PalliativCentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','UPZ','Universitäts-Physiotherapie-Zentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','USC','Universitäts SchmerzCentrum');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','USE','UniversitätsCentrum für Seltene Erkrankungen');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','ZFD','Zentrum Familiärer Darmkrebs');
+INSERT INTO Finance_MF_Strukturen (Institution, Zuordnung, Kurzbezeichnung, Langbezeichnung) VALUES ('Universitätsklinikum Carl Gustav Carus Dresden','Interdisziplinäre Zentren des UKD','HZ-ANÄ','Institut für Kardioanästhesie (am Herzzentrum)');
+
+select * from Finance_MF_Strukturen;
+
+
+create table Finance_MF (
+	ts_form TIMESTAMP NOT NULL DEFAULT NOW(),
+	Belegnummer VARCHAR(10) NOT NULL,
+	Bemerkungen TEXT,
+	Vorname VARCHAR(40) NOT NULL Constraint Blank_Check_Vorname CHECK (trim(Vorname) = Vorname),
+	Nachname VARCHAR(40) NOT NULL Constraint Blank_Check_Nachname CHECK (trim(Nachname) = Nachname),
+	Einrichtung VARCHAR(100) NOT NULL Constraint Blank_Check_Einrichtung CHECK (trim(Einrichtung) = Einrichtung),
+	Verlag VARCHAR(150) NOT NULL Constraint Blank_Check_Verlag CHECK (trim(Verlag) = Verlag),
+	Journal VARCHAR(150) NOT NULL Constraint Blank_Check_Journal2 CHECK (trim(Journal) = Journal),
+	--OA.Status
+	Title VARCHAR(400) NOT NULL Constraint Blank_Check_Journal CHECK (trim(Journal) = Journal),
+	--Article.Type
+	Manuskript_ID VARCHAR(40) Constraint Blank_Check_Manuskript_ID CHECK (trim(Manuskript_ID) = Manuskript_ID),
+	DOI VARCHAR(100) NOT NULL Constraint Blank_Check_DOI CHECK (trim(DOI) = DOI),
+	Datum_Akzeptanz DATE,
+	Datum_Veröffentlichung DATE,
+	Gebühr_Netto NUMERIC(8,2),
+	Währung VARCHAR(3) Constraint Blank_Check_Währung CHECK (trim(Währung) = Währung),
+	Gebühr_Euro_Netto NUMERIC(8,2),
+	Gebühr_Euro_Brutto NUMERIC(8,2),
+	Gebührenart VARCHAR(20),
+	Budget VARCHAR(20),
+	Kostenstelle VARCHAR(20),
+	Fonds VARCHAR(20),
+	Datum_Rechnung DATE,
+	Datum_Rechnungsfälligkeit DATE,
+	Rechnungsnummer VARCHAR(100) Constraint Blank_Check_Rechnungsnummer CHECK (trim(Rechnungsnummer) = Rechnungsnummer),
+	Datum_Buchung DATE,
+	Haushaltskasse_Brutto NUMERIC(8,2),
+	Haushaltsjahr_Rechnung INT,
+	ISSUER VARCHAR(30) default session_user,
+	ISSUER_Update VARCHAR(30) default session_user,
+	PRIMARY KEY(Belegnummer)
+)
+
+select * from Finance_MF
+
+
+
+
+
+
+
+---------------------------------------
+---------------------------------------
+
+--https://stackoverflow.com/questions/39361426/postgres-query-for-matrix-table
+--create extension if not exists tablefunc;
+
+--drop view View_Budget_Kalkulation;
+CREATE VIEW View_Budget_Kalkulation AS
+WITH BASIS AS
+(
+select distinct a.oa_id, a.amount_net, a.currency, a.amount_euro_net, a.Amount_payment_brut, a.Budget_ID, Budget_Year, date_factually_accurate, b.Amount_budget_brut as Budget,
+CASE
+WHEN a.Amount_payment_brut is null and currency = 'EUR'  THEN ROUND(a.amount_net * VAT_Percent,2)
+WHEN a.Amount_payment_brut is null and currency <> 'EUR'  THEN ROUND(a.amount_euro_net * VAT_Percent,2)
+ELSE a.Amount_payment_brut END AS Amount,
+CASE
+	WHEN a.Amount_payment_brut is null AND date_factually_accurate is null THEN 'FESTLEGUNG'
+	WHEN a.Amount_payment_brut is not null THEN 'ZAHLUNG'
+	ELSE 'ZAHLUNGSANORDNUNG' END AS INVOICE_STATUS	
+from Finance_Cost a
+JOIN Finance_Budget b ON (a.Budget_id = b.Budget_id)
+LEFT JOIN Finance_Invoice c ON (a.Invoice_number = c.Invoice_number)
+),
+basis1 AS
+(
+select oa_id, Budget_Year, Budget_ID, cast(Amount as money) AS Amount, cast(Budget as money) as Budget, INVOICE_STATUS
+FROM basis
+),
+basis2 AS
+(
+select distinct Budget_Year, INVOICE_STATUS, Budget_ID,
+SUM(Amount) OVER (PARTITION BY INVOICE_STATUS, Budget_ID) AS SUM_AMOUNT
+FROM basis1
+UNION
+select distinct Budget_Year, 'BEWILLIGT' AS INVOICE_STATUS, Budget_ID,
+SUM(Amount) OVER (PARTITION BY Budget_ID) AS SUM_AMOUNT
+FROM basis1
+UNION
+select distinct Budget_Year, 'BUDGET' AS INVOICE_STATUS, Budget_ID,
+Budget AS SUM_AMOUNT
+FROM basis1
+UNION
+select distinct Budget_Year, 'SALDO' AS INVOICE_STATUS, Budget_ID,
+Budget - SUM(Amount) OVER (PARTITION BY Budget_ID) AS SUM_AMOUNT
+FROM basis1
+)
+select distinct 
+CASE
+	WHEN INVOICE_STATUS = 'BEWILLIGT' THEN '1_'
+	WHEN INVOICE_STATUS = 'FESTLEGUNG' THEN '2_'
+	WHEN INVOICE_STATUS = 'ZAHLUNGSANORDNUNG' THEN '3_'
+	WHEN INVOICE_STATUS = 'ZAHLUNG' THEN '4_'
+	WHEN INVOICE_STATUS = 'BUDGET' THEN '5_'
+	ELSE '6_' END AS RANG,
+Budget_Year, INVOICE_STATUS, Budget_ID, SUM_AMOUNT
+from basis2;
+
+
+select * from View_Budget_Kalkulation;
+
+--drop view View_Extern_Budget_2019;
+CREATE VIEW View_Extern_Budget_2019 AS
+Select * from
+  crosstab('select CONCAT(RANG, INVOICE_STATUS), Budget_ID,SUM_AMOUNT from View_Budget_Kalkulation where Budget_Year = 2019 order by 1,2')
+  as View_Budget_Kalkulation(INVOICE_STATUS text, SLUB_2019 Money, TUD_EPC_2019 Money, TUD_I_2019 Money);
+
+--drop view View_Extern_Budget_2020;
+CREATE VIEW View_Extern_Budget_2020 AS
+Select * from
+  crosstab('select CONCAT(RANG, INVOICE_STATUS), Budget_ID,SUM_AMOUNT from View_Budget_Kalkulation where Budget_Year = 2020 order by 1,2')
+  as View_Budget_Kalkulation(INVOICE_STATUS text, DFG_2020 Money, DFG_PP_2020 Money, SLUB_2020 Money, TUD_EL_2020 Money, TUD_EPC_2020 Money);
+  
+select * from View_Extern_Budget_2020;  
+
+--drop view View_Extern_Budget_2021;
+CREATE VIEW View_Extern_Budget_2021 AS
+Select * from
+  crosstab('select CONCAT(RANG, INVOICE_STATUS), Budget_ID,SUM_AMOUNT from View_Budget_Kalkulation where Budget_Year = 2021 order by 1,2')
+  as View_Budget_Kalkulation(INVOICE_STATUS text, DFG_2021 Money, DFG_PP_2021 Money, OA_SAX_2021 Money, SLUB_2021 Money, TUD_EL_2021 Money, TUD_KOFIN_2021 Money);  
+  
+select * from View_Extern_Budget_2021;
+
+--drop view View_Extern_Budget_2022;
+CREATE VIEW View_Extern_Budget_2022 AS
+Select * from
+  crosstab('select CONCAT(RANG, INVOICE_STATUS), Budget_ID,SUM_AMOUNT from View_Budget_Kalkulation where Budget_Year = 2022 order by 1,2')
+  as View_Budget_Kalkulation(INVOICE_STATUS text, DFG_2022 Money, MF_DM_2022 Money, MF_HA_2022 Money, SLUB_2022 Money, TUD_DM_2022 Money, TUD_EL_2022 Money, TUD_HA_2022 Money);
+  
+select * from View_Extern_Budget_2022;
+
+
+--drop view View_Extern_Budget_2023;
+CREATE VIEW View_Extern_Budget_2023 AS
+Select * from
+  crosstab('select CONCAT(RANG, INVOICE_STATUS), Budget_ID,SUM_AMOUNT from View_Budget_Kalkulation where Budget_Year = 2023 order by 1,2')
+  as View_Budget_Kalkulation(INVOICE_STATUS text, DFG_2023 Money, DFG_PP_2023 Money, DFG_TUD_2023 Money, MF_DM_2023 Money, MF_HA_2023 Money, SLUB_2023 Money, TUD_DM_2023 Money, TUD_EL_2023 Money, TUD_HA_2023 Money);
+  
+select * from View_Extern_Budget_2023;
+
+
+
+drop view View_All_Tables_2022;
+CREATE VIEW View_All_Tables_2022 AS
+SELECT DISTINCT a.oa_id, a.ticket_number, a.decision, a.reason_denied, a.date_approved, a.postpayment_check, a.comment_postpayment_check, a.report, a.processing_status, a.processing_comment, a.research_article, a.first_name, a.family_name, a.dfg_number, a.institution, a.school, a.faculty, a.publisher, a.journal, a.eissn, a.title, a.article_type, a.manuskript_id, a.doi, a.date_acceptance, a.date_publishing, a.license, a.media_type,
+b.budget_id, d.budget_year, b.cost_type, b.contract_type, b.amount_net, b.currency, b.amount_euro_net, b.vat_percent,
+CASE
+WHEN b.Amount_payment_brut is null and currency = 'EUR' THEN ROUND(b.amount_net * VAT_Percent,2)
+WHEN b.Amount_payment_brut is null and currency <> 'EUR' THEN ROUND(b.amount_euro_net * VAT_Percent,2)
+ELSE b.Amount_payment_brut END AS amount_euro_brut,
+b.amount_payment_brut, b.comment_cost,
+CASE
+	WHEN decision = 'n' THEN 'ABLEHNUNG'
+	WHEN b.Amount_payment_brut is null AND date_factually_accurate is null THEN 'FESTLEGUNG'
+	WHEN b.Amount_payment_brut is not null THEN 'ZAHLUNG'
+	ELSE 'ZAHLUNGSANORDNUNG' END AS INVOICE_STATUS,
+c.invoice_number, c.date_invoice_due, c.date_invoice_receipt, c.date_factually_accurate, c.date_hauptkasse, c.comment_invoice
+FROM Finance_Request a
+LEFT JOIN Finance_Cost b ON (a.OA_ID = b.OA_ID)
+LEFT JOIN Finance_Invoice c ON (b.Invoice_number = c.Invoice_number)
+LEFT JOIN Finance_Budget d ON (b.Budget_id = d.Budget_id)
+where budget_year = 2022 OR Comment_cost like '%_2022%';
+
+select * from View_All_Tables_2022;
+
+drop view View_All_Tables_2023;
+CREATE VIEW View_All_Tables_2023 AS
+SELECT DISTINCT a.oa_id, a.ticket_number, a.decision, a.reason_denied, a.date_approved, a.postpayment_check, a.comment_postpayment_check, a.report, a.processing_status, a.processing_comment, a.research_article, a.first_name, a.family_name, a.dfg_number, a.institution, a.school, a.faculty, a.publisher, a.journal, a.eissn, a.title, a.article_type, a.manuskript_id, a.doi, a.date_acceptance, a.date_publishing, a.license, a.media_type,
+b.budget_id, d.budget_year, b.cost_type, b.contract_type, b.amount_net, b.currency, b.amount_euro_net, b.vat_percent,
+CASE
+WHEN b.Amount_payment_brut is null and currency = 'EUR' THEN ROUND(b.amount_net * VAT_Percent,2)
+WHEN b.Amount_payment_brut is null and currency <> 'EUR' THEN ROUND(b.amount_euro_net * VAT_Percent,2)
+ELSE b.Amount_payment_brut END AS amount_euro_brut,
+b.amount_payment_brut, b.comment_cost,
+CASE
+	WHEN decision = 'n' THEN 'ABLEHNUNG'
+	WHEN b.Amount_payment_brut is null AND date_factually_accurate is null THEN 'FESTLEGUNG'
+	WHEN b.Amount_payment_brut is not null THEN 'ZAHLUNG'
+	ELSE 'ZAHLUNGSANORDNUNG' END AS INVOICE_STATUS,
+c.invoice_number, c.date_invoice_due, c.date_invoice_receipt, c.date_factually_accurate, c.date_hauptkasse, c.comment_invoice
+FROM Finance_Request a
+LEFT JOIN Finance_Cost b ON (a.OA_ID = b.OA_ID)
+LEFT JOIN Finance_Invoice c ON (b.Invoice_number = c.Invoice_number)
+LEFT JOIN Finance_Budget d ON (b.Budget_id = d.Budget_id)
+where budget_year = 2023 OR Comment_cost like '%_2023%';
+
+select * from View_All_Tables_2023;
+
+drop view View_All_Tables;
+CREATE VIEW View_All_Tables AS
+SELECT DISTINCT a.oa_id, a.ticket_number, a.decision, a.reason_denied, a.date_approved, a.postpayment_check, a.comment_postpayment_check, a.report, a.processing_status, a.processing_comment, a.research_article, a.first_name, a.family_name, a.dfg_number, a.institution, a.school, a.faculty, a.publisher, a.journal, a.eissn, a.title, a.article_type, a.manuskript_id, a.doi, a.date_acceptance, a.date_publishing, a.license, a.media_type,
+b.budget_id, d.budget_year, b.cost_type, b.contract_type, b.amount_net, b.currency, b.amount_euro_net, b.vat_percent,
+CASE
+WHEN b.Amount_payment_brut is null and currency = 'EUR' THEN ROUND(b.amount_net * VAT_Percent,2)
+WHEN b.Amount_payment_brut is null and currency <> 'EUR' THEN ROUND(b.amount_euro_net * VAT_Percent,2)
+ELSE b.Amount_payment_brut END AS amount_euro_brut,
+b.amount_payment_brut, b.comment_cost,
+CASE
+	WHEN decision = 'n' THEN 'ABLEHNUNG'
+	WHEN b.Amount_payment_brut is null AND date_factually_accurate is null THEN 'FESTLEGUNG'
+	WHEN b.Amount_payment_brut is not null THEN 'ZAHLUNG'
+	ELSE 'ZAHLUNGSANORDNUNG' END AS INVOICE_STATUS,
+c.invoice_number, c.date_invoice_due, c.date_invoice_receipt, c.date_factually_accurate, c.date_hauptkasse, c.comment_invoice
+FROM Finance_Request a
+LEFT JOIN Finance_Cost b ON (a.OA_ID = b.OA_ID)
+LEFT JOIN Finance_Invoice c ON (b.Invoice_number = c.Invoice_number)
+LEFT JOIN Finance_Budget d ON (b.Budget_id = d.Budget_id);
+
+--Views für DropDown-Felder
+CREATE VIEW View_formular_license AS
+select distinct license from finance_request order by license;
+
+CREATE VIEW View_formular_media_type AS
+select distinct media_type from finance_request order by media_type;
+
+--CREATE VIEW View_formular_Reason_Denied AS
+--select distinct Reason_Denied from finance_request order by Reason_Denied;
+
+CREATE VIEW View_formular_decision AS
+select distinct decision from finance_request order by decision;
+
+CREATE VIEW View_formular_postpayment_Check AS
+select distinct postpayment_Check from finance_request order by postpayment_Check;
+
+CREATE VIEW View_formular_research_article AS
+select distinct research_article from finance_request order by research_article;
+
+
+select * from finance_request where decision = 'J' 
+
+
+
+
+
+--Kontrolle MDPL-Rechnung 30.08.2023 											  
+WITH BASIS AS
+(
+select distinct a.oa_id, a.amount_net, a.currency, a.amount_euro_net, a.Amount_payment_brut, a.Budget_ID, Budget_Year, date_factually_accurate, b.Amount_budget_brut as Budget,
+CASE
+WHEN a.Amount_payment_brut is null and currency = 'EUR'  THEN ROUND(a.amount_net * VAT_Percent,2)
+WHEN a.Amount_payment_brut is null and currency <> 'EUR'  THEN ROUND(a.amount_euro_net * VAT_Percent,2)
+ELSE a.Amount_payment_brut END AS Amount,
+CASE
+	WHEN a.Amount_payment_brut is null AND date_factually_accurate is null THEN 'FESTLEGUNG'
+	WHEN a.Amount_payment_brut is not null THEN 'ZAHLUNG'
+	ELSE 'ZAHLUNGSANORDNUNG' END AS INVOICE_STATUS	
+from Finance_Cost a
+JOIN Finance_Budget b ON (a.Budget_id = b.Budget_id)
+LEFT JOIN Finance_Invoice c ON (a.Invoice_number = c.Invoice_number)
+)
+select oa_id, Budget_Year, Budget_ID, cast(Amount as money) AS Amount, cast(Budget as money) as Budget, INVOICE_STATUS
+FROM basis
+--where INVOICE_STATUS = 'ZAHLUNGSANORDNUNG'
+where OA_ID IN ('OA2022_511', 'OA2022_661', 'OA2022_683', 'OA2023_007', 'OA2023_030', 'OA2023_037', 'OA2023_039',
+											  'OA2023_043', 'OA2023_065', 'OA2023_073', 'OA2023_076', 'OA2023_080', 'OA2023_081', 'OA2023_094',
+											  'OA2023_097', 'OA2023_124', 'OA2023_125', 'OA2023_131', 'OA2023_143', 'OA2023_158', 'OA2023_178',
+											  'OA2023_179', 'OA2023_197', 'OA2023_202')
+
+
+
+
+--Für Haushalt: Alle Zahlungen, die festgelegt sind oder in Zahlungsanordnung
+CREATE VIEW View_Budget_FESTLEGUNGEN_ZAHLUNGSANORDNUNG AS
+WITH BASIS AS
+(
+select distinct a.oa_id, a.amount_net, a.currency, a.amount_euro_net, a.Amount_payment_brut, a.Budget_ID, Budget_Year, date_factually_accurate, b.Amount_budget_brut as Budget,
+CASE
+WHEN a.Amount_payment_brut is null and currency = 'EUR'  THEN ROUND(a.amount_net * VAT_Percent,2)
+WHEN a.Amount_payment_brut is null and currency <> 'EUR'  THEN ROUND(a.amount_euro_net * VAT_Percent,2)
+ELSE a.Amount_payment_brut END AS Amount	
+from Finance_Cost a
+JOIN Finance_Budget b ON (a.Budget_id = b.Budget_id)
+LEFT JOIN Finance_Invoice c ON (a.Invoice_number = c.Invoice_number)
+where b.budget_id IN ('DFG_2023', 'SLUB_2023', 'TUD_EL_2023') and a.Amount_payment_brut is null
+),
+basis1 AS
+(
+select oa_id, Budget_Year, Budget_ID, cast(Amount as money) AS Amount, cast(Budget as money) as Budget
+FROM basis
+)
+select distinct Budget_Year, Budget_ID, SUM(Amount) OVER (PARTITION BY Budget_ID) AS SUM_AMOUNT FROM basis1;
+
+
+
+-----------------------------------------------------------------------------------------------------------------------------------------------
+-----------------------------------------------------------------------------------------------------------------------------------------------
+--drop view View_Extern_ORG_ZAHLUNG;
+CREATE VIEW View_Extern_ORG_ZAHLUNG AS
+WITH BASIS AS
+(
+select distinct a.oa_id, a.amount_net, a.currency, a.amount_euro_net, a.Amount_payment_brut, Budget_Year, date_factually_accurate, institution, School, Faculty,
+CASE
+WHEN a.Amount_payment_brut is null and currency = 'EUR'  THEN ROUND(a.amount_net * VAT_Percent,2)
+WHEN a.Amount_payment_brut is null and currency <> 'EUR'  THEN ROUND(a.amount_euro_net * VAT_Percent,2)
+ELSE a.Amount_payment_brut END AS Amount,
+CASE
+	WHEN a.Amount_payment_brut is null AND date_factually_accurate is null THEN 'FESTLEGUNG'
+	WHEN a.Amount_payment_brut is null AND date_factually_accurate is not null THEN 'ZAHLUNGSANORDNUNG'
+	ELSE 'ZAHLUNG' END AS INVOICE_STATUS	
+from Finance_Cost a
+JOIN Finance_Budget b ON (a.Budget_id = b.Budget_id)
+JOIN Finance_Request d ON (a.OA_ID = d.OA_ID)	
+LEFT JOIN Finance_Invoice c ON (a.Invoice_number = c.Invoice_number)
+where decision IN ('j', 'o') AND Budget_Year = 2023 AND OA_Status IN ('Fully OA', 'Hybrid')
+),
+basis1 AS
+(
+select distinct oa_id, Budget_Year, Amount, School, Faculty,
+CASE
+	WHEN Amount_payment_brut is null AND date_factually_accurate is null THEN 'FESTLEGUNG'
+	WHEN Amount_payment_brut is null AND date_factually_accurate is not null THEN 'ZAHLUNGSANORDNUNG'
+	ELSE 'ZAHLUNG' END AS INVOICE_STATUS
+FROM basis
+),
+basis2 AS
+(
+select distinct Budget_Year, INVOICE_STATUS, School, Faculty,
+COUNT(OA_ID) OVER (PARTITION BY School) AS CNT_School,
+cast(SUM(Amount) OVER (PARTITION BY School) as money) AS AMOUNT_School,
+COUNT(OA_ID) OVER (PARTITION BY Faculty) AS CNT_Faculty,
+cast(SUM(Amount) OVER (PARTITION BY Faculty) as money) AS AMOUNT_Faculty	
+FROM basis1
+	where INVOICE_STATUS IN ('ZAHLUNG', 'ZAHLUNGSANORNUNG')
+order by School, Faculty
+)
+select distinct Budget_Year, School, Faculty, 
+CONCAT(CNT_School, ' (', AMOUNT_School, ')') AS Value_School, CONCAT(CNT_Faculty, ' (', AMOUNT_Faculty, ')') AS Value_Faculty	
+FROM basis2;
\ No newline at end of file