Налаштування транзитної доставки зі складу поставщика 1С-Bitrix
Транзитна доставка — схема dropshipping: замовлення приходить на сайт, магазин передає його поставщику, поставщик відправляє товар прямо клієнту. Магазин у ланцюзі фізично не держить товар. У Bitrix ця схема потребує: зв'язків товарів із поставщиками, механізму автоматичної передачі замовлень та відслідкування статусу від поставщика.
Прив'язка товарів до поставщиків
Створіть користувальницькеслужкова властивість інфоблока SUPPLIER_ID типу «Список» або «Прив'язка до інфоблока» — залежить від того, зберігаються ли поставщики як елементи інфоблока або у окремій таблиці. Якщо поставщиків багато або потрібні детальні дані (API-ключ, email, формат замовлення) — використовуйте окремої таблиці bl_suppliers.
Структура bl_suppliers: id, name, order_method (api/email/edi), api_url, api_key, email, order_template, active.
Зв'язок «товар — поставщик»: таблиця bl_product_supplier з полями product_id, supplier_id, supplier_sku (артикул у поставщика), price, lead_time_days.
Передача замовлення поставщику
При оплаті замовлення (OnSaleOrderPaid) або при ручному переводу в потрібний статус — визначаємо поставщика за товарами кошика та передаємо замовлення:
$basket = $order->getBasket();
$supplierOrders = [];
foreach ($basket as $item) {
$supplierId = SupplierMap::getBySku($item->getProductId());
$supplierOrders[$supplierId][] = [
'sku' => SupplierMap::getSupplierSku($item->getProductId()),
'qty' => $item->getQuantity(),
'address' => $deliveryAddress,
'order_id' => $orderId,
];
}
foreach ($supplierOrders as $supplierId => $items) {
$supplier = SupplierTable::getById($supplierId)->fetch();
SupplierGateway::send($supplier, $items);
}
SupplierGateway::send() відправляє HTTP-запит до API поставщика, або формує лист, або XML для EDI — залежно від order_method.
Отримання трек-номера від поставщика
Поставщик надсилає трек-номер назад — через вебхук на ендпоінт вашого сайту або ответом на API-запит. Створіть публичний обробник /bitrix/supplier_webhook.php, який:
- Приймає
supplier_order_id,tracking_number,carrier - Знаходить пов'язане замовлення Bitrix за
supplier_order_idчерез таблицюbl_supplier_orders - Записує трек-номер у користувальницькі поля замовлення (
UF_TRACKING_NUMBER,UF_CARRIER) - Відправляє клієнту email з трек-номером через
\Bitrix\Main\Mail\Event::send() - Змінює статус замовлення на «Передано в доставку»
Контроль сроків
Агент раз на 6 годин перевіряє замовлення поставщикам старше lead_time_days. Якщо поставщик не прислав трек-номер вовремени — створюється задача менеджеру через CRM або відправляється сповіщення адміністратору.
Що налаштовуємо
- Таблиці
bl_suppliersтаbl_product_supplierз прив'язкою товарів до поставщиків - Обробник события оплати з логікою маршрутизації по поставщикам
- Клас
SupplierGatewayз адаптерами для API/email/EDI - Вебхук-ендпоінт для отримання трек-номерів від поставщиків
- Агент контролю сроків та сповіщень про просрочки







