Eu tenho um problema estranho com o número do pedido no Magento.
Recentemente, quando um pedido foi feito no meu site, o número do pedido foi 100000350
: Idealmente, deveria ter sido 100000370
como meus números de pedidos anteriores eram 100000369
e 100000367
. Anexei a captura de tela abaixo para ela
Além disso, verifiquei os logs de erros, mas não encontrei nenhuma entrada. Estamos usando o SagePay e o PayPal como gateway de pagamento.
Alguém pode me orientar sobre isso?
magento-1.7
sales-order
order-status
Dexter
fonte
fonte
Respostas:
A primeira vez que obtive um número fora de sequência, tivemos surpresa e algum desânimo até descobrir o que estava acontecendo. Tem a ver com a forma como o Magento aloca números de pedidos de vendas.
Agora, a explicação.
O processo de pedido do Magento cria uma cotação na primeira vez que algo é adicionado ao carrinho.
Nesse ponto, a cotação é apenas um pedido de venda em potencial . Não possui um número atribuído, porque o cliente não se comprometeu a pagar por ele.
Quando o cliente clicar no botão Continuar para finalizar a compra, ele:
O que se segue é uma parte importante: Os clientes que optam por se registrar no carrinho são tratados como clientes convidados até que o pedido seja concluído e acessem a página de sucesso, quando sua conta é criada e eles são logados. permanece uma cotação de cliente convidado com a perda do carrinho de tempo limite da sessão se o pedido não for concluído e uma página de sucesso for exibida.
Com um pedido de cartão de crédito, o seguinte acontece quando o botão Efetuar pedido é clicado.
sales_flat_quote
tabela nareserved_order_id
coluna)Se a transação do cartão de crédito for recusada para qualquer cliente pelo gateway de pagamento com cartão de crédito e o próximo cliente fizer um pedido com êxito, haverá uma pular na sequência do número do Pedido de Vendas devido ao fato de o Pedido de Vendas recusado ter recebido um número de Pedido de Venda reservado e o seguinte pedido de vendas bem-sucedido sendo atribuído ao próximo número disponível.
Para carrinhos de convidados (pedidos de convidados e registro malsucedido nos clientes do carrinho) que excederem o tempo limite da sessão, esse número reservado do Pedido de Vendas será perdido quando a sessão expirar, deixando lacunas na sequência do Pedido de Vendas.
Para os clientes que efetuaram login antes de clicar no botão Continuar , a cotação recebe um ID de cliente. Portanto, se eles tentarem fazer um pedido e descobrirem que foi recusado, poderão voltar, fazer login, encontrar o carrinho ainda com conteúdo e colocar o ordem, às vezes muito mais tarde (o mais longo até o momento foi de quatro meses). A cotação usará o número de pedido de venda reservado atribuído, levando a um número de pedido de venda fora de sequência, exibido no visor de gerenciamento de pedidos de vendas.
fonte
Eu estava enfrentando o mesmo problema, mas foi apenas quando o servidor foi atingido com uma enorme quantidade de carga. Esse problema ocorre porque o banco de dados entra no estado de bloqueio ao converter cotação em ordem. Em uma inspeção mais aprofundada, descobri que o problema era tentar gravar na tabela sales_flat_order_grid dentro da transação logo após a inserção na tabela sales_flat_order. Com consultas simultâneas, causava colisões de bloqueio. A solução real é mover coisas da sales_flat_order_grid para fora da transação.
O link me ajudou a entender o problema
O patch resolveu o problema para mim.
Você precisa remover a função _afterSave do Mage_Sales_Model_Abstract e adicionar
Deixe-me saber se isso resolve o problema para você.
fonte
Não tenho certeza, mas isso pode resolver seu problema:
Na minha opinião, algo pode ter perturbado sua
eav_entity_store
mesa. Ele contém informações sobre o próximo increment_id, ou seja, order_id a ser usado. Pode ser que algum módulo ou código no seu sistema magento possa ter mudado.Abra esta tabela e atualize o incrum_last_id coloumn com o seu último ID de pedido. Tenha cuidado, ele contém id do incremento de outras pessoas, bem como a nota fiscal, expedição etc. Para ter certeza, basta ir à
eav_entity_types
mesa e ver o que é oentity_type_id
desales/order
(colunaentity_model
). No meu magento, é 5. Então agora vá para aeav_entity_store
tabela e atualize o increment_id para a linha cujoentity_type_id
é 5. Você pode atualizá-lo diretamente via phpmyadmin ou executar consultas como,Observe que 5 é entity_type_id no meu magento para pedido
Pode haver muitos motivos para o seu problema, mas acho que isso pode resolvê-lo.
fonte