Показать сообщение отдельно
  #2 (permalink)  
Старый 18.04.2013, 10:16
Интересующийся
Отправить личное сообщение для тома Посмотреть профиль Найти все сообщения от тома
 
Регистрация: 23.11.2009
Сообщений: 29

Вот, написала.
алгоритм

/*
Алгоритм проверки счёта с помощью БИКа банка:
1. Изменение счета с учетом БИКа(см ниже).
2. Вычисляется контрольная сумма со следующими весовыми коэффициентами: (7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1)
3. Вычисляется контрольное число как остаток от деления контрольной суммы на 10
4. Контрольное число сравнивается с нулём. В случае их равенства расчётного счёт считается правильным.
*/

//функция проверки правильности указания банковского счёта
function fn_bank_account(Str)  
{		  
	var result = false;
	var Sum = 0;
	
	//весовые коэффициенты
	var v = [7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1];
	
	for (var i = 0; i <= 22; i++) 
	{ 
		//вычисляем контрольную сумму
		Sum = Sum + ( Number(Str.charAt(i)) * v[i] ) % 10;
	}
	
	//сравниваем остаток от деления контрольной суммы на 10 с нулём
	if(Sum % 10 == 0)
	{
		result = true;
	}
		
	return result;			
}

/*
Проверка правильности указания корреспондентского счёта:
1. Для проверки контрольной суммы перед корреспондентским счётом добавляются "0" и два знака БИКа банка, начиная с пятого знака.
*/
function fn_checkKS(Account,BIK)  
{
	return fn_bank_account('0'+BIK.substr(4,2)+Account);
}

/*
Проверка правильности указания расчётного счёта:
1. Для проверки контрольной суммы перед расчётным счётом добавляются три последние цифры БИКа банка.
*/
function fn_checkRS(Account,BIK)  
{
	return fn_bank_account(BIK.substr(6,3)+Account);
}
Ответить с цитированием