elisei / moip-transparente-magento

33 stars 29 forks source link

Produto voltando mais de uma vez ao estoque #81

Closed WidecommerceDev closed 5 years ago

WidecommerceDev commented 5 years ago

Olá, recentemente estamos enfrentando um problema com estoque de produtos.

Vamos supor que um produto tendo em estoque 10 unidades é vendido e ele tem seu estoque abaixado para -1 ficando com 9 unidades. Até aqui tudo bem.

Porém quando o pedido é cancelado, automaticamente a quantidade do produto vendido volta em estoque somando +1 nesse caso e voltando a ter 10 unidades o meu produto.

Porém o que está acontecendo é que esta sendo retornado mais de uma unidade ao estoque, ao invés de voltar 1 está voltando 2 ficando com quantidade total de 11.

Lembrando que esses valores são só exemplos, e a quantidade voltada ao estoque depende da quantidade comprada.

Certo, e o que isso tem haver com o método de pagamento MOIP?

Em alguns pedidos a solicitação de pagamento cancelado está chegando na minha plataforma de duas a mais vezes sequenciais, sem um espaço de tempo... Coisa de 2 segundos ou até menos de diferença... Com isso a primeira requisição não chega a salvar e já vem outra logo em seguida... Com isso o Magento soma as quantidades para voltar em estoque das duas requisições e salva o valor de estoque errado.

Para resolver isso creio que seja bem simples... Ao invés de utilizar Mage::getModel('sales/order'), utilizem Mage::getSingleton('sales/order'), pois como estamos utilizando o padrão singleton, ele não vai instanciar outro objeto e fazer a confusão dos estoques.

Não sei se consegui ser claro. Se tiverem dúvidas estamos a disposição para batermos um papo.

elisei commented 5 years ago

@WidecommerceDev

O problema está em sua duplicidade de recebimento, segue tópico da Wiki com orientações sobre isso: https://github.com/elisei/moip-transparente-magento/wiki/Webhooks

WidecommerceDev commented 5 years ago

@elisei entendi, porém já que na própria Wiki comenta o problema da duplicidade, seria legal utilizarem o singleton para instanciar o objeto do pedido, prevenindo isso sem depender de configurações nas plataformas terceiras.

Mesmo assim obrigado pelo feedback!

elisei commented 5 years ago

Olá @WidecommerceDev

Então a questão é que a duplicidade de preferência não é boa não para vocês nem para gente, gasta recursos de ambos os servidores atoa além de gerar inconsistências no tratamento de erros de recebimento, por isso a orientação.

WidecommerceDev commented 5 years ago

@elisei entendi.

Seria essa configuração que teria que apagar?

Seleção_002

Nesse caso já está certo?

elisei commented 5 years ago

@WidecommerceDev

Se somente apresenta essa está certo, não precisa apagar, se outra além dessa aí deverá apagar.

WidecommerceDev commented 5 years ago

Então mesmo colocando singleton e estando assim na configuração, a duplicidade de recebimento ainda está acontecendo.

elisei commented 5 years ago

Oi,

Seu módulo está de fato atualizado?

WidecommerceDev commented 5 years ago

@elisei sim, porém estou utilizando a versão apenas pagamento.

https://github.com/elisei/moip-apenas-pagamento

Pois possuímos outro checkout.

WidecommerceDev commented 5 years ago

@elisei iremos fazer alguns testes e iremos voltar com o feedback