model classes for contract parts (Vertragsbestandteile)

This commit is contained in:
Werner Masik
2023-01-21 13:51:59 +01:00
parent fd5ce62b0e
commit f7d315d4cc
18 changed files with 1117 additions and 18 deletions
@@ -0,0 +1,76 @@
<?php
class Dienstverhaeltnis_model extends DB_Model
{
public function __construct()
{
parent::__construct();
$this->dbTable = 'hr.tbl_dienstverhaeltnis';
$this->pk = 'dienstverhaeltnis_id';
}
/**
* @return list of DV
*/
public function getDVByPersonUID($uid)
{
$result = null;
$qry = "
SELECT
dv.dienstverhaeltnis_id,
tbl_benutzer.uid,
tbl_mitarbeiter.personalnummer,
tbl_mitarbeiter.kurzbz,
tbl_mitarbeiter.lektor,
tbl_mitarbeiter.fixangestellt,
tbl_person.person_id,
tbl_benutzer.alias,
dv.von,
dv.bis,
dv.vertragsart_kurzbz,
dv.updateamum,
dv.updatevon
FROM tbl_mitarbeiter
JOIN tbl_benutzer ON tbl_mitarbeiter.mitarbeiter_uid::text = tbl_benutzer.uid::text
JOIN tbl_person USING (person_id)
JOIN hr.tbl_dienstverhaeltnis dv ON(tbl_benutzer.uid::text = dv.mitarbeiter_uid::text)
WHERE tbl_benutzer.uid=?
ORDER BY dv.von desc
";
return $this->execQuery($qry, array($uid));
}
public function getCurrentDVByPersonUID($uid)
{
$qry = "
SELECT
dv.dienstverhaeltnis_id,
tbl_benutzer.uid,
tbl_mitarbeiter.personalnummer,
tbl_mitarbeiter.kurzbz,
tbl_mitarbeiter.lektor,
tbl_mitarbeiter.fixangestellt,
tbl_person.person_id,
tbl_benutzer.alias,
dv.von,
dv.bis,
dv.vertragsart_kurzbz,
dv.updateamum,
dv.updatevon
FROM tbl_mitarbeiter
JOIN tbl_benutzer ON tbl_mitarbeiter.mitarbeiter_uid::text = tbl_benutzer.uid::text
JOIN tbl_person USING (person_id)
JOIN hr.tbl_dienstverhaeltnis dv ON(tbl_benutzer.uid::text = dv.mitarbeiter_uid::text)
WHERE tbl_benutzer.uid=? and (dv.von<=CURRENT_DATE::text::date and (dv.bis is null OR dv.bis>=CURRENT_DATE::text::date))
ORDER BY dv.von desc
";
return $this->execQuery($qry, array($uid));
}
}
@@ -0,0 +1,44 @@
<?php
class Gehaltsbestandteil_model extends DB_Model
{
public function __construct()
{
parent::__construct();
$this->dbTable = 'hr.tbl_gehaltsbestandteil';
$this->pk = 'gehaltsbestandteil_id';
$encryptionkey_filename = APPPATH.'config/extensions/FHC-Core-Personalverwaltung/keys.config.inc.php';
require($encryptionkey_filename);
}
public function getCurrentGBTByDV($dienstverhaeltnis_id)
{
$result = null;
$qry = "
SELECT
gehaltsbestandteil_id,
von,
bis,
anmerkung,
dienstverhaeltnis_id,
gehaltstyp_kurzbz,
valorisierungssperre,
valorisieren,
pgp_sym_decrypt(grundbetrag,?) grundbetrag,
pgp_sym_decrypt(betrag_valorisiert,?) betrag_valorisiert,
gt.bezeichnung as gehaltstyp_bezeichnung
FROM hr.tbl_gehaltsbestandteil gbt JOIN hr.tbl_gehaltstyp gt using(gehaltstyp_kurzbz)
WHERE gbt.dienstverhaeltnis_id=? AND
(gbt.von<=CURRENT_DATE::text::date and (gbt.bis is null OR gbt.bis>=CURRENT_DATE::text::date))
ORDER BY gt.sort
";
return $this->execQuery($qry, array(ENCRYPTIONKEY, ENCRYPTIONKEY, $dienstverhaeltnis_id));
}
}
@@ -0,0 +1,14 @@
<?php
class VertragsbestandteilBefristung_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'hr.tbl_vertragsbestandteil_befristung';
$this->pk = 'vertragsbestandteil_id';
}
}
@@ -0,0 +1,12 @@
<?php
class VertragsbestandteilFreitet_model extends DB_Model
{
public function __construct()
{
parent::__construct();
$this->dbTable = 'hr.tbl_vertragsbestandteil_freitext';
$this->pk = 'vertragsbestandteil_id';
}
}
@@ -0,0 +1,12 @@
<?php
class VertragsbestandteilKV_model extends DB_Model
{
public function __construct()
{
parent::__construct();
$this->dbTable = 'hr.tbl_vertragsbestandteil_kv';
$this->pk = 'vertragsbestandteil_id';
}
}
@@ -0,0 +1,14 @@
<?php
class VertragsbestandteilKarenz_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'hr.tbl_vertragsbestandteil_karenz';
$this->pk = 'vertragsbestandteil_id';
}
}
@@ -0,0 +1,11 @@
<?php
class VertragsbestandteilUrlaubsanspruch_model extends DB_Model
{
public function __construct()
{
parent::__construct();
$this->dbTable = 'hr.tbl_vertragsbestandteil_urlaubsanspruch';
$this->pk = 'vertragsbestandteil_id';
}
}
@@ -0,0 +1,12 @@
<?php
class VertragsbestandteilStunden_model extends DB_Model
{
public function __construct()
{
parent::__construct();
$this->dbTable = 'hr.tbl_vertragsbestandteil_zeitaufzeichnung';
$this->pk = 'vertragsbestandteil_id';
}
}
@@ -6,7 +6,7 @@ use vertragsbestandteil\VertragsbestandteilFactory;
* @author bambi
*/
class Vertragsbestandteil_model extends DB_Model
{
{
/**
* Constructor
*/
@@ -16,39 +16,48 @@ class Vertragsbestandteil_model extends DB_Model
$this->dbTable = 'hr.tbl_vertragsbestandteil';
$this->pk = 'vertragsbestandteil_id';
}
public function getVertragsbestandteile($dienstverhaeltnis_id=1, $stichtag=null)
{
$stichtagclause = '';
if( !is_null($stichtag) )
if( !is_null($stichtag) )
{
$date = strftime('%Y-%m-%d', strtotime($stichtag));
$stichtagclause = 'AND ' . $this->escape($date)
$stichtagclause = 'AND ' . $this->escape($date)
. ' BETWEEN COALESCE(v.von, \'1970-01-01\'::date)'
. ' AND COALESCE(v.bis, \'2170-01-01\'::date)';
}
$sql = <<<EOSQL
SELECT
v.*, s.wochenstunden, s.karenz, f.benutzerfunktion_id, f.anmerkung, f. kuendigungsrelevant
FROM
hr.tbl_vertragsbestandteil v
LEFT JOIN
hr.tbl_vertragsbestandteil_stunden s USING(vertragsbestandteil_id)
LEFT JOIN
SELECT
v.*,
s.wochenstunden, s.karenz,
f.benutzerfunktion_id, f.anmerkung, f. kuendigungsrelevant,
g.von as gehalt_von, g.bis as gehalt_bis, g.dienstverhaeltnis_id as gehalt_dienstverhaeltnis_id, g.grundbetrag,
g.betrag_valorisiert,g.valorisieren,gehaltstyp_kurzbz,valorisierungssperre
FROM
hr.tbl_vertragsbestandteil v
LEFT JOIN
hr.tbl_vertragsbestandteil_stunden s USING(vertragsbestandteil_id)
LEFT JOIN
hr.tbl_vertragsbestandteil_funktion f USING(vertragsbestandteil_id)
LEFT JOIN
hr.tbl_gehaltsbestandteil g USING(vertragsbestandteil_id)
WHERE
v.dienstverhaeltnis_id = {$this->escape($dienstverhaeltnis_id)}
{$stichtagclause}
;
EOSQL;
echo $sql . "\n\n";
// echo $sql . "\n\n";
$query = $this->db->query($sql);
$vertragsbestandteile = array();
foreach( $query->result() as $row ) {
try
try
{
$vertragsbestandteile[] = VertragsbestandteilFactory::getVertragsbestandteil($row);
}
@@ -57,7 +66,7 @@ EOSQL;
echo $ex->getMessage() . "\n";
}
}
return $vertragsbestandteile;
}
}