diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index d027e559e..548b071d3 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -142,12 +142,6 @@ class InfoCenter extends Auth_Controller
'reloadNotizen' => array('infocenter:r', 'lehre/zgvpruefung:r'),
'reloadLogs' => 'infocenter:r',
'outputAkteContent' => array('infocenter:r', 'lehre/zgvpruefung:r'),
- 'getPostponeDate' => array('infocenter:r', 'lehre/zgvpruefung:r'),
- 'park' => 'infocenter:rw',
- 'unpark' => 'infocenter:rw',
- 'setOnHold' => 'infocenter:rw',
- 'removeOnHold' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
- 'getStudienjahrEnd' => array('infocenter:r', 'lehre/zgvpruefung:r'),
'setNavigationMenuArrayJson' => 'infocenter:r',
'getAbsageData' => 'infocenter:r',
'saveAbsageForAll' => 'infocenter:rw',
@@ -164,6 +158,7 @@ class InfoCenter extends Auth_Controller
$this->load->model('crm/Statusgrund_model', 'StatusgrundModel');
$this->load->model('crm/ZGVPruefung_model', 'ZGVPruefungModel');
$this->load->model('crm/ZGVPruefungStatus_model', 'ZGVPruefungStatusModel');
+ $this->load->model('crm/Rueckstellung_model', 'RueckstellungModel');
$this->load->model('person/Notiz_model', 'NotizModel');
$this->load->model('person/Person_model', 'PersonModel');
$this->load->model('system/Message_model', 'MessageModel');
@@ -606,7 +601,7 @@ class InfoCenter extends Auth_Controller
}
/**
- * Sendet bei einer neuen ZGV Prüfung die Mail raus an den Studiengang
+ * Sendet bei einer neuen ZGV Prüfung eine Mail an den Studiengang
*/
private function sendZgvMail($mail, $typ, $person){
$data = array(
@@ -697,7 +692,7 @@ class InfoCenter extends Auth_Controller
/**
* Fügt einen neuen ZGV Status hinzu oder updated einen bestehenden
- * Falls es erfolgreich war, sendet er die Mail raus
+ * Falls es erfolgreich war, wird eine Mail rausgeschickt
*/
public function zgvRueckfragen()
{
@@ -751,7 +746,8 @@ class InfoCenter extends Auth_Controller
$this->sendZgvMail($mail, $typ, $person);
elseif (isError($insert))
$this->terminateWithJsonError('Fehler beim Speichern');
- }else
+ }
+ else
{
$insert = $this->ZGVPruefungModel->insert(
array(
@@ -781,7 +777,7 @@ class InfoCenter extends Auth_Controller
}
$hold = false;
- if ($this->personloglib->getOnHoldDate($person_id) !== null)
+ if (hasData($this->RueckstellungModel->getByPersonId($person_id, 'onhold_zgv')))
$hold = true;
$this->outputJsonSuccess(
@@ -1162,107 +1158,7 @@ class InfoCenter extends Auth_Controller
->set_output($aktecontent->retval)
->_display();
}
-
- /**
- * Gets the date until which a person is parked
- * @param $person_id
- */
- public function getPostponeDate($person_id)
- {
- $result = array(
- 'type' => null,
- 'date' => null
- );
-
- $parkedDate = $this->personloglib->getParkedDate($person_id);
-
- if (isset($parkedDate))
- {
- $result['type'] = 'parked';
- $result['date'] = $parkedDate;
- }
- else
- {
- $onholdDate = $this->personloglib->getOnHoldDate($person_id);
-
- if (isset($onholdDate))
- {
- $result['type'] = 'onhold';
- $result['date'] = $onholdDate;
- }
- }
-
- $this->outputJsonSuccess($result);
- }
-
- /**
- * Initializes parking of a person, i.e. a person is not expected to do any actions while parked
- */
- public function park()
- {
- $person_id = $this->input->post('person_id');
- $date = $this->input->post('parkdate');
-
- $result = $this->personloglib->park($person_id, date_format(date_create($date), 'Y-m-d'), self::TAETIGKEIT, self::APP, null, $this->_uid);
-
- $this->outputJson($result);
- }
-
- /**
- * Removes parking of a person
- */
- public function unPark()
- {
- $person_id = $this->input->post('person_id');
-
- $result = $this->personloglib->unPark($person_id);
-
- $this->outputJson($result);
- }
-
- /**
- * Sets a person on hold ("zurückstellen")
- */
- public function setOnHold()
- {
- $person_id = $this->input->post('person_id');
- $date = $this->input->post('onholddate');
-
- $result = $this->personloglib->setOnHold($person_id, date_format(date_create($date), 'Y-m-d'), self::TAETIGKEIT, self::APP, null, $this->_uid);
-
- $this->outputJson($result);
- }
-
- /**
- * Removed on hold status of a person
- */
- public function removeOnHold()
- {
- $person_id = $this->input->post('person_id');
-
- $result = $this->personloglib->removeOnHold($person_id);
-
- $this->outputJson($result);
- }
-
- /**
- * Gets the End date of the current Studienjahr
- */
- public function getStudienjahrEnd()
- {
- $this->load->model('organisation/studienjahr_model', 'StudienjahrModel');
-
- $result = $this->StudienjahrModel->getCurrStudienjahr();
-
- $json = null;
-
- if (hasData($result))
- {
- $json = $result->retval[0]->ende;
- }
-
- $this->outputJsonSuccess(array($json));
- }
+
/**
* Wrapper for setNavigationMenu, returns JSON message
@@ -1484,7 +1380,6 @@ class InfoCenter extends Auth_Controller
if($nachreichungAm < $today)
$this->terminateWithJsonError($this->p->t('infocenter', 'nachreichDatumNichtVergangenheit'));
-
$akte = $this->AkteModel->loadWhere(array('person_id' => $person_id, 'dokument_kurzbz' => $allowedTypes[$typ]));
if (hasData($akte)) {
diff --git a/application/controllers/system/infocenter/Rueckstellung.php b/application/controllers/system/infocenter/Rueckstellung.php
new file mode 100644
index 000000000..62af633ca
--- /dev/null
+++ b/application/controllers/system/infocenter/Rueckstellung.php
@@ -0,0 +1,135 @@
+ array('infocenter:r', 'lehre/zgvpruefung:r'),
+ 'set' => array('infocenter:r', 'lehre/zgvpruefung:r'),
+ 'delete' => array('infocenter:r', 'lehre/zgvpruefung:r'),
+ 'getStatus' => array('infocenter:rw', 'lehre/zgvpruefung:rw')
+ )
+ );
+
+ $this->load->model('crm/Rueckstellung_model', 'RueckstellungModel');
+ $this->load->model('crm/RueckstellungStatus_model', 'RueckstellungStatusModel');
+ $this->load->model('person/Person_model', 'PersonModel');
+ $this->load->library('PersonLogLib');
+
+ $this->_setAuthUID(); // sets property uid
+
+ $this->_ci =& get_instance(); // get code igniter instance
+ }
+
+ public function get($person_id)
+ {
+ $result = null;
+ $rueckstellung = $this->_ci->RueckstellungModel->getByPersonId($person_id);
+
+ if (isError($rueckstellung))
+ $this->terminateWithJsonError($this->_ci->p->t('ui', 'fehlerBeimLesen'));
+
+ if (hasData($rueckstellung))
+ {
+ $rueckstellung = getData($rueckstellung)[0];
+ $fullName = getData($this->_ci->PersonModel->getFullName($rueckstellung->insertvon));
+
+ $result = array(
+ 'von' => $fullName,
+ 'bezeichnung' => $rueckstellung->bezeichnung,
+ 'bis' => $rueckstellung->datum_bis,
+ 'status_kurzbz' => $rueckstellung->status_kurzbz
+ );
+
+ if ($rueckstellung->status_kurzbz === 'parked' && $rueckstellung->datum_bis < date('Y-m-d'))
+ {
+ $this->_ci->RueckstellungModel->delete(array('person_id' => $person_id, 'status_kurzbz' => 'parked'));
+ $result = null;
+ }
+ }
+
+ $this->outputJsonSuccess($result);
+ }
+
+ public function set()
+ {
+ $person_id = $this->input->post('person_id');
+ $datum_bis = $this->input->post('datum_bis');
+ $status_kurzbz = $this->input->post('status_kurzbz');
+
+ $result = $this->_ci->RueckstellungModel->insert(
+ array('person_id' => $person_id,
+ 'status_kurzbz' => $status_kurzbz,
+ 'datum_bis' => date_format(date_create($datum_bis), 'Y-m-d'),
+ 'insertvon' => $this->_uid
+ )
+ );
+
+ if (isError($result))
+ $this->terminateWithJsonError(getError($result));
+
+ $this->_log($person_id, $status_kurzbz);
+
+ $this->outputJson($result);
+ }
+
+ public function delete()
+ {
+ $person_id = $this->input->post('person_id');
+ $status = $this->input->post('status');
+
+ $result = $this->_ci->RueckstellungModel->delete(array('person_id' => $person_id, 'status_kurzbz' => $status));
+
+ if (isError($result))
+ $this->terminateWithJsonError($this->_ci->p->t('ui', 'fehlerBeimSpeichern'));
+
+ $this->outputJson($result);
+ }
+
+ public function getStatus($aktiv = true)
+ {
+ $this->_ci->RueckstellungStatusModel->addOrder('sort');
+ $result = $this->_ci->RueckstellungStatusModel->loadWhere(array('aktiv' => $aktiv));
+
+ if (isError($result))
+ $this->terminateWithJsonError($this->_ci->p->t('ui', 'fehlerBeimLesen'));
+
+ $this->outputJsonSuccess(getData($result));
+ }
+
+ /**
+ * Retrieve the UID of the logged user and checks if it is valid
+ */
+ private function _setAuthUID()
+ {
+ $this->_uid = getAuthUID();
+
+ if (!$this->_uid) show_error('User authentification failed');
+ }
+
+ private function _log($person_id, $status_kurzbz)
+ {
+ $message = "Person $person_id set to $status_kurzbz";
+
+ $this->_ci->personloglib->log(
+ $person_id,
+ 'Action',
+ array(
+ 'name' => 'Person status set',
+ 'message' => $message,
+ 'success' => true
+ ),
+ 'bewerbung',
+ 'infocenter',
+ null,
+ $this->_uid
+ );
+ }
+}
\ No newline at end of file
diff --git a/application/libraries/PersonLogLib.php b/application/libraries/PersonLogLib.php
index fe9a82504..f4f434fad 100644
--- a/application/libraries/PersonLogLib.php
+++ b/application/libraries/PersonLogLib.php
@@ -7,9 +7,6 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
*/
class PersonLogLib
{
- const PARKED_LOGNAME = 'Parked';
- const ONHOLD_LOGNAME = 'Onhold';
-
/**
* Constructor
*/
@@ -78,168 +75,6 @@ class PersonLogLib
else
show_error(getError($result));
}
-
- /**
- * Parks a person, i.e. marks a person so no actions are expected for the person (e.g. as a prestudent)
- * Done by adding a logentry in the future
- * @param $person_id
- * @param $date
- * @param $taetigkeit_kurzbz
- * @param string $app
- * @param null $oe_kurzbz
- * @param null $user
- * @return insert object
- */
- public function park($person_id, $date, $taetigkeit_kurzbz, $app = 'core', $oe_kurzbz = null, $user = null)
- {
- $onhold = $this->getOnHoldDate($person_id);
-
- if (hasData($onhold))
- return error("Person already on hold");
-
- $logjson = array(
- 'name' => self::PARKED_LOGNAME
- );
-
- return $this->_savePsLog($person_id, $date, $taetigkeit_kurzbz, $logjson, $app, $oe_kurzbz, $user);
- }
-
- /**
- * Unparks a person, i.e. removes all log entries in the future with logname for parking
- * @param $person_id
- * @return array with deleted logids
- */
- public function unPark($person_id)
- {
- $deleted = array();
-
- $result = $this->ci->PersonLogModel->getLogsInFuture($person_id);
- if (hasData($result))
- {
- foreach ($result->retval as $log)
- {
- $logdata = json_decode($log->logdata);
- if (isset($logdata->name) && $logdata->name === self::PARKED_LOGNAME)
- {
- $delresult = $this->ci->PersonLogModel->deleteLog($log->log_id);
- if (isSuccess($delresult))
- {
- $deleted[] = $log->log_id;
- }
- }
- }
- }
-
- return success($deleted);
- }
-
- /**
- * Gets date until which a person is parked
- * @param $person_id
- * @return the date if person is parked, null otherwise
- */
- public function getParkedDate($person_id)
- {
- $result = $this->ci->PersonLogModel->getLogsInFuture($person_id);
-
- $parkeddate = null;
-
- if (hasData($result))
- {
- foreach ($result->retval as $log)
- {
- $logdata = json_decode($log->logdata);
- if (isset($logdata->name) && $logdata->name === self::PARKED_LOGNAME)
- {
- $parkeddate = $log->zeitpunkt;
- break;
- }
- }
- }
-
- return $parkeddate;
- }
-
- /**
- * Sets person on hold, i.e. marks a person so no actions are expected for the person (e.g. as a prestudent).
- * Done by adding a logentry with a special name. can be undone only manually by clicking button.
- * @param $person_id
- * @param $date
- * @param $taetigkeit_kurzbz
- * @param string $app
- * @param null $oe_kurzbz
- * @param null $user
- * @return array
- */
- public function setOnHold($person_id, $date, $taetigkeit_kurzbz, $app = 'core', $oe_kurzbz = null, $user = null)
- {
- $parked = $this->getParkedDate($person_id);
-
- if (hasData($parked))
- return error("Person already parked");
-
- $logjson = array(
- 'name' => self::ONHOLD_LOGNAME
- );
-
- return $this->_savePsLog($person_id, $date, $taetigkeit_kurzbz, $logjson, $app, $oe_kurzbz, $user);
- }
-
- /**
- * Removes on hold status, i.e. removes all log entries with logname for on hold
- * @param $person_id
- * @return array
- */
- public function removeOnHold($person_id)
- {
- $deleted = array();
-
- $result = $this->ci->PersonLogModel->filterLog($person_id);
- if (hasData($result))
- {
- foreach ($result->retval as $log)
- {
- $logdata = json_decode($log->logdata);
- if (isset($logdata->name) && $logdata->name === self::ONHOLD_LOGNAME)
- {
- $delresult = $this->ci->PersonLogModel->deleteLog($log->log_id);
- if (isSuccess($delresult))
- {
- $deleted[] = $log->log_id;
- }
- }
- }
- }
- return success($deleted);
- }
-
- /**
- * Gets date until which a person is on hold
- * @param $person_id
- * @return the date if person is on hold, null otherwise
- */
- public function getOnHoldDate($person_id)
- {
- $result = $this->ci->PersonLogModel->filterLog($person_id);
-
- $onholddate = null;
-
- if (hasData($result))
- {
- foreach ($result->retval as $log)
- {
- $logdata = json_decode($log->logdata);
- if (isset($logdata->name) && $logdata->name === self::ONHOLD_LOGNAME)
- {
- $onholddate = $log->zeitpunkt;
- break;
- }
- }
- }
-
- return $onholddate;
- }
-
/**
* Saves a processstate log with specified parameters, including a specified log date.
* @param $person_id
diff --git a/application/libraries/SignatureLib.php b/application/libraries/SignatureLib.php
new file mode 100644
index 000000000..132545219
--- /dev/null
+++ b/application/libraries/SignatureLib.php
@@ -0,0 +1,75 @@
+sendsJson()
+ ->authenticateWith(SIGNATUR_USER, SIGNATUR_PASSWORD)
+ ->body('{"filename": "'.basename($inputFileName).'", "content": "'.base64_encode($inputFileContent).'"}')
+ ->expectsJson()
+ ->send();
+ }
+ }
+ catch(\Httpful\Exception\ConnectionErrorException $cee) // Httpful exception
+ {
+ error_log($cee->getMessage());
+ }
+ catch (Exception $e) // any other exception
+ {
+ error_log($e->getMessage());
+ }
+
+ // If the response is fine
+ if (isset($resultPost->body) && is_object($resultPost->body)
+ && isset($resultPost->body->retval) && is_array($resultPost->body->retval))
+ {
+ return $resultPost->body->retval;
+ }
+
+ // Otherwise return a null as error
+ return null;
+ }
+}
+
diff --git a/application/models/crm/RueckstellungStatus_model.php b/application/models/crm/RueckstellungStatus_model.php
new file mode 100644
index 000000000..a4cb391f1
--- /dev/null
+++ b/application/models/crm/RueckstellungStatus_model.php
@@ -0,0 +1,14 @@
+dbTable = 'public.tbl_rueckstellung_status';
+ $this->pk = 'status_kurzbz';
+ }
+}
\ No newline at end of file
diff --git a/application/models/crm/Rueckstellung_model.php b/application/models/crm/Rueckstellung_model.php
new file mode 100644
index 000000000..d2c39ffde
--- /dev/null
+++ b/application/models/crm/Rueckstellung_model.php
@@ -0,0 +1,33 @@
+dbTable = 'public.tbl_rueckstellung';
+ $this->pk = 'rueckstellung_id';
+ $this->hasSequence = true;
+ }
+
+ public function getByPersonId($person_id, $status = null)
+ {
+ $language_index = getUserLanguage() == 'German' ? 0 : 1;
+
+ $this->addLimit(1);
+ $this->addJoin('tbl_rueckstellung_status', 'status_kurzbz');
+ $this->addSelect('*,
+ array_to_json(bezeichnung_mehrsprachig::varchar[])->>'.$language_index . 'as bezeichnung');
+ $this->addOrder('datum_bis', 'DESC');
+
+ $where['person_id'] = $person_id;
+
+ if (!isEmptyString($status))
+ $where['status_kurzbz'] = $status;
+
+ return $this->loadWhere($where);
+ }
+}
\ No newline at end of file
diff --git a/application/views/system/infocenter/infocenterAbgewiesenData.php b/application/views/system/infocenter/infocenterAbgewiesenData.php
index 40582a668..d09f0f41e 100644
--- a/application/views/system/infocenter/infocenterAbgewiesenData.php
+++ b/application/views/system/infocenter/infocenterAbgewiesenData.php
@@ -7,10 +7,11 @@
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$LOGDATA_NAME = '\'Message sent\'';
$LOGDATA_VON = '\'online\'';
+ $STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$query = '
SELECT
- p.person_id AS "PersonID",
+ p.person_id AS "PersonId",
ps.prestudent_id AS "PreStudentID",
p.vorname AS "Vorname",
p.nachname AS "Nachname",
@@ -37,7 +38,15 @@ $query = '
AND l.zeitpunkt >= pss.insertamum
ORDER BY l.log_id DESC
LIMIT 1
- ) AS "Nachricht"
+ ) AS "Nachricht",
+ (
+ SELECT SUM(konto.betrag)
+ FROM public.tbl_konto konto
+ LEFT JOIN tbl_konto skonto ON (skonto.buchungsnr_verweis = konto.buchungsnr)
+ WHERE konto.person_id = p.person_id
+ AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
+ AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
+ ) AS "Kaution"
FROM
public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
@@ -60,14 +69,16 @@ $query = '
'filter_id' => $this->input->get('filter_id'),
'requiredPermissions' => 'infocenter',
'datasetRepresentation' => 'tablesorter',
+ 'checkboxes' => 'PersonId',
'columnsAliases' => array(
- 'PersonID',
+ 'PersonId',
'PreStudentID',
- 'Vorname',
- 'Nachname',
- 'Studiengang',
- 'Abgewiesen am',
- 'Nachricht'
+ ucfirst($this->p->t('person', 'vorname')) ,
+ ucfirst($this->p->t('person', 'nachname')),
+ ucfirst($this->p->t('lehre', 'studiengang')),
+ ucfirst($this->p->t('infocenter', 'abgewiesenam')),
+ ucfirst($this->p->t('global', 'nachricht')),
+ ucfirst($this->p->t('infocenter', 'kaution'))
),
'formatRow' => function($datasetRaw) {
@@ -80,6 +91,19 @@ $query = '
$datasetRaw->{'Nachricht'} = 'Ja';
}
+ if ($datasetRaw->{'Kaution'} === null)
+ {
+ $datasetRaw->{'Kaution'} = '-';
+ }
+ else if ($datasetRaw->{'Kaution'} === '0.00')
+ {
+ $datasetRaw->{'Kaution'} = 'Bezahlt';
+ }
+ else
+ {
+ $datasetRaw->{'Kaution'} = 'Offen';
+ }
+
$datasetRaw->{'AbgewiesenAm'} = date_format(date_create($datasetRaw->{'AbgewiesenAm'}),'Y-m-d H:i');
return $datasetRaw;
}
diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php
index de2bd1bca..bb5b84479 100644
--- a/application/views/system/infocenter/infocenterData.php
+++ b/application/views/system/infocenter/infocenterData.php
@@ -7,13 +7,12 @@
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Interessent rejected\', \'Attempt to register with existing mailadress\', \'Access code sent\', \'Personal data saved\'';
- $LOGDATA_NAME_PARKED = '\'Parked\'';
- $LOGDATA_NAME_ONHOLD = '\'Onhold\'';
- $LOGTYPE_KURZBZ = '\'Processstate\'';
+ $POSTPONE_STATUS_PARKED = '\'parked\'';
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$AKTE_TYP = '\'identity\', \'zgv_bakk\'';
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
+ $STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$ORG_NAME = '\'InfoCenter\'';
$ONLINE = '\'online\'';
@@ -27,8 +26,6 @@
p.staatsbuergerschaft AS "Nation",
pl.zeitpunkt AS "LockDate",
pl.lockuser AS "LockUser",
- pd.parkdate AS "ParkDate",
- ohd.onholddate AS "OnholdDate",
(
SELECT l.zeitpunkt
FROM system.tbl_log l
@@ -276,9 +273,9 @@
) AS "ZGVMNationGruppe",
(
SELECT tbl_organisationseinheit.bezeichnung
- FROM public.tbl_benutzerfunktion
+ FROM public.tbl_benutzerfunktion
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
- WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now())
+ WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now())
AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now())
AND tbl_organisationseinheit.bezeichnung = '.$ORG_NAME.'
AND tbl_benutzerfunktion.uid = (
@@ -290,8 +287,18 @@
ORDER BY l.log_id DESC
LIMIT 1
)
- LIMIT 1
- ) AS "InfoCenterMitarbeiter"
+ LIMIT 1
+ ) AS "InfoCenterMitarbeiter",
+ rueck.datum_bis AS "HoldDate",
+ rueck.bezeichnung AS "Rueckstellgrund",
+ (
+ SELECT SUM(konto.betrag)
+ FROM public.tbl_konto konto
+ LEFT JOIN tbl_konto skonto ON (skonto.buchungsnr_verweis = konto.buchungsnr)
+ WHERE konto.person_id = p.person_id
+ AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
+ AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
+ ) AS "Kaution"
FROM public.tbl_person p
LEFT JOIN (
SELECT tpl.person_id,
@@ -302,22 +309,24 @@
JOIN public.tbl_person sp ON sb.person_id = sp.person_id
WHERE tpl.app = '.$APP.'
) pl USING(person_id)
- LEFT JOIN (
- SELECT l.person_id,
- l.zeitpunkt AS parkdate
- FROM system.tbl_log l
- WHERE l.logtype_kurzbz = '.$LOGTYPE_KURZBZ.'
- AND l.logdata->>\'name\' = '.$LOGDATA_NAME_PARKED.'
- AND l.zeitpunkt >= NOW()
- ) pd USING(person_id)
LEFT JOIN (
- SELECT l.person_id,
- l.zeitpunkt AS onholddate
- FROM system.tbl_log l
- WHERE l.logtype_kurzbz = '.$LOGTYPE_KURZBZ.'
- AND l.logdata->>\'name\' = '.$LOGDATA_NAME_ONHOLD.'
- AND l.zeitpunkt >= NOW()
- ) ohd USING(person_id)
+ SELECT
+ tbl_rueckstellung.person_id,
+ tbl_rueckstellung.datum_bis,
+ tbl_rueckstellung.status_kurzbz,
+ array_to_json(bezeichnung_mehrsprachig::varchar[])->>0 as bezeichnung
+ FROM public.tbl_rueckstellung
+ JOIN public.tbl_rueckstellung_status USING(status_kurzbz)
+ JOIN public.tbl_person sp ON tbl_rueckstellung.person_id = sp.person_id
+ WHERE tbl_rueckstellung.rueckstellung_id =
+ (
+ SELECT srueck.rueckstellung_id
+ FROM public.tbl_rueckstellung srueck
+ WHERE srueck.person_id = tbl_rueckstellung.person_id
+ AND datum_bis >= NOW()
+ ORDER BY srueck.datum_bis DESC LIMIT 1
+ )
+ ) rueck ON rueck.person_id = p.person_id
WHERE
EXISTS (
SELECT 1
@@ -344,7 +353,12 @@
AND spss.studiensemester_kurzbz = '.$STUDIENSEMESTER.'
)
)
- ORDER BY "LastAction" ASC';
+ ORDER BY CASE
+ WHEN rueck.status_kurzbz IS NULL THEN 1
+ WHEN rueck.status_kurzbz = ' .$POSTPONE_STATUS_PARKED .' THEN 2
+ WHEN rueck.status_kurzbz != '. $POSTPONE_STATUS_PARKED .' THEN 3
+ END,
+ rueck.datum_bis NULLS LAST, "LastAction" ASC';
$filterWidgetArray = array(
'query' => $query,
@@ -366,8 +380,6 @@
ucfirst($this->p->t('person', 'nation')),
ucfirst($this->p->t('global', 'sperrdatum')),
ucfirst($this->p->t('global', 'gesperrtVon')),
- ucfirst($this->p->t('global', 'parkdatum')),
- ucfirst($this->p->t('global', 'rueckstelldatum')),
ucfirst($this->p->t('global', 'letzteAktion')),
'Aktionstyp',
'AnzahlAktePflicht',
@@ -383,7 +395,10 @@
'ZGV Nation MA',
'ZGV Gruppe BA',
'ZGV Gruppe MA',
- 'InfoCenter Mitarbeiter'
+ 'InfoCenter Mitarbeiter',
+ ucfirst($this->p->t('infocenter', 'rueckstelldatum')),
+ ucfirst($this->p->t('infocenter', 'rueckstellgrund')),
+ ucfirst($this->p->t('infocenter', 'kaution'))
),
'formatRow' => function($datasetRaw) {
@@ -430,18 +445,13 @@
$datasetRaw->{'LockUser'} = '-';
}
- if ($datasetRaw->{'ParkDate'} == null)
+ if ($datasetRaw->{'HoldDate'} == null)
{
- $datasetRaw->{'ParkDate'} = '-';
- }
-
- if ($datasetRaw->{'OnholdDate'} == null)
- {
- $datasetRaw->{'OnholdDate'} = '-';
+ $datasetRaw->{'HoldDate'} = '-';
}
else
{
- $datasetRaw->{'OnholdDate'} = date_format(date_create($datasetRaw->{'OnholdDate'}), 'Y-m-d H:i');
+ $datasetRaw->{'HoldDate'} = date_format(date_create($datasetRaw->{'HoldDate'}), 'Y-m-d H:i');
}
if ($datasetRaw->{'StgAbgeschickt'} == null)
@@ -493,6 +503,24 @@
$datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
}
+ if ($datasetRaw->{'Rueckstellgrund'} === null)
+ {
+ $datasetRaw->{'Rueckstellgrund'} = '-';
+ }
+
+ if ($datasetRaw->{'Kaution'} === null)
+ {
+ $datasetRaw->{'Kaution'} = '-';
+ }
+ else if ($datasetRaw->{'Kaution'} === '0.00')
+ {
+ $datasetRaw->{'Kaution'} = 'Bezahlt';
+ }
+ else
+ {
+ $datasetRaw->{'Kaution'} = 'Offen';
+ }
+
return $datasetRaw;
},
'markRow' => function($datasetRaw) {
@@ -504,16 +532,12 @@
$mark = FilterWidget::DEFAULT_MARK_ROW_CLASS;
}
- if ($datasetRaw->OnholdDate != null)
- {
+ if ($datasetRaw->Rueckstellgrund != null && $datasetRaw->Rueckstellgrund !== 'Parken')
$mark = "onhold";
- }
// Parking has priority over locking
- if ($datasetRaw->ParkDate != null)
- {
+ if ($datasetRaw->Rueckstellgrund === 'Parken')
$mark = "text-info";
- }
return $mark;
}
diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php
index 066e5cff6..401e34099 100644
--- a/application/views/system/infocenter/infocenterDetails.php
+++ b/application/views/system/infocenter/infocenterDetails.php
@@ -24,42 +24,15 @@
'public/js/tablesort/tablesort.js',
'public/js/infocenter/messageList.js',
'public/js/infocenter/infocenterDetails.js',
+ 'public/js/infocenter/rueckstellung.js',
'public/js/infocenter/zgvUeberpruefung.js',
'public/js/infocenter/docUeberpruefung.js',
'public/js/infocenter/stammdaten.js'
),
'phrases' => array(
- 'infocenter' => array(
- 'notizHinzufuegen',
- 'notizAendern',
- 'bewerberParken',
- 'bewerberAusparken',
- 'nichtsZumAusparken',
- 'fehlerBeimAusparken',
- 'fehlerBeimParken',
- 'bewerberGeparktBis',
- 'bewerberOnHold',
- 'bewerberOnHoldEntfernen',
- 'bewerberOnHoldBis',
- 'nichtsZumEntfernen',
- 'fehlerBeimEntfernen',
- 'rueckstelldatumUeberschritten',
- 'parkenZurueckstellenInfo',
- 'zgvInPruefung',
- 'zgvErfuellt',
- 'zgvNichtErfuellt',
- 'zgvErfuelltPruefung',
- 'datumUngueltig',
- 'nachreichDatumNichtVergangenheit'
- ),
- 'ui' => array(
- 'gespeichert',
- 'fehlerBeimSpeichern'
- ),
- 'global' => array(
- 'bis',
- 'zeilen'
- )
+ 'infocenter',
+ 'ui',
+ 'global'
)
);
diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php
index 13e1d5549..32315c145 100644
--- a/application/views/system/infocenter/infocenterFreigegebenData.php
+++ b/application/views/system/infocenter/infocenterFreigegebenData.php
@@ -13,6 +13,7 @@
$ORG_NAME = '\'InfoCenter\'';
$IDENTITY = '\'identity\'';
$ONLINE = '\'online\'';
+ $STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$query = '
SELECT
@@ -264,7 +265,15 @@ $query = '
WHERE akte.person_id = p.person_id
AND dokument_kurzbz = '. $IDENTITY .'
LIMIT 1
- ) AS "AktenId"
+ ) AS "AktenId",
+ (
+ SELECT SUM(konto.betrag)
+ FROM public.tbl_konto konto
+ LEFT JOIN tbl_konto skonto ON (skonto.buchungsnr_verweis = konto.buchungsnr)
+ WHERE konto.person_id = p.person_id
+ AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
+ AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
+ ) AS "Kaution"
FROM public.tbl_person p
LEFT JOIN (
SELECT tpl.person_id,
@@ -337,7 +346,8 @@ $query = '
'ZGV Nation BA',
'ZGV Nation MA',
'InfoCenter Mitarbeiter',
- 'Identitätsnachweis'
+ 'Identitätsnachweis',
+ ucfirst($this->p->t('infocenter', 'kaution'))
),
'formatRow' => function($datasetRaw) {
@@ -453,6 +463,18 @@ $query = '
$datasetRaw->{'AktenId'} = '-';
}
+ if ($datasetRaw->{'Kaution'} === null)
+ {
+ $datasetRaw->{'Kaution'} = '-';
+ }
+ else if ($datasetRaw->{'Kaution'} === '0.00')
+ {
+ $datasetRaw->{'Kaution'} = 'Bezahlt';
+ }
+ else
+ {
+ $datasetRaw->{'Kaution'} = 'Offen';
+ }
return $datasetRaw;
},
diff --git a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php
index ea1fab83c..e6b6d2495 100644
--- a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php
+++ b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php
@@ -9,6 +9,7 @@
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$ORG_NAME = '\'InfoCenter\'';
+ $STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$query = '
SELECT
@@ -195,7 +196,14 @@ $query = '
LIMIT 1
)
LIMIT 1
- ) AS "InfoCenterMitarbeiter"
+ ) AS "InfoCenterMitarbeiter",
+ (
+ SELECT SUM(konto.betrag)
+ FROM public.tbl_konto konto
+ WHERE konto.person_id = p.person_id
+ AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
+ AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
+ ) AS "Kaution"
FROM public.tbl_person p
LEFT JOIN (
SELECT tpl.person_id,
@@ -256,7 +264,8 @@ $query = '
'Reihungstest Datum',
'ZGV Nation BA',
'ZGV Nation MA',
- 'InfoCenter Mitarbeiter'
+ 'InfoCenter Mitarbeiter',
+ ucfirst($this->p->t('infocenter', 'kaution'))
),
'formatRow' => function($datasetRaw) {
@@ -359,6 +368,19 @@ $query = '
$datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
}
+ if ($datasetRaw->{'Kaution'} === null)
+ {
+ $datasetRaw->{'Kaution'} = '-';
+ }
+ else if ($datasetRaw->{'Kaution'} === '0.00')
+ {
+ $datasetRaw->{'Kaution'} = 'Bezahlt';
+ }
+ else
+ {
+ $datasetRaw->{'Kaution'} = 'Offen';
+ }
+
return $datasetRaw;
},
'markRow' => function($datasetRaw) {
diff --git a/application/views/system/infocenter/infocenterZgvDetails.php b/application/views/system/infocenter/infocenterZgvDetails.php
index cf3ffad8b..7636647ab 100644
--- a/application/views/system/infocenter/infocenterZgvDetails.php
+++ b/application/views/system/infocenter/infocenterZgvDetails.php
@@ -26,6 +26,7 @@
'public/js/tablesort/tablesort.js',
'public/js/infocenter/messageList.js',
'public/js/infocenter/infocenterDetails.js',
+ 'public/js/infocenter/rueckstellung.js',
'public/js/infocenter/zgvUeberpruefung.js'
),
'phrases' => array(
diff --git a/application/views/system/infocenter/infocenterZgvUeberpruefungData.php b/application/views/system/infocenter/infocenterZgvUeberpruefungData.php
index 5bfa5b078..d088d6b51 100644
--- a/application/views/system/infocenter/infocenterZgvUeberpruefungData.php
+++ b/application/views/system/infocenter/infocenterZgvUeberpruefungData.php
@@ -5,6 +5,7 @@ $INTERESSENT_STATUS = '\'Interessent\'';
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\'';
$oeKurz = '\''. implode('\',\'', $oeKurz) . '\'';
+$ABGEWIESENER_STATUS = '\'Abgewiesener\'';
$query = '
SELECT
@@ -22,6 +23,7 @@ $query = '
AND zgvstatus.datum IN (
SELECT MAX(zgvstatus.datum)
FROM public.tbl_zgvpruefungstatus_status zgvstatus GROUP BY zgvstatus.zgvpruefung_id)
+ AND get_rolle_prestudent(prestudent_id, NULL) != '. $ABGEWIESENER_STATUS .'
ORDER BY ps.prestudent_id
';
diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php
index e3bf5c40d..142af5527 100644
--- a/cis/private/lehre/abgabe_lektor_details.php
+++ b/cis/private/lehre/abgabe_lektor_details.php
@@ -37,6 +37,7 @@ require_once('../../../include/phrasen.class.php');
require_once('../../../include/projektarbeit.class.php');
require_once('../../../include/projektbetreuer.class.php');
require_once('../../../include/sancho.inc.php');
+require_once('../../../application/libraries/SignatureLib.php');
if (!$db = new basis_db())
$db=false;
@@ -590,7 +591,9 @@ while ($row=@$db->db_fetch_object($result))
$htmlstr .= "\n";
$htmlstr .= "\n";
$htmlstr .= "
\n";
- if(!$row->abgabedatum)
+
+ $uploadedDocumentSigned = null;
+ if (!$row->abgabedatum)
{
if ($row->datumdb_fetch_object($result))
$fcol='#000000';
}
}
- //$htmlstr .= "| fixtermin=='t'?'checked=\"checked\"':'')." >";
- //$htmlstr .= " | fixtermin=='t'?'checked="checked" style="background-color:#FF0000;"':'')." disabled>";
+
if($row->fixtermin=='t')
{
$htmlstr .= " |  | ";
@@ -659,11 +661,12 @@ while ($row=@$db->db_fetch_object($result))
$htmlstr .= " \n";
$htmlstr .= " | \n";
$htmlstr .= " ".($row->abgabedatum==''?' ':$datum_obj->formatDatum($row->abgabedatum,'d.m.Y'))." | \n";
- if($user==$row->insertvon && $betreuerart!="Zweitbegutachter")
+
+ if ($user==$row->insertvon && $betreuerart!="Zweitbegutachter")
{
$htmlstr .= " | ";
- if(!$row->abgabedatum)
+ if (!$row->abgabedatum)
{
$htmlstr .= " | ";
}
@@ -692,6 +695,56 @@ while ($row=@$db->db_fetch_object($result))
{
$htmlstr .= " | ";
}
+
+ if (file_exists(PAABGABE_PATH.$row->paabgabe_id.'_'.$uid.'.pdf'))
+ {
+ $signaturVorhanden = false;
+ if ($row->paabgabetyp_kurzbz == 'end')
+ {
+ if(defined('ABGABETOOL_CHECK_SIGNATURE') && ABGABETOOL_CHECK_SIGNATURE)
+ {
+ // Check if the document is signed
+ $signList = SignatureLib::list(PAABGABE_PATH.$row->paabgabe_id.'_'.$uid.'.pdf');
+ if (is_array($signList) && count($signList) > 0)
+ {
+ $signaturVorhanden = true;
+ // The document is signed
+ }
+ elseif ($signList === null)
+ {
+ $uploadedDocumentSigned = 'WARNING: signature server error';
+ }
+ else
+ {
+ $uploadedDocumentSigned = $p->t('abgabetool/uploadedDocumentNotSigned');
+ }
+ }
+ }
+ if ($uploadedDocumentSigned != null)
+ {
+ $htmlstr .= '
+
+
+ '.$uploadedDocumentSigned.'
+
+ | ';
+ }
+ elseif($signaturVorhanden)
+ {
+ $htmlstr .= '
+
+
+ '.$p->t('abgabetool/uploadedDocumentSigned').'
+
+ | ';
+ }
+ }
+ else
+ {
+ $htmlstr .= " | ";
+ }
+
+
$htmlstr .= "
\n";
@@ -710,7 +763,7 @@ $htmlstr .= ''."\n";
//$htmlstr .= " | ";
$htmlstr .= " | ";
-$htmlstr .= " | \n";
+$htmlstr .= " | \n";
$htmlstr .= " |