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

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

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: Все приведенные ниже скрипты привязываются к событию ядра "Перед изменением параметра договора". ===П...)
Строка 1: Строка 1:
-
Все приведенные ниже скрипты привязываются к событию ядра "Перед изменением параметра договора".
+
Все приведенные ниже скрипты привязываются к событию ядра ''Перед изменением параметра договора''.
-
===Проверка длины ИНН===
+
== Проверка ИНН ==
-
Проверяет, что длина параметра ИНН больше или равна 10 символов, в противном случае выдается ошибка. Код параметра ИНН задается константой INN_PARAM_ID.
+
 
 +
=== Проверка длины ИНН ===
 +
Скрипт проверяет, что длина параметра ИНН больше или равна 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 )
+
    if( value.length() < 10 )
-
  {
+
    {
-
    event.setError( "Длина параметра меньше 10" );
+
        event.setError( "Длина параметра меньше 10" );
-
    return;
+
        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;
        }
    }
}
Личные инструменты