Récemment
-
[REGLÉ] override - je n'y arrive pas.
Modules3 -
les routes sur mesures
Discussion générale6 -
Nouvelle attaque ?
Discussion générale11 -
Problème calcul HT
Bugs & Améliorations42 -
Erreur sur facture générée depuis le FO
PhenixSuite3 -
Factures ne se génèrent plus depuis 06/12 [RÉSOLU]
Bugs & Améliorations20 -
Problèmes de prix avec plusieurs devises et PayPal
PhenixSuite3 -
Edition en masse des déclinaisons
Nouvelles fonctionnalités4 -
Mise à niveau de Prestashop 1.6.24 vers PhenixSuite 1.6.30
Discussion générale2 -
PaypalAPI erreur
PhenixSuite50 -
Thème possible
Questions relatives à l'installation/upgrade2 -
erreurs cleaner
Discussion générale3 -
multiples déclinaisons sur produit [RÉSOLU]
Bugs & Améliorations22 -
Thème enfant
PhenixSuite3 -
ONePageCheckout
BUG connus4 -
Informations générales
PhenixSuite2 -
timepicker absent dans le BO
Bugs & Améliorations11 -
Installation Phenixsuite depuis 1.6.1.24
Questions relatives à l'installation/upgrade4 -
Passage au Webp qui n'a pas fonctionné
Bugs & Améliorations11 -
erreur 500 module paypal
Bugs & Améliorations8
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