diff --git a/application/config/navigation.php b/application/config/navigation.php
index 400e414ad..09df29d70 100644
--- a/application/config/navigation.php
+++ b/application/config/navigation.php
@@ -14,6 +14,7 @@ $config['navigation_header'] = array(
'icon' => 'sitemap',
'description' => 'Organisation',
'sort' => 20,
+ 'requiredPermissions' => 'basis/vilesci:r',
'children'=> array(
'vilesci' => array(
'link' => base_url('vilesci'),
@@ -30,6 +31,7 @@ $config['navigation_header'] = array(
'icon' => 'graduation-cap',
'description' => 'Lehre',
'sort' => 30,
+ 'requiredPermissions' => 'basis/vilesci:r',
'children'=> array(
'cis' => array(
'link' => CIS_ROOT,
@@ -68,6 +70,7 @@ $config['navigation_header'] = array(
'icon' => 'user',
'description' => 'Personen',
'sort' => 40,
+ 'requiredPermissions' => 'basis/vilesci:r',
'children'=> array(
'bpk' => array(
'link' => site_url('person/BPKWartung'),
@@ -156,6 +159,13 @@ $config['navigation_menu']['lehre/lehrauftrag/Lehrauftrag/*'] = array(
'icon' => '',
'sort' => 1,
'requiredPermissions' => 'lehre/lehrauftrag_erteilen:r'
+ ),
+ 'lehrauftragLehrendeÜbersicht' => array(
+ 'link' => site_url('lehre/lehrauftrag/Lehrauftrag/LehrendeUebersicht'),
+ 'description' => 'Lehrendenübersicht',
+ 'icon' => '',
+ 'sort' => 1,
+ 'requiredPermissions' => array('lehre/lehrauftrag_bestellen:r')
)
);
$config['navigation_menu']['lehre/lehrauftrag/LehrauftragErteilen/*'] = array(
diff --git a/application/controllers/jobs/LehrauftragJob.php b/application/controllers/jobs/LehrauftragJob.php
new file mode 100644
index 000000000..2f6b928c7
--- /dev/null
+++ b/application/controllers/jobs/LehrauftragJob.php
@@ -0,0 +1,536 @@
+load->model('accounting/Vertrag_model', 'VertragModel');
+ $this->load->model('accounting/Vertragvertragsstatus_model', 'VertragvertragsstatusModel');
+ $this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
+ $this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
+ $this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel');
+
+ // Load libraries
+ $this->load->library('PermissionLib');
+
+ // Load helpers
+ $this->load->helper('hlp_sancho_helper');
+ }
+
+ /**
+ * This daily job sends information about all lehr-/projektauftraege ordered (and not approved) the day bofore.
+ * Receivers: Department-/Kompetenzfeldleiter
+ **/
+ public function mailLehrauftraegeToApprove()
+ {
+ // Get vertrag_ids of lehrauftraege that had been ordered and had NOT been approved or cancelled YESTERDAY
+ $this->VertragvertragsstatusModel->addSelect('vertrag_id');
+ $result = $this->VertragvertragsstatusModel->getOrdered_fromDate('YESTERDAY');
+
+ // Get lehrveranstaltung_ids and studiensemester of the lehr-/or projektauftrag contracts
+ $lehreinheit_data_arr = array();
+ if ($vertrag_arr = getData($result))
+ {
+ foreach ($vertrag_arr as $vertrag)
+ {
+ $result = $this->VertragModel->getLehreinheitData($vertrag->vertrag_id, 'lehrveranstaltung_id, studiensemester_kurzbz');
+
+ if (hasData($result))
+ {
+ $obj = new StdClass();
+ $obj->lehrveranstaltung_id = $result->retval[0]->lehrveranstaltung_id;
+ $obj->studiensemester_kurzbz = $result->retval[0]->studiensemester_kurzbz;
+ $lehreinheit_data_arr []= $obj;
+ }
+ }
+ }
+
+ /**
+ * Build the data array to be used in the email. Data array is clustered as follows:
+ * Array
+ * [studiensemester_kurzbz] // studiensemester of lehreinheit
+ * Array
+ * [oe_kurzbz] // oe of lehreinheits lehrveranstaltung
+ * [oe_bezeichnung]
+ * Array
+ * [stg_kz] // stg of lehreinheits lehrveranstaltung
+ * [stg_kurzbz]
+ * [stg_bezeichnung]
+ * [amount] // amount of new ordered lehrauftraege of that stg
+ */
+ $data_arr = array();
+ foreach ($lehreinheit_data_arr as $lehreinheit_data)
+ {
+ $result = $this->_getLVData($lehreinheit_data->lehrveranstaltung_id);
+
+ if (hasData($result))
+ {
+ // Search if studiensemester exists in data_arr
+ $ss_index = array_search($lehreinheit_data->studiensemester_kurzbz, array_column($data_arr, 'studiensemester_kurzbz'));
+
+ // If studiensemester is new, add studienesemester, oe and stg
+ if ($ss_index === false)
+ {
+ $data = array(
+ 'studiensemester_kurzbz' => $lehreinheit_data->studiensemester_kurzbz
+ );
+
+ $data []= array(
+ 'oe_kurzbz' => $result->retval[0]->oe_kurzbz,
+ 'oe_bezeichnung' => $result->retval[0]->lv_oe_bezeichnung
+ );
+
+ // Add stg data to oe, start amount with 1
+ $data[0][] = array(
+ 'stg_kz' => $result->retval[0]->studiengang_kz,
+ 'stg_kurzbz' => strtoupper($result->retval[0]->stg_typ. $result->retval[0]->stg_kurzbz),
+ 'stg_bezeichnung' => $result->retval[0]->lv_stg_bezeichnung,
+ 'amount' => 1
+ );
+
+ // Push to final data_arr
+ $data_arr []= $data;
+ }
+ // Else if studiensemester exists
+ else
+ {
+ // Search if oe exists inside existing studiensemester of data_arr
+ $oe_index = array_search($result->retval[0]->oe_kurzbz, array_column($data_arr[$ss_index], 'oe_kurzbz'));
+
+ // If oe is new, add oe and stg to studiensemester
+ if ($oe_index === false)
+ {
+ // Add oe data
+ $data_arr[$ss_index][] = array(
+ 'oe_kurzbz' => $result->retval[0]->oe_kurzbz,
+ 'oe_bezeichnung' => $result->retval[0]->lv_oe_bezeichnung,
+
+ // Add stg data to oe, start amount with 1
+ array(
+ 'stg_kz' => $result->retval[0]->studiengang_kz,
+ 'stg_kurzbz' => strtoupper($result->retval[0]->stg_typ. $result->retval[0]->stg_kurzbz),
+ 'stg_bezeichnung' => $result->retval[0]->lv_stg_bezeichnung,
+ 'amount' => 1
+ )
+ );
+ }
+ // Else if oe exists
+ else
+ {
+ // Search if stg exists inside existing oe of data_arr
+ $stg_index = array_search($result->retval[0]->studiengang_kz, array_column($data_arr[$ss_index][$oe_index], 'stg_kz'));
+
+ // If stg is new, add stg to oe, start amount with 1
+ if ($stg_index === false)
+ {
+ $data_arr[$ss_index][$oe_index][] = array(
+ 'stg_kz' => $result->retval[0]->studiengang_kz,
+ 'stg_kurzbz' => strtoupper($result->retval[0]->stg_typ. $result->retval[0]->stg_kurzbz),
+ 'stg_bezeichnung' => $result->retval[0]->lv_stg_bezeichnung,
+ 'amount' => 1
+ );
+ }
+ // Else if stg exists
+ else
+ {
+ // Increase amount +1
+ $data_arr[$ss_index][$oe_index][$stg_index]['amount']++;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Cluster data by uid of entitled mail receivers.
+ * Returning array is clustered as follows:
+ * Array
+ * [uid]
+ * Array
+ * [studiensemester_kurzbz] // studiensemester of lehreinheit
+ * Array
+ * [oe_kurzbz] // oe of lehreinheits lehrveranstaltung
+ * [oe_bezeichnung]
+ * Array
+ * [stg_kz] // stg of lehreinheits lehrveranstaltung
+ * [stg_kurzbz]
+ * [stg_bezeichnung]
+ * [amount] // amount of new ordered lehrauftraege of that stg
+ */
+ $data_arr = $this->_clusterData_byReceiver($data_arr);
+
+ // Send email
+ if(!$this->_sendMail_toApprove($data_arr))
+ {
+ $this->logInfo('SUCCEDED: Sending emails about yesterdays ordered lehrauftraege succeded.');
+ }
+ else
+ {
+ $this->logError('Error when sending emails in job MailLehrauftragToApprove');
+ }
+ }
+
+ /**
+ * This daily job sends information about all lehr-/projektauftraege approved the day bofore.
+ * Receivers: lectors
+ **/
+ public function mailLehrauftraegeToAccept()
+ {
+ // Get vertrag_id and uid of lehrauftraege that had been approved and had NOT been accepted or cancelled YESTERDAY
+ $this->VertragvertragsstatusModel->addSelect('vertrag_id, uid');
+ $this->VertragvertragsstatusModel->addOrder('uid');
+ $result = $this->VertragvertragsstatusModel->getApproved_fromDate('YESTERDAY');
+
+ /**
+ * Build the data array to be used in the email. Data array is clustered as follows:
+ * Array
+ * [uid] // lectors uid (mail receiver)
+ * [studiensemester] // studiensemester of the lehrauftraege (can be more, e.g. 'WS2019 and SS2020')
+ * [amount] // amount of new approved lehrauftraege
+ **/
+ $data_arr = array();
+ if ($vertrag_arr = getData($result))
+ {
+ foreach ($vertrag_arr as $vertrag)
+ {
+ // Get studiensemester of the lehrauftrag
+ $this->VertragModel->addSelect('vertragsstunden_studiensemester_kurzbz');
+ $result = $this->VertragModel->load($vertrag->vertrag_id);
+ if ($studiensemester = getData($result))
+ {
+ $studiensemester = $studiensemester[0]->vertragsstunden_studiensemester_kurzbz;
+ }
+
+ // Search if uid exists in data_arr
+ $uid_index = array_search($vertrag->uid, array_column($data_arr, 'uid'));
+
+ // If uid is new, add uid, studiensemester and start amount with 1
+ if ($uid_index === false)
+ {
+ $data = array();
+ $data['uid'] = $vertrag->uid;
+ $data['studiensemester'] = $studiensemester;
+ $data['amount']= 1;
+ $data_arr []= $data;
+ }
+ // Else if uid exists
+ else
+ {
+ // If studiensemester is new, add to studiensemester-string
+ if (strpos($data_arr[$uid_index]['studiensemester'], $studiensemester) === false)
+ {
+ $data_arr[$uid_index]['studiensemester'] .= ' und '. $studiensemester;
+ }
+
+ // Increase amount +1
+ $data_arr[$uid_index]['amount']++;
+ }
+ }
+ }
+
+ // Send email
+ if ($this->_sendMail_toAccept($data_arr))
+ {
+ $this->logInfo('SUCCEDED: Sending emails about yesterdays approved lehrauftraege succeded.');
+ }
+ else
+ {
+ $this->logError('Error when sending emails in job MailLehrauftragToAccept');
+ }
+ }
+
+ //******************************************************************************************************************
+ // PRIVATE FUNCTIONS
+ //******************************************************************************************************************
+
+ /**
+ * Get data of given lehrveranstaltung.
+ * @param $lehrveranstaltung_id
+ * @return mixed
+ */
+ private function _getLVData($lehrveranstaltung_id)
+ {
+ $this->LehrveranstaltungModel->addSelect('
+ tbl_lehrveranstaltung.oe_kurzbz,
+ oe.bezeichnung AS "lv_oe_bezeichnung",
+ tbl_lehrveranstaltung.studiengang_kz,
+ stg.bezeichnung AS "lv_stg_bezeichnung",
+ stg.typ AS "stg_typ",
+ stg.kurzbz AS "stg_kurzbz"
+ ');
+
+ $this->LehrveranstaltungModel->addJoin('lehre.tbl_studienplan_lehrveranstaltung stpllv', 'lehrveranstaltung_id');
+ $this->LehrveranstaltungModel->addJoin('lehre.tbl_studienplan stpl', 'studienplan_id');
+ $this->LehrveranstaltungModel->addJoin('lehre.tbl_studienordnung sto', 'studienordnung_id');
+ $this->LehrveranstaltungModel->addJoin('public.tbl_studiengang stg', 'ON stg.studiengang_kz = tbl_lehrveranstaltung.studiengang_kz');
+ $this->LehrveranstaltungModel->addJoin('public.tbl_organisationseinheit oe', 'ON oe.oe_kurzbz = tbl_lehrveranstaltung.oe_kurzbz');
+ $this->LehrveranstaltungModel->addOrder('stpllv.insertamum', 'DESC');
+ $this->LehrveranstaltungModel->addLimit(1);
+
+ return $this->LehrveranstaltungModel->load($lehrveranstaltung_id);
+ }
+
+ /**
+ * Send Sancho eMail about ordered Lehrauftraege.
+ * @param $data_arr
+ */
+ private function _sendMail_toApprove($data_arr)
+ {
+ // Loop through 'container' of mail recipients
+ foreach($data_arr as $data)
+ {
+ // Set mail recipients (department assistance/leader)
+ $to = $data['uid']. '@'. DOMAIN;
+ $html_table = $this->_renderData_LehrauftraegeToApprove($data);
+
+ // Prepare mail content
+ $content_data_arr = array(
+ 'table' => $html_table
+ );
+
+ sendSanchoMail(
+ 'LehrauftragNeueBestellungen',
+ $content_data_arr,
+ $to,
+ 'Bestellung neuer Lehraufträge',
+ 'sancho_header_min_bw.jpg',
+ 'sancho_footer_min_bw.jpg'
+ );
+ }
+ }
+
+ /**
+ * Cluster the data array by entitled mail receiver.
+ * Returning array is clustered as follows:
+ * Array
+ * [uid]
+ * Array
+ * [studiensemester_kurzbz] // studiensemester of lehreinheit
+ * Array
+ * [oe_kurzbz] // oe of lehreinheits lehrveranstaltung
+ * [oe_bezeichnung]
+ * Array
+ * [stg_kz] // stg of lehreinheits lehrveranstaltung
+ * [stg_kurzbz]
+ * [stg_bezeichnung]
+ * [amount] // amount of new ordered lehrauftraege of that stg
+ * @param $data_arr
+ * @return array
+ *
+ */
+ private function _clusterData_byReceiver($data_arr)
+ {
+ $mail_data_arr = array(); // final array with all data clustered by mail receiver
+
+ // Loop through 'container' of studiensemester
+ foreach ($data_arr as $data)
+ {
+ $data_len = count($data) - 1;
+
+ // Loop through 'container' of organisational units
+ for ($i = 0; $i < $data_len; $i++)
+ {
+ // Get all users entitled by organisational unit
+ $result = $this->BenutzerrolleModel->getBenutzerByBerechtigung(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN, $data[$i]['oe_kurzbz']);
+
+ if ($berechtigung_arr = getData($result))
+ {
+ // Loop through entitled users
+ foreach ($berechtigung_arr as $berechtigung)
+ {
+ // Search if UID exists inside mail_data_arr
+ $uid_index = array_search($berechtigung->uid, array_column($mail_data_arr, 'uid'));
+
+ // If UID is new, add UID to final array
+ if ($uid_index === false)
+ {
+ // add UID with corresponding data
+ $mail_data_arr [] = array(
+ 'uid' => $berechtigung->uid,
+ array(
+ 'studiensemester_kurzbz' => $data['studiensemester_kurzbz'],
+ $data[$i]
+ )
+ );
+ } // Else if UID exists
+ else
+ {
+ // Search if studiensemester exists
+ $ss_index = array_search($data['studiensemester_kurzbz'], array_column($mail_data_arr, 'studiensemester_kurzbz'));
+
+ // If studiensemester is new, add studiensemester to existing UID
+ if ($ss_index === false)
+ {
+ $mail_data_arr[$uid_index] []= array(
+ 'studiensemester_kurzbz' => $data['studiensemester_kurzbz'],
+ $data[$i]
+ );
+ }
+ // Else if studiensemester exists
+ else
+ {
+ // Add corresponding data to existing studiensemester of UID
+ $mail_data_arr[$uid_index]['studiensemester_kurbz'][] = $data[$i];
+ }
+
+ }
+ }
+ }
+ }
+ }
+
+ return $mail_data_arr;
+ }
+
+ /**
+ * Render the data array for the mail template returing a HTML table.
+ * @param $data_arr Data to be used in HTML table
+ * @return string HTML table to be embedded in eMail
+ */
+ private function _renderData_LehrauftraegeToApprove($data_arr)
+ {
+ $html = '';
+ foreach ($data_arr as $studiensemester_container)
+ {
+ if (is_array($studiensemester_container)) // is_array 'trims' the outer associative key [uid]
+ {
+ if (isset($studiensemester_container['studiensemester_kurzbz']))
+ {
+ $studiensemester = $studiensemester_container['studiensemester_kurzbz'];
+
+ // Link to LehrauftragErteilen
+ $url = site_url(self::LEHRAUFTRAG_ERTEILEN_URI).'?studiensemester='. $studiensemester;
+ }
+
+ // HTML table header
+ $html .= '
+
+ Studiensemester: '. $studiensemester. '
+
+
+
+
+ LV-Organisationseinheit
+ Studiengang
+ STG-Kurzbezeichnung
+ Anzahl neu bestellter Lehraufträge
+
+
+ '
+ ;
+
+ // HTML table body
+ foreach ($studiensemester_container as $oe_container)
+ {
+ if (is_array($oe_container)) // is_array 'trims' the outer associative key [studiensemester_kurzbz]
+ {
+ if (isset($oe_container['oe_bezeichnung']))
+ {
+ $oe_bezeichnung = $oe_container['oe_bezeichnung'];
+ }
+
+ foreach ($oe_container as $stg_data)
+ {
+ if (is_array($stg_data)) // is_array 'trims' the outer associative keys [oe_kurzbz] and [oe_bezeichnung]
+ {
+ $html .= '
+
+ '. $oe_bezeichnung. '
+ '. $stg_data['stg_bezeichnung']. '
+ '. $stg_data['stg_kurzbz']. '
+ '. $stg_data['amount']. '
+
+ ';
+ }
+ }
+ }
+ }
+
+ // HTML table body end and link
+ $html .= '
+
+
+
+ '. anchor($url, 'Lehraufträge Übersicht '. $studiensemester). '
+
+ ';
+ }
+ }
+
+ return $html;
+ }
+
+ /**
+ * Send Sancho eMail about ordered Lehrauftraege.
+ * @param $data_arr
+ */
+ private function _sendMail_toAccept($data_arr)
+ {
+ // Loop through 'container' of mail recipients
+ foreach($data_arr as $data)
+ {
+ // Set mail recipient (lector)
+ $to = $data['uid']. '@'. DOMAIN;
+
+ // Link to LehrauftragAkzeptieren
+ $url = CIS_ROOT. 'cis/index.php?menu='.
+ CIS_ROOT. 'cis/menu.php?content_id=&content='.
+ CIS_ROOT. index_page(). self::LEHRAUFTRAG_AKZEPTIEREN_URI;
+
+ // Get first name
+ $first_name = '';
+ $this->load->model('person/Benutzer_model', 'BenutzerModel');
+ $this->BenutzerModel->addSelect('vorname');
+ $this->BenutzerModel->addJoin('public.tbl_person', 'person_id');
+ $result = $this->BenutzerModel->loadWhere(array('uid' => $data['uid']));
+
+ if (hasData($result))
+ {
+ $first_name = $result->retval[0]->vorname;
+ }
+
+ // Prepare mail content
+ $content_data_arr = array(
+ 'vorname' => $first_name,
+ 'studiensemester' => $data['studiensemester'],
+ 'anzahl' => $data['amount'],
+ 'link' => anchor($url, 'Lehraufträge Übersicht')
+ );
+
+ sendSanchoMail(
+ 'LehrauftragNeueErteilte',
+ $content_data_arr,
+ $to,
+ 'Neu erteilte Lehraufträge zum Annehmen bereit'
+ );
+ }
+ }
+}
diff --git a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
index 70c054186..74094f7fb 100644
--- a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
+++ b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
@@ -26,7 +26,8 @@ class Lehrauftrag extends Auth_Controller
array(
'index' => 'lehre/lehrauftrag_bestellen:r',
'orderLehrauftrag' => 'lehre/lehrauftrag_bestellen:rw',
- 'Dashboard' => array('lehre/lehrauftrag_bestellen:r', 'lehre/lehrauftrag_erteilen:rw')
+ 'Dashboard' => array('lehre/lehrauftrag_bestellen:r', 'lehre/lehrauftrag_erteilen:rw'),
+ 'LehrendeUebersicht' => array('lehre/lehrauftrag_bestellen:r')
)
);
@@ -69,6 +70,14 @@ class Lehrauftrag extends Auth_Controller
$this->load->view('lehre/lehrauftrag/Dashboard.php');
}
+ /**
+ * Display of Lehrauftragsübersicht report
+ */
+ public function LehrendeUebersicht()
+ {
+ $this->load->view('lehre/lehrauftrag/LehrendeUebersicht.php');
+ }
+
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
diff --git a/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php b/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php
index 8ed9aa320..31e2ffb31 100644
--- a/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php
+++ b/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php
@@ -168,9 +168,9 @@ class LehrauftragAkzeptieren extends Auth_Controller
/**
* Check if lectors latest active Verwendung has inkludierte Lehre
- * - inkludierte_lehre is null: freelancer lector -> has NO inkludierte Lehre
- * - inkludierte_lehre -1: fix employed lector -> all inclusive Lehre
- * - inkludierte_lehre > 0: fix employed lector -> given value is inclusive Lehre
+ * - inkludierte_lehre is null OR 0: freelancer lector -> has NO inkludierte Lehre
+ * - inkludierte_lehre -1: fix employed lector -> has inkludierte Lehre (all inclusive)
+ * - inkludierte_lehre > 0: fix employed lector -> has inkludierte Lehre (value is amount of hours included)
*/
public function checkInkludierteLehre()
{
@@ -178,7 +178,7 @@ class LehrauftragAkzeptieren extends Auth_Controller
if (hasData($result))
{
- $this->outputJsonSuccess(!is_null($result->retval[0]->inkludierte_lehre));
+ $this->outputJsonSuccess(!is_null($result->retval[0]->inkludierte_lehre) && $result->retval[0]->inkludierte_lehre != 0);
}
else
{
diff --git a/application/controllers/system/Navigation.php b/application/controllers/system/Navigation.php
index 1abf7d9a8..190f84acd 100644
--- a/application/controllers/system/Navigation.php
+++ b/application/controllers/system/Navigation.php
@@ -7,7 +7,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
* Provides data to the ajax get calls about the filter
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
*/
-class Navigation extends Auth_Controller
+class Navigation extends FHC_Controller
{
const NAVIGATION_PAGE_PARAM = 'navigation_page'; // Navigation page parameter name
@@ -16,12 +16,9 @@ class Navigation extends Auth_Controller
*/
public function __construct()
{
- parent::__construct(
- array(
- 'menu' => 'basis/vilesci:r',
- 'header' => 'basis/vilesci:r'
- )
- );
+ parent::__construct();
+
+ $this->load->library('AuthLib');
$this->_loadNavigationLib(); // Loads the NavigationLib with parameters
}
diff --git a/application/models/accounting/Vertragvertragsstatus_model.php b/application/models/accounting/Vertragvertragsstatus_model.php
index 7e76ef494..c2bd9cc7d 100644
--- a/application/models/accounting/Vertragvertragsstatus_model.php
+++ b/application/models/accounting/Vertragvertragsstatus_model.php
@@ -130,5 +130,61 @@ class Vertragvertragsstatus_model extends DB_Model
);
}
-
+ /**
+ * Get all contracts, where the status had been set to 'bestellt' on given date
+ * @param string $string_date e.g. '01.11.2019' or special Date/Time inputs like 'YESTERDAY', 'TODAY', 'NOW'
+ * @param bool $further_processed If true, ALL ordered contracts of that day are retrieved, even if they were
+ * were ALSO approved/accepted/cancelled (further processed) on that same day.
+ * @return array
+ */
+ public function getOrdered_fromDate($string_date = 'TODAY', $further_processed = false)
+ {
+ $condition = '
+ vertragsstatus_kurzbz = \'bestellt\' AND
+ (datum)::date = date \''. $string_date .'\'
+ ';
+
+ if (!$further_processed)
+ {
+ $condition .= '
+ AND
+ vertrag_id NOT IN (
+ SELECT vertrag_id
+ FROM lehre.tbl_vertrag_vertragsstatus
+ WHERE vertragsstatus_kurzbz IN (\'erteilt\', \'akzeptiert\', \'storno\')
+ )
+ ';
+ }
+
+ return $this->loadWhere($condition);
+ }
+
+ /**
+ * Get all contracts, where the status had been set to 'erteilt' on given date
+ * @param string $string_date e.g. '01.11.2019' or special Date/Time inputs like 'YESTERDAY', 'TODAY', 'NOW'
+ * @param bool $further_processed If true, ALL contracts approved on that day are retrieved, even if they were
+ * were ALSO accepted/cancelled (further processed) on that same day.
+ * @return array
+ */
+ public function getApproved_fromDate($string_date = 'TODAY', $further_processed = false)
+ {
+ $condition = '
+ vertragsstatus_kurzbz = \'erteilt\' AND
+ (datum)::date = date \''. $string_date .'\'
+ ';
+
+ if (!$further_processed)
+ {
+ $condition .= '
+ AND
+ vertrag_id NOT IN (
+ SELECT vertrag_id
+ FROM lehre.tbl_vertrag_vertragsstatus
+ WHERE vertragsstatus_kurzbz IN (\'akzeptiert\', \'storno\')
+ )
+ ';
+ }
+
+ return $this->loadWhere($condition);
+ }
}
diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php
index 30abfdf51..ceb427687 100644
--- a/application/models/person/Benutzerfunktion_model.php
+++ b/application/models/person/Benutzerfunktion_model.php
@@ -48,7 +48,7 @@ class Benutzerfunktion_model extends DB_Model
if (is_string($funktion_kurzbz))
{
- $query .= " AND funktion_kurzbz = ".$funktion_kurzbz.")";
+ $query .= " AND funktion_kurzbz = '".$funktion_kurzbz."'";
}
elseif (is_array($funktion_kurzbz) && count($funktion_kurzbz) > 0)
{
diff --git a/application/models/system/Benutzerrolle_model.php b/application/models/system/Benutzerrolle_model.php
index 5ce96a622..765ad9bd4 100644
--- a/application/models/system/Benutzerrolle_model.php
+++ b/application/models/system/Benutzerrolle_model.php
@@ -11,7 +11,7 @@ class Benutzerrolle_model extends DB_Model
$this->dbTable = 'system.tbl_benutzerrolle';
$this->pk = 'benutzerberechtigung_id';
}
-
+
/**
* Checks if the given user is an admin
*/
@@ -19,9 +19,9 @@ class Benutzerrolle_model extends DB_Model
{
// Join with the table tbl_benutzer
$this->addJoin('public.tbl_benutzer', 'uid');
-
+
$result = $this->loadWhere(array('person_id' => $person_id, 'rolle_kurzbz' => 'admin'));
-
+
if (!isError($result))
{
if (hasData($result))
@@ -33,25 +33,35 @@ class Benutzerrolle_model extends DB_Model
$result = success(false);
}
}
-
+
return $result;
}
- /**
- * Get user who are authorized with berechtigung and, if given, authorized for the specific organisational unit.
- * @param $berechtigung_kurzbz
- * @param null $oe_kurzbz
- * @return array
- */
- public function getBenutzerByBerechtigung($berechtigung_kurzbz, $oe_kurzbz = null){
+ /**
+ * Get user who are authorized with berechtigung and, if given, authorized for the specific organisational unit.
+ * @param $berechtigung_kurzbz
+ * @param null $oe_kurzbz
+ * @return array
+ */
+ public function getBenutzerByBerechtigung($berechtigung_kurzbz, $oe_kurzbz = null)
+ {
+ $params = array();
+ $query = '
+ SELECT
+ *
+ FROM
+ system.vw_berechtigung_nichtrekursiv
+ WHERE
+ berechtigung_kurzbz = ?';
- $condition = array('berechtigung_kurzbz' => $berechtigung_kurzbz);
+ $params[] = $berechtigung_kurzbz;
- if (is_string($oe_kurzbz))
- {
- $condition['oe_kurzbz'] = $oe_kurzbz;
- }
+ if (!is_null($oe_kurzbz))
+ {
+ $query .= ' AND oe_kurzbz = ?';
+ $params[] = $oe_kurzbz;
+ }
- return $this->loadWhere($condition);
- }
-}
\ No newline at end of file
+ return $this->execQuery($query, $params);
+ }
+}
diff --git a/application/views/lehre/lehrauftrag/LehrendeUebersicht.php b/application/views/lehre/lehrauftrag/LehrendeUebersicht.php
new file mode 100644
index 000000000..1ad295392
--- /dev/null
+++ b/application/views/lehre/lehrauftrag/LehrendeUebersicht.php
@@ -0,0 +1,39 @@
+load->view(
+ 'templates/FHC-Header',
+ array(
+ 'title' => 'Lehrauftrag bestellen',
+ 'jquery' => true,
+ 'bootstrap' => true,
+ 'fontawesome' => true,
+ 'sbadmintemplate' => true,
+ 'ajaxlib' => true,
+ 'navigationwidget' => true,
+ )
+);
+?>
+
+
+widgetlib->widget('NavigationWidget'); ?>
+
+
+
+load->view('templates/FHC-Footer'); ?>
diff --git a/application/views/lehre/lehrauftrag/acceptLehrauftrag.php b/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
index 951dbfadf..49c1e2ea1 100644
--- a/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
+++ b/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
@@ -14,7 +14,6 @@ $this->load->view(
'ajaxlib' => true,
'dialoglib' => true,
'tablewidget' => true,
- 'navigationwidget' => true,
'phrases' => array(
'global' => array('lehrauftraegeAnnehmen'),
),
@@ -48,23 +47,52 @@ $this->load->view(
Wie nehme ich Lehraufträge an?
-
Sobald Ihnen ein oder mehrere Lehraufträge erteilt wurden, können Sie diese annehmen.
Klicken Sie unten auf das Status-Icon 'Nur erteilte anzeigen' oder 'Alle anzeigen'
- Wählen Sie einzelne Lehraufträge mit Klick auf die Zeilen oder alle über den Button 'Alle auswählen'.
+ Wählen Sie die Lehraufträge, die Sie annehmen möchten, selbst oder alle über den Button 'Alle auswählen'.
Geben Sie Ihr CIS-Passwort ein und klicken auf Lehrauftrag annehmen.
-
+
Warum kann ich manche Lehraufträge nicht auswählen?
-
Nur Lehraufträge mit dem Status 'erteilt' können gewählt werden.
Angenommene Lehraufträge oder Lehraufträge in Bearbeitung werden nur zu Ihrer Information angezeigt.
-
+
+
+
Filter
+
+
+
+
+
+
+
+
+
+
+ Alle Alle Lehraufträge mit jedem Status
+ Bestellt Nur bestellte UND bestellte Lehraufträge, die in Bearbeitung sind
+ Erteilt Nur erteilte UND geänderte Lehraufträge, die in Bearbeitung sind
+ Angenommen Nur von Ihnen angenommene Lehraufträge
+
+
+
+
+
+
+
Auswahl
+
+
+ Einzeln auswählen: Strg + Klick auf einzelne Zeile(n)
+ Bereich auswählen: Shift + Klick auf Anfangs- und Endzeile
+ Alle auswählen: Button 'Alle auswählen'
+
+
+
@@ -121,7 +149,7 @@ $this->load->view(
-
+
diff --git a/application/views/lehre/lehrauftrag/acceptLehrauftragData.php b/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
index 0999d7ae6..2a2e348dd 100644
--- a/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
@@ -85,10 +85,16 @@ FROM
SELECT *,
/* concatinated and aggregated gruppen */
(SELECT
- string_agg(concat(stg_typ_kurzbz, \'-\', semester, verband, gruppe
- || gruppe_kurzbz), \', \')
+ string_agg(
+ CASE WHEN gruppe_kurzbz is null THEN
+ concat(upper(grpstg.typ || grpstg.kurzbz), \'-\', semester, verband, gruppe)
+ ELSE
+ gruppe_kurzbz
+ END
+ , \', \')
FROM
lehre.tbl_lehreinheitgruppe
+ JOIN public.tbl_studiengang grpstg USING(studiengang_kz)
WHERE
lehreinheit_id = tmp_lehrauftraege.lehreinheit_id
) AS "gruppe",
@@ -183,10 +189,16 @@ FROM
LIMIT 1) AS "mitarbeiter_uid",
/* concatinated and aggregated gruppen */
(SELECT
- string_agg(concat(stg_typ_kurzbz, \'-\', semester, verband, gruppe
- || gruppe_kurzbz), \', \')
+ string_agg(
+ CASE WHEN gruppe_kurzbz is null THEN
+ concat(upper(grpstg.typ || grpstg.kurzbz), \'-\', semester, verband, gruppe)
+ ELSE
+ gruppe_kurzbz
+ END
+ , \', \')
FROM
lehre.tbl_lehreinheitgruppe
+ JOIN public.tbl_studiengang grpstg USING(studiengang_kz)
WHERE
lehreinheit_id = tmp_projektbetreuung.lehreinheit_id
) AS "gruppe",
@@ -296,7 +308,7 @@ $filterWidgetArray = array(
'OrgForm',
'Person-ID',
'Typ',
- 'Auftrag',
+ 'LV- / Projektbezeichnung',
'Semester',
'Organisationseinheit',
'Gruppe',
@@ -357,14 +369,14 @@ $filterWidgetArray = array(
orgform_kurzbz: {headerFilter:"input"},
person_id: {visible: false},
typ: {headerFilter:"input", width: "7%"},
- auftrag: {headerFilter:"input", width: "23%"},
+ auftrag: {headerFilter:"input", width: "15%"},
semester: {headerFilter:"input"},
- lv_oe_kurzbz: {headerFilter:"input", width: "12%"},
+ lv_oe_kurzbz: {headerFilter:"input", width: "8%"},
gruppe: {headerFilter:"input", width: "5%"},
stunden: {align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:1}, width: "5%"},
- betrag: {align:"right", formatter: form_formatNulltoStringNumber,
+ betrag: {align:"right", width: "6%", formatter: form_formatNulltoStringNumber,
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:2}, bottomCalcFormatter:"money", bottomCalcFormatterParams:{decimal: ",", thousand: ".", symbol:"€"},
width: "8%"},
@@ -372,9 +384,9 @@ $filterWidgetArray = array(
vertrag_stunden: {visible: false},
vertrag_betrag: {visible: false},
mitarbeiter_uid: {visible: false},
- bestellt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: bestellt_tooltip},
- erteilt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: erteilt_tooltip},
- akzeptiert: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: akzeptiert_tooltip},
+ bestellt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: bestellt_tooltip, width: "8%"},
+ erteilt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: erteilt_tooltip, width: "8%"},
+ akzeptiert: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: akzeptiert_tooltip, width: "8%"},
bestellt_von: {visible: false},
erteilt_von: {visible: false},
akzeptiert_von: {visible: false}
diff --git a/application/views/lehre/lehrauftrag/approveLehrauftrag.php b/application/views/lehre/lehrauftrag/approveLehrauftrag.php
index 61cdd124d..71c1840c6 100644
--- a/application/views/lehre/lehrauftrag/approveLehrauftrag.php
+++ b/application/views/lehre/lehrauftrag/approveLehrauftrag.php
@@ -116,7 +116,7 @@ $this->load->view(
Bestellt Nur bestellte UND geänderte bestellte Lehraufträge
Erteilt Nur erteilte UND geänderte erteilte Lehraufträge
Angenommen Nur vom Lehrenden angenommene Lehraufträge
- Geändert Nur geänderte Lehraufträge, die den Status 'bestellt' oder 'erteilt' haben
+ Geändert Nur Lehraufträge, die geändert wurden, nachdem sie bereits bestellt oder erteilt worden sind
Dummies Nur Lehraufträge, die mit einem Dummylektor angelegt sind
diff --git a/application/views/lehre/lehrauftrag/approveLehrauftragData.php b/application/views/lehre/lehrauftrag/approveLehrauftragData.php
index 616450a5c..43eb2aa13 100644
--- a/application/views/lehre/lehrauftrag/approveLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/approveLehrauftragData.php
@@ -87,10 +87,16 @@ FROM
SELECT *,
/* concatinated and aggregated gruppen */
(SELECT
- string_agg(concat(stg_typ_kurzbz, \'-\', semester, verband, gruppe
- || gruppe_kurzbz), \', \')
+ string_agg(
+ CASE WHEN gruppe_kurzbz is null THEN
+ concat(upper(grpstg.typ || grpstg.kurzbz), \'-\', semester, verband, gruppe)
+ ELSE
+ gruppe_kurzbz
+ END
+ , \', \')
FROM
lehre.tbl_lehreinheitgruppe
+ JOIN public.tbl_studiengang grpstg USING(studiengang_kz)
WHERE
lehreinheit_id = tmp_lehrauftraege.lehreinheit_id
) AS "gruppe",
@@ -188,10 +194,16 @@ FROM
LIMIT 1) AS "mitarbeiter_uid",
/* concatinated and aggregated gruppen */
(SELECT
- string_agg(concat(stg_typ_kurzbz, \'-\', semester, verband, gruppe
- || gruppe_kurzbz), \', \')
+ string_agg(
+ CASE WHEN gruppe_kurzbz is null THEN
+ concat(upper(grpstg.typ || grpstg.kurzbz), \'-\', semester, verband, gruppe)
+ ELSE
+ gruppe_kurzbz
+ END
+ , \', \')
FROM
lehre.tbl_lehreinheitgruppe
+ JOIN public.tbl_studiengang grpstg USING(studiengang_kz)
WHERE
lehreinheit_id = tmp_projektbetreuung.lehreinheit_id
) AS "gruppe",
@@ -306,7 +318,7 @@ $filterWidgetArray = array(
'OrgForm',
'Person-ID',
'Typ',
- 'Auftrag',
+ 'LV- / Projektbezeichnung',
'Semester',
'Organisationseinheit',
'Gruppe',
@@ -373,7 +385,7 @@ $filterWidgetArray = array(
projektarbeit_id: {visible: false},
studiensemester_kurzbz: {headerFilter:"input"},
studiengang_kz: {visible: false},
- stg_typ_kurzbz: {visible: false},
+ stg_typ_kurzbz: {headerFilter:"input", width: "5%"},
orgform_kurzbz: {headerFilter:"input"},
person_id: {visible: false},
typ: {headerFilter:"input"},
@@ -385,16 +397,16 @@ $filterWidgetArray = array(
stunden: {align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:1}},
- betrag: {align:"right", formatter: form_formatNulltoStringNumber,
+ betrag: {align:"right", width: "8%", formatter: form_formatNulltoStringNumber,
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:2}, bottomCalcFormatter:"money", bottomCalcFormatterParams:{decimal: ",", thousand: ".", symbol:"€"}},
vertrag_id: {visible: false},
vertrag_stunden: {visible: false},
vertrag_betrag: {visible: false},
mitarbeiter_uid: {visible: false},
- bestellt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: bestellt_tooltip},
- erteilt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: erteilt_tooltip},
- akzeptiert: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: akzeptiert_tooltip},
+ bestellt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: bestellt_tooltip, width: "8%"},
+ erteilt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: erteilt_tooltip, width: "8%"},
+ akzeptiert: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: akzeptiert_tooltip, width: "8%"},
bestellt_von: {visible: false},
erteilt_von: {visible: false},
akzeptiert_von: {visible: false},
diff --git a/application/views/lehre/lehrauftrag/orderLehrauftrag.php b/application/views/lehre/lehrauftrag/orderLehrauftrag.php
index abcb3dbc4..8938a305c 100644
--- a/application/views/lehre/lehrauftrag/orderLehrauftrag.php
+++ b/application/views/lehre/lehrauftrag/orderLehrauftrag.php
@@ -86,6 +86,7 @@ $this->load->view(
Geänderte Lehraufträge
Im FAS können Änderungen an Stunden/Stundensatz eines Lehrauftrags durchgeführt werden, solange dieser nicht vom Lehrenden angenommen wurde.
+ Diese müssen dann erneut bestellt werden.
Wenn Änderungen an bereits bestellten oder erteilten Lehraufträgen vorgenommen wurden, werden diese in einem tooltip angezeigt.
Fahren Sie dazu mit der Maus über dem Status-Icon am Beginn der Zeile.
@@ -117,7 +118,7 @@ $this->load->view(
Bestellt Nur bestellte UND geänderte bestellte Lehraufträge
Erteilt Nur erteilte UND geänderte erteilte Lehraufträge
Angenommen Nur vom Lehrenden angenommene Lehraufträge
- Geändert Nur geänderte Lehraufträge, die den Status 'bestellt' oder 'erteilt' haben
+ Geändert Nur Lehraufträge, die geändert wurden, nachdem sie bereits bestellt oder erteilt worden sind
Dummies Nur Lehraufträge, die mit einem Dummylektor angelegt sind
diff --git a/application/views/lehre/lehrauftrag/orderLehrauftragData.php b/application/views/lehre/lehrauftrag/orderLehrauftragData.php
index 2abf658e8..76c6c14b3 100644
--- a/application/views/lehre/lehrauftrag/orderLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/orderLehrauftragData.php
@@ -16,6 +16,36 @@ SELECT
studiensemester_kurzbz,
studiengang_kz,
stg_typ_kurzbz,
+ /* get valid STPL(s), to which the lehrveranstaltung is assigned to (can be more) */
+ /* therefore join over lv, studiensemester and semester */
+ (
+ SELECT
+ string_agg(bezeichnung, \', \')
+ FROM (
+ SELECT stpl.bezeichnung
+ FROM lehre.tbl_studienplan stpl
+ JOIN lehre.tbl_studienplan_semester stplsem USING (studienplan_id)
+ JOIN lehre.tbl_studienplan_lehrveranstaltung stpllv USING (studienplan_id)
+ JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
+ JOIN lehre.tbl_lehreinheit le USING (lehrveranstaltung_id)
+ WHERE
+ /* join over lv of the le */
+ le.lehreinheit_id = auftraege.lehreinheit_id
+ AND stpl.aktiv
+ /* then restrict on stpl of les studiensemester */
+ AND stplsem.studiensemester_kurzbz = le.studiensemester_kurzbz
+ /* then restrict on stpl of lvs semester*/
+ AND stplsem.semester = stpllv.semester
+ /* then restrict on most recent inserted studienplan of the lv */
+ AND studienplan_id = (
+ SELECT stpllv.studienplan_id
+ FROM lehre.tbl_studienplan_lehrveranstaltung
+ WHERE lehrveranstaltung_id = lv.lehrveranstaltung_id
+ ORDER BY insertamum DESC
+ LIMIT 1
+ )
+ ) AS tmp_stpl
+ ) AS "studienplan_bezeichnung",
orgform_kurzbz,
person_id,
typ,
@@ -88,10 +118,16 @@ FROM
SELECT *,
/* concatinated and aggregated gruppen */
(SELECT
- string_agg(concat(stg_typ_kurzbz, \'-\', semester, verband, gruppe
- || gruppe_kurzbz), \', \')
+ string_agg(
+ CASE WHEN gruppe_kurzbz is null THEN
+ concat(upper(grpstg.typ || grpstg.kurzbz), \'-\', semester, verband, gruppe)
+ ELSE
+ gruppe_kurzbz
+ END
+ , \', \')
FROM
lehre.tbl_lehreinheitgruppe
+ JOIN public.tbl_studiengang grpstg USING(studiengang_kz)
WHERE
lehreinheit_id = tmp_lehrauftraege.lehreinheit_id
) AS "gruppe",
@@ -190,10 +226,16 @@ FROM
LIMIT 1) AS "mitarbeiter_uid",
/* concatinated and aggregated gruppen */
(SELECT
- string_agg(concat(stg_typ_kurzbz, \'-\', semester, verband, gruppe
- || gruppe_kurzbz), \', \')
+ string_agg(
+ CASE WHEN gruppe_kurzbz is null THEN
+ concat(upper(grpstg.typ || grpstg.kurzbz), \'-\', semester, verband, gruppe)
+ ELSE
+ gruppe_kurzbz
+ END
+ , \', \')
FROM
lehre.tbl_lehreinheitgruppe
+ JOIN public.tbl_studiengang grpstg USING(studiengang_kz)
WHERE
lehreinheit_id = tmp_projektbetreuung.lehreinheit_id
) AS "gruppe",
@@ -305,10 +347,11 @@ $filterWidgetArray = array(
'Studiensemester',
'Studiengang-KZ',
'Studiengang',
+ 'Studienplan',
'OrgForm',
'Person-ID',
'Typ',
- 'Auftrag',
+ 'LV- / Projektbezeichnung',
'Semester',
'Organisationseinheit',
'Gruppe',
@@ -377,11 +420,12 @@ $filterWidgetArray = array(
projektarbeit_id: {visible: false},
studiensemester_kurzbz: {headerFilter:"input"},
studiengang_kz: {visible: false},
- stg_typ_kurzbz: {visible: false},
+ stg_typ_kurzbz: {headerFilter:"input", width: "5%"},
+ studienplan_bezeichnung: {headerFilter:"input", width: "7%"},
orgform_kurzbz: {headerFilter:"input"},
person_id: {visible: false},
typ: {headerFilter:"input"},
- auftrag: {headerFilter:"input", width:"20%"},
+ auftrag: {headerFilter:"input", width:"15%"},
semester: {headerFilter:"input"},
lv_oe_kurzbz: {headerFilter:"input"},
gruppe: {headerFilter:"input"},
@@ -390,7 +434,7 @@ $filterWidgetArray = array(
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:1}},
stundensatz: {visible: false},
- betrag: {align:"right", formatter: form_formatNulltoStringNumber,
+ betrag: {align:"right", width: "8%", formatter: form_formatNulltoStringNumber,
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:2}, bottomCalcFormatter:"money",
bottomCalcFormatterParams:{decimal: ",", thousand: ".", symbol:"€"}},
@@ -398,12 +442,12 @@ $filterWidgetArray = array(
vertrag_stunden: {visible: false},
vertrag_betrag: {visible: false},
mitarbeiter_uid: {visible: false},
- bestellt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: bestellt_tooltip},
- erteilt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: erteilt_tooltip},
- akzeptiert: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: akzeptiert_tooltip},
+ bestellt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: bestellt_tooltip, width: "8%"},
+ erteilt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: erteilt_tooltip, width: "8%"},
+ akzeptiert: {align:"center", headerFilter:"input", mutator: mut_formatStringDate, tooltip: akzeptiert_tooltip, width: "8%"},
bestellt_von: {visible: false},
erteilt_von: {visible: false},
- akzeptiert_von: {visible: false},
+ akzeptiert_von: {visible: false}
}', // col properties
);
diff --git a/cis/private/lehre/pruefung/pruefung.js.php b/cis/private/lehre/pruefung/pruefung.js.php
index 9ef84e889..15bd195ee 100644
--- a/cis/private/lehre/pruefung/pruefung.js.php
+++ b/cis/private/lehre/pruefung/pruefung.js.php
@@ -758,9 +758,10 @@ function convertDateTime(string, type)
* Lädt die Anmeldungen zu einer Prüfung
* @param {type} pruefungstermin_id ID des Prüfungstermins
* @param {type} lehrveranstaltung_id ID der Lehrveranstaltung
+ * @param saveReihungAfterShow speichert Reihung neu wenn true
* @returns {undefined}
*/
-function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id)
+function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id, saveReihungAfterShow = false)
{
$("#kommentar").empty();
$("#kommentarSpeichernButton").empty();
@@ -778,6 +779,9 @@ function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id)
writeAnmeldungen(data);
$("#sortable").sortable();
$("#sortable").disableSelection();
+
+ if(saveReihungAfterShow)
+ saveReihung(pruefungstermin_id, lehrveranstaltung_id);
}
});
}
@@ -806,7 +810,8 @@ function writeAnmeldungen(data)
{
case 'angemeldet':
liste += ""+vorname+" "+nachname+" ";
- liste += ""+count+"
' onclick='anmeldungBestaetigen(\""+d.pruefungsanmeldung_id+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'>
";
+ liste += ""+count+"
' onclick='anmeldungBestaetigen(\""+d.pruefungsanmeldung_id+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'>";
+ liste += "
";
if(d.wuensche !== null)
{
liste += "";
@@ -945,6 +950,43 @@ function anmeldungBestaetigen(pruefungsanmeldung_id, termin_id, lehrveranstaltun
});
}
+/**
+ * Löscht eine Prüfungsanmeldung
+ * @param {type} pruefungsanmeldung_id ID der Prüfungsanmeldung
+ * @param {type} termin_id ID des Prüfungstermines
+ * @param {type} lehrveranstaltung_id ID der Lehrveranstaltung
+ * @returns {undefined}
+ */
+function anmeldungLoeschen(pruefungsanmeldung_id, termin_id, lehrveranstaltung_id)
+{
+ if (!confirm("Möchten Sie die Anmeldung wirklich löschen?"))
+ return undefined;
+
+ $.ajax({
+ dataType: 'json',
+ url: "./pruefungsanmeldung.json.php",
+ type: "POST",
+ data: {
+ method: "anmeldungLoeschen",
+ pruefungsanmeldung_id: pruefungsanmeldung_id
+ },
+ error: loadError,
+ success: function(data){
+ if(data.error === 'false' && data.result === true)
+ {
+ if(termin_id !== 'undefined' && lehrveranstaltung_id !== 'undefined')
+ {
+ showAnmeldungen(termin_id, lehrveranstaltung_id, true);
+ }
+ }
+ else
+ {
+ messageBox("message", data.errormsg, "red", "highlight", 1000);
+ }
+ }
+ });
+}
+
/**
* Ändert den Status aller Anmeldungen eines Termins auf "bestätigt"
* @param {type} termin_id ID des Prüfungstermines
diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
index 9c30427c3..e96f0fcea 100644
--- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
+++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
@@ -97,6 +97,9 @@ switch($method)
case 'anmeldungBestaetigen':
$data = anmeldungBestaetigen($uid);
break;
+ case 'anmeldungLoeschen':
+ $data = anmeldungLoeschen();
+ break;
case 'alleBestaetigen':
$data = alleBestaetigen($uid);
break;
@@ -1066,6 +1069,30 @@ function anmeldungBestaetigen($uid)
return $data;
}
+/**
+ * Löscht eine Prüfungsanmeldung
+ * @return Array
+ */
+function anmeldungLoeschen()
+{
+ $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"];
+ $anmeldung = new pruefungsanmeldung();
+
+ if($anmeldung->delete($pruefungsanmeldung_id))
+ {
+ $data['result']=true;
+ $data['error']='false';
+ $data['errormsg']='';
+ }
+ else
+ {
+ $data['error']='true';
+ $data['errormsg']=$anmeldung->errormsg;
+ }
+
+ return $data;
+}
+
/**
* Lädt alle Studiengänge
* @return Array
diff --git a/content/lvplanung/lehrveranstaltungDBDML.php b/content/lvplanung/lehrveranstaltungDBDML.php
index 2b3090221..d506f0459 100644
--- a/content/lvplanung/lehrveranstaltungDBDML.php
+++ b/content/lvplanung/lehrveranstaltungDBDML.php
@@ -693,8 +693,11 @@ if(!$error)
//Lehreinheitmitarbeiterzuteilung loeschen
if(isset($_POST['lehreinheit_id']) && is_numeric($_POST['lehreinheit_id']) && isset($_POST['mitarbeiter_uid']))
{
- // Wenn der Mitarbeiter schon einen Vertrag hat, wird das Loeschen verhindert
- if (isset($_POST['vertrag_id']) && is_numeric($_POST['vertrag_id']))
+ // Wenn der Mitarbeiter schon einen Vertrag hat UND
+ // der config Eintrag zum Anzeigen der Vertragsdetails true ist,
+ // wird das Loeschen verhindert
+ if (isset($_POST['vertrag_id']) && is_numeric($_POST['vertrag_id']) &&
+ (defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') && FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN))
{
$return = false;
$errormsg = 'Löschen nur nach Stornierung des Vertrags möglich.';
diff --git a/content/lvplanung/lehrveranstaltungoverlay.js.php b/content/lvplanung/lehrveranstaltungoverlay.js.php
index d2a0b92b5..fef975304 100644
--- a/content/lvplanung/lehrveranstaltungoverlay.js.php
+++ b/content/lvplanung/lehrveranstaltungoverlay.js.php
@@ -43,6 +43,10 @@ var lehrveranstaltungLvGesamtNotenSelectUID=null; //LehreinheitID des Noten Eint
var lehrveranstaltungNotenTreeloaded=false;
var lehrveranstaltungGesamtNotenTreeloaded=false;
var LehrveranstaltungAusbildungssemesterFilter='';
+
+// Config-Eintrag, ob Vertragsdetails angezeigt werden sollen
+var lehrveranstaltung_vertragsdetails_anzeigen = Boolean();
+
// ********** Observer und Listener ************* //
// ****
@@ -1331,12 +1335,9 @@ function LeMitarbeiterAuswahl()
document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-checkbox-bismelden').checked=false;
var gesamtkosten = LeMitarbeiterGesamtkosten();
-
- // Prüfe ob Vertragsdetails angezeigt werden
- var vertragsdetails_anzeigen = new Boolean();
-
+
// Wenn Vertragsdetails angezeigt werden
- if (vertragsdetails_anzeigen) {
+ if (lehrveranstaltung_vertragsdetails_anzeigen) {
// Reset attributes
document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-vertragsstatus').setAttribute("style", "font-weight: normal");
diff --git a/content/lvplanung/stpl-week-overlay.js.php b/content/lvplanung/stpl-week-overlay.js.php
index beebfa2ef..48cd0b00a 100644
--- a/content/lvplanung/stpl-week-overlay.js.php
+++ b/content/lvplanung/stpl-week-overlay.js.php
@@ -41,11 +41,11 @@ function onLVAFilter()
var filter=document.getElementById('tempus-lva-filter').value;
var vorher='';
var nachher='';
-
+
// LVAs
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources');
-
+
var orig=datasources.substring(0);
var idx = datasources.indexOf("&filter=")
if(idx!=-1)
@@ -56,13 +56,14 @@ function onLVAFilter()
nachher=datasources.slice(idx2);
datasources=vorher+nachher;
}
-
+
datasources=datasources+"&filter="+encodeURIComponent(filter);
-
+
//alert('Orig:'+orig+' Source: '+datasources+' Vorher:'+vorher+' Nachher:'+nachher);
vboxLehrveranstalungPlanung.setAttribute('datasources',datasources);
}
+
// LVA-Panel aktualisieren
function onLektorRefresh()
{
@@ -121,7 +122,7 @@ function LehrstundeGetSortOrder()
{
var toolbar = document.getElementById('toolbarTimeTableSort');
var tbbuttons = toolbar.getElementsByTagName('toolbarbutton');
-
+
for each(var button in tbbuttons)
{
if(button.getAttribute('checked')=='true')
@@ -132,17 +133,61 @@ function LehrstundeGetSortOrder()
return 'stundenDESC';
}
+// Setzt den Vertragsfilter zurueck
+function LVAFilterReset()
+{
+ //Filtermarkierung von allen entfernen
+ var toolbar = document.getElementById('toolbarTimeTableFilterVertrag');
+ var tbbuttons = toolbar.getElementsByTagName('toolbarbutton');
+
+ for each(var button in tbbuttons)
+ {
+ if(button.id)
+ button.setAttribute('checked','false');
+ }
+}
+
+// LVA-Panel auf Vertragsstatus filtern
+function onLVAFilterVertrag(item)
+{
+ var vorher='';
+ var nachher='';
+ var vertragsstatus=item.getAttribute('value');
+
+ LVAFilterReset();
+ //Element als gedrueckt markieren
+ item.setAttribute('checked','true');
+
+ // LVAs
+ var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
+ var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources');
+
+ var orig=datasources.substring(0);
+ var idx = datasources.indexOf("&vertrag=")
+ if(idx!=-1)
+ {
+ idx2=datasources.indexOf("&",idx+10);
+ vorher=datasources.slice(0,idx);
+ if(idx2!=-1)
+ nachher=datasources.slice(idx2);
+ datasources=vorher+nachher;
+ }
+
+ datasources=datasources+"&vertrag="+encodeURIComponent(vertragsstatus);
+ vboxLehrveranstalungPlanung.setAttribute('datasources',datasources);
+}
+
// LVA-Panel filtern
function onLVASort(item)
{
var vorher='';
var nachher='';
var order=item.getAttribute('value');
-
+
//Sortiermarkierung von allen entfernen
var toolbar = document.getElementById('toolbarTimeTableSort');
var tbbuttons = toolbar.getElementsByTagName('toolbarbutton');
-
+
for each(var button in tbbuttons)
{
if(button.id)
@@ -150,11 +195,11 @@ function onLVASort(item)
}
//Element als gedrueckt markieren
item.setAttribute('checked','true');
-
+
// LVAs
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources');
-
+
var orig=datasources.substring(0);
var idx = datasources.indexOf("&order=")
if(idx!=-1)
@@ -165,9 +210,9 @@ function onLVASort(item)
nachher=datasources.slice(idx2);
datasources=vorher+nachher;
}
-
+
datasources=datasources+"&order="+encodeURIComponent(order);
-
+
//alert('Orig:'+orig+' Source: '+datasources+' Vorher:'+vorher+' Nachher:'+nachher);
vboxLehrveranstalungPlanung.setAttribute('datasources',datasources);
}
@@ -301,7 +346,7 @@ function StplSearchRoom(target)
saveScrollPositionTimeTableWeek();
if(typeof(target)==='undefined')
target = document.popupNode;
-
+
var contentFrame=document.getElementById('iframeTimeTableWeek');
var daten=document.getElementById('TimeTableWeekData');
var datum=parseInt(daten.getAttribute("datum"));
@@ -316,7 +361,7 @@ function StplSearchRoom(target)
var aktion=target.getAttribute("aktion");
aktion+="_single_search";
var idList=target.getAttribute("idList");
-
+
var attributes="\n?type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid+"\n&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"\n&gruppe="+gruppe;
attributes+=idList+"&aktion="+aktion;
var url = "content/lvplanung/timetable-week.xul.php";
@@ -336,7 +381,7 @@ function TimeTableWeekMarkiere(item)
if(!item)
{
items = document.getElementsByTagName('button');
-
+
for each(var button in items)
{
if(button.id && button.id.startsWith('buttonSTPL'))
@@ -346,7 +391,7 @@ function TimeTableWeekMarkiere(item)
//button.style.fontStyle='normal';
//button.style.fontWeight='normal';
button.style.border = "1px solid transparent";
-
+
button.style.MozBorderTopColors='transparent';
button.style.MozBorderLeftColors='transparent';
button.style.MozBorderBottomColors='transparent';
@@ -358,19 +403,19 @@ function TimeTableWeekMarkiere(item)
else
{
item.setAttribute('marked','true');
-
+
item.style.color='darkred';
//item.style.fontStyle='italic';
//item.style.fontWeight='bold';
-
+
item.style.border = "1px solid darkred";
-
+
item.style.MozBorderTopColors='darkred';
item.style.MozBorderLeftColors='darkred';
item.style.MozBorderBottomColors='darkred';
item.style.MozBorderRightColors='darkred';
-
- TimeTableWeekLastMarkedItem=item;
+
+ TimeTableWeekLastMarkedItem=item;
}
}
@@ -463,7 +508,7 @@ function TimeTableWeekClick(event)
}
else if(event.shiftKey)
{
- //Wenn mit Shift auf eine Stunde geklickt wird, dann werden alle Stunden markiert,
+ //Wenn mit Shift auf eine Stunde geklickt wird, dann werden alle Stunden markiert,
//die zwischen der zuletzt markierten und dieser Stunde liegen
start = parseInt(TimeTableWeekLastMarkedItem.id.substring('buttonSTPL'.length));
ende = parseInt(event.target.id.substring('buttonSTPL'.length));
@@ -473,7 +518,7 @@ function TimeTableWeekClick(event)
ende = start;
start = hlp;
}
-
+
for(var i=start;i<=ende;i++)
{
item = document.getElementById('buttonSTPL'+i);
@@ -482,13 +527,13 @@ function TimeTableWeekClick(event)
}
else
{
-
+
//alle markierungen entfernen
TimeTableWeekMarkiere();
-
+
//aktuellen Eintrag markieren
TimeTableWeekMarkiere(event.target);
-
+
//Details anzeigen
onStplDetail(event);
}
@@ -510,7 +555,7 @@ function TimeTableWeekDblClick(event)
{
buttonunr=button.getAttribute('unr');
buttonwochentag=button.getAttribute('wochentag');
-
+
if(buttonunr==unr && buttonwochentag==wochentag)
{
TimeTableWeekMarkiere(button);
@@ -597,7 +642,7 @@ function STPLDetailSave(dialog)
}
var url = 'content/tempusDBDML.php';
var req = new phpRequest(url,'','');
-
+
req.add('type', 'savestundenplaneintrag');
req.add('stundenplan_id', id);
@@ -614,7 +659,7 @@ function STPLDetailSave(dialog)
req.add('fix', fix);
req.add('mitarbeiter_uid', mitarbeiter_uid);
req.add('semester',semester);
-
+
var response = req.executePOST();
var val = new ParseReturnValue(response)
@@ -630,14 +675,14 @@ function STPLDetailSave(dialog)
else
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-
+
var treeStplDetails=parent.document.getElementById('treeStplDetails');
//alert('url'+STPLlastDetailUrl);
treeStplDetails.setAttribute('datasources', '');
treeStplDetails.setAttribute('datasources', STPLlastDetailUrl+"&ts="+gettimestamp());
return true;
}
-
+
}
// ****
@@ -647,7 +692,7 @@ function STPLDetailDelete()
{
//alert('url'+STPLlastDetailUrl);
//return false;
-
+
tree = document.getElementById('treeStplDetails');
if(tree.currentIndex==-1)
{
@@ -657,15 +702,15 @@ function STPLDetailDelete()
var col = tree.columns ? tree.columns["stundenplan_id"] : "stundenplan_id";
var stundenplanid = tree.view.getCellText(tree.currentIndex,col);
-
+
var col = tree.columns ? tree.columns["stpl-details-overlay-lehrstunde-reservierung"] : "stpl-details-overlay-lehrstunde-reservierung";
var reservierung = tree.view.getCellText(tree.currentIndex,col);
-
+
if(confirm('Wollen Sie diesen Datensatz wirklich loeschen?'))
{
var url = 'content/tempusDBDML.php';
var req = new phpRequest(url,'','');
-
+
if(reservierung=='true')
{
req.add('type', 'deletereservierung');
@@ -676,11 +721,11 @@ function STPLDetailDelete()
req.add('type', 'deletestundenplaneintrag');
req.add('stundenplan_id', stundenplanid);
}
-
+
var response = req.executePOST();
-
+
var val = new ParseReturnValue(response)
-
+
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
@@ -691,7 +736,7 @@ function STPLDetailDelete()
else
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-
+
var treeStplDetails=parent.document.getElementById('treeStplDetails');
//alert('url'+STPLlastDetailUrl);
treeStplDetails.setAttribute('datasources', '');
@@ -758,18 +803,18 @@ function TimetableDeleteEntries()
var pers_uid=daten.getAttribute("pers_uid");
var doIt=true;
var aktion='stpl_delete_single';
-
+
doIt=confirm('Es werden die gewaehlten Eintraege aus dem LV-Plan geloescht!\nSind Sie sicher?')
var attributes="\n?type="+type+"&datum="+datum+"&ort="+encodeURIComponent(ort)+"&pers_uid="+pers_uid+"\n&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"\n&gruppe="+gruppe;
attributes+="&aktion="+aktion;
var url = "content/lvplanung/timetable-week.xul.php";
url+=attributes;
-
+
//IDs der Stunden dazuhaengen
idList = TimeTableWeekGetMarkedIdList();
url+=idList
-
+
if (url && doIt)
location.href=url;
}
@@ -795,7 +840,7 @@ function BetriebsmittelZuordnen(item)
{
for(i in stunden)
url = url+'&stunde[]='+stunden[i];
-
+
// Alle StundenplanIDs holen von den Eintraegen die markiert sind
var ids = TimeTableWeekGetMarkedIdArray();
for(i in ids)
@@ -805,7 +850,7 @@ function BetriebsmittelZuordnen(item)
{
// Wenn kein eintrag markiert ist, wird der genommen auf den geklickt wurde
url = url+'&stunde[]'+item.getAttribute('stunde');
-
+
idlist = item.getAttribute('idList');
idarr = idlist.split(/&stundenplan_id[0-9]=/);
for(i in idarr)
@@ -815,6 +860,6 @@ function BetriebsmittelZuordnen(item)
url = url+'&stplid[]'+idarr[i];
}
- }
+ }
window.open(url,'Details', 'height=350,width=800,left=100,top=100,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
}
diff --git a/content/lvplanung/stpl-week-overlay.xul.php b/content/lvplanung/stpl-week-overlay.xul.php
index 629133913..58d73d47d 100644
--- a/content/lvplanung/stpl-week-overlay.xul.php
+++ b/content/lvplanung/stpl-week-overlay.xul.php
@@ -22,7 +22,16 @@
*/
header("Content-type: application/vnd.mozilla.xul+xml");
include('../../config/vilesci.config.inc.php');
+include('../../config/global.config.inc.php');
+if(defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') && FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN)
+{
+ $showvertragsfilter = true;
+}
+else
+{
+ $showvertragsfilter = false;
+}
echo '';
echo '';
?>
@@ -100,7 +109,7 @@ echo '
-
+
-
+
+
+
+
+
+
+
+
+
+
@@ -184,6 +230,7 @@ echo '
+
-
diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php
index e1234fc76..3de4dbb46 100644
--- a/content/student/studentDBDML.php
+++ b/content/student/studentDBDML.php
@@ -4041,7 +4041,8 @@ if(!$error)
else
{
// Wenn der Projektbetreuer schon einen Vertrag hat, wird das Loeschen verhindert
- if (isset($_POST['vertrag_id']) && is_numeric($_POST['vertrag_id']))
+ if (isset($_POST['vertrag_id']) && is_numeric($_POST['vertrag_id']) &&
+ (defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN') && FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN))
{
$return = false;
$errormsg = 'Löschen nur nach Stornierung des Vertrags möglich.';
diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php
index 765f3738c..ab284808e 100644
--- a/content/student/studentprojektarbeit.js.php
+++ b/content/student/studentprojektarbeit.js.php
@@ -31,7 +31,9 @@ var StudentProjektbetreuerTreeDatasource=null; //Datasource des Projektbetreuer
var StudentProjektbetreuerSelectPersonID=null;
var StudentProjektbetreuerSelectProjektarbeitID=null;
var StudentProjektbetreuerSelectBetreuerartKurzbz=null;
-vertragsdetails_anzeigen = new Boolean();
+
+// Config-Eintrag, ob Vertragsdetails angezeigt werden sollen
+var projektarbeit_vertragsdetails_anzeigen = Boolean();
// ********** Observer und Listener ************* //
@@ -117,7 +119,7 @@ var StudentProjektbetreuerTreeListener =
//ohne dem setTimeout
window.setTimeout(StudentProjektbetreuerTreeSelectID,10);
- if(vertragsdetails_anzeigen)
+ if(projektarbeit_vertragsdetails_anzeigen)
{
var mindEinVertragExistiert = StudentProjektbetreuer_VertragExistiert();
@@ -181,10 +183,9 @@ function StudentProjektarbeitTreeLoad(uid)
tree.builder.addListener(StudentProjektarbeitTreeListener);
StudentProjektarbeitDisableFields(false);
- var vertragsdetails_anzeigen = new Boolean();
-
+
// Wenn Vertragsdetails angezeigt werden
- if (vertragsdetails_anzeigen) {
+ if (projektarbeit_vertragsdetails_anzeigen) {
//Reset attributes
document.getElementById('student-projektbetreuer-label-vertragsstatus').value = '';
document.getElementById('student-projektbetreuer-label-vertragsstunden').value = '';
@@ -891,12 +892,9 @@ function StudentProjektbetreuerAuswahl()
document.getElementById('student-projektbetreuer-checkbox-neu').checked=false;
var gesamtkosten = StudentProjektbetreuerGesamtkosten();
-
- // Prüfe ob Vertragsdetails angezeigt werden
- var vertragsdetails_anzeigen = new Boolean();
-
+
// Wenn Vertragsdetails angezeigt werden
- if (vertragsdetails_anzeigen) {
+ if (projektarbeit_vertragsdetails_anzeigen) {
//Reset attributes
document.getElementById('student-projektbetreuer-label-vertragsstatus').setAttribute("style", "font-weight: normal");
document.getElementById('student-projektbetreuer-button-vertrag-stornieren').setAttribute("tooltiptext",
diff --git a/content/tempusoverlay.js.php b/content/tempusoverlay.js.php
index 1b796fada..a187f5176 100644
--- a/content/tempusoverlay.js.php
+++ b/content/tempusoverlay.js.php
@@ -101,6 +101,7 @@ function onVerbandSelect()
}
var order = LehrstundeGetSortOrder();
+ LVAFilterReset();
// LVAs
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
var attribute='../rdf/lehreinheit-lvplan.rdf.php'+type+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&gruppe="+gruppe+"&order="+order+"&orgform="+orgform;
@@ -196,7 +197,7 @@ function onOrtSelect()
url+=attributes+'&'+gettimestamp();
if (url)
contentFrame.setAttribute('src', url);
-
+
// Semesterplan
var semesterplan=document.getElementById('tabpanels-main');
var panelIndex=semesterplan.getAttribute("selectedIndex");
@@ -238,7 +239,7 @@ function onLektorSelect(event)
url+=attributes+'&'+gettimestamp();
if (url)
contentFrame.setAttribute('src', url);
-
+
// Semesterplan
var semesterplan=document.getElementById('tabpanels-main');
var panelIndex=semesterplan.getAttribute("selectedIndex");
@@ -251,8 +252,9 @@ function onLektorSelect(event)
if (url)
contentFrame.setAttribute('src', url);
}
-
+
var order = LehrstundeGetSortOrder();
+ LVAFilterReset();
// LVAs
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
vboxLehrveranstalungPlanung.setAttribute('datasources','../rdf/lehreinheit-lvplan.rdf.php?'+"type=lektor&lektor="+uid+"&order="+order+"&"+gettimestamp());
@@ -307,7 +309,7 @@ function onLektorSelect(event)
}
catch(e)
{}
-
+
while(oldDatasources.hasMoreElements())
{
treeLV.database.RemoveDataSource(oldDatasources.getNext());
@@ -363,7 +365,7 @@ function onFachbereichSelect(event)
col = tree.columns ? tree.columns["fachbereich-treecol-uid"] : "fachbereich-treecol-uid";
var uid=tree.view.getCellText(tree.currentIndex,col);
-
+
//Wenn auf einen Mitarbeiter geklickt wird, dann die kurzbz vom uebergeordneten
//Fachbereich holen
if(uid!='')
@@ -387,7 +389,7 @@ function onFachbereichSelect(event)
url+=attributes+'&'+gettimestamp();
if (url)
contentFrame.setAttribute('src', url);
-
+
// Semesterplan
var semesterplan=document.getElementById('tabpanels-main');
var panelIndex=semesterplan.getAttribute("selectedIndex");
@@ -400,8 +402,9 @@ function onFachbereichSelect(event)
if (url)
contentFrame.setAttribute('src', url);
}
-
+
var order = LehrstundeGetSortOrder();
+ LVAFilterReset();
// LVAs
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
vboxLehrveranstalungPlanung.setAttribute('datasources','../rdf/lehreinheit-lvplan.rdf.php?'+"type=fachbereich&fachbereich_kurzbz="+kurzbz+"&order="+order+"&"+gettimestamp());
@@ -424,7 +427,7 @@ function onFachbereichSelect(event)
}
catch(e)
{}
-
+
while(oldDatasources.hasMoreElements())
{
treeLV.database.RemoveDataSource(oldDatasources.getNext());
@@ -444,4 +447,3 @@ function onFachbereichSelect(event)
debug(e);
}
}
-
diff --git a/include/dvb.class.php b/include/dvb.class.php
index 68f444647..78bde58c0 100644
--- a/include/dvb.class.php
+++ b/include/dvb.class.php
@@ -39,8 +39,8 @@ class dvb extends basis_db
const DVB_URL_WEBSERVICE_NACHNAME = DVB_PORTAL.'/rws/0.2/simpleStudentByNachname.xml';
const DVB_URL_WEBSERVICE_NAME = DVB_PORTAL.'/rws/0.2/simpleStudentByName.xml';
const DVB_URL_WEBSERVICE_MATRIKELNUMMER = DVB_PORTAL.'/rws/0.2/simpleStudentByMatrikelnummer.xml';
- const DVB_URL_WEBSERVICE_RESERVIERUNG = DVB_PORTAL.'/dvb/matrikelnummern/1.0/reservierung.xml';
- const DVB_URL_WEBSERVICE_MELDUNG = DVB_PORTAL.'/dvb/matrikelnummern/1.0/meldung.xml';
+ const DVB_URL_WEBSERVICE_RESERVIERUNG = DVB_PORTAL.'/rws/0.5/matrikelreservierung.xml';
+ const DVB_URL_WEBSERVICE_MELDUNG = DVB_PORTAL.'/rws/0.5/matrikelmeldung.xml';
const DVB_URL_WEBSERVICE_BPK = DVB_PORTAL.'/rws/0.2/pruefeBpk.xml';
public $authentication;
@@ -747,7 +747,7 @@ class dvb extends basis_db
}
$data = '
-
+
'.$uuid.'
'.$anzahl.'
@@ -828,13 +828,13 @@ class dvb extends basis_db
$gebdat = str_replace("-", "", $person->geburtsdatum);
$data = '
-
+
'.$uuid.'
-
+
'.$bildungseinrichtung.'
'.$gebdat.'
'.$person->geschlecht.'
- '.$person->matrikelnummer.' ';
+ '.$person->matrikelnummer.' ';
if (isset($person->matura) && $person->matura != '')
$data .= ''.$person->matura.' ';
else
diff --git a/include/lehreinheit.class.php b/include/lehreinheit.class.php
index 5f3b3272d..c6c1c0228 100644
--- a/include/lehreinheit.class.php
+++ b/include/lehreinheit.class.php
@@ -802,6 +802,9 @@ class lehreinheit extends basis_db
$this->lehreinheiten[$row->unr]->lehrverband[]=$row->gruppe_kurzbz;
else
$this->lehreinheiten[$row->unr]->lehrverband[]=$lvb;
+ $this->lehreinheiten[$row->unr]->lem[]=array(
+ 'lehreinheit_id' => $row->lehreinheit_id,
+ 'mitarbeiter_uid' => $row->lektor_uid);
}
return true;
}
diff --git a/include/vertrag.class.php b/include/vertrag.class.php
index 4116904ca..b67dd425d 100644
--- a/include/vertrag.class.php
+++ b/include/vertrag.class.php
@@ -529,7 +529,7 @@ class vertrag extends basis_db
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
- JOIN lehre.tbl_vertrag USING (vertrag_id)
+ JOIN lehre.tbl_vertrag USING (vertrag_id)
WHERE
vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER)."
UNION
@@ -728,9 +728,10 @@ class vertrag extends basis_db
}
/**
- * Laedt alle Stati eines Vertrags
+ * Laedt den letzten Status eines Vertrags
*
* @param $vertrag_id
+ * @param $status optional
* @return boolean
*/
public function getStatus($vertrag_id, $status=NULL)
@@ -745,32 +746,32 @@ class vertrag extends basis_db
if(!is_null($status))
{
- $qry .= " AND tbl_vertrag_vertragsstatus.vertragsstatus_kurzbz=".$this->db_add_param($status);
+ $qry .= " AND tbl_vertrag_vertragsstatus.vertragsstatus_kurzbz=".$this->db_add_param($status);
}
$qry .= " ORDER BY datum DESC;";
if($result = $this->db_query($qry))
{
- if($row = $this->db_fetch_object($result))
- {
- $this->vertrag_id = $row->vertrag_id;
- $this->vertragsstatus_kurzbz = $row->vertragsstatus_kurzbz;
- $this->vertragsstatus_bezeichnung = $row->bezeichnung;
- $this->datum = $row->datum;
- $this->uid = $row->uid;
- $this->insertvon = $row->insertvon;
- $this->insertamum = $row->insertamum;
- $this->updatevon = $row->updatevon;
- $this->updateamum = $row->updateamum;
- $this->new=false;
- return true;
- }
- else
- {
- $this->errormsg = 'Eintrag wurde nicht gefunden';
- return false;
- }
+ if($row = $this->db_fetch_object($result))
+ {
+ $this->vertrag_id = $row->vertrag_id;
+ $this->vertragsstatus_kurzbz = $row->vertragsstatus_kurzbz;
+ $this->vertragsstatus_bezeichnung = $row->bezeichnung;
+ $this->datum = $row->datum;
+ $this->uid = $row->uid;
+ $this->insertvon = $row->insertvon;
+ $this->insertamum = $row->insertamum;
+ $this->updatevon = $row->updatevon;
+ $this->updateamum = $row->updateamum;
+ $this->new=false;
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Eintrag wurde nicht gefunden';
+ return false;
+ }
}
else
{
@@ -1041,7 +1042,7 @@ class vertrag extends basis_db
$qry = "
UPDATE lehre.tbl_lehreinheitmitarbeiter SET vertrag_id=null WHERE vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER).";
UPDATE lehre.tbl_projektbetreuer SET vertrag_id=null WHERE vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER).";
- INSERT INTO lehre.tbl_vertrag_vertragsstatus(vertragsstatus_kurzbz, vertrag_id, uid, datum, insertamum, insertvon)
+ INSERT INTO lehre.tbl_vertrag_vertragsstatus(vertragsstatus_kurzbz, vertrag_id, uid, datum, insertamum, insertvon)
VALUES(".
$this->db_qoute('storno'). ", ".
$this->db_add_param($vertrag_id, FHC_INTEGER). ", ".
@@ -1123,7 +1124,7 @@ class vertrag extends basis_db
*/
public function getFalscheBetraege($studiensemester_kurzbz)
{
- $qry = "SELECT * FROM
+ $qry = "SELECT * FROM
(
SELECT
tbl_vertrag.*, tbl_lehreinheitmitarbeiter.mitarbeiter_uid, tbl_lehreinheitmitarbeiter.lehreinheit_id,
@@ -1136,7 +1137,7 @@ class vertrag extends basis_db
WHERE
studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
)x
- WHERE
+ WHERE
x.semesterstunden * x.stundensatz != x.betrag";
if($result = $this->db_query($qry))
diff --git a/public/js/lehre/lehrauftrag/approveLehrauftrag.js b/public/js/lehre/lehrauftrag/approveLehrauftrag.js
index 2cc42abd0..da3697adf 100644
--- a/public/js/lehre/lehrauftrag/approveLehrauftrag.js
+++ b/public/js/lehre/lehrauftrag/approveLehrauftrag.js
@@ -96,7 +96,7 @@ function func_initialFilter(){
// -----------------------------------------------------------------------------------------------------------------
// Formats the group header
function func_groupHeader(data){
- return data[0].lv_bezeichnung; // change name to lehrveranstaltung
+ return data[0].lv_bezeichnung + " " + ' ( LV-ID: ' + data[0].lehrveranstaltung_id + ' )'; // change name to lehrveranstaltung;
};
// Formats the rows
diff --git a/public/js/lehre/lehrauftrag/orderLehrauftrag.js b/public/js/lehre/lehrauftrag/orderLehrauftrag.js
index dfcc46636..d27da0e4e 100644
--- a/public/js/lehre/lehrauftrag/orderLehrauftrag.js
+++ b/public/js/lehre/lehrauftrag/orderLehrauftrag.js
@@ -100,9 +100,9 @@ function func_dataLoaded(data, table){
// Tabulator table format functions
// -----------------------------------------------------------------------------------------------------------------
// Formats the group header
-function func_groupHeader(data){
- return data[0].lv_bezeichnung; // change name to lehrveranstaltung
-};
+function func_groupHeader(data) {
+ return data[0].lv_bezeichnung + " " + ' ( LV-ID: ' + data[0].lehrveranstaltung_id + ' )'; // change name to lehrveranstaltung;
+}
// Formats the rows
function func_rowFormatter(row){
diff --git a/rdf/lehreinheit-lvplan.rdf.php b/rdf/lehreinheit-lvplan.rdf.php
index 948e2327b..a7c89ac98 100644
--- a/rdf/lehreinheit-lvplan.rdf.php
+++ b/rdf/lehreinheit-lvplan.rdf.php
@@ -38,6 +38,8 @@ require_once('../include/lehreinheit.class.php');
require_once('../include/notiz.class.php');
require_once('../include/mitarbeiter.class.php');
require_once('../include/zeitaufzeichnung_gd.class.php');
+require_once('../include/lehreinheitmitarbeiter.class.php');
+require_once('../include/vertrag.class.php');
$uid=get_uid();
$error_msg='';
@@ -90,6 +92,10 @@ if (isset($_GET['orgform']))
$orgform=$_GET['orgform'];
else
$orgform=null;
+if (isset($_GET['vertrag']))
+ $vertrag=$_GET['vertrag'];
+else
+ $vertrag=null;
//Sortierreihenfolge
if(isset($_GET['order']))
@@ -304,6 +310,59 @@ if ($anz>0)
else
$fixangestellt_info = 'EXT';
+ $vertragsstatus_arr = array();
+ $vertragsstatus_kurzbz_arr = array();
+ // Lehrauftragsstatus ermitteln
+ foreach ($l->lem as $row_lem)
+ {
+ $lem_obj = new lehreinheitmitarbeiter();
+ if ($lem_obj->load($row_lem['lehreinheit_id'], $row_lem['mitarbeiter_uid']))
+ {
+ if ($lem_obj->vertrag_id != '')
+ {
+ $vertrag_obj = new vertrag();
+ if($vertrag_obj->getStatus($lem_obj->vertrag_id))
+ {
+ $vertragsstatus_arr[] = $vertrag_obj->vertragsstatus_bezeichnung;
+ $vertragsstatus_kurzbz_arr[] = $vertrag_obj->vertragsstatus_kurzbz;
+ }
+ }
+ else
+ {
+ $vertragsstatus_arr[] = 'Neu';
+ }
+ }
+ }
+ $vertragsstatus = implode(',', array_unique($vertragsstatus_arr));
+
+ if (!is_null($vertrag) && $vertrag != '')
+ {
+ switch($vertrag)
+ {
+ // Alle ab Status erteilt herausfiltern
+ // der rest wird verworfen
+ case 'erteilt':
+ if (!in_array('erteilt', $vertragsstatus_kurzbz_arr)
+ && !in_array('akzeptiert', $vertragsstatus_kurzbz_arr))
+ {
+ continue 2;
+ }
+ break;
+
+ // Alle ab Status bestellt herausfiltern
+ // der rest wird verworfen
+ case 'bestellt':
+ if (!in_array('bestellt', $vertragsstatus_kurzbz_arr)
+ && !in_array('erteilt', $vertragsstatus_kurzbz_arr)
+ && !in_array('akzeptiert', $vertragsstatus_kurzbz_arr))
+ {
+ continue 2;
+ }
+ break;
+ default:
+ break;
+ }
+ }
echo'
'.$lvnr.'
@@ -335,6 +394,7 @@ if ($anz>0)
'.$lehrverband.'
'.$anzahl_notizen.'
'.$l->lehreinheit_id[0].'
+ '.$vertragsstatus.'
';
}
diff --git a/rdf/vertrag.rdf.php b/rdf/vertrag.rdf.php
index 5f1eea221..e2f45b61f 100644
--- a/rdf/vertrag.rdf.php
+++ b/rdf/vertrag.rdf.php
@@ -31,7 +31,7 @@ $uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
-if(!$rechte->isBerechtigt('vertrag/mitarbeiter'))
+if(!$rechte->isBerechtigt('vertrag/mitarbeiter') && !$rechte->isBerechtigt('lehre/lehrauftrag_bestellen'))
die('Sie haben keine Berechtigung für diese Seite');
$datum_obj = new datum();
diff --git a/skin/tempus.css b/skin/tempus.css
index e70e002d5..f064ccb8c 100644
--- a/skin/tempus.css
+++ b/skin/tempus.css
@@ -10,6 +10,16 @@ label.tempus_lektor_fix_info
font-size: x-small
}
+label.tempus_vertrag_info
+{
+ border-top: 1px solid black;
+ border-bottom: 1px solid black;
+ font-weight: bold;
+ padding-left:2px;
+ padding-right:2px;
+ font-size: x-small
+}
+
label.kalenderwoche
{
font-size: medium;
@@ -209,3 +219,8 @@ treechildren::-moz-tree-row(makeItMarked)
{
background-color: #ceffb0;
}
+
+.timetablefilter-vertrag .toolbarbutton-icon {
+ width: 25px;
+ height:25px;
+}
diff --git a/soap/stip.class.php b/soap/stip.class.php
index 434444cc9..1ce7efc84 100644
--- a/soap/stip.class.php
+++ b/soap/stip.class.php
@@ -29,11 +29,15 @@ class stip extends basis_db
public $Semester;
public $Studienjahr;
public $PersKz;
+ public $Matrikelnummer;
+ public $StgKz;
public $SVNR;
public $Familienname;
public $Vorname;
public $Typ;
public $PersKz_Antwort;
+ public $Matrikelnummer_Antwort;
+ public $StgKz_Antwort;
public $SVNR_Antwort;
public $Familienname_Antwort;
public $Vorname_Antwort;
@@ -47,7 +51,6 @@ class stip extends basis_db
public $OrgFormTeilCode;
public $AntwortStatusCode;
-
/**
*
* Überprüft die Daten
@@ -82,6 +85,20 @@ class stip extends basis_db
//return false;
}
+ // kein Mussfeld
+ if($Bezieher->Matrikelnummer != null && strlen($Bezieher->Matrikelnummer) != 8)
+ {
+ $this->errormsg = "Kein gültiger Wert für Matrikelnummer";
+ return false;
+ }
+
+ // kein Mussfeld
+ if($Bezieher->StgKz != null && strlen($Bezieher->StgKz) != 4)
+ {
+ $this->errormsg = "Kein gültiger Wert für StgKz";
+ return false;
+ }
+
if(mb_strlen($Bezieher->SVNR) != 10 || !is_numeric($Bezieher->SVNR))
{
$this->errormsg = "Kein gültiger Wert für SVNR";
@@ -119,7 +136,7 @@ class stip extends basis_db
function searchPersonKz($PersonKz)
{
$qry = "SELECT
- prestudent_id, vorname, nachname, svnr, matrikelnr
+ prestudent_id, vorname, nachname, svnr, matrikelnr, student.studiengang_kz, person.matr_nr
FROM
public.tbl_student student
JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid)
@@ -134,12 +151,56 @@ class stip extends basis_db
$this->Familienname_Antwort = $row->nachname;
$this->SVNR_Antwort = $row->svnr;
$this->PersKz_Antwort = trim($row->matrikelnr);
+ $this->StgKz = str_pad($row->studiengang_kz, 4,'0', STR_PAD_LEFT);
+ $this->Matrikelnummer = $row->matr_nr;
$this->AntwortStatusCode = 1;
return $row->prestudent_id;
}
else
{
- $this->AntwortStatusCode =2;
+ $this->AntwortStatusCode = 2;
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+ /**
+ *
+ * Suche Studenten anhand PersonKz
+ * @param $PersonKz
+ */
+ function searchMatrikelnummerStg($Matrikelnummer, $StgKz)
+ {
+ $qry = "SELECT
+ prestudent_id, vorname, nachname, svnr, matrikelnr, student.studiengang_kz, person.matr_nr
+ FROM
+ public.tbl_student student
+ JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid)
+ JOIN public.tbl_person person using(person_id)
+ WHERE
+ person.matr_nr = ".$this->db_add_param($Matrikelnummer)."
+ AND student.studiengang_kz=".$this->db_add_param(ltrim($StgKz,0)).";";
+
+ if($this->db_query($qry))
+ {
+ if($row = $this->db_fetch_object())
+ {
+ $this->Vorname_Antwort = $row->vorname;
+ $this->Familienname_Antwort = $row->nachname;
+ $this->SVNR_Antwort = $row->svnr;
+ $this->PersKz_Antwort = trim($row->matrikelnr);
+ $this->StgKz = str_pad($row->studiengang_kz, 4,'0', STR_PAD_LEFT);
+ $this->Matrikelnummer = $row->matr_nr;
+ $this->AntwortStatusCode = 1;
+ return $row->prestudent_id;
+ }
+ else
+ {
+ $this->AntwortStatusCode = 2;
return false;
}
}
@@ -157,7 +218,7 @@ class stip extends basis_db
function searchSvnr($Svnr)
{
$qry = "SELECT
- prestudent_id, vorname, nachname, svnr, matrikelnr
+ prestudent_id, vorname, nachname, svnr, matrikelnr, student.studiengang_kz, person.matr_nr
FROM
public.tbl_student student
JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid)
@@ -175,12 +236,14 @@ class stip extends basis_db
$this->Familienname_Antwort = $row->nachname;
$this->SVNR_Antwort = $row->svnr;
$this->PersKz_Antwort = trim($row->matrikelnr);
+ $this->StgKz = str_pad($row->studiengang_kz, 4,'0', STR_PAD_LEFT);
+ $this->Matrikelnummer = $row->matr_nr;
$this->AntwortStatusCode = 1;
return $row->prestudent_id;
}
else
{
- $this->AntwortStatusCode =2;
+ $this->AntwortStatusCode = 2;
return false;
}
}
@@ -206,7 +269,7 @@ class stip extends basis_db
function searchVorNachname($Vorname, $Nachname)
{
$qry = "SELECT
- prestudent_id, vorname, nachname, svnr, matrikelnr
+ prestudent_id, vorname, nachname, svnr, matrikelnr, student.studiengang_kz, person.matr_nr
FROM
public.tbl_student student
JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid)
@@ -226,12 +289,14 @@ class stip extends basis_db
$this->Familienname_Antwort = $row->nachname;
$this->SVNR_Antwort = $row->svnr;
$this->PersKz_Antwort = trim($row->matrikelnr);
+ $this->StgKz = str_pad($row->studiengang_kz, 4,'0', STR_PAD_LEFT);
+ $this->Matrikelnummer = $row->matr_nr;
$this->AntwortStatusCode = 1;
return $row->prestudent_id;
}
else
{
- $this->AntwortStatusCode =2;
+ $this->AntwortStatusCode = 2;
return false;
}
}
@@ -446,7 +511,7 @@ class stip extends basis_db
public function getSemester($prestudent_id, $studiensemester_kurzbz, $bisdatum=null)
{
$sem = '';
-
+
$qrystatus="
SELECT
*
diff --git a/soap/stip.soap.php b/soap/stip.soap.php
index f6074a877..c2ae5eeea 100644
--- a/soap/stip.soap.php
+++ b/soap/stip.soap.php
@@ -96,25 +96,35 @@ function GetStipendienbezieherStip($parameters)
$StipBezieher->Semester = $BezieherStip->Semester;
$StipBezieher->Studienjahr = $BezieherStip->Studienjahr;
$StipBezieher->PersKz = $BezieherStip->PersKz;
+ $StipBezieher->Matrikelnummer = $BezieherStip->Matrikelnummer;
+ $StipBezieher->StgKz = $BezieherStip->StgKz;
$StipBezieher->SVNR = $BezieherStip->SVNR;
$StipBezieher->Familienname = $BezieherStip->Familienname;
$StipBezieher->Vorname = $BezieherStip->Vorname;
$StipBezieher->Typ = $BezieherStip->Typ;
// Studiensemester_kurzbz auslesen
- if($BezieherStip->Semester == "WS" || $BezieherStip->Semester == "ws")
+ if ($BezieherStip->Semester == "WS" || $BezieherStip->Semester == "ws")
{
$year = mb_substr($BezieherStip->Studienjahr, 0,4);
$studSemester = "WS".$year;
- }elseif ($BezieherStip->Semester == "SS" || $BezieherStip->Semester == "ss")
+ }
+ elseif ($BezieherStip->Semester == "SS" || $BezieherStip->Semester == "ss")
{
$year = mb_substr($BezieherStip->Studienjahr, 0,2).mb_substr($BezieherStip->Studienjahr, 5,7);
$studSemester = "SS".$year;
}
if(!$prestudentID = $StipBezieher->searchPersonKz($BezieherStip->PersKz))
- if(!$prestudentID = $StipBezieher->searchSvnr($BezieherStip->SVNR))
- $prestudentID = $StipBezieher->searchVorNachname($BezieherStip->Vorname, $BezieherStip->Familienname);
+ {
+ if(!$prestudentID = $StipBezieher->searchMatrikelnummerStg($BezieherStip->Matrikelnummer, $BezieherStip->StgKz))
+ {
+ if(!$prestudentID = $StipBezieher->searchSvnr($BezieherStip->SVNR))
+ {
+ $prestudentID = $StipBezieher->searchVorNachname($BezieherStip->Vorname, $BezieherStip->Familienname);
+ }
+ }
+ }
// Student wurde gefunden
if($StipBezieher->AntwortStatusCode == 1)
@@ -127,8 +137,8 @@ function GetStipendienbezieherStip($parameters)
$student = new student();
$studentUID = $student->getUID($prestudentID);
- $abschlusspruefung = new abschlusspruefung();
- $abschlusspruefung->getLastAbschlusspruefung($studentUID);
+ $abschlusspruefung = new abschlusspruefung();
+ $abschlusspruefung->getLastAbschlusspruefung($studentUID);
$student->load($studentUID);
$studiengang_kz = $student->studiengang_kz;
@@ -145,33 +155,33 @@ function GetStipendienbezieherStip($parameters)
if(!$prestudentStatus->getLastStatus($prestudentID,$studSemester))
$StipBezieher->Inskribiert = 'n';
else
- {
- // wenn nur Interessent letzer Status ist -> nicht inskribiert
- if($prestudentStatus->status_kurzbz == 'Interessent')
- $StipBezieher->Inskribiert = 'n';
- else
- $StipBezieher->Inskribiert = 'j';
- }
+ {
+ // wenn nur Interessent letzer Status ist -> nicht inskribiert
+ if($prestudentStatus->status_kurzbz == 'Interessent')
+ $StipBezieher->Inskribiert = 'n';
+ else
+ $StipBezieher->Inskribiert = 'j';
+ }
if($BezieherStip->Typ == "as" || $BezieherStip->Typ == "AS")
{
$StipBezieher->getOrgFormTeilCode($studentUID, $studSemester, $prestudentID);
$StipBezieher->Studienbeitrag = $studGebuehr;
- // Wenn letzter Status von Semester Interessent ist -> Semester = null
- if($prestudentStatus->status_kurzbz != 'Interessent')
- $StipBezieher->Ausbildungssemester = $StipBezieher->getSemester($prestudentID, $studSemester);
+ // Wenn letzter Status von Semester Interessent ist -> Semester = null
+ if($prestudentStatus->status_kurzbz != 'Interessent')
+ $StipBezieher->Ausbildungssemester = $StipBezieher->getSemester($prestudentID, $studSemester);
else
- $StipBezieher->Ausbildungssemester = null;
+ $StipBezieher->Ausbildungssemester = null;
- $StipBezieher->StudStatusCode = $StipBezieher->getStudStatusCode($prestudentID, $studSemester);
+ $StipBezieher->StudStatusCode = $StipBezieher->getStudStatusCode($prestudentID, $studSemester);
- // Ausgeschieden ohne Abschluss
+ // Ausgeschieden ohne Abschluss
if($StipBezieher->StudStatusCode==4)
$StipBezieher->BeendigungsDatum = $datum_obj->formatDatum($prestudent->datum,'dmY');
else if($StipBezieher->StudStatusCode==3) // Absolvent -> letzte Prüfung nehmen
- $StipBezieher->BeendigungsDatum = $datum_obj->formatDatum($abschlusspruefung->datum,'dmY');
- else
+ $StipBezieher->BeendigungsDatum = $datum_obj->formatDatum($abschlusspruefung->datum,'dmY');
+ else
$StipBezieher->BeendigungsDatum = null;
$StipBezieher->Erfolg = $StipBezieher->getErfolg($prestudentID, $studSemester);
@@ -193,6 +203,8 @@ function GetStipendienbezieherStip($parameters)
{
// Student wurde nicht gefunden
$StipBezieher->PersKz_Antwort = null;
+ $StipBezieher->Matrikelnummer_Antwort = null;
+ $StipBezieher->StgKz_Antwort = null;
$StipBezieher->SVNR_Antwort = null;
$StipBezieher->Familienname_Antwort = null;
$StipBezieher->Vorname_Antwort = null;
diff --git a/soap/stip.wsdl.php b/soap/stip.wsdl.php
index c24caed69..fb3bcf264 100644
--- a/soap/stip.wsdl.php
+++ b/soap/stip.wsdl.php
@@ -1,174 +1,178 @@
-";
?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- "/>
-
+
+ "/>
+
diff --git a/soap/stip_client.php b/soap/stip_client.php
index db98c400b..bc735bfb3 100644
--- a/soap/stip_client.php
+++ b/soap/stip_client.php
@@ -30,11 +30,11 @@ $db = new basis_db();
-
-
-
-
-
+
+
+
+
+
STIP-Client
@@ -43,57 +43,65 @@ $db = new basis_db();
Error Tester