WC: отрицательный запас из заказа, в то время как бэкдор отключен - PullRequest
0 голосов
/ 07 декабря 2018


Это моя проблема: клиент купил товар, которого нет в наличии.Таким образом, запас изменился с 0 на -1.

Мой порог отсутствия на складе равен 0, и обратный заказ отключен для всех продуктов.Я пытался воссоздать сценарий на своем промежуточном сайте, но мне это не удалось.Продукт неактивен и недоступен для выбора, когда я установил его количество на 0.

Я подумал, что, возможно, какая-то проблема с кэшированием (я использую Hummingbird) помешала ему обновить запас.Итак, это были дальнейшие сценарии, которые я попробовал:
- выбор продукта на странице отдельного продукта, установить запас в бэкэнде на 0 -> невозможно
- продукт в корзине, установить запас в бэкэнде на 0 --> невозможно
- товар на кассе, установите запас в бэкэнде на 0 -> невозможно

Кто-нибудь из вас знает, как это могло произойти?Я не уверен, что делать дальше.

спасибо

Ян

1 Ответ

0 голосов
/ 08 декабря 2018

После тщательного прочтения исходного кода WooCommerce я думаю, что вы можете воссоздать проблему, если у вас есть два компьютера.

Рассмотрим продукт P с количеством запаса, равным 1. Есть 2 разных клиента A и B. КлиентА кладет продукт Р в свою корзину.Перед тем, как покупатель А разместит свой заказ, покупатель Б положит товар Р в свою корзину.Затем клиент A размещает свой заказ, уменьшая количество запаса продукта P до 0. Затем клиент B размещает свой заказ, уменьшая количество запаса продукта P до -1.К сожалению, для проверки этого требуется два компьютера (или два браузера), так как вам нужно два одновременно авторизованных клиента.У меня только один компьютер, и я не хочу устанавливать другой браузер.

Проблема в функции WC_Cart :: add_to_cart ().Он вызывает WC_Product :: has_enough_stock () со ссылками только на количество товара на складе и количество, заказанное в его корзине.Он не учитывает количество продукта, которое существует в других тележках.На самом деле WooCommerce должна быть способна добиться большего успеха, поскольку она знает содержимое корзины покупателя A, когда покупатель B добавляет продукт P в свою корзину A.

Конечно, здесь есть небольшая дилемма, потому что если WooCommerceне позволяет покупателю B добавить продукт P в свою корзину, поскольку покупатель A имеет его в своей корзине, а покупатель A фактически не размещает заказ, тогда компания может потерять продажу.

В противном случае WooCommerce может отклонить заказы B покупателя.заказ, когда B размещает заказ, но если я что-то пропустил, я не видел никакого кода для этого.Мне кажется, это разумное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...