diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php
index 71068fbe9..39c2519af 100644
--- a/application/controllers/jobs/AntragJob.php
+++ b/application/controllers/jobs/AntragJob.php
@@ -177,9 +177,14 @@ class AntragJob extends JOB_Controller
$dateDeadline = new DateTime();
$dateDeadline->sub(DateInterval::createFromDateString($modifier_deadline));
+ $this->StudierendenantragModel->addSelect('prestudent_id');
+ $this->StudierendenantragModel->addSelect('studiensemester_kurzbz');
+ $this->StudierendenantragModel->addSelect('s.insertamum');
+
$result = $this->StudierendenantragModel->getWithLastStatusWhere(
[
- 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED_STGL,
+ 'typ' => Studierendenantrag_model::TYP_ABMELDUNG_STGL,
+ 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED,
's.insertamum <=' => $dateDeadline->format('c')
]
);
@@ -195,8 +200,8 @@ class AntragJob extends JOB_Controller
foreach ($antraege as $antrag)
{
- $result = $this->antraglib->approveAbmeldung([$antrag->studierendenantrag_id], $insertvon);
+ $result = $this->prestudentlib->setAbbrecher($antrag->prestudent_id, $antrag->studiensemester_kurzbz, $insertvon, 'abbrecherStgl', $antrag->insertamum);
if (isError($result))
$this->logError(getError($result));
else
@@ -316,7 +321,7 @@ class AntragJob extends JOB_Controller
'urlCIS' => $urlCIS,
'fristablauf' => $fristende->format('d.m.Y')
);
-
+
// NOTE(chris): Sancho mail
if(sendSanchoMail('Sancho_Mail_Antrag_W_' . $name, $dataMail, $email, $subject))
{
diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php
index 190997c19..d02ce9012 100644
--- a/application/libraries/AntragLib.php
+++ b/application/libraries/AntragLib.php
@@ -137,26 +137,21 @@ class AntragLib
$errors[] = $this->_ci->p->t('studierendenantrag', 'error_no_antrag_found', ['id' => $studierendenantrag_id]);
continue;
}
- $status = getData($result)[0];
+ $antrag = getData($result)[0];
+
+ $insertam = date('c');
$result = $this->_ci->StudierendenantragstatusModel->insert([
'studierendenantrag_id' => $studierendenantrag_id,
'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED,
- 'insertvon' => $insertvon
+ 'insertvon' => $insertvon,
+ 'insertam' => $insertam
]);
if (isError($result))
$errors[] = getError($result);
else {
- $resultPrestudent = $this->_ci->StudierendenantragModel->load($studierendenantrag_id);
- if (isError($resultPrestudent))
+ if ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG)
{
- $errors[] = getError($resultPrestudent);
- continue;
- }
- if ($status->typ == Studierendenantrag_model::TYP_ABMELDUNG)
- {
- $antrag = getData($resultPrestudent)[0];
-
$resultPrestudentStatus = $this->_ci->PrestudentstatusModel->getLastStatusWithStgEmail($antrag->prestudent_id);
if (isError($resultPrestudentStatus))
$errors[] = getError($resultPrestudentStatus);
@@ -167,7 +162,7 @@ class AntragLib
$vorlage ='Sancho_Mail_Antrag_A_Approve';
$subject = $this->_ci->p->t('studierendenantrag', 'mail_subject_A_Approve');
- $result = $this->_ci->prestudentlib->setAbbrecher($antrag->prestudent_id, $antrag->studiensemester_kurzbz, $insertvon);
+ $result = $this->_ci->prestudentlib->setAbbrecher($antrag->prestudent_id, $antrag->studiensemester_kurzbz, $insertvon, 'abbrecherStud', $antrag->datum, $insertam) ;
if (isError($result))
{
$errors[] = getError($result);
@@ -186,8 +181,35 @@ class AntragLib
sendSanchoMail($vorlage, $data, $prestudent_status->email, $subject);
}
}
- if ($status->typ == Studierendenantrag_model::TYP_ABMELDUNG_STGL) {
- $res = $this->_ci->PrestudentModel->load($status->prestudent_id);
+ if ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG_STGL) {
+ $result = $this->_ci->PrestudentstatusModel->getLastStatus($antrag->prestudent_id, '', 'Student');
+ if (isError($result))
+ {
+ $errors[] = getError($result);
+ continue;
+ }
+ if(!hasData($result))
+ {
+ $errors[] = $this->_ci->p->t('studierendenantrag', 'error_no_prestudentstatus', ['prestudent_id' => $antrag->prestudent_id]);
+ continue;
+ }
+ $prestudentstatus = getData($result)[0];
+
+ $result = $this->_ci->PrestudentstatusModel->withGrund('preabbrecher')->update([
+ 'prestudent_id' => $prestudentstatus->prestudent_id,
+ 'status_kurzbz'=>$prestudentstatus->status_kurzbz,
+ 'studiensemester_kurzbz'=>$prestudentstatus->studiensemester_kurzbz,
+ 'ausbildungssemester'=>$prestudentstatus->ausbildungssemester
+ ],[]);
+ if (isError($result))
+ {
+ $errors[] = getError($result);
+ continue;
+ }
+
+
+ $res = $this->_ci->PrestudentModel->load($antrag->prestudent_id);
+
if (hasData($res)) {
$prestudent = current(getData($res));
$res = $this->_ci->PersonModel->load($prestudent->person_id);
@@ -205,7 +227,7 @@ class AntragLib
'Sancho_Mail_Antrag_A_Stgl',
[
'name' => $name,
- 'grund' => $status->grund
+ 'grund' => $antrag->grund
],
$email,
$this->_ci->p->t('studierendenantrag', 'mail_subject_A_Stgl')
@@ -857,7 +879,7 @@ class AntragLib
if (!hasData($result))
return error($this->_ci->p->t('studierendenantrag', 'error_no_stg', ['studiengang_kz' => $studiengang_kz]));
$stg = current(getData($result));
-
+
if ($ausbildungssemester > $stg->max_semester)
return success();
return error($this->_ci->p->t('studierendenantrag', 'error_no_studienplan', [
diff --git a/application/libraries/PrestudentLib.php b/application/libraries/PrestudentLib.php
index 5024c6c22..bb1250a62 100644
--- a/application/libraries/PrestudentLib.php
+++ b/application/libraries/PrestudentLib.php
@@ -35,7 +35,7 @@ class PrestudentLib
}
- public function setAbbrecher($prestudent_id, $studiensemester_kurzbz, $insertvon = null)
+ public function setAbbrecher($prestudent_id, $studiensemester_kurzbz, $insertvon = null, $statusgrund_kurzbz = null, $datum = null, $bestaetigtam = null)
{
if (!$insertvon)
$insertvon = getAuthUID();
@@ -62,24 +62,31 @@ class PrestudentLib
$student = current($result);
- //Status updaten
- $result = $this->_ci->PrestudentstatusModel->insert([
+ if(!$datum)
+ $datum = date('c');
+
+ if(!$bestaetigtam)
+ $bestaetigtam = date('c');
+
+ //Status und Statusgrund updaten
+ $result = $this->_ci->PrestudentstatusModel->withGrund($statusgrund_kurzbz)->insert([
'prestudent_id' => $prestudent_id,
'status_kurzbz' => Prestudentstatus_model::STATUS_ABBRECHER,
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'ausbildungssemester' => $prestudent_status->ausbildungssemester,
- 'datum' => date('c'),
+ 'datum' => $datum,
'insertvon' => $insertvon,
'insertamum' => date('c'),
'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz,
'studienplan_id'=> $prestudent_status->studienplan_id,
'bestaetigtvon' => $insertvon,
- 'bestaetigtam' => date('c')
+ 'bestaetigtam' => $bestaetigtam
]);
if (isError($result))
return $result;
+
//Verband anlegen
$result = $this->_ci->LehrverbandModel->load([
'studiengang_kz' => $student->studiengang_kz,
diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php
index 620b897e6..ddf8d3a7a 100644
--- a/application/models/crm/Prestudentstatus_model.php
+++ b/application/models/crm/Prestudentstatus_model.php
@@ -316,4 +316,20 @@ class Prestudentstatus_model extends DB_Model
return $this->loadWhere($whereArr);
}
+
+ /**
+ * call like this:
+ * $this->PrestudentstatusModel->withGrund('grund_kurzbz')->update($id, $otherData);
+ * or:
+ * $this->PrestudentstatusModel->withGrund('grund_kurzbz')->insert($otherData);
+ * @param string $statusgrund_kurzbz
+ * @return object $this
+ */
+ public function withGrund($statusgrund_kurzbz)
+ {
+ if($statusgrund_kurzbz)
+ $this->db->set('statusgrund_id', '(SELECT statusgrund_id FROM public.tbl_status_grund WHERE statusgrund_kurzbz =' . $this->db->escape($statusgrund_kurzbz) .')', FALSE);
+
+ return $this;
+ }
}
diff --git a/system/dbupdate_3.4/27351_digitalisierung_formulare.php b/system/dbupdate_3.4/27351_digitalisierung_formulare.php
index 1fbe56945..5041b86f5 100644
--- a/system/dbupdate_3.4/27351_digitalisierung_formulare.php
+++ b/system/dbupdate_3.4/27351_digitalisierung_formulare.php
@@ -285,3 +285,42 @@ if (!$result = @$db->db_query("SELECT public.get_stdsem_prestudent(0, null)")) {
else
echo '
public.get_stdsem_prestudent(integer, character varying): function created';
}
+
+if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'abbrecherStgl';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('abbrecherStgl', 'Abbrecher', TRUE, '{\"durch Stgl\", \"by Course Director\"}', '{\"durch Stgl\", \"by Course Director\"}');";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_status_grund '.$db->db_last_error().'
';
+ else
+ echo ' public.tbl_status_grund: Added Statusgrund abbrecherStgl for Abbrecher
';
+ }
+}
+
+if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'abbrecherStud';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('abbrecherStud', 'Abbrecher', TRUE, '{\"durch Stud\", \"by Student\"}', '{\"durch Stud\", \"by Student\"}');";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_status_grund '.$db->db_last_error().'
';
+ else
+ echo ' public.tbl_status_grund: Added Statusgrund abbrecherStud for Abbrecher
';
+ }
+}
+
+if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'preabbrecher';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('preabbrecher', 'Student', TRUE, '{\"Pre-Abbrecher\", \"Pre-Aborted\"}', '{\"Pre-Abbrecher\", \"Pre-Aborted\"}');";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_status_grund '.$db->db_last_error().'
';
+ else
+ echo ' public.tbl_status_grund: Added Statusgrund pre-abbrecher for Student
';
+ }
+}