Налаштування комісій маркетплейсу 1С-Bitrix
Комісія маркетплейсу — це процент або фіксована сума, яку платформа утримує з кожного продажу продавця. Правила можуть бути простими (єдиний % для всіх) або складними (залежить від категорії товару, обороту продавця, типу доставки). В 1С-Bitrix стандартних інструментів для цього немає — потрібна користувацька реалізація.
Структура правил комісій
Комісії краще зберігати в окремій таблиці (через HL-інфоблок або користувацьку таблицю), а не в b_option. Це дозволяє версіонувати правила та застосовувати різні правила до різних продавців/категорій.
Структура таблиці правил:
| Поле | Тип | Описание |
|---|---|---|
| ID | int | |
| RULE_TYPE | varchar | global / category / vendor |
| VENDOR_ID | int | null = застосовується до всіх |
| CATEGORY_ID | int | ID розділу інфоблоку, null = всі категорії |
| RATE_TYPE | varchar | percent / fixed |
| RATE_VALUE | decimal | % або фіксована сума |
| MIN_AMOUNT | decimal | Мінімальна комісія |
| MAX_AMOUNT | decimal | Максимальна комісія (null = без обмежень) |
| ACTIVE_FROM | date | Дата початку дії |
| ACTIVE_TO | date | Дата закінчення (null = на невизначений час) |
Розрахунок комісії при створенні суб-замовлення
Розрахунок відбувається в обробнику OnAfterOrderAdd або в логіці створення суб-замовлення. Алгоритм вибору правила: спочатку шукаємо індивідуальне правило для продавця + категорії, потім для продавця, потім для категорії, потім глобальне.
function calculateCommission(int $vendorId, int $categoryId, float $amount): float
{
// Приоритет: vendor+category > vendor > category > global
$rule = findRule($vendorId, $categoryId)
?? findRule($vendorId, null)
?? findRule(null, $categoryId)
?? findRule(null, null);
if (!$rule) return 0.0;
$commission = $rule['RATE_TYPE'] === 'percent'
? $amount * $rule['RATE_VALUE'] / 100
: $rule['RATE_VALUE'];
if ($rule['MIN_AMOUNT']) $commission = max($commission, $rule['MIN_AMOUNT']);
if ($rule['MAX_AMOUNT']) $commission = min($commission, $rule['MAX_AMOUNT']);
return round($commission, 2);
}
Розраховна комісія записується в таблицю фінансових операцій з типом commission та прив'язкою до суб-замовлення.
Адміністративний інтерфейс управління правилами
Сторінка в /bitrix/admin/ з CRUD-інтерфейсом для правил комісій. Список правил з фільтрацією за продавцем/категорією, форма створення/редагування, дата-пікер для періодів дії.
Окрема сторінка — перегляд нараховуючих комісій за період з групуванням за продавцем, експорт в Excel для бухгалтерії.
Терміни
Базова реалізація (одна ставка для всіх + за категоріями) — 1 тиждень. Складна модель (індивідуальні ставки, прогресивні тарифи, часові акції) — 2–3 тижні.







