diff --git a/include/dvb.class.php b/include/dvb.class.php
index 257fb4ee0..fb2f97afd 100644
--- a/include/dvb.class.php
+++ b/include/dvb.class.php
@@ -1117,7 +1117,7 @@ class dvb extends basis_db
* @param $strasse Strasse der Person (optional).
* @return BPK or false on error.
*/
- private function pruefeBPK($geburtsdatum, $vorname, $nachname, $geschlecht, $plz = null, $strasse = null)
+ public function pruefeBPK($geburtsdatum, $vorname, $nachname, $geschlecht, $plz = null, $strasse = null)
{
if ($this->tokenIsExpired())
{
@@ -1211,6 +1211,18 @@ class dvb extends basis_db
$dom = new DOMDocument();
$dom->loadXML($response);
$namespace = 'http://www.brz.gv.at/datenverbund-unis';
+ $domnodes_fehlernummer = $dom->getElementsByTagNameNS($namespace, 'fehlernummer');
+ if($domnodes_fehlernummer->length > 0)
+ {
+ $fehlercode = $domnodes_fehlernummer->item(0)->textContent;
+ if($fehlercode == 'ZD00001')
+ {
+ // Zu viele Requests pro Minute
+ $this->debug('Zu viele Requests pro Minute -> Pause');
+ sleep(30);
+ }
+ }
+
$domnodes_bpk = $dom->getElementsByTagNameNS($namespace, 'personenkennzeichen');
if($domnodes_bpk->length > 0)
{
diff --git a/soap/datenverbund_client.php b/soap/datenverbund_client.php
index 91245f1a0..4651c9f46 100644
--- a/soap/datenverbund_client.php
+++ b/soap/datenverbund_client.php
@@ -55,6 +55,7 @@ $matura = filter_input(INPUT_POST, 'matura');
$svnr = filter_input(INPUT_POST, 'svnr');
$ersatzkennzeichen = filter_input(INPUT_POST, 'ersatzkennzeichen');
$person_id = filter_input(INPUT_POST, 'person_id');
+$strasse = filter_input(INPUT_POST, 'strasse');
?>
@@ -78,6 +79,7 @@ $person_id = filter_input(INPUT_POST, 'person_id');
Matrikelnummer Vergabe melden
Gesamtprozess (Abfrage, ggf Vergabemeldung, Speichern bei Person)
BPK ermitteln
+ BPK ermitteln manuell
Portal: ".DVB_PORTAL;
@@ -152,6 +154,16 @@ $person_id = filter_input(INPUT_POST, 'person_id');
printrow('person_id', 'PersonID', $person_id);
break;
+ case 'pruefeBPK':
+ printrow('nachname', 'Nachname', $nachname, '', 255);
+ printrow('vorname', 'Vorname', $vorname, '', 30);
+ printrow('geburtsdatum', 'Geburtsdatum', $geburtsdatum, 'Format: YYYYMMDD', 10);
+ printrow('geschlecht', 'Geschlecht', $geschlecht, 'Format: M | W', 1);
+ printrow('postleitzahl', 'Postleitzahl', $postleitzahl, 'optional', 10);
+ printrow('strasse', 'Strasse', $strasse, 'optional', 255);
+
+ break;
+
default:
echo "Unknown action";
break;
@@ -296,6 +308,15 @@ if (isset($_REQUEST['submit']))
echo '
Fehlgeschlagen:'.$dvb->errormsg;
break;
+ case 'pruefeBPK':
+ $data = $dvb->pruefeBPK($geburtsdatum, $vorname, $nachname, $geschlecht, $postleitzahl, $strasse);
+ if(ErrorHandler::isSuccess($data))
+ {
+ echo '
OK BPK: '.$data->retval->bpk;
+ }
+ else
+ echo '
Fehlgeschlagen:'.$dvb->errormsg;
+ break;
default:
echo "Unknown action";
break;
diff --git a/vilesci/cronjobs/bpk.php b/vilesci/cronjobs/bpk.php
index 7fa7c8355..2d26634e3 100644
--- a/vilesci/cronjobs/bpk.php
+++ b/vilesci/cronjobs/bpk.php
@@ -85,6 +85,7 @@ $qry = "
WHERE
public.tbl_benutzer.aktiv = true
AND tbl_person.matr_nr is not null
+ AND tbl_person.bpk is null
AND studiengang_kz<10000
AND EXISTS(SELECT 1 FROM public.tbl_prestudent WHERE person_id=tbl_person.person_id AND bismelden=true)
AND gebdatum is not null";
@@ -93,10 +94,17 @@ if ($limit != '')
$qry .= " LIMIT ".$limit;
$db = new basis_db();
+$cnt = 0;
if ($result = $db->db_query($qry))
{
while ($row = $db->db_fetch_object($result))
{
+ $cnt++;
+ // Nach jeweils 25 Requests eine Pause einlegen damit die
+ // Anzahl Requests pro Minute nicht überschritten wird
+ if($cnt%25 == 0)
+ sleep(30);
+
echo $nl."Pruefe $row->person_id $row->vorname $row->nachname";
$data = $webservice->getBPK($row->person_id);
if (ErrorHandler::isSuccess($data))