';
// Wenn es für das übergebene Studiensemester keinen PreStudentStatus gibt, werden nur Abschlussdokumente angezeigt
if (in_array($stsem, $stsem_arr))
{
+ $studierendenantrag = new studierendenantrag();
+ if ($studierendenantrag->loadUserAntrag($student_studiengang->prestudent_id, $stsem) && $studierendenantrag->result) {
+ echo '
';
- }
}
else
{
@@ -138,10 +134,6 @@ if (isset($_REQUEST['prestudent']))
// TODO Was ist wenn da mehrere Zurueckkommen?!
if (isset($rt->result[0]))
$reihungstest_id = $rt->result[0]->reihungstest_id;
- else
- {
- $alertmsg .= '
';
@@ -57,6 +69,7 @@ $tabellen=array(
"bis.tbl_bisfunktion" => array("bisverwendung_id","studiengang_kz","sws","updateamum","updatevon","insertamum","insertvon","ext_id"),
"bis.tbl_bisio" => array("bisio_id","mobilitaetsprogramm_code","nation_code","von","bis","zweck_code","student_uid","updateamum","updatevon","insertamum","insertvon","ext_id","ort","universitaet","lehreinheit_id","ects_erworben","ects_angerechnet","herkunftsland_code"),
"bis.tbl_bisio_zweck" => array("bisio_id","zweck_code"),
+ "bis.tbl_bismeldestichtag" => array("meldestichtag_id", "meldestichtag", "studiensemester_kurzbz", "insertamum", "insertvon", "updateamum", "updatevon"),
"bis.tbl_bisstandort" => array("standort_code","bezeichnung","aktiv","insertamum","insertvon","updateamum","updatevon"),
"bis.tbl_bisverwendung" => array("bisverwendung_id","ba1code","ba2code","vertragsstunden","beschausmasscode","verwendung_code","mitarbeiter_uid","hauptberufcode","hauptberuflich","habilitation","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","dv_art","inkludierte_lehre","zeitaufzeichnungspflichtig","azgrelevant", "homeoffice"),
"bis.tbl_bundesland" => array("bundesland_code","kurzbz","bezeichnung"),
@@ -145,11 +158,30 @@ $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","dienstverhaeltnis","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_gehaltshistorie" => array("gehaltshistorie_id", "datum","betrag","gehaltsbestandteil_id","mitarbeiter_uid"),
+ "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"),
"lehre.tbl_akadgrad" => array("akadgrad_id","akadgrad_kurzbz","studiengang_kz","titel","geschlecht"),
- "lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung"),
+ "lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung", "begruendung_ects", "begruendung_lvinhalt"),
"lehre.tbl_anrechnungstatus" => array("status_kurzbz", "bezeichnung_mehrsprachig"),
"lehre.tbl_anrechnung_anrechnungstatus" => array("anrechnungstatus_id", "anrechnung_id", "status_kurzbz", "datum", "insertamum", "insertvon"),
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
@@ -225,7 +257,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"),
@@ -326,7 +358,7 @@ $tabellen=array(
"system.tbl_phrase" => array("phrase_id","app","phrase","insertamum","insertvon","category"),
"system.tbl_phrasentext" => array("phrasentext_id","phrase_id","sprache","orgeinheit_kurzbz","orgform_kurzbz","text","description","insertamum","insertvon"),
"system.tbl_rolle" => array("rolle_kurzbz","beschreibung"),
- "system.tbl_rolleberechtigung" => array("berechtigung_kurzbz","rolle_kurzbz","art"),
+ "system.tbl_rolleberechtigung" => array("berechtigung_kurzbz","rolle_kurzbz","art","anmerkung","insertamum","insertvon"),
"system.tbl_verarbeitungstaetigkeit" => array("taetigkeit_kurzbz", "bezeichnung", "bezeichnung_mehrsprachig","aktiv"),
"system.tbl_webservicelog" => array("webservicelog_id","webservicetyp_kurzbz","request_id","beschreibung","request_data","execute_time","execute_user"),
"system.tbl_webservicerecht" => array("webservicerecht_id","berechtigung_kurzbz","methode","attribut","insertamum","insertvon","updateamum","updatevon","klasse"),
diff --git a/system/dbupdate_3.4/25003_notenimport_nachpruefung.php b/system/dbupdate_3.4/25003_notenimport_nachpruefung.php
new file mode 100644
index 000000000..7c2406d0e
--- /dev/null
+++ b/system/dbupdate_3.4/25003_notenimport_nachpruefung.php
@@ -0,0 +1,15 @@
+db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefungstyp_kurzbz='Termin3'"))
+{
+ if($db->db_num_rows($result)==0)
+ {
+ $qry = "INSERT INTO lehre.tbl_pruefungstyp(pruefungstyp_kurzbz, beschreibung, abschluss) VALUES('Termin3', '3.Termin', false);";
+
+ if(!$db->db_query($qry))
+ echo 'Prüfungstyp: '.$db->db_last_error().' ';
+ else
+ echo ' Prüfungstyp 3.Termin in lehre.tbl_pruefungstyp hinzugefügt';
+ }
+}
diff --git a/system/dbupdate_3.4/27351_digitalisierung_formulare.php b/system/dbupdate_3.4/27351_digitalisierung_formulare.php
new file mode 100644
index 000000000..d05b69604
--- /dev/null
+++ b/system/dbupdate_3.4/27351_digitalisierung_formulare.php
@@ -0,0 +1,411 @@
+db_query("SELECT 1 FROM campus.tbl_studierendenantrag_statustyp LIMIT 1"))
+{
+ $qry = "CREATE TABLE campus.tbl_studierendenantrag_statustyp (
+ studierendenantrag_statustyp_kurzbz VARCHAR(32) NOT NULL,
+ bezeichnung VARCHAR(128)[] NOT NULL,
+ CONSTRAINT tbl_studierendenantrag_statustyp_pk PRIMARY KEY(studierendenantrag_statustyp_kurzbz)
+ );
+
+ GRANT SELECT, INSERT ON campus.tbl_studierendenantrag_statustyp TO vilesci;
+ GRANT SELECT ON campus.tbl_studierendenantrag_statustyp TO web;";
+
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag_statustyp: '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag_statustyp: table created';
+}
+
+if($result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_statustyp WHERE studierendenantrag_statustyp_kurzbz = 'Erstellt' "))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO campus.tbl_studierendenantrag_statustyp
+ (studierendenantrag_statustyp_kurzbz, bezeichnung)
+ VALUES
+ ('Erstellt', '{\"Erstellt\",\"Created\"}'),
+ ('Genehmigt', '{\"Bestätigt\",\"Approved\"}'),
+ ('Abgelehnt', '{\"Abgelehnt\",\"Rejected\"}'),
+ ('Verzichtet', '{\"Verzichtet\",\"Pass\"}'),
+ ('Offen', '{\"Offen\",\"Reopened\"}'),
+ ('Zurueckgezogen', '{\"Zurückgezogen\",\"Cancelled\"}'),
+ ('Lvszugewiesen', '{\"Lvszugewiesen\",\"Lvsassigned\"}'),
+ ('EmailVersandt', '{\"Email Versandt\",\"Reminder Sent\"}'),
+ ('ErsteAufforderungVersandt', '{\"1.Aufforderung Versandt\",\"1st Request Sent\"}'),
+ ('ZweiteAufforderungVersandt', '{\"2.Aufforderung Versandt\",\"2nd Request Sent\"}'),
+ ('Beeinsprucht', '{\"Beeinsprucht\",\"Objected\"}'),
+ ('EinspruchAbgelehnt', '{\"Einspruch abgelehnt\",\"Objection denied\"}'),
+ ('Abgemeldet', '{\"Abgemeldet\",\"Deregistered\"}');
+ ";
+ if (!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag_statustyp (insert): '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag_statustyp: table prefilled';
+ }
+}
+if($result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_statustyp WHERE studierendenantrag_statustyp_kurzbz = 'Abgemeldet' "))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO campus.tbl_studierendenantrag_statustyp
+ (studierendenantrag_statustyp_kurzbz, bezeichnung)
+ VALUES
+ ('Abgemeldet', '{\"Abgemeldet\",\"Deregistered\"}');
+ ";
+ if (!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag_statustyp (insert): '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag_statustyp: "Abgemeldet" added';
+ }
+}
+
+if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag LIMIT 1"))
+{
+ $qry = "CREATE TABLE campus.tbl_studierendenantrag (
+ studierendenantrag_id INTEGER NOT NULL,
+ prestudent_id INTEGER NOT NULL,
+ studiensemester_kurzbz VARCHAR(32) NOT NULL,
+ datum TIMESTAMP NULL,
+ typ VARCHAR(32) NOT NULL,
+ insertamum TIMESTAMP DEFAULT NOW(),
+ insertvon VARCHAR(32) NOT NULL,
+ datum_wiedereinstieg TIMESTAMP NULL,
+ grund TEXT NULL,
+ dms_id INTEGER NULL,
+ CONSTRAINT tbl_studierendenantrag_pk PRIMARY KEY(studierendenantrag_id)
+ );
+ CREATE SEQUENCE campus.tbl_studierendenantrag_studierendenantrag_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+ ALTER TABLE campus.tbl_studierendenantrag ALTER COLUMN studierendenantrag_id SET DEFAULT nextval('campus.tbl_studierendenantrag_studierendenantrag_id_seq');
+
+ GRANT SELECT, INSERT ON campus.tbl_studierendenantrag TO vilesci;
+ GRANT SELECT, INSERT ON campus.tbl_studierendenantrag TO web;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_studierendenantrag_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_studierendenantrag_id_seq TO web;";
+
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag: '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag: table created';
+}
+
+if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_status LIMIT 1"))
+{
+ $qry = "CREATE TABLE campus.tbl_studierendenantrag_status (
+ studierendenantrag_status_id INTEGER NOT NULL,
+ studierendenantrag_id INTEGER NOT NULL,
+ studierendenantrag_statustyp_kurzbz VARCHAR(32) NOT NULL,
+ insertamum TIMESTAMP DEFAULT NOW(),
+ insertvon VARCHAR(32) NOT NULL,
+ grund TEXT NULL,
+ CONSTRAINT tbl_studierendenantrag_status_pk PRIMARY KEY(studierendenantrag_status_id),
+ CONSTRAINT tbl_studierendenantrag_fk FOREIGN KEY (studierendenantrag_id) REFERENCES campus.tbl_studierendenantrag(studierendenantrag_id) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT tbl_studierendenantrag_statustyp_fk FOREIGN KEY (studierendenantrag_statustyp_kurzbz) REFERENCES campus.tbl_studierendenantrag_statustyp(studierendenantrag_statustyp_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT
+ );
+ CREATE SEQUENCE campus.tbl_studierendenantrag_status_studierendenantrag_status_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+ ALTER TABLE campus.tbl_studierendenantrag_status ALTER COLUMN studierendenantrag_status_id SET DEFAULT nextval('campus.tbl_studierendenantrag_status_studierendenantrag_status_id_seq');
+
+ GRANT SELECT, INSERT, DELETE ON campus.tbl_studierendenantrag_status TO vilesci;
+ GRANT SELECT, INSERT, DELETE ON campus.tbl_studierendenantrag_status TO web;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_status_studierendenantrag_status_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_status_studierendenantrag_status_id_seq TO web;";
+
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag_status: '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag_status: table created';
+}
+
+if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_lehrveranstaltung LIMIT 1"))
+{
+ $qry = "CREATE TABLE campus.tbl_studierendenantrag_lehrveranstaltung (
+ studierendenantrag_lehrveranstaltung_id INTEGER NOT NULL,
+ studierendenantrag_id INTEGER NOT NULL,
+ lehrveranstaltung_id INTEGER NOT NULL,
+ studiensemester_kurzbz VARCHAR(16) NOT NULL,
+ note SMALLINT NOT NULL,
+ anmerkung TEXT NULL,
+ insertamum TIMESTAMP DEFAULT NOW(),
+ insertvon VARCHAR(32) NOT NULL,
+ CONSTRAINT tbl_studierendenantrag_lehrveranstaltung_pk PRIMARY KEY(studierendenantrag_lehrveranstaltung_id),
+ CONSTRAINT tbl_studiensemester_fk FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT tbl_note_fk FOREIGN KEY (note) REFERENCES lehre.tbl_note(note) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT tbl_studierendenantrag_fk FOREIGN KEY (studierendenantrag_id) REFERENCES campus.tbl_studierendenantrag(studierendenantrag_id) ON UPDATE CASCADE ON DELETE RESTRICT
+ );
+ CREATE SEQUENCE campus.tbl_studierendenantrag_lehrveranstaltung_studierendenantrag_lehrveranstaltung_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+ ALTER TABLE campus.tbl_studierendenantrag_lehrveranstaltung ALTER COLUMN studierendenantrag_lehrveranstaltung_id SET DEFAULT nextval('campus.tbl_studierendenantrag_lehrveranstaltung_studierendenantrag_lehrveranstaltung_id_seq');
+
+ GRANT SELECT, INSERT, DELETE ON campus.tbl_studierendenantrag_lehrveranstaltung TO vilesci;
+ GRANT SELECT, INSERT ON campus.tbl_studierendenantrag_lehrveranstaltung TO web;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_lehrveranstaltung_studierendenantrag_lehrveranstaltung_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_lehrveranstaltung_studierendenantrag_lehrveranstaltung_id_seq TO web;";
+
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag_lehrveranstaltung: '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag_lehrveranstaltung: table created';
+}
+
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/studierendenantrag';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/studierendenantrag', 'Berechtigung für Bearbeiten Studierendenanträge');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_berechtigung: Added permission for student/studierendenantrag ';
+ }
+}
+
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/antragfreigabe';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/antragfreigabe', 'Berechtigung für Freigabe der Studierendenanträge');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_berechtigung: Added permission for student/antragfreigabe ';
+ }
+}
+
+if (!$result = @$db->db_query("SELECT campus.get_status_studierendenantrag(0)"))
+{
+ $qry = 'CREATE FUNCTION campus.get_status_studierendenantrag(integer) RETURNS character varying
+ LANGUAGE plpgsql
+ STABLE
+ RETURNS NULL ON NULL INPUT
+ AS $_$
+ DECLARE i_studierendenantrag_id ALIAS FOR $1;
+ DECLARE rec RECORD;
+ BEGIN
+ SELECT INTO rec studierendenantrag_statustyp_kurzbz
+ FROM campus.tbl_studierendenantrag_status
+ WHERE studierendenantrag_id=i_studierendenantrag_id
+ ORDER BY insertamum desc
+ LIMIT 1;
+
+ RETURN rec.studierendenantrag_statustyp_kurzbz;
+ END;
+ $_$;
+
+ ALTER FUNCTION campus.get_status_studierendenantrag(integer) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'campus.get_status_studierendenantrag(integer): '.$db->db_last_error().' ';
+ else
+ echo ' campus.get_status_studierendenantrag(integer): function created';
+}
+elseif ($result = @$db->db_query("SELECT 1 FROM pg_proc WHERE proname='get_status_studierendenantrag' AND provolatile='s'"))
+{
+ if ($db->db_num_rows($result) == 0) {
+ $qry = 'ALTER FUNCTION campus.get_status_studierendenantrag(integer) STABLE;';
+ $qry .= 'ALTER FUNCTION campus.get_status_studierendenantrag(integer) RETURNS NULL ON NULL INPUT;';
+
+ if(!$db->db_query($qry))
+ echo 'campus.get_status_studierendenantrag(integer): '.$db->db_last_error().' ';
+ else
+ echo ' campus.get_status_studierendenantrag(integer): function updated';
+ }
+}
+
+if (!$result = @$db->db_query("SELECT campus.get_status_id_studierendenantrag(0)"))
+{
+ $qry = 'CREATE FUNCTION campus.get_status_id_studierendenantrag(integer) RETURNS integer
+ LANGUAGE plpgsql
+ STABLE
+ RETURNS NULL ON NULL INPUT
+ AS $_$
+ DECLARE i_studierendenantrag_id ALIAS FOR $1;
+ DECLARE rec RECORD;
+ BEGIN
+ SELECT INTO rec studierendenantrag_status_id
+ FROM campus.tbl_studierendenantrag_status
+ WHERE studierendenantrag_id=i_studierendenantrag_id
+ ORDER BY insertamum desc
+ LIMIT 1;
+
+ RETURN rec.studierendenantrag_status_id;
+ END;
+ $_$;
+
+ ALTER FUNCTION campus.get_status_id_studierendenantrag(integer) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'campus.get_status_id_studierendenantrag(integer): '.$db->db_last_error().' ';
+ else
+ echo ' campus.get_status_id_studierendenantrag(integer): function created';
+}
+elseif ($result = @$db->db_query("SELECT 1 FROM pg_proc WHERE proname='get_status_id_studierendenantrag' AND provolatile='s'"))
+{
+ if ($db->db_num_rows($result) == 0) {
+ $qry = 'ALTER FUNCTION campus.get_status_id_studierendenantrag(integer) STABLE;';
+ $qry .= 'ALTER FUNCTION campus.get_status_id_studierendenantrag(integer) RETURNS NULL ON NULL INPUT;';
+
+ if(!$db->db_query($qry))
+ echo 'campus.get_status_id_studierendenantrag(integer): '.$db->db_last_error().' ';
+ else
+ echo ' campus.get_status_id_studierendenantrag(integer): function updated';
+ }
+}
+
+if (!$result = @$db->db_query("SELECT public.get_absem_prestudent(0, null)"))
+{
+ $qry = 'CREATE FUNCTION public.get_absem_prestudent(integer, character varying) RETURNS integer
+ LANGUAGE plpgsql
+ STABLE
+ AS $_$
+ DECLARE i_prestudent_id ALIAS FOR $1;
+ DECLARE cv_studiensemester_kurzbz ALIAS FOR $2;
+ DECLARE rec RECORD;
+ BEGIN
+ IF (cv_studiensemester_kurzbz IS NULL) THEN
+ SELECT INTO rec ausbildungssemester
+ FROM public.tbl_prestudentstatus
+ WHERE prestudent_id=i_prestudent_id
+ ORDER BY datum desc,insertamum desc, ext_id desc
+ LIMIT 1;
+ ELSE
+ SELECT INTO rec ausbildungssemester
+ FROM tbl_prestudentstatus
+ WHERE prestudent_id=i_prestudent_id AND studiensemester_kurzbz=cv_studiensemester_kurzbz
+ ORDER BY datum desc,insertamum desc, ext_id desc
+ LIMIT 1;
+ END IF;
+
+ RETURN rec.ausbildungssemester;
+ END;
+ $_$;
+
+ ALTER FUNCTION public.get_absem_prestudent(integer, character varying) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_absem_prestudent(integer, character varying): '.$db->db_last_error().' ';
+ else
+ echo ' public.get_absem_prestudent(integer, character varying): function created';
+}
+elseif ($result = @$db->db_query("SELECT 1 FROM pg_proc WHERE proname='get_absem_prestudent' AND provolatile='s'"))
+{
+ if ($db->db_num_rows($result) == 0) {
+ $qry = 'ALTER FUNCTION public.get_absem_prestudent(integer, character varying) STABLE;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_absem_prestudent(integer, character varying): '.$db->db_last_error().' ';
+ else
+ echo ' public.get_absem_prestudent(integer, character varying): function updated';
+ }
+}
+if (!$result = @$db->db_query("SELECT public.get_stdsem_prestudent(0, null)"))
+{
+ $qry = 'CREATE FUNCTION public.get_stdsem_prestudent(integer, character varying) RETURNS character varying
+ LANGUAGE plpgsql
+ STABLE
+ AS $_$
+ DECLARE i_prestudent_id ALIAS FOR $1;
+ DECLARE cv_studiensemester_kurzbz ALIAS FOR $2;
+ DECLARE rec RECORD;
+ BEGIN
+ IF (cv_studiensemester_kurzbz IS NULL) THEN
+ SELECT INTO rec studiensemester_kurzbz
+ FROM public.tbl_prestudentstatus
+ WHERE prestudent_id=i_prestudent_id
+ ORDER BY datum desc,insertamum desc, ext_id desc
+ LIMIT 1;
+ ELSE
+ SELECT INTO rec studiensemester_kurzbz
+ FROM tbl_prestudentstatus
+ WHERE prestudent_id=i_prestudent_id AND studiensemester_kurzbz=cv_studiensemester_kurzbz
+ ORDER BY datum desc,insertamum desc, ext_id desc
+ LIMIT 1;
+ END IF;
+
+ RETURN rec.studiensemester_kurzbz;
+ END;
+ $_$;
+
+ ALTER FUNCTION public.get_stdsem_prestudent(integer, character varying) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_stdsem_prestudent(integer, character varying): '.$db->db_last_error().' ';
+ else
+ echo ' public.get_stdsem_prestudent(integer, character varying): function created';
+}
+elseif ($result = @$db->db_query("SELECT 1 FROM pg_proc WHERE proname='get_stdsem_prestudent' AND provolatile='s'"))
+{
+ if ($db->db_num_rows($result) == 0) {
+ $qry = 'ALTER FUNCTION public.get_stdsem_prestudent(integer, character varying) STABLE;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_stdsem_prestudent(integer, character varying): '.$db->db_last_error().' ';
+ else
+ echo ' public.get_stdsem_prestudent(integer, character varying): function updated';
+ }
+}
+
+if ($result = @$db->db_query("SELECT 1 FROM pg_proc WHERE proname='get_rolle_prestudent' AND provolatile='s'"))
+{
+ if ($db->db_num_rows($result) == 0) {
+ $qry = 'ALTER FUNCTION public.get_rolle_prestudent(integer, character varying) STABLE;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_rolle_prestudent(integer, character varying): '.$db->db_last_error().' ';
+ else
+ echo ' public.get_rolle_prestudent(integer, character varying): function updated';
+ }
+}
+
+if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'abbrecherStgl';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('abbrecherStgl', 'Abbrecher', TRUE, '{\"durch Stgl\", \"by Course Director\"}', '{\"durch Stgl\", \"by Course Director\"}');";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_status_grund '.$db->db_last_error().' ';
+ else
+ echo ' public.tbl_status_grund: Added Statusgrund abbrecherStgl for Abbrecher ';
+ }
+}
+
+if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'abbrecherStud';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('abbrecherStud', 'Abbrecher', TRUE, '{\"durch Stud\", \"by Student\"}', '{\"durch Stud\", \"by Student\"}');";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_status_grund '.$db->db_last_error().' ';
+ else
+ echo ' public.tbl_status_grund: Added Statusgrund abbrecherStud for Abbrecher ';
+ }
+}
+
+if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'preabbrecher';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('preabbrecher', 'Student', TRUE, '{\"Pre-Abbrecher\", \"Pre-Aborted\"}', '{\"Pre-Abbrecher\", \"Pre-Aborted\"}');";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_status_grund '.$db->db_last_error().' ';
+ else
+ echo ' public.tbl_status_grund: Added Statusgrund pre-abbrecher for Student ';
+ }
+}
diff --git a/system/dbupdate_3.4/28260_vertraege.php b/system/dbupdate_3.4/28260_vertraege.php
new file mode 100644
index 000000000..91a9e2cc9
--- /dev/null
+++ b/system/dbupdate_3.4/28260_vertraege.php
@@ -0,0 +1,442 @@
+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 IF NOT EXISTS hr;
+ COMMENT ON SCHEMA hr IS E'Personalverwaltung';
+
+ ALTER SCHEMA hr OWNER TO fhcomplete;
+
+ CREATE EXTENSION IF NOT EXISTS pgcrypto;
+
+ 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 NOT NULL,
+ vertragsbestandteiltyp_kurzbz varchar(32) NOT NULL,
+ 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_gehaltshistorie
+ (
+ gehaltshistorie_id serial NOT NULL,
+ datum date,
+ betrag bytea,
+ gehaltsbestandteil_id integer,
+ mitarbeiter_uid character varying(32),
+ CONSTRAINT tbl_gehaltshistorie_pk PRIMARY KEY (gehaltshistorie_id)
+ );
+
+ COMMENT ON COLUMN hr.tbl_gehaltshistorie.betrag IS E'verschluesselt';
+
+ ALTER TABLE hr.tbl_gehaltshistorie ADD CONSTRAINT tbl_gehaltshistorie_gehaltsbestandteil_id_fk FOREIGN KEY (gehaltsbestandteil_id)
+ REFERENCES hr.tbl_gehaltsbestandteil (gehaltsbestandteil_id) MATCH FULL
+ ON UPDATE CASCADE ON DELETE SET NULL;
+
+ ALTER TABLE hr.tbl_gehaltshistorie ADD CONSTRAINT tbl_gehaltshistorie_mitarbeiter_uid_fk FOREIGN KEY (mitarbeiter_uid)
+ REFERENCES public.tbl_mitarbeiter (mitarbeiter_uid) MATCH FULL
+ ON DELETE SET NULL 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 numeric(4,2),
+ 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) NOT NULL,
+ 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 boolean NOT NULL,
+ azgrelevant boolean NOT NULL,
+ homeoffice boolean NOT NULL,
+ 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 ON hr.tbl_vertragsbestandteil_karenz TO web;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_karenztyp TO vilesci;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_teilzeittyp TO vilesci;
+ GRANT SELECT ON hr.tbl_vertragsbestandteil_freitext TO web;
+ GRANT SELECT ON hr.tbl_vertragsbestandteil_freitexttyp TO web;
+
+ GRANT SELECT ON hr.tbl_dienstverhaeltnis TO web;
+ GRANT SELECT ON hr.tbl_vertragsart TO web;
+ GRANT SELECT ON hr.tbl_vertragsbestandteil TO web;
+ GRANT SELECT ON hr.tbl_vertragsbestandteiltyp TO web;
+ GRANT SELECT ON hr.tbl_vertragsbestandteil_stunden TO web;
+ GRANT SELECT ON hr.tbl_vertragsbestandteil_zeitaufzeichnung TO web;
+
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_gehaltsbestandteil TO vilesci;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_gehaltshistorie TO vilesci;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_gehaltstyp TO vilesci;
+
+ GRANT USAGE ON SCHEMA hr TO vilesci;
+ GRANT USAGE ON SCHEMA hr TO web;
+
+ 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_teilzeittyp(teilzeittyp_kurzbz, bezeichnung) VALUES('wiedereingliederungteilzeit','Wiedereingliederungsteilzeit');
+
+ INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dienstverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('echterdv','Echter DV','Echter Dienstvertrag', true, null, true, 100);
+ INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dienstverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('studentischehilfskr','Studentische Hilfskraft','Studentische Hilfskraft', true, 'echterdv', true, 101);
+
+ INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dienstverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('freierdv','Freier DV','Freier Dienstvertrag', false, null, true, 200);
+ INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dienstverhaeltnis, 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, dienstverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('gastlektor','Gastlektor','Gastlektor', true, 'freierdv', true, 202);
+ INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dienstverhaeltnis, 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, dienstverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) VALUES('werkvertrag','Werkvertrag','Werkvertrag', true, null, true, 300);
+ INSERT INTO hr.tbl_vertragsart(vertragsart_kurzbz, bezeichnung, anmerkung, dienstverhaeltnis, 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_gehaltstyp(gehaltstyp_kurzbz, bezeichnung, valorisierung, sort, aktiv) VALUES('lohnausgleichatz','Lohnausgleich ATZ', false, 5, true);
+ INSERT INTO hr.tbl_gehaltstyp(gehaltstyp_kurzbz, bezeichnung, valorisierung, sort, aktiv) VALUES('zusatzvereinbarung','Zusatzvereinbarung',false, 6, 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_gehaltshistorie_gehaltsbestandteil_id ON hr.tbl_gehaltshistorie 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_gehaltshistorie 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';
+
+ GRANT USAGE ON hr.tbl_dienstverhaeltnis_dienstverhaeltnis_id_seq TO vilesci;
+ GRANT USAGE ON hr.tbl_vertragsbestandteil_vertragsbestandteil_id_seq TO vilesci;
+ GRANT USAGE ON hr.tbl_gehaltshistorie_gehaltshistorie_id_seq TO vilesci;
+ GRANT USAGE ON hr.tbl_sachaufwand_sachaufwand_id_seq TO vilesci;
+
+ GRANT USAGE ON hr.tbl_gehaltsbestandteil_gehaltsbestandteil_id_seq TO vilesci;
+ ";
+
+ if (! $db->db_query($qry))
+ echo 'Vertraege: ' . $db->db_last_error() . ' ';
+ else
+ echo 'HR Schema und Vertagstabellen wurden neu erstellt';
+ }
+}
diff --git a/system/dbupdate_3.4/29094_stundensaetze.php b/system/dbupdate_3.4/29094_stundensaetze.php
new file mode 100644
index 000000000..e0ef5d963
--- /dev/null
+++ b/system/dbupdate_3.4/29094_stundensaetze.php
@@ -0,0 +1,69 @@
+db_query("SELECT 1 FROM hr.tbl_stundensatz LIMIT 1"))
+{
+ $qry = "
+ CREATE TABLE hr.tbl_stundensatztyp
+ (
+ stundensatztyp varchar(32) NOT NULL,
+ bezeichnung varchar(256),
+ aktiv boolean NOT NULL DEFAULT true,
+ insertamum timestamp DEFAULT now(),
+ insertvon varchar(32),
+ updateamum timestamp,
+ updatevon varchar(32),
+ CONSTRAINT tbl_stundensatztyp_pk PRIMARY KEY (stundensatztyp)
+ );
+
+ CREATE TABLE hr.tbl_stundensatz
+ (
+ stundensatz_id integer NOT NULL,
+ uid character varying(32),
+ stundensatztyp varchar(32),
+ stundensatz numeric(6, 2),
+ oe_kurzbz character varying(32),
+ gueltig_von date,
+ gueltig_bis date,
+ insertamum timestamp,
+ insertvon varchar(32),
+ updateamum timestamp,
+ updatevon varchar(32),
+ CONSTRAINT tbl_stundensatz_pkey PRIMARY KEY (stundensatz_id)
+ );
+
+ CREATE SEQUENCE hr.tbl_stundensatz_stundensatz_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+ ALTER TABLE hr.tbl_stundensatz ALTER COLUMN stundensatz_id SET DEFAULT nextval('hr.tbl_stundensatz_stundensatz_id_seq');
+
+ ALTER TABLE hr.tbl_stundensatz ADD CONSTRAINT tbl_stundensatz_stundensatztyp_fk FOREIGN KEY (stundensatztyp) REFERENCES hr.tbl_stundensatztyp (stundensatztyp) ON DELETE RESTRICT ON UPDATE CASCADE;
+ ALTER TABLE hr.tbl_stundensatz ADD CONSTRAINT tbl_stundensatz_uid_fk FOREIGN KEY (uid) REFERENCES public.tbl_mitarbeiter ON DELETE RESTRICT ON UPDATE CASCADE;
+ ALTER TABLE hr.tbl_stundensatz ADD CONSTRAINT tbl_stundensatz_oe_kurzbz_fk FOREIGN KEY (oe_kurzbz) REFERENCES public.tbl_organisationseinheit (oe_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_stundensatztyp TO vilesci;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_stundensatz TO vilesci;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_stundensatz_stundensatz_id_seq TO vilesci;
+
+ GRANT SELECT ON hr.tbl_stundensatztyp TO web;
+ GRANT SELECT ON hr.tbl_stundensatz TO web;
+
+ INSERT INTO hr.tbl_stundensatztyp(stundensatztyp, bezeichnung, insertvon) VALUES('lehre','Lehre', 'checksystem');
+ INSERT INTO hr.tbl_stundensatztyp(stundensatztyp, bezeichnung, insertvon) VALUES('kalkulatorisch','kalkulatorische Stundensaetze', 'checksystem');
+
+ CREATE INDEX idx_tbl_stundensatz_uid ON hr.tbl_stundensatz USING btree (uid);
+ CREATE INDEX idx_tbl_stundensatz_stundensatz_id ON hr.tbl_stundensatz USING btree (stundensatz_id);
+ ";
+
+ if (!$db->db_query($qry))
+ echo 'Stundensaetze Tabelle: ' . $db->db_last_error() . ' ';
+ else
+ echo 'Stundensaetze Tabelle erstellt';
+
+
+}
diff --git a/system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php b/system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php
new file mode 100644
index 000000000..e473eb37a
--- /dev/null
+++ b/system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php
@@ -0,0 +1,73 @@
+db_query('SELECT 1 FROM bis.tbl_bismeldestichtag LIMIT 1'))
+{
+ $qry = "CREATE TABLE bis.tbl_bismeldestichtag (
+ meldestichtag_id integer,
+ meldestichtag date NOT NULL,
+ studiensemester_kurzbz varchar(16) NOT NULL,
+ insertamum timestamp DEFAULT NOW(),
+ insertvon varchar(32),
+ updateamum timestamp,
+ updatevon varchar(32)
+ );
+
+ COMMENT ON TABLE bis.tbl_bismeldestichtag IS 'Deadline Dates for BIS reporting';
+
+ ALTER TABLE bis.tbl_bismeldestichtag ADD CONSTRAINT pk_bismeldestichtag PRIMARY KEY (meldestichtag_id);
+
+ CREATE SEQUENCE bis.tbl_meldestichtag_meldestichtag_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+ ALTER TABLE bis.tbl_bismeldestichtag ALTER COLUMN meldestichtag_id SET DEFAULT nextval('bis.tbl_meldestichtag_meldestichtag_id_seq');
+ ALTER TABLE bis.tbl_bismeldestichtag ADD CONSTRAINT fk_bismeldestichtag_studiensemester_kurzbz FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;";
+
+ if (!$db->db_query($qry))
+ echo 'bis.tbl_bismeldestichtag: '.$db->db_last_error().' ';
+ else
+ echo ' bis.tbl_bismeldestichtag table created';
+
+ $qry = 'GRANT SELECT ON TABLE bis.tbl_bismeldestichtag TO web;';
+ if (!$db->db_query($qry))
+ echo 'bis.tbl_bismeldestichtag: '.$db->db_last_error().' ';
+ else
+ echo ' Granted privileges to web on bis.tbl_bismeldestichtag';
+
+ $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_bismeldestichtag TO vilesci;';
+ if (!$db->db_query($qry))
+ echo 'bis.tbl_bismeldestichtag: '.$db->db_last_error().' ';
+ else
+ echo ' Granted privileges to vilesci on bis.tbl_bismeldestichtag';
+
+ $qry = 'GRANT SELECT, UPDATE ON SEQUENCE bis.tbl_meldestichtag_meldestichtag_id_seq TO web;';
+ if (!$db->db_query($qry))
+ echo 'bis.tbl_meldestichtag_meldestichtag_id_seq: '.$db->db_last_error().' ';
+ else
+ echo ' Granted privileges to web on bis.tbl_meldestichtag_meldestichtag_id_seq';
+
+ $qry = 'GRANT SELECT, UPDATE ON SEQUENCE bis.tbl_meldestichtag_meldestichtag_id_seq TO vilesci;';
+ if (!$db->db_query($qry))
+ echo 'bis.tbl_meldestichtag_meldestichtag_id_seq: '.$db->db_last_error().' ';
+ else
+ echo ' Granted privileges to vilesci on bis.tbl_meldestichtag_meldestichtag_id_seq';
+}
+
+// Add permission for edit Bismelden flag
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/editBismelden';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/editBismelden', 'Ändern des Bismelden Attributs pro Student');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_berechtigung: Added permission editBismelden ';
+ }
+}
diff --git a/system/dbupdate_3.4/29529_infocenter_anpassungen.php b/system/dbupdate_3.4/29529_infocenter_anpassungen.php
new file mode 100644
index 000000000..e11f3ed39
--- /dev/null
+++ b/system/dbupdate_3.4/29529_infocenter_anpassungen.php
@@ -0,0 +1,34 @@
+db_query("SELECT has_sequence_privilege('web', 'testtool.tbl_pruefling_pruefling_id_seq', 'UPDATE')"))
+{
+
+ if($db->db_fetch_object($result)->has_sequence_privilege === "f")
+ {
+ $qry = "GRANT SELECT, UPDATE ON SEQUENCE testtool.tbl_pruefling_pruefling_id_seq to web;";
+
+ if(!$db->db_query($qry))
+ echo 'testtool.tbl_pruefling Berechtigungen: '.$db->db_last_error().' ';
+ else
+ echo ' Web User fuer testtool.tbl_pruefling berechtigt';
+ }
+}
+
+// Update Berechtigungen fuer vilesci User erteilen fuer tbl_pruefling_pruefling_id_seq
+if($result = @$db->db_query("SELECT has_sequence_privilege('vilesci', 'testtool.tbl_pruefling_pruefling_id_seq', 'UPDATE')"))
+{
+ if($db->db_fetch_object($result)->has_sequence_privilege === "f")
+ {
+ $qry = "GRANT SELECT, UPDATE ON SEQUENCE testtool.tbl_pruefling_pruefling_id_seq to vilesci;";
+
+ if(!$db->db_query($qry))
+ echo 'testtool.tbl_pruefling Berechtigungen: '.$db->db_last_error().' ';
+ else
+ echo ' vilesci User fuer testtool.tbl_pruefling berechtigt';
+ }
+}
+
+
diff --git a/system/dbupdate_3.4/29835_uhstat1_erfassung_der_uhstat1_daten_ueber_das_bewerbungstool.php b/system/dbupdate_3.4/29835_uhstat1_erfassung_der_uhstat1_daten_ueber_das_bewerbungstool.php
new file mode 100644
index 000000000..aaa412d88
--- /dev/null
+++ b/system/dbupdate_3.4/29835_uhstat1_erfassung_der_uhstat1_daten_ueber_das_bewerbungstool.php
@@ -0,0 +1,141 @@
+db_query('SELECT 1 FROM bis.tbl_abschluss LIMIT 1'))
+{
+ $qry = "CREATE TABLE bis.tbl_abschluss
+ (
+ ausbildung_code integer NOT NULL,
+ abschluss_bez varchar(128),
+ bezeichnung character varying(128)[],
+ aktiv boolean NOT NULL DEFAULT true,
+ in_oesterreich boolean,
+ CONSTRAINT pk_tbl_abschluss PRIMARY KEY (ausbildung_code)
+ );
+
+ COMMENT ON TABLE bis.tbl_abschluss IS 'Key-Table of graduation';
+ COMMENT ON COLUMN bis.tbl_abschluss.aktiv IS 'Shows wether graduation is still valid.';
+ COMMENT ON COLUMN bis.tbl_abschluss.in_oesterreich IS 'Shows if graduation was obtained in Austria.';
+
+ GRANT SELECT ON bis.tbl_abschluss TO web;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON bis.tbl_abschluss TO vilesci;
+
+ -- prefill values
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(110, 'Pflichtschule', '{\"Pflichtschule (mit/ohne Abschluss)\", \"Compulsory school (Completed/not completed)\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(121, 'Lehre', '{\"Lehre\", \"Apprenticeship\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(122, 'Mittlere Schule ohne Matura', '{\"Mittlere Schule ohne Matura (z.B. Handelsschule, Fachschule)\", \"School for intermediate vocational education (without university entrance qualification)\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(123, 'Meisterprüfung', '{\"Meisterprüfung\", \"Master craftsman''s diploma\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(131, 'AHS', '{\"AHS (allgemein bildende höhere Schule)\", \"Academic secondary school\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(132, 'BHS', '{\"BHS (berufsbildende höhere Schule, z.B. HAK, HTL)\", \"College for higher vocational education\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(133, 'Sonstige Hochschulzugangsberechtigung', '{\"Sonstige Hochschulzugangsberechtigung (z.B. Berufsreifeprüfung)\", \"Other university entrance qualification (e.g. ''Berufsreifeprüfung'')\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(141, 'Akademie', '{\"Akademie (z.B. PÄDAK, SOZAK)\", \"Academy (for example PÄDAK, SOZAK)\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(142, 'Universität/Hochschule', '{\"Universität/Hochschule\", \"University/university of applied sciences/university college of teacher education\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(210, 'Pflichtschule', '{\"Pflichtschule (mit/ohne Abschluss)\", \"Compulsory school (Completed/not completed)\"}', false);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(220, 'Ausbildung ohne Hochschulzugangsberechtigung', '{\"Lehre oder mittlere Schule ohne Matura/Ausbildung ohne Hochschulzugangsberechtigung\", \"Apprenticeship or school for intermediate vocational education (education without university entrance qualification)\"}', false);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(230, 'Ausbildung mit Hochschulzugangsberechtigung', '{\"Höhere Schule mit Matura / Ausbildung mit Hochschulzugangsberechtigung (z.B. Abitur)\", \"Higher secondary school with university entrance qualification\"}', false);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(240, 'Universität/Hochschule', '{\"Universität/Hochschule\", \"University/university of applied sciences/university college of teacher education\"}', false);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung) VALUES(999, 'unbekannt', '{\"Ich weiß nicht, welchen Abschluss meine erziehungsberechtigte Person erlangt hat.\", \"I do not know what degree my legal guardian got.\"}');
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'bis.tbl_abschluss: '.$db->db_last_error().' ';
+ else
+ echo ' bis.tbl_abschluss: Tabelle hinzugefuegt ';
+}
+
+if (!$result = @$db->db_query('SELECT 1 FROM bis.tbl_uhstat1daten LIMIT 1'))
+{
+ $qry = "CREATE SEQUENCE bis.tbl_uhstat1daten_uhstat1daten_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ START WITH 1
+ CACHE 1
+ NO CYCLE;
+
+ CREATE TABLE bis.tbl_uhstat1daten
+ (
+ uhstat1daten_id integer DEFAULT nextval('bis.tbl_uhstat1daten_uhstat1daten_id_seq'::regclass),
+ mutter_geburtsstaat varchar(3),
+ mutter_bildungsstaat varchar(3),
+ mutter_geburtsjahr smallint,
+ mutter_bildungmax integer,
+ vater_geburtsstaat varchar(3),
+ vater_bildungsstaat varchar(3),
+ vater_geburtsjahr smallint,
+ vater_bildungmax integer,
+ person_id integer NOT NULL,
+ insertamum timestamp without time zone DEFAULT now(),
+ insertvon character varying(32),
+ updateamum timestamp without time zone,
+ updatevon character varying(32),
+ CONSTRAINT pk_tbl_uhstat1daten PRIMARY KEY (uhstat1daten_id)
+ );
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_mutter_geburtsstaat FOREIGN KEY (mutter_geburtsstaat)
+ REFERENCES bis.tbl_nation (nation_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_mutter_bildungsstaat FOREIGN KEY (mutter_bildungsstaat)
+ REFERENCES bis.tbl_nation (nation_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_mutter_bildungmax FOREIGN KEY (mutter_bildungmax)
+ REFERENCES bis.tbl_abschluss (ausbildung_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_vater_geburtsstaat FOREIGN KEY (vater_geburtsstaat)
+ REFERENCES bis.tbl_nation (nation_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_vater_bildungsstaat FOREIGN KEY (vater_bildungsstaat)
+ REFERENCES bis.tbl_nation (nation_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_vater_bildungmax FOREIGN KEY (vater_bildungmax)
+ REFERENCES bis.tbl_abschluss (ausbildung_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_person_id FOREIGN KEY (person_id)
+ REFERENCES public.tbl_person (person_id) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT uk_uhstat1daten_person_id UNIQUE(person_id);
+
+ COMMENT ON TABLE bis.tbl_uhstat1daten IS 'UHSTAT1 data for a person (statistical data)';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.mutter_geburtsstaat IS 'Birth country of mother of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.mutter_bildungsstaat IS 'Education country of mother of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.mutter_geburtsjahr IS 'Birth year of mother of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.mutter_bildungmax IS 'Highest completed level of education of mother (code)';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.vater_geburtsstaat IS 'Birth country of father of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.vater_bildungsstaat IS 'Education country of father of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.vater_geburtsjahr IS 'Birth year of father of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.vater_bildungmax IS 'Highest completed level of education of father (code)';
+
+ GRANT SELECT, UPDATE, INSERT, DELETE ON bis.tbl_uhstat1daten TO web;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON bis.tbl_uhstat1daten TO vilesci;
+ GRANT SELECT, UPDATE ON bis.tbl_uhstat1daten_uhstat1daten_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON bis.tbl_uhstat1daten_uhstat1daten_id_seq TO web;
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'bis.tbl_uhstat1daten: '.$db->db_last_error().' ';
+ else
+ echo ' bis.tbl_uhstat1daten: Tabelle hinzugefuegt ';
+}
+
+// Add permission for managing UHSTAT1 data
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/uhstat1daten_verwalten';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/uhstat1daten_verwalten', 'UHSTAT1 Daten verwalten');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_berechtigung: Added permission for student/uhstat1daten_verwalten ';
+ }
+}
diff --git a/system/dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php b/system/dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php
new file mode 100644
index 000000000..922920071
--- /dev/null
+++ b/system/dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php
@@ -0,0 +1,28 @@
+db_query("SELECT begruendung_ects FROM lehre.tbl_anrechnung LIMIT 1"))
+{
+ $qry = "ALTER TABLE lehre.tbl_anrechnung ADD COLUMN begruendung_ects text;
+ COMMENT ON COLUMN lehre.tbl_anrechnung.begruendung_ects IS 'Begruendung gleichwertiger ECTS';
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'lehre.tbl_anrechnung '.$db->db_last_error().' ';
+ else
+ echo ' Spalte begruendung_ects zu Tabelle lehre.tbl_anrechnung hinzugefügt';
+}
+
+//Add column begruendung_lvinhalt to lehre.tbl_anrechnung
+if(!@$db->db_query("SELECT begruendung_lvinhalt FROM lehre.tbl_anrechnung LIMIT 1"))
+{
+ $qry = "ALTER TABLE lehre.tbl_anrechnung ADD COLUMN begruendung_lvinhalt text;
+ COMMENT ON COLUMN lehre.tbl_anrechnung.begruendung_lvinhalt IS 'Begruendung gleichwertiger LV-Inhalte';
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'lehre.tbl_anrechnung '.$db->db_last_error().' ';
+ else
+ echo ' Spalte begruendung_lvinhalt zu Tabelle lehre.tbl_anrechnung hinzugefügt';
+}
\ No newline at end of file
diff --git a/system/dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php b/system/dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php
new file mode 100644
index 000000000..0d7b43b8f
--- /dev/null
+++ b/system/dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php
@@ -0,0 +1,15 @@
+db_query("SELECT anmerkung FROM system.tbl_rolleberechtigung LIMIT 1"))
+{
+ $qry = "ALTER TABLE system.tbl_rolleberechtigung ADD COLUMN anmerkung varchar(256);
+ ALTER TABLE system.tbl_rolleberechtigung ADD COLUMN insertamum timestamp DEFAULT now();
+ ALTER TABLE system.tbl_rolleberechtigung ADD COLUMN insertvon varchar(32);";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_rolleberechtigung '.$db->db_last_error().' ';
+ else
+ echo ' Spalten anmerkung, insertamum, insertvon in system.tbl_rolleberechtigung hinzugefügt';
+}
diff --git a/system/dbupdate_3.4/33714_erhoehter_studienbeitrag_fuer_drittsaatenangehoerig.php b/system/dbupdate_3.4/33714_erhoehter_studienbeitrag_fuer_drittsaatenangehoerig.php
new file mode 100644
index 000000000..d2c0c07b8
--- /dev/null
+++ b/system/dbupdate_3.4/33714_erhoehter_studienbeitrag_fuer_drittsaatenangehoerig.php
@@ -0,0 +1,13 @@
+db_query("SELECT 1 FROM public.tbl_buchungstyp WHERE buchungstyp_kurzbz = 'StudiengebuehrErhoeht';"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_buchungstyp (buchungstyp_kurzbz, beschreibung, standardtext, standardbetrag) VALUES ('StudiengebuehrErhoeht', 'Erhöhter Studienbeitrag', 'Erhöhter Studienbeitrag', '-3000');";
+ if (!$db->db_query($qry))
+ echo 'public.tbl_buchungstyp '.$db->db_last_error().' ';
+ else
+ echo ' public.tbl_buchungstyp: Added buchungstyp "StudiengebuehrErhoeht" ';
+ }
+}
\ No newline at end of file
diff --git a/system/dbupdate_3.4/36275_zeitaufzeichnung_karenz.php b/system/dbupdate_3.4/36275_zeitaufzeichnung_karenz.php
new file mode 100644
index 000000000..ecdbe31f5
--- /dev/null
+++ b/system/dbupdate_3.4/36275_zeitaufzeichnung_karenz.php
@@ -0,0 +1,16 @@
+db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_vertragsbestandteil_funktion' AND table_schema='hr' AND grantee='web' AND privilege_type='SELECT'"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = "GRANT SELECT ON hr.tbl_vertragsbestandteil_funktion TO web;";
+
+ if (! $db->db_query($qry))
+ echo 'Vertragsbestandteil Funktion Rechte: ' . $db->db_last_error() . ' ';
+ else
+ echo 'Leserechte für Web User auf vertragsbetandteil_funktion hinzugefuegt';
+ }
+}
diff --git a/system/filtersupdate.php b/system/filtersupdate.php
index 909dfc601..cf8107429 100644
--- a/system/filtersupdate.php
+++ b/system/filtersupdate.php
@@ -520,7 +520,29 @@ $filters = array(
{"name": "Studiengang"},
{"name": "AbgewiesenAm"},
{"name": "Nachricht"},
- {"name": "Kaution"}
+ {"name": "Kaution"},
+ {"name": "LockUser"}
+ ],
+ "filters": []
+ }
+ ',
+ 'oe_kurzbz' => null,
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'dataset_name' => 'aufgenommen',
+ 'filter_kurzbz' => 'InfoCenterAufgenommenAlle',
+ 'description' => '{Alle}',
+ 'sort' => 1,
+ 'default_filter' => true,
+ 'filter' => '
+ {
+ "name": "Aufgenommen - Lehrgänge",
+ "columns": [
+ {"name": "PersonId"},
+ {"name": "Vorname"},
+ {"name": "Nachname"},
+ {"name": "Studiengang"}
],
"filters": []
}
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 0bc748c80..b6b5b2ffc 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -1168,7 +1168,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
- 'text' => 'Break',
+ 'text' => 'Cancel',
'description' => '',
'insertvon' => 'system'
)
@@ -1795,7 +1795,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
- 'text' => 'Address',
+ 'text' => 'Salutation',
'description' => '',
'insertvon' => 'system'
)
@@ -2081,6 +2081,26 @@ $phrases = array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'adressen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Adressen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'addresses',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'person',
@@ -2141,6 +2161,26 @@ $phrases = array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'plz',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'PLZ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'zip',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'person',
@@ -4154,6 +4194,712 @@ When on hold, the date is only a reminder.',
)
)
),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'rechnungsnummer',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Rechnungsnummer',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Invoice Number',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'date',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Rechnungsnummer',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Invoice Number',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faelligam',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fällig am',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Due on',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'gesamtbetrag',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Gesamtbetrag',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Total amount',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'rechnungsempfaenger',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Rechnungsempfänger',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Invoice recipient',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'rechnung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Rechnungsempfänger',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Invoice',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'studiensemester',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Semester',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Semester',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'bezeichnung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bezeichnung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Title',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'datum',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Datum',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Date',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'zahlungsbestaetigung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zahlungsbestätigung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Payment confirmation',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'bewerbung',
+ 'phrase' => 'erklaerungInvoices',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ablauf und Zahlungsbedingungen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Procedure and terms of payment',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'rechnungserklaerung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wir möchten Sie darauf aufmerksam machen, dass bei der Überweisung *immer* die Rechnungsnummer als Zahlungsreferenz anzuführen ist.
+ Andernfalls erfolgt keine automatische Zahlungszuordnung und es kann zu einer Verzögerung der Darstellung des aktuellen Zahlungsstatus
+ der Rechnung im CIS kommen.
+
+
+ Im Falle dass der Betrag an ein falsches Konto überwiesen wurde, bitten wir Sie höflichst sich an Ihre Bank zu wenden.
+
+
+ Jede Rechnung gilt als "Bezahlt", wenn der Gesamtbetrag vollständig auf unser Konto eingelangt ist.
+
+ ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'We would like to draw your attention to the fact that the invoice number must *always* be quoted as the payment reference when making a bank transfer.
+ Otherwise, no automatic payment allocation will take place and there may be a delay in displaying the current payment status of the invoice in CIS.
+
+
+ In the event that the amount has been transferred to an incorrect account, we kindly ask you to contact your bank.
+
+
+ Each invoice is considered "paid" when the total amount has been credited to our account in full.
+
+ ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'kontoinfotitle',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kontoinformationen der FHTW',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'FHTW account information',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'kontoinfobody',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sämtliche Zahlungen sind an die nachstehende Kontonummer zu leisten und die Rechnungsnummer muss als Zahlungsreferenz eingegeben werden.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'All payments must be made to the following account number and the invoice number must be entered as the payment reference.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'kontoinfoausland',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Auslandsüberweisungen:
+
+ Bei Auslandsüberweisungen sind die Spesenkosten von den
+
+ Zahlenden zusätzlich zu den Rechnungsbeträgen zu zahlen.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Foreign bank transfers:
+
+ In the case of foreign bank transfers, the charges are to be paid by the
+
+ the payer in addition to the invoice amounts.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'rechnungtitle',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Rechnungen & Zahlungsbestätigungen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Invoices & payment confirmations',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq0frage',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Warum ist die Einzahlung trotz Einzahlung noch offen?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Why is the deposit still outstanding despite payment?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq0antwort',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Der häufigste Grund für diesen Fall ist, dass bei der Überweisung nicht die Rechnungsnummer als Zahlungsreferenz eingegeben wird.
+Wir bitten Sie höflichst in diesem Fall eine Mail an billing@technikum-wien.at mit Zahlungsbestätigung zu senden.
+Die Transaktion und die Bearbeitung der Zahlung, kann bis zu sechs Werktage dauern.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The most common reason for this is that the invoice number is not entered as the payment reference in the bank transfer.
+In this case, we kindly ask you to send an e-mail to billing@technikum-wien.at with a payment confirmation.
+The transaction and processing of the payment can take up to six working days.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq1frage',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ich habe keine Rechnung erhalten, was tun?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'I have not received an invoice, what should I do?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq1antwort',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'In diesem Fall ist der Spam-Ordner zu kontrollieren. Falls die Rechnung nicht übermittelt wurde ersuchen wir um Information an billing@technikum-wien.at.
+Die Rechnung wird Ihnen erneut zugesendet. Erst nach Erhalt der Rechnung ist der Betrag zu überweisen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'In this case, please check your spam folder. If the invoice has not been sent, please inform us at billing@technikum-wien.at.
+The invoice will be sent to you again. The amount is only to be transferred after receipt of the invoice',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq2frage',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Refundierung des Studienbeitrags',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Refund of the tuition fee',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq2antwort',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Der Studienbeitrag wird nicht rückerstattet, wenn…
+-Anfänger*innen, die ihren Studienplatz nach Semesterbeginn (1. September / 16. Februar) nicht in Anspruch nehmen
+-Studierende, die ihr Studium nach Semesterbeginn (1. September / 16. Februar) abbrechen.
+
+-Unterbrechung vor dem 15.10. bzw. 15.3.: Studienbeitrag wird rückerstattet
+-Unterbrechung nach dem 15.10. bzw. 15.3.: Studienbeitrag wird nicht rückerstattet
+-in den Folgesemestern der Unterbrechung sind keine Studienbeiträge zu zahlen; der ÖHBeitrag ist jedoch in jedem Semester der Unterbrechung zu zahlen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The tuition fee will not be refunded if...
+-Freshmen who do not take up their study place after the start of the semester (September 1 / February 16)
+-Students who discontinue their studies after the start of the semester (September 1 / February 16).
+
+-Interruption before 15.10. or 15.3.: tuition fees will be refunded
+-Interruption after 15.10. or 15.3.: Tuition fee will not be refunded
+-No tuition fees are payable in the semesters following the interruption; however, the ÖH fee must be paid in each semester of the interruption',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq3frage',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sie sind vom Studienbeitrag befreit und haben eine Rechnung für den Studienbeitrag bekommen?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'You are exempt from paying tuition fees and have received an invoice for tuition fees?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq3antwort',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Treten Sie bitte in Kontakt mit Ihrer Studiengangsassistenz. Die offene Rechnung wird storniert.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Please contact your study program assistant. The outstanding invoice will be canceled.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq4frage',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Mir ist ein Fehler bei der Überweisung unterlaufen, was tun?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'I made a mistake with the transfer, what should I do?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq4antwort',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bitte den Fehler an billing@technikum-wien.at melden.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Please report the error to billing@technikum-wien.at.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq5frage',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Eine Rechnung wurde zwei Mal überwiesen, was tun?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'An invoice has been transferred twice, what should I do?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq5antwort',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Falls eine Rechnung doppelt überwiesen wurde, bitten wir Sie dies an billing@technikum-wien.at zu melden. Wir werden Ihnen eine Zahlung refundieren.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'If an invoice has been transferred twice, please report this to billing@technikum-wien.at. We will refund you one payment.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq6frage',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Es stehen mehrere Positionen auf der Rechnung – soll für jede Position eine Überweisung durchgeführt werden?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'There are several items on the invoice - should a transfer be made for each item?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq6antwort',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Nein, es ist immer der auf der Rechnung ausgewiesene Gesamtbetrag zu überweisen.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No, the total amount shown on the invoice must always be transferred.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq7frage',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wann kann der Betrag überwiesen werden?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'When can the amount be transferred?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'faq7antwort',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wir möchten Sie darauf hinweisen, dass Überweisungen erst bei Erhalt der Rechnung durchzuführen sind. Bitte um Angabe der Rechnungsnummer als Zahlungsreferenz.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'We would like to point out that bank transfers should only be made on receipt of the invoice. Please state the invoice number as the payment reference.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'zahlungsempfaenger',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fachhochschule Technikum Wien',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'University of Applied Sciences Technikum Wien',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'password',
@@ -5774,6 +6520,26 @@ When on hold, the date is only a reminder.',
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'error_invalid_date',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Das Datumsformat ist ungültig oder liegt außerhalb des gültigen Bereichs.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The date format is invalid or out of range.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'ui',
@@ -10909,6 +11675,178 @@ Any unusual occurrences
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'begruendungEcts',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Erläutern Sie die Gleichwertigkeit der ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Explain ECTS equivalencies',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'begruendungLvinhalt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Erläutern Sie die Gleichwertigkeit der Lehrveranstaltungsinhalte',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Explain the equivalence of course content',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'anrechnungBegruendungEctsTooltipText',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Hinsichtlich des Umfangs der LV, die Sie anrechnen lassen wollen: Bitte erläutern Sie, warum Ihr Zeugnis bzw. Ihre berufliche Praxis mit dem Umfang der LV gleichwertig ist.
Referenzbeispiele für die ECTS-Berechnung finden Sie rechts in der Infobox.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Regarding the scope of the course you want to have credited: Please explain why your certificate or your professional practice is equivalent to the scope of the course.
Reference examples for the ECTS calculation can be found in the info box on the right.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'anrechnungBegruendungLvinhaltTooltipText',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Hinsichtlich der Lernergebnisse der LV (vgl. CIS), die Sie anrechnen lassen wollen: Bitte erläutern Sie, warum die von Ihnen erworbenen Kompetenzen mit diesen Lernergebnissen gleichwertig sind.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'With regard to the learning outcomes of the course (cf. CIS) for which you want to receive credit: Please explain why the competences you have acquired are equivalent to these learning outcomes.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'requestAnrechnungInfoEctsBerechnungTitle',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Referenzbeispiele ECTS-Berechnung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reference examples of ECTS calculation',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'requestAnrechnungInfoEctsBerechnungBody',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "1 ECTS an der FH Technikum Wien entspricht einem Arbeitsaufwand von 25 Stunden.
+
Schulisches Zeugnis:
+ Bitte die Unterrichtsstunden nachvollziehbar in ECTS umrechnen (ein Schuljahr besteht aus ca. 40 Wochen; d.h., eine Unterrichtsstunde pro Woche sind insgesamt ca. 40 Stunden Jahresaufwand.)
+
Hochschulzeugnis:
+ Bitte die ECTS angeben.
+
Berufliche Praxis:
+ Bitte die Dauer der einschlägigen beruflichen Praxis nachvollziehbar in ECTS umrechnen (1,5 ECTS sind ungefähr eine Arbeitswoche im Umfang von 37,5 Stunden).",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => " 1 ECTS at the FH Technikum Wien corresponds to a workload of 25 hours.
+
School certificate:
+ Please convert the teaching hours into ECTS in a comprehensible way (a school year consists of approx. 40 weeks; i.e. one teaching hour per week is a total of approx. 40 hours of annual work).
+
University certificate:
+ Please indicate the ECTS.
+