В Woo мне нужно, чтобы реальные уровни запасов уменьшались при создании заказа и не уменьшались до отмены заказа

Мне нужно, чтобы запас товара сразу уменьшался при создании заказа, и он не должен увеличиваться, пока заказ не будет отменен (он также не должен уменьшаться во второй раз после успешной оплаты или любого другого переключения).

Моя проблема в том, что я хочу использовать свою витрину, чтобы выставлять счета и собирать локальные услуги. Я использую шлюз счетов оплаты позже, который сбрасывает заказы в обработку & woo не уменьшает запасы в этом статусе, поэтому только что проданные количества по-прежнему перечислены как доступные на страницах моего продукта / каталога. Однако я обнаружил, что когда покупатель добавляет эти нематериальные запасы, он получает сообщение о невозможности добавить в корзину недостаточный запас, даже если на страницах каталога отображается его доступность.

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

Я нашел это:

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: когда я отправил клиенту счет-фактуру по электронной почте с платной ссылкой.

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

Кажется, что для того, чтобы клиенты могли платить, необходимо иметь дополнительный запас на складе … или, по крайней мере, мне так кажется.

Любые идеи о том, как я могу достичь своей цели? Заранее спасибо.

Обновить-

Итак, я изменил первый код на это:

function reduce_stock_pending($order_id) {
wc_reduce_stock_levels($order_id);
}
add_action('woocommerce_order_status_pending', 'reduce_stock_pending');

и сначала я подумал, что это не сработало, потому что уровни запасов не изменились при создании заказа и его падении прямо до статуса ожидающего платежа, но после переключения статуса в состояние удержания он уменьшал запас и когда я переключал его обратно до ожидающего статуса запас остается уменьшенным, и при успешной оплате он больше не уменьшает запас, так что кажется, по крайней мере, работоспособным, учитывая, что я модератор, я буду знать, что делать …. но есть ли лучшее решение, которое позволило бы мне чтобы создать ордер и сразу перевести его в состояние ожидания, и он сразу же уменьшит запас, не переключая статус назад и вперед.

-Больше информации
Примечания к заказу:
все расположенное выше изображение относится только к оплате

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

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]