diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index 1eca96f0f..6b11698ec 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -3483,6 +3483,34 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_geschlecht LIMIT 1"))
echo '
public.tbl_geschlecht hinzugefügt. Check Constraint für Geschlecht entfernt.';
}
+if($result = $db->db_query("SELECT * FROM pg_proc WHERE proname = 'transform_geschlecht'"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = '
+ CREATE OR REPLACE FUNCTION transform_geschlecht(character, date) RETURNS character
+ LANGUAGE plpgsql
+ AS $_$
+ DECLARE geschlecht ALIAS FOR $1;
+ DECLARE gebdatum ALIAS FOR $2;
+
+ BEGIN
+ IF geschlecht=\'x\' THEN
+ IF date_part(\'day\', gebdatum)::int%2=0 THEN
+ geschlecht:=\'m\';
+ ELSE
+ geschlecht:=\'w\';
+ END IF;
+ END IF;
+ RETURN geschlecht;
+ END;
+ $_$;';
+ if(!$db->db_query($qry))
+ echo 'transform_geschlecht: '.$db->db_last_error().'
';
+ else
+ echo '
Function transform_geschlecht hinzugefügt.';
+ }
+}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '
Pruefe Tabellen und Attribute!
';
diff --git a/vilesci/bis/lehrgangsmeldung.php b/vilesci/bis/lehrgangsmeldung.php
index 76b0b7f30..262821df2 100644
--- a/vilesci/bis/lehrgangsmeldung.php
+++ b/vilesci/bis/lehrgangsmeldung.php
@@ -197,7 +197,7 @@ if($result = $db->db_query($qry))
{
$error_log.=(!empty($error_log)?', ':'')."Geburtsdatum ('".$row->gebdatum."')";
}
- if($row->geschlecht!='m' && $row->geschlecht!='w')
+ if($row->geschlecht!='m' && $row->geschlecht!='w' && $row->geschlecht!='x')
{
$error_log.=(!empty($error_log)?', ':'')."Geschlecht ('".$row->geschlecht."')";
}
diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php
index eab717bea..7da82a456 100644
--- a/vilesci/bis/studentenmeldung.php
+++ b/vilesci/bis/studentenmeldung.php
@@ -595,7 +595,7 @@ function GenerateXMLStudentBlock($row)
{
$error_log.=(!empty($error_log)?', ':'')."Geburtsdatum ('".$row->gebdatum."')";
}
- if($row->geschlecht!='m' && $row->geschlecht!='w')
+ if($row->geschlecht!='m' && $row->geschlecht!='w' && $row->geschlecht!='x')
{
$error_log.=(!empty($error_log)?', ':'')."Geschlecht ('".$row->geschlecht."')";
}
@@ -1303,13 +1303,19 @@ function GenerateXMLBewerberBlock($orgformcode=null)
if(mb_strstr($ssem,"WS"))
{
//Bewerber
- $qrybw="SELECT * FROM public.tbl_prestudent
+ $qrybw="
+ SELECT
+ *, transform_geschlecht(tbl_person.geschlecht, tbl_person.gebdatum) as geschlecht_imputiert
+ FROM
+ public.tbl_prestudent
JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
JOIN public.tbl_person USING(person_id)
LEFT JOIN bis.tbl_orgform USING(orgform_kurzbz)
- WHERE (studiensemester_kurzbz=".$db->db_add_param($ssem)." OR studiensemester_kurzbz=".$db->db_add_param($psem).") AND tbl_prestudent.studiengang_kz=".$db->db_add_param($stg_kz)."
+ WHERE (studiensemester_kurzbz=".$db->db_add_param($ssem)." OR studiensemester_kurzbz=".$db->db_add_param($psem).")
+ AND tbl_prestudent.studiengang_kz=".$db->db_add_param($stg_kz)."
AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).")
- AND status_kurzbz='Bewerber' AND reihungstestangetreten
+ AND status_kurzbz='Bewerber'
+ AND reihungstestangetreten
";
if(!is_null($orgformcode))
$qrybw.=" AND tbl_orgform.code=".$db->db_add_param($orgformcode);
@@ -1321,7 +1327,7 @@ function GenerateXMLBewerberBlock($orgformcode=null)
// Bachelor / Diplom
if(($stgart==1 || $stgart==3) && $rowbw->zgv_code!=NULL)
{
- if(strtoupper($rowbw->geschlecht)=='M')
+ if(strtoupper($rowbw->geschlecht_imputiert)=='M')
{
if(!isset($bewerberM[$rowbw->zgv_code]))
{
@@ -1341,7 +1347,7 @@ function GenerateXMLBewerberBlock($orgformcode=null)
// Master
if($stgart==2 && $rowbw->zgvmas_code!=NULL)
{
- if(strtoupper($rowbw->geschlecht)=='M')
+ if(strtoupper($rowbw->geschlecht_imputiert)=='M')
{
if(!isset($bewerberM[$rowbw->zgvmas_code]))
{
@@ -1369,7 +1375,18 @@ function GenerateXMLBewerberBlock($orgformcode=null)
else
$bewerbercount[$bworgform]=1;
- $bwlist.='| '.trim($rowbw->nachname).' | '.trim($rowbw->vorname).' | '.$bworgform.' |
';
+ if($rowbw->geschlecht_imputiert!=$rowbw->geschlecht)
+ $geschlecht_imputiert = ' -> '.$rowbw->geschlecht_imputiert;
+ else
+ $geschlecht_imputiert = '';
+
+ $bwlist.='
+
+ | '.trim($rowbw->nachname).' |
+ '.trim($rowbw->vorname).' |
+ '.$bworgform.' |
+ '.$rowbw->geschlecht.$geschlecht_imputiert.' |
+
';
}
}