From 4c1a80d78d62dd47ef794eb6dfc342368bbe3a16 Mon Sep 17 00:00:00 2001 From: Arto Rozenga Date: Mon, 28 Aug 2017 14:37:34 +0200 Subject: [PATCH 1/7] Added idNumber --- src/Faker/Provider/nl_NL/Person.php | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/Faker/Provider/nl_NL/Person.php b/src/Faker/Provider/nl_NL/Person.php index 075628d5fe..114b9a3340 100644 --- a/src/Faker/Provider/nl_NL/Person.php +++ b/src/Faker/Provider/nl_NL/Person.php @@ -314,4 +314,35 @@ public static function prefix() { return static::randomElement(static::$prefix); } + + /** + * 11 proof idNumber + * @return string + */ + public function idNumber() + { + $return = ''; + $nr = []; + $nr[] = 0; + while(count($nr) < 8) { + $nr[] = rand(0,9); + } + $nr[] = rand(0,6); + + $nr = [ 0,9,2,1,5,0,3,0,2]; + if( $nr[7]==0 && $nr[8]==0) $nr[7]=0; + + $bsn = (9*$nr[8]) + (8*$nr[7]) + (7*$nr[6]) + (6*$nr[5]) + (5*$nr[4]) + (4*$nr[3]) + (3*$nr[2]) + (2*$nr[1]); + $nr[0] = floor($bsn-floor($bsn/11) * 11); + if( $nr[0] > 9) { + if( $nr[1]>0) { + $nr[0]=8; + $nr[1]--; + } else { + $nr[0]=1; + $nr[1]++; + + } + } + } From b68b7c67e0aaa2bb1cb8ab56017212c537e95556 Mon Sep 17 00:00:00 2001 From: Arto Rozenga Date: Mon, 28 Aug 2017 14:44:53 +0200 Subject: [PATCH 2/7] Removed test numbers --- src/Faker/Provider/nl_NL/Person.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Faker/Provider/nl_NL/Person.php b/src/Faker/Provider/nl_NL/Person.php index 114b9a3340..ed74a86b2f 100644 --- a/src/Faker/Provider/nl_NL/Person.php +++ b/src/Faker/Provider/nl_NL/Person.php @@ -328,8 +328,6 @@ public function idNumber() $nr[] = rand(0,9); } $nr[] = rand(0,6); - - $nr = [ 0,9,2,1,5,0,3,0,2]; if( $nr[7]==0 && $nr[8]==0) $nr[7]=0; $bsn = (9*$nr[8]) + (8*$nr[7]) + (7*$nr[6]) + (6*$nr[5]) + (5*$nr[4]) + (4*$nr[3]) + (3*$nr[2]) + (2*$nr[1]); From d7554fbac3b9171f227083f6c2a9e42f2ab02316 Mon Sep 17 00:00:00 2001 From: Arto Rozenga Date: Mon, 28 Aug 2017 17:13:59 +0200 Subject: [PATCH 3/7] Added PersonTest Fixed IdNumber returning correct value Added link to description --- src/Faker/Provider/nl_NL/Person.php | 32 +++++++++++++----------- test/Faker/Provider/nl_NL/PersonTest.php | 32 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 test/Faker/Provider/nl_NL/PersonTest.php diff --git a/src/Faker/Provider/nl_NL/Person.php b/src/Faker/Provider/nl_NL/Person.php index ed74a86b2f..fe40d32c6e 100644 --- a/src/Faker/Provider/nl_NL/Person.php +++ b/src/Faker/Provider/nl_NL/Person.php @@ -316,31 +316,35 @@ public static function prefix() } /** - * 11 proof idNumber + * @link https://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef + * * @return string */ public function idNumber() { $return = ''; - $nr = []; - $nr[] = 0; - while(count($nr) < 8) { - $nr[] = rand(0,9); + $nr = []; + $nr[] = 0; + while (count($nr) < 8) { + $nr[] = static::randomDigit(); + } + $nr[] = mt_rand(0, 6); + if ($nr[7] == 0 && $nr[8] == 0) { + $nr[7] = 0; } - $nr[] = rand(0,6); - if( $nr[7]==0 && $nr[8]==0) $nr[7]=0; - $bsn = (9*$nr[8]) + (8*$nr[7]) + (7*$nr[6]) + (6*$nr[5]) + (5*$nr[4]) + (4*$nr[3]) + (3*$nr[2]) + (2*$nr[1]); - $nr[0] = floor($bsn-floor($bsn/11) * 11); - if( $nr[0] > 9) { - if( $nr[1]>0) { - $nr[0]=8; + $bsn = (9 * $nr[8]) + (8 * $nr[7]) + (7 * $nr[6]) + (6 * $nr[5]) + (5 * $nr[4]) + (4 * $nr[3]) + (3 * $nr[2]) + (2 * $nr[1]); + $nr[0] = floor($bsn - floor($bsn / 11) * 11); + if ($nr[0] > 9) { + if ($nr[1] > 0) { + $nr[0] = 8; $nr[1]--; } else { - $nr[0]=1; + $nr[0] = 1; $nr[1]++; } } - + return implode('',array_reverse($nr)); + } } diff --git a/test/Faker/Provider/nl_NL/PersonTest.php b/test/Faker/Provider/nl_NL/PersonTest.php new file mode 100644 index 0000000000..971fa78ad8 --- /dev/null +++ b/test/Faker/Provider/nl_NL/PersonTest.php @@ -0,0 +1,32 @@ +addProvider(new Person($faker)); + $this->faker = $faker; + } + + public function testGenerateValidIdNumber() + { + $idNumber = $this->faker->idNumber(); + $this->assertEquals(9, strlen($idNumber)); + + + $sum = -1 * $idNumber % 10; + for ($multiplier = 2; $idNumber > 0; $multiplier++) { + $val = ($idNumber /= 10) % 10; + $sum += $multiplier * $val; + } + $this->assertTrue($sum != 0 && $sum % 11 == 0); + } +} From 873f55c0c8b193faf1712a810b48d6e0fa984c2c Mon Sep 17 00:00:00 2001 From: Arto Rozenga Date: Tue, 29 Aug 2017 08:53:58 +0200 Subject: [PATCH 4/7] Fixed Code standard --- src/Faker/Provider/nl_NL/Person.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Faker/Provider/nl_NL/Person.php b/src/Faker/Provider/nl_NL/Person.php index fe40d32c6e..61b84d9650 100644 --- a/src/Faker/Provider/nl_NL/Person.php +++ b/src/Faker/Provider/nl_NL/Person.php @@ -345,6 +345,6 @@ public function idNumber() } } - return implode('',array_reverse($nr)); + return implode('', array_reverse($nr)); } } From 7f503e9022477e7b083b92db5fc2923285eb8ad8 Mon Sep 17 00:00:00 2001 From: Arto Rozenga Date: Tue, 29 Aug 2017 09:00:47 +0200 Subject: [PATCH 5/7] Fixed Traditional array syntax --- src/Faker/Provider/nl_NL/Person.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Faker/Provider/nl_NL/Person.php b/src/Faker/Provider/nl_NL/Person.php index 61b84d9650..0bd09a44e4 100644 --- a/src/Faker/Provider/nl_NL/Person.php +++ b/src/Faker/Provider/nl_NL/Person.php @@ -323,7 +323,7 @@ public static function prefix() public function idNumber() { $return = ''; - $nr = []; + $nr = array(); $nr[] = 0; while (count($nr) < 8) { $nr[] = static::randomDigit(); From db0ff3730b3649625a6f76c7640f83008d629238 Mon Sep 17 00:00:00 2001 From: Arto Rozenga Date: Wed, 30 Aug 2017 10:11:01 +0200 Subject: [PATCH 6/7] Updated README with locale-specific addition --- readme.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/readme.md b/readme.md index 6e75ce771b..298bf72f39 100644 --- a/readme.md +++ b/readme.md @@ -1276,6 +1276,14 @@ echo $faker->vat; // "NL123456789B01" - Dutch Value Added Tax number echo $faker->btw; // "NL123456789B01" - Dutch Value Added Tax number (alias) ``` +### `Faker\Provider\nl_NL\Person` + +```php +idNumber; // "111222333" - Dutch Personal identificatin number (BSN) +``` + ### `Faker\Provider\no_NO\Payment` ```php From 4256f24fa73e231b84ad8799378cbb89f8ada7a3 Mon Sep 17 00:00:00 2001 From: Arto Rozenga Date: Wed, 30 Aug 2017 10:55:51 +0200 Subject: [PATCH 7/7] Typo --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 298bf72f39..f4d9fcb00a 100644 --- a/readme.md +++ b/readme.md @@ -1281,7 +1281,7 @@ echo $faker->btw; // "NL123456789B01" - Dutch Value Added Tax number (alias) ```php idNumber; // "111222333" - Dutch Personal identificatin number (BSN) +echo $faker->idNumber; // "111222333" - Dutch Personal identification number (BSN) ``` ### `Faker\Provider\no_NO\Payment`