Bonjour à tous,
J'ai construit un petit module BO qui doit permettre d'updater quelques tables quand l'admin modifie ou ajoute un produit. En l'occurrence quand un produit passe en dématérialisé, il faut mettre les champs minimal_quantity à 0 et available_for_order à 1 (parce que PS ne le fait pas automatiquement et l'admin oublie dans 99% des cas, donc le produit est déclaré "rupture de stock" ce qui fait tâche pour un téléchargeable
Pour ce module tout bête, j'ai utilisé le hook actionProductSave
et dans la fonction, mes 3 requêtes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public function install() { if (!parent::install() // Install Sql du module || !$this->registerHook('header') || !$this->registerHook('actionProductSave') ) { return false; } return true; }
Résultat ? A la modif du produit, les 2 dernières s'exécutent nickel, mais pas la 3ème sur la table stock_available.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $id_product = $params['id_product']; $is_virtual = $params['product']->is_virtual; if($is_virtual == 1){ Db::getInstance()->execute("UPDATE "._DB_PREFIX_."product SET minimal_quantity ='0', available_for_order = '1' WHERE id_product = '".$id_product."'"); Db::getInstance()->execute("UPDATE "._DB_PREFIX_."product_shop SET available_for_order = '1', minimal_quantity = '0' WHERE id_product = '".$id_product."'"); Db::getInstance()->execute("UPDATE "._DB_PREFIX_."stock_available SET quantity = '0', out_of_stock = '1' WHERE id_product = '".$id_product."'"); }
Et la requête est bonne, pas d'erreur: je me la suis envoyé par mail via le hook et l'ai testée dans myAdmin: no blem.
J'ai tenté les hooks actionProductUpdate et actionProductOutOfStock mais c'est pareil.
Pourquoi ce hook refuse-t-il cette requête ?
![]()
Partager