Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:pm_adressencheck_pu

pm_AdressenCheck_Pu

Eine sehr spezielle (daher auch der unübliche Name) Prozedur, die Adressen innerhalb des Landes Deutschland auf postalische Korrektheit überprüft.

Vorraussetzung ist, daß die Datenbank „dstorechecks“ installiert ist und folgende Tabellen vorhanden (und entsprechend gefüllt) sind :

ORT_DA
PLZ_DA
SOUNDEX_ORTE
SOUNDEX_STRASSEN
STRA_DB

Die Tabellen „ORT_DA“, „PLZ_DA“ und „STRA_DB“ können durch entsprechende Installation von der „Frachtleitdaten“-CD der Deutschen Post eingerichtet werden. Die beiden „SOUNDEX…“-Tabellen werden durch den Aufruf von pm_GenerateSoundex_Ad gefüllt.

So funktioniert der Adreß-Check:

Zunächst wird überprüft, ob der Ort und die Postleitzahl (→ „Ort“, „PLZ“) zusammenpassen, d.h. ob eine sogenannte „AlOrt-Nummer“ ermittelt werden konnte. Ist dies der Fall, so geht es weiter zur Straßensuche.

Konnte keine „AlOrt-Nummer“ ermittelt werden, kann mit Hilfe des Parameters „OrtVorPLZ“ bestimmt werden, ob man davon
ausgeht, daß der Ort (→ „Ort“) bekannt ist (d.h. bis auf Rechstschreibfehler und Groß-/Kleinschreibung und kleine Abweichungen von der postalischen Schreibweise) eingegeben wurde („OrtVorPLZ = 1“, dies ist der Default-Wert), oder daß die Postleitzahl (→ „PLZ“) richtig eingegeben wurde („OrtVorPLZ = 0“) und nun als Ort einfach der zu der PLZ gehörende Ort gewählt wird.
Wird der Ort als bekannt vorausgesetzt, wird jetzt die passende Postleitzahl gesucht.

Bei der Straßensuche wird im Fall „StrasseVorPLZ“ bei erfolgloser Suche zunächst die „soundex“-Funktion angewendet, die
„ähnlich ausgesprochene“ Wörter erkennt; kann auch dadurch keine Straße gefunden werden, wird versucht, wenigstens alle
Straßen zu finden, die in den ERSTEN DREI BUCHSTABEN übereinstimmen.

Anmerkungen :
1. Der Hausnummernzusatz ist für den Adressen-Check irrelevant, DARF aber in „Hausnummer“ enthalten sein (es werden dann nur die ersten Zeichen berücksichtigt, solange es Zahlen sind - sobald ein Zeichen ungleich „0“, „1“, … „9“ kommt, wird der Rest verworfen)
2. Die Prozedur läßt nur Adressen zu, deren Auslieferungs_Status („PLZ_ART_AUSLIEFERUNG“) gleich „6“ oder „7“ ist, was bedeutet, daß die Auslieferung „direkt zur Haustür“ geht. Es kann also z.B. folgender Fall auftreten : In der Rückgabemenge enthalten „PLZ_Status“ und „Ort_Status“ den Wert „0“ oder „1“ (also „OK“ oder „möglicher Wert“), und die anderen Status-Felder enthalten die „3“ („noch nicht überprüft“), aber trotzdem wird „CorrectAdress = 2“ zurückgegeben. Dies ist eben dann der Fall, wenn Ort und PLZ zwar korrekt (oder möglich) sind, aber der Status „PLZ_ART_AUSLIEFERUNG“ NICHT den Wert „6“ oder „7“ hat, d.h. die Post die Ware nicht direkt bis zur Haustür liefern kann.

HTTP-MethodPOST
HTTP-AuthOptional
Tags
Engine-Kategorieperson management
Engine-TypDaten-Ermittlung
Letzte Aktualisierung6.0.0 (2010-03-26)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
PLZ Zu prüfende Postleitzahl
varchar(5)3.5.0
Ort Zugehöriger Ortsname
varchar(50)3.5.0
Strasse Name der Strasse
varchar(60)3.5.0
Hausnummer Hausnummer (Hausnummer-Zusatz darf enthalten sein, ist aber für die Überprüfung irrelevant)
varchar(10)3.5.0
ReturnResult1 „0“ : Ausgabe erfolgt NUR durch den Rückgabeparamter „CorrectAdress“
„1“ : Es gibt ZUSÄTZLICH eine Rückgabemenge
bit3.5.0
OrtVorPLZ1 „0“ : Bei Differenzen zwischen PLZ und Ort wird die PLZ als richtig angenommen
„1“ : Der Ort ist mit einer höhrern Wahrscheinlichkeit richtig als die PLZ
bit3.5.0
StrasseVorPLZ0 „0“ : Bei in PLZ-Gebiete aufgeteilten Orten ist die PLZ eher richtig als die Straße
„1“ : Die Angabe der Straße ist eher richtig als die Angabe der der PLZ
bit3.5.0

Rückgabe

wenn ReturnResult = 1

Spaltenname Beschreibung SQL-Datentyp4) ab Version
PLZPLZ der gefundenen Adresse
varchar(5)3.5.0
PLZ_StatusStatus der Überprüfung für die „PLZ“

Mögliche Werte:
0 : OK
1 : möglicher Wert
2 : falscher Wert
3 : noch nicht überprüft
tinyint3.5.0
OrtOrt der Adresse
varchar(50)3.5.0
Ort_StatusStatus der Überprüfung für den „Ort“

Mögliche Werte:
0 : OK
1 : möglicher Wert
2 : falscher Wert
3 : noch nicht überprüft
tinyint3.5.0
OrtZusatzevtl. Zusatz zum Ortsnamen
varchar(30)3.5.0
StrasseStrasse der gültigen Adresse
varchar(60)3.5.0
Strasse_StatusStatus der Überprüfung für die „Strasse“

Mögliche Werte:
0 : OK
1 : möglicher Wert
2 : falscher Wert
3 : noch nicht überprüft
tinyint3.5.0
HausnummerHausnummer der gefundenen Adresse
varchar(10)3.5.0
Hausnummer_StatusStatus der Überprüfung für die „Hausnummer“

Mögliche Werte:
0 : OK
1 : möglicher Wert
2 : falscher Wert
3 : noch nicht überprüft
tinyint3.5.0

Output-Parameter

CorrectAdress

„0“ : Die Angaben sind korrekt „1“ : Fehlerhafte Angaben, es wurde aber EINE richtige Adresse gefunden „2“ : Fehlerhafte Angaben, es wurde(n) KEINE oder MEHRERE korrekte Adresse(n) gefunden|

Mögliche Return-Codes

Code Beschreibung Quelle 5)
-500Falsche Parameternur indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

6.0.0 2010-03-26Neu-Kodierung und Verlagerung des Codes nach „_pm_AdressCheck“
5.0.0 2004-12-21Die intern verwendete Prozedur „_mi_RemoveCharacterString“ wurde durch eine verallgemeinerte Prozedur erstzt, nämlich „_mi_ReplaceCharacterString“
4.0.5 2003-10-04Explizite Datentyps-Konvertierung im Falle der Rückgabe von Konstanten oder „NULL“
3.5.22 2002-08-30
3.5.12 2001-10-17
3.5.11 2001-09-06
3.5.9 2001-06-16
3.5.8 2001-05-19
3.5.0 2000-11-23Erstmalig in dieser Version erstellt

Code-Snippets

Engine Playground

Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:

cURL

Unformatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/pm_AdressenCheck_Pu?PLZ=<value>&Ort=<value>&Strasse=<value>&Hausnummer=<value>'

Mit xmllint 6) formatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/pm_AdressenCheck_Pu?PLZ=<value>&Ort=<value>&Strasse=<value>&Hausnummer=<value>' | xmllint --format -
dStore_php
use dStore_php\WebService;
 
$service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80);
 
$request = new WebService\Requests\Engine\Procedure\Request(
			new WebService\Requests\AccessData('default'),
	'pm_AdressenCheck_Pu',
		array(
			'PLZ' => '<value>',
			'Ort' => '<value>',
			'Strasse' => '<value>',
			'Hausnummer' => '<value>',
			// 'ReturnResult' => 1,
			// 'OrtVorPLZ' => 1,
			// 'StrasseVorPLZ' => 0
		)
);
 
$service->execute($request);
 
			$xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument();
			$ResultSet = $xml_result->getRowsAsArray();
 
$OutputParams = $xml_result->getOutputParametersAsArray();
engine/execute

XML zur Ausführung mit der Methode engine/execute, z.B. per

curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?>
<ListOfBatches>
	<Batch No="0">
		<Procedure Name="pm_AdressenCheck_Pu">
			<Parameters>
				<Parameter Name="PLZ"><!-- varchar value --></Parameter>
				<Parameter Name="Ort"><!-- varchar value --></Parameter>
				<Parameter Name="Strasse"><!-- varchar value --></Parameter>
				<Parameter Name="Hausnummer"><!-- varchar value --></Parameter>
				<!-- <Parameter Name="ReturnResult">1</Parameter> -->
				<!-- <Parameter Name="OrtVorPLZ">1</Parameter> -->
				<!-- <Parameter Name="StrasseVorPLZ">0</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
Pflichtparameter sind unterstrichen
5)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
6)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/pm_adressencheck_pu.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)