fix validation
This commit is contained in:
parent
69709915ea
commit
b208ae2a99
2 changed files with 31 additions and 16 deletions
|
@ -16,5 +16,5 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
[assembly: Guid("aaf08873-14e5-411d-8ec8-629782ac8f03")]
|
[assembly: Guid("aaf08873-14e5-411d-8ec8-629782ac8f03")]
|
||||||
|
|
||||||
[assembly: AssemblyVersion("2.1.22098.1123")]
|
[assembly: AssemblyVersion("2.1.22098.1531")]
|
||||||
[assembly: AssemblyFileVersion("2.1.22098.1123")]
|
[assembly: AssemblyFileVersion("2.1.22098.1531")]
|
|
@ -27,7 +27,7 @@ namespace FCS.Lib.Utility
|
||||||
// C8 check-digit MOD11
|
// C8 check-digit MOD11
|
||||||
// C1 > 0
|
// C1 > 0
|
||||||
// R = (2*C1 + 7*C2 + 6*C3 + 5*C4 + 4*C5 + 3*C6 + 2*C7 + C8)
|
// R = (2*C1 + 7*C2 + 6*C3 + 5*C4 + 4*C5 + 3*C6 + 2*C7 + C8)
|
||||||
if(vatNumber.Length == 8 && long.Parse(vatNumber) != 0)
|
if(vatNumber.Length == 8 && long.TryParse(vatNumber, out _))
|
||||||
return ValidateMod11(vatNumber);
|
return ValidateMod11(vatNumber);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -39,9 +39,16 @@ namespace FCS.Lib.Utility
|
||||||
// C1..C8 random 0 to 9
|
// C1..C8 random 0 to 9
|
||||||
// C9 check-digit MOD11
|
// C9 check-digit MOD11
|
||||||
// C10 C11 C12 chars == MVA
|
// C10 C11 C12 chars == MVA
|
||||||
if (vatNumber.Length == 9 && long.Parse(vatNumber) != 0)
|
try
|
||||||
return ValidateMod11(vatNumber);
|
{
|
||||||
return false;
|
if (vatNumber.Length == 9 && long.TryParse(vatNumber, out _))
|
||||||
|
return ValidateMod11(vatNumber);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool ValidateFormatSe(string vatNumber)
|
private static bool ValidateFormatSe(string vatNumber)
|
||||||
|
@ -54,7 +61,7 @@ namespace FCS.Lib.Utility
|
||||||
// https://www.skatteverket.se/skatter/mervardesskattmoms/momsregistreringsnummer.4.18e1b10334ebe8bc80002649.html
|
// https://www.skatteverket.se/skatter/mervardesskattmoms/momsregistreringsnummer.4.18e1b10334ebe8bc80002649.html
|
||||||
// C11 C12 == 01 (De två sista siffrorna är alltid 01)
|
// C11 C12 == 01 (De två sista siffrorna är alltid 01)
|
||||||
|
|
||||||
if (vatNumber.Length != 12 || vatNumber.Substring(10) != "01" || long.Parse(vatNumber) == 0)
|
if (vatNumber.Length != 12 || vatNumber.Substring(10) != "01" || !long.TryParse(vatNumber, out _))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var r = new[] { 0, 2, 4, 6, 8 }
|
var r = new[] { 0, 2, 4, 6, 8 }
|
||||||
|
@ -67,20 +74,28 @@ namespace FCS.Lib.Utility
|
||||||
|
|
||||||
private static bool ValidateMod11(string number)
|
private static bool ValidateMod11(string number)
|
||||||
{
|
{
|
||||||
if (long.Parse(number) == 0)
|
try
|
||||||
return false;
|
|
||||||
var sum = 0;
|
|
||||||
for (int i = number.Length - 1, multiplier = 1; i >= 0; i--)
|
|
||||||
{
|
{
|
||||||
// Console.WriteLine($"char: {number[i]} multiplier: {multiplier}");
|
if (long.Parse(number) == 0)
|
||||||
sum += (int)char.GetNumericValue(number[i]) * multiplier;
|
return false;
|
||||||
if (++multiplier > 7) multiplier = 2;
|
var sum = 0;
|
||||||
|
for (int i = number.Length - 1, multiplier = 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
// Console.WriteLine($"char: {number[i]} multiplier: {multiplier}");
|
||||||
|
sum += (int)char.GetNumericValue(number[i]) * multiplier;
|
||||||
|
if (++multiplier > 7) multiplier = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sum % 11 == 0;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sum % 11 == 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string SanitizeVatNumber(string vatNumber)
|
public static string SanitizeVatNumber(string vatNumber)
|
||||||
{
|
{
|
||||||
vatNumber = vatNumber.ToUpperInvariant();
|
vatNumber = vatNumber.ToUpperInvariant();
|
||||||
return vatNumber
|
return vatNumber
|
||||||
|
|
Loading…
Reference in a new issue