Jump to content
williamespindola

Produto é adicionado no pedido sem o cliente selecionar

Recommended Posts

Olá pessoal, estou com um problema estranho no prestashop, nunca vi ele fazer isto. O cliente seleciona os produtos e conclui o pedido, mas na conclusão o prestashop adiciona produtos que o cliente não escolheu, e o valor dele não é computado: deem uma olhada na imagem para entender melhor:

suplemente-order-problem-1.png

Se eu excluo o produto "fantasma" da ordem ele subtrai o valor deste produto do total da venda, ficando o total menor que o valor total da soma dos produtos. Vejam a imagem com o produto excluído:

 suplemente-order-problem-2.png

 

Alguém ja passou por isto?

Share this post


Link to post
Share on other sites

Este problema é muito comum quando vc. deleta produtos diretamente no banco de dados ou import erroneo. Vc. vai ter que analisar qual o ID do produto fantasma e comparar em todas as tabelas do banco de dados aonde existe este ID e lá deletá-lo.

Share this post


Link to post
Share on other sites

Estranho que não excluí produtos diretamente no banco de dados e nem com algum tipo de import. Para falar a verdade se foi excluído 2 produtos foi muito, alem dos demos. Bom mas vou dar uma olhada nas tabelas com o objetivo que você mencionou. 

Obrigado.

Share this post


Link to post
Share on other sites

Boas,

 

Nao será um problema de taxas?

Verifique o valor de cada produto nas imagens no backoffice.

 

Cumps

Share this post


Link to post
Share on other sites

Boas,

 

Verifique o valor de cada produto das imagens indicadas no backoffice, veja se o valor esta correcto e como esta definido as taxas.

Share this post


Link to post
Share on other sites

O valor esta correto @CarlosC inclusive, o valor do produto que esta sendo incluído sozinho. O que não entendi é porque uma variação na taxa ou até no valor de um produto adicionaria um outro produto na ordem. Alterar os valores dos existentes poderia até ser plausível, mas não adicionar um produto que o cliente nunca olhou antes. 

Share this post


Link to post
Share on other sites

Como vc. deletou os produtos modêlo ? A única solucao de resolver o problema é no banco de dados mesmo. Ou existem id's iguais para dois produtos ou para as combinacoes (que é mais viável). Existindo dois id's iguais vai puxar o primeiro. por isso é melhor deletar o produto completamente

Edited by selectshop.at (see edit history)

Share this post


Link to post
Share on other sites

Sempre excluo os produtos e ou combinação no próprio Prestashop mesmo.

A única "maracutaia" que fiz para excluir alguma coisa foi para remover as ordens exemplo quando o prestashop é instalado, para isto eu troquei o método na URL de "vieworder" para "deleteorder". Ainda sim os produtos que estão sendo incluídos não são estes.

 

E @selectshop.at estou procurando no banco de dados algum dado perdido mas até o momento não encontrei nenhum.

Edited by williamespindola (see edit history)

Share this post


Link to post
Share on other sites

O ID do produto fantasma vc. nao tem em dobro em alguma tabela de combinacoes por exemplo ? Vc. tem que procurar por duplicidade.

Share this post


Link to post
Share on other sites

Sempre excluo os produtos e ou combinação no próprio Prestashop mesmo.

A única "maracutaia" que fiz para excluir alguma coisa foi para remover as ordens exemplo quando o prestashop é instalado, para isto eu troquei o método na URL de "vieworder" para "deleteorder". Ainda sim os produtos que estão sendo incluídos não são estes.

 

E @selectshop.at estou procurando no banco de dados algum dado perdido mas até o momento não encontrei nenhum.

 

Esta a confirmar o problema o método indicado para remover pedidos não funciona correctamente.

 

- Crie backuos.

- Faça o seguinte, faça uma serie de encomendas seguidas (Deve ser superior a quantidade de encomendas apagadas) e verifique se o problema continua.

 

Cumps

Share this post


Link to post
Share on other sites

Bom aparentemente o problema foi resolvido. Valeu pela ajuda.

Na tabela ps_order_carrier havia alguns registros antigos, o campo id_order havia alguns registros até o id 13, porem minha tabela ps_orders e muitas outras tabelas no prestashop não trabalha com id auto incremental, que é um grande problema, pois permite a exclusão de um registro relacionado à outra tabela. 

Para não criar mais problema eu não exclui e fui criando ordens falsas até ultrapassar o id atual na tabela ps_order_carrier.

Share this post


Link to post
Share on other sites

Isto é totalmente lógico, pois assim funciona um banco de dados (ou pelo memos deveria funcionar). O seu problema também é que manipulou o incremental.

 

Quando vc. adiciona ao banco de dados um pedido com um produto que também tem ID, vc. acaba reservando o espaco. Vc. deletando o pedido, nao vai deletar o produto. Vc. deletando um produto e este já tiver um pedido feito,vai reservar o ID, pois este já está linkado a um pedido, ou seja os dados estao relacionados.

Vc. também terá de apagar o que já foi reservado anterirormente, por isso o Prestashop desde PS 1.6.07 autoriza a instalacao SEM os modelos ! Para todas as versoes anteriores existem módulos gratuítos que limpam o banco de dados corretamente.

 

Ex:

http://www.prestashop.com/forums/topic/191037-free-delete-orders-module/

http://store.nemops.com/free-modules/19-order-delete.html

Share this post


Link to post
Share on other sites

Na verdade não tem lógica nenhuma! Uma coisa é auto incremental outra é incremental. 
O banco de dados do prestashop, nestas tabelas pelo menos usa Chaves primárias não auto incrementais, então a cada inserção é necessário adicionar o ID manualmente, pegando o último cadastrado e somando 1. 
O relacionamento entre as tabelas ps_order_carrier e ps_order não são identificados.

Como falei anteriormente os produtos que o prestashop estavam incluindo automaticamente não foram excluídos. 

O erro esta no relacionamento entre as tabelas ps_order_carrier e ps_order onde os ids não são identificados e não são auto incremental. Certamente não são porque o código do prestashop é legado e pouco refatorado, quando o banco foi criado o recurso não existia ou cagada do desenvolvedor, as classes foram sendo criadas e hoje tem um problema de auto acoplamento difícil de manter.
O correto funcionamento da exclusão de um pedido seria excluir os dados relacionados com o relacionamento, no caso aqui os dados presentes na tabela ps_order_carrier, pois a partir do momento que eu não tenho mais uma ordem para que eu preciso manter o transporte dela?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More