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