fix swedish vat validation

This commit is contained in:
FH 2022-04-08 12:26:13 +02:00
parent f4097dd316
commit 69709915ea
2 changed files with 19 additions and 17 deletions

View file

@ -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.22097.1714")] [assembly: AssemblyVersion("2.1.22098.1123")]
[assembly: AssemblyFileVersion("2.1.22097.1714")] [assembly: AssemblyFileVersion("2.1.22098.1123")]

View file

@ -1,4 +1,5 @@
using System.Linq; using System;
using System.Linq;
namespace FCS.Lib.Utility namespace FCS.Lib.Utility
{ {
@ -52,15 +53,16 @@ namespace FCS.Lib.Utility
// Si = int(Ci/5) + (Ci*2)MOD10) // Si = int(Ci/5) + (Ci*2)MOD10)
// 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.Parse(vatNumber) == 0)
return false; return false;
var r = new[] { 0, 2, 4, 5, 8 } var r = new[] { 0, 2, 4, 6, 8 }
.Sum(m => (int)char.GetNumericValue(vatNumber[m]) / 5 + .Sum(m => (int)char.GetNumericValue(vatNumber[m]) / 5 +
(int)char.GetNumericValue(vatNumber[m]) * 2 % 10); (int)char.GetNumericValue(vatNumber[m]) * 2 % 10);
var c1 = new[] { 1, 3, 5, 7 }.Sum(m => (int)char.GetNumericValue(vatNumber[m])); var c1 = new[] { 1, 3, 5, 7 }.Sum(m => (int)char.GetNumericValue(vatNumber[m]));
var c10 = (10 - (r + c1) % 10) % 10; var c10 = (10 - (r + c1) % 10) % 10;
return $"{vatNumber.Substring(0,9)}{c10}{vatNumber.Substring(9,1)}" == vatNumber; return $"{vatNumber.Substring(0, 9)}{c10}01" == vatNumber;
} }
private static bool ValidateMod11(string number) private static bool ValidateMod11(string number)
@ -78,18 +80,18 @@ namespace FCS.Lib.Utility
return sum % 11 == 0; return sum % 11 == 0;
} }
//private static string SanitizeVatNumber(string vatNumber) private static string SanitizeVatNumber(string vatNumber)
//{ {
// var washing = vatNumber.Replace(" ", "").Replace("-", "").ToUpperInvariant(); vatNumber = vatNumber.ToUpperInvariant();
// var result = washing.Replace("DK", "").Replace("NO", "").Replace("SE","") ; return vatNumber
// if (result.Contains("MVA")) .Replace(" ", "")
// result = result.Replace("MVA", ""); .Replace("-", "")
// return result.Length switch .Replace("DK", "")
// { .Replace("NO", "")
// >= 10 => vatNumber[..10], .Replace("SE","")
// < 10 => result .Replace("MVA", "");
// }; }
//}
//private static bool ValidateMod10(string number) //private static bool ValidateMod10(string number)
//{ //{
// if (long.Parse(number) == 0) // if (long.Parse(number) == 0)