Jump to content

(Résolu) Prestashop ne sauve pas la commande


Recommended Posts

Bonjour,

 

J'ai un problème relativement grave. Un client passe sa commande, le module ATOS valide la commande, j'ai bien reçu le paiement a la banque, mais prestashop ne valide pas la commande, elle reste à l'état de panier.

PS 1.6.0.11 -> Installation fraiche...

Quand j'ai essayé de valider la commande dans le backoffice, voila ce qu'il m'affiche.

 

 

[PrestaShopException]

Can't save Order
at line 340 in file classes/PaymentModule.php

335.                     $result = $order->add();
336.
337.                     if (!$result)
338.                     {
339.                         PrestaShopLogger::addLog('PaymentModule::validateOrder - Order cannot be created', 3, null, 'Cart', (int)$id_cart, true);
340.                         throw new PrestaShopException('Can\'t save Order');
341.                     }
342.
343.                     // Amount paid by customer is not the right one -> Status = payment error
344.                     // We don't use the following condition to avoid the float precision issues : http://www.php.net/manual/en/language.types.float.php
345.                     // if ($order->total_paid != $order->total_paid_real)

Merci pour votre aide.

Edited by RaWMotorsports (see edit history)
Link to comment
Share on other sites

[PrestaShopException]

Can't save Order

at line 340 in file classes/PaymentModule.php

335.                     $result = $order->add();

336.

337.                     if (!$result)

338.                     {

339.                         PrestaShopLogger::addLog('PaymentModule::validateOrder - Order cannot be created', 3, null, 'Cart', (int)$id_cart, true);

340.                         throw new PrestaShopException('Can\'t save Order');

341.                     }

342.

343.                     // Amount paid by customer is not the right one -> Status = payment error

344.                     // We don't use the following condition to avoid the float precision issues : http://www.php.net/manual/en/language.types.float.php

345.                     // if ($order->total_paid != $order->total_paid_real)

  • PaymentModuleCore->validateOrder - [line 1098 - controllers/admin/AdminOrdersController.php] - [9 Arguments]
    1093.                     $employee = new Employee((int)Context::getContext()->cookie->id_employee);

    1094.                     $payment_module->validateOrder(

    1095.                         (int)$cart->id, (int)$id_order_state,

    1096.                         $cart->getOrderTotal(true, Cart::BOTH), $payment_module->displayName, $this->l('Manual order -- Employee:').' '.

    1097.                         substr($employee->firstname, 0, 1).'. '.$employee->lastname, array(), null, false, $cart->secure_key

    1098.                     );

    1099.                     if ($payment_module->currentOrder)

    1100.                         Tools::redirectAdmin(self::$currentIndex.'&id_order='.$payment_module->currentOrder.'&vieworder'.'&token='.$this->token);

    1101.                 }

    1102.             }

    1103.             else

  • AdminOrdersControllerCore->postProcess - [line 171 - classes/controller/Controller.php]
    166.             // setMedia MUST be called before postProcess

    167.             if (!$this->content_only && ($this->display_header || (isset($this->className) && $this->className)))

    168.                 $this->setMedia();

    169.

    170.             // postProcess handles ajaxProcess

    171.             $this->postProcess();

    172.

    173.             if (!empty($this->redirect_after))

    174.                 $this->redirect();

    175.

    176.             if (!$this->content_only && ($this->display_header || (isset($this->className) && $this->className)))

  • ControllerCore->run - [line 374 - classes/Dispatcher.php]
    369.             // Execute hook dispatcher

    370.             if (isset($params_hook_action_dispatcher))

    371.                 Hook::exec('actionDispatcher', $params_hook_action_dispatcher);

    372.

    373.             // Running controller

    374.             $controller->run();

    375.         }

    376.         catch (PrestaShopException $e)

    377.         {

    378.             $e->displayMessage();

    379.         }

  • DispatcherCore->dispatch - [line 54 - admin/index.php]
    49.     $_POST['controller'] = strtolower($_POST['tab']);

    50. if (!isset($_REQUEST['controller']) && isset($_REQUEST['tab']))

    51.     $_REQUEST['controller'] = strtolower($_REQUEST['tab']);

    52.

    53. // Prepare and trigger admin dispatcher

    54. Dispatcher::getInstance()->dispatch();

Link to comment
Share on other sites

J'avance.. Seul, mais j'avance.

Le problème est le meme avec paypal/virement bancaire.

J'ai isolé le problème en repartant d'une base 100% vierge, le problème vient uniquement de la table ps_orders . 

Les commandes marche parfaitement avant d'insérer mes commandes, et des que j'insère mes 72 anciennes commande grâce à la table ps_orders, les 72 commandes s'affichent proprement dans le back-office mais impossible de changer le statut de ces commandes (aucun message d'erreur, mais la commande ne change pas de statut), et impossible de passer une autre commande..

Merci pour votre aide 

Link to comment
Share on other sites

Salut RaW,

 

Je ne peux pas t'aider pour la résolution de ton problème mais pour avancer qd même !
Tu peux valider un panier et le passer en commande !

Cliques sur le panier client et tu as un bouton sur la droite dans "information commande" pour le passer en commande avec les coordonnées du client.

Espérant t'avoir un aider ;)

Link to comment
Share on other sites

Bonjour Zoltan,

 

Si ma mémoire est bonne la validation d'un panier n'était pas bonne.
L'erreur venait du fait que j'avais récupérer mes anciennes commandes de mon resta 1.6.0.9, en piquant la base de donnée.. Et la table ps_orders a changé entre le 1.6.0.9 et la 1.6.0.11 .... Une ou deux colonnes sont différentes, ce qui me plantait tout....
Au final, j'ai fait ce que j'aurais du faire depuis le départ.. A savoir mettre à jour ma 1.6.0.9 en 1.6.0.11 pour ensuite seulement copié/coller les base de données...
Et depuis aucun problème.

Link to comment
Share on other sites

  • 1 month later...

Bonjour a toutes et tous

 

J'ai le même problème.

 

Validation du module ATOS sans probleme, client débité, mais pas de commande générée.

 

La création de la commande à partir du panier fonctionne ainsi que les commandes en paiement par chèque.

 

Aucune erreur au moment du règlement ATOS ni sur la configuration ATOS

 

Module ATOS entièrement en 777.

 

J'ai contacté 3 fois le support prestashop par mail pour une intervention payante mais aucune réponse.

 

A ce demander si ils reçoivent mes messages ou si ils s'en foutent !

 

Version 1.5.4.1 et pas de problème apparent de fichier orders.

 

Je suis preneur de toutes pistes.

 

Merci pour le temps que vous allez consacrer à mon probleme

 

++

 

 

 

 

 

 

Link to comment
Share on other sites

  • 6 months later...

Je suis tres en retard, ton probleme a été résolue depuis je l'espere :)

Mais le CHMOD 777 est trop permissif et Atos/Prestashop ne le tolere pas, ce qui bloque le retour de l'info de paiement. 

Il faut que tu passe les fichiers dans un autre CHMOD plus restrictif. Je ne me souviens plus duquel mais en cherchant sur google tu trouveras aisément, c'est un probleme tres courtant.

Link to comment
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...