Тъп въпрос !

16 отговора 598 прегледа
#1

Тъп въпрос !

Някой да знае, как се проверява валидност на ЛНЧ или БУЛСТАТ ?

Отговор
в отговор на Mave_rick #2

Re: Тъп въпрос !

виж това

Ама ако ползваш данъчния номер - този алгоритъм който съм публикувал - май има някакъв проблем- само за някои номера - което е много странно.

---
Е т'ва е живот!
Отговор
в отговор на PhantomAS #3

Re: Тъп въпрос !

Мерси :)
Това с БУЛСТАТ върви (поне на мен така ми се струва).
Ама не намерих нищо из интернет за ЛНЧ(ЕНЧ).

Отговор
в отговор на Mave_rick #4

Re: Тъп въпрос !


unit EGNCheck;

interface
const EGN_Mod_11_Coef : array[1..9] of byte = (2,4,8,5,10,9,7,3,6);

type EGNString = string[10];
{Проверява ЕГН}
function CheckEGN(EGN : EGNString) : boolean;
{}
function CheckEGN_Mod11(EGN : EGNString) : boolean;
{}
function CheckEGN_Date(EGN : EGNString) : boolean;

{Взема дата от ЕГН}
function GetDateFromEGN(EGN : EGNString) : TDateTime;

{Проверява дали годината е високосна}
function LeapYear(Year : word) : boolean;

{Образува ЕГН от подадена дата, като последните 4 символа са нули}
function DateToEGNwith0(Date : TDateTime): string;

implementation

uses SysUtils;

function DateToEGNwith0(Date : TDateTime): string;
var Y,M,D : word;
S : string[10];
begin
DecodeDate(Date,Y,M,D);
if (Y >=1800) and (Y<=1899) then
M := M + 20;
if (Y >=1900) and (Y<=1999) then M := M + 0;
if (Y >=2000) then M := M + 40;
Result := Copy(IntToStr(Y),3,2);

S := IntToStr(M);
if Length(S) = 1 then S := '0' + S;
Result := Result + S;

S := IntToStr(D);
if Length(S) = 1 then S := '0' + S;
Result := Result + S + '0000';
end;

function GetDateFromEGN(EGN : EGNString) : TDateTime;
var Y,M,D : word;
begin
Y := StrToInt(Copy(EGN,1,2));
M := StrToInt(Copy(EGN,3,2));
D := StrToInt(Copy(EGN,5,2));
if M > 20 then
begin
if M > 40 then begin
M := M - 40;
Y := Y + 2000;
end
else begin
M := M - 20;
Y := Y + 1800;
end
end
else Y := Y + 1900;

try
Result := EncodeDate(Y,M,D);
except
on EConvertError do
begin
Result := 0;
end;
end;

end;

function LeapYear(Year : word) : boolean;
begin
if (Year mod 4 <> 0) then
Result := False
else if (Year mod 100 <> 0) then
Result := true
else if (Year mod 400 <> 0) then
Result := False
else Result := True;

end;

function CheckEGN_Date(EGN : EGNString) : boolean;
var Y,M,D : word;
begin
Y := StrToInt(Copy(EGN,1,2));
M := StrToInt(Copy(EGN,3,2));
D := StrToInt(Copy(EGN,5,2));
if M > 20 then
begin
if M > 40 then begin
M := M - 40;
Y := Y + 2000;
end
else begin
M := M - 20;
Y := Y + 1800;
end
end
else Y := Y + 1900;

Result := True;
try
EncodeDate(Y,M,D);
except
on EConvertError do
begin
Result := False;
end;
end;
end;

function CheckEGN_Mod11(EGN : EGNString) : boolean;
var i,M : integer;
begin
if EGN[0] < #10 then
begin
Result := False;
exit;
end;
M := 0;
for i := 1 to 9 do
begin
M := M + StrToInt(EGN)*EGN_Mod_11_Coef;
end;
M := (M mod 11) mod 10;
Result := StrToInt(EGN[10]) = M;
end;


function CheckEGN(EGN : EGNString) : boolean;
begin
Result := CheckEGN_Mod11(EGN) and CheckEGN_Date(EGN);
end;

end.


Никога не е късно човек да се провали!
Отговор
в отговор на NejDet #5

Re: Тъп въпрос !

това е за ЕГН, и изглежда правилно... обаче дали и за ЛНЧ е така?
из разните правителствени ситове пише: "
...ЛНЧ се формира по начин указан от министерския съвет..."
който начин по никой начин неможах да намеря...

--------------------------------------
Започва Път от моят праг...
Отговор
в отговор на Hateras #6

ЛНЧ - ЕГН

Мисля, че ЛНЧ е аналог на ЕГН но на чужденци.

Мога да питам но сага нямам време

Никога не е късно човек да се провали!
Отговор
в отговор на NejDet #7

Re: ЛНЧ - ЕГН

Не е едно и също.
В ЛНЧ няма дати на райдане и др.
За моито номера с контролната сума става, ама пробвах още едно и се оказа, че не става (или ЛНЧ-то е объркано).

Отговор
в отговор на Mave_rick #8

Re: ЛНЧ - ЕГН

Уточнение ЛНЧ = ЕГН за български граждани, за чуждите е друго - естествено е да не можеш да го провериш с този алгоритъм. Това е според моите скромни познания - не съм чул за промяна все още - но ако трябва ще проверя. Според новите изисквания на НОИ - ЛНЧ за чужденците се попълва дата месец и година на раждане + пол! За нашите ЕГН -та няма нужда от това.

