2010-12-07 5 views
3

ギリシャのTAX登録番号(VAT)を検証するためのVB.NETビジュアルスタジオ2010で私を助けることができる人はいますか?ギリシャのVAT検証番号コード

+0

検証のルールは何ですか?あなたはリファレンスがありますか? – darioo

+0

いいえ最初の問題はありません私は規則を知らない、私はそれがヨーロッパの法律の下で9桁の数字であることを知っています –

+2

それになると、http://ec.europa.eu/を使用できるWebサービスがありますtaxation_customs/vies/checkVatService.wsdl – Rup

答えて

2

をそれは国によって異なり、それ9桁になり、EUの法律ではありません。

残念ながら、どこでもアルゴリズムを保持できるかどうかはわかりませんが、それでも有効なVAT番号であるとは限りません。有効なVAT番号であることを確認するための唯一の方法は、Rupのコメントに記載されているようにWebサービスに対してそれを検証することです。あなたがVATを請求するかどうかを決定するためにこの検証を使うつもりならば、私は規則を破ることに終わる可能性があるので計算を信用しません。収集された...)。

あり、それを使用する方法を示すコードプロジェクトの記事があります(C#が、必要に応じて、VB.Netに変換するのは比較的簡単なはずです):VIES - VAT number checker

明らかにそれを排除する最初の9桁の数字のために価値のあるチェックかもしれないけど明らかに無効なもの。

+0

はい私はそれを行うための最初の検証されますが、私はVIESに対して入力番号が有効であることを確認するために検証する必要があります。"VAT番号チェッカー" –

+0

@Lefteris:Timの回答のリンクに行くと、それはVIES WebサービスのFAQのリストなので、それも読める価値があるかもしれません。 –

+0

オンライン検証ウェブサイトがありますが、Windowsアプリケーション用に実装したVBコードでこの検証を使用したいと思います。はい、私はこれらのFAQを知っていましたが、私はそれをやりたいことで私を助けてくれませんでした。 –

2

here"欧州委員会がこれらのアルゴリズムを公表することはできません"のため、完全な検証はできません。しかし、greece Vatには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 
+0

I thing Tim 2つのテキストフィールドを比較して結果を得ています。これが正しいとすれば、それは私が探しているものではありません。私が見ているのは、VIESのすべての要件を満たしていれば、すべての番号の検証です。私はそれが数学的な検証となることです。 –

1

私は、元のアルゴリズムのソースとしてthis siteを参照されa JavaScript implementation of the checksum algorithmが見つかりました:

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; 
} 

が、数が実際に割り当てられている場合にのみ、それが有効な形式でありますチェックし、ないこと。上記のように、Webサービスを使用することができます:

  • [サービス参照の追加]を右クリックし、[追加]をクリックします。 URL http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdlと名前空間名
  • を入力checkVatPortTypeClient
  • そのnamesspaceから電話 client.checkVatをインスタンス化します。参照するために国コードとVAT番号を文字列変数に入れ、検証フラグ、会社名と住所の出力変数を指定する必要があります。