Récemment
-
Echec de l'installation de Creative Elements
Bugs & Améliorations3 -
[Résolu] Modification données client dans l'admin
PhenixSuite10 -
googletagmanager
PhenixSuite2 -
2 téléphones obligatoires
PhenixSuite11 -
Liens qui disparaissent
PhenixSuite5 -
Smart cache JS et Iphone
PhenixSuite1 -
Hack ancien PS 1.6 avant mise à jour Phenix
PhenixSuite3 -
[RESOLU]Souci Revolut et Hipay
Modules11 -
[RESOLU]Image produit dans compte client > commande
PhenixSuite10 -
[RESOLU]Bug sur le module Bloc réassurance v13 - par PrestaShop modified by Eolia
Bugs & Améliorations2 -
Un immense merci à Eolia et Doekia pour leur travail remarquable avec PhenixSuite
Discussion générale2 -
Warning: count(): Parameter must be an array or an object that implements Countable
Bugs & Améliorations3 -
Problème configuration php valeurs max-imput-vars
Bugs & Améliorations5 -
Nouvelle installation : erreur sur les ajouts d'images
Questions relatives à l'installation/upgrade11 -
Problème de lien vers tpl module custom
PhenixSuite3 -
Modification sur le thème "Craft"
Questions relatives à l'installation/upgrade3 -
Installation avec Wamp
Questions relatives à l'installation/upgrade1 -
date_upd produits
Bugs & Améliorations13 -
Champ description longue pour les catégories
Modules5 -
Erreurs suite à la mise à jour
Questions relatives à l'installation/upgrade10
StockAvailable et setQuantity();
-
Salut,
Je deviens fou je ne comprends ce qu'il se passe et ça m'énerve.
Prestashop 1.6.1.18 tout neuf
Je m'explique je n'utilisais pas le module mailalerts pour les articles hors stock, j'ai décidé de l'installer. Il fonctionne très bien sauf que les clients ne reçoivent pas de mail quand je mets à jours les stocks.
Dans mon débug je bloque ici :
https://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/classes/stock/StockAvailable.php#L507
Si je mets juste arpès cette ligne un d($id_product_attribute);
Il est set à 0 donc plus bas le
Hook::exec('actionUpdateQuantity', array( 'id_product' => $id_product, 'id_product_attribute' => $id_product_attribute, 'quantity' => $stock_available->quantity ) );
Ne fait pas travailler le module mailalerts car il a un ipa à 0 ...
Si je mets le d($id_product_attribute); juste avant pas de soucis.
J'ai donc remonté jusqu'à $this->upate(); et même dans ObjectModel je ne trouve pas d'ou ça vient.
-
Un ipa à 0 n'est pas un problème (produit sans décli)
Sauf utilisation d'une fonction avec paramètre par référence (pas le cas ici), si ipa est à 0 c'est qu'il a été passe comme tel à la fonction.
=> public static function getStockAvailableIdByProductId($id_product, $id_product_attribute = null, $id_shop = null)Le problème ne peut venir que de l'appelant:
classes/Product.php:1356: StockAvailable::setQuantity($this->id, $id_product_attribute, $quantity); controllers/admin/AdminImportController.php:1946: StockAvailable::setQuantity((int)$product->id, 0, (int)$product->quantity, (int)$shop); controllers/admin/AdminImportController.php:1949: StockAvailable::setQuantity((int)$product->id, 0, (int)$product->quantity, (int)$this->context->shop->id); controllers/admin/AdminImportController.php:1958: StockAvailable::setQuantity((int)$product->id, 0, (int)$product->quantity, (int)$shop); controllers/admin/AdminImportController.php:1961: StockAvailable::setQuantity((int)$product->id, 0, (int)$product->quantity, (int)$this->context->shop->id); controllers/admin/AdminImportController.php:2414: StockAvailable::setQuantity((int)$product->id, $id_product_attribute, (int)$info['quantity'], (int)$shop); controllers/admin/AdminImportController.php:2417: StockAvailable::setQuantity((int)$product->id, $id_product_attribute, (int)$info['quantity'], $this->context->shop->id); controllers/admin/AdminImportController.php:2426: StockAvailable::setQuantity((int)$product->id, $id_product_attribute, (int)$info['quantity'], (int)$shop); controllers/admin/AdminImportController.php:2429: StockAvailable::setQuantity((int)$product->id, $id_product_attribute, (int)$info['quantity'], $this->context->shop->id); controllers/admin/AdminProductsController.php:4901: StockAvailable::setQuantity($product->id, (int)Tools::getValue('id_product_attribute'), (int)Tools::getValue('value')); controllers/admin/AdminAttributeGeneratorController.php:153: StockAvailable::setQuantity($this->product->id, (int)$attribute['id_product_attribute'], $quantity, (int)$current_shop['id_shop']); controllers/admin/AdminAttributeGeneratorController.php:158: StockAvailable::setQuantity($this->product->id, (int)$attribute['id_product_attribute'], $quantity);
-
StockAvailable::setQuantity($this->id, $id_product_attribute, $quantity);
Est bien appelé avec un $id_product_attribute.
Le problème c'est qu'il est relancé plus loin dedans avec un $id_product_attribute à 0