Перенос пользователей в другую группу пользователей при определенном количестве заказов

Как можно реализовать перенос пользователя в другую группу как только тот совершит определенное количество заказов? Ну например сделал 5 заказов и попадает в группу постоянные покупателя, а у этой группы уже куча других привилегий по сайту.

в голову пришло 2 варианта
1 ) либо подключиться к хуку change_order_status

   fn_set_hook('change_order_status', $status_to, $status_from, $order_info, $force_notification, $order_statuses, $place_order);

смотреть что status_to один из заранее определенных статусов (например в настройках модуля) при которых считать заказ выполненным или оплаченным, можно использовать fn_get_settled_order_statuses(); если версия системы достаточно новая

из order_info вытащить user_id

если он не 0 сделать запрос в бд

 db_get_filed(' SELECT COUNT(*) FROM ?:orders WHERE user_id = ?i AND status in (?a)', $user_id,$paid_statuses);

$paid_statuses - список статусов при которых считать заказ выполненным или оплаченным

если число больше 5 выполнить

   fn_change_usergroup_status("A", $user_id, $usergroup_id); 

$usergroup_id - брать из настроек модуля

2 ) по крону просматривать всех пользователей (либо последние заказы из них брать id пользователя)
и делать примерно тоже самое

1 лайк

Посмотрите в сторону готовых решений

https://www.ecom-labs.ru/cs-cart-multi-vendor-moduli/cs-cart-modul-programma-loyalnosti.html

1 лайк