Em determinado caso, tive que forçar o WooCommerce a abater o produto do estoque ao finalizar a compra, independentemente do status do pagamento.

Nesse caso, toda compra abate do estoque e o cliente precisa reabastecer o estoque de compras canceladas manualmente.

Utilizei esse código abaixo:

Depois disso é necessário alterar a função padrão do WooCommerce para que quando o pagamento for realizado, não abata novamente do estoque.

Como estamos reduzindo o estoque independentemente do status da compra, precisamos então colocar de volta no estoque os produtos de compras que são canceladas. Para isso podemos utilizar o plugin WooCommerce Auto Restore Stock.

Essa solução não é ideal para todas as lojas. Isso depende muito do modo como o lojista controla seu estoque.

[Atualização]

Algumas pessoas tem perguntado como reduzir o estoque no momento que o produto é adicionado ao carrinho. Nesse caso, recomendo dar uma olhada nos plugins abaixo. Lembrando que um sacana pode colocar vários produtos no carrinho e aí você ficará sem estoque por alguns minutos.

WooCommerce Cart Stock Reducer
WooCommerce RedCart – Reduce stock on in-cart items

About The Author

Comments

    1. Fagner Guimarães Article Author

      Maurício.

      A descrição dessa função da documentação, não me esclareceu em que momento o produto sai do estoque, eu acho que é quando a compra é finalizada, mas o pagamento ainda está pendente. Aí o WooCommerce vai esperar X minutos pelo pagamento.

      No caso do Brasil e do PagSeguro, isso pode demorar DIAS, por isso acho que não atende a necessidade.

      Eu nunca testei.

  1. Marcio

    Olá Fagner. Estou testando sua solução, mas não tenho encontrado resultado.
    Preciso que seja reduzido do estoque no momento que o produto for incluído no carrinho. É possível?

    1. Fagner Guimarães Article Author

      Marcio. É possível sim, mas aí não é mais esse código. Procure por um hook que seja disparado quando coloca o item no carrinho, mas nesse caso você terá o desafio de colocar novamente esse item no estoque, se a pessoa não finalizar a compra em X minutos.

      Dá uma olhada nesses plugins abaixo, que podem resolver seu problema, mas eu nunca utilizei nenhum dos dois:

  2. Gibran Pulga

    Para os métodos de Depósito Bancário (nativo Woocommerce) e Boleto Bancário (plugin do Cláudio Sanches), o estoque está sendo diminuído no momento que o pedido é feito.. É possível ao invés disso, diminuir o estoque no momento que eu altero o pedido pra Processado ?

  3. Marcio

    Olá Fagner. Estou tentando usar seu código, mas por algum motivo não está funcionando.
    Quando eu concluo a compra, o pedido é gerado e aparece na lista do administrador, mas nenhuma nota de pedido é gerada, e o estoque ainda permanece inalterado.
    Eu sou leigo em programação, mas acredito que é porque no meu site não é apresentado a página pós-compra (woocommerce_thankyou).
    Como posso alterar para que quando a pessoa clique no botão “Realizar Pagamento” a função seja ativada?

  4. lucas (@lucaspmenezes)

    Fagner, como resolver este problema?

    “desculpe nenhum produto atende sua seleção wordpress ”

    Isso acontece na hora em que vou selecionar alguma variação do produto, no caso “tamanhos”. Na hora de selecionar P, M, ou G, aparece essa notificação acima.

  5. Vitor

    Funcionou perfeitamente para reduzir o estoque no momento do pedido, dessa forma mesmo um pagamento por boleto já reduz do estoque.
    Porém para retorno do estoque não funcionou muito bem, pois nesse caso o pedido fica como “Pagamento pendente”, e ao alterar desse status para cancelado não retorna o produto ao estoque, acredito ser porque o woocommerce por padrão não teria baixado estoque nesse momento.
    Existe alguma forma de retornar para o estoque nesses casos?
    Obrigado

  6. Evolution Informática

    Booa noite, ele não altera o numero de estoque, faço a compra, mas continue o mesmo número de estoque, mas ele trava(no sentido de não deixar seguir, até aí está trabalhando certo) quando vou comprar mais produtos além da quantidade de estoque… mas a quantidade de estoque não cai.

  7. Pingback: Reduzir estoque de produtos no Woo Commerce com Pagseguro

  8. Adriano Augusto

    Fagner, funcionou perfeitamente para PagSeguro e MercadoPago, porém tenho também a opção de Depósito Bancário (Nativo do WordPress) e nesta opção o produto é baixado 2x do estoque mesmo adicionando a função de não baixar novamente quando o pagamento é realizado.

    Saberia me informar se existe alguma outra função para resolver isso? Obrigado.

Deixe uma resposta