Греческий код подтверждения НДС - PullRequest
3 голосов
/ 07 декабря 2010

Кто-нибудь может мне помочь с кодом в VB.NET visual studio 2010 для проверки греческого НАЛОГОВОГО регистрационного номера (НДС).

Ответы [ 3 ]

2 голосов
/ 07 декабря 2010

Это не законы ЕС, которые делают его 9 цифрами, это зависит от страны.

К сожалению, я не знаю, сможете ли вы где-нибудь использовать алгоритм, и даже если бы вы могли, это все равноЭто означает, что это был действительный номер НДС.Единственный известный мне способ убедиться, что это действительный номер НДС, - это проверить его по веб-сервису, как упомянуто в комментарии Рупа.Так что, если вы собираетесь использовать эту проверку, чтобы решить, будете ли вы взимать НДС или нет, я бы не стал доверять только расчетам, так как в итоге вы могли бы нарушить правила (и, возможно, придется платить НДС, который у вас есть)не собрано ...).

Есть статья проекта кода, показывающая, как ее использовать (C #, но при необходимости ее относительно легко преобразовать в VB.Net): VIES - проверка номера НДС

Хотя, очевидно, стоит сначала проверить 9 цифр, чтобы исключить любые явно недействительные.

2 голосов
/ 07 декабря 2010

Как упоминается здесь , вы не получите полную проверку, потому что "Европейская комиссия не может разглашать эти алгоритмы" Однако греческий НДС должен иметь 9-значный блок.Так что может быть достаточно проверить это с помощью регулярного выражения:

Dim text As String = Me.TxtVAT.Text
Dim regex As New System.Text.RegularExpressions.Regex("^\d{9}$", System.Text.RegularExpressions.RegexOptions.Compiled)
If regex.IsMatch(text) Then
   'do something'
Else
   'do something else'
End If
1 голос
/ 07 декабря 2010

Я нашел реализацию JavaScript алгоритма контрольной суммы , которая ссылается на этот сайт в качестве исходного источника алгоритма:

function ELVATCheckDigit (vatnumber) {
  // Checks the check digits of a Greek VAT number.

  var total = 0;
  var multipliers = [256,128,64,32,16,8,4,2];

  //eight character numbers should be prefixed with an 0.
  if (vatnumber.length == 8) {vatnumber = "0" + vatnumber};

  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 8; i++)
    total = total + Number(vatnumber.charAt(i)) * multipliers[i];

  // Establish check digit.
  total = total % 11;
  if (total > 9) {total = 0;};  

  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (8,9)) 
    return true
  else 
    return false;
}

но проверяется только в правильном формате, а не в том случае, если номер был фактически выделен. Как и выше, вы можете использовать веб-сервис для этого:

  • щелкните правой кнопкой мыши по вашему проекту и «Добавить сервисные ссылки»; введите URL http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl и имя пространства имен
  • создать экземпляр checkVatPortTypeClient из этого пространства имен
  • звоните client.checkVat. Вам нужно будет поместить код страны и номер НДС в строковые переменные, чтобы они могли ссылаться, и предоставить выходные переменные для флага проверки, названия компании и адреса.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...