Conheci algumas pessoas que precisam que o estoque do WooCommerce seja reduzido durante o checkout e não apenas depois que a compra é confirmada pelo gateway de pagamento (como acontece com o retorno automático do PagSeguro, Bcash, MoIP e MercadoPago).

Particularmente acredito que a melhor solução é bater o estoque com o retorno automático. Caso o produto acabe antes da confirmação do pagamento é possível entrar em contato com o cliente para negociar uma data ou devolver o dinheiro.

Entretanto para você que acredita que o melhor é bater durante a compra aqui vai uma solução:

Isso vai fechar o pedido como processando e reduzir o estoque.

Com certeza vai gerar problemas também caso o cliente resolva desistir da compra… Lhe obrigando a repor o estoque manualmente.

Não existe solução perfeita além de tentar manter um número adequado de produtos em estoque e também saber negociar com o cliente.

12 pensamentos em “WooCommerce Snippet: Reduzir estoque durante o checkout

  1. Boa implementação. =)
    E se fosse para retornar processando apenas e não aguardando? pois assim o adm receberia um email do pedido e o cliente tbm; para uma posterior redução do estoque. XD
    Ab. Att

    Responder
    • Até daria para mandar reduzir o estoque.

      Entretanto quando recebesse o sinal de algum plugin com retorno automático o estoque seria reduzido duas vezes…
      E ai não teria mais vantagem em fazer isso.

      Responder
      • Claudio, blz?
        Na verdade estava pensando em fechar o pedido como processando apenas;
        Pois atualmente o plugin fecha como aguardando e não é enviado e-mail para o cliente sobre o pedido.
        tipo isso…
        Abraço…

        Responder
          • Ele fecha como “Processando” e não como “Aguardando”.

            Hoje até fiz uma atualização nele que quando o PagSeguro envia sinal de que a compra foi Aprovada ele já coloca como “Processando”.
            Antes isso acontecia quando o PagSeguro envia sinal de Concluído.

  2. Fala Claudio, estou virando teu fã! Já utilizo alguns plugins feitos por você, e tive uma nova necessidade. Vou começar a utilizar o Woocommerce apenas para gerenciamento de estoque em um projeto. Tive este pequeno inconveniente de ter que ficar dando baixas manualmente. Com o teu snippet, tudo se resolveu tranquilamente. Assim eu consigo deixar alguém para fazer o lançamento do que saiu e o sistema automaticamente já da baixa. Ótimo recurso! Só me tira uma dúvida: No final do código falta um “?>” ou é sem fechar o php mesmo? Coloquei o sinal aqui e funcionou tranquilamente (não testei sem).
    Um mega abraço e muito obrigado mais uma vez por este simples recurso, mas EXTREMAMENTE funcional.

    Responder
    • Quando é no final do arquivo não tem necessidade de fechar. Pode conferir arquivos como o wp-config.php do seu site e outros do WordPress, você vai ver que não esta fechando xD.

      Isso evita problemas, ainda mais sendo feito no functions.php.
      Acontece que o functions.php roda antes do que qualquer outro arquivo do tema. Se você feche o ?> pode acontecer problemas se deixar espaços em branco ou quebras de linhas.

      No caso o melhor é não fechar o ?> e deixar uma linha vazia no final. Desta forma nunca vai dar problema.

      Responder
  3. Olá! Encontrei esta página e estou tão contente por estar perto de encotnrar uma solução para este grande problema! Mas como não percebo nada de programação, pode indicar em que página é que eu copia este código?

    Muito muito obrigada!

    Responder
  4. Oi Claudio, estava procurando isso a muito tempo. Meu problema é que eu tenho muitos produtos, porém com estoque limitado, geralmente 1 de cada. Só que tenho muitas compras por dia. Dua ou três pessoas compram o mesmo produto e pagam por boleto, por exemplo, quando o pagamento é compensado, aí o estoque é reduzido, porém, quando a segunda ou terceira pessoa também paga, o produto já não está mais disponível.

    Pegunta 1: Se eu pedir para baixa o estoque quando o pedido estiver “pendente”, assim que o pagamento for compensado ele vai baixar novamente quando mudar para “processando”?

    Pergunta 2: Digamos que a politica da loja seja cancelar pedidos pendentes há mais de 5 dias, quando eu mudar de “pendente”para “cancelado” ele restaura o estoque, ou tenho que mudar manualmente?

    Excelente trabalho, abs

    Responder
    • Não vai baixar de novo porque no caso ele já vai completar e deixar como processando já… Vai ter que aguardar ainda o pagamento e enviar para poder alterar o status para concluído.

      Caso o cliente não pague você deve arrumar o estoque manualmente e colocar como cancelada a compra dele.

      Responder

Deixe uma resposta