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: Guid("aaf08873-14e5-411d-8ec8-629782ac8f03")]
[assembly: AssemblyVersion("2.1.22097.1714")]
[assembly: AssemblyFileVersion("2.1.22097.1714")]
[assembly: AssemblyVersion("2.1.22098.1123")]
[assembly: AssemblyFileVersion("2.1.22098.1123")]

View file

@ -1,4 +1,5 @@
using System.Linq;
using System;
using System.Linq;
namespace FCS.Lib.Utility
{
@ -52,15 +53,16 @@ namespace FCS.Lib.Utility
// Si = int(Ci/5) + (Ci*2)MOD10)
// https://www.skatteverket.se/skatter/mervardesskattmoms/momsregistreringsnummer.4.18e1b10334ebe8bc80002649.html
// C11 C12 == 01 (De två sista siffrorna är alltid 01)
if (vatNumber.Length != 12 || vatNumber.Substring(10) != "01" || long.Parse(vatNumber) == 0)
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 +
(int)char.GetNumericValue(vatNumber[m]) * 2 % 10);
var c1 = new[] { 1, 3, 5, 7 }.Sum(m => (int)char.GetNumericValue(vatNumber[m]));
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)
@ -78,18 +80,18 @@ namespace FCS.Lib.Utility
return sum % 11 == 0;
}
//private static string SanitizeVatNumber(string vatNumber)
//{
// var washing = vatNumber.Replace(" ", "").Replace("-", "").ToUpperInvariant();
// var result = washing.Replace("DK", "").Replace("NO", "").Replace("SE","") ;
// if (result.Contains("MVA"))
// result = result.Replace("MVA", "");
// return result.Length switch
// {
// >= 10 => vatNumber[..10],
// < 10 => result
// };
//}
private static string SanitizeVatNumber(string vatNumber)
{
vatNumber = vatNumber.ToUpperInvariant();
return vatNumber
.Replace(" ", "")
.Replace("-", "")
.Replace("DK", "")
.Replace("NO", "")
.Replace("SE","")
.Replace("MVA", "");
}
//private static bool ValidateMod10(string number)
//{
// if (long.Parse(number) == 0)