Проверить номер НДС в автономном режиме - PullRequest
10 голосов
/ 30 августа 2010

Я пишу небольшое приложение с различными входными данными из файла (например, код страны, номер НДС и т. Д.), И мне нужно проверить, что номера НДС указаны в правильном формате.

Я пробовал это: http://www.codeproject.com/KB/webservices/VATchecker.aspx - и это работает .. но, и да, всегда есть но :-), я должен проверять где-нибудь от 100 до 500 номеров НДС, и это просто слишком медленно для этого. Кроме того, я не уверен, что они ценят то, что я забил их сайт таким образом.

Кто-нибудь знает офлайн-валидатор, который я могу встроить в свою программу на C #?

Ответы [ 6 ]

11 голосов
/ 17 октября 2014

На основе ответа @Uwe Keim (устаревшего) я сделал регулярные выражения для 2014 года с этими правилами: http://www.bzst.de/DE/Steuern_International/USt_Identifikationsnummer/Merkblaetter/Aufbau_USt_IdNr.html?nn=23440

AT ^ATU[A-Z0-9]{8,8}$ 
BE ^BE[0-9]{10,10}$ 
BG ^BG[0-9]{9,9}$|^BG[0-9]{10,10}$
CY ^CY[0-9]{8,8}[A-Z]{1,1}$ 
CZ ^CZ[0-9]{8,10}$
DE ^DE[0-9]{9,9}$
DK ^DK[0-9]{8,8}$
EE ^EE[0-9]{9,9}$
ES ^ES[A-Z0-9]{1,1}[0-9]{7,7}[A-Z0-9]{1,1}$ 
FI ^FI[0-9]{8,8}$ 
FR ^FR[A-Z0-9]{2,2}[0-9]{9,9}$ 
GB ^GB[0-9]{9,9}$|^GB[0-9]{12,12}$|^GBGD[0-9]{3,3}$|^GBHA[0-9]{3,3}$ 
HU ^HU[0-9]{8,8}$ 
IE ^IE[0-9]{1,1}[A-Z0-9]{1,1}[0-9]{5,5}[A-Z]{1,1}$|^IE[0-9]{7,7}[A-W]{1,1}[A-I]{1,1}$ 
IT ^IT[0-9]{11,11}$ 
LT ^LT[0-9]{9,9}$|^LT[0-9]{12,12}$
LU ^LU[0-9]{8,8}$ 
LV ^LV[0-9]{11,11}$ 
MT ^MT[0-9]{8,8}$ 
NL ^NL[A-Z0-9]{9,9}B[A-Z0-9]{2,2}$ 
PL ^PL[0-9]{10,10}$   
PT ^PT[0-9]{9,9}$
SE ^SE[0-9]{10,10}01$
SI ^SI[0-9]{8,8}$
SK ^SK[0-9]{10,10}$
RO ^RO[1-9]{1,1}[0-9]{1,9}$
EL ^EL[0-9]{9,9}$ 
HR ^HR[0-9]{11,11}$ 

Кому-то это может понадобиться.

8 голосов
/ 17 декабря 2011

В наших интернет-магазинах я делаю это аналогично решению в статье Code Project.

Прежде чем отправить его в веб-службы, я делаю небольшую проверку исправности регулярного выражения, чтобы отфильтровать "синтаксически" неправильные идентификаторы НДС и, следовательно, уменьшить количество вызовов SOAP, которые я должен выполнить.

Это отрывок из таблицы, которую я использую для хранения регулярных выражений, может быть, это поможет вам, если вы планируете нечто подобное:

Code2    VatIDRegex
----------------------------------------------------------
at       ^ATU[A-Z0-9]{8,8}$
be       ^BE[0-9]{9,9}$
cy       ^CY[0-9]{9,9}$
cz       ^CZ[0-9]{8,10}$
de       ^DE[0-9]{9,9}$
dk       ^DK[0-9]{8,8}$
ee       ^EE[0-9]{9,9}$
es       ^ES[A-Z0-9]{1,1}[0-9]{7,7}[A-Z0-9]{1,1}$
fi       ^FI[0-9]{8,8}$
fr       ^FR[A-Z0-9]{2,2}[0-9]{9,9}$
gb       ^GB[0-9]{9,9}$|^GB[0-9]{12,12}$|^GBGD[0-9]{3,3}$
hu       ^HU[0-9]{8,8}$
ie       ^IE[A-Z0-9]{8,8}$
it       ^IT[0-9]{11,11}$
lt       ^LT[0-9]{9,9}$|^LT[0-9]{12,12}$
lu       ^LU[0-9]{8,8}$
lv       ^LV[0-9]{11,11}$
mt       ^MT[0-9]{8,8}$
nl       ^NL[A-Z0-9]{9,9}B[A-Z0-9]{2,2}$
pl       ^PL[0-9]{10,10}$
pt       ^PT[0-9]{9,9}$
se       ^SE[0-9]{12,12}$
si       ^SI[0-9]{8,8}$
sk       ^SK[0-9]{10,10}$
3 голосов
/ 05 сентября 2012

Вы можете попробовать это http://code.google.com/p/vat-validation/ Это все еще в стадии разработки, но имеет код почти для всех стран ЕС.

1 голос
/ 30 августа 2010

Если вы посмотрите на этот сайт, они определяют структуру номеров НДС для каждой из стран-участниц.Возможно, вы могли бы сначала проверить правильность структуры номеров, чтобы избежать необходимости выполнять некоторые запросы.

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

Как Стивен предлагает в своем комментарии, вы, возможно, сможете ускорить его, выполнив несколько запросов одновременно.Я бы не подумал, что это будет проблемой, но вы всегда можете отправить по электронной почте адрес, упомянутый в Q16 на этой странице, и спросить их, все ли в порядке.

0 голосов
/ 24 ноября 2015

Если это вариант для вас, вы можете использовать js-lib (мой тоже):

https://github.com/se-panfilov/jsvat

(номер НДС jsvat чека дважды - с регулярным выражением и с математическим расчетом)

0 голосов
/ 01 марта 2013
   if (vatNo.Length == 9)
            {
                int calcValue = 0;
                int index = 0;
                int checkDigit = Convert.ToInt32(vatNo.Substring(7, 2));

                for (int ordinate = 8; ordinate > 1; ordinate--)
                {
                    calcValue += Convert.ToInt32((vatNo.Substring(index, 1))) * ordinate;
                    index++;
                }
                while (calcValue > 0)
                {
                    calcValue -= 97;
                }
                if ((calcValue * -1) != checkDigit)
                {
                    Error
                }

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...