SwagVatIdValidation 500er Fehler

Hallo zusammen,

ein Kunde berichtet seit einiger Zeit von Fehlversuchen bei der Anmeldung mit VAT-ID (erweiterte Prüfung).
Ich habe es in verschiedenen Konfigurationen versucht, konnte den Fehler aber nicht nachstellen.
Es passiert laut Log sowohl bei Neuregistrierungen als auch bei Bestandskunden beim Checkout.
Fehler im Log ist

AH01071: Got error 'PHP message: PHP Fatal error:  Uncaught TypeError: Argument 1 passed to SwagVatIdValidation\\Components\\ValidationService::removeVatIdFromBilling() must be of the type int, null given, called in /domain/web/custom/plugins/SwagVatIdValidation/Components/ValidationService.php on line 164 and defined in /domain/web/custom/plugins/SwagVatIdValidation/Components/ValidationService.php:314\nStack trace:\n#0 /domain/web/custom/plugins/SwagVatIdValidation/Components/ValidationService.php(164): SwagVatIdValidation\\Components\\ValidationService->removeVatIdFromBilling()\n#1 /domain/web/custom/plugins/SwagVatIdValidation/Bundle/AccountBundle/Constraints/AdvancedVatIdValidator.php(68): SwagVatIdValidation\\Components\\ValidationService->validateVatId()\n#2 /domain/web/vendor/symfony/validator/Validator/RecursiveContextualValidator.php(769): SwagVatIdValidation\\Bundle\\AccountBundle\\Constraints\\AdvancedVatIdVali...', referer: https://domain/en/account

Aufruf im access.log:

"POST /en/register/saveRegister/sTarget/account/sTargetAction/index HTTP/1.1" 500 6523

Es sieht ja so aus, als würde die Rechnungsadresse nicht (korrekt?) übergeben werden.
Fällt jemandem ein, in welchem Zusammenhang diese Konstellation eintreten könnte?
Shopware 5.7.7
SwagVatIdValidation 2.0.9

Danke für jeden Hinweis.

PS: schaltet man die E-Mail-Benachrichtigung nur mittels „Shopbetreiber-E-Mail-Adresse“ ein funktioniert die Benachrichtigung nicht, da

$emailNotification = $this->config->get(VatIdConfigReaderInterface::EMAIL_NOTIFICATION);

in \SwagVatIdValidation\Components\ValidationService::getEmailAddress den String „1“ zurückgibt und das wg.

(\is_string($emailNotification))

als E-Mailadressse zu interpretieren versucht.
Gibt man direkt eine E-Mailadresse ein geht es.

Hallo @herieth

genau dieser Fehler wurde mit der Version 2.0.9 behoben. Kannst du noch mal schauen, wie die Methode bei dir im Code aussieht?

Viele Grüße aus Schöppingen
Michael Telgmann

Hallo Michael,

ich vermute die Frage bezieht sich auf das PS:

custom/plugins/SwagVatIdValidation/plugin.xml

<?xml version="1.0" encoding="utf-8"?>
<plugin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/shopware/shopware/5.6/engine/Shopware/Components/Plugin/schema/plugin.xsd">

    <label lang="de">Umsatzsteuer-ID Prüfung</label>
    <label lang="en">Vat ID-Validation</label>
    <version>2.0.9</version>

custom/plugins/SwagVatIdValidation/Components/ValidationService.php

    private function getEmailAddress()
    {
        $emailNotification = $this->config->get(VatIdConfigReaderInterface::EMAIL_NOTIFICATION);
 
        if (\is_string($emailNotification)) {
            $emailAddress = $emailNotification;
        } elseif ($emailNotification) {
            $emailAddress = $this->config->get('sMAIL');
        } else {
            return false;
        }
        
        return \filter_var($emailAddress, \FILTER_VALIDATE_EMAIL);
    }

die Datenbank speichert in der config unter „shopEmailNotification“

s:1:"1";

also einen String „1“
Cache sollte es ja wohl nicht sein (hab ich aber gecleant). Vielleicht sollte ich das Plugin neu installieren?
Schöne Grüße aus Köln
Helmut Rieth

Hallo Michael,

sorry, bezieht sich wohl auf

<changelog version="2.0.9">
        <changes lang="de">PT-12589 - Fehlverhalten bei Validierung von ungültiger ID korrigiert;</changes>

Welche Methode genau meinst Du? Diese hier in
custom/plugins/SwagVatIdValidation/Components/ValidationService.php

    /**
     * Helper function to remove the VAT Id from the customer billing address
     */
    private function removeVatIdFromBilling(?int $billingAddressId, VatIdValidatorResult $result, bool $deleteVatIdFromAddress): void
    {
        if (!$deleteVatIdFromAddress || empty($billingAddressId)) {
            return;
        }

        $billingAddress = $this->modelManager->getRepository(Address::class)->find($billingAddressId);

        if (!$billingAddress instanceof Address) {
            return;
        }

        $billingAddress->setVatId(null);

        $this->modelManager->persist($billingAddress);
        $this->modelManager->flush($billingAddress);

        $country = $billingAddress->getCountry();
        if (!$country instanceof Country) {
            return;
        }

        $company = $billingAddress->getCompany();
        if ($company === null) {
            return;
        }

        if ($this->isVatIdRequired($company, $country->getId())) {
            $result->setVatIdRequired();
        }
    }

evt. hat sich das dann erledigt, da wir das Update gerade gestern gemacht haben …

Schöne Grüße aus Köln
Helmut

Hallo Helmut,

genau, beobachte das mal weiter, der Fehler sollte nicht mehr auftreten.

Für das Config Problem habe ich gestern bereits ein Ticket angelegt: Shopware Issuetracker

Viele Grüße aus Schöppingen
Michael Telgmann

Hallo Michael,

wir haben ebenfalls ein Problem mit dem Plugin, ebenfalls 2.0.9 aber Shopware 5.6.9 und einer anderen Fehlermeldung im Checkout.

Vor allem tritt der Fehler nicht kontinuierlich auf. Wir erhalten folgenden Fehler.

Hat jemand auch schon diesen Fehler gehabt oder kann mir einen Tipp geben.

Danke

Gruß René

Hallo René,

kannst du dafür bitte ein Ticket erstellen? Shopware Issuetracker

Viele Grüße aus Schöppingen
Michael Telgmann