Personen Zusammenlegen ueberarbeitet

- Personen können aus FAS heraus zusammengelegt werden (bis zu 2 Personen markieren -> Rechte Maustaste -> Personen zusammenlegen"
- Fotos und die existierenden Rollen werden in der Übersicht angezeigt
- Recht muss "basis/person" mit SUID sein
- Alle derzeit vorhandenen DB-Tabellen werden berücksichtigt
- Aktuelleres Foto wird übernommen, Fotosperren werden übernommen, Fotohistorie wird übernommen
- Ersatzkennzeichen bzw Sozialversicherungsnummer wird übernommen
- Letztbenutzter Zugangscode wird übernommen
- Adressen der verbliebenen Person werden zusammengeräumt (Doppelte löschen, Unvollständige zusammenführen)
- Kontakte der verbliebenen Person werden zusammengeräumt (Doppelte löschen, Unvollständige zusammenführen)
- Doppelte PreStudenten (im selben Studiensemester) werden gelöscht
- Neue Funktion getLog in personlog.class laedt die Log-Einträge einer Person
This commit is contained in:
Manfred Kindl
2018-07-17 11:22:06 +02:00
parent 7df0f64af2
commit 07f99b81ff
5 changed files with 1215 additions and 185 deletions
+4
View File
@@ -82,6 +82,10 @@ else
</menu>
<menuseparator />
<menuitem label="Personendetails anzeigen" oncommand="StudentShowPersonendetails();" id="student-tree-popup-personendetails" hidden="false"/>
<?php
if($rechte->isBerechtigt('basis/person', null, 'suid'))
echo '<menuitem label="Person(en) zusammenlegen" oncommand="StudentPersonenZusammenlegen();" id="student-tree-popup-personenzusammenlegen" hidden="false"/>';
?>
<!--
<menuitem label="Interessenten löschen" oncommand="StudentDeleteInteressent();" id="student-tree-popup-deleteinteressent" hidden="false"/>
-->
+43
View File
@@ -5616,3 +5616,46 @@ function StudentExportBescheid()
else
alert('Bitte einen Studenten auswaehlen');
}
//****
//* Übergibt die PersonIDs an das Skript personen_wartung.php um Personen zusammenzulegen
//****
function StudentPersonenZusammenlegen()
{
tree = document.getElementById('student-tree');
//Alle markierten Studenten holen
var start = new Object();
var end = new Object();
var numRanges = tree.view.selection.getRangeCount();
var anzahl = 0;
var person1 = '';
var person2 = '';
for (var t = 0; t < numRanges; t++)
{
tree.view.selection.getRangeAt(t,start,end);
for (var v = start.value; v <= end.value; v++)
{
if (person1 == '')
{
person1 = getTreeCellText(tree, 'student-treecol-person_id', v);
anzahl = anzahl+1;
continue;
}
person2 = getTreeCellText(tree, 'student-treecol-person_id', v);
anzahl = anzahl+1;
}
}
if(anzahl > 2)
{
alert('Sie können maximal 2 Personen zum Zusammenlegen auswählen');
return false;
}
if(anzahl > 0)
window.open('<?php echo APP_ROOT ?>vilesci/stammdaten/personen_wartung.php?person_id_1='+person1+'&person_id_2='+person2,'Personen-Zusammenlegen','');
else
alert('Bitte eine oder 2 Personen zum Zusammenlegen auswählen');
}
+79
View File
@@ -76,6 +76,85 @@ class personlog extends basis_db
$this->errormsg = 'Fehler beim Speichern des Logeintrages';
return false;
}
}
/**
* Laedt die Log-Einträge einer Person.
* Optional können weitere Paramenter übergeben werden.
*
* @param integer $person_id ID der Person.
* @param string $logtype_kurzbz Typ des Logeintrages
* @param array $logdata Array mit den zusaetzlichen Logdaten zu diesem Typ.
* @param string $taetigkeit_kurzbz Kurzbz der Verarbeitungstaetigkeit.
* @param string $app Applikation von der dieser Logeintrag stammt.
* @param string $oe_kurzbz Kurzbz der Organisationseinheit. (optional)
* @param string $user User der die Aktion durchgefuehrt hat. (optional)
* @return boolean true wenn erfolgreich, false im Fehlerfall.
*/
public function getLog($person_id, $app = null, $logtype_kurzbz = null, $logdata = null, $taetigkeit_kurzbz = null, $oe_kurzbz = null, $order = 'zeitpunkt DESC')
{
if (! is_numeric($person_id))
{
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM system.tbl_log
WHERE
person_id=" . $this->db_add_param($person_id, FHC_INTEGER);
if ($app != null)
$qry .= " AND app=" . $this->db_add_param($app);
if ($logtype_kurzbz != null)
$qry .= " AND logtype_kurzbz=" . $this->db_add_param($logtype_kurzbz);
if ($logdata != null)
{
if (is_array($logdata))
{
foreach ($logdata AS $key => $value)
$qry .= " AND logdata ->> " . $this->db_add_param($key) . " = " . $this->db_add_param($value);
}
else
{
$this->errormsg = 'Logdata muss ein Array sein';
return false;
}
}
if ($taetigkeit_kurzbz != null)
$qry .= " AND taetigkeit_kurzbz=" . $this->db_add_param($taetigkeit_kurzbz);
if ($oe_kurzbz != null)
$qry .= " AND oe_kurzbz=" . $this->db_add_param($oe_kurzbz);
$qry .= " ORDER BY " . $order;
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$log = new personlog();
$log->log_id = $row->log_id;
$log->person_id = $row->person_id;
$log->zeitpunkt = $row->zeitpunkt;
$log->app = $row->app;
$log->oe_kurzbz = $row->oe_kurzbz;
$log->logtype_kurzbz = $row->logtype_kurzbz;
$log->logdata = $row->logdata;
$log->insertvon = $row->insertvon;
$log->taetigkeit_kurzbz = $row->taetigkeit_kurzbz;
$this->logs[] = $log;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der LogDaten';
return false;
}
}
/**
+4 -1
View File
@@ -445,6 +445,8 @@ class prestudent extends person
if($this->db_query($qry))
{
$this->num_rows=0;
while($row = $this->db_fetch_object())
{
$rolle = new prestudent();
@@ -468,6 +470,7 @@ class prestudent extends person
$rolle->rt_stufe = $row->rt_stufe;
$rolle->statusgrund_id = $row->statusgrund_id;
$this->result[] = $rolle;
$this->num_rows++;
}
return true;
}
@@ -1898,7 +1901,7 @@ class prestudent extends person
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Loeschen der Daten';
$this->errormsg = 'Fehler beim Loeschen des PreStudenten';
return false;
}
}
File diff suppressed because it is too large Load Diff