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