Данные об остатках/складах из выгрузки — количество товара на сайте
Как правило, одной из основных задач, которые требуется решить в рамках задачи обмена с 1С (СБИС, МойСклад), является соответствие наличия на сайте с данными в системе учета. Безусловно, это требуется не всегда, поэтому плагин имеет настройки, для управление этим поведением, то есть скрывать или оставлять доступными для покупки товары без остатка.
Данные об остатке товара, поступают в выгрузке информации о торговых предложениях и могут содержать остатки, как с разбиением по складам (в таком случае поступает еще и информация по складам), так и без, то есть только информацию о суммарном остатке. Вне зависимости от того, с разделением по складам или нет, в остаток товара на сайте будет записано суммарное значение, так как в WooCommerce нет разделения по складам.
Пример данных по остаткам из выгрузки (без разбиения)
Как вы можете видеть, присутствует тег «Количество», который и содержит значение остатка. Встречаются варианты формирования, когда тега «Количества» при нулевом остатке нет, такая ситуация учтена и отсутствие тега рассматривается равнозначно, как если бы он был и содержал 0.
Если данные поступают с разделением по складам, то кроме самих остатков, поступает еще и общая информация о складах (плагин сохраняет данные по складам в опцию — all_1c_stocks, чтобы вы имели возможность организовать вывод на сайте).
Кроме общего остатка для товара, информация о разделении сохраняется в метаданные товара по ключу — _separate_warehouse_stock. Таким образом, используя основную информацию о складах и информацию из товара вы можете организовать отображение этой информацию пользователю.
Пример данных с общей информацией о складах из выгрузки
Данные об остатках с разбиением, могут быть в нескольких вариантах схем, то есть структура xml отличается.
Пример данных об остатках с разбиением из выгрузки
Еще пример данных об остатках с разбиением из выгрузки
Набор цен в предложении может быть меньше или иметь нулевые значения, когда цены не были установлены.
Возможная проблема: по остатку в 1С товар кончился, а на сайте он все еще в наличии
Такое поведение, как правило, может являться следствием нескольких вариантов.
Вариант 1: В настройках узла обмена настроено правило для того, чтобы выгружать только при положительном остатке. Таким образом, как только по остатку становится 0, то информация о позиции номенклатуры, как и предложение для нее, в выгрузку больше не попадает.
Вариант 2: Модуль в 1С содержит ошибку и без каких-либо ограничений в настройках узла обмена, не выгружает информацию о предложениях с нулевым остатком, но при этом, основная информация о позиции номенклатуры поступает.
Итог: 0 будет установлен (то есть товар может быть скрыт и помечен, как нет в наличии), если в выгрузке поступит 0 (то есть будет предложение для товара с информацией о нулевом остатке). В данном же случае, никакой информации не поступает, таким образом сайт не узнает, что остаток поменялся.
Представьте абстрактную ситуацию: есть склад и есть полка в магазине с числом, при изменении количества на складе, сотрудник подходит к полке и ставит нужное число, предположим остаток на складе изменился на 2, сотрудник склада пришел и поставил 2, через некоторое время, по каким-то причинам, остаток на складе стал 0, но сотрудник решил не ходить к полке и в итоге на ее счетчике значение не было установлено в 0.
Тут все также, информация об остатке должна поступать и доставка данных о нулевом остатке является необходимой, чтобы изменился остаток на сайте. В рамках стандартного поведения, информация о нулевом остатке конечно же поступает, на этом построена любая логика обработки.
Пример отображения вкладки с остатками по складам на странице товара
Предположим, в выгрузке есть 3 склада — «Склад 1», «Склад 2» и «Склад 3», также есть простой товар и перед нами стоит задача отобразить данные по остаткам этого товара на складах во вкладке на его странице.
Таким образом, мы получим результат в виде вкладки на странице товара и данных по складам с остаткам этого товара в содержимом вкладки, то есть похожее на скриншот ниже (конечно, вид зависит от вашей темы, а также это вообще может не сработать, если в теме не работает стандартный фильтр `woocommerce_product_tabs` для набора вкладок).
Пример отображения информации с остатками по складам для вариативного товара
Предположим, в выгрузке есть 3 склада — «Склад 1», «Склад 2» и «Склад 3», также есть вариативный товар и перед нами стоит задача отобразить данные по остаткам вариации на складах при выборе характеристик.
Таким образом, мы получим результат в виде меняющейся информации по складам с остатками при выборе характеристик, то есть похожее на скриншот ниже (конечно, вид зависит от вашей темы, а также это вообще может не сработать, если в теме не работает стандартный фильтр woocommerce_available_variation
для данных вариации).