Функционал проверки дубликатов. Меняем условие с "И" на "ИЛИ"

Функционал проверки дубликатов. Меняем условие с "И" на "ИЛИ"

В Vtiger 7.3 есть один отличный функционал - проверка записей на дубликаты перед сохранением или изменением. Работает он следующим образом - вы идёте в настройки модуля (управление полями), в нём у вас будет доступна вкладка "Управление дубликатами" или Duplicate Prevention. При переходе на эту вкладку вы можете указать поля, которые вы будете проверять перед сохранением.

В Vtiger 7.3 есть один отличный функционал - проверка записей на дубликаты перед сохранением или изменением. Работает он следующим образом - вы идёте в настройки модуля (управление полями), в нём у вас будет доступна вкладка "Управление дубликатами" или Duplicate Prevention. При переходе на эту вкладку вы можете указать поля, которые вы будете проверять перед сохранением.

На скрине в нашем примере мы проверяем новые контакты на дубликаты по двум полям - Название организации и номер телефона. И система работает следующим образом - как только мы попытаемся создать новый контакт с такой же организацией и номером телефона, система нам не разрешит это сделать. Т.е. в этом случае работает условие "И". Контакт должен быть с такой же организацией И номером телефона.

Но что же делать, если мы хотим использовать условие "ИЛИ"? Т.е. мы хотим, например, проверять контакты на уникальность по email или номеру телефона. Иными словами, мы хотим добиться такого поведения, когда система проверяет на совпадение email, затем номер телефона и если что-то из них найдено, система запрещает сохранение записи.

К счастью, сделать это очень просто. Для этого идём в файл:

modules/Vtiger/handlers/CheckDuplicateHandler.php

Находим строчку в районе 165 (номер у вас может быть другой), которая выглядит вот так:

$conditionsSql = implode(" AND ", $conditions);

Удаляем её, вставляем вместо неё следующий текст:

$conditionsSql = implode(" OR ", $conditions);

Т.е. мы поменяли в ней только одно слово, AND заменили на OR.

Сохраняем файл и теперь мы можем искать дубликатов по условию ИЛИ.