Jump to content

Commandes payées mais vides


Recommended Posts

Bonjour,

 

je suis confronté a un nouveau cas épineux sur PS 1.6.1.1 que je n'avais jamis rencontré sur les précédentes versions.

 

Je reçois des commandes qui ne contiennent aucun produit mais qui semblent correctes pour tous le reste : montant payé, frais de livraison, transporteur, mode de paiement (paypal ou systempay) etc.

Je retrouve bien les produits dans le panier du client et dans ce même panier j'ai bien le n° de la commande associée.

Dans la base, j'ai remarqué que la table ps_order_detail ne contient pas de ligne pour les commandes en question.

Je ne peux donc pas editer les factures non plus ni ajouter les produits à la commande sinon le montant reglé devient erronné.

J'ai besoin d'aide rapidement sur ce point et je peux fournir d'autres infos si nécessaire.

Merci.

 

Link to comment
Share on other sites

j'ai remonté exactement le même soucis sans que personne ne me vienne en aide.

 

grosso modo ca vient du fait que quand tu valide une commande, il n'y a pas de redirection et la page reste blanche (donc le processus ne met pas à jour les tables articles et surtout ne décompte pas les produits du stock)

 

Bref de mon coté rien n'est réglé et si quelqu'un a une info ... je prends aussi

Link to comment
Share on other sites

à titre perso, la page blanche me renvooi ceci avec la paramètre true

erreur par le back office en ajoutant manuellement :

 

Fatal error: Uncaught exception 'Core_Foundation_IoC_Exception' with message 'This doesn't seem to be a class name: `Core_Business_Stock_StockManager`.' in /home/militariua/www/shop/Core/Foundation/IoC/Core_Foundation_IoC_Container.php:95 Stack trace: #0 /home/militariua/www/shop/Core/Foundation/IoC/Core_Foundation_IoC_Container.php(157): Core_Foundation_IoC_Container->makeInstanceFromClassName('Core_Business_S...', Array) #1 /home/militariua/www/shop/Core/Foundation/IoC/Core_Foundation_IoC_Container.php(170): Core_Foundation_IoC_Container->doMake('Core_Business_S...', Array) #2 /home/militariua/www/shop/Adapter/Adapter_ServiceLocator.php(52): Core_Foundation_IoC_Container->make('Core_Business_S...') #3 /home/militariua/www/shop/classes/stock/StockAvailable.php(471): Adapter_ServiceLocator::get('Core_Business_S...') #4 /home/militariua/www/shop/classes/order/OrderDetail.php(473): StockAvailableCore::updateQuantity('76', '0', -1) #5 /home/militariua/www/shop/classes/order/OrderDetail.php(638): OrderDetailCore->checkProduct in /home/militariua/www/shop/Core/Foundation/IoC/Core_Foundation_IoC_Container.php on line 95

 

je pense que notre problème à LEO et moi est le même

Link to comment
Share on other sites

moi c'est suite à la mise à jour.

 

J'ose pas restaurer la dernière fois ca m'a tout planté ... j'ai mis un temps fou à refaire le site. du coup là je vivote avec mon site qui enregistre des commandes vide et je les recoupe grace au paniers client...

 

J'ai essayé de reinstaller ma sauvegarde de fichiers + BDD sur un dossier test mais quand je veux me connecter sur le BO y doit manquer des choses dans un htaccess ou autre ca ne me redirige plus sur le BO même si mon mot de passe est bon...

je vais essayer sur ce dossier test de réinstaller la 1.6.1.0 que j'avais avant et de restaurer ma base pour voir...

Link to comment
Share on other sites

je n'ai par contre pas détecté d'autres soucis. mais que ce soit en commande client ou en manuelle (BO) j'ai page blanche à la validation, je pense que la clef est là dans le bout de code que j'ai copier plus haut mais qu'avec mes minces connaissance de programmation web je ne comprends pas trop

Link to comment
Share on other sites

