Хочу подключать payment banktransfer только для покупателя покупающего второй или более раз. Новички же этого способа оплаты не должны видеть.
Каким способом можно проверить, что чел. уже покупал?
Готового решения не напишу, но я бы делал скорее всего так: точнее всего выбирать коллекцию оплаченных заказов клиента и смотреть потраченную сумму или количество заказов. Если заказов много и узнавать эти данные надо часто, то стоит сделать что-то вроде индекса (поле в таблице клиента или отдельную таблицу) и обновлять эти данные на событие сохранения заказа.
И проверять эти данные по событию payment_method_is_active, чтобы отключить метод для неподходящих клиентов.
Спасибо. Мне и не нужно готового решения, мне нужен скажем алгоритм, или точнее, где и что искать и какое правило установить.
Оцени:
Предварительно
1. Отключаю модуль из админки
2. Создаю отдельную таблицу для хранения майлов тех, кто что-то уже покупал.
3. Копирую туда все майлы из имеющихся уже заказов. (как их искать еще не знаю)
..
4. При заказе, проверяется емайл покупателя и ищется в этой таблице.
->Найден->активируем модуль
->Не найден-> сохраняем майл в вышесозданной таблице
...
А не проще сделать чтоб после покупки клиент попадал в группу покупателей к примеру "Бывшие", а при оформление заказа проверять состоит, не состоит в группе и в зависимости от результата показывать или нет данный способ оплаты.
При регистрации покупатели всегда попадают в группу определенную в админке как "стандартная". А что делать с не "стандартными" группами? Потом, у меня достаточное количество покупателей, которые без регистарции (NOT LOGGET) покупали уже по нескольку раз. Им тоже разрешается использовать этот способ оплаты.
Не регистрированных повторных покупателей можно тоже перекидывать в определенную группу после удачного завершения покупки, а проверку при заказе можно сделать хоть по миллиону групп и если покупатель принадлежит к одной из них выдавать ему платежный модуль. Если Вам городить огород с таблицей в базе данных проще чем чуть модернизировать имеющиеся возможности, то пожалуйста карты в руки. Есть такая поговорка "не та дорога быстрее которая короче, а та которую знаешь" и иногда иррациональное решение применить проще и быстрее.
>>Если Вам городить огород с таблицей в базе данных проще
Гораздо проще.
Стандартный подход - в модуле оплаты делаете выборку заказов по email клиента и считаете их количество, общую сумму и т.п. В зависимости от результатов разрешаете или запрещаете отображение модуля посетителю при оформлении заказа.