Skip to main content

Pflichtfeldprüfung - Entweder Oder

Hin und wieder reicht die einfache Pflichtfeldprüfung nicht aus z.B. wenn eines von zwei Feldern gefüllt sein muss. Für diesen Fall kann unten angegebene Funktion im UserExit ValidateDocument aufgerufen werden.

Die letzten beiden Parameter der Funktion müssen den technischen Feldnamen der zu prüfenden Feldern entsprechen.
Beispiel:

checkEitherOrField($db, $fieldList, $logger, 'VatId', 'TaxId');

Hier die Funktion, die als Entweder-Order Prüfung genutzt werden kann:

function checkEitherOrField(PDO $db, xDocumentFieldCollection $fieldList, Logger $logger, string $firstFieldName, string $secondFieldName){
	
	$firstField = $fieldList->getDocumentFieldByName($firstFieldName);
	$secondField = $fieldList->getDocumentFieldByName($secondFieldName);
	
	if ($firstField == null) {
        $logger->error("Field with name '".$firstFieldName."' does not exist");
		return false;
    }
	
	if ($secondField == null) {
        $logger->error("Field with name '".$secondFieldName."' does not exist");
		return false;
    }
	
	if ($firstField->getValue()->value == "" and $secondField->getValue()->value == "") {
		$firstField->state = "ERROR";
        $firstField->errortext = __('The field %s may not be empty!', $firstField->description);
        $fieldList->updateField($firstField);
		
		$secondField->state = "ERROR";
        $secondField->errortext = __('The field %s may not be empty!', $secondField->description);
        $fieldList->updateField($secondField);
	} else {
		$firstField->state = "";
        $firstField->errortext = __("The field is valid!");
        $fieldList->updateField($firstField);
		
		$secondField->state = "";
        $secondField->errortext = __("The field is valid!");
        $fieldList->updateField($secondField);
	}
}