diff --git a/application/controllers/crm/Statusgrund.php b/application/controllers/crm/Statusgrund.php index 344ac06dc..3c7e43736 100644 --- a/application/controllers/crm/Statusgrund.php +++ b/application/controllers/crm/Statusgrund.php @@ -129,6 +129,7 @@ class Statusgrund extends Auth_Controller $aktiv = $this->input->post("aktiv") != null && $this->input->post("aktiv") == "on" ? true : false; $bezeichnung_mehrsprachig = $this->input->post("bezeichnung_mehrsprachig"); $beschreibung = $this->input->post("beschreibung"); + $statusgrund_kurzbz = $this->input->post("statusgrund_kurzbz"); for ($i = 0; $i < count($bezeichnung_mehrsprachig); $i++) { @@ -177,7 +178,8 @@ class Statusgrund extends Auth_Controller $data = array( "aktiv" => $aktiv, "bezeichnung_mehrsprachig" => $bezeichnung_mehrsprachig, - "beschreibung" => $beschreibung + "beschreibung" => $beschreibung, + "statusgrund_kurzbz" => $statusgrund_kurzbz ); $statusgrund = $this->StatusgrundModel->update($statusgrund_id, $data); @@ -196,6 +198,7 @@ class Statusgrund extends Auth_Controller $bezeichnung_mehrsprachig = $this->input->post("bezeichnung_mehrsprachig"); $beschreibung = $this->input->post("beschreibung"); $status_kurzbz = $this->input->post("status_kurzbz"); + $statusgrund_kurzbz = $this->input->post("statusgrund_kurzbz"); for ($i = 0; $i < count($bezeichnung_mehrsprachig); $i++) { @@ -245,7 +248,8 @@ class Statusgrund extends Auth_Controller "status_kurzbz" => $status_kurzbz, "aktiv" => $aktiv, "bezeichnung_mehrsprachig" => $bezeichnung_mehrsprachig, - "beschreibung" => $beschreibung + "beschreibung" => $beschreibung, + "statusgrund_kurzbz" => $statusgrund_kurzbz ); $statusgrund = $this->StatusgrundModel->insert($data); diff --git a/application/controllers/jobs/AnrechnungJob.php b/application/controllers/jobs/AnrechnungJob.php index 09fe9a8af..f92410dbc 100644 --- a/application/controllers/jobs/AnrechnungJob.php +++ b/application/controllers/jobs/AnrechnungJob.php @@ -16,7 +16,7 @@ if (!defined('BASEPATH')) exit('No direct script access allowed'); class AnrechnungJob extends JOB_Controller { const APPROVE_ANRECHNUNG_URI = '/lehre/anrechnung/ApproveAnrechnungUebersicht'; - + const ANRECHNUNGSTATUS_APPROVED = 'approved'; const ANRECHNUNGSTATUS_REJECTED = 'rejected'; const ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL = 'AnrechnungNotizSTGL'; @@ -30,7 +30,7 @@ class AnrechnungJob extends JOB_Controller $this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel'); $this->load->model('education/Anrechnung_model', 'AnrechnungModel'); $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); - + $this->load->helper('url'); $this->load->helper('hlp_sancho_helper'); } @@ -94,7 +94,7 @@ class AnrechnungJob extends JOB_Controller } $this->logInfo('End Anrechnung Grades Job', array('Number of Grades added'=>$cnt)); } - + /** * Deletes Zeugnisnoten 'angerechnet', when Anrechnung is rejected afterwards. * E.g., when STGL first accepts, then withdraws and finally rejects the approvement. @@ -102,7 +102,7 @@ class AnrechnungJob extends JOB_Controller public function deleteAnrechnungGrades() { $this->logInfo('Start AnrechnungJob to delete Grades'); - + // Get all Zeungisnoten, // WHERE note is angerechnet // AND Anrechnung was rejected AFTER the Zeugnisnote was created @@ -127,15 +127,15 @@ class AnrechnungJob extends JOB_Controller AND status.status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_REJECTED). ' ORDER BY status.anrechnung_id, status.insertamum DESC '; - + $db = new DB_Model(); $result = $db->execReadOnlyQuery($qry); $cnt = 0; - + if (hasData($result)) { $this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel'); - + foreach (getData($result) as $row) { // Delete Zeugnisnote @@ -144,20 +144,20 @@ class AnrechnungJob extends JOB_Controller 'student_uid' => $row->student_uid, 'studiensemester_kurzbz' => $row->studiensemester_kurzbz )); - + // Count up $cnt++; } } - + $this->logInfo('End AnrechnungJob to delete Grades', array('Number of Grades deleted: ' => $cnt)); } - + // Send Sancho mail to STGL with yesterdays new Anrechnungen public function sendMailToSTGL() { $this->logInfo('Start AnrechnungJob to send emails to STGL about yesterdays new Anrechnungen.'); - + // Get all yesterdays Anrechnungen, that did not process further than first status // (If Anrechnung is new, but STGL already started the process yesterday, // he does not need to be informed about this new Anrechnung anymore) @@ -167,38 +167,38 @@ class AnrechnungJob extends JOB_Controller $this->AnrechnungModel->addJoin('public.tbl_benutzer benutzer', 'ON (benutzer.uid = student.student_uid)'); $this->AnrechnungModel->addJoin('public.tbl_person person', 'person_id'); $this->AnrechnungModel->addOrder('lv.studiengang_kz, lv.bezeichnung'); - + $result = $this->AnrechnungModel->loadWhere( '(lehre.tbl_anrechnung.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE AND 1 = (SELECT COUNT(*) FROM lehre.tbl_anrechnung_anrechnungstatus status WHERE status.anrechnung_id = tbl_anrechnung.anrechnung_id)' ); - + // Exit if there are no Anrechnungen if (!$anrechnungen = getData($result)) { $this->logInfo('ABORTED: Sending emails to STGL about yesterdays new Anrechnungen aborted - No new Anrechnungen found.'); exit; } - + $unique_studiengang_kz_arr = array_unique(array_column($anrechnungen, 'studiengang_kz')); - + foreach ($unique_studiengang_kz_arr as $studiengang_kz) { // Get STG bezeichnung $this->StudiengangModel->addSelect('UPPER( typ || kurzbz ) AS "stg_bezeichnung"'); $studiengang_bezeichnung = $this->StudiengangModel->load($studiengang_kz)->retval[0]->stg_bezeichnung; - + // Get STGL mail address list ($to, $vorname) = self::_getSTGLMailAddress($studiengang_kz); - + // Get HTML table with new Anrechnungen of that STG plus amount of them list ($anrechnungen_amount, $anrechnungen_table) = self::_getSTGLMailDataTable($studiengang_kz, $anrechnungen); - + // Link to Antrag genehmigen dashboard $url = CIS_ROOT. 'cis/index.php?menu='. CIS_ROOT. 'cis/menu.php?content_id=&content='. CIS_ROOT. index_page(). self::APPROVE_ANRECHNUNG_URI; - + // Prepare mail content $body_fields = array( 'vorname' => $vorname, @@ -207,7 +207,7 @@ class AnrechnungJob extends JOB_Controller 'datentabelle' => $anrechnungen_table, 'link' => anchor($url, 'Anrechnungsanträge Übersicht') ); - + // Send mail sendSanchoMail( 'AnrechnungAntragStellen', @@ -216,17 +216,17 @@ class AnrechnungJob extends JOB_Controller 'Anerkennung nachgewiesener Kenntnisse: Neuer Antrag wurde gestellt' ); } - + $this->logInfo('SUCCEDED: Sending emails to STGL about yesterdays new Anrechnungen succeded.'); } - + /** * Send Sancho mail to students, whose Anrechnungen were approved 24 hours ago. */ public function sendMailApproved(){ - + $this->logInfo('Start AnrechnungJob to send emails to students, whose Anrechnungen were approved.'); - + // Get all yesterdays approvements $this->AnrechnungModel->addSelect('student.student_uid, vorname, nachname, geschlecht, lv.bezeichnung'); $this->AnrechnungModel->addJoin('lehre.tbl_anrechnung_anrechnungstatus status', 'anrechnung_id'); @@ -234,35 +234,35 @@ class AnrechnungJob extends JOB_Controller $this->AnrechnungModel->addJoin('public.tbl_student student', 'prestudent_id'); $this->AnrechnungModel->addJoin('public.tbl_benutzer benutzer', 'ON (benutzer.uid = student.student_uid)'); $this->AnrechnungModel->addJoin('public.tbl_person person', 'person_id'); - + $result = $this->AnrechnungModel->loadWhere( '(status.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE AND status.status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_APPROVED) ); - + // Exit if there are no approved Anrechnungen if (!hasData($result)) { $this->logInfo('ABORTED sending emails to students, whose Anrechnungen were approved. No new approvements found.'); exit; } - + // Loop through students foreach ($result->retval as $student) { $to = $student->student_uid. '@'. DOMAIN; - + $anrede = $student->geschlecht == 'w' ? 'Sehr geehrte Frau ' : 'Sehr geehrter Herr '; - + $text = 'Ihrem Antrag auf Anerkennung nachgewiesener Kenntnisse der Lehrveranstaltung "'. $student->bezeichnung. '" wurde stattgegeben.'; - + // Prepare mail content $body_fields = array( 'anrede_name' => $anrede. $student->vorname. ' '. $student->nachname, 'text' => $text ); - + // Send mail sendSanchoMail( 'AnrechnungGenehmigen', @@ -272,33 +272,35 @@ class AnrechnungJob extends JOB_Controller ); } } - + /** * Send Sancho mail to students, whose Anrechnungen were rejected 24 hours ago. */ public function sendMailRejected(){ - + $this->logInfo('Start AnrechnungJob to send emails to students, whose Anrechnungen were rejected.'); - - // Get all yesterdays rejections - $this->AnrechnungModel->addSelect('student.student_uid, vorname, nachname, geschlecht, lv.bezeichnung, notiz.text'); - $this->AnrechnungModel->addJoin('lehre.tbl_anrechnung_anrechnungstatus status', 'anrechnung_id'); - $this->AnrechnungModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id'); - $this->AnrechnungModel->addJoin('public.tbl_student student', 'prestudent_id'); - $this->AnrechnungModel->addJoin('public.tbl_benutzer benutzer', 'ON (benutzer.uid = student.student_uid)'); - $this->AnrechnungModel->addJoin('public.tbl_person person', 'person_id'); - $this->AnrechnungModel->addJoin('public.tbl_notizzuordnung', 'anrechnung_id'); - $this->AnrechnungModel->addJoin('public.tbl_notiz notiz', 'notiz_id'); - - $this->AnrechnungModel->addOrder('notiz.insertamum', 'DESC'); - $this->AnrechnungModel->addLimit(1); - - - $result = $this->AnrechnungModel->loadWhere( - '(status.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE AND - status.status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_REJECTED). ' AND - notiz.titel = '. $this->db->escape(self::ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL) - ); + + $qry = ' + SELECT + student.student_uid, vorname, nachname, geschlecht, lv.bezeichnung, + (SELECT text FROM public.tbl_notizzuordnung JOIN public.tbl_notiz USING(notiz_id) + WHERE tbl_notizzuordnung.anrechnung_id=tbl_anrechnung.anrechnung_id + AND tbl_notiz.titel='. $this->db->escape(self::ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL).' + ORDER BY tbl_notiz.insertamum DESC LIMIT 1) as text + FROM lehre.tbl_anrechnung + JOIN lehre.tbl_lehrveranstaltung lv USING(lehrveranstaltung_id) + JOIN public.tbl_student student USING(prestudent_id) + JOIN public.tbl_benutzer benutzer ON (benutzer.uid = student.student_uid) + JOIN public.tbl_person person USING(person_id) + + WHERE EXISTS(SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatus status WHERE + anrechnung_id=tbl_anrechnung.anrechnung_id AND + (status.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE AND + status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_REJECTED). ') + '; + + $db = new DB_Model(); + $result = $db->execReadOnlyQuery($qry); // Exit if there are no rejected Anrechnungen if (!hasData($result)) @@ -306,26 +308,26 @@ class AnrechnungJob extends JOB_Controller $this->logInfo('ABORTED sending emails to students, whose Anrechnungen were rejected. No new rejectments found.'); exit; } - + // Loop through students foreach ($result->retval as $student) { $to = $student->student_uid. '@'. DOMAIN; - + $anrede = $student->geschlecht == 'w' ? 'Sehr geehrte Frau ' : 'Sehr geehrter Herr '; - + $text = <<bezeichnung" leider nicht anrechnen, weil die Gleichwertigkeit nicht festgestellt werden konnte.

Begründung: $student->text html; - + // Prepare mail content $body_fields = array( 'anrede_name' => $anrede. $student->vorname. ' '. $student->nachname, 'text' => $text ); - + // Send mail sendSanchoMail( 'AnrechnungGenehmigen', @@ -334,14 +336,14 @@ html; 'Anerkennung nachgewiesener Kenntnisse: Ihr Antrag ist abgeschlossen' ); } - + } - + // Get STGL mail address private function _getSTGLMailAddress($studiengang_kz) { $result = $this->StudiengangModel->getLeitung($studiengang_kz); - + // Get STGL mail address if (hasData($result)) { @@ -354,7 +356,7 @@ html; else { $result = $this->StudiengangModel->load($studiengang_kz); - + if (hasData($result)) { return array( @@ -364,7 +366,7 @@ html; } } } - + // Build HTML table with yesterdays new Anrechnungen of the given STG private function _getSTGLMailDataTable($studiengang_kz, $anrechnungen) { @@ -377,7 +379,7 @@ html; function ($anrechnung) use (&$studiengang_kz) { return $anrechnung->studiengang_kz == $studiengang_kz; }); - + // Amount of Anrechnungen $amount = count($anrechnungen); @@ -386,7 +388,7 @@ html; '; - + foreach ($anrechnungen as $anrechnung) { // Head line for each LV bezeichnung @@ -394,18 +396,18 @@ html; { $html .= ''; } - + $lv_bezeichnung = $anrechnung->bezeichnung; - + // Row for each Anrechnung / student $html .= ''; } - + $html .= '
' . $anrechnung->bezeichnung . '
'. $anrechnung->vorname. ' '. $anrechnung->nachname. '
'; - + return array($amount, $html); } } diff --git a/application/controllers/widgets/Filters.php b/application/controllers/widgets/Filters.php index 748272f09..e87b2d331 100644 --- a/application/controllers/widgets/Filters.php +++ b/application/controllers/widgets/Filters.php @@ -211,7 +211,7 @@ class Filters extends FHC_Controller public function setNavigationMenu() { // Generates the filters structure array - $filterMenu = $this->filterwidgetlib->generateFilterMenu($this->input->get(FilterWidgetLib::NAVIGATION_PAGE)); + $this->filterwidgetlib->generateFilterMenu($this->input->get(FilterWidgetLib::NAVIGATION_PAGE)); $this->outputJsonSuccess('Success'); } @@ -271,3 +271,4 @@ class Filters extends FHC_Controller } } } + diff --git a/application/libraries/FilterWidgetLib.php b/application/libraries/FilterWidgetLib.php index 0a4526680..cdf0cac3c 100644 --- a/application/libraries/FilterWidgetLib.php +++ b/application/libraries/FilterWidgetLib.php @@ -266,6 +266,7 @@ class FilterWidgetLib $whereParameters = array( 'app' => $app, 'dataset_name' => $datasetName, + 'person_id' => null, 'default_filter' => true ); @@ -738,8 +739,10 @@ class FilterWidgetLib $this->_ci->load->model('system/Filters_model', 'FiltersModel'); // Loads all the filters related to this page (same dataset_name and same app name) - $filters = $this->_ci->FiltersModel->getFiltersByAppDatasetName( - $session[self::APP], $session[self::DATASET_NAME] + $filters = $this->_ci->FiltersModel->getFiltersByAppDatasetNamePersonId( + $session[self::APP], + $session[self::DATASET_NAME], + getAuthPersonId() ); // If filters were loaded @@ -813,9 +816,6 @@ class FilterWidgetLib } } - //------------------------------------------------------------------------------------------------------------------ - // Private methods - /** * Return an unique string that identify this filter widget * NOTE: The default value is the URI where the FilterWidget is called @@ -857,6 +857,9 @@ class FilterWidgetLib $this->_filterUniqueId = $filterUniqueId; } + //------------------------------------------------------------------------------------------------------------------ + // Private methods + /** * Generates a condition for a SQL where clause using the given applied filter definition. * By default an empty string is returned. @@ -972,3 +975,4 @@ class FilterWidgetLib return $pos; } } + diff --git a/application/models/crm/Statusgrund_model.php b/application/models/crm/Statusgrund_model.php index 7ab17a45b..d488e12d1 100644 --- a/application/models/crm/Statusgrund_model.php +++ b/application/models/crm/Statusgrund_model.php @@ -12,7 +12,7 @@ class Statusgrund_model extends DB_Model $this->pk = "statusgrund_id"; } - public function getStatus($status_kurzbz = null, $aktiv = null) + public function getStatus($status_kurzbz = null, $aktiv = null, $statusgrund_kurzbz = null) { $this->addOrder('bezeichnung_mehrsprachig'); $where = array(); @@ -20,6 +20,8 @@ class Statusgrund_model extends DB_Model $where['status_kurzbz'] = $status_kurzbz; if (!is_null($aktiv)) $where['aktiv'] = $aktiv; + if (!is_null($statusgrund_kurzbz)) + $where['statusgrund_kurzbz'] = $statusgrund_kurzbz; $status = $this->loadWhere($where); diff --git a/application/models/person/Notiz_model.php b/application/models/person/Notiz_model.php index fd08cc384..bfd8aa258 100644 --- a/application/models/person/Notiz_model.php +++ b/application/models/person/Notiz_model.php @@ -152,6 +152,7 @@ class Notiz_model extends DB_Model */ public function getNotizByTitel($person_id, $titel) { + $this->addSelect('public.tbl_notiz.insertamum as insertnotiz, *'); // Join with the table public.tbl_notizzuordnung using notiz_id $this->addJoin('public.tbl_notizzuordnung', 'notiz_id'); $this->addJoin('public.tbl_prestudent', 'prestudent_id', 'LEFT'); diff --git a/application/models/system/Filters_model.php b/application/models/system/Filters_model.php index 20394b36d..581be65e1 100644 --- a/application/models/system/Filters_model.php +++ b/application/models/system/Filters_model.php @@ -57,19 +57,34 @@ class Filters_model extends DB_Model /** * Loads all filters by their app and dataset_name */ - public function getFiltersByAppDatasetName($app, $dataset_name) + public function getFiltersByAppDatasetNamePersonId($app, $dataset_name, $person_id) { - $this->resetQuery(); // reset any previous built query + $query = ' + ( + -- Global filters + SELECT gs.filter_id, + gs.person_id, + gs.description + FROM system.tbl_filters gs + WHERE gs.app = ? + AND gs.dataset_name = ? + AND gs.person_id IS NULL + ORDER BY gs.person_id DESC, gs.sort ASC + ) + UNION ALL + ( + -- Personal filters + SELECT ps.filter_id, + ps.person_id, + ps.description + FROM system.tbl_filters ps + WHERE ps.app = ? + AND ps.dataset_name = ? + AND ps.person_id = ? + ORDER BY ps.person_id DESC, ps.sort ASC + )'; - $this->addSelect('filter_id, person_id, description'); - $this->addOrder('person_id', 'DESC'); // sort descending on column person_id - $this->addOrder('sort', 'ASC'); // sort on column sort - - $filterParametersArray = array( - 'app' => $app, - 'dataset_name' => $dataset_name - ); - - return $this->loadWhere($filterParametersArray); + return $this->execQuery($query, array($app, $dataset_name, $app, $dataset_name, $person_id)); } } + diff --git a/application/views/crm/statusGrundList.php b/application/views/crm/statusGrundList.php index e128856d3..ab8f096bb 100644 --- a/application/views/crm/statusGrundList.php +++ b/application/views/crm/statusGrundList.php @@ -15,6 +15,7 @@ Aktiv Bezeichnung mehrsprachig Beschreibung + Statusgrund @@ -25,6 +26,7 @@ aktiv); ?> bezeichnung_mehrsprachig); ?> beschreibung); ?> + statusgrund_kurzbz); ?> Edit @@ -33,4 +35,4 @@ - \ No newline at end of file + diff --git a/application/views/crm/statusgrundEdit.php b/application/views/crm/statusgrundEdit.php index 9fa91b6d5..fc001d92a 100644 --- a/application/views/crm/statusgrundEdit.php +++ b/application/views/crm/statusgrundEdit.php @@ -81,6 +81,21 @@   + + + StatusGrund: + + + + +
+ + + + +   + + diff --git a/application/views/crm/statusgrundNew.php b/application/views/crm/statusgrundNew.php index ffcd18429..1c3a5f9e0 100644 --- a/application/views/crm/statusgrundNew.php +++ b/application/views/crm/statusgrundNew.php @@ -51,6 +51,16 @@   + + + StatusGrund: + + + + +
+ + diff --git a/application/views/system/infocenter/anmerkungenZurBewerbung.php b/application/views/system/infocenter/anmerkungenZurBewerbung.php index 508f041de..ca012ff3e 100644 --- a/application/views/system/infocenter/anmerkungenZurBewerbung.php +++ b/application/views/system/infocenter/anmerkungenZurBewerbung.php @@ -12,7 +12,7 @@ - insertamum), 'd.m.Y H:i:s') ?> + insertnotiz), 'd.m.Y H:i:s') ?> kurzbzlang)) ?: print_r('(' . nl2br($notiz->kurzbzlang) . ') - ') ?> diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index 4dd897f7f..d0e0a7126 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -184,6 +184,32 @@ ) LIMIT 1 ) AS "StgNichtAbgeschickt", + ( + SELECT COUNT(*) + FROM public.tbl_prestudentstatus pss + JOIN public.tbl_prestudent ps USING(prestudent_id) + JOIN public.tbl_studiengang sg USING(studiengang_kz) + JOIN lehre.tbl_studienplan sp USING(studienplan_id) + WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.' + AND pss.bewerbung_abgeschicktamum IS NULL + AND pss.bestaetigtam IS NULL + AND ps.person_id = p.person_id + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) + AND pss.studiensemester_kurzbz = '.$STUDIENSEMESTER.' + + AND NOT EXISTS ( + SELECT 1 + FROM tbl_prestudentstatus spss + WHERE spss.prestudent_id = pss.prestudent_id + AND spss.status_kurzbz = '.$REJECTED_STATUS.' + AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > + (SELECT start FROM public.tbl_studiensemester sss WHERE studiensemester_kurzbz = '.$STUDIENSEMESTER.')) + ) + LIMIT 1 + ) AS "AnzahlStgNichtAbgeschickt", ( SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \') FROM public.tbl_prestudentstatus pss @@ -322,6 +348,7 @@ ucfirst($this->p->t('global', 'abgeschickt')).' ('.$this->p->t('global', 'anzahl').')', ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'gesendet').')', ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'nichtGesendet').')', + ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'anzahlNichtGesendet').')', ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'aktiv').')', 'ZGV Nation BA', 'ZGV Nation MA', diff --git a/application/views/system/infocenter/zgvpruefungen.php b/application/views/system/infocenter/zgvpruefungen.php index 05c94c384..a2b2f8da8 100644 --- a/application/views/system/infocenter/zgvpruefungen.php +++ b/application/views/system/infocenter/zgvpruefungen.php @@ -414,7 +414,7 @@ selected="selected">p->t('ui', 'freigabeart')) . '...' ?> - + diff --git a/cis/private/lehre/anwesenheitsliste.pdf.php b/cis/private/lehre/anwesenheitsliste.pdf.php index eef40ff3f..01ec1c93f 100644 --- a/cis/private/lehre/anwesenheitsliste.pdf.php +++ b/cis/private/lehre/anwesenheitsliste.pdf.php @@ -166,13 +166,14 @@ $qry = 'SELECT tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student, - tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang + tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid) LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz) LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz) + LEFT JOIN lehre.tbl_note USING (note) LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz) WHERE @@ -213,8 +214,8 @@ if($result = $db->db_query($qry)) if($row->bisio_id!='' && $row->status!='Incoming' && ($row->bis > $stsemdatumvon || $row->bis=='') && $row->von < $stsemdatumbis) //Outgoing $zusatz.='(o)(ab '.$datum->formatDatum($row->von,'d.m.Y').')'; - if($row->note==6) //angerechnet - $zusatz.='(ar)'; + if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen + $zusatz.= '('. $row->anmerkung. ')'; if($row->mitarbeiter_uid!='') //mitarbeiter $zusatz.='(ma)'; diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php index 9865f2719..62811ada4 100644 --- a/content/student/studentenoverlay.xul.php +++ b/content/student/studentenoverlay.xul.php @@ -126,6 +126,12 @@ else echo ' '; + + if ($id == 'student-toolbar-student') + echo ''; + if ($id == 'interessent-toolbar-zustudent') + echo ''; + foreach($gruende[$status_kurzbz] as $row) { $commandWithID = str_replace('STATUSGRUNDID',$row['statusgrund_id'],$command); @@ -204,6 +210,21 @@ else + + + getAll(true); + + foreach($statusgrund->result as $row) + { + ?> + + + + rdf/student.rdf.php?prestudent_id='+prestudent_id+'&studiensemester_kurzbz='+stsem+'&'+gettimestamp(); + + var url = buildStudentRDFURI({ + 'prestudent_id': prestudent_id, + 'studiensemester_kurzbz': stsem + }); var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. getService(Components.interfaces.nsIRDFService); @@ -2564,11 +2568,48 @@ function StudentKontoFilter() kontotree.builder.addListener(StudentKontoTreeListener); } +// **** +// * Generiert eine student.rdf URI +// **** +function buildStudentRDFURI(queryparams, tree) +{ + var baseurl = "rdf/student.rdf.php"; + if ( typeof tree !== "undefined" ) + { + var col = tree.columns ? tree.columns["tree-verband-col-orgform"] : "tree-verband-col-orgform"; + queryparams.orgform = tree.view.getCellText(tree.currentIndex,col); + } + return _buildURI(baseurl, queryparams); +} + +// **** +// * Generiert aus einer BasisURL und einem Dictionary von Parametern eine URI +// **** +function _buildURI(baseurl, queryparams) +{ + var str = []; + var url = baseurl; + for (var p in queryparams) + { + if ( queryparams.hasOwnProperty(p) && queryparams[p].length > 0 ) + { + str.push(encodeURIComponent(p) + "=" + encodeURIComponent(queryparams[p])); + } + } + var querystring = str.join("&"); + if ( querystring.length > 0 ) + { + url = url + '?' + querystring + '&' + gettimestamp(); + } + return url; +} + // **** // * Setzt im Studententree einen vordefinierten Filter // **** function StudentKontoFilterStudenten(filter) { + //alert(filter); netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var tree=document.getElementById('tree-verband'); @@ -2591,12 +2632,26 @@ function StudentKontoFilterStudenten(filter) var gruppe = getTreeCellText(tree, 'gruppe', tree.currentIndex); var typ = getTreeCellText(tree, 'typ', tree.currentIndex); var stsem = getTreeCellText(tree, 'stsem', tree.currentIndex); - + if(stsem=='') stsem = getStudiensemester(); if(typ=='') typ='student'; - url = "rdf/student.rdf.php?studiengang_kz="+stg_kz+"&semester="+sem+"&verband="+ver+"&gruppe="+grp+"&gruppe_kurzbz="+gruppe+"&studiensemester_kurzbz="+stsem+"&typ="+typ+"&filter2="+filter+"&buchungstyp="+buchungstyp+"&"+gettimestamp(); + + var url = buildStudentRDFURI({ + 'studiengang_kz': stg_kz, + 'semester': sem, + 'verband': ver, + 'gruppe': grp, + 'gruppe_kurzbz': gruppe, + 'studiensemester_kurzbz': stsem, + 'typ': typ, + 'filter2': filter, + 'buchungstyp': buchungstyp + }, tree); + + console.log(url); + var treeStudent=document.getElementById('student-tree'); try @@ -2614,6 +2669,7 @@ function StudentKontoFilterStudenten(filter) treeStudent.database.RemoveDataSource(oldDatasources.getNext()); } + //alert(url); var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); StudentTreeDatasource = rdfService.GetDataSource(url); StudentTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); @@ -2655,7 +2711,18 @@ function StudentKontoFilterBuchungstyp() stsem = getStudiensemester(); if(typ=='') typ='student'; - url = "rdf/student.rdf.php?studiengang_kz="+stg_kz+"&semester="+sem+"&verband="+ver+"&gruppe="+grp+"&gruppe_kurzbz="+gruppe+"&studiensemester_kurzbz="+stsem+"&typ="+typ+"&filter2=buchungstyp;"+filter+"&"+gettimestamp(); + + var url = buildStudentRDFURI({ + 'studiengang_kz': stg_kz, + 'semester': sem, + 'verband': ver, + 'gruppe': grp, + 'gruppe_kurzbz': gruppe, + 'studiensemester_kurzbz': stsem, + 'typ': typ, + 'filter2': 'buchungstyp;' + filter + }, tree); + var treeStudent=document.getElementById('student-tree'); try @@ -5437,8 +5504,10 @@ function StudentSuche() document.getElementById('tree-verband').view.selection.clearSelection(); //Datasource setzten und Felder deaktivieren - url = "rdf/student.rdf.php?filter="+encodeURIComponent(filter)+"&"+gettimestamp(); - + var url = buildStudentRDFURI({ + 'filter': filter + }); + var treeStudent=document.getElementById('student-tree'); try diff --git a/content/student/studentrolledialog.js.php b/content/student/studentrolledialog.js.php index ef0291fe4..60c247781 100644 --- a/content/student/studentrolledialog.js.php +++ b/content/student/studentrolledialog.js.php @@ -1,155 +1,159 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -require_once('../../config/vilesci.config.inc.php'); - -?> -var StudentRolleStudiensemester_old; -var StudentRolleAusbildungssemester_old; -var StudentRolleStatusgrundDatasource; - -// **** -// * Laedt die Rolle -// **** -function StudentRolleInit(prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester) -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - if(status_kurzbz!='') - { - document.getElementById('student-rolle-grid-row-textbox').hidden=false; - document.getElementById('student-rolle-grid-row-menulist').hidden=true; - - StudentRolleStudiensemester_old=studiensemester_kurzbz; - StudentRolleAusbildungssemester_old=ausbildungssemester; - - //Daten holen - var url = 'rdf/prestudentrolle.rdf.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester+'&'+gettimestamp(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. - getService(Components.interfaces.nsIRDFService); - - var dsource = rdfService.GetDataSourceBlocking(url); - - var subject = rdfService.GetResource("http://www.technikum-wien.at/prestudentrolle/" + prestudent_id+"/"+status_kurzbz+"/"+studiensemester_kurzbz+"/"+ausbildungssemester); - - var predicateNS = "http://www.technikum-wien.at/prestudentrolle/rdf"; - - //RDF parsen - var datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#datum" )); - var bestaetigt_datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bestaetigt_am" )); - var bewerbung_abgeschicktamum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bewerbung_abgeschicktamum" )); - var orgform_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#orgform_kurzbz" )); - var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" )); - var anmerkung= getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" )); - var statusgrund_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#statusgrund_id" )); - var rt_stufe = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rt_stufe" )); - var neu = false; - StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id); - } - else - { - StudentRolleStudiensemester_old=''; - StudentRolleAusbildungssemester_old=''; - - document.getElementById('student-rolle-grid-row-textbox').hidden=true; - document.getElementById('student-rolle-grid-row-menulist').hidden=false; - - //Defaultwerte bei Neuem Datensatz - var status_kurzbz = 'Interessent'; - var studiensemester_kurzbz=window.opener.getStudiensemester(); - var ausbildungssemester='1'; - var datum = ''; - var bestaetigt_datum = ''; - var bewerbung_abgeschicktamum = ''; - var orgform_kurzbz = ''; - var studienplan_id = ''; - var anmerkung = ''; - var statusgrund_id = ''; - var rt_stufe = ''; - StudentRolleLoadStatusgrund(status_kurzbz); - } - - document.getElementById('student-rolle-textbox-prestudent_id').value=prestudent_id; - document.getElementById('student-rolle-textbox-status_kurzbz').value=status_kurzbz; - document.getElementById('student-rolle-menulist-studiensemester').value=studiensemester_kurzbz; - document.getElementById('student-rolle-menulist-ausbildungssemester').value=ausbildungssemester; - document.getElementById('student-rolle-datum-datum').value=datum; - document.getElementById('student-rolle-datum-bestaetigt_datum').value=bestaetigt_datum; - document.getElementById('student-rolle-datum-bewerbung_abgeschicktamum').value=bewerbung_abgeschicktamum; - document.getElementById('student-rolle-menulist-orgform_kurzbz').value=orgform_kurzbz; - MenulistSelectItemOnValue('student-rolle-menulist-studienplan', studienplan_id); - document.getElementById('student-rolle-textbox-anmerkung').value=anmerkung; - MenulistSelectItemOnValue('student-rolle-menulist-statusgrund', statusgrund_id); - MenulistSelectItemOnValue('student-rolle-menulist-stufe', rt_stufe); -} - -// **** -// * Speichern der Rolle -// * Hierzu wird eine Funktion vom Aufrufenden Fenster gestartet weil -// * es dann nicht zu Problemen mit den Zugriffen auf die anderen Fkt -// * kommt. -// **** -function StudentRolleSpeichern() -{ - if(window.opener.StudentRolleSpeichern(document, StudentRolleStudiensemester_old, StudentRolleAusbildungssemester_old)) - window.close(); -} - -function StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id) -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - var menulistgrund = document.getElementById('student-rolle-menulist-statusgrund'); - url='rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&include_id='+statusgrund_id+'&ts'+gettimestamp(); - - try - { - StudentRolleStatusgrundDatasource.removeXMLSinkObserver(StudentDetailRolleTreeSinkObserver); - } - catch(e) - {} - - //Alte DS entfernen - var oldDatasources = menulistgrund.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - menulistgrund.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - menulistgrund.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - StudentRolleStatusgrundDatasource = rdfService.GetDataSourceBlocking(url); - StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); - menulistgrund.database.AddDataSource(StudentRolleStatusgrundDatasource); - menulistgrund.builder.rebuild(); -} - -/** - * Wenn das Dropdown fuer den Status geaendert wird, dann - * werden die Statusgruende zu diesem Status geladen - */ -function StudentRolleChangeStatus() -{ - var status = document.getElementById('student-rolle-menulist-status_kurzbz').value; - StudentRolleLoadStatusgrund(status); -} \ No newline at end of file +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +require_once('../../config/vilesci.config.inc.php'); + +?> +var StudentRolleStudiensemester_old; +var StudentRolleAusbildungssemester_old; +var StudentRolleStatusgrundDatasource; + +// **** +// * Laedt die Rolle +// **** +function StudentRolleInit(prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + if(status_kurzbz!='') + { + document.getElementById('student-rolle-grid-row-textbox').hidden=false; + document.getElementById('student-rolle-grid-row-menulist').hidden=true; + + StudentRolleStudiensemester_old=studiensemester_kurzbz; + StudentRolleAusbildungssemester_old=ausbildungssemester; + + //Daten holen + var url = 'rdf/prestudentrolle.rdf.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester+'&'+gettimestamp(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. + getService(Components.interfaces.nsIRDFService); + + var dsource = rdfService.GetDataSourceBlocking(url); + + var subject = rdfService.GetResource("http://www.technikum-wien.at/prestudentrolle/" + prestudent_id+"/"+status_kurzbz+"/"+studiensemester_kurzbz+"/"+ausbildungssemester); + + var predicateNS = "http://www.technikum-wien.at/prestudentrolle/rdf"; + + //RDF parsen + var datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#datum" )); + var bestaetigt_datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bestaetigt_am" )); + var bewerbung_abgeschicktamum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bewerbung_abgeschicktamum" )); + var orgform_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#orgform_kurzbz" )); + var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" )); + var anmerkung= getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" )); + var statusgrund_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#statusgrund_id" )); + var rt_stufe = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rt_stufe" )); + var neu = false; + StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id); + } + else + { + StudentRolleStudiensemester_old=''; + StudentRolleAusbildungssemester_old=''; + + document.getElementById('student-rolle-grid-row-textbox').hidden=true; + document.getElementById('student-rolle-grid-row-menulist').hidden=false; + + //Defaultwerte bei Neuem Datensatz + var status_kurzbz = 'Interessent'; + var studiensemester_kurzbz=window.opener.getStudiensemester(); + var ausbildungssemester='1'; + var datum = ''; + var bestaetigt_datum = ''; + var bewerbung_abgeschicktamum = ''; + var orgform_kurzbz = ''; + var studienplan_id = ''; + var anmerkung = ''; + var statusgrund_id = ''; + var rt_stufe = ''; + StudentRolleLoadStatusgrund(status_kurzbz); + } + + document.getElementById('student-rolle-textbox-prestudent_id').value=prestudent_id; + document.getElementById('student-rolle-textbox-status_kurzbz').value=status_kurzbz; + document.getElementById('student-rolle-menulist-studiensemester').value=studiensemester_kurzbz; + document.getElementById('student-rolle-menulist-ausbildungssemester').value=ausbildungssemester; + document.getElementById('student-rolle-datum-datum').value=datum; + document.getElementById('student-rolle-datum-bestaetigt_datum').value=bestaetigt_datum; + document.getElementById('student-rolle-datum-bewerbung_abgeschicktamum').value=bewerbung_abgeschicktamum; + document.getElementById('student-rolle-menulist-orgform_kurzbz').value=orgform_kurzbz; + MenulistSelectItemOnValue('student-rolle-menulist-studienplan', studienplan_id); + document.getElementById('student-rolle-textbox-anmerkung').value=anmerkung; + MenulistSelectItemOnValue('student-rolle-menulist-statusgrund', statusgrund_id); + MenulistSelectItemOnValue('student-rolle-menulist-stufe', rt_stufe); +} + +// **** +// * Speichern der Rolle +// * Hierzu wird eine Funktion vom Aufrufenden Fenster gestartet weil +// * es dann nicht zu Problemen mit den Zugriffen auf die anderen Fkt +// * kommt. +// **** +function StudentRolleSpeichern() +{ + if(window.opener.StudentRolleSpeichern(document, StudentRolleStudiensemester_old, StudentRolleAusbildungssemester_old)) + window.close(); +} + +function StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var menulistgrund = document.getElementById('student-rolle-menulist-statusgrund'); + + if (typeof statusgrund_id !== 'undefined') + url='rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&include_id='+statusgrund_id+'&ts'+gettimestamp(); + else + url='rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&ts'+gettimestamp(); + + try + { + StudentRolleStatusgrundDatasource.removeXMLSinkObserver(StudentDetailRolleTreeSinkObserver); + } + catch(e) + {} + + //Alte DS entfernen + var oldDatasources = menulistgrund.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + menulistgrund.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + menulistgrund.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + StudentRolleStatusgrundDatasource = rdfService.GetDataSourceBlocking(url); + StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + menulistgrund.database.AddDataSource(StudentRolleStatusgrundDatasource); + menulistgrund.builder.rebuild(); +} + +/** + * Wenn das Dropdown fuer den Status geaendert wird, dann + * werden die Statusgruende zu diesem Status geladen + */ +function StudentRolleChangeStatus() +{ + var status = document.getElementById('student-rolle-menulist-status_kurzbz').value; + StudentRolleLoadStatusgrund(status); +} diff --git a/include/prestudent.class.php b/include/prestudent.class.php index eb8767883..9a28961ff 100644 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -2422,13 +2422,15 @@ class prestudent extends person return false; } - $qry = "SELECT kurzbzlang - FROM public.tbl_prestudent - JOIN public.tbl_prestudentstatus USING (prestudent_id) - JOIN public.tbl_studiengang USING (studiengang_kz) + $qry = "SELECT + UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz) as kuerzel + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING (prestudent_id) + JOIN public.tbl_studiengang USING (studiengang_kz) WHERE person_id = ".$this->db_add_param($person_id, FHC_INTEGER)." - AND status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student') - AND typ in ('b','m','d') + AND status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student') + AND typ in ('b','m','d') ORDER BY status_kurzbz ASC LIMIT 1;"; @@ -2436,7 +2438,7 @@ class prestudent extends person { if ($row = $this->db_fetch_object()) { - $stg = $row->kurzbzlang; + $stg = $row->kuerzel; return $stg; } else diff --git a/include/statusgrund.class.php b/include/statusgrund.class.php index aa084b8c6..6b2c12e03 100644 --- a/include/statusgrund.class.php +++ b/include/statusgrund.class.php @@ -16,6 +16,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Authors: Andreas Oesterreicher , + Manuela Thamer */ require_once('basis_db.class.php'); @@ -30,6 +31,7 @@ class statusgrund extends basis_db public $aktiv = true; // boolean public $bezeichnung_mehrsprachig; // varchar(255)[] public $bezeichnung; // text[] + public $statusgrund_kurzbz; //varchar(32) /** * Konstruktor - Laedt optional einen Statusgrund @@ -71,6 +73,7 @@ class statusgrund extends basis_db $this->aktiv = $this->db_parse_bool($row->aktiv); $this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $this->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $this->statusgrund_kurzbz = $row->statusgrund_kurzbz; } else { @@ -120,6 +123,7 @@ class statusgrund extends basis_db $obj->aktiv = $this->db_parse_bool($row->aktiv); $obj->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $obj->statusgrund_kurzbz = $row->statusgrund_kurzbz; $this->result[] = $obj; } @@ -166,6 +170,7 @@ class statusgrund extends basis_db $obj->aktiv = $this->db_parse_bool($row->aktiv); $obj->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $obj->statusgrund_kurzbz = $row->statusgrund_kurzbz; $this->result[] = $obj; } @@ -179,5 +184,28 @@ class statusgrund extends basis_db return true; } + + /** + * Laedt das Klassenobjekt anhand der kurzbz + * + * @param string $statusgrund_kurzbz Statusgrund zu dem das Objekt geladen werden soll. + * @return object classobject + */ + public function getByStatusgrundKurzbz($statusgrund_kurzbz) + { + $qry = " + SELECT + * + FROM + public.tbl_status_grund + WHERE + statusgrund_kurzbz ='". $statusgrund_kurzbz. "' + "; + + $this->db_query($qry); + + return + $this->db_fetch_object(); + } } ?> diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js index 70f5ed982..79129f3e2 100644 --- a/public/js/infocenter/infocenterDetails.js +++ b/public/js/infocenter/infocenterDetails.js @@ -10,6 +10,7 @@ const RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ = "InfocenterRTfreigegQuerKurz"; const STGFREIGABE_MESSAGE_VORLAGE = "InfocenterSTGfreigegeben"; const STGFREIGABE_MESSAGE_VORLAGE_MASTER = "InfocenterSTGfreigegebenM"; const STGFREIGABE_MESSAGE_VORLAGE_MASTER_ENGLISCH = "InfocenterSTGfreigegebenMEng"; +const STGFREIGABE_MESSAGE_VORLAGE_ANDERES_SEMESTER = "InfocenterSTGfreigegebenSemester"; //Statusgründe for which no Studiengang Freigabe Message should be sent const FIT_PROGRAMM_STUDIENGAENGE = [10021, 10027]; @@ -653,7 +654,7 @@ var InfocenterDetails = { } else { - if (receiverPrestudent.studiengangtyp === 'm' && (freigabedata.statusgrundbezeichnung === 'Ergänzungsprüfungen' || freigabedata.statusgrundbezeichnung === 'Supplementary exams')) + if (receiverPrestudent.studiengangtyp === 'm' && freigabedata.statuskurzbz === 'ergPruefung') { msgvars = { 'studiengangbezeichnung': studiengangbezeichnung, @@ -671,7 +672,11 @@ var InfocenterDetails = { //if Freigabe to Studiengang, send StgFreigabe Message if not already sent and allowed to send else if (!stgFreigegeben && receiverPrestudent.sendStgFreigabeMsg === true) { - InfocenterDetails.sendFreigabeMessage(prestudent_id, STGFREIGABE_MESSAGE_VORLAGE, msgvars); + if (receiverPrestudent.studiengangtyp === 'b' && freigabedata.statuskurzbz === 'anderesSemester') + vorlage = STGFREIGABE_MESSAGE_VORLAGE_ANDERES_SEMESTER + else + vorlage = STGFREIGABE_MESSAGE_VORLAGE + InfocenterDetails.sendFreigabeMessage(prestudent_id, vorlage, msgvars); } } }; @@ -847,7 +852,8 @@ var InfocenterDetails = { var statusgrundel = $("#frgstatusgrselect_" + prestudent_id + " select[name=frgstatusgrund]"); var statusgrund_id = statusgrundel.val(); var statusgrundbezeichnung = statusgrundel.find("option[value="+statusgrund_id+"]").text(); - var data = {"prestudent_id": prestudent_id, "statusgrund_id": statusgrund_id, "statusgrundbezeichnung": statusgrundbezeichnung}; + var statuskurzbz = statusgrundel.find(':selected').data('kurzbz'); + var data = {"prestudent_id": prestudent_id, "statusgrund_id": statusgrund_id, "statusgrundbezeichnung": statusgrundbezeichnung, "statuskurzbz" : statuskurzbz}; InfocenterDetails.saveFreigabe(data);//Studiengangfreigabe } ); diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php index 3771f7d5e..008289d94 100644 --- a/rdf/student.rdf.php +++ b/rdf/student.rdf.php @@ -61,8 +61,9 @@ function convdate($date) function checkfilter($row, $filter2, $buchungstyp = null) { - global $studiensemester_kurzbz, $kontofilterstg; + global $studiensemester_kurzbz, $kontofilterstg, $studiengang_kz; $db = new basis_db(); + $studstatusgrund = array(); if($filter2=='dokumente') { @@ -157,6 +158,21 @@ function checkfilter($row, $filter2, $buchungstyp = null) } } } + elseif ( preg_match('/^stud-statusgrund-([0-9]+)$/', $filter2, $studstatusgrund) ) + { + // Alle Studenten mit Statusgrund in tbl_prestudentstatus + $qry = "SELECT count(*) AS anzahl FROM public.tbl_prestudentstatus ps JOIN + public.tbl_prestudent p ON p.prestudent_id = ps.prestudent_id AND + ps. studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND + p. person_id=".$db->db_add_param($row->person_id, FHC_INTEGER)." AND + p.studiengang_kz=" . $db->db_add_param($studiengang_kz, FHC_INTEGER) . " AND + ps.statusgrund_id = " . $db->db_add_param($studstatusgrund[1], FHC_INTEGER); + //echo $qry . "\n"; + $filtered = ( $db->db_query($qry) && ($row_filter = $db->db_fetch_object()) && ($row_filter->anzahl > 0) ) + ? true + : false; + return $filtered; + } return true; } diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 2bd3afed6..a29001d77 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -532,6 +532,46 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'ue' } } +// Note "intern angerechnet" hinzufügen +if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'iar' AND (bezeichnung = 'intern angerechnet' OR bezeichnung = 'Intern angerechnet');")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = " + INSERT INTO + lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre, offiziell, bezeichnung_mehrsprachig, lkt_ueberschreibbar) + VALUES( + (SELECT max(note)+1 FROM lehre.tbl_note),'intern angerechnet', 'iar', NULL, TRUE, NULL, TRUE, FALSE, FALSE, '{\"intern angerechnet\",\"internally credited\"}', FALSE + ); + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_note: Note intern angerechnet hinzugefuegt!
'; + } +} + +// Note "nicht zugelassen" hinzufügen +if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'nz' AND (bezeichnung = 'nicht zugelassen' OR bezeichnung = 'Nicht zugelassen');")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = " + INSERT INTO + lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre, offiziell, bezeichnung_mehrsprachig, lkt_ueberschreibbar) + VALUES( + (SELECT max(note)+1 FROM lehre.tbl_note), 'nicht zugelassen', 'nz', NULL, TRUE, NULL, TRUE, FALSE, FALSE, '{\"nicht zugelassen\",\"not admitted\"}', FALSE + ); + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_note: Note nicht zugelassen hinzugefuegt!
'; + } +} + // Spalte offiziell in lehre.tbl_note if(!$result = @$db->db_query("SELECT offiziell FROM lehre.tbl_note LIMIT 1;")) { @@ -1315,7 +1355,7 @@ if (!$result = @$db->db_query("SELECT 1 FROM system.tbl_verarbeitungstaetigkeit" } // system.tbl_log.taetigkeit_kurzbz -if (!$result = @$db->db_query("SELECT taetigkeit_kurzbz FROM system.tbl_log")) +if (!$result = @$db->db_query("SELECT taetigkeit_kurzbz FROM system.tbl_log LIMIT 1")) { $qry = " ALTER TABLE system.tbl_log ADD COLUMN taetigkeit_kurzbz varchar(32); @@ -4897,7 +4937,6 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_pruef echo 'Index fuer lehre.pruefung.student_uid hinzugefuegt
'; } } - // Added Buchungstyp "ZuschussIO" if ($result = @$db->db_query("SELECT 1 FROM public.tbl_buchungstyp WHERE buchungstyp_kurzbz = 'ZuschussIO';")) { @@ -4910,6 +4949,32 @@ if ($result = @$db->db_query("SELECT 1 FROM public.tbl_buchungstyp WHERE buchung echo ' public.tbl_buchungstyp: Added buchungstyp "ZuschussIO"
'; } } +//Add Column statusgrund_kurzbz to public.tbl_status_grund +if(!@$db->db_query("SELECT statusgrund_kurzbz FROM public.tbl_status_grund LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_status_grund ADD COLUMN statusgrund_kurzbz varchar(32); + ALTER TABLE public.tbl_status_grund ADD CONSTRAINT uk_tbl_statusgrund_kurzbz UNIQUE (statusgrund_kurzbz); + "; + + if(!$db->db_query($qry)) + echo 'public.tbl_status_grund '.$db->db_last_error().'
'; + else + echo '
Neue Spalte statusgrund_kurzbz zu Tabelle public.tbl_status_grund hinzugefügt'; +} + + +// INDEX idx_anrechnung_anrechnung_status_anrechnung_id +if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'idx_anrechnung_anrechnung_status_anrechnung_id'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = 'CREATE INDEX idx_anrechnung_anrechnung_status_anrechnung_id ON lehre.tbl_anrechnung_anrechnungstatus USING btree (anrechnung_id)'; + if (!$db->db_query($qry)) + echo 'idx_anrechnung_anrechnung_status_anrechnung_id '.$db->db_last_error().'
'; + else + echo '
Created Index idx_anrechnung_anrechnung_status_anrechnung_id'; + } +} // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -5130,7 +5195,7 @@ $tabellen=array( "public.tbl_rt_person" => array("rt_person_id","person_id","rt_id","studienplan_id","anmeldedatum","teilgenommen","ort_kurzbz","punkte","insertamum","insertvon","updateamum","updatevon"), "public.tbl_rt_studienplan" => array("reihungstest_id","studienplan_id"), "public.tbl_status" => array("status_kurzbz","beschreibung","anmerkung","ext_id","bezeichnung_mehrsprachig"), - "public.tbl_status_grund" => array("statusgrund_id","status_kurzbz","aktiv","bezeichnung_mehrsprachig","beschreibung"), + "public.tbl_status_grund" => array("statusgrund_id","status_kurzbz","aktiv","bezeichnung_mehrsprachig","beschreibung","statusgrund_kurzbz"), "public.tbl_semesterwochen" => array("semester","studiengang_kz","wochen"), "public.tbl_service" => array("service_id", "bezeichnung","beschreibung","ext_id","oe_kurzbz","content_id","design_uid","betrieb_uid","operativ_uid","servicekategorie_kurzbz"), "public.tbl_servicekategorie" => array("servicekategorie_kurzbz", "bezeichnung","sort"), diff --git a/system/filtersupdate.php b/system/filtersupdate.php index 77e0c3e3a..b8da24937 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -122,10 +122,10 @@ $filters = array( ], "filters": [ { - "name": "SendDate", + "name": "AnzahlStgNichtAbgeschickt", "option": "", - "condition": "", - "operation": "nset" + "condition": "0", + "operation": "gt" } ] } diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 7cd0419ae..f2be0b9e4 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -568,6 +568,26 @@ $phrases = array( ) ) ), + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'anzahlNichtGesendet', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Anzahl (nicht gesendet)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'amount (not sent)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'global', diff --git a/vilesci/personen/student_vorrueckung.php b/vilesci/personen/student_vorrueckung.php index 960413c2a..8eb858f30 100644 --- a/vilesci/personen/student_vorrueckung.php +++ b/vilesci/personen/student_vorrueckung.php @@ -19,6 +19,7 @@ * Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at > * Rudolf Hangl < rudolf.hangl@technikum-wien.at > * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > + * Manuela Thamer < manuela.thamer@technikum-wien.at > */ /** * Vorrückung aller AKTIVEN Studenten. @@ -32,6 +33,7 @@ require_once('../../include/benutzerberechtigung.class.php'); require_once('../../include/lehrverband.class.php'); require_once('../../include/studienordnung.class.php'); require_once('../../include/studienplan.class.php'); +require_once('../../include/statusgrund.class.php'); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); @@ -301,6 +303,16 @@ if (isset($_POST['vorr'])) } } + //auf statusgrund_kurzbz abfragen + $statusgrundObj = new statusgrund($row_status->statusgrund_id); + $statusgrundId = null; + if ($statusgrundObj->statusgrund_kurzbz === "prewiederholer" && $row_status->ausbildungssemester > 1) + { + $s = $row->semester_stlv - 1; + $ausbildungssemester = $row_status->ausbildungssemester - 1; + $statusgrundId = $statusgrundObj->getByStatusgrundKurzbz('wiederholer')->statusgrund_id; + } + $lvb = new lehrverband(); //Lehrverbandgruppe anlegen, wenn noch nicht vorhanden @@ -364,14 +376,15 @@ if (isset($_POST['vorr'])) //Eintragen des neuen Status $sql .= "INSERT INTO public.tbl_prestudentstatus (prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester, datum, insertamum, - insertvon, updateamum, updatevon, ext_id, orgform_kurzbz, studienplan_id) + insertvon, updateamum, updatevon, ext_id, orgform_kurzbz, studienplan_id, statusgrund_id) VALUES (".$db->db_add_param($row->prestudent_id).", ". $db->db_add_param($row_status->status_kurzbz).", ". $db->db_add_param($next_ss).", ". $db->db_add_param($ausbildungssemester).", now(), now(), ". $db->db_add_param($user).", NULL, NULL, NULL, ". $db->db_add_param($row_status->orgform_kurzbz).", ". - $db->db_add_param($studienplan_id).");"; + $db->db_add_param($studienplan_id).", ". + $db->db_add_param($statusgrundId).");"; } if ($sql != '') { @@ -408,7 +421,7 @@ $outp .= ' Studiengang: - '; //Auswahl Studiengang foreach ($studiengang as $stg) @@ -420,7 +433,7 @@ foreach ($studiengang as $stg) $url .= "&studiensemester_kurzbz_akt=$studiensemester_kurzbz_akt"; $url .= "&studiensemester_kurzbz_zk=$studiensemester_kurzbz_zk"; - $outp .= ""; if (!isset($s[$stg->studiengang_kz])) $s[$stg->studiengang_kz] = new stdClass(); @@ -435,17 +448,12 @@ $outp .= ' $outp .= " Angezeigtes Studiensemester: - \n"; if (isset($ss_arr) && is_array($ss_arr)) { foreach ($ss_arr as $sts) { - if ($studiensemester_kurzbz == $sts) - $sel = " selected "; - else - $sel = ''; - $url = $_SERVER['PHP_SELF']."?stg_kz=$stg_kz"; $url .= "&semester=$semester"; $url .= "&semesterv=$semesterv"; @@ -453,7 +461,7 @@ if (isset($ss_arr) && is_array($ss_arr)) $url .= "&studiensemester_kurzbz_akt=$studiensemester_kurzbz_akt"; $url .= "&studiensemester_kurzbz_zk=$studiensemester_kurzbz_zk"; - $outp .= ""; + $outp .= ""; } } $outp .= " @@ -493,17 +501,12 @@ $outp .= ' Ausgangs-Studiensemester: - '; if (isset($ss_arr) && is_array($ss_arr)) { foreach ($ss_arr as $sts2) { - if ($studiensemester_kurzbz_akt == $sts2) - $sel2 = " selected "; - else - $sel2 = ''; - $url = $_SERVER['PHP_SELF']."?stg_kz=$stg_kz"; $url .= "&semester=$semester"; $url .= "&semesterv=$semesterv"; @@ -511,7 +514,7 @@ if (isset($ss_arr) && is_array($ss_arr)) $url .= "&studiensemester_kurzbz_akt=$sts2"; $url .= "&studiensemester_kurzb_zk=$studiensemester_kurzbz_zk"; - $outp .= ""; + $outp .= ""; } } $outp .= " @@ -547,7 +550,7 @@ $outp .= 'alle -- $outp .= " Ziel-Studiensemester: - \n"; if (isset($ss_arr) && is_array($ss_arr)) { @@ -565,7 +568,7 @@ if (isset($ss_arr) && is_array($ss_arr)) $url .= "&studiensemester_kurzbz_akt=$studiensemester_kurzbz_akt"; $url .= "&studiensemester_kurzbz_zk=$sts3"; - $outp .= ""; + $outp .= ""; } } $outp .= " \n @@ -617,11 +620,12 @@ if ($result_std != 0) $row = $db->db_fetch_object($result_std, $i); $qry_status = " SELECT - status_kurzbz, ausbildungssemester, tbl_studienplan.studienplan_id, tbl_studienplan.bezeichnung + tbl_prestudentstatus.status_kurzbz, statusgrund_kurzbz, ausbildungssemester, tbl_studienplan.studienplan_id, tbl_studienplan.bezeichnung FROM public.tbl_prestudentstatus JOIN public.tbl_prestudent USING(prestudent_id) LEFT JOIN lehre.tbl_studienplan USING(studienplan_id) + LEFT JOIN public.tbl_status_grund USING (statusgrund_id) WHERE person_id=".$db->db_add_param($row->person_id, FHC_INTEGER)." AND studiengang_kz=".$db->db_add_param($row->studiengang_kz, FHC_INTEGER)." @@ -638,6 +642,7 @@ if ($result_std != 0) if ($row_status = $db->db_fetch_object($result_status)) { $status_kurzbz = $row_status->status_kurzbz; + $statusgrund_kurzbz = $row_status->statusgrund_kurzbz; $ausbildungssemester = $row_status->ausbildungssemester; $studienplan_id = $row_status->studienplan_id; $studienplan_bezeichnung = $row_status->bezeichnung; diff --git a/vilesci/stammdaten/personen_listedoppelte.php b/vilesci/stammdaten/personen_listedoppelte.php deleted file mode 100644 index 9d7110cc4..000000000 --- a/vilesci/stammdaten/personen_listedoppelte.php +++ /dev/null @@ -1,177 +0,0 @@ - - * Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at > - * Rudolf Hangl < rudolf.hangl@technikum-wien.at > - * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > - */ - - - -// *************************************************************** -// * Script zum Anzeigen und Zusammenlegen von -// * doppelten Personen -// *************************************************************** - -//DB Verbindung herstellen - require_once('../../config/vilesci.config.inc.php'); - require_once('../../include/basis_db.class.php'); - if (!$db = new basis_db()) - die('Es konnte keine Verbindung zum Server aufgebaut werden.'); - - require_once('../../include/person.class.php'); - require_once('../../include/functions.inc.php'); - -$msg=''; -$outp=''; -$anfang=''; -$ende=''; -$person1=''; -$person2=''; - -if ((isset($_GET['person2']) || isset($_POST['person2']))&&(isset($_GET['person1']) || isset($_POST['person1']))) -{ - //zusammenlegen der personen - $person2=(isset($_GET['person2'])?$_GET['person2']:$_POST['person2']); - $person1=(isset($_GET['person1'])?$_GET['person1']:$_POST['person1']); - $sql_query_upd1="BEGIN;"; - $sql_query_upd1.="UPDATE public.tbl_benutzer SET person_id='$person1' WHERE person_id='$person2';"; - $sql_query_upd1.="UPDATE public.tbl_konto SET person_id='$person1' WHERE person_id='$person2';"; - $sql_query_upd1.="UPDATE public.tbl_prestudent SET person_id='$person1' WHERE person_id='$person2';"; - //$sql_query_upd1.="UPDATE sync.tbl_syncperson SET person_portal='$radio_2' WHERE person_portal='$radio_1';"; - $sql_query_upd1.="UPDATE lehre.tbl_abschlusspruefung SET pruefer1='$person1' WHERE pruefer1='$person2';"; - $sql_query_upd1.="UPDATE lehre.tbl_abschlusspruefung SET pruefer2='$person1' WHERE pruefer2='$person2';"; - $sql_query_upd1.="UPDATE lehre.tbl_abschlusspruefung SET pruefer3='$person1' WHERE pruefer3='$person2';"; - $sql_query_upd1.="UPDATE lehre.tbl_projektbetreuer SET person_id='$person1' WHERE person_id='$person2';"; - $sql_query_upd1.="UPDATE public.tbl_adresse SET person_id='$person1' WHERE person_id='$person2';"; - $sql_query_upd1.="UPDATE public.tbl_akte SET person_id='$person1' WHERE person_id='$person2';"; - $sql_query_upd1.="UPDATE public.tbl_bankverbindung SET person_id='$person1' WHERE person_id='$person2';"; - $sql_query_upd1.="UPDATE public.tbl_kontakt SET person_id='$person1' WHERE person_id='$person2';"; - - $sql_query_upd1.="UPDATE wawi.tbl_betriebsmittelperson SET person_id='$person1' WHERE person_id='$person2';"; - - $sql_query_upd1.="DELETE FROM public.tbl_person WHERE person_id='$person2';"; - if($db->db_query($sql_query_upd1)) - { - $msg = "Daten erfolgreich gespeichert
"; - $db->db_query("COMMIT;"); - $msg .= "
".mb_eregi_replace(';',';
',$sql_query_upd1); - - if(@$db->db_query('SELECT person_portal FROM sync.tbl_syncperson LIMIT 1')) - { - $msg.= "

Sync-Tabelle wird aktualisiert"; - $sql_query_upd1="UPDATE sync.tbl_syncperson SET person_portal='$person1' WHERE person_portal='$person2';"; - $db->db_query($sql_query_upd1); - $msg.= "
".mb_eregi_replace(';',';
',$sql_query_upd1)."COMMIT"; - } - if(@$db->db_query('SELECT person_id FROM sync.tbl_syncperson LIMIT 1')) - { - $msg.= "

Sync-Tabelle wird aktualisiert"; - $sql_query_upd1="UPDATE sync.tbl_syncperson SET person_id='$radio_2' WHERE person_id='$radio_1';"; - $db->db_query($sql_query_upd1); - $msg.= "
".mb_eregi_replace(';',';
',$sql_query_upd1)."COMMIT"; - } - } - else - { - $msg = "Die Änderung konnte nicht durchgeführt werden!"; - $db->db_query("ROLLBACK;"); - $msg.= "
".mb_eregi_replace(';',';
',$sql_query_upd1)."ROLLBACK"; - } -} - -?> - - - - - - -Personen-Auflistung von Mehrfacheinträgen - - - -

Mehrfache Personendatensaetze

- -Der Button in der erste Spalte gibt die Person_id des Datensatzes an, der entfernt werden soll. -
Wird dieser Button angeklickt, werden alle anhängenden Daten dem Datensatz dieser Zeile (Person_id in Spalte 2) angehängt. -
Dadurch kann es in Folge zu Doppeleinträgen bei diesen Datensätzen kommen (z.B. Adresse)."; -?> -
-

".$msg.""; ?>

-
-"; - echo ""; - echo ""; - - //Tabelle 1 - echo "
"; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - - $qry="SELECT person.person_id as person2, tbl_person.person_id AS person1, tbl_person.nachname as nachname1, tbl_person.vorname as vorname1, tbl_person.gebdatum as gebdatum1, - tbl_person.svnr as svnr1, tbl_person.ersatzkennzeichen as ersatzkennzeichen1, tbl_person.ext_id as ext_id1, tbl_person.* FROM tbl_person person - JOIN tbl_person ON (person.vorname=tbl_person.vorname AND person.nachname=tbl_person.nachname AND person.gebdatum=tbl_person.gebdatum AND person.person_id!=tbl_person.person_id - AND person.person_id!=tbl_person.person_id) ORDER BY tbl_person.nachname - LIMIT 50 ;"; - $i=0; - if($result = $db->db_query($qry)) - { - while($l=$db->db_fetch_object($result)) - { - - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - $i++; - } - } - echo "
Alt.-IDIDNachnameVornameGeburtsdatumSVNrErsatzkennz.Ext-ID
- -
$l->person1$l->nachname1$l->vorname1$l->gebdatum1$l->svnr1$l->ersatzkennzeichen1$l->ext_id1
"; - echo ""; - //echo ""; - echo ""; - //echo ""; - -?> - - - - \ No newline at end of file