sgtpep / woocommerce-1c

Provides data exchange between the WooCommerce plugin for WordPress and the business application "1C:Enterprise 8. Trade Management" (and compatible ones).
https://wordpress.org/plugins/woocommerce-and-1centerprise-data-exchange/
GNU General Public License v3.0
69 stars 41 forks source link

Ошибочный статус "предзаказ" для вариаций с количеством 0. #46

Closed DmitriySolomatin closed 4 years ago

DmitriySolomatin commented 4 years ago

После синхронизации получаем товар с 10 вариациями. Количество в запасе у товара = 0. Количество в запасе у всех вариаций тоже = 0.

В import.php есть следующие строчки:

$_qnty = $_product->get_stock_quantity();
if (!$_qnty) {
  update_post_meta($_post_id, '_stock_status', WC1C_OUTOFSTOCK_STATUS);
}

Они отвечают за то, чтобы каждый импортируемый товар получал статус define('WC1C_OUTOFSTOCK_STATUS', 'outofstock'); (exchange.php). Что абсолютно верно. Но, это не работает на вариациях.

Аналогичный участок кода есть и в offers.php, который должен решать проблему. Но вероятно он не работает.

И в итоге, после импорта, мы получаем товар "outofstock" с 10 вариациями "onbackorder". Статус остатков "onbackorder" не позволяет WP и плагинам корректно отображать такой товар и даёт возможность нажать кнопку "В корзину" у вариации, которая на самом деле отсутствует.

Допускаю, что я что-то неправильно настроил или не указал какую-либо константу. Готов предоставить доступ, при необходимости.

DmitriySolomatin commented 4 years ago

Прошу прощения, запаниковал. Всё решается отключением товаров, которые отсутствуют, либо добавлением хука, который блокирует кнопку "купить", если товар отсутствует.