Проверка параметра договора перед изменением

Материал из BiTel WiKi

Версия от 08:22, 30 октября 2008; Admin (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Все приведенные ниже скрипты привязываются к событию ядра "Перед изменением параметра договора".

Проверка длины ИНН

Проверяет, что длина параметра ИНН больше или равна 10 символов, в противном случае выдается ошибка. Код параметра ИНН задается константой INN_PARAM_ID.

INN_PARAM_ID = 41;
//
paramId = event.getParamId();
value = event.getValue();
//
print( "paramId=" + paramId + "; value=" + value );
//
if( paramId == INN_PARAM_ID )
{
  if( value.length() < 10 )
  {
    event.setError( "Длина параметра меньше 10" );
    return;
  }
}

Проверка содержимого ИНН

INN_PARAM_ID = 41;
//
paramId = event.getParamId();
value = event.getValue();
//
print( "paramId=" + paramId + "; value=" + value );
//
int mult(String s, int[] c) {
	int len = s.length();
	if (len > c.length)
		len = c.length;
	int summ = 0;
	for (int j = 0; j < len; j++) {
		if (!Character.isDigit(s.charAt(j)))
			return -255;
		summ += c[j] * ((int) s.charAt(j) - (int) '0');
	}
	return summ;
}
 
boolean INN(String inn) {
	if (inn == null)
		return false;
	if (inn.length() == 10)
		return (char) ((int) '0' + mult(inn, new int[] { 2, 4, 10, 3, 5, 9,
				4, 6, 8 }) % 11 % 10) == inn.charAt(9);
	if (inn.length() == 12)
		return ((char) ((int) '0' + mult(inn, new int[] { 7, 2, 4, 10, 3,
				5, 9, 4, 6, 8 }) % 11 % 10) == inn.charAt(10))
				&& ((char) ((int) '0' + mult(inn, new int[] { 3, 7, 2, 4,
						10, 3, 5, 9, 4, 6, 8 }) % 11 % 10) == inn
						.charAt(11));
	return false;
}
 
if( paramId == INN_PARAM_ID )
{
   if( event.getValue().equals("") ) return;
 
   if( ! INN(event.getValue()) ) 
   {
     event.setError("Не правильный ИНН");
     return;
   }
}
Личные инструменты