Jump to content

Modifications de commande en BO ne fonctionnent plus (PS 1.7)


Recommended Posts

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 ! 

Share this post


Link to post
Share on other sites

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

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
 Share

×
×
  • Create New...

Important Information

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