Проверка параметра договора перед изменением
Материал из BiTel WiKi
(Различия между версиями)
Admin (Обсуждение | вклад) (Новая: Все приведенные ниже скрипты привязываются к событию ядра "Перед изменением параметра договора". ===П...) |
Snark (Обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
- | Все приведенные ниже скрипты привязываются к событию ядра | + | Все приведенные ниже скрипты привязываются к событию ядра ''Перед изменением параметра договора''. |
- | ===Проверка длины ИНН=== | + | == Проверка ИНН == |
- | + | ||
+ | === Проверка длины ИНН === | ||
+ | Скрипт проверяет, что длина параметра ИНН больше или равна 10 символов, в противном случае выдается ошибка. Код параметра ИНН задается константой INN_PARAM_ID. | ||
<source lang="java"> | <source lang="java"> | ||
INN_PARAM_ID = 41; | INN_PARAM_ID = 41; | ||
- | + | ||
paramId = event.getParamId(); | paramId = event.getParamId(); | ||
- | value = event.getValue(); | + | value = event.getValue(); |
- | + | ||
print( "paramId=" + paramId + "; value=" + value ); | print( "paramId=" + paramId + "; value=" + value ); | ||
- | + | ||
if( paramId == INN_PARAM_ID ) | if( paramId == INN_PARAM_ID ) | ||
{ | { | ||
- | + | if( value.length() < 10 ) | |
- | + | { | |
- | + | event.setError( "Длина параметра меньше 10" ); | |
- | + | return; | |
- | + | } | |
} | } | ||
</source> | </source> | ||
- | ===Проверка содержимого ИНН=== | + | === Проверка содержимого ИНН === |
<source lang="java"> | <source lang="java"> | ||
- | |||
INN_PARAM_ID = 41; | INN_PARAM_ID = 41; | ||
// | // | ||
Строка 69: | Строка 70: | ||
return; | return; | ||
} | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | == Проверка формата вводимого телефонного номера == | ||
+ | |||
+ | Для единообразия форматов телефонов скрипт проверяет формат введенного телефонного номера (текстовый параметр с кодом 4, переменная PHONE_PARAM_ID), если это домашний телефон (5-ти значный номер), то должен вводиться в одном формате (формат регекспа - переменная PHONE_PARAM_RE_HOME), если это сотовый телефон (формат регекспа - переменная PHONE_PARAM_RE_MOBILE) - то в другом, если вводимая строка не попадает ни под какую категорию - строка изменена не будет. | ||
+ | <source lang="java"> | ||
+ | import java.util.*; | ||
+ | |||
+ | PHONE_PARAM_ID = 4; | ||
+ | PHONE_PARAM_RE_HOME = "[0-9]{1}-[0-9]{2}-[0-9]{2}"; | ||
+ | PHONE_PARAM_RE_MOBILE = "\\+7 \\([0-9]{3}\\) [0-9]{3}-[0-9]{2}-[0-9]{2}"; | ||
+ | |||
+ | paramId = event.getParamId(); | ||
+ | value = event.getValue(); | ||
+ | |||
+ | if (paramId == PHONE_PARAM_ID) { | ||
+ | PHONE_LENGTH = value.length(); | ||
+ | if (PHONE_LENGTH > 0) { | ||
+ | if (PHONE_LENGTH <= 7) { | ||
+ | if (!value.matches(PHONE_PARAM_RE_HOME)) { | ||
+ | event.setError("Неверно записан номер домашнего телефона!\nНомер должен быть записан в формате: 1-12-12"); | ||
+ | return; | ||
+ | } | ||
+ | } else if (PHONE_LENGTH >= 10 && PHONE_LENGTH <= 18) { | ||
+ | if (!value.matches(PHONE_PARAM_RE_MOBILE)) { | ||
+ | event.setError("Неверно записан номер мобильного телефона!\nНомер должен быть записан в формате: +7 (123) 123-12-12"); | ||
+ | return; | ||
+ | } | ||
+ | } else { | ||
+ | event.setError("Не надо писать что попало!"); | ||
+ | return; | ||
+ | } | ||
+ | } | ||
} | } | ||
</source> | </source> |
Версия 11:30, 19 декабря 2008
Все приведенные ниже скрипты привязываются к событию ядра Перед изменением параметра договора.
Содержание |
Проверка ИНН
Проверка длины ИНН
Скрипт проверяет, что длина параметра ИНН больше или равна 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; } }
Проверка формата вводимого телефонного номера
Для единообразия форматов телефонов скрипт проверяет формат введенного телефонного номера (текстовый параметр с кодом 4, переменная PHONE_PARAM_ID), если это домашний телефон (5-ти значный номер), то должен вводиться в одном формате (формат регекспа - переменная PHONE_PARAM_RE_HOME), если это сотовый телефон (формат регекспа - переменная PHONE_PARAM_RE_MOBILE) - то в другом, если вводимая строка не попадает ни под какую категорию - строка изменена не будет.
import java.util.*; PHONE_PARAM_ID = 4; PHONE_PARAM_RE_HOME = "[0-9]{1}-[0-9]{2}-[0-9]{2}"; PHONE_PARAM_RE_MOBILE = "\\+7 \\([0-9]{3}\\) [0-9]{3}-[0-9]{2}-[0-9]{2}"; paramId = event.getParamId(); value = event.getValue(); if (paramId == PHONE_PARAM_ID) { PHONE_LENGTH = value.length(); if (PHONE_LENGTH > 0) { if (PHONE_LENGTH <= 7) { if (!value.matches(PHONE_PARAM_RE_HOME)) { event.setError("Неверно записан номер домашнего телефона!\nНомер должен быть записан в формате: 1-12-12"); return; } } else if (PHONE_LENGTH >= 10 && PHONE_LENGTH <= 18) { if (!value.matches(PHONE_PARAM_RE_MOBILE)) { event.setError("Неверно записан номер мобильного телефона!\nНомер должен быть записан в формате: +7 (123) 123-12-12"); return; } } else { event.setError("Не надо писать что попало!"); return; } } }