Compare commits

...

5 Commits

Author SHA1 Message Date
Werner Masik 71a47ee400 fix for saving kollektivvertrag 2026-05-28 16:21:04 +02:00
Werner Masik 024df19a92 remove redundant kollektivvertrag_kurzbz from vertragsbestandteil 2026-05-28 11:49:02 +02:00
Werner Masik 8e728b0bfe add missing reference to kollektivvertrag 2026-05-26 16:39:45 +02:00
Werner Masik ca1df4460d db init for kollectivvertrag 2026-05-13 10:55:53 +02:00
Werner Masik 1b4f65d65b init KV tables 2026-04-30 09:43:41 +02:00
7 changed files with 315 additions and 2 deletions
@@ -4,6 +4,7 @@ namespace vertragsbestandteil;
use Exception;
use vertragsbestandteil\VertragsbestandteilStunden;
use vertragsbestandteil\VertragsbestandteilLohnguide;
use vertragsbestandteil\VertragsbestandteilKollektivvertrag;
/**
* Description of VertragsbestandteilFactory
@@ -24,6 +25,7 @@ class VertragsbestandteilFactory
const VERTRAGSBESTANDTEIL_ZEITAUFZEICHNUNG = 'zeitaufzeichnung';
const VERTRAGSBESTANDTEIL_LEHRE = 'lehre';
const VERTRAGSBESTANDTEIL_LOHNGUIDE = 'lohnguide';
const VERTRAGSBESTANDTEIL_KOLLEKTIVVERTRAG = 'kollektivvertrag';
public static function getVertragsbestandteil($data, $fromdb=false)
{
@@ -76,10 +78,15 @@ class VertragsbestandteilFactory
$vertragsbestandteil = new VertragsbestandteilLohnguide();
$vertragsbestandteil->hydrateByStdClass($data, $fromdb);
break;
case self::VERTRAGSBESTANDTEIL_KOLLEKTIVVERTRAG:
$vertragsbestandteil = new VertragsbestandteilKollektivvertrag();
$vertragsbestandteil->hydrateByStdClass($data, $fromdb);
break;
default:
throw new Exception('Unknown vertragsbestandteiltyp_kurzbz '
. $vertragsbestandteiltyp_kurzbz);
. $vertragsbestandteiltyp_kurzbz);
}
return $vertragsbestandteil;
@@ -139,6 +146,14 @@ class VertragsbestandteilFactory
'VertragsbestandteilLohnguide_model');
$vertragsbestandteildbmodel = $CI->VertragsbestandteilLohnguide_model;
break;
case self::VERTRAGSBESTANDTEIL_KOLLEKTIVVERTRAG:
$CI->load->model(
'vertragsbestandteil/VertragsbestandteilKollektivvertrag_model',
'VertragsbestandteilKollektivvertrag_model'
);
$vertragsbestandteildbmodel = $CI->VertragsbestandteilKollektivvertrag_model;
break;
default:
throw new Exception('Unknown vertragsbestandteil_kurzbz '
@@ -0,0 +1,110 @@
<?php
namespace vertragsbestandteil;
use vertragsbestandteil\Vertragsbestandteil;
use vertragsbestandteil\VertragsbestandteilFactory;
class VertragsbestandteilKollektivvertrag extends Vertragsbestandteil
{
protected $kv_jahre;
protected $verwendungsgruppe_kurzbz;
protected $kommentar;
public function __construct()
{
parent::__construct();
$this->setVertragsbestandteiltyp_kurzbz(
VertragsbestandteilFactory::VERTRAGSBESTANDTEIL_KOLLEKTIVVERTRAG);
}
public function getKv_jahre()
{
return $this->kv_jahre;
}
public function setKv_jahre($kv_jahre): self
{
$this->markDirty('kv_jahre', $this->kv_jahre, $kv_jahre);
$this->kv_jahre = $kv_jahre;
return $this;
}
public function getVerwendungsgruppe_kurzbz()
{
return $this->verwendungsgruppe_kurzbz;
}
public function setVerwendungsgruppe_kurzbz($verwendungsgruppe_kurzbz): self
{
$this->markDirty('verwendungsgruppe_kurzbz', $this->verwendungsgruppe_kurzbz, $verwendungsgruppe_kurzbz);
$this->verwendungsgruppe_kurzbz = $verwendungsgruppe_kurzbz;
return $this;
}
public function getKommentar()
{
return $this->kommentar;
}
public function setKommentar($kommentar): self
{
$this->markDirty('kommentar', $this->kommentar, $kommentar);
$this->kommentar = $kommentar;
return $this;
}
public function hydrateByStdClass($data, $fromdb=false)
{
parent::hydrateByStdClass($data, $fromdb);
$this->fromdb = $fromdb;
isset($data->verwendungsgruppe_kurzbz) && $this->setVerwendungsgruppe_kurzbz($data->verwendungsgruppe_kurzbz);
isset($data->kv_jahre) && $this->setKv_jahre($data->kv_jahre);
isset($data->kommentar) && $this->setKommentar($data->kommentar);
$this->fromdb = false;
}
public function toStdClass(): \stdClass
{
$tmp = array(
'vertragsbestandteil_id' => $this->getVertragsbestandteil_id(),
'kv_jahre' => $this->getKv_jahre(),
'verwendungsgruppe_kurzbz' => $this->getVerwendungsgruppe_kurzbz(),
'kommentar' => $this->getKommentar(),
);
$tmp = array_filter($tmp, function($k) {
return in_array($k, $this->modifiedcolumns);
}, ARRAY_FILTER_USE_KEY);
return (object) $tmp;
}
public function __toString()
{
$txt = <<<EOTXT
verwendungsgruppe_kurzbz: {$this->getVerwendungsgruppe_kurzbz()}
EOTXT;
return parent::__toString() . $txt;
}
/* public function validate()
{
if( !(filter_var($this->tage, FILTER_VALIDATE_INT,
array(
'options' => array(
'min_range' => 1,
'max_range' => 50
)
)
)) ) {
$this->validationerrors[] = 'Urlaubsanspruch muss eine Tagesanzahl im Bereich 1 bis 50 sein.';
}
return parent::validate();
} */
}
@@ -11,6 +11,7 @@ require_once __DIR__ . '/VertragsbestandteilUrlaubsanspruch.php';
require_once __DIR__ . '/VertragsbestandteilFreitext.php';
require_once __DIR__ . '/VertragsbestandteilKarenz.php';
require_once __DIR__ . '/VertragsbestandteilLohnguide.php';
require_once __DIR__ . '/VertragsbestandteilKollektivvertrag.php';
require_once __DIR__ . '/VertragsbestandteilFactory.php';
require_once __DIR__ . '/OverlapChecker.php';
@@ -0,0 +1,11 @@
<?php
class VertragsbestandteilKollektivvertrag_model extends DB_Model
{
public function __construct()
{
parent::__construct();
$this->dbTable = 'hr.tbl_vertragsbestandteil_kollektivvertrag';
$this->pk = 'vertragsbestandteil_id';
}
}
@@ -38,7 +38,8 @@ class Vertragsbestandteil_model extends DB_Model
s.wochenstunden, s.teilzeittyp_kurzbz,
u.tage,
z.zeitaufzeichnung, z.azgrelevant, z.homeoffice,
lg.stellenbezeichnung, lg.vordienstzeit, lg.fachrichtung_kurzbz, lg.modellstelle_kurzbz, lg.kommentar_person, lg.kommentar_modellstelle
lg.stellenbezeichnung, lg.vordienstzeit, lg.fachrichtung_kurzbz, lg.modellstelle_kurzbz, lg.kommentar_person, lg.kommentar_modellstelle,
kv.verwendungsgruppe_kurzbz, kv.kv_jahre, kv.kommentar
FROM
hr.tbl_vertragsbestandteil v
LEFT JOIN
@@ -66,6 +67,8 @@ class Vertragsbestandteil_model extends DB_Model
hr.tbl_vertragsbestandteil_zeitaufzeichnung z USING(vertragsbestandteil_id)
LEFT JOIN
hr.tbl_vertragsbestandteil_lohnguide lg USING(vertragsbestandteil_id)
LEFT JOIN
hr.tbl_vertragsbestandteil_kollektivvertrag kv USING(vertragsbestandteil_id)
EOSQL;
return $sql;
}
+1
View File
@@ -94,6 +94,7 @@ require_once('dbupdate_3.4/71399_dashboard_update_widget_paths.php');
require_once('dbupdate_3.4/71645_studvw_messagetab_ladezeit.php');
require_once('dbupdate_3.4/71566_studienordnungsdokument_neuer_organisationseinheitstyp_programm.php');
require_once('dbupdate_3.4/70376_lohnguide.php');
require_once('dbupdate_3.4/76781_kollektivvertrag.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -0,0 +1,172 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
if ($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table_name='tbl_kollektivvertrag' AND table_schema='hr'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "
CREATE TABLE IF NOT EXISTS hr.tbl_kollektivvertrag (
kollektivvertrag_kurzbz character varying(32) NOT NULL,
bezeichnung varchar(64) NOT NULL,
aktiv boolean DEFAULT FALSE,
sort smallint,
insertvon character varying(32) NOT NULL,
insertamum timestamp without time zone DEFAULT now() NOT NULL,
updatevon character varying(32),
updateamum timestamp without time zone,
CONSTRAINT tbl_kollektivvertrag_pkey PRIMARY KEY (kollektivvertrag_kurzbz)
);
GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE hr.tbl_kollektivvertrag TO vilesci;
INSERT INTO hr.tbl_kollektivvertrag(kollektivvertrag_kurzbz, bezeichnung, aktiv, sort, insertvon, insertamum) VALUES('IT','KV IT',true,1,'system',NOW());
";
if (! $db->db_query($qry))
echo '<strong>Kollektivvertrag: ' . $db->db_last_error() . '</strong><br>';
else
echo 'hr.tbl_kollektivvertrag_verwendungsgruppe wurde neu erstellt<br>';
}
}
if ($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table_name='tbl_kollektivvertrag_verwendungsgruppe' AND table_schema='hr'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "
CREATE TABLE IF NOT EXISTS hr.tbl_kollektivvertrag_verwendungsgruppe (
verwendungsgruppe_kurzbz character varying(32) NOT NULL,
kollektivvertrag_kurzbz character varying(32) NOT NULL,
bezeichnung varchar(64) NOT NULL,
aktiv boolean DEFAULT FALSE,
sort smallint,
insertvon character varying(32) NOT NULL,
insertamum timestamp without time zone DEFAULT now() NOT NULL,
updatevon character varying(32),
updateamum timestamp without time zone,
CONSTRAINT tbl_kollektivvertrag_verwendungsgruppe_pkey PRIMARY KEY (verwendungsgruppe_kurzbz),
CONSTRAINT tbl_kollektivvertrag_kollektivvertrag_kurzbz_fk FOREIGN KEY (kollektivvertrag_kurzbz) REFERENCES hr.tbl_kollektivvertrag (kollektivvertrag_kurzbz) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE
);
GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE hr.tbl_kollektivvertrag_verwendungsgruppe TO vilesci;
INSERT INTO hr.tbl_kollektivvertrag_verwendungsgruppe(verwendungsgruppe_kurzbz, kollektivvertrag_kurzbz, bezeichnung,aktiv, sort, insertvon, insertamum) VALUES
('VG1','IT','VG 1',true,1,'system',NOW()),
('VG2','IT','VG 2',true,2,'system',NOW()),
('VG3','IT','VG 3',true,3,'system',NOW()),
('VG4','IT','VG 4',true,4,'system',NOW()),
('VG5','IT','VG 5',true,5,'system',NOW()),
('VG6','IT','VG 6',true,6,'system',NOW())
ON CONFLICT (verwendungsgruppe_kurzbz) DO NOTHING;
";
if (! $db->db_query($qry))
echo '<strong>KV Gruppe: ' . $db->db_last_error() . '</strong><br>';
else
echo 'hr.tbl_kollektivvertrag_verwendungsgruppe wurde neu erstellt<br>';
}
}
if ($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table_name='tbl_kollektivvertrag_verwendungsgruppenjahre' AND table_schema='hr'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "
CREATE TABLE IF NOT EXISTS hr.tbl_kollektivvertrag_verwendungsgruppenjahre (
kv_jahre integer NOT NULL,
bezeichnung varchar(64) NOT NULL,
verwendungsgruppe_kurzbz character varying(32) NOT NULL,
aktiv boolean DEFAULT FALSE,
insertvon character varying(32) NOT NULL,
insertamum timestamp without time zone DEFAULT now() NOT NULL,
updatevon character varying(32),
updateamum timestamp without time zone,
CONSTRAINT tbl_kollektivvertrag_verwendungsgruppenjahre_pkey PRIMARY KEY (kv_jahre),
CONSTRAINT tbl_kollektivvertrag_verwendungsgruppenjahre_vg_kurzbz_fk FOREIGN KEY (verwendungsgruppe_kurzbz) REFERENCES hr.tbl_kollektivvertrag_verwendungsgruppe (verwendungsgruppe_kurzbz) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE
);
GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE hr.tbl_kollektivvertrag_verwendungsgruppenjahre TO vilesci;
INSERT INTO hr.tbl_kollektivvertrag_verwendungsgruppenjahre(kv_jahre, bezeichnung, verwendungsgruppe_kurzbz, aktiv, insertvon, insertamum) VALUES
('0','nach 0','VG1',true, 'system',NOW()),
('2','nach 2','VG1',true, 'system',NOW()),
('4','nach 4','VG1',true, 'system',NOW()),
('5','nach 5','VG1',true, 'system',NOW()),
('0','nach 0','VG2',true,'system',NOW()),
('2','nach 2','VG2',true,'system',NOW()),
('4','nach 4','VG2',true,'system',NOW()),
('5','nach 5','VG2',true,'system',NOW()),
('0','nach 0','VG3',true,'system',NOW()),
('2','nach 2','VG3',true,'system',NOW()),
('4','nach 4','VG3',true,'system',NOW()),
('5','nach 5','VG3',true,'system',NOW()),
('0','nach 0','VG4',true,'system',NOW()),
('2','nach 2','VG4',true,'system',NOW()),
('4','nach 4','VG4',true,'system',NOW()),
('5','nach 5','VG4',true,'system',NOW()),
('0','nach 0','VG5',true,'system',NOW()),
('2','nach 2','VG5',true,'system',NOW()),
('4','nach 4','VG5',true,'system',NOW()),
('5','nach 5','VG5',true,'system',NOW()),
('0','nach 0','VG6',true,'system',NOW()),
('2','nach 2','VG6',true,'system',NOW()),
('4','nach 4','VG6',true,'system',NOW()),
('5','nach 5','VG6',true,'system',NOW())
ON CONFLICT (kv_jahre) DO NOTHING;
";
if (! $db->db_query($qry))
echo '<strong>KV-Stufe: ' . $db->db_last_error() . '</strong><br>';
else
echo 'hr.tbl_kollektivvertrag_verwendungsgruppenjahre wurde neu erstellt<br>';
}
}
if ($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table_name='tbl_vertragsbestandteil_kollektivvertrag' AND table_schema='hr'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "
CREATE TABLE IF NOT EXISTS hr.tbl_vertragsbestandteil_kollektivvertrag (
vertragsbestandteil_id integer NOT NULL,
verwendungsgruppe_kurzbz character varying(32) NOT NULL,
kv_jahre integer NOT NULL,
kommentar varchar(255),
CONSTRAINT tbl_vertragsbestandteil_kollektivvertrag_pk PRIMARY KEY (vertragsbestandteil_id),
CONSTRAINT tbl_vertragsbestandteil_fk FOREIGN KEY (vertragsbestandteil_id) REFERENCES hr.tbl_vertragsbestandteil (vertragsbestandteil_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT tbl_vertragsbestandteil_kollektivvertrag_vg_kurzbz_fk FOREIGN KEY (verwendungsgruppe_kurzbz) REFERENCES hr.tbl_kollektivvertrag_verwendungsgruppe (verwendungsgruppe_kurzbz) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT tbl_vertragsbestandteil_kollektivvertrag_kv_jahre_fk FOREIGN KEY (kv_jahre) REFERENCES hr.tbl_kollektivvertrag_verwendungsgruppenjahre (kv_jahre) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE
);
COMMENT ON TABLE hr.tbl_vertragsbestandteil_kollektivvertrag IS E'Zuordnung zur Einstufung im Kollektivvertrag';
GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE hr.tbl_vertragsbestandteil_kollektivvertrag TO vilesci;
INSERT INTO hr.tbl_vertragsbestandteiltyp(vertragsbestandteiltyp_kurzbz, bezeichnung, ueberlappend) VALUES('kollektivvertrag', 'Kollektivvertrag', false);
";
if (! $db->db_query($qry))
echo '<strong>Vertragsbestandteil Lohnguide: ' . $db->db_last_error() . '</strong><br>';
else
echo 'hr.tbl_vertragsbestandteil_kollektivvertrag wurde neu erstellt<br>';
}
}