Сделать нормальный поиск заказа по номеру телефона


#1

Сделать поиск заказа по номеру телефона, чтобы находился заказ по любым цифрам, входящим в номер. На данный момент необходимо вводить номер полностью, либо если в номере присутствует дефис, то номер не ищет. Например, номер+7(123)456-78-99. Если ввести “78”, то заказ найдется. Если ввести “7899”, то не ищет.


#2

Боюсь что в коробке такое сделать будет действительно не просто - тут требуется допилить логику под конкретную страну в движке, так в массовых решениях не делается.

Мы в модуле маска телефона планируем добавить маску в поля админ панели, возможно если будут аналогичные запросы сделаем поиск, который вы просите в рамках модуля.


#3

Если не ошибаюсь, до обновления движка эта функция работала


#4

Раньше.в get_orders было
if (isset($params[‘phone’]) && !empty($params[‘phone’])) {
$phone = ‘%’ . $params[‘phone’] . ‘%’;
$condition .= db_quote(
" AND ((REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(?:orders.phone, ’ ', ‘’), ‘-’, ‘’), ‘+’, ‘’), ‘(’, ‘’), ‘)’, ‘’) LIKE ?l)"
. " OR (REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(b_phone, ’ ', ‘’), ‘-’, ‘’), ‘+’, ‘’), ‘(’, ‘’), ‘)’, ‘’) LIKE ?l)"
. " OR (REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(s_phone, ’ ', ‘’), ‘-’, ‘’), ‘+’, ‘’), ‘(’, ‘’), ‘)’, ‘’) LIKE ?l))",
$phone,
$phone,
$phone
);
}

у вас возможно сейчас иначе просто подправьте под данный формат.


#5

в идеале нужно, чтобы в БД телефоны хранились только цифрами, без каких-либо знаков. тогда и искать будет легче.


#6

В какой версии такая проблема? Проверил на 4.9.3 и на 4.12.2.SP2. Отлично находит и со знаками, и без.


#7

На демо-версии воспроизводится ваша ошибка?


#8

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


#9

У нас 4.13.2 SP1


#10

попробуйте воспроизвести на демо и оформляйте на форуме как баг.


#11

Тех поддержка дала вот такую инфу http://joxi.ru/Rmz0BlgtjaknRA. Странно.


#12

Все верно. Давно писал о том, что номер телефона - это только цифры, а маска - это визуализация данных, и нечего из смешивать. В базе надо хранить только цифры, а все дефисы и скобки - это только для отображения на экране. Ну и поиск. Я тоже никак в толк не возьму, в чем проблема использовать в запросе при поиске не а=в, а LIKE %… % ?


#13

Да ежики в кляре, я же выше написал запрос который был раньше и ищет по базе не важно есть там знаки или нет, все это убирается


#14

Сделали, не помогло.


#15

Скорее всего у вас там какие-то проблемы с внешним модулем, так как в последних версиях все так же ищет без проблем по цифрам в номерах с дефисами.