НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
62 of 152 menu

Таблица oc_product_reward

Таблица oc_product_reward является связующей таблицей между товарами и группами покупателей. Она определяет, сколько бонусных баллов (reward points) будет начислено клиенту за покупку определенного товара, в зависимости от его группы.

Поля

Поле Тип данных Описание
product_reward_id int Уникальный идентификатор записи в таблице. Автоинкрементное поле.
product_id int Внешний ключ, который связывает запись с конкретным товаром. Ссылается на oc_product.
customer_group_id int Внешний ключ, который определяет группу покупателей. Ссылается на oc_customer_group. Указывает, для какой группы действует это правило начисления баллов.
points int Количество бонусных баллов, которые будут начислены покупателю из указанной группы за покупку одной единицы этого товара. Может быть 0.

Как это работает

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

Например, можно сделать так, чтобы за покупку дорогого товара VIP-клиенты (группа 2) получали 100 баллов, а обычные покупатели (группа 1) - только 50. Если для какой-то группы значение не указано, баллы за этот товар начисляться не будут.

Когда клиент оформляет заказ, система для каждой позиции в корзине проверяет, сколько баллов положено за данный product_id и для customer_group_id этого клиента. Общее количество баллов за весь заказ суммируется и записывается в поле reward таблицы oc_order.

После успешного завершения заказа (перехода в статус, который отмечен для начисления баллов в настройках) эти баллы добавляются на счет клиента в таблице oc_customer_reward. В дальнейшем клиент может использовать накопленные баллы для оплаты следующих покупок.

Важно: Количество баллов, указанное в этой таблице, начисляется за 1 единицу товара. Если клиент покупает 2 единицы товара, за который положено 10 баллов, он получит 20 баллов.

Пример SQL-запроса

Посмотреть, сколько баллов начисляется за все товары для группы покупателей с ID 1:

SELECT pr.product_reward_id, pr.points, p.product_id, pd.name as product_name, cg.name as customer_group FROM oc_product_reward pr LEFT JOIN oc_product p ON (pr.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id AND pd.language_id = 1) LEFT JOIN oc_customer_group_description cg ON (pr.customer_group_id = cg.customer_group_id AND cg.language_id = 1) WHERE pr.customer_group_id = 1 ORDER BY pr.points DESC;

Смотрите также

  • таблицу oc_customer_reward,
    которая хранит историю начисления и списания баллов для каждого клиента
  • таблицу oc_customer_group,
    которая определяет группы покупателей
  • таблицу oc_order,
    в которой поле reward хранит общее количество баллов за весь заказ
  • таблицу oc_product,
    которая содержит основную информацию о товарах
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить