Personenkennzeichen: if date after Meldestichtag, next Studienjahr is used for generation (for Summersemester)

This commit is contained in:
Alexei Karpenko
2024-11-25 15:18:21 +01:00
parent 222f31c464
commit 49cb30ee2b
2 changed files with 34 additions and 16 deletions
+14 -13
View File
@@ -222,18 +222,18 @@ class PrestudentLib
$statusgrund_id = null
) {
$ausbildungssemester_plus = 0;
if (!$insertvon)
$insertvon = getAuthUID();
$result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id, $studiensemester_kurzbz);
if (isError($result))
return $result;
$result = getData($result);
if (!$result) { // NOTE(chris): no status in target stdsem
//NOTE(manu): only valid if nextSemester focus max
@@ -304,7 +304,7 @@ class PrestudentLib
return $result;
$result = getData($result);
if (!$result)
return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
@@ -612,16 +612,17 @@ class PrestudentLib
// Genererate Personenkennzeichen
$personenkennzeichen = $this->_ci->StudentModel->generateMatrikelnummer2(
$personenkennzeichen = $this->_ci->StudentModel->generatePersonenkennzeichen(
$student_data->studiengang_kz,
$studiensemester_kurzbz,
$today,
$student_data->typ
);
if (isError($personenkennzeichen))
return $personenkennzeichen;
$personenkennzeichen = getData($personenkennzeichen);
// Generate UID
$uid = $this->_ci->StudentModel->generateUID(
$student_data->kurzbz,
@@ -695,7 +696,7 @@ class PrestudentLib
if (isError($result))
return $result;
// Add Student
$result = $this->_ci->StudentModel->insert([
@@ -712,14 +713,14 @@ class PrestudentLib
if (isError($result))
return $result;
// Add Lehrverband if it does not exist
$result = $this->_ci->LehrverbandModel->load([' ', ' ', $ausbildungssemester, $student_data->studiengang_kz]);
if (isError($result))
return $result;
if (!hasData($result)) {
$result = $this->_ci->LehrverbandModel->insert([
'studiengang_kz' => $student_data->studiengang_kz,
@@ -804,7 +805,7 @@ class PrestudentLib
if (isError($result))
return $result;
// Load Student
$result = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $prestudent_id]);
+20 -3
View File
@@ -15,6 +15,8 @@ class Student_model extends DB_Model
$this->dbTable = 'public.tbl_student';
$this->pk = array('student_uid');
$this->hasSequence = false;
$this->load->model('codex/Bismeldestichtag_model', 'BismeldestichtagModel');
}
// ****
@@ -62,15 +64,15 @@ class Student_model extends DB_Model
* logic FH Burgenland
*
* TODO(chris): replace function above with this?
* TODO(chris): rename to generatePersonenkennzeichen?
*
* @param integer $studiengang_kz
* @param string $studiensemester_kurzbz
* @param string $beginndatum
* @param string $typ
*
* @return stdClass
*/
public function generateMatrikelnummer2($studiengang_kz, $studiensemester_kurzbz, $typ = null)
public function generatePersonenkennzeichen($studiengang_kz, $studiensemester_kurzbz, $beginndatum, $typ = null)
{
$personenkennzeichen = false;
@@ -128,7 +130,22 @@ class Student_model extends DB_Model
break;
}
}
if($art=='2' || $art=='4')
// get Bismeldestichtag for the semester
$meldestichtagRes = $this->BismeldestichtagModel->getByStudiensemester($studiensemester_kurzbz);
if (isError($meldestichtagRes))
return $meldestichtagRes;
// if start of study is after Bismeldestichtag, Studienjahr of next semester is used, so 1 doesn't need to be subtracted for SS
$afterMeldeStichtag = false;
if (hasData($meldestichtagRes))
{
$meldestichtag = getData($meldestichtagRes)[0]->meldestichtag;
$afterMeldeStichtag = isset($beginndatum) && new DateTime($beginndatum) > new DateTime($meldestichtag);
}
if (($art=='2' || $art=='4') && !$afterMeldeStichtag)
$jahr = $jahr-1;
//FH-Burgenland - weil leider die AO Studiengänge aufgeteilt sind