Nicolas R Posted February 10, 2021 Share Posted February 10, 2021 Type d’install (nouvelle/MàJ) : la même depuis 6 mois, MàJ de modules uniquements Version de PS : 1.7.6.7 URL du site concerné : plomberieenligne.fr Thème (défaut/perso) : classic Code (original/modifié) : légères modifications lors de l'installation, copiées depuis une autre boutique en ligne qui ne rencontre pas le problème actuel Hébergement : OVH Version de PHP : 7.2.34 Version de MySQL : 10.1.47-MariaDB-0ubuntu0.18.04.1 Navigateur(s) concerné(s) : Chrome, Firefox, je n'en ai pas essayé d'autres Bonjour, Je rencontre un problème lorsque je souhaite modifier les commandes des clients en back office. Lorsqu'ils se trompent de référence et nous préviennent, nous avons pour habitude de modifier la commande pour eux. Cela arrive assez fréquemment sur nos articles de plomberie. Depuis deux jours, nous rencontrons le problème suivant : - Lors de l'ajout d'un article sur une commande, une fenêtre s'affiche avec le message : Impossible to add the product to the cart. textStatus: 'error' errorThrown: 'Internal Server Error' responseText: Fatal error: "no default carrier" Impossible donc d'ajouter l'article, on doit cliquer sur "annuler", sauf qu'au bout de 2-3 minutes, l'article apparaît bien dans la liste des produits commandés... Par contre, le prix total à payer par le client ne s'actualise pas, il est donc trop faible, l'ajout de produit est "gratuit" pour le client. - Maintenant, on essaie de retirer un article de la commande. Une fenêtre s'ouvre et nous demande si on est sûr de vouloir supprimer le produit. Lorsqu'on clique sur oui, rien ne se passe. Par contre, parfois (20% des cas), au bout de 2-3 minutes le produit est bien retiré. Dans la majorité des cas, le produit reste donc sur la commande. Lorsque le produit est retiré, le montant est bien déduit de la commande. A force de tests d'ajouts/retraits de produits, on peut donc arriver à une commande comportant 20 produits, pour une valeur de 50€, mais avec un montant à payer affiché de 1€ TTC. Actions récentes sur la boutique : - MàJ des modules Prestashop qui étaient proposées (que j'ai aussi fait sur l'autre boutique, qui ne rencontre pas ce problème) - MàJ d'un autre module Actions de correction : je précise que je ne suis pas développeur, j'ai de petites notions mais ce problème dépasse largement mes compétences. - Désactivation des modules non développés par Prestashop : aucun changement - Désactivation spécifique du module non Prestashop que j'avais MàJ récemment : aucun changement - Désactivation des surcharges : idem - Mode debug : voici ce qui s'affiche lorsque je clique sur une commande depuis l'onglet Commandes : Warning: Declaration of Cart::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL) should be compatible with CartCore::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL, $id_zone = NULL) Onglet exception Symfony\Component\Debug\Exception\ContextErrorException in override/classes/Cart.php (line 0) <?php class Cart extends CartCore { /** ErrorHandler->handleError(2, 'Declaration of Cart::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL) should be compatible with CartCore::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL, $id_zone = NULL)', '/var/www/vhosts/xxx/www.plomberieenligne.fr/override/classes/Cart.php', 0, array('className' => 'Cart', 'classDir' => '/var/www/vhosts/xxx/www.plomberieenligne.fr/'))in classes/PrestaShopAutoload.php (line 152) if (isset($this->index[$className . 'Core'])) { require_once $this->root_dir . $this->index[$className . 'Core']['path']; } if (isset($this->index[$className])) { require_once $classDir . $this->index[$className]['path']; } } } elseif (isset($this->index[$className]['path']) && $this->index[$className]['path']) { // Call directly ProductCore, ShopCore class require_once $this->root_dir . $this->index[$className]['path']; require_once()in classes/PrestaShopAutoload.php (line 152) if (isset($this->index[$className . 'Core'])) { require_once $this->root_dir . $this->index[$className . 'Core']['path']; } if (isset($this->index[$className])) { require_once $classDir . $this->index[$className]['path']; } } } elseif (isset($this->index[$className]['path']) && $this->index[$className]['path']) { // Call directly ProductCore, ShopCore class require_once $this->root_dir . $this->index[$className]['path']; PrestaShopAutoload->load('Cart')in vendor/symfony/symfony/src/Symfony/Component/Debug/DebugClassLoader.php (line 159) return; } else { require $file; } } else { \call_user_func($this->classLoader, $class); $file = false; } } finally { error_reporting($e); } DebugClassLoader->loadClass('Cart') spl_autoload_call('Cart')in controllers/admin/AdminOrdersController.php (line 179) $this->shopShareDatas = Shop::SHARE_ORDER; if (Tools::isSubmit('id_order')) { // Save context (in order to apply cart rule) $order = new Order((int) Tools::getValue('id_order')); $this->context->cart = new Cart($order->id_cart); $this->context->customer = new Customer($order->id_customer); } $this->bulk_actions = array( 'updateOrderStatus' => array('text' => $this->trans('Change Order Status', array(), 'Admin.Orderscustomers.Feature'), 'icon' => 'icon-refresh'), AdminOrdersControllerCore->__construct(false, false)in classes/controller/Controller.php (line 219) * * @return Controller */ public static function getController($class_name, $auth = false, $ssl = false) { return new $class_name($auth, $ssl); } public function __construct() { if (null === $this->display_header) { ControllerCore::getController('AdminOrdersController')in classes/Dispatcher.php (line 507) } // Instantiate controller try { // Loading controller $controller = Controller::getController($controller_class); // Execute hook dispatcher if (isset($params_hook_action_dispatcher)) { Hook::exec('actionDispatcher', $params_hook_action_dispatcher); } DispatcherCore->dispatch()in peladmin/index.php (line 97) if (!headers_sent()) { header('Content-Type: text/html; charset=utf-8'); } // Prepare and trigger LEGACY admin dispatcher Dispatcher::getInstance()->dispatch(); } Onglet logs : LevelChannelMessage DEBUG10:52:43doctrineSELECT name FROM ps_module WHERE active = 1 CRITICAL10:52:43phpUncaught Warning: Declaration of Cart::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL) should be compatible with CartCore::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL, $id_zone = NULL) INFO10:52:43phpUser Deprecated: Implementing "Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface" without the "reset()" method is deprecated since Symfony 3.4 and will be unsupported in 4.0 for class "Csa\Bundle\GuzzleBundle\DataCollector\GuzzleCollector". CRITICAL10:52:43requestUncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: Declaration of Cart::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL) should be compatible with CartCore::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL, $id_zone = NULL)" at /var/www/vhosts/solaire-diffusion.eu/www.plomberieenligne.fr/override/classes/Cart.php line 0 onglet Stack trace : ContextErrorException Symfony\Component\Debug\Exception\ContextErrorException: Warning: Declaration of Cart::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL) should be compatible with CartCore::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL, $id_zone = NULL) at override/classes/Cart.php:0 at Symfony\Component\Debug\ErrorHandler->handleError(2, 'Declaration of Cart::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL) should be compatible with CartCore::getPackageShippingCost($id_carrier = NULL, $use_tax = true, ?Country $default_country = NULL, $product_list = NULL, $id_zone = NULL)', '/var/www/vhosts/solaire-diffusion.eu/www.plomberieenligne.fr/override/classes/Cart.php', 0, array('className' => 'Cart', 'classDir' => '/var/www/vhosts/solaire-diffusion.eu/www.plomberieenligne.fr/')) (classes/PrestaShopAutoload.php:152) at require_once() (classes/PrestaShopAutoload.php:152) at PrestaShopAutoload->load('Cart') (vendor/symfony/symfony/src/Symfony/Component/Debug/DebugClassLoader.php:159) at Symfony\Component\Debug\DebugClassLoader->loadClass('Cart') at spl_autoload_call('Cart') (controllers/admin/AdminOrdersController.php:179) at AdminOrdersControllerCore->__construct(false, false) (classes/controller/Controller.php:219) at ControllerCore::getController('AdminOrdersController') (classes/Dispatcher.php:507) at DispatcherCore->dispatch() (peladmin/index.php:97) Je n'ai aucune idée de ce qu'il faut faire pour résoudre ce problème, un grand merci d'avance pour votre aide ! Link to comment Share on other sites More sharing options...
Nicolas R Posted February 16, 2021 Author Share Posted February 16, 2021 Bonjour, Le problème décrit va plus loin : Impossible d'accéder au compte du client. Lorsqu'on essaie d'y accéder, une page blanche s'affiche avec la mention "Fatal error: "no default carrier"". D'après le mode debug le fichier incriminé est là aussi Cart.php Personne n'a rencontré ce problème ou aurait une idée ? Merci, Nicolas Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now