Проверка параметра договора перед изменением
Материал из 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; } }