diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f99eb8427..214c7ed0fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Removed domain `gmail.com.au` from `Provider\en_AU\Internet` (#886) - Refreshed ISO currencies (#919) - Improved italian phone number formats +- Fixed en_GB standard VAT numbers having an incorrect length if the check digit has a leading zero ## [2024-11-09, v1.24.0](https://github.com/FakerPHP/Faker/compare/v1.23.1..v1.24.0) diff --git a/src/Faker/Provider/en_GB/Company.php b/src/Faker/Provider/en_GB/Company.php index b0c3ccc721..ca20f44253 100644 --- a/src/Faker/Provider/en_GB/Company.php +++ b/src/Faker/Provider/en_GB/Company.php @@ -49,7 +49,7 @@ private static function generateStandardVatNumber(): string $secondBlock = static::randomNumber(4, true); return sprintf( - '%s%d %d %d', + '%s%s %s %s', static::VAT_PREFIX, $firstBlock, $secondBlock, @@ -64,7 +64,7 @@ private static function generateStandardVatNumber(): string private static function generateHealthAuthorityVatNumber(): string { return sprintf( - '%sHA%d', + '%sHA%s', static::VAT_PREFIX, static::numberBetween(500, 999), ); @@ -77,7 +77,7 @@ private static function generateHealthAuthorityVatNumber(): string private static function generateBranchTraderVatNumber(): string { return sprintf( - '%s %d', + '%s %s', static::generateStandardVatNumber(), static::randomNumber(3, true), ); diff --git a/test/Faker/Provider/en_GB/CompanyTest.php b/test/Faker/Provider/en_GB/CompanyTest.php index 7780b1f5c7..472beb1c4c 100644 --- a/test/Faker/Provider/en_GB/CompanyTest.php +++ b/test/Faker/Provider/en_GB/CompanyTest.php @@ -66,6 +66,15 @@ public function testVatHealthAuthorityType(): void self::assertTrue($matches[1] < 1000); } + public function testLeadingZeroInModulus97BlockRemainsAfterFormatting(): void + { + // Force Faker to generate VAT number GB216 5727 07 + $this->faker->seed(297957); + $number = $this->faker->vat(); + $this->assertDefaultVatFormat($number); + self::assertStringEndsWith('07', substr($number, -2)); + } + protected function getProviders(): iterable { yield new Company($this->faker);