Je vois que je ne suis pas seul face à ce problème !

Oui, j'ai mis à jour PS de la 1.6.0.9 à la 1.6.1.1 jeudi la semaine dernière.

Le problème ne survient pas pour toutes les commandes et aucun point commun entre elles.

Je ne peux pas passer en debug car ce site est en prod et je ne peux pas faire de retour à la version précédente non plus.

Parmi les autres problèmes rencontrés depuis la mise à jour :

- lenteur du site et du BO

- plus possible de créer de factures (page blanche), sujet déjà evoqué dans un autre POST toujours sans réponse.

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

J'ai eu exactement le même cas et ait préparé un correctif: créez un fichier "StockAvailable.php" dans le dossier "/override/classes/stock/" avec comme contenu:

<?php
 
class StockAvailable extends StockAvailableCore
{
     public static function updateQuantity($id_product, $id_product_attribute, $delta_quantity, $id_shop = null)
    {
        /*if (!Validate::isUnsignedId($id_product)) {
            return false;
        }
        $product = new Product((int)$id_product);
        if (!Validate::isLoadedObject($product)) {
            return false;
        }

		StockAvailable::updateQuantity($id_product, $id_product_attribute, $delta_quantity, $id_shop = null);
        //$stockManager = Adapter_ServiceLocator::get('Core_Business_Stock_StockManager');
		//$stockManager->updateQuantity($product, $id_product_attribute, $delta_quantity, $id_shop = null);
        return true;*/
		/**
		 * Dans certains cas le Adapter_ServiceLocator ne trouve pas Core_Business_Stock_StockManager, on remet donc un code classique
		 */
		
		$product = new Product((int)$id_product);
        if (!Validate::isLoadedObject($product)) {
            return false;
        }
		$stockManager = Adapter_ServiceLocator::get('Adapter_StockManager');
        $stockAvailable = $stockManager->getStockAvailableByProduct($product, $id_product_attribute, $id_shop);
        $packItemsManager = Adapter_ServiceLocator::get('Adapter_PackItemsManager');
        $cacheManager = Adapter_ServiceLocator::get('Adapter_CacheManager');
        $hookManager = Adapter_ServiceLocator::get('Adapter_HookManager');

        // Update quantity of the pack products
        if ($packItemsManager->isPack($product)) {
            // The product is a pack
            $this->updatePackQuantity($product, $stockAvailable, $delta_quantity, $id_shop);
        } else {
            // The product is not a pack
            $stockAvailable->quantity = $stockAvailable->quantity + $delta_quantity;
            $stockAvailable->update();

            // Decrease case only: the stock of linked packs should be decreased too.
            if ($delta_quantity < 0) {
                // The product is not a pack, but the product combination is part of a pack (use of isPacked, not isPack)
                if ($packItemsManager->isPacked($product, $id_product_attribute)) {
                    $this->updatePacksQuantityContainingProduct($product, $id_product_attribute, $stockAvailable, $id_shop);
                }
            }
        }

        $cacheManager->clean('StockAvailable::getQuantityAvailableByProduct_'.(int)$product->id.'*');

        $hookManager->exec('actionUpdateQuantity',
            array(
                'id_product' => $product->id,
                'id_product_attribute' => $id_product_attribute,
                'quantity' => $stockAvailable->quantity
            )
        );
    }
}

Puis supprimez le fichier "/cache/class_index.php" (il se regénère tout seul).

Faites un test de paiement pour confirmation, mais normalement tout devrait fonctionner.

Bonne journée

Link to comment
Share on other sites

Rien n'a été approuvé par Prestashop, un client m'a remonté ce souci et après moultes investigation cela provenait du nouveau type de structuration des dossiers ("/Core/...") et le StockManager ne remontait pas dans le cas précis d'un paiement system pay. Ce correctif à résolu le souci chez ce client, si vos avez un retour je suis preneur!

Cordialement

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...