From 4f6a0b17ed16803651ea2e79fb3e9a5e2be05c9b Mon Sep 17 00:00:00 2001 From: cmp167 Date: Fri, 2 Sep 2022 10:45:07 +1200 Subject: [PATCH] Add isINN and isSnils --- cmpUtil.php | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 86 insertions(+), 2 deletions(-) diff --git a/cmpUtil.php b/cmpUtil.php index 968814b..607c2fb 100644 --- a/cmpUtil.php +++ b/cmpUtil.php @@ -207,10 +207,15 @@ "output" => $out ); - $err = @file("/tmp/fgExec.err"); + $ff = "/tmp/fgExec.err"; + + $err = @file($ff); // var_export($err); - for($i = 0; $i < count($err); $i++) { + if(!is_array($err)) { + $a["stderr"][] = "Can't read file: $ff"; + } + else for($i = 0; $i < count($err); $i++) { $str = trim($err[$i], "\r\n"); // $this->d($str); @@ -322,6 +327,85 @@ return null; } + function isINN($inn) { + $inn = (string) $inn; + + if(!preg_match("/^[0-9]{10,12}$/", $inn)) { + return null; + } + + switch(strlen($inn)) { + case 10: + $n = 0; + + foreach([2, 4, 10, 3, 5, 9, 4, 6, 8] as $i => $k) { + $n += $k * (int) $inn[$i]; + } + + $n10 = $n % 11 % 10; + + if($n10 === (int) $inn[9]) + return true; + + return false; + + case 12: + $n = 0; + + foreach([7, 2, 4, 10, 3, 5, 9, 4, 6, 8] as $i => $k) { + $n += $k * (int) $inn[$i]; + } + + $n11 = $n % 11 % 10; + + $n = 0; + + foreach([3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8] as $i => $k) { + $n += $k * (int) $inn[$i]; + } + + $n12 = $n % 11 % 10; + + if(($n11 === (int) $inn[10]) && ($n12 === (int) $inn[11])) + return true; + + return false; + } + + return false; + } + + function isSnils($snils) { + $snils = (string) $snils; + + if(!preg_match("/^[0-9]{11}$/", $snils)) { + return null; + } + + $sum = 0; + + for($i = 0; $i < 9; $i++) { + $sum += (int) $snils[$i] * (9 - $i); + } + + $cs = 0; + + if ($sum < 100) { + $cs = $sum; + } elseif ($sum > 101) { + $cs = $sum % 101; + if ($cs === 100) { + $cs = 0; + } + } + + if($cs === (int) substr($snils, -2)) { + return true; + } + + return false; + } + // END }