diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index c33f184a1..c63e55025 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -31,6 +31,8 @@ require_once('dbupdate_3.4/example2.php'); require_once('dbupdate_3.4/26173_index_webservicelog.php'); require_once('dbupdate_3.4/24682_reihungstest_zugangscode_fuer_login.php'); require_once('dbupdate_3.4/17512_fehlercode_constraints.php'); +require_once('dbupdate_3.4/28260_vertraege.php'); + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -137,6 +139,25 @@ $tabellen=array( "fue.tbl_ressource" => array("ressource_id","student_uid","mitarbeiter_uid","betriebsmittel_id","firma_id","bezeichnung","beschreibung","insertamum","insertvon","updateamum","updatevon"), "fue.tbl_scrumteam" => array("scrumteam_kurzbz","bezeichnung","punkteprosprint","tasksprosprint","gruppe_kurzbz"), "fue.tbl_scrumsprint" => array("scrumsprint_id","scrumteam_kurzbz","sprint_kurzbz","sprintstart","sprintende","insertamum","insertvon","updateamum","updatevon"), + "hr.tbl_sachaufwand" => array("sachaufwand_id","mitarbeiter_uid","sachaufwandtyp_kurzbz","dienstverhaeltnis_id","beginn","ende","anmerkung","insertamum","insertvon","updateamum","updatevon"), + "hr.tbl_sachaufwandtyp" => array("sachaufwandtyp_kurzbz","bezeichnung","sort", "aktiv"), + "hr.tbl_dienstverhaeltnis" => array("dienstverhaeltnis_id","mitarbeiter_uid","vertragsart_kurzbz","oe_kurzbz","von","bis","insertamum","insertvon","updateamum","updatevon"), + "hr.tbl_vertragsart" => array("vertragsart_kurzbz","bezeichnung","anmerkung","dientverhaeltnis","vertragsart_kurzbz_parent","aktiv","sort"), + "hr.tbl_vertragsbestandteil" => array("vertragsbestandteil_id","dienstverhaeltnis_id","vertragsbestandteiltyp_kurzbz","von", "bis","insertamum", "insertvon","updateamum","updatevon"), + "hr.tbl_vertragsbestandteiltyp" => array("vertragsbestandteiltyp_kurzbz","bezeichnung","ueberlappend"), + "hr.tbl_vertragsbestandteil_funktion" => array("vertragsbestandteil_id","benutzerfunktion_id",), + "hr.tbl_vertragsbestandteil_stunden" => array("vertragsbestandteil_id","wochenstunden","teilzeittyp_kurzbz"), + "hr.tbl_vertragsbestandteil_freitext" => array("vertragsbestandteil_id","freitexttyp_kurzbz","titel","anmerkung",), + "hr.tbl_vertragsbestandteil_freitexttyp" => array("freitexttyp_kurzbz","bezeichnung","ueberlappend","kuendigungsrelevant"), + "hr.tbl_vertragsbestandteil_zeitaufzeichnung" => array("vertragsbestandteil_id","zeitaufzeichnung","azgrelevant","homeoffice"), + "hr.tbl_vertragsbestandteil_urlaubsanspruch" => array("vertragsbestandteil_id", "tage"), + "hr.tbl_vertragsbestandteil_kuendigungsfrist" => array("vertragsbestandteil_id", "arbeitgeber_frist", "arbeitnehmer_frist"), + "hr.tbl_vertragsbestandteil_karenz" => array("vertragsbestandteil_id", "karenztyp_kurzbz","geplanter_geburtstermin","tatsaechlicher_geburtstermin"), + "hr.tbl_karenztyp" => array("karenztyp_kurzbz","bezeichnung"), + "hr.tbl_teilzeittyp" => array("teilzeittyp_kurzbz","bezeichnung","aktiv"), + "hr.tbl_gehaltsbestandteil" => array("gehaltsbestandteil_id","dienstverhaeltnis_id","vertragsbestandteil_id","gehaltstyp_kurzbz","von","bis","anmerkung","grundbetrag","betrag_valorisiert","valorisierungssperre","insertamum", "insertvon","updateamum","updatevon","valorisierung","auszahlungen"), + "hr.tbl_gehaltsabrechnung" => array("gehaltsabrechnung_id", "datum","betrag","gehaltsbestandteil_id"), + "hr.tbl_gehaltstyp" => array("gehaltstyp_kurzbz","bezeichnung","valorisierung","sort","aktiv"), "lehre.tbl_abschlussbeurteilung" => array("abschlussbeurteilung_kurzbz","bezeichnung","bezeichnung_english","sort"), "lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","uhrzeit","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note","protokoll","endezeit","pruefungsantritt_kurzbz","freigabedatum"), "lehre.tbl_abschlusspruefung_antritt" => array("pruefungsantritt_kurzbz","bezeichnung","bezeichnung_english","sort"), @@ -216,7 +237,7 @@ $tabellen=array( "public.tbl_firmentyp" => array("firmentyp_kurzbz","beschreibung"), "public.tbl_firmatag" => array("firma_id","tag","insertamum","insertvon"), "public.tbl_fotostatus" => array("fotostatus_kurzbz","beschreibung"), - "public.tbl_funktion" => array("funktion_kurzbz","beschreibung","aktiv","fachbereich","semester"), + "public.tbl_funktion" => array("funktion_kurzbz","beschreibung","aktiv","fachbereich","semester", "hrrelevant","vertragsrelevant"), "public.tbl_geschlecht" => array("geschlecht","bezeichnung_mehrsprachig","sort"), "public.tbl_geschaeftsjahr" => array("geschaeftsjahr_kurzbz","start","ende","bezeichnung"), "public.tbl_gruppe" => array("gruppe_kurzbz","studiengang_kz","semester","bezeichnung","beschreibung","sichtbar","lehre","aktiv","sort","mailgrp","generiert","updateamum","updatevon","insertamum","insertvon","ext_id","orgform_kurzbz","gid","content_visible","gesperrt","zutrittssystem","aufnahmegruppe","direktinskription"), diff --git a/system/dbupdate_3.4/28260_vertraege.php b/system/dbupdate_3.4/28260_vertraege.php new file mode 100644 index 000000000..1601694af --- /dev/null +++ b/system/dbupdate_3.4/28260_vertraege.php @@ -0,0 +1,414 @@ +db_query("SELECT * FROM information_schema.tables WHERE table_name='tbl_dienstverhaeltnis' AND table_schema='hr'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = " + CREATE SCHEMA hr; + COMMENT ON SCHEMA hr IS E'Personalverwaltung'; + + ALTER SCHEMA hr OWNER TO fhcomplete; + + CREATE TABLE hr.tbl_dienstverhaeltnis + ( + dienstverhaeltnis_id serial NOT NULL, + mitarbeiter_uid character varying(32), + vertragsart_kurzbz varchar(32), + oe_kurzbz character varying(32), + von date, + bis date, + insertamum timestamp, + insertvon varchar(32), + updateamum timestamp, + updatevon varchar(32), + CONSTRAINT tbl_dienstverhaeltnis_pk PRIMARY KEY (dienstverhaeltnis_id) + ); + + CREATE TABLE hr.tbl_vertragsbestandteil + ( + vertragsbestandteil_id serial NOT NULL, + dienstverhaeltnis_id integer, + vertragsbestandteiltyp_kurzbz varchar(32), + von date, + bis date, + insertamum timestamp, + insertvon varchar(32), + updateamum timestamp, + updatevon varchar(32), + CONSTRAINT tbl_vertragsbestandteil_pk PRIMARY KEY (vertragsbestandteil_id) + ); + + CREATE TABLE hr.tbl_gehaltsbestandteil + ( + gehaltsbestandteil_id serial NOT NULL, + dienstverhaeltnis_id integer NOT NULL, + vertragsbestandteil_id integer, + gehaltstyp_kurzbz character varying(32) NOT NULL, + von date, + bis date, + anmerkung text, + grundbetrag bytea, + betrag_valorisiert bytea, + valorisierungssperre date, + insertamum timestamp, + insertvon varchar(32), + updateamum timestamp, + updatevon varchar(32), + valorisierung boolean NOT NULL, + auszahlungen smallint NOT NULL DEFAULT 14, + CONSTRAINT tbl_gehaltsbestandteil_pk PRIMARY KEY (gehaltsbestandteil_id) + ); + + COMMENT ON COLUMN hr.tbl_gehaltsbestandteil.grundbetrag IS E'verschluesselt - Ursprüngliches Gehalt laut Vertrag'; + COMMENT ON COLUMN hr.tbl_gehaltsbestandteil.betrag_valorisiert IS E'verschluesselt - Valorisierter aktueller Betrag'; + COMMENT ON COLUMN hr.tbl_gehaltsbestandteil.auszahlungen IS E'Wie oft im Jahr wird das Gehalt bezahlt. zb 14x oder nur 12x'; + COMMENT ON COLUMN hr.tbl_gehaltsbestandteil.valorisierung IS E'Wird dieser Bestandteil mitvalorisiert'; + COMMENT ON COLUMN hr.tbl_gehaltsbestandteil.valorisierungssperre IS E'Bis zu welchem Datum ist dieser Bestandteil von der Valorisierung ausgenommen'; + + ALTER TABLE hr.tbl_gehaltsbestandteil ADD CONSTRAINT tbl_dienstverhaeltnis_fk FOREIGN KEY (dienstverhaeltnis_id) + REFERENCES hr.tbl_dienstverhaeltnis (dienstverhaeltnis_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE hr.tbl_vertragsbestandteil ADD CONSTRAINT tbl_dienstverhaeltnis_fk FOREIGN KEY (dienstverhaeltnis_id) + REFERENCES hr.tbl_dienstverhaeltnis (dienstverhaeltnis_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_gehaltsabrechnung + ( + gehaltsabrechnung_id serial NOT NULL, + datum date, + betrag bytea, + gehaltsbestandteil_id integer, + CONSTRAINT tbl_gehaltsabrechnung_pk PRIMARY KEY (gehaltsabrechnung_id) + ); + + COMMENT ON COLUMN hr.tbl_gehaltsabrechnung.betrag IS E'verschluesselt'; + + ALTER TABLE hr.tbl_gehaltsabrechnung ADD CONSTRAINT tbl_gehaltsbestandteil_fk FOREIGN KEY (gehaltsbestandteil_id) + REFERENCES hr.tbl_gehaltsbestandteil (gehaltsbestandteil_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE hr.tbl_dienstverhaeltnis ADD CONSTRAINT tbl_mitarbeiter_fk FOREIGN KEY (mitarbeiter_uid) + REFERENCES public.tbl_mitarbeiter (mitarbeiter_uid) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_gehaltstyp + ( + gehaltstyp_kurzbz character varying(32) NOT NULL, + bezeichnung varchar(256), + valorisierung boolean NOT NULL DEFAULT true, + sort smallint, + aktiv boolean NOT NULL DEFAULT true, + CONSTRAINT gehaltstypen_pk PRIMARY KEY (gehaltstyp_kurzbz) + ); + + COMMENT ON TABLE hr.tbl_gehaltstyp IS E'Key-Table of Salary Types'; + + ALTER TABLE hr.tbl_gehaltsbestandteil ADD CONSTRAINT tbl_gehaltstyp_fk FOREIGN KEY (gehaltstyp_kurzbz) + REFERENCES hr.tbl_gehaltstyp (gehaltstyp_kurzbz) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_vertragsart + ( + vertragsart_kurzbz varchar(32) NOT NULL, + bezeichnung varchar(256), + anmerkung text, + dienstverhaeltnis boolean, + vertragsart_kurzbz_parent character varying(32), + aktiv boolean NOT NULL DEFAULT true, + sort smallint, + CONSTRAINT tbl_vertragsar_pk PRIMARY KEY (vertragsart_kurzbz) + ); + + COMMENT ON TABLE hr.tbl_vertragsart IS E'Key-Table of Contract Types'; + COMMENT ON COLUMN hr.tbl_vertragsart.dienstverhaeltnis IS E'Kann dieser Typ direkt beim Dienstverhaeltnis zugeordnet werden'; + + ALTER TABLE hr.tbl_dienstverhaeltnis ADD CONSTRAINT tbl_vertragsart_fk FOREIGN KEY (vertragsart_kurzbz) + REFERENCES hr.tbl_vertragsart (vertragsart_kurzbz) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_sachaufwand + ( + sachaufwand_id serial NOT NULL, + mitarbeiter_uid character varying(32), + sachaufwandtyp_kurzbz character varying(32), + dienstverhaeltnis_id integer, + beginn date, + ende date, + anmerkung text, + insertamum timestamp, + insertvon character varying(32), + updateamum timestamp, + updatevon character varying(32), + CONSTRAINT tbl_sachaufwand_pk PRIMARY KEY (sachaufwand_id) + ); + + ALTER TABLE hr.tbl_sachaufwand ADD CONSTRAINT tbl_mitarbeiter_fk FOREIGN KEY (mitarbeiter_uid) + REFERENCES public.tbl_mitarbeiter (mitarbeiter_uid) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_sachaufwandtyp + ( + sachaufwandtyp_kurzbz character varying(32) NOT NULL, + bezeichnung character varying(256), + sort smallint, + aktiv boolean NOT NULL DEFAULT true, + CONSTRAINT tbl_sachaufwandtyp_pk PRIMARY KEY (sachaufwandtyp_kurzbz) + ); + + ALTER TABLE hr.tbl_sachaufwand ADD CONSTRAINT tbl_sachaufwandtyp_fk FOREIGN KEY (sachaufwandtyp_kurzbz) + REFERENCES hr.tbl_sachaufwandtyp (sachaufwandtyp_kurzbz) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE hr.tbl_sachaufwand ADD CONSTRAINT tbl_dienstverhaeltnis_fk FOREIGN KEY (dienstverhaeltnis_id) + REFERENCES hr.tbl_dienstverhaeltnis (dienstverhaeltnis_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE public.tbl_funktion ADD COLUMN hrrelevant boolean NOT NULL DEFAULT false; + ALTER TABLE public.tbl_funktion ADD COLUMN vertragsrelevant boolean NOT NULL DEFAULT false; + + ALTER TABLE hr.tbl_gehaltsbestandteil ADD CONSTRAINT tbl_vertragsbestandteil_fk FOREIGN KEY (vertragsbestandteil_id) + REFERENCES hr.tbl_vertragsbestandteil (vertragsbestandteil_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_vertragsbestandteiltyp + ( + vertragsbestandteiltyp_kurzbz varchar(32) NOT NULL, + bezeichnung varchar(256), + ueberlappend boolean NOT NULL, + CONSTRAINT tbl_vertragsbestandteiltyp_pk PRIMARY KEY (vertragsbestandteiltyp_kurzbz) + ); + + COMMENT ON TABLE hr.tbl_vertragsbestandteiltyp IS E'Type of Contract-Part'; + COMMENT ON COLUMN hr.tbl_vertragsbestandteiltyp.ueberlappend IS E'Dürfen sich Einträge von diesem Typ zeitlich überlappen'; + + ALTER TABLE hr.tbl_vertragsbestandteil ADD CONSTRAINT tbl_vertragsbestandteiltyp_fk FOREIGN KEY (vertragsbestandteiltyp_kurzbz) + REFERENCES hr.tbl_vertragsbestandteiltyp (vertragsbestandteiltyp_kurzbz) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_vertragsbestandteil_funktion + ( + vertragsbestandteil_id integer NOT NULL, + benutzerfunktion_id integer, + CONSTRAINT tbl_vertragsbestandteil_funktion_pk PRIMARY KEY (vertragsbestandteil_id) + ); + + ALTER TABLE hr.tbl_vertragsbestandteil_funktion ADD CONSTRAINT tbl_benutzerfunktion_fk FOREIGN KEY (benutzerfunktion_id) + REFERENCES public.tbl_benutzerfunktion (benutzerfunktion_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_vertragsbestandteil_stunden + ( + vertragsbestandteil_id integer NOT NULL, + wochenstunden smallint, + teilzeittyp_kurzbz character varying(32), + CONSTRAINT tbl_vertragsbestandteil_stunden_pk PRIMARY KEY (vertragsbestandteil_id) + ); + + COMMENT ON COLUMN hr.tbl_vertragsbestandteil_stunden.teilzeittyp_kurzbz IS E'Altersteilzeit, Elternteilzeit'; + + CREATE TABLE hr.tbl_teilzeittyp + ( + teilzeittyp_kurzbz character varying(32) NOT NULL, + bezeichnung varchar(256) NOT NULL, + aktiv boolean NOT NULL DEFAULT true, + CONSTRAINT tbl_teilzeittyp_pk PRIMARY KEY (teilzeittyp_kurzbz) + ); + + ALTER TABLE hr.tbl_vertragsbestandteil_stunden ADD CONSTRAINT tbl_teilzeittyp_fk FOREIGN KEY (teilzeittyp_kurzbz) + REFERENCES hr.tbl_teilzeittyp (teilzeittyp_kurzbz) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_vertragsbestandteil_freitext + ( + vertragsbestandteil_id integer NOT NULL, + freitexttyp_kurzbz varchar(32), + titel varchar(256), + anmerkung text, + CONSTRAINT tbl_vertragsbestandteil_freitext_pk PRIMARY KEY (vertragsbestandteil_id) + ); + + CREATE TABLE hr.tbl_vertragsbestandteil_freitexttyp + ( + freitexttyp_kurzbz varchar(32) NOT NULL, + bezeichnung varchar(128), + ueberlappend boolean NOT NULL DEFAULT true, + kuendigungsrelevant boolean NOT NULL DEFAULT false, + CONSTRAINT tbl_freitexttyp_pk PRIMARY KEY (freitexttyp_kurzbz) + ); + COMMENT ON TABLE hr.tbl_vertragsbestandteil_freitexttyp IS E'Key-Table FreeTextType (Sideletter, Ersatzarbeitskraft, AllIn, Befristung, Überstundenpauschale)'; + COMMENT ON COLUMN hr.tbl_vertragsbestandteil_freitexttyp.ueberlappend IS E'Dürfen sich Einträge von diesem Typ zeitlich überlappen'; + COMMENT ON COLUMN hr.tbl_vertragsbestandteil_freitexttyp.kuendigungsrelevant IS E'Ist dieser Freitext bei einer Kündigung zu berücksichtigen'; + + ALTER TABLE hr.tbl_vertragsbestandteil_freitext ADD CONSTRAINT tbl_vertragsbestandteil_freitexttyp_fk FOREIGN KEY (freitexttyp_kurzbz) + REFERENCES hr.tbl_vertragsbestandteil_freitexttyp (freitexttyp_kurzbz) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE hr.tbl_vertragsbestandteil_freitext ADD CONSTRAINT tbl_vertragsbestandteil_fk FOREIGN KEY (vertragsbestandteil_id) + REFERENCES hr.tbl_vertragsbestandteil (vertragsbestandteil_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE hr.tbl_vertragsbestandteil_stunden ADD CONSTRAINT tbl_vertragsbestandteil_fk FOREIGN KEY (vertragsbestandteil_id) + REFERENCES hr.tbl_vertragsbestandteil (vertragsbestandteil_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE hr.tbl_vertragsbestandteil_funktion ADD CONSTRAINT tbl_vertragsbestandteil_fk FOREIGN KEY (vertragsbestandteil_id) + REFERENCES hr.tbl_vertragsbestandteil (vertragsbestandteil_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_vertragsbestandteil_zeitaufzeichnung + ( + vertragsbestandteil_id integer NOT NULL, + zeitaufzeichnung bool, + azgrelevant bool, + homeoffice bool, + CONSTRAINT tbl_vertragsbestandteil_zeitaufzeichnung_pk PRIMARY KEY (vertragsbestandteil_id) + ); + + CREATE TABLE hr.tbl_vertragsbestandteil_urlaubsanspruch + ( + vertragsbestandteil_id integer NOT NULL, + tage smallint, + CONSTRAINT tbl_vertragsbestandteil_urlaubsanspruch_pk PRIMARY KEY (vertragsbestandteil_id) + ); + + CREATE TABLE hr.tbl_vertragsbestandteil_kuendigungsfrist + ( + vertragsbestandteil_id integer NOT NULL, + arbeitgeber_frist smallint, + arbeitnehmer_frist smallint, + CONSTRAINT tbl_vertragsbestandteil_kuendigungsfrist_pk PRIMARY KEY (vertragsbestandteil_id) + ); + + ALTER TABLE hr.tbl_vertragsbestandteil_zeitaufzeichnung ADD CONSTRAINT tbl_vertragsbestandteil_fk FOREIGN KEY (vertragsbestandteil_id) + REFERENCES hr.tbl_vertragsbestandteil (vertragsbestandteil_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE hr.tbl_vertragsbestandteil_urlaubsanspruch ADD CONSTRAINT tbl_vertragsbestandteil_fk FOREIGN KEY (vertragsbestandteil_id) + REFERENCES hr.tbl_vertragsbestandteil (vertragsbestandteil_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE hr.tbl_vertragsbestandteil_kuendigungsfrist ADD CONSTRAINT tbl_vertragsbestandteil_fk FOREIGN KEY (vertragsbestandteil_id) + REFERENCES hr.tbl_vertragsbestandteil (vertragsbestandteil_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_vertragsbestandteil_karenz + ( + vertragsbestandteil_id integer NOT NULL, + karenztyp_kurzbz varchar(32), + geplanter_geburtstermin date, + tatsaechlicher_geburtstermin date, + CONSTRAINT tbl_vertragsbestandteil_karenz_pk PRIMARY KEY (vertragsbestandteil_id) + ); + + ALTER TABLE hr.tbl_vertragsbestandteil_karenz ADD CONSTRAINT tbl_vertragsbestandteil_fk FOREIGN KEY (vertragsbestandteil_id) + REFERENCES hr.tbl_vertragsbestandteil (vertragsbestandteil_id) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE TABLE hr.tbl_karenztyp + ( + karenztyp_kurzbz varchar(32) NOT NULL, + bezeichnung character varying(256) NOT NULL, + CONSTRAINT tbl_karenztyp_pk PRIMARY KEY (karenztyp_kurzbz) + ); + COMMENT ON TABLE hr.tbl_karenztyp IS E'Key-Table Elternkarenz, Bildungskarenz, Papamonat'; + + ALTER TABLE hr.tbl_vertragsbestandteil_karenz ADD CONSTRAINT tbl_karenztyp_fk FOREIGN KEY (karenztyp_kurzbz) + REFERENCES hr.tbl_karenztyp (karenztyp_kurzbz) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE hr.tbl_dienstverhaeltnis ADD CONSTRAINT tbl_organisationseinheit_fk FOREIGN KEY (oe_kurzbz) + REFERENCES public.tbl_organisationseinheit (oe_kurzbz) MATCH FULL + ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE hr.tbl_vertragsart ADD CONSTRAINT fk_vertragsart_vertragsartparent FOREIGN KEY (vertragsart_kurzbz_parent) + REFERENCES hr.tbl_vertragsart (vertragsart_kurzbz) MATCH SIMPLE + ON DELETE NO ACTION ON UPDATE NO ACTION; + + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_sachaufwand TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_sachaufwandtyp TO vilesci; + + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_dienstverhaeltnis TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsart TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsbestandteil TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsbestandteiltyp TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsbestandteil_funktion TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsbestandteil_stunden TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsbestandteil_freitext TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsbestandteil_freitexttyp TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsbestandteil_zeitaufzeichnung TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsbestandteil_urlaubsanspruch TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsbestandteil_kuendigungsfrist TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_vertragsbestandteil_karenz TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_karenztyp TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_teilzeittyp TO vilesci; + + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_gehaltsbestandteil TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_gehaltsabrechnung TO vilesci; + GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_gehaltstyp TO vilesci; + + GRANT USAGE ON SCHEMA hr TO vilesci; + + INSERT INTO hr.tbl_karenztyp(karenztyp_kurzbz, bezeichnung) VALUES('elternkarenz','Elternkarenz'); + INSERT INTO hr.tbl_karenztyp(karenztyp_kurzbz, bezeichnung) VALUES('bildungskarenz','Bildungskarenz'); + INSERT INTO hr.tbl_karenztyp(karenztyp_kurzbz, bezeichnung) VALUES('papamonat','Papamonat'); + + INSERT INTO hr.tbl_teilzeittyp(teilzeittyp_kurzbz, bezeichnung) VALUES('altersteilzeit','Altersteilzeit'); + INSERT INTO hr.tbl_teilzeittyp(teilzeittyp_kurzbz, bezeichnung) VALUES('elternteilzeit','Elternteilzeit'); + + INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dientverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('echterdv','Echter DV','Echter Dienstvertrag', true, null, true, 100); + INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dientverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('studentischehilfskr','Studentische Hilfskraft','Studentische Hilfskraft', true, 'echterdv', true, 101); + + INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dientverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('freierdv','Freier DV','Freier Dienstvertrag', false, null, true, 200); + INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dientverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('externerlehrender','externer Lehrender','Externer Lehrender Freier DV', true, 'freierdv', true, 201); + INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dientverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('gastlektor','Gastlektor','Gastlektor', true, 'freierdv', true, 202); + INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dientverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('echterfreier','Echter Freier DV','Echter Freier DV', true, 'freierdv', true, 203); + + INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dientverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('werkvertrag','Werkvertrag','Werkvertrag', true, null, true, 300); + INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dientverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('ueberlassungsvertrag','Überlassungsvertrag','Überlassungsvertrag', true, 'werkvertrag', true, 300); + + INSERT INTO hr.tbl_gehaltstyp(gehaltstyp_kurzbz, bezeichnung, valorisierung, sort, aktiv) VALUES('basisgehalt','Basisgehalt', true, 1, true); + INSERT INTO hr.tbl_gehaltstyp(gehaltstyp_kurzbz, bezeichnung, valorisierung, sort, aktiv) VALUES('grundgehalt','Grundgehalt', true, 2, true); + INSERT INTO hr.tbl_gehaltstyp(gehaltstyp_kurzbz, bezeichnung, valorisierung, sort, aktiv) VALUES('zulage','Zulage', true, 3, true); + INSERT INTO hr.tbl_gehaltstyp(gehaltstyp_kurzbz, bezeichnung, valorisierung, sort, aktiv) VALUES('praemie','Prämie', false, 4, true); + + INSERT INTO hr.tbl_vertragsbestandteil_freitexttyp(freitexttyp_kurzbz, bezeichnung, ueberlappend, kuendigungsrelevant) VALUES('allin','All-In', false, false); + INSERT INTO hr.tbl_vertragsbestandteil_freitexttyp(freitexttyp_kurzbz, bezeichnung, ueberlappend, kuendigungsrelevant) VALUES('ersatzarbeitskraft','Ersatzarbeitskraft', false, true); + INSERT INTO hr.tbl_vertragsbestandteil_freitexttyp(freitexttyp_kurzbz, bezeichnung, ueberlappend, kuendigungsrelevant) VALUES('zusatzvereinbarung','Zusatzvereinbarung', true, false); + INSERT INTO hr.tbl_vertragsbestandteil_freitexttyp(freitexttyp_kurzbz, bezeichnung, ueberlappend, kuendigungsrelevant) VALUES('befristung','Befristung', false, true); + INSERT INTO hr.tbl_vertragsbestandteil_freitexttyp(freitexttyp_kurzbz, bezeichnung, ueberlappend, kuendigungsrelevant) VALUES('sonstiges','Sonstiges', true, false); + + INSERT INTO hr.tbl_vertragsbestandteiltyp(vertragsbestandteiltyp_kurzbz, bezeichnung, ueberlappend) VALUES('stunden', 'Stunden', false); + INSERT INTO hr.tbl_vertragsbestandteiltyp(vertragsbestandteiltyp_kurzbz, bezeichnung, ueberlappend) VALUES('funktion', 'Funktion', true); + INSERT INTO hr.tbl_vertragsbestandteiltyp(vertragsbestandteiltyp_kurzbz, bezeichnung, ueberlappend) VALUES('freitext', 'Freitext', true); + INSERT INTO hr.tbl_vertragsbestandteiltyp(vertragsbestandteiltyp_kurzbz, bezeichnung, ueberlappend) VALUES('zeitaufzeichnung', 'Zeitaufzeichnung', false); + INSERT INTO hr.tbl_vertragsbestandteiltyp(vertragsbestandteiltyp_kurzbz, bezeichnung, ueberlappend) VALUES('urlaubsanspruch', 'Urlaubsanspruch', false); + INSERT INTO hr.tbl_vertragsbestandteiltyp(vertragsbestandteiltyp_kurzbz, bezeichnung, ueberlappend) VALUES('kuendigungsfrist', 'Kündigungsfrist', false); + INSERT INTO hr.tbl_vertragsbestandteiltyp(vertragsbestandteiltyp_kurzbz, bezeichnung, ueberlappend) VALUES('karenz', 'Karenz', false); + + INSERT INTO hr.tbl_sachaufwandtyp(sachaufwandtyp_kurzbz, bezeichnung, sort, aktiv) VALUES('jobticket', 'Jobticket', 1, true); + INSERT INTO hr.tbl_sachaufwandtyp(sachaufwandtyp_kurzbz, bezeichnung, sort, aktiv) VALUES('klimaticket', 'Klimaticket', 1, true); + INSERT INTO hr.tbl_sachaufwandtyp(sachaufwandtyp_kurzbz, bezeichnung, sort, aktiv) VALUES('pendlerpauschale', 'Pendlerpauschale', 1, true); + + CREATE INDEX idx_tbl_dienstverhaeltnis_mitarbeiter_uid ON hr.tbl_dienstverhaeltnis USING btree (mitarbeiter_uid); + CREATE INDEX idx_tbl_vertragsbestandteil_dienstverhaeltnis_id ON hr.tbl_vertragsbestandteil USING btree (dienstverhaeltnis_id); + CREATE INDEX idx_tbl_gehaltsabrechnung_gehaltsbestandteil_id ON hr.tbl_gehaltsabrechnung USING btree (gehaltsbestandteil_id); + CREATE INDEX idx_tbl_gehaltsbestandteil_dienstverhaeltnis_id ON hr.tbl_gehaltsbestandteil USING btree (dienstverhaeltnis_id); + + COMMENT ON TABLE hr.tbl_dienstverhaeltnis IS E'Dienstverhaeltnisse von Mitarbeitern'; + COMMENT ON TABLE hr.tbl_gehaltsabrechnung IS E'Historie monatlich abgerechneter Gehaelter'; + COMMENT ON TABLE hr.tbl_gehaltsbestandteil IS E'Gehaltskomponenten zu Vertraegen'; + COMMENT ON TABLE hr.tbl_sachaufwand IS E'Zusatzvergütungen für Mitarbeiter'; + COMMENT ON TABLE hr.tbl_sachaufwandtyp IS E'Key-Table for Sachaufwand'; + COMMENT ON TABLE hr.tbl_teilzeittyp IS E'Key-Table Altersteilzeit, Elternteilzeit'; + "; + + if (! $db->db_query($qry)) + echo 'Vertraege: ' . $db->db_last_error() . '
'; + else + echo 'HR Schema und Vertagstabellen wurden neu erstellt'; + } +}