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.' + '; } }