From 8cba0aec5a1e6afcde5e385a860487a81b2411cf Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Wed, 22 May 2024 15:32:28 +0200 Subject: [PATCH] vertragsarten dvbund, dvanderegk und dvanderebet hinzugefuegt, MigrateContract default oe und ba1code mapping in config verschoben und config check implementiert --- application/config/migratecontract.php | 36 ++++++++++ .../controllers/system/MigrateContract.php | 71 +++++++++++++++---- system/dbupdate_3.4/28260_vertraege.php | 56 ++++++++++++++- 3 files changed, 148 insertions(+), 15 deletions(-) create mode 100644 application/config/migratecontract.php diff --git a/application/config/migratecontract.php b/application/config/migratecontract.php new file mode 100644 index 000000000..75ba2f505 --- /dev/null +++ b/application/config/migratecontract.php @@ -0,0 +1,36 @@ +. + */ + +if (!defined('BASEPATH')) exit('No direct script access allowed'); + +$config['migratecontract_oe_default'] = 'TODO_OE_DEFAULT'; + +$config['migratecontract_matching_ba1_vertragsart'] = array( + '101'=>'dvbund', + '102'=>'dvanderengk', + '103'=>'echterdv', + '104'=>'studentischehilfskr', + '105'=>'externerlehrender', + '106'=>'dvanderenbet', + '107'=>'werkvertrag', + '108'=>'studentischehilfskr', + '109'=>'ueberlassungsvertrag', + '110'=>'echterfreier', + '111'=>'echterdv' //All-In +); \ No newline at end of file diff --git a/application/controllers/system/MigrateContract.php b/application/controllers/system/MigrateContract.php index 93fd275a3..817eaa4f0 100644 --- a/application/controllers/system/MigrateContract.php +++ b/application/controllers/system/MigrateContract.php @@ -16,7 +16,9 @@ class MigrateContract extends CLI_Controller { private $matching_ba1_vertragsart; - private $OE_DEFAULT = 'gst'; + private $OE_DEFAULT; + + protected $configerrors; /** * Constructor @@ -28,29 +30,70 @@ class MigrateContract extends CLI_Controller $this->load->model('codex/bisverwendung_model', 'BisVerwendungModel'); $this->load->model('person/benutzerfunktion_model', 'BenutzerfunktionModel'); - $this->matching_ba1_vertragsart = array( - '101'=>'externerlehrender', - '102'=>'DV anderen Gebietskörperschaft', - '103'=>'echterdv', - '104'=>'studentischehilfskr', - '105'=>'externerlehrender', - '106'=>'Andere Bildungseinrichtung', - '107'=>'werkvertrag', - '108'=>'studentischehilfskr', - '109'=>'ueberlassungsvertrag', - '110'=>'echterfreier', - '111'=>'echterdv', //All-In - ); + $this->load->config('migratecontract'); + + $this->OE_DEFAULT = $this->config->item('migratecontract_oe_default'); + $this->matching_ba1_vertragsart = $this->config->item('migratecontract_matching_ba1_vertragsart'); + $this->configerrors = array(); } // ----------------------------------------------------------------------------------------------------------------- // Public methods + public function checkConfig() + { + echo "OE_DEFAULT: " . $this->OE_DEFAULT . "\n"; + echo "matching_ba1_vertragsart: " . print_r($this->matching_ba1_vertragsart, true); + + $this->checkOE_DEFAULT(); + $this->checkMatching_ba1_vertragsart(); + + if( count($this->configerrors) > 0 ) + { + foreach($this->configerrors AS $configerror) + { + echo $configerror . "\n"; + } + die("Fehler in der Konfiguration. Abbruch!\n"); + } + else + { + echo "Konfiguration OK.\n"; + } + } + + protected function checkOE_DEFAULT() + { + $db = new DB_Model(); + $oesql = 'SELECT * FROM public.tbl_organisationseinheit WHERE oe_kurzbz = ?'; + $oeres = $db->execReadOnlyQuery($oesql, array($this->OE_DEFAULT)); + if( !hasData($oeres) ) + { + $this->configerrors[] = 'Default Organisationseinheit: "' + . $this->OE_DEFAULT . '" nicht gefunden.'; + } + } + + protected function checkMatching_ba1_vertragsart() { + $db = new DB_Model(); + foreach( $this->matching_ba1_vertragsart AS $vertragsart_kurzbz ) + { + $vasql = 'SELECT * FROM hr.tbl_vertragsart WHERE vertragsart_kurzbz = ?'; + $vares = $db->execReadOnlyQuery($vasql, array($vertragsart_kurzbz)); + if( !hasData($vares) ) + { + $this->configerrors[] = 'Vertragsart "' . $vertragsart_kurzbz + . '" nicht gefunden.'; + } + } + } /** * Everything has a beginning */ public function index($user = null) { + $this->checkConfig(); + if (!is_null($user)) { $contracts = $this->_transformUser($user); diff --git a/system/dbupdate_3.4/28260_vertraege.php b/system/dbupdate_3.4/28260_vertraege.php index 91a9e2cc9..dd43f362e 100644 --- a/system/dbupdate_3.4/28260_vertraege.php +++ b/system/dbupdate_3.4/28260_vertraege.php @@ -437,6 +437,60 @@ if ($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table if (! $db->db_query($qry)) echo 'Vertraege: ' . $db->db_last_error() . '
'; else - echo 'HR Schema und Vertagstabellen wurden neu erstellt'; + echo 'HR Schema und Vertagstabellen wurden neu erstellt
'; } } + +if ($result = $db->db_query("SELECT * FROM hr.tbl_vertragsart WHERE vertragsart_kurzbz='dvbund'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = " + INSERT INTO hr.tbl_vertragsart + (vertragsart_kurzbz, bezeichnung, anmerkung, dienstverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) + VALUES + ('dvbund','DV zum Bund','Dienstverhältnis zum Bund', true, null, true, 400); + "; + + if (! $db->db_query($qry)) + echo 'Vertraege: ' . $db->db_last_error() . '
'; + else + echo 'Vertragsart "Dienstverhältnis zum Bund" erstellt.
'; + } +} + +if ($result = $db->db_query("SELECT * FROM hr.tbl_vertragsart WHERE vertragsart_kurzbz='dvanderengk'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = " + INSERT INTO hr.tbl_vertragsart + (vertragsart_kurzbz, bezeichnung, anmerkung, dienstverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) + VALUES + ('dvanderengk','DV anderen Gebietskörperschaft','Dienstverhältnis zu einer anderen Gebietskörperschaft', true, null, true, 500); + "; + + if (! $db->db_query($qry)) + echo 'Vertraege: ' . $db->db_last_error() . '
'; + else + echo 'Vertragsart "Dienstverhältnis zu einer anderen Gebietskörperschaft" erstellt.
'; + } +} + +if ($result = $db->db_query("SELECT * FROM hr.tbl_vertragsart WHERE vertragsart_kurzbz='dvanderenbet'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = " + INSERT INTO hr.tbl_vertragsart + (vertragsart_kurzbz, bezeichnung, anmerkung, dienstverhaeltnis, vertragsart_kurzbz_parent, aktiv, sort) + VALUES + ('dvanderenbet','DV anderen Bildungseinrichtung','Dienstverhältnis zu einer anderen Bildungseinrichtung oder einem anderen Träger', true, null, true, 600); + "; + + if (! $db->db_query($qry)) + echo 'Vertraege: ' . $db->db_last_error() . '
'; + else + echo 'Vertragsart "Dienstverhältnis zu einer anderen Bildungseinrichtung oder einem anderen Träger" erstellt.
'; + } +} \ No newline at end of file