From 572d92affae88e9423eb3c06ca1102f3cae14d1b Mon Sep 17 00:00:00 2001 From: sananguliyev Date: Mon, 23 Feb 2026 19:34:28 +0100 Subject: [PATCH 1/3] fix: map BZSt REST API comparison result fields correctly in ConfirmationResult --- src/Response/ConfirmationResult.php | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Response/ConfirmationResult.php b/src/Response/ConfirmationResult.php index 2411b00..75d517a 100644 --- a/src/Response/ConfirmationResult.php +++ b/src/Response/ConfirmationResult.php @@ -40,10 +40,18 @@ public static function fromArray(array $data): self street: $data['ergStrasse'] ?? null, postalCode: $data['ergPlz'] ?? null, city: $data['ergOrt'] ?? null, - companyNameResult: isset($data['ergFirmennameResult']) ? ComparisonResult::from($data['ergFirmennameResult']) : null, - streetResult: isset($data['ergStrasseResult']) ? ComparisonResult::from($data['ergStrasseResult']) : null, - postalCodeResult: isset($data['ergPlzResult']) ? ComparisonResult::from($data['ergPlzResult']) : null, - cityResult: isset($data['ergOrtResult']) ? ComparisonResult::from($data['ergOrtResult']) : null, + companyNameResult: isset($data['ergFirmennameResult']) + ? ComparisonResult::from($data['ergFirmennameResult']) + : (isset($data['ergFirmenname']) ? ComparisonResult::tryFrom($data['ergFirmenname']) : null), + streetResult: isset($data['ergStrasseResult']) + ? ComparisonResult::from($data['ergStrasseResult']) + : (isset($data['ergStrasse']) ? ComparisonResult::tryFrom($data['ergStrasse']) : null), + postalCodeResult: isset($data['ergPlzResult']) + ? ComparisonResult::from($data['ergPlzResult']) + : (isset($data['ergPlz']) ? ComparisonResult::tryFrom($data['ergPlz']) : null), + cityResult: isset($data['ergOrtResult']) + ? ComparisonResult::from($data['ergOrtResult']) + : (isset($data['ergOrt']) ? ComparisonResult::tryFrom($data['ergOrt']) : null), ); } From 985095c35990356ebb643c2e740192531bd18c4d Mon Sep 17 00:00:00 2001 From: sananguliyev Date: Mon, 23 Feb 2026 19:39:12 +0100 Subject: [PATCH 2/3] simplify mapping --- src/Response/ConfirmationResult.php | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/Response/ConfirmationResult.php b/src/Response/ConfirmationResult.php index 75d517a..dc9f243 100644 --- a/src/Response/ConfirmationResult.php +++ b/src/Response/ConfirmationResult.php @@ -40,18 +40,10 @@ public static function fromArray(array $data): self street: $data['ergStrasse'] ?? null, postalCode: $data['ergPlz'] ?? null, city: $data['ergOrt'] ?? null, - companyNameResult: isset($data['ergFirmennameResult']) - ? ComparisonResult::from($data['ergFirmennameResult']) - : (isset($data['ergFirmenname']) ? ComparisonResult::tryFrom($data['ergFirmenname']) : null), - streetResult: isset($data['ergStrasseResult']) - ? ComparisonResult::from($data['ergStrasseResult']) - : (isset($data['ergStrasse']) ? ComparisonResult::tryFrom($data['ergStrasse']) : null), - postalCodeResult: isset($data['ergPlzResult']) - ? ComparisonResult::from($data['ergPlzResult']) - : (isset($data['ergPlz']) ? ComparisonResult::tryFrom($data['ergPlz']) : null), - cityResult: isset($data['ergOrtResult']) - ? ComparisonResult::from($data['ergOrtResult']) - : (isset($data['ergOrt']) ? ComparisonResult::tryFrom($data['ergOrt']) : null), + companyNameResult: isset($data['ergFirmenname']) ? ComparisonResult::tryFrom($data['ergFirmenname']) : null, + streetResult: isset($data['ergStrasse']) ? ComparisonResult::tryFrom($data['ergStrasse']) : null, + postalCodeResult: isset($data['ergPlz']) ? ComparisonResult::tryFrom($data['ergPlz']) : null, + cityResult: isset($data['ergOrt']) ? ComparisonResult::tryFrom($data['ergOrt']) : null, ); } From 0466f81a476f5317ddb6c271ee290f15769bc41a Mon Sep 17 00:00:00 2001 From: sananguliyev Date: Mon, 23 Feb 2026 19:52:50 +0100 Subject: [PATCH 3/3] simplify confirmation result --- src/Response/ConfirmationResult.php | 24 ++++++++---------------- tests/EvatrClientTest.php | 21 ++++++++------------- 2 files changed, 16 insertions(+), 29 deletions(-) diff --git a/src/Response/ConfirmationResult.php b/src/Response/ConfirmationResult.php index dc9f243..605dc07 100644 --- a/src/Response/ConfirmationResult.php +++ b/src/Response/ConfirmationResult.php @@ -15,14 +15,10 @@ public function __construct( public readonly ?string $id = null, public readonly ?string $validFrom = null, public readonly ?string $validUntil = null, - public readonly ?string $companyName = null, - public readonly ?string $street = null, - public readonly ?string $postalCode = null, - public readonly ?string $city = null, - public readonly ?ComparisonResult $companyNameResult = null, - public readonly ?ComparisonResult $streetResult = null, - public readonly ?ComparisonResult $postalCodeResult = null, - public readonly ?ComparisonResult $cityResult = null, + public readonly ?ComparisonResult $companyName = null, + public readonly ?ComparisonResult $street = null, + public readonly ?ComparisonResult $postalCode = null, + public readonly ?ComparisonResult $city = null, ) {} /** @@ -36,14 +32,10 @@ public static function fromArray(array $data): self id: $data['id'] ?? null, validFrom: $data['gueltigAb'] ?? null, validUntil: $data['gueltigBis'] ?? null, - companyName: $data['ergFirmenname'] ?? null, - street: $data['ergStrasse'] ?? null, - postalCode: $data['ergPlz'] ?? null, - city: $data['ergOrt'] ?? null, - companyNameResult: isset($data['ergFirmenname']) ? ComparisonResult::tryFrom($data['ergFirmenname']) : null, - streetResult: isset($data['ergStrasse']) ? ComparisonResult::tryFrom($data['ergStrasse']) : null, - postalCodeResult: isset($data['ergPlz']) ? ComparisonResult::tryFrom($data['ergPlz']) : null, - cityResult: isset($data['ergOrt']) ? ComparisonResult::tryFrom($data['ergOrt']) : null, + companyName: isset($data['ergFirmenname']) ? ComparisonResult::tryFrom($data['ergFirmenname']) : null, + street: isset($data['ergStrasse']) ? ComparisonResult::tryFrom($data['ergStrasse']) : null, + postalCode: isset($data['ergPlz']) ? ComparisonResult::tryFrom($data['ergPlz']) : null, + city: isset($data['ergOrt']) ? ComparisonResult::tryFrom($data['ergOrt']) : null, ); } diff --git a/tests/EvatrClientTest.php b/tests/EvatrClientTest.php index 0b05bbf..5a8d639 100644 --- a/tests/EvatrClientTest.php +++ b/tests/EvatrClientTest.php @@ -58,14 +58,10 @@ public function testQualifiedQueryReturnsComparisonResults(): void new Response(200, ['Content-Type' => 'application/json'], json_encode([ 'status' => 'evatr-0000', 'anfrageZeitpunkt' => '2026-02-17T10:00:00Z', - 'ergFirmenname' => 'Test GmbH', - 'ergOrt' => 'Berlin', - 'ergStrasse' => 'Teststr. 1', - 'ergPlz' => '10115', - 'ergFirmennameResult' => 'A', - 'ergOrtResult' => 'A', - 'ergStrasseResult' => 'B', - 'ergPlzResult' => 'C', + 'ergFirmenname' => 'A', + 'ergOrt' => 'A', + 'ergStrasse' => 'B', + 'ergPlz' => 'C', ])), ]); @@ -81,11 +77,10 @@ public function testQualifiedQueryReturnsComparisonResults(): void $result = $client->verifyVatId($query); $this->assertSame(StatusCode::VALID, $result->status); - $this->assertSame('Test GmbH', $result->companyName); - $this->assertSame(ComparisonResult::MATCH, $result->companyNameResult); - $this->assertSame(ComparisonResult::MATCH, $result->cityResult); - $this->assertSame(ComparisonResult::MISMATCH, $result->streetResult); - $this->assertSame(ComparisonResult::NOT_REQUESTED, $result->postalCodeResult); + $this->assertSame(ComparisonResult::MATCH, $result->companyName); + $this->assertSame(ComparisonResult::MATCH, $result->city); + $this->assertSame(ComparisonResult::MISMATCH, $result->street); + $this->assertSame(ComparisonResult::NOT_REQUESTED, $result->postalCode); } public function testInvalidVatIdReturnsNonValidResult(): void