Нравится сайт? Поддержи его донатом в 10-20$
С вашей поддержкой автор code.mu сможет вести дальнейшую работу над сайтом
134 of 152 menu
Бесплатная онлайн лекция "Работа с AJAX в JavaScript". Начало: 4 февраля в 20.00. Продолжительность: 1-2 часа. Жми для записи!

Таблица oc_affiliate

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

Поля

Поле Тип данных Описание
affiliate_id int Уникальный идентификатор партнера. Это первичный ключ таблицы. Также является внешним ключом, ссылающимся на customer_id в таблице oc_customer, так как каждый партнер — это прежде всего зарегистрированный клиент.
company varchar(60) Название компании партнера (если применимо). Может быть пустым.
website varchar(255) URL-адрес веб-сайта партнера, который он будет использовать для продвижения.
tracking varchar(64) Уникальный трекинг-код (реферальный код) партнера. Добавляется к URL сайта для отслеживания переходов и заказов, совершенных по его ссылке. Например: http://mysite.com/?tracking=PARTNER123
commission decimal(4,2) Процент комиссии, который получает данный партнер с каждого привлеченного заказа. Значение по умолчанию устанавливается в настройках партнерской программы, но может быть переопределено индивидуально для каждого аффилиата.
tax varchar(64) Идентификационный номер налогоплательщика (ИНН, VAT number и т.п.) партнера.
payment varchar(6) Предпочитаемый способ выплаты комиссии. Например: bank (банковский перевод), cheque (чек), paypal.
cheque varchar(100) Имя получателя чека (заполняется, если выбран способ оплаты cheque).
paypal varchar(64) Email-адрес аккаунта PayPal партнера (заполняется, если выбран способ оплаты paypal).
bank_name varchar(64) Название банка (заполняется, если выбран способ оплаты bank).
bank_branch_number varchar(64) Номер отделения банка (БИК, routing number и т.п.).
bank_swift_code varchar(64) SWIFT-код банка.
bank_account_name varchar(64) Имя владельца банковского счета.
bank_account_number varchar(64) Номер банковского счета.
custom_field text Поле для хранения данных пользовательских (кастомных) полей, настроенных для партнеров в административной панели. Данные хранятся в сериализованном виде или JSON.
status tinyint(1) Статус партнера: 0 — отключен, 1 — включен. Отключенные партнеры не могут получать комиссию и авторизовываться в партнерском разделе.
date_added datetime Дата и время регистрации партнера в системе.
balance decimal(15,4) Текущий баланс партнера — сумма начисленной, но еще не выплаченной комиссии. Увеличивается при одобрении заказа и уменьшается при осуществлении выплаты администратором.
commission_total decimal(15,4) Общая сумма комиссии, когда-либо полученная партнером (историческая сумма всех начислений).

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

Клиент регистрируется в магазине, а затем подает заявку на участие в партнерской программе, заполняя дополнительные данные. При одобрении заявки администратором в таблице oc_affiliate создается запись, где affiliate_id равен customer_id этого клиента.

Партнер получает уникальный tracking-код и может размещать реферальные ссылки на сайте магазина. Когда новый посетитель переходит по такой ссылке, в его cookies записывается код партнера. Если этот посетитель в течение установленного в настройках срока совершит заказ, он будет приписан данному партнеру.

После того как заказ переходит в статус, который в настройках партнерской программы помечен как "Комиссионный статус заказа", системе рассчитывает сумму комиссии на основе процента commission от общей суммы заказа. Эта сумма прибавляется к полям balance (текущий баланс) и commission_total (общий заработок) в таблице oc_affiliate. Сама транзакция детально записывается в таблицу oc_affiliate_transaction.

Когда администратор осуществляет выплату партнеру (вручную через админ-панель), сумма выплаты вычитается из balance, а запись о выплате добавляется в oc_affiliate_transaction с отрицательным значением.

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

Выбрать основную информацию о партнере вместе с его email из таблицы клиентов:

SELECT a.*, c.email, c.firstname, c.lastname FROM oc_affiliate a JOIN oc_customer c ON (a.affiliate_id = c.customer_id) WHERE a.status = 1;

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

  • таблицу oc_affiliate_transaction,
    которая хранит историю всех начислений и выплат комиссий
  • таблицу oc_affiliate_activity,
    которая логирует действия партнеров в их личном кабинете
  • таблицу oc_affiliate_login,
    которая хранит историю попыток входа партнеров в систему
  • таблицу oc_customer,
    которая связана с партнером через affiliate_id = customer_id
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить