Allgemeine Informationen
Bei jedem Stammdatenimport können die zu importierenden Daten aufbereitet werden.
Für die Aufbereitung der Stammdaten stehen vordefinierte UserExits zur Verfügung, die für diesen Zweck genutzt werden können.
UserExit Verzeichnis
Das UserExit-Verzeichnis für die Nutzung ist immer \htdocs\repository\client.server.net\UserExits\MasterData\tabellenname.php
Ein Beispiel für die Aufbereitung der Lieferantenstammdaten wäre also z.B.:\htdocs\repository\localhost\UserExits\MasterData\creditors.php
UserExit Funktion
In der UserExit Datei der jeweiligen Tabelle muss eine Function mit einem bestimmten Namen vorhanden sein.
Der Name dieser Funktion leitet sich aus dem technischen Tabellennamen ab. Hier der Rumpf für das oben angegebene Beispiel:
<?php
function Enhance_Creditors(array $data): ?array
{
return $data;
}
In der Variablen $data ist eine Zeile mit allen Spalten enthalten. Diese Zeile kann nun nach den jeweiligen Anforderungen überprüft und aufbereitet werden.
Sollen z.B. die Leerzeichen einer IBAN entfernt werden und das Land mit Großbuchstaben dargestellt werden, so könnte folgende Funktion genutzt werden:
<?php
function Enhance_Creditors(array $data): ?array
{
// Enhance IBAN
if (isset($data['IBAN'])) {
$data['IBAN'] = strtoupper(str_replace(' ', '', $data['IBAN']));
}
return $data;
}
Wie in diesem Beispiel zu sehen ist, wird auf die Daten der Spalte IBAN auf das Array $data['IBAN']
zugegriffen.
Die Leerzeichen dieser IBAN werden mit der Funktion str_replace(' ', '', $data['IBAN'])
ersetzt und mit der umschließenden Funktion strtoupper()
werden alle Buchstaben in Großbuchstaben gewandelt.
Aus dem Wert De12 1234 5678 9012 3456 78
würde mit dieser Funktion der Wert DE12123456789012345678
erzeugt werden.
Ausnahmen definieren
Soll ein ganzer Datensatz nicht importiert werden, dann muss lediglich der Wert null
zurückgegeben werden. Soll also zum Beispiel der Datensatz nicht importiert werden, wenn keine IBAN angegeben wurde so wäre folgende Erweiterung möglich:
<?php
function Enhance_Creditors(array $data): ?array
{
// Enhance IBAN
if (isset($data['IBAN'])) {
$data['IBAN'] = strtoupper(str_replace(' ', '', $data['IBAN']));
if ($data['IBAN'] === '') {
return null; // verhindert den Import des gesammten Datensatzes
}
}
return $data;
}
No Comments