Récemment
-
TinyMCE
Bugs & Améliorations2 -
Déclinaisons virtuelles avec fichiers
PhenixSuite10 -
[RESOLU]Lien téléchargement dans le mail
Discussion générale6 -
[RESOLU]RGPD
Modules5 -
Compatibilité des modules
Discussion générale2 -
[RESOLU]Bug page Préférences Produits
Bugs & Améliorations4 -
htaccess chatouilleux ?
Bugs & Améliorations14 -
Installation depuis boutique 1.6.1.17
Questions relatives à l'installation/upgrade19 -
[RESOLU]Module réassurance, permettre le html
Modules4 -
Theme non fonctionnel - après MAJ de la Phenixsuite 1.6.2.32
Questions relatives à l'installation/upgrade10 -
Des modules et des hacks - liste non exhaustive des modules présentant un risque
Discussion générale17 -
Thème enfant
PhenixSuite16 -
SumUp Payments Constant Update Request
Modules2 -
PaypalAPI erreur
PhenixSuite53 -
Problèmes de prix avec plusieurs devises et PayPal
PhenixSuite6 -
Solutions de paiement...
Discussion générale5 -
Petit code pour les descriptions de produits
Discussion générale3 -
Feuilles de styles non chargées si smart cache activé [RÉSOLU]
PhenixSuite5 -
PayPal Module Error
Bugs & Améliorations2 -
Transient Bug after 1.6.2.31 Upgrade
Bugs & Améliorations2
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