Compare commits

..

12 Commits

Author SHA1 Message Date
Harald Bamberger 48a26e2abf use multicolumn pkey in on conflict constraint 2026-07-15 15:34:18 +02:00
Harald Bamberger a66f4eead7 Merge branch 'master' into feature-76781/Vertragsbestandteil_Kollektivvertrag 2026-07-15 07:30:00 +02:00
Harald Bamberger 98cf6c6531 Merge branch 'master' into feature-76781/Vertragsbestandteil_Kollektivvertrag 2026-06-24 12:09:46 +02:00
Werner Masik 637cc1d1ae special case ''!=0 2026-06-24 11:59:49 +02:00
Werner Masik 1bb4181974 clean up comment 2026-06-23 15:30:52 +02:00
Werner Masik faec23b933 refactor kollektivvertrag db schema 2026-06-23 13:24:45 +02:00
Werner Masik 49260fb997 add oe_kurzbz to kollektivvertrag 2026-06-16 17:27:50 +02:00
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
27 changed files with 356 additions and 67 deletions
@@ -259,7 +259,7 @@ class BetriebsmittelP extends FHCAPI_Controller
$kaution = $this->input->post('kaution');
if($kaution) $kaution = str_replace(',', '.', $kaution);
$ausgegebenam = $this->input->post('ausgegebenam');
$retouram = $this->input->post('retouram') == "" ? null : $this->input->post('retouram');
$retouram = $this->input->post('retouram');
// NOTE(chris): transform_kartennummer
if ($betriebsmitteltyp == 'Zutrittskarte' && $nummer)
@@ -9,9 +9,9 @@ class Detailheader extends FHCAPI_Controller
public function __construct()
{
parent::__construct([
'getHeader' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'],
'getPersonAbteilung' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'],
'getLeitungOrg' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'],
'getHeader' => ['vertrag/mitarbeiter:r'],
'getPersonAbteilung' => ['vertrag/mitarbeiter:r'],
'getLeitungOrg' => ['vertrag/mitarbeiter:r'],
]);
}
@@ -294,10 +294,6 @@ class Funktionen extends FHCAPI_Controller
{
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
if($datum_von == '')
$datum_von = null;
if($datum_bis == '')
$datum_bis = null;
$result = $this->BenutzerfunktionModel->update(
[
@@ -371,9 +371,6 @@ class Abschlusspruefung extends FHCAPI_Controller
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
$datum = $formData['datum'] == '' ? null : $formData['datum'];
$sponsion = $formData['sponsion'] == '' ? null : $formData['sponsion'];
$result = $this->AbschlusspruefungModel->update(
[
'abschlusspruefung_id' => $abschlusspruefung_id
@@ -385,8 +382,8 @@ class Abschlusspruefung extends FHCAPI_Controller
'vorsitz' => $vorsitz,
'pruefungsantritt_kurzbz' => $formData['pruefungsantritt_kurzbz'],
'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'],
'datum' => $datum,
'sponsion' => $sponsion,
'datum' => $formData['datum'],
'sponsion' => $formData['sponsion'],
'pruefer1' => $pruefer1,
'pruefer2' => $pruefer2,
'pruefer3' => $pruefer3,
@@ -170,8 +170,6 @@ class Dokumente extends FHCAPI_Controller
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
$nachgereicht_am = $this->input->post('nachgereicht_am') == '' ? null : $this->input->post('nachgereicht_am');
$uid = getAuthUID();
$result = $this->AkteModel->update(
@@ -182,7 +180,7 @@ class Dokumente extends FHCAPI_Controller
'dokument_kurzbz' => $this->input->post('dokument_kurzbz'),
'anmerkung_intern' => $this->input->post('anmerkung_intern'),
'titel_intern' => $this->input->post('titel_intern'),
'nachgereicht_am' => $nachgereicht_am,
'nachgereicht_am' => $this->input->post('nachgereicht_am'),
'updateamum' => date('c'),
'updatevon' => $uid,
]
@@ -429,12 +429,9 @@ class Konto extends FHCAPI_Controller
'updateamum' => date('c'),
'updatevon' => getAuthUID()
];
foreach ($allowed as $field)
if ($this->input->post($field) !== null)
$data[$field] = $this->input->post($field);
if($data['buchungsdatum'] == '')
$data['buchungsdatum'] = null;
$result = $this->KontoModel->update($id, $data);
@@ -237,8 +237,8 @@ class Mobility extends FHCAPI_Controller
}
$formData = $this->input->post('formData');
$von = ($formData['von'] ?? '') ?: null;
$bis = ($formData['bis'] ?? '') ?: null;
$von = $formData['von'] ?? null;
$bis = $formData['bis'] ?? null;
$nation_code = $formData['nation_code'] ?? null;
$mobilitaetsprogramm_code = $formData['mobilitaetsprogramm_code'] ?? null;
$herkunftsland_code = $formData['herkunftsland_code'] ?? null;
@@ -193,7 +193,7 @@ class Prestudent extends FHCAPI_Controller
}
elseif (
$val === ''
&& in_array($prop, ['zgvnation', 'zgvmanation', 'zgvdoktornation', 'berufstaetigkeit_code', 'ausbildungcode', 'zgvdatum', 'zgvmadatum'])
&& in_array($prop, ['zgvnation', 'zgvmanation', 'zgvdoktornation', 'berufstaetigkeit_code', 'ausbildungcode'])
)
{
$val = null;
@@ -448,10 +448,8 @@ class Pruefung extends FHCAPI_Controller
}
}
$datum = $this->input->post('datum') == '' ? null : $this->input->post('datum');
if(intval($pruefung_id) > 0)
{
$result = $this->PruefungModel->update(
[
'pruefung_id' => $pruefung_id
@@ -461,7 +459,7 @@ class Pruefung extends FHCAPI_Controller
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
'note' => $this->input->post('note'),
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
'datum' => $datum,
'datum' => $this->input->post('datum'),
'anmerkung' => $this->input->post('anmerkung'),
'updatevon' => $authUID,
'updateamum' => date('c'),
@@ -474,7 +472,7 @@ class Pruefung extends FHCAPI_Controller
'lehreinheit_id' => $this->input->post('lehreinheit_id'),
'student_uid' => $this->input->post('student_uid'),
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
'datum' => $datum,
'datum' => $this->input->post('datum'),
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
'note' => $this->input->post('note'),
'anmerkung' => $this->input->post('anmerkung'),
@@ -522,7 +520,7 @@ class Pruefung extends FHCAPI_Controller
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'note' => $this->input->post('note'),
'uebernahmedatum' => date('c'),
'benotungsdatum' => $datum,
'benotungsdatum' => $this->input->post('datum'),
'insertamum' => date('c'),
'insertvon' => $authUID,
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
@@ -557,7 +555,7 @@ class Pruefung extends FHCAPI_Controller
], [
'note' => $this->input->post('note'),
'uebernahmedatum' => date('c'),
'benotungsdatum' => $datum,
'benotungsdatum' => $this->input->post('datum'),
'updateamum' => date('c'),
'updatevon' => $authUID,
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
@@ -296,10 +296,6 @@ class Student extends FHCAPI_Controller
$fotoval = ($val == '') ? null : str_replace('data:image/jpeg;base64,', '', $val);
$update_person[$prop] = $fotoval;
}
else if ($prop == 'gebdatum')
{
$update_person[$prop] = ($val == '') ? null : $val;
}
else
{
$update_person[$prop] = $val;
@@ -40,6 +40,9 @@ abstract class AbstractBestandteil implements IValidation
if( is_bool($new_value) && ($old_value !== $new_value) ) {
$this->modifiedcolumns[$columnname] = $columnname;
} else if($old_value === '' xor $new_value === '') {
// handle special case of ''!=0 because of different behavior in PHP 7 vs. 8
$this->modifiedcolumns[$columnname] = $columnname;
} else if(is_null($old_value) xor is_null($new_value)) {
$this->modifiedcolumns[$columnname] = $columnname;
} else if($old_value != $new_value) {
@@ -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,96 @@
<?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;
}
}
@@ -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;
}
@@ -433,7 +433,6 @@ export default {
:label="$p.t('wawi/ausgegebenam')"
name="ausgegebenam"
v-model="formData.ausgegebenam"
model-type="yyyy-MM-dd"
auto-apply
:enable-time-picker="false"
text-input
@@ -450,7 +449,6 @@ export default {
:label="$p.t('wawi/retouram')"
name="retouram"
v-model="formData.retouram"
model-type="yyyy-MM-dd"
auto-apply
:enable-time-picker="false"
text-input
@@ -551,7 +551,6 @@ export default {
container-class="mb-3 col-3"
type="DatePicker"
v-model="formData.datum_von"
model-type="yyyy-MM-dd"
name="datum_von"
:label="$p.t('ui/from') + ' *'"
auto-apply
@@ -567,7 +566,6 @@ export default {
container-class="mb-3 col-3"
type="DatePicker"
v-model="formData.datum_bis"
model-type="yyyy-MM-dd"
name="datum_bis"
:label="$p.t('global/bis')"
auto-apply
@@ -470,7 +470,6 @@ export default {
:label="$p.t('admission', 'anmeldundRtAm')"
type="DatePicker"
v-model="formData.anmeldedatum"
model-type="yyyy-MM-dd"
auto-apply
:enable-time-picker="false"
text-input
@@ -293,7 +293,6 @@ export default {
:label="$p.t('person', 'geburtsdatum')"
type="DatePicker"
v-model="data.gebdatum"
model-type="yyyy-MM-dd"
name="gebdatum"
:clearable="false"
no-today
@@ -103,7 +103,6 @@ export default {
<form-input
type="DatePicker"
v-model="formData.nachgereicht_am"
model-type="yyyy-MM-dd"
name="nachgereicht_am"
:label="$p.t('dokumente/nachreichungAm')"
auto-apply
@@ -467,7 +467,6 @@ export default {
:label="$p.t('ui', 'von')"
type="DatePicker"
v-model="formData.von"
model-type="yyyy-MM-dd"
auto-apply
:enable-time-picker="false"
text-input
@@ -502,7 +501,6 @@ export default {
:label="$p.t('global', 'bis')"
type="DatePicker"
v-model="formData.bis"
model-type="yyyy-MM-dd"
auto-apply
:enable-time-picker="false"
text-input
@@ -276,7 +276,6 @@ export default{
container-class="mb-3"
type="DatePicker"
v-model="formData.datum"
model-type="yyyy-MM-dd"
name="datum"
:label="$p.t('global/datum')"
auto-apply
@@ -292,7 +291,6 @@ export default{
container-class="mb-3"
type="DatePicker"
v-model="formData.bestaetigtam"
model-type="yyyy-MM-dd"
name="bestaetigtam"
:label="$p.t('lehre/bestaetigt_am')"
auto-apply
@@ -308,14 +306,13 @@ export default{
container-class="mb-3"
type="DatePicker"
v-model="formData.bewerbung_abgeschicktamum"
model-type="yyyy-MM-dd HH:mm:ss"
name="bewerbung_abgeschicktamum"
:label="$p.t('lehre/bewerbung_abgeschickt_am')"
auto-apply
:enable-time-picker="true"
format="dd.MM.yyyy HH:mm:ss"
:enable-time-picker="false"
format="dd.MM.yyyy"
text-input
preview-format="dd.MM.yyyy HH:mm:ss"
preview-format="dd.MM.yyyy"
:teleport="true"
:disabled="bisLocked || !hasPrestudentstatusPermission"
>
@@ -285,7 +285,6 @@ export default {
uid="stv-list-new-gebdatum"
name="gebdatum"
v-model="formDataPerson['gebdatum']"
model-type="yyyy-MM-dd"
:disabled="!!person"
@update:model-value="loadSuggestions"
text-input
+3 -17
View File
@@ -4,7 +4,6 @@ import FormInput from '../Form/Input.js';
import ApiUdf from '../../api/udf.js';
export default {
name: 'CoreUdfCmpt',
components: {
CoreFetchCmpt,
FormInput
@@ -27,8 +26,7 @@ export default {
// The values as associative array
modelValue: Object,
// Show only fields with a name that exists in the filter
filter: [String, Array],
readonly: true
filter: [String, Array]
},
data() {
return {
@@ -37,13 +35,6 @@ export default {
};
},
computed: {
isPkValid() {
// If the provided pk is _not_ valid
return !Object.keys(this.pk).every(key => !this.pk[key]);
},
getReadonly() {
return this.readonly;
},
filterArray() {
if (!this.filter || Array.isArray(this.filter))
return this.filter;
@@ -70,10 +61,6 @@ export default {
},
watch: {
pk(n, o) {
// If the provided pk is _not_ valid
if (Object.keys(n).every(key => !n[key])) return;
if (!this.$refs.fetch)
return; // NOTE(chris): no initial load yet
@@ -137,7 +124,6 @@ export default {
template: `
<div class="core-udf row">
<core-fetch-cmpt
v-if="isPkValid"
ref="fetch"
:api-function="loadF"
:api-function-parameters="{ ciModel, pk }"
@@ -152,7 +138,7 @@ export default {
:type="field.type"
:multiple="field.multiple"
:title="field.description"
:disabled="field.disabled || getReadonly"
:disabled="field.disabled"
:clearable="field.clearable"
:auto-apply="field.autoApply"
:enable-time-picker="field.enableTimePicker"
@@ -166,4 +152,4 @@ export default {
</template>
</core-fetch-cmpt>
</div>`
}
}
+1
View File
@@ -98,6 +98,7 @@ require_once('dbupdate_3.4/75888_reihungstest_mehrfachdurchfuehrung.php');
require_once('dbupdate_3.4/76150_perm_other_lv_plan.php');
require_once('dbupdate_3.4/68957_dashboard_bookmark_neue_Spalte_sort.php');
require_once('dbupdate_3.4/68530_Dashboard_Cleanup.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,204 @@
<?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,
oe_kurzbz character varying(32),
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),
CONSTRAINT tbl_kollektivvertrag_oe_kurzbz_fk FOREIGN KEY (oe_kurzbz) REFERENCES tbl_organisationseinheit(oe_kurzbz) MATCH FULL ON UPDATE CASCADE ON DELETE RESTRICT
);
GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE hr.tbl_kollektivvertrag TO vilesci;
INSERT INTO hr.tbl_kollektivvertrag(kollektivvertrag_kurzbz, oe_kurzbz, bezeichnung, aktiv, sort, insertvon, insertamum) VALUES('IT','gmbh','KV IT',true,1,'system',NOW());
INSERT INTO hr.tbl_kollektivvertrag(kollektivvertrag_kurzbz, oe_kurzbz, bezeichnung, aktiv, sort, insertvon, insertamum) VALUES('XY','gst','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;
INSERT INTO hr.tbl_kollektivvertrag_verwendungsgruppe(verwendungsgruppe_kurzbz, kollektivvertrag_kurzbz, bezeichnung,aktiv, sort, insertvon, insertamum) VALUES
('VG1_XY','XY','VG 1',true,1,'system',NOW()),
('VG2_XY','XY','VG 2',true,2,'system',NOW()),
('VG3_XY','XY','VG 3',true,3,'system',NOW()),
('VG4_XY','XY','VG 4',true,4,'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_verwendungsgruppenjahr' AND table_schema='hr'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "
CREATE TABLE IF NOT EXISTS hr.tbl_kollektivvertrag_verwendungsgruppenjahr (
kv_jahre integer NOT NULL,
verwendungsgruppe_kurzbz character varying(32) NOT NULL,
bezeichnung varchar(64) 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_verwendungsgruppenjahr_pkey PRIMARY KEY (kv_jahre, verwendungsgruppe_kurzbz),
CONSTRAINT tbl_kollektivvertrag_verwendungsgruppenjahr_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_verwendungsgruppenjahr TO vilesci;
INSERT INTO hr.tbl_kollektivvertrag_verwendungsgruppenjahr(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, verwendungsgruppe_kurzbz) DO NOTHING;
INSERT INTO hr.tbl_kollektivvertrag_verwendungsgruppenjahr(kv_jahre, bezeichnung, verwendungsgruppe_kurzbz, aktiv, insertvon, insertamum) VALUES
('0','nach 0','VG1_XY',true, 'system',NOW()),
('2','nach 2','VG1_XY',true, 'system',NOW()),
('4','nach 4','VG1_XY',true, 'system',NOW()),
('5','nach 5','VG1_XY',true, 'system',NOW()),
('0','nach 0','VG2_XY',true,'system',NOW()),
('2','nach 2','VG2_XY',true,'system',NOW()),
('4','nach 4','VG2_XY',true,'system',NOW()),
('5','nach 5','VG2_XY',true,'system',NOW()),
('0','nach 0','VG3_XY',true,'system',NOW()),
('2','nach 2','VG3_XY',true,'system',NOW()),
('4','nach 4','VG3_XY',true,'system',NOW()),
('5','nach 5','VG3_XY',true,'system',NOW()),
('0','nach 0','VG4_XY',true,'system',NOW()),
('2','nach 2','VG4_XY',true,'system',NOW()),
('4','nach 4','VG4_XY',true,'system',NOW()),
('5','nach 5','VG4_XY',true,'system',NOW())
ON CONFLICT (kv_jahre, verwendungsgruppe_kurzbz) DO NOTHING;
";
if (! $db->db_query($qry))
echo '<strong>KV-Stufe: ' . $db->db_last_error() . '</strong><br>';
else
echo 'hr.tbl_kollektivvertrag_verwendungsgruppenjahr 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_kv_jahre_fk FOREIGN KEY (kv_jahre, verwendungsgruppe_kurzbz) REFERENCES hr.tbl_kollektivvertrag_verwendungsgruppenjahr (kv_jahre, verwendungsgruppe_kurzbz) 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>';
}
}