diff --git a/application/controllers/Cis/Documents.php b/application/controllers/Cis/Documents.php
new file mode 100644
index 000000000..98327e6f6
--- /dev/null
+++ b/application/controllers/Cis/Documents.php
@@ -0,0 +1,134 @@
+ ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
+ 'Semester' => ['student/anrechnung_beantragen:r','user:r'] // TODO(chris): permissions?
+ ]);
+
+ $this->loadPhrases([
+ 'global',
+ 'tools'
+ ]);
+ }
+
+ // -----------------------------------------------------------------------------------------------------------------
+ // Public methods
+
+ /**
+ * @param string $stsem
+ * @return void
+ */
+ public function index($stsem = null)
+ {
+ return $this->Semester($stsem);
+ }
+
+ /**
+ * @param string $stsem
+ * @return void
+ */
+ public function Semester($stsem = null)
+ {
+ $this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
+ $this->load->model('crm/Konto_model', 'KontoModel');
+ $this->load->model('organisation/Studiengang_model', 'StudiengangModel');
+
+ $uid = getAuthUID();
+ $studiengaenge = [];
+
+ $stati = $this->PrestudentstatusModel->loadWhereUid($uid, null, true);
+ if (isError($stati))
+ return $this->view->load('errors/html/error_db.php', [
+ 'heading' => 'Database Error',
+ 'message' => getError($stati)
+ ]);
+ $stati = getData($stati);
+ if (!$stati)
+ return $this->view->load('errors/html/error_general.php', [
+ 'heading' => 'User ist kein Student',
+ 'message' => 'Es konnten keine Studiensemester gefunden werden in denen der User als Student inskripiert ist'
+ ]);
+
+ $stsemArray = [];
+ foreach ($stati as $status) {
+ if (!isset($studiengaenge[$status->studiengang_kz])) {
+ $stg = $this->StudiengangModel->load($status->studiengang_kz);
+ if (isError($stg))
+ return $this->view->load('errors/html/error_db.php', [
+ 'heading' => 'Database Error',
+ 'message' => getError($stg)
+ ]);
+ $stg = getData($stg);
+ if (!$stg)
+ return $this->view->load('errors/html/error_db.php', [
+ 'heading' => 'Database Error',
+ 'message' => 'No Studiengang found for studiengang_kz ' . $status->studiengang_kz
+ ]);
+ $studiengaenge[$status->studiengang_kz] = current($stg);
+ }
+ if (!isset($stsemArray[$status->studiensemester_kurzbz]))
+ $stsemArray[$status->studiensemester_kurzbz] = [];
+ // TODO(chris): maybe just use prestudent_id?
+ $stsemArray[$status->studiensemester_kurzbz][] = $status;
+ }
+
+ $hasSemester = true;
+ $inskriptionsbestaetigungen = [];
+
+ if ($stsem && !isset($stsemArray[$stsem])) {
+ $hasSemester = false;
+ } else {
+ if (!$stsem)
+ $stsem = end($stsemArray);
+
+ #$stsemArray[$stsem] = array_unique($stsemArray[$stsem]);
+
+ $buchungstypen = implode('\',\'', defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN") ? unserialize(CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN) : []);
+
+ foreach ($stsemArray[$stsem] as $status) {
+ // NOTE(chris): multiple prestudentstatus for prestudent and semester
+ if (isset($inskriptionsbestaetigungen[$status->studiengang_kz]))
+ continue;
+
+ $inskriptionsbestaetigungen[$status->studiengang_kz] = (boolean) getData($this->KontoModel->checkStudienbeitragFromPrestudent($status->prestudent_id, $stsem, $buchungstypen));
+ }
+ }
+
+
+ // TODO(chris): in array stsem stsemArray:
+ // TODO(chris): - inskriptionsbestaetigung (konto)
+ // TODO(chris): - CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN? studienbuchblatt
+ // TODO(chris): - CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN? studienerfolgsbestaetigung
+ // TODO(chris): else: msg
+
+ // TODO(chris): CIS_DOKUMENTE_SELFSERVICE?: ...abschlussdokumente (akte)
+
+ $stsemArray = array_keys($stsemArray);
+ if (!$hasSemester)
+ array_unshift($stsemArray, $stsem);
+
+ $this->load->view('Cis/Documents', [
+ 'uid' => $uid,
+ 'stsem' => $stsem,
+ 'stsemArray' => $stsemArray,
+ 'hasSemester' => $hasSemester,
+ 'studiengaenge' => $studiengaenge,
+ 'inskriptionsbestaetigungen' => $inskriptionsbestaetigungen,
+ 'studienbuchblatt' => defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN,
+ 'studienerfolgsbestaetigung' => defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN
+ ]);
+ }
+
+}
diff --git a/application/models/crm/Konto_model.php b/application/models/crm/Konto_model.php
index 4b2a259c9..31cb31551 100644
--- a/application/models/crm/Konto_model.php
+++ b/application/models/crm/Konto_model.php
@@ -123,4 +123,33 @@ class Konto_model extends DB_Model
return $this->execQuery($query);
}
+
+ /**
+ * @param integer $prestudent_id
+ * @param string $stsem
+ * @param array $buchungstypen
+ *
+ * @return stdClass
+ */
+ public function checkStudienbeitragFromPrestudent($prestudent_id, $stsem, $buchungstypen)
+ {
+ $this->addSelect($this->dbTable . '.buchungsnr');
+ $this->addSelect($this->dbTable . '.buchungsdatum');
+
+ $this->addJoin('public.tbl_prestudent s', $this->dbTable . '.person_id=s.person_id AND ' . $this->dbTable . '.studiengang_kz=s.studiengang_kz');
+
+ $this->db->where_in('buchungstyp_kurzbz', $buchungstypen);
+ $this->db->where('0 >= (
+ SELECT sum(betrag)
+ FROM ' . $this->dbTable . ' skonto
+ WHERE skonto.buchungsnr = ' . $this->dbTable . '.buchungsnr_verweis
+ OR skonto.buchungsnr_verweis = ' . $this->dbTable . '.buchungsnr_verweis
+ )', null, false);
+
+ return $this->loadWhere([
+ 'prestudent_id' => $prestudent_id,
+ 'studiensemester_kurzbz' => $stsem
+ ]);
+ }
+
}
diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php
index f39a41fda..859e9a375 100644
--- a/application/models/crm/Prestudentstatus_model.php
+++ b/application/models/crm/Prestudentstatus_model.php
@@ -13,6 +13,77 @@ class Prestudentstatus_model extends DB_Model
$this->hasSequence = false;
}
+ /**
+ * loadWhereUid
+ *
+ * loads all rows for a student_uid
+ *
+ * @param string $uid
+ * @param array $where Optional. Default empty array
+ * @param boolean $withPrestudent Optional. Default true
+ *
+ * @return stdClass
+ */
+ public function loadWhereUid($uid, $where = null, $withPrestudent = false)
+ {
+ $this->addSelect($this->dbTable . '.*');
+ $this->addJoin('public.tbl_student', 'prestudent_id');
+
+ if ($withPrestudent) {
+ $this->addJoin('public.tbl_prestudent s', 'prestudent_id');
+ $this->addSelect('s.aufmerksamdurch_kurzbz');
+ $this->addSelect('s.person_id');
+ $this->addSelect('s.studiengang_kz');
+ $this->addSelect('s.berufstaetigkeit_code');
+ $this->addSelect('s.ausbildungcode');
+ $this->addSelect('s.zgv_code');
+ $this->addSelect('s.zgvort');
+ $this->addSelect('s.zgvdatum');
+ $this->addSelect('s.zgvmas_code');
+ $this->addSelect('s.zgvmaort');
+ $this->addSelect('s.zgvmadatum');
+ $this->addSelect('s.aufnahmeschluessel');
+ $this->addSelect('s.facheinschlberuf');
+ $this->addSelect('s.reihungstest_id');
+ $this->addSelect('s.anmeldungreihungstest');
+ $this->addSelect('s.reihungstestangetreten');
+ $this->addSelect('s.rt_gesamtpunkte');
+ $this->addSelect('s.bismelden');
+ $this->addSelect('s.dual');
+ $this->addSelect('s.rt_punkte1');
+ $this->addSelect('s.rt_punkte2');
+ $this->addSelect('s.ausstellungsstaat');
+ $this->addSelect('s.rt_punkte3');
+ $this->addSelect('s.zgvdoktor_code');
+ $this->addSelect('s.zgvdoktorort');
+ $this->addSelect('s.zgvdoktordatum');
+ $this->addSelect('s.mentor');
+ $this->addSelect('s.zgvnation');
+ $this->addSelect('s.zgvmanation');
+ $this->addSelect('s.zgvdoktornation');
+ $this->addSelect('s.gsstudientyp_kurzbz');
+ $this->addSelect('s.aufnahmegruppe_kurzbz');
+ $this->addSelect('s.udf_values');
+ $this->addSelect('s.priorisierung');
+ $this->addSelect('s.foerderrelevant');
+ $this->addSelect('s.standort_code');
+ $this->addSelect('s.zgv_erfuellt');
+ $this->addSelect('s.zgvmas_erfuellt');
+ $this->addSelect('s.zgvdoktor_erfuellt');
+ }
+
+
+ $this->addOrder('datum');
+ $this->addOrder('insertamum');
+
+ if (!$where)
+ $where = [];
+
+ $where['student_uid'] = $uid;
+
+ return $this->loadWhere($where);
+ }
+
/**
* getLastStatus
*/
diff --git a/application/views/Cis/Documents.php b/application/views/Cis/Documents.php
new file mode 100644
index 000000000..f927bc053
--- /dev/null
+++ b/application/views/Cis/Documents.php
@@ -0,0 +1,99 @@
+load->view('templates/CISHTML-Header', $includesArray);
+?>
+
+
+
Documents
+
+
+
+
+
+
+
= $this->p->t('tools', 'inskriptionsbestaetigung'); ?>
+
+
+
= $this->p->t('tools', 'studienbuchblatt'); ?>
+
+
+
+
= $this->p->t('tools', 'studienerfolgsbestaetigung'); ?>
+
+ $bezeichnung) { ?>
+
+ -
+ = $bezeichnung; ?>
+
+
+ '&typ=finanzamt', ' (' . $this->p->t('tools', 'vorlageWohnsitzfinanzamt') . ')' => ''] as $finanz_bez => $finanz_param) { ?>
+ [$this->p->t('public', 'deutsch'), 'Studienerfolg'], 'en' => [$this->p->t('public', 'englisch'), 'StudienerfolgEng']] as $lang_kurz => $lang) { ?>
+ $stsem, $this->p->t('tools', 'alleStudiensemester') => 'alle&all=1'] as $sem_bez => $sem_param) { ?>
+ -
+
+
= $this->p->t('tools', 'studienerfolgsbestaetigung') . ' ' . $sem_bez . ' ' . $lang[0] . $finanz_bez; ?>
+
+
+ p->t('tools/vorlageWohnsitzfinanzamt') */ ?>
+
+
+
+
+
+
+
+
+ = $this->p->t('tools', 'keinStatusImStudiensemester', ['stsem' => $stsem]); ?>
+
+
+ TODO(chris): IMPLEMENT!
+
+
+
+load->view('templates/CISHTML-Footer', $includesArray); ?>
diff --git a/system/dbupdate_3.4/dbupdate_dashboard.php b/system/dbupdate_3.4/dbupdate_dashboard.php
index 22c2ef4cf..dcd0e6600 100644
--- a/system/dbupdate_3.4/dbupdate_dashboard.php
+++ b/system/dbupdate_3.4/dbupdate_dashboard.php
@@ -25,7 +25,7 @@ if (! defined('DB_NAME')) exit('No direct script access allowed');
if (($result = $db->db_query("SELECT schema_name FROM information_schema.schemata WHERE schema_name='dashboard'")))
{
if ($db->db_num_rows($result) == 0)
- {
+ {// TODO(chris): Rechte "Web"?
$qry = << 'system'
)
)
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'tools',
+ 'phrase' => 'keinStatusImStudiensemester',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Für das übergebene Studiensemester {stsem} existiert kein Status. Bitte wählen Sie ein gültiges Studiensemester aus dem DropDown.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No status found for {stsem}. Please select a valid semester from the dropdown.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'tools',
+ 'phrase' => 'inskriptionsbestaetigung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Studienbestätigung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Enrollment Confirmation',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'tools',
+ 'phrase' => 'studienbeitragFuerSSNochNichtBezahlt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Studienbeitrag für das {stsem} noch nicht bezahlt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'tuition fee for semester {stsem} not yet paid',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
)
);