Мне нужно, чтобы запас товара сразу уменьшался при создании заказа, и он не должен увеличиваться, если только заказ не отменен (он также не должен уменьшаться во второй раз после успешной оплаты или любого другого переключения).
Моя проблемаЯ хочу использовать свою витрину для выставления счетов и сбора местной сервисной работы.Я использую шлюз счетов оплаты позже, который переводит заказы в обработку, и в этом статусе запасы не уменьшаются, поэтому только что проданные количества по-прежнему перечислены как доступные на страницах моего продукта / каталога.Однако я обнаружил, что когда покупатель добавляет эти нематериальные запасы, он получает сообщение о невозможности добавить в корзину недостаточный запас, даже если на страницах каталога отображается его доступность.
Я не могу понять, для какой функции это будетслужить, поскольку количество уже указано в отложенном платежном поручении, почему оно отображается на страницах продукта / каталога.Я осыпал каждый пост, который мог найти в трех поисковых системах, пытающихся найти похожую ситуацию с ответом, но мне не повезло.
Я нашел это:
function reduce_stock_processing($order_id) {
wc_reduce_stock_levels($order_id);
}
В сообщениис подобными проблемами и пытался реализовать, но это не имело никакого эффекта, который я мог видеть.
Затем я нашел это:
add_action( 'woocommerce_valid_order_statuses_for_payment', function( $statuses, $order ) {
$statuses[] = 'on-hold';
return $statuses;
}, 10, 2 );
Но это позволило мне перевести заказы в состояние ожидания.где woo действительно тянет акции, и это позволяло производить оплату из этого статуса.Я наконец-то подумал, что это здорово, но когда я начал еще один раунд тестирования, я обнаружил, что если я создаю заказ и покупаю все оставшиеся запасы определенного продукта, это будет A: правильно вытащить запас из запаса, оставив запас продукта на нуле, затемB: когда я отправил клиенту счет-фактуру по электронной почте со ссылкой для оплаты.
Он сообщает, что заказ не может быть оплачен, так как товара нет на складе.Расстраивает, потому что хорошо обрабатывает заказы с обильным запасом;после выполнения заказа у меня остается соответствующий уровень запасов.
Похоже, что у Ву должен быть запас на складе, чтобы позволить клиентам платить .... или, по крайней мере, так мне кажется.
Любые идеи о том, как я могу достичьмоя цель?Заранее спасибо.
Update-
Итак, я изменил первый код на это:
function reduce_stock_pending($order_id) {
wc_reduce_stock_levels($order_id);
}
add_action('woocommerce_order_status_pending', 'reduce_stock_pending');
и сначала я подумал, что он не работает, потому что уровень запасовне изменился при создании заказа и его переходе в состояние отложенного платежа, но после переключения статуса в состояние отложенного удержания уменьшенный запас, и когда я возвращаю его в статус отложенного, запас остается уменьшенным, а в случае успешного платежа - нетдальнейшее сокращение запасов, чтобы это казалось по крайней мере работоспособным, учитывая, что я модератор, я буду знать, что делать .... но есть ли лучшее решение, которое позволило бы мне создать заказ и перевести его в состояние ожидания и уменьшить егона складе сразу, без необходимости переключать статус назад и вперед.
-Более подробная информация Примечания к заказу: все, что находится над изображением, относится только к оплате
Так что, похоже, быстроувеличение и затем уменьшение запаса при изменении статуса до ожидающего.Снова любая помощь будет оценена.