ok
Direktori : /home2/selectio/www/myclassicfit.com/vendor/fakerphp/faker/src/Faker/Provider/en_GB/ |
Current File : /home2/selectio/www/myclassicfit.com/vendor/fakerphp/faker/src/Faker/Provider/en_GB/Company.php |
<?php namespace Faker\Provider\en_GB; class Company extends \Faker\Provider\Company { public const VAT_PREFIX = 'GB'; public const VAT_TYPE_DEFAULT = 'vat'; public const VAT_TYPE_BRANCH = 'branch'; public const VAT_TYPE_GOVERNMENT = 'gov'; public const VAT_TYPE_HEALTH_AUTHORITY = 'health'; /** * UK VAT number * * This method produces numbers that are _reasonably_ representative * of those issued by government * * @see https://en.wikipedia.org/wiki/VAT_identification_number#VAT_numbers_by_country */ public static function vat(string $type = null): string { switch ($type) { case static::VAT_TYPE_BRANCH: return static::generateBranchTraderVatNumber(); case static::VAT_TYPE_GOVERNMENT: return static::generateGovernmentVatNumber(); case static::VAT_TYPE_HEALTH_AUTHORITY: return static::generateHealthAuthorityVatNumber(); default: return static::generateStandardVatNumber(); } } /** * Standard * 9 digits (block of 3, block of 4, block of 2) * * This uses the format introduced November 2009 onward where the first * block starts from 100 and the final two digits are generated via a the * modulus 9755 algorithm */ private static function generateStandardVatNumber(): string { $firstBlock = static::numberBetween(100, 999); $secondBlock = static::randomNumber(4, true); return sprintf( '%s%d %d %d', static::VAT_PREFIX, $firstBlock, $secondBlock, static::calculateModulus97($firstBlock . $secondBlock), ); } /** * Health authorities * the letters HA then 3 digits from 500 to 999 (e.g. GBHA599) */ private static function generateHealthAuthorityVatNumber(): string { return sprintf( '%sHA%d', static::VAT_PREFIX, static::numberBetween(500, 999), ); } /** * Branch traders * 12 digits (as for 9 digits, followed by a block of 3 digits) */ private static function generateBranchTraderVatNumber(): string { return sprintf( '%s %d', static::generateStandardVatNumber(), static::randomNumber(3, true), ); } /** * Government departments * the letters GD then 3 digits from 000 to 499 (e.g. GBGD001) */ private static function generateGovernmentVatNumber(): string { return sprintf( '%sGD%s', static::VAT_PREFIX, str_pad((string) static::numberBetween(0, 499), 3, '0', STR_PAD_LEFT), ); } /** * Apply a Modulus97 algorithm to an input * * @see https://library.croneri.co.uk/cch_uk/bvr/43-600 */ public static function calculateModulus97(string $input, bool $use9755 = true): string { $digits = str_split($input); if (count($digits) !== 7) { throw new \InvalidArgumentException(); } $multiplier = 8; $sum = 0; foreach ($digits as $digit) { $sum += (int) $digit * $multiplier; --$multiplier ; } if ($use9755) { $sum = $sum + 55; } while ($sum > 0) { $sum -= 97; } $sum = $sum * -1; return str_pad((string) $sum, 2, '0', STR_PAD_LEFT); } }