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';
+ }
+}