---
Е т'ва е живот!
Отговор
в отговор на Mave_rick #9

Re: ЛНЧ - ЕГН

Адреса на ГРАО дава подробна информация за ЕГН-то. Но никъде не можах да намеря как се формира ЛНЧ освен в ЗАКОН ЗА БЪЛГАРСКИТЕ ДОКУМЕНТИ ЗА САМОЛИЧНОСТ.

Раздел III
Данни в българските документи за самоличност
Чл.16. (1) Българските документи за самоличност съдържат следните задължителни лични данни:
1. имена;
2. дата на раждане;
3. единен граждански номер (или личен номер за чужденец);
4. пол;
5. гражданство.
(2) Наименованието на данните по ал.1 се изписват на български и английски език.
(3) (нова,ДВ,бр.67 от 1999 г.) Личният номер за чужденец (ЛНЧ) идентифицира еднозначно дългосрочно пребиваващите чужденци в Република България. Начинът на неговото формиране се определя от Министерския съвет.

Никъде официално не е публикуван начина за това формиране.

Един колега каза, че може да го намери но още не се е обадил.
Чакам. Ще го публикувам веднага когато ми стнаое ясно нещо по въпроса.

Никога не е късно човек да се провали!
Отговор
в отговор на Mave_rick #10

Решение

ЛНЧ.
За ЛНЧ (n1n2n3n4n5n6n7n8n9n10)
(n1*21+n2*19+n3*17+n4*13+n5*11+n6*9+n7*7+n8*3+n9*1) MOD 10 =n10

т.е. теглата са 21,19,17,13,11,9,7,3,1

Същото е както ЕГН но теглата са други и се дели на 10 а не на 11.

БУЛСТАТ
има инфо тук "Структура на ЕИК"

Никога не е късно човек да се провали!
Отговор
в отговор на PhantomAS #11

Re: ЛНЧ - ЕГН

Уточнение : доколкото ми е известно българските граждани нямат ЛНЧ.
ЛНЧ не съдържа дата, месец, година и пол, това май е просто един 9 цифрен номер с контролна сума.
Проблема е, че аз съм чужд гражданин (имам ЛНЧ) и сега, като NejDet публикува разбирам, че или ЛНЧ-то ми е сгрешено или има промени в начина на създаване на ЛНЧ.
При проверка с алгоритъма(теглата) за ЕГН (без проверка за месец и ден), ми дава, че е ок (ама за ЕГН, а аз си пиша там ЛНЧ-то).
Другото ЛНЧ, което не ставаше с теглата за ЕГН няма проблеми с тези за ЛНЧ.

Отговор
в отговор на NejDet #12

Re: Решение

Мерси ама май ще имам проблем :(
Значи:
ЛНЧ-то, което не ставаше с теглата за ЕГН става с тези, ама другото (мойто) не става.
Възможно е да са го сбъркали (те два пъти ми бъркаха името:), другия вариани, е да има някакви промени.
Къде ли ще трябва да ходя да проверявам ? (направо ми се драйфа, като знам, какво разкарване ще падне)

Отговор
в отговор на Mave_rick #13

Re: Решение

Можеш да идеш там където са ти дали ЛНЧ да го проверят пак или в служба ГРАО. Във всяка по голяма община я има.

Другия вариант е да ми дадеш ЛНЧ-то си и аз да го препратя на човека който ми даде теглата. Работи в Здравната каса. Ако има проблем ще ми каже какъв е.

Остави ми бележка

Никога не е късно човек да се провали!
Отговор
в отговор на PhantomAS #14

Re: Тъп въпрос !

този линк в момента не върви,може ли да ми покажете кода някъде другаде?

Отговор
в отговор на NejDet #15

Re: Решение

В ГРАО няма да ми свършат работа (май се занимават само с ЕГН-тата), е и последния път ми загубиха 3 дни понеже ми бяха дописали четвърто име (много тъпа работа).
ЕНЧ-то май го дават от полисията, в паспорта имам един печат на който пише ЕНЧ и с химикал са надраскано 10 цифри. (в личната карта тоя номер го няма)
Не искам да те занимавам с такива простотии (м/у другото роден съм в България, така че имам българско ЕГН, а ЕНЧ-то все още никой не ми го е искал:).

Отговор
в отговор на Mave_rick #16

Re: Решение

Това с теглата 21,19,17 и т.н явно вече не върви. Имам няколко ЛНЧ-та, които не го удовлетворяват.
Знаете ли нещо по-ново?

Отговор
в отговор на anan2OO7 #17

Re: Решение

Преди 2 години водих един дълъг мейл разговор с ГРАО админите по този въпрос - за ЕНЧ-то. Те ми казаха, че няма алгоритъм за проверка на ЕНЧ. Насочиха ме към този мейл адрес за доп. въпроси - int.110@mvr.bg
След като им писах ми отговориха следното:

Г-н ******,

В отговор на Вашето запитване, Ви уведомяваме, че ЕНЧ (ЛНЧ-личен номер на чужденец) се дава на дългосрочно пребиваващите (над 3 месеца) чужденци в РБ, по смисъла на Закона за чужденците в РБ /ЗЧРБ/.
За тези категории чужденци той се явява задължителен реквизит от издаваните им български документи за самоличност и съгласно приложение 1 към чл.25 от Закона за защита на класифицираната информация /раздел ІІ, т.27/, представлява класифицирана информация, достъпа до която се регламентира от същия закон.

04.02.2005г

След още малко препирни с тези бетонни глави се отказах да търся алгоритъм за ЕНЧ.

Отговор