是否有人有验证俄罗斯税务登记号码(VAT)的验证码。 C#代码会很棒,但是如果某人有其他语言,它也会很有帮助。
格式(俄罗斯增值税号=“税号”=“Идентификационныйномерналогоплательщика”):
10位数(法定人格)或12位数(人称),第二位数字是出生地或公司注册地(外国公司,领先99后两位数)MOD 11-10
第二次检查(在2004年之前,它已经改变,现在停留)。
对于法人资格使用可更改的第二个代码(KPP),通常前4位数字相同(99区域规则不适用),通常默认为XXXX01001。
KPP也是柜台(最后3个挖掘)
KPP的数量仅限于77和50以外地区(一个且仅限于每个)的税务检查数量加上最大公司的一个代码。
来源: http://en.wikipedia.org/wiki/VAT_identification_number#VAT_numbers_of_non-EU_countries
答案 0 :(得分:2)
这是一个C#程序,将验证俄罗斯的个人和公司增值税号码。请考虑进一步的输入验证(验证传递的增值税号仅包含数字,它们是否具有所需的长度等):
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
class VatNumber
{
private int[] _numericVatNumber;
public int[] NumericVatNumber { get { return _numericVatNumber; } }
public VatNumber(string vatNumber)
{
_numericVatNumber = vatNumber.ToCharArray().Select(i => int.Parse(i.ToString())).ToArray();
}
public virtual bool IsValid(){return false;}
}
class PersonalVatNumber : VatNumber
{
public override bool IsValid()
{
var n10 = ((2 * NumericVatNumber[0] +
4 * NumericVatNumber[1] +
10 * NumericVatNumber[2] +
3 * NumericVatNumber[3] +
5 * NumericVatNumber[4] +
9 * NumericVatNumber[5] +
4 * NumericVatNumber[6] +
6 * NumericVatNumber[7] +
8 * NumericVatNumber[8]) % 11) % 10;
if (n10 == NumericVatNumber.Last())
return true;
return false;
}
public PersonalVatNumber(string vatNumber)
: base(vatNumber)
{
}
}
class CompanyVatNumber : VatNumber
{
public override bool IsValid()
{
var n11 = ((7 * NumericVatNumber[0] +
2 * NumericVatNumber[1] +
4 * NumericVatNumber[2] +
10 * NumericVatNumber[3] +
3 * NumericVatNumber[4] +
5 * NumericVatNumber[5] +
9 * NumericVatNumber[6] +
4 * NumericVatNumber[7] +
6 * NumericVatNumber[8] +
8 * NumericVatNumber[9]
) % 11) % 10;
if (n11 != NumericVatNumber[10])
return false;
var n12 = ((3 * NumericVatNumber[0] +
7 * NumericVatNumber[1] +
2 * NumericVatNumber[2] +
4 * NumericVatNumber[3] +
10 * NumericVatNumber[4] +
3 * NumericVatNumber[5] +
5 * NumericVatNumber[6] +
9 * NumericVatNumber[7] +
4 * NumericVatNumber[8] +
6 * NumericVatNumber[9] +
8 * NumericVatNumber[10]
) % 11) % 10;
if (n12 == NumericVatNumber.Last())
return true;
return false;
}
public CompanyVatNumber(string vatNumber)
: base(vatNumber)
{
}
}
static void Main(string[] args)
{
var companyVat = new CompanyVatNumber("123456789047");
Console.WriteLine(companyVat.IsValid());
var personalVat = new PersonalVatNumber("1234567894");
Console.WriteLine(personalVat.IsValid());
}
}
}
答案 1 :(得分:0)
如果它是您的选项,您可以使用js lib(我也是):
https://github.com/se-panfilov/jsvat
它支持欧盟(和俄罗斯人)增值税号码。
(jsvat检查增值税号码两次 - 使用正则表达式和数学计算)