diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php
index 1517122c2..9607e13a9 100644
--- a/include/mitarbeiter.class.php
+++ b/include/mitarbeiter.class.php
@@ -28,6 +28,7 @@ class mitarbeiter extends benutzer
{
public $new;
public $result=array();
+ public $maData=array();
//Tabellenspalten
public $ausbildungcode; //integer
@@ -1937,6 +1938,63 @@ class mitarbeiter extends benutzer
}
}
+ /**
+ * Liefert alle zeitaufzeichnungspflichtigen Mitarbeiter*innen
+ *
+ * @param $aktiv
+ * @return boolean
+ */
+ public function getZeitaufzeichnungspflichtig($aktiv=null)
+ {
+ $aktivClause = '';
+
+ if (is_bool($aktiv)) $aktivClause = 'AND b.aktiv = '.$this->db_add_param($aktiv, FHC_BOOLEAN);
+
+ $qry = "
+ SELECT
+ ma.mitarbeiter_uid, p.nachname, p.vorname, b.alias
+ FROM
+ public.tbl_mitarbeiter ma
+ JOIN public.tbl_benutzer b ON (mitarbeiter_uid=uid)
+ JOIN public.tbl_person p USING(person_id)
+ WHERE
+ EXISTS (
+ SELECT 1
+ FROM
+ hr.tbl_vertragsbestandteil_zeitaufzeichnung vbtza
+ JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
+ JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
+ WHERE
+ dv.mitarbeiter_uid = b.uid
+ AND zeitaufzeichnung
+ )
+ {$aktivClause}
+ ORDER BY b.uid
+ ";
+
+ if($this->db_query($qry))
+ {
+ $this->maData[] = array();
+ while($row = $this->db_fetch_object())
+ {
+ $ma_obj = new mitarbeiter();
+
+ $ma_obj->nachname = $row->nachname;
+ $ma_obj->vorname = $row->vorname;
+ $ma_obj->mitarbeiter_uid = $row->mitarbeiter_uid;
+ $ma_obj->alias = $row->alias;
+
+ $this->maData[] = $ma_obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
/**
* Generiert nächste freie Personalnummer anhand der sequence tbl_mitarbeiter_personalnummer_seq
* @return string $personalnummer
diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php
index b889201d8..18f2cd40e 100644
--- a/system/dbupdate_3.4.php
+++ b/system/dbupdate_3.4.php
@@ -251,7 +251,7 @@ $tabellen=array(
"hr.tbl_lohnguide_modellstelle" => array("modellstelle_kurzbz", "bezeichnung", "grade", "modellfunktion_kurzbz", "aktiv", "sort", "insertvon", "insertamum", "updatevon", "updateamum"),
"hr.tbl_lohnguide_fachrichtung" => array("fachrichtung_kurzbz", "bezeichnung", "aktiv", "insertvon", "insertamum", "updatevon", "updateamum"),
"hr.tbl_vertragsbestandteil_lohnguide" => array("vertragsbestandteil_id", "stellenbezeichnung", "vordienstzeit", "fachrichtung_kurzbz", "modellstelle_kurzbz", "kommentar_person", "kommentar_modellstelle"),
- "hr.tbl_zeitmodell" => array('zeitmodell_id','bezeichnung','aktiv', 'stundenanzahl','ext_id','sort'),
+ "hr.tbl_zeitmodell" => array('zeitmodell_id', 'zeitmodell_kurzbz','beschreibung','aktiv', 'stundenanzahl','ext_id','sort'),
"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"),
diff --git a/system/dbupdate_3.4/76677_zeitaufzeichnung_zeitmodell.php b/system/dbupdate_3.4/76677_zeitaufzeichnung_zeitmodell.php
index 89d9d07a4..da4824ed1 100644
--- a/system/dbupdate_3.4/76677_zeitaufzeichnung_zeitmodell.php
+++ b/system/dbupdate_3.4/76677_zeitaufzeichnung_zeitmodell.php
@@ -1,28 +1,60 @@
db_query("SELECT * FROM pg_class WHERE relname = 'tbl_zeitmodell_zeitmodell_id_seq'"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ if ($count = @$db->db_query("SELECT * FROM hr.tbl_zeitmodell"))
+ {
+ $count = $db->db_num_rows($count) + 1;
+ $qry = 'CREATE SEQUENCE hr.tbl_zeitmodell_zeitmodell_id_seq START ';
+ $qry .= $count;
+ if(!$db->db_query($qry))
+ {
+ echo ' hr.tbl_zeitmodell '.$db->db_last_error().'
';
+ }
+ else
+ {
+ echo '
hr.tbl_zeitmodell: Sequence hr.tbl_zeitmodell_zeitmodell_id_seq mit Startwert ' . $count . ' erstellt';
+ $qry2 = "GRANT SELECT, UPDATE ON hr.tbl_zeitmodell_zeitmodell_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON hr.tbl_zeitmodell_zeitmodell_id_seq TO web;";
+ if(!$db->db_query($qry2))
+ {
+ echo 'hr.tbl_zeitmodell_zeitmodell_id_seq Berechtigungen: '.$db->db_last_error().'
';
+ }
+ else
+ {
+ echo '
hr.tbl_zeitmodell: Rechte auf hr.tbl_zeitmodell_zeitmodell_id_seq fuer web user und vilesci gesetzt ';
+ }
+ }
+ }
+ }
+}
+
+//Create Table
if ($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table_name='tbl_zeitmodell' AND table_schema='hr'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "
-CREATE TABLE IF NOT EXISTS hr.tbl_zeitmodell (
- zeitmodell_id serial NOT NULL,
- bezeichnung text,
- aktiv boolean NOT NULL DEFAULT FALSE,
- stundenanzahl numeric(8,2),
- ext_id text,
- sort smallint,
- CONSTRAINT tbl_zeitmodell_pkey PRIMARY KEY (zeitmodell_id)
-);
+ CREATE TABLE IF NOT EXISTS hr.tbl_zeitmodell (
+ zeitmodell_id integer,
+ zeitmodell_kurzbz varchar(32) UNIQUE,
+ beschreibung text,
+ aktiv boolean NOT NULL DEFAULT FALSE,
+ stundenanzahl numeric(8,2),
+ ext_id text,
+ sort smallint,
+ insertamum TIMESTAMP DEFAULT NOW(),
+ insertvon VARCHAR(32),
+ updateamum TIMESTAMP,
+ updatevon VARCHAR(32),
+ CONSTRAINT tbl_zeitmodell_pkey PRIMARY KEY (zeitmodell_id)
+ );
-GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE hr.tbl_zeitmodell TO vilesci;
-
-INSERT INTO hr.tbl_zeitmodell(bezeichnung,aktiv, stundenanzahl, sort) VALUES
-('Zeitmodell 1', TRUE, 38.5,1),
-('Zeitmodell 2', TRUE, 38.5,2)
-ON CONFLICT (zeitmodell_id) DO NOTHING;
- ";
+ GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE hr.tbl_zeitmodell TO vilesci;";
if (! $db->db_query($qry))
echo 'Zeitmodell: ' . $db->db_last_error() . '
';
@@ -31,22 +63,35 @@ ON CONFLICT (zeitmodell_id) DO NOTHING;
}
}
-if ($result = $db->db_query("SELECT * FROM information_schema.columns WHERE column_name='zeitmodell_id' AND table_name='tbl_vertragsbestandteil_zeitaufzeichnung' AND table_schema='hr'"))
+//hr.tbl_zeitmodell DEFAULT einstellen
+if ($result = @$db->db_query("SELECT column_default FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_zeitmodell'AND column_name = 'zeitmodell_id' and column_default is null"))
+{
+ if($db->db_num_rows($result)==1)
+ {
+ $qry = "ALTER TABLE hr.tbl_zeitmodell ALTER COLUMN zeitmodell_id SET DEFAULT nextval('hr.tbl_zeitmodell_zeitmodell_id_seq'::regclass);";
+
+ if(!$db->db_query($qry))
+ echo ' hr.tbl_zeitmodell '.$db->db_last_error().'
';
+ else
+ echo '
hr.tbl_zeitmodell: Defaultwert bei Spalte hr.tbl_zeitmodell_id gesetzt';
+ }
+}
+
+//foreign key zu Vertragsbestandteil
+if ($result = @$db->db_query("SELECT * FROM information_schema.columns WHERE column_name='zeitmodell_id' AND table_name='tbl_vertragsbestandteil_zeitaufzeichnung' AND table_schema='hr'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "
ALTER TABLE
hr.tbl_vertragsbestandteil_zeitaufzeichnung
- ADD COLUMN
- zeitmodell_id int;
- ALTER TABLE hr.tbl_vertragsbestandteil_zeitaufzeichnung ADD CONSTRAINT vertragsbestandteil_zeitaufzeichnung_zeitmodell_fk FOREIGN KEY (zeitmodell_id) REFERENCES hr.tbl_zeitmodell (zeitmodell_id) ON DELETE RESTRICT ON UPDATE CASCADE;
-
+ ADD COLUMN
+ zeitmodell_id integer;
+ ALTER TABLE hr.tbl_vertragsbestandteil_zeitaufzeichnung ADD CONSTRAINT vertragsbestandteil_zeitaufzeichnung_zeitmodell_fk FOREIGN KEY (zeitmodell_id) REFERENCES hr.tbl_zeitmodell (zeitmodell_id) ON DELETE RESTRICT ON UPDATE CASCADE;
";
if (! $db->db_query($qry))
echo 'Zeitmodell: ' . $db->db_last_error() . '
';
else
- echo 'Spalte zeitmodell_id wurde in hr.tbl_vertragsbestandteil_zeitaufzeichnung neu erstellt
';
-
+ echo '
Spalte zeitmodell_id wurde in hr.tbl_vertragsbestandteil_zeitaufzeichnung neu erstellt
';
}
}