Сегодня хочу продолжить традицию делится наработками на благо популяризации SugarCRM
Уже не однократно возникали задачи, когда заказчикам необходимо было реализовать телефонные поля подобные полям для хранения email, с возможностью добавления нескольких телефонных номеров и добавления им атрибутов.
Вторая сложность, возникающая с телефонами — это поиск по номерам. Каждый менеджер забивает телефон как ему удобно, один указывает код в скобках, другой через пробел и т.д. Теперь представьте себе ситуацию: вам звонит клиент, вы пытаетесь срочно найти его в базе по номеру, но у вас не получается потому что предыдущий менеджер, указал в качестве разделителей, например, тире. В результате вы не идентифицировали клиента, да еще и создали для него новую карточку, так как приняли его за нового клиента.
Так и появился модуль MultiPhoneField, который избавляет от двух описанных выше недостатков: расширяет возможности хранения телефонов(несколько телефонов и атрибуты) и осуществляет поиск по номерам телефонов без учета разделителей.
Этот модуль мы выкладываем сегодня в свободный доступ: Модуль на SugarForge.
Скриншоты модуля:
Подробный функционал модуля
1) Модуль позволяет динамически добавлять любое количество телефонных номеров к любым записям в SugarCRM,
а так же помечать их дополнительными атрибутами, такими как: основной, не звонить, личный, мобильный, рабочий, факс.
Модуль разработан полностью в upgrade safe стиле с поддержкой мультиязычности (в комплект включена русская и английская версия)
Атрибуты можно редактировать через административную часть SugarCRM : Редактор комбобоксов.
Возможные варианты храняться в комбобоксе: phone_type_dom. Редактирование комбобокса полностью в стиле SugarCRM.
В списке(listview) отображается только основной номер, если основной номер не задан, то первый.
2) Нововведения в системе поиска.
Для данного типа поля решена проблема с поиском по телефонным номерам,
т.к. телефоны могут заноситься в разных форматах разными пользователями
Например: +1 080 354-456-456, 38050-432 432 654,
то в стандартной версии поиск по телефонам усложняется.
В нашей версии пользователь теперь может свободно искать данные номера без подбора разделителей,
т.е теперь номер найдётся по запросам 354456456, 050432432654, с какими бы разделителями он не создан в оригинале,
при этом можно точно также его найти и по оригинальному варианту с разделителями 38050-432 432 654.
Необходимо помнить, что так как у нас хранится несколько номеров в одной ячейке,
а также чтобы можно было искать по номерам телефонов без кодов стран и городов,
в строке поиска необходимо использовать символ % слева и справа, для поиска по вхождению подстроки.
Например: %354456456%, %38050-432 432 654% и т.д.
Если вариант указывания % в строке не устраивает, то можно как вариант настроить поиск по вхождению подстроки по умолчанию для всех полей,
для это в файле : /include/SearchForm/SearchForm2.php,
меняем строки (таких строк 2!)
$where .= $db_field . " like '".$field_value.$like_char."'";
на
$where .= $db_field . " like '".$like_char.$field_value.$like_char."'";
Принцип работы модуля
Специально для программистов и администраторов опишу принцип работы модуля:
Так как модуль разрабатывался как upgrade safe решения для любого модуля,
то был выбран наиболее простой вариант реализации, хранение всех данных в одной ячейке.
Данное хранение подобно варианту хранения MultiEnum значений в ЦРМ,
где в качестве разделителя между данными тоже выступает ^,^.
При сохранении данные «сжимаются» в одно значение, при извлечении «разжимаются».
Установка
Модуль устанавливается стандартно через загрузчик модулей в административной части SugarCRM.
Полная upgrade safe совместимость с версиями SugarCRM выше 5.5.
Теоретически совместимость с любой версией начиная с 5.0. (Не тестировалась)
Использование
После установки в студии появляется новый тип поля ExtraPhone (В русской версии «расширенный телефон»).
В любой модуль можно добавить поле данного типа.
Также после этого данное поле можно добавлять в любой макет формы: Редактирование, Просмотр, Поиск, Список.
Совместимость
Совместимость с кастомными пользовательскими модулями (custom modules)
Полная совместимость с любыми кастомными модулями.
Работа через Soap и Rest
Можно работать с данным типом поля и через встроенный механизм web api (soap или rest протокол).
В этом случае «разжимание данных» программируется в модуле, который будет использовать это поле.
Реализуется с помощью explode («^,^», $array)
Известные ограничения на использование
Никаких ограничений на использование обнаружено не было.
Теперь вы все знаете и можно смело cкачать MultiPhoneField:
Версия: 0.3, скачали: 34 раз.
Дата добавления: 05.06.2012
Тип: zip

Описание: Расширенные телефонные поля

По всем вопросам работы с модулем, пожалуйста, обращайтесь на наш форум в соответствующую ветку.
1. При установке данного вида поля Шуга показала отсутствие опции возможность «импортировать». Это означает, что я не смогу импортировать телефоны в данное поле?
2. У меня SkypeOut не понимает телефоны в этом поле. На счет Астериска такая же будет проблема (у меня нет — но хотелось бы на будущее)?
3. На счет поиска. А разве сейчас в Шуге не введено специальное поле типа Телефон для организации сквозного поиска по данному типу полей...?
Может быть я что-то не так настроил...?
Объясните по указанным нюансам, пожалуйста
Ответ на форуме
В версии CE 5.5.4 не сохраняет введенные данные. Для исправления ситуации нужно в файл vardef.php модуля с этим полем добавить к описанию поля ‘dbtype’ => ‘text’, без этого не вызывается функция save.