diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index f0183c981..621563c71 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -442,12 +442,18 @@ class InfoCenter extends Auth_Controller
$zgvdatum = isEmptyString($zgvdatum) ? null : date_format(date_create($zgvdatum), 'Y-m-d');
$zgvnation_code = $this->input->post('zgvnation') === 'null' ? null : $this->input->post('zgvnation');
- // zgvmasterdata
- $zgvmas_code = $this->input->post('zgvmas') === 'null' ? null : $this->input->post('zgvmas');
- $zgvmaort = $this->input->post('zgvmaort');
- $zgvmadatum = $this->input->post('zgvmadatum');
- $zgvmadatum = isEmptyString($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d');
- $zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation');
+ $prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id);
+ $prestudentdata = getData($prestudent);
+
+ if ($prestudentdata->studiengangtyp === 'm')
+ {
+ // zgvmasterdata
+ $zgvmas_code = $this->input->post('zgvmas') === 'null' ? null : $this->input->post('zgvmas');
+ $zgvmaort = $this->input->post('zgvmaort');
+ $zgvmadatum = $this->input->post('zgvmadatum');
+ $zgvmadatum = isEmptyString($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d');
+ $zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation');
+ }
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id, '', self::INTERESSENTSTATUS);
@@ -463,19 +469,29 @@ class InfoCenter extends Auth_Controller
);
}
- $prestresult = $this->PrestudentModel->update(
- $prestudent_id,
- array(
- 'zgv_code' => $zgv_code,
- 'zgvort' => $zgvort,
- 'zgvdatum' => $zgvdatum,
- 'zgvnation' => $zgvnation_code,
+ $updateArray = array(
+ 'zgv_code' => $zgv_code,
+ 'zgvort' => $zgvort,
+ 'zgvdatum' => $zgvdatum,
+ 'zgvnation' => $zgvnation_code,
+ 'updateamum' => date('Y-m-d H:i:s')
+ );
+
+ if ($prestudentdata->studiengangtyp === 'm')
+ {
+ $updateMasterArray = array(
'zgvmas_code' => $zgvmas_code,
'zgvmaort' => $zgvmaort,
'zgvmadatum' => $zgvmadatum,
- 'zgvmanation' => $zgvmanation_code,
- 'updateamum' => date('Y-m-d H:i:s')
- )
+ 'zgvmanation' => $zgvmanation_code
+ );
+
+ $updateArray = array_merge($updateArray, $updateMasterArray);
+ }
+
+ $prestresult = $this->PrestudentModel->update(
+ $prestudent_id,
+ $updateArray
);
if (isError($prestresult))
diff --git a/application/views/system/infocenter/zgvpruefungen.php b/application/views/system/infocenter/zgvpruefungen.php
index 258353aaa..5c69f964d 100644
--- a/application/views/system/infocenter/zgvpruefungen.php
+++ b/application/views/system/infocenter/zgvpruefungen.php
@@ -259,7 +259,7 @@
echo $this->widgetlib->widget(
'Zgvmaster_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmas_code),
- array('name' => 'zgvmas', 'id' => 'zgvmas')
+ array('name' => 'zgvmas', 'id' => 'zgvmas_'.$zgvpruefung->prestudent_id)
); ?>
@@ -272,7 +272,8 @@
?>
+ name="zgvmaort"
+ id="zgvmaort_prestudent_id ?>">
@@ -288,7 +289,8 @@
+ name="zgvmadatum"
+ id="zgvmadatum_prestudent_id ?>">
@@ -301,7 +303,7 @@
echo $this->widgetlib->widget(
'Nation_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmanation_code),
- array('name' => 'zgvmanation', 'id' => 'zgvmanation')
+ array('name' => 'zgvmanation', 'id' => 'zgvmanation_'.$zgvpruefung->prestudent_id)
); ?>
@@ -422,7 +424,7 @@
$disabledTxt = $disabledStgTxt = $this->p->t('infocenter', 'bewerbungMussAbgeschickt');
}
- if ($studiengangtyp !== 'b')
+ /*if ($studiengangtyp !== 'b')
{
$disabled = 'disabled';
$disabledTxt = $this->p->t('infocenter', 'nurBachelorFreigeben');
@@ -433,7 +435,7 @@
$disabledStg = 'disabled';
$disabledStgTxt = $this->p->t('infocenter', 'nurBachelorFreigeben');
}
- }
+ }*/
?>
diff --git a/cis/private/profile/lva_liste.php b/cis/private/profile/lva_liste.php
index f2d175dbf..4b0cedc02 100644
--- a/cis/private/profile/lva_liste.php
+++ b/cis/private/profile/lva_liste.php
@@ -217,7 +217,7 @@ if ($num_rows > 0)
&& CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON != '')
{
$vertrag = new vertrag();
- if (!$vertrag->isVertragErteiltLV($row->lehrveranstaltung_id, $stdsem, $user))
+ if (!$vertrag->isVertragErteiltLE($row->lehreinheit_id, $stdsem, $user))
{
continue;
}
diff --git a/include/vertrag.class.php b/include/vertrag.class.php
index 37c2fc9e2..1d9ec364b 100644
--- a/include/vertrag.class.php
+++ b/include/vertrag.class.php
@@ -1245,5 +1245,82 @@ class vertrag extends basis_db
return false;
}
}
+
+ /**
+ * Prueft ob ein Mitarbeiter einen erteilten Vertrag zu einer Lehreinheit besitzt.
+ * @param $lehreinheit ID der Lehreinheit
+ * @param $studiensemester_kurzbz Studiensemester das geprueft wird
+ * @param $mitarbeiter_uid UID des Mitarbeiters
+ */
+ public function isVertragErteiltLE($lehreinheit_id, $studiensemester_kurzbz, $mitarbeiter_uid)
+ {
+ if (defined('CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON')
+ && CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON != '')
+ {
+ // Liegt das Studiensemester vor dem Pruefdatum, wird die LV immer als Erteilt angezeigt
+ $qry = "
+ SELECT
+ tbl_studiensemester.start
+ FROM
+ public.tbl_studiensemester
+ WHERE
+ studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
+ AND tbl_studiensemester.start < (SELECT start
+ FROM public.tbl_studiensemester stsem WHERE
+ stsem.studiensemester_kurzbz=".$this->db_add_param(CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON)."
+ )";
+
+ if ($result = $this->db_query($qry))
+ {
+ if ($this->db_num_rows($result)>0)
+ {
+ // Wenn das Studiensemester vor dem Pruefdatum liegt, gilt der Vertrag immer als erteilt.
+ return true;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden des Studiensemesters';
+ return false;
+ }
+ }
+
+ $qry = "
+ SELECT
+ 1
+ FROM
+ lehre.tbl_lehreinheitmitarbeiter
+ JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
+ JOIN lehre.tbl_vertrag USING(vertrag_id)
+ JOIN lehre.tbl_vertrag_vertragsstatus USING(vertrag_id)
+ WHERE
+ tbl_lehreinheitmitarbeiter.mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)."
+ AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
+ AND tbl_lehreinheit.lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
+ AND tbl_vertrag_vertragsstatus.vertragsstatus_kurzbz='erteilt'
+ AND NOT EXISTS(
+ SELECT 1 FROM lehre.tbl_vertrag_vertragsstatus vstatus
+ WHERE vstatus.vertrag_id = tbl_vertrag.vertrag_id
+ AND vstatus.vertragsstatus_kurzbz='storno'
+ )
+ ";
+
+ if ($result = $this->db_query($qry))
+ {
+ if ($this->db_num_rows($result) > 0)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
}
?>
diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js
index 60e45584c..5ed4733a5 100644
--- a/public/js/infocenter/infocenterDetails.js
+++ b/public/js/infocenter/infocenterDetails.js
@@ -207,6 +207,22 @@ var InfocenterDetails = {
$("#zgvort_" + prestudentid).val(zgvort);
$("#zgvdatum_" + prestudentid).val(gerzgvdatum);
$("#zgvnation_" + prestudentid).val(zgvnation);
+
+ var zgvmas_code = prestudent.zgvmas_code !== null ? prestudent.zgvmas_code : "null";
+ var zgvmaort = prestudent.zgvmaort !== null ? prestudent.zgvmaort : "";
+ var zgvmadatum = prestudent.zgvmadatum;
+ var gerzgvmadatum = "";
+ if (zgvmadatum !== null)
+ {
+ zgvmadatum = $.datepicker.parseDate("yy-mm-dd", prestudent.zgvmadatum);
+ gerzgvmadatum = $.datepicker.formatDate("dd.mm.yy", zgvmadatum);
+ }
+ var zgvmanation = prestudent.zgvmanation !== null ? prestudent.zgvmanation : "null";
+
+ $("#zgvmas_" + prestudentid).val(zgvmas_code);
+ $("#zgvmaort_" + prestudentid).val(zgvmaort);
+ $("#zgvmadatum_" + prestudentid).val(gerzgvmadatum);
+ $("#zgvmanation_" + prestudentid).val(zgvmanation);
}
else
{