Клиент ведёт учёт товаров с помощью складского учёта в Битрикс 24. Для того, чтобы актуальные цены и остатки товаров отображались на сайте Joomla нужно настроить получение этих данных по REST API Битрикс 24.
Логика синхронизации следующая: на стороне Joomla настраивается таблица связей товаров магазина и товаров Битрикс 24. Так же в запросах к методам Битрикс 24 нужно указывать параметр iblockId
- id товарного каталога. Его можно получить либо соответсвующими методами REST API, либо увидеть в карточке товара на стороне Битрикс 24.
PHP код для получения остатков товаров Битрикс 24 по REST API
Количество товаров можно получить методом catalog.product.list.
$resultBitrix24ProductQuantity = CRest::call("catalog.product.list", [
'select' => [
'id', 'iblockId', 'name', 'quantity', 'xmlId'
],
'filter' => [
'id' => $b24_product_id, // Фильтр по id Товара
'iblockId' => $task_params->default_bitrix24_store_iblock_id // id товарного каталога
]
]);
В ответе приходит массив $resultBitrix24ProductQuantity['result']['products']
с товарами. Поскольку в нашем запросе мы указали фильтр по id конкретного товара - придёт один товар. Поэтому получить данные можно обратившись по индексу элемента массива - $resultBitrix24ProductQuantity['result']['products'][0]['quantity'];
Важно: Если в Битрикс 24 указана цена 0, то в ответе по REST API придёт ничего - пустота. Проверяйте данное значение на empty()
самостоятельно, чтобы в базу данных уходил int 0
, а не пустая строка.
Важно: в запросах к данным методам в массиве select
запроса должны быть обязательные параметры id
и iblockId
. Иначе Битрикс 24 вернёт ошибку.
PHP код для получения цен товаров Битрикс 24 по REST API
Цену товара получаем методом catalog.price.list.
$resultBitrix24ProductPrice = CRest::call("catalog.price.list", [
'select' => [
'price'
],
'filter' => [
'productId' => $b24_product_id, // Фильтр по id Товара
]
]);
// В ответе массив
$resultBitrix24ProductPrice['result']['prices'][0]['price'];
В моём случае товаров с нулевой ценой в каталоге не было, поэтому не могу сказать что приходит в ответе Битрикс 24 в этом случае, но, возможно, стоит применить empty()
и здесь.
Готовый бесплатный плагин для обновления цен и остатков товаров из Битрикс 24 в JoomShopping по CRON находится здесь: WT JShopping Bitrix 24 PRO - CRON. Это плагин задачи для встроенного в Joomla 4.1+ планировщика задач, легко ставится на серверный CRON. Подробнее на странице расширения.