Übernahme der PreIncoming ins FAS und Anzeige in den Personendetails

This commit is contained in:
Andreas Österreicher
2011-04-26 14:16:13 +00:00
parent 2b7e0eea29
commit e04eef3e57
2 changed files with 324 additions and 12 deletions
+294 -11
View File
@@ -32,11 +32,18 @@ require_once('../../include/mobilitaetsprogramm.class.php');
require_once('../../include/zweck.class.php');
require_once('../../include/akte.class.php');
require_once('../../include/lehrveranstaltung.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/prestudent.class.php');
require_once('../../include/student.class.php');
require_once('../../include/lehrverband.class.php');
require_once('../../include/bisio.class.php');
require_once('../../include/'.EXT_FKT_PATH.'/generateuid.inc.php');
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
$db = new basis_db();
$datum_obj = new datum();
$message='';
@@ -199,17 +206,228 @@ if($method!='')
$message.='<span class="ok">Daten wurden gespeichert</span>';
break;
case 'fasuebernahme':
//Uebernahme eines PreIncoming ins FAS
/* Uebernahme eines PreIncoming ins FAS
* - Prestudent anlegen
* - Prestudent Status anlegen
* - Benutzer anlegen
* - Student anlegen
* - Lehrverbandsgruppe anlegen und zuordnen
* - Mobilitaetsprogramm
* - Uebernommen Boolean setzen
*
*
* Offene Punkte:
* - Automatische Zuteilung zu den LVs
* - E-Mail benachrichtigung an Assistenz
*/
$error=false;
$errormsg='';
// Prestudent
// Benutzer
// Student
// PrestudentStatus
// Studentlehrverband
// Gruppe und Zuordnung
// LVs Zuordnen
// Uebernommen Boolean setzen
$message.= 'Diese Funktion ist noch nicht implemenetiert';
$inc = new preincoming();
if($inc->load($preincoming_id))
{
$person = new person();
if($person->load($inc->person_id))
{
//TODO:
$studiensemester_kurzbz = getStudiensemesterFromDatum($inc->von);
$ausbildungssemester=1;
$orgform_kurzbz='';
$studiengang_kz=$_POST['studiengang_kz'];
// Prestudent
$prestudent = new prestudent();
$prestudent->person_id = $inc->person_id;
$prestudent->new = true;
$prestudent->aufmerksamdurch_kurzbz = 'k.A.';
$prestudent->studiengang_kz = $studiengang_kz;
$prestudent->reihungstestangetreten = false;
$prestudent->bismelden = true;
if(!$prestudent->save())
{
$error=true;
$errormsg = $prestudent->errormsg;
}
if(!$error)
{
//Prestudent Rolle Anlegen
$rolle = new prestudent();
$rolle->prestudent_id = $prestudent->prestudent_id;
$rolle->status_kurzbz = 'Incoming';
$rolle->studiensemester_kurzbz = $studiensemester_kurzbz;
$rolle->ausbildungssemester = $ausbildungssemester;
$rolle->orgform_kurzbz = $orgform_kurzbz;
$rolle->datum = date('Y-m-d');
$rolle->insertamum = date('Y-m-d H:i:s');
$rolle->insertvon = $user;
$rolle->new = true;
if(!$rolle->save_rolle())
{
$error = true;
$errormsg = $rolle->errormsg;
}
else
$error = false;
}
if(!$error)
{
//Matrikelnummer und UID generieren
$matrikelnr = generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz);
$jahr = mb_substr($matrikelnr,0, 2);
$stg = mb_substr($matrikelnr, 3, 4);
$stg_obj = new studiengang();
$stg_obj->load(ltrim($stg,'0'));
$uid = generateUID($stg_obj->kurzbz,$jahr, $stg_obj->typ, $matrikelnr);
//Benutzerdatensatz anlegen
$benutzer = new benutzer();
$benutzer->uid = $uid;
$benutzer->person_id = $inc->person_id;
$benutzer->aktiv = true;
$nachname_clean = mb_strtolower(convertProblemChars($person->nachname));
$vorname_clean = mb_strtolower(convertProblemChars($person->vorname));
$nachname_clean = str_replace(' ','_', $nachname_clean);
$vorname_clean = str_replace(' ','_', $vorname_clean);
$qry_alias = "SELECT * FROM public.tbl_benutzer WHERE alias=LOWER('".$vorname_clean.".".$nachname_clean."')";
$result_alias = $db->db_query($qry_alias);
if($db->db_num_rows($result_alias)==0)
$benutzer->alias =$vorname_clean.'.'.$nachname_clean;
else
$benutzer->alias = '';
$benutzer->insertamum = date('Y-m-d H:i:s');
$benutzer->insertvon = $user;
if($benutzer->save(true, false))
{
//Studentendatensatz anlegen
$student = new student();
$student->uid = $uid;
$student->matrikelnr = $matrikelnr;
$student->prestudent_id = $prestudent->prestudent_id;
$student->studiengang_kz = $studiengang_kz;
$student->semester = '0';
$student->verband = 'I';
$student->gruppe = ' ';
$student->insertamum = date('Y-m-d H:i:s');
$student->insertvon = $user;
$lvb = new lehrverband();
if(!$lvb->exists($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe))
{
$lvb->studiengang_kz = $student->studiengang_kz;
$lvb->semester = $student->semester;
$lvb->verband = $student->verband;
$lvb->gruppe = $student->gruppe;
$lvb->bezeichnung = 'Incoming';
$lvb->aktiv = true;
$lvb->save(true);
}
if($student->save(true, false))
{
//StudentLehrverband anlegen
$studentlehrverband = new student();
$studentlehrverband->uid = $uid;
$studentlehrverband->studiensemester_kurzbz = $studiensemester_kurzbz;
$studentlehrverband->studiengang_kz = $studiengang_kz;
$studentlehrverband->semester = '0';
$studentlehrverband->verband = 'I';
$studentlehrverband->gruppe = ' ';
$studentlehrverband->insertamum = date('Y-m-d H:i:s');
$studentlehrverband->insertvon = $user;
if(!$studentlehrverband->save_studentlehrverband(true))
{
$error = true;
$errormsg = 'StudentLehrverband konnte nicht angelegt werden';
}
}
else
{
$error = true;
$errormsg = 'Student konnte nicht angelegt werden: '.$student->errormsg;
}
}
else
{
$error = true;
$errormsg = 'Benutzer konnte nicht angelegt werden:'.$benutzer->errormsg;
}
if(!$error)
{
// I/O Datensatz wird nur erstellt, wenn die noetigen Daten vorhanden sind
if($inc->mobilitaetsprogramm_code!='' && $inc->zweck_code!=''
&& $inc->von!='' && $inc->bis!='' )
{
$bisio = new bisio();
$adresse = new adresse();
$adresse->load_pers($inc->person_id);
$nation_code='';
if(isset($adresse->result[0]))
$nation_code = $adresse->result[0]->nation;
if($nation_code=='')
$nation_code='A';
$bisio->new = true;
$bisio->mobilitaetsprogramm_code = $inc->mobilitaetsprogramm_code;
$bisio->nation_code = $nation_code;
$bisio->von = $inc->von;
$bisio->bis = $inc->bis;
$bisio->zweck_code = $inc->zweck_code;
$bisio->student_uid = $uid;
$bisio->updateamum = date('Y-m-d H:i:s');
$bisio->updatevon = $user;
$bisio->insertamum = date('Y-m-d H:i:s');
$bisio->insertvon = $user;
if(!$bisio->save())
{
$error=true;
$errormsg = 'Fehler beim Uebernehmen des IO Datensatzes';
}
}
$inc->new=false;
$inc->uebernommen=true;
$inc->save();
}
}
else
{
$error = true;
$errormsg = 'Person konnte nicht geladen werden:'.$person->errormsg;
}
}
if(!$error)
{
$db->db_query('COMMIT');
$message.='<span class="ok">Uebernahme erfolgreich</span';
}
else
{
$db->db_query('ROLLBACK');
$message.='<span class="error">'.$errormsg.'</span>';
}
}
break;
default:
break;
@@ -429,7 +647,7 @@ function print_personendetails()
<legend>Übernahme ins FAS</legend>';
if($inc->uebernommen)
{
echo 'Diese Person wurde bereits ins FAS übernommen';
echo '<b>Diese Person wurde bereits ins FAS übernommen</b>';
}
else
{
@@ -545,4 +763,69 @@ function print_lehrveranstaltungen()
echo '</fieldset>';
}
// ****
// * Generiert die Matrikelnummer
// * FORMAT: 0710254001
// * 07 = Jahr
// * 1/2/0 = WS/SS/incoming
// * 0254 = Studiengangskennzahl vierstellig
// * 001 = Laufende Nummer
// ****
function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz)
{
$db = new basis_db();
$jahr = mb_substr($studiensemester_kurzbz, 4);
$sem = mb_substr($studiensemester_kurzbz, 0, 2);
if($sem=='SS')
$jahr = $jahr-1;
$art =0;
$matrikelnummer = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz);
$qry = "SELECT matrikelnr FROM public.tbl_student WHERE matrikelnr LIKE '$matrikelnummer%' ORDER BY matrikelnr DESC LIMIT 1";
if($db->db_query($qry))
{
if($row = $db->db_fetch_object())
{
$max = mb_substr($row->matrikelnr,7);
}
else
$max = 0;
$max += 1;
return $matrikelnummer.sprintf("%03d",$max);
}
else
{
return false;
}
}
function clean_string($string)
{
$trans = array("ä" => "ae",
"Ä" => "Ae",
"ö" => "oe",
"Ö" => "Oe",
"ü" => "ue",
"Ü" => "Ue",
"á" => "a",
"à" => "a",
"é" => "e",
"è" => "e",
"ó" => "o",
"ò" => "o",
"í" => "i",
"ì" => "i",
"ù" => "u",
"ú" => "u",
"ß" => "ss");
$string = strtr($string, $trans);
return ereg_replace("[^a-zA-Z0-9]", "", $string);
//[:space:]
}
?>
+30 -1
View File
@@ -32,6 +32,7 @@ require_once('../../include/kontakt.class.php');
require_once('../../include/adresse.class.php');
require_once('../../include/nation.class.php');
require_once('../../include/firma.class.php');
require_once('../../include/preincoming.class.php');
$user = get_uid();
@@ -112,7 +113,7 @@ $nation_arr['']='';
foreach($nation->nation as $row)
$nation_arr[$row->code]=$row->kurztext;
$adresstyp_arr = array('h'=>'Hauptwohnsitz','n'=>'Nebenwohnsitz','f'=>'Firma');
$adresstyp_arr = array(''=>'','h'=>'Hauptwohnsitz','n'=>'Nebenwohnsitz','f'=>'Firma');
// *** ADRESSEN ***
echo "<h3>Adressen:</h3>";
@@ -218,6 +219,34 @@ if(count($preinteressent->result)>0)
echo '</tbody></table>';
}
//PreIncoming
$preincoming = new preincoming();
$preincoming->loadFromPerson($person->person_id);
if(count($preincoming->result)>0)
{
echo '<br><h2>Preincoming</h2>';
echo '<table class="liste table-autosort:0 table-stripeclass:alternate table-autostripe">
<thead>
<tr>
<th>ID</th>
<th>von</th>
<th>bis</th>
</tr>
</thead>
<tbody>';
foreach ($preincoming->result as $row)
{
echo '<tr>';
echo "<td>$row->preincoming_id</td>";
echo "<td>".$datum_obj->formatDatum($row->von, 'd.m.Y')."</td>";
echo "<td>".$datum_obj->formatDatum($row->bis, 'd.m.Y')."</td>";
echo '</tr>';
}
echo '</tbody></table>';
}
//Prestudent
$prestudent = new prestudent();
$prestudent->getPrestudenten($person->person_id);
if(count($prestudent->result)>0)