Таблица 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