bliscar Posted March 6, 2021 Share Posted March 6, 2021 Bonjour. Je suis sous Prestashop 1.6.1.24. Depuis ma migration du stock en "gestion avancée des stocks", j'ai un problème avec le module "Mail Alert" concernant les déclinaisons : Pour un produit donné avec au moins une déclinaison en rupture de stock, celui-ci m'envoie systématiquement un email de rupture de stock sur la déclinaison dès qu'il y a un changement d'état sur une commande avec ce produit, ou bien une modification de la description de la fiche produit, par exemple. Comment peut-on régler ça pour que l'email d'alerte soit envoyé uniquement lors du passage du stock à 0 pour la déclinaison donnée ? Link to comment Share on other sites More sharing options...
Eolia Posted March 6, 2021 Share Posted March 6, 2021 Décrochez le module de ActionProductCoverage Ce hook ne se déclenche que lorsqu'on est en stock avancés mais déconne pas mal^^ public function hookActionProductCoverage($params) { // if not advanced stock management, nothing to do if (!Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT')) return; // retrieves informations $id_product = (int)$params['id_product']; $id_product_attribute = (int)$params['id_product_attribute']; $warehouse = $params['warehouse']; $product = new Product($id_product); if (!Validate::isLoadedObject($product)) return; if (!$product->advanced_stock_management) return; // sets warehouse id to get the coverage if (!Validate::isLoadedObject($warehouse)) $id_warehouse = 0; else $id_warehouse = (int)$warehouse->id; // coverage of the product $warning_coverage = (int)Configuration::getGlobalValue('MA_PRODUCT_COVERAGE'); $coverage = StockManagerFactory::getManager()->getProductCoverage($id_product, $id_product_attribute, $warning_coverage, $id_warehouse); // if we need to send a notification if ($product->active == 1 && ($coverage < $warning_coverage) && !empty($this->merchant_mails) && Configuration::getGlobalValue('MA_MERCHANT_COVERAGE')) { $context = Context::getContext(); $id_lang = (int)$context->language->id; $id_shop = (int)$context->shop->id; $iso = Language::getIsoById($id_lang); $product_name = Product::getProductName($id_product, $id_product_attribute, $id_lang); $template_vars = array( '{current_coverage}' => $coverage, '{warning_coverage}' => $warning_coverage, '{product}' => pSQL($product_name) ); if (file_exists(dirname(__FILE__).'/mails/'.$iso.'/productcoverage.txt') && file_exists(dirname(__FILE__).'/mails/'.$iso.'/productcoverage.html')) { // Send 1 email by merchant mail, because Mail::Send doesn't work with an array of recipients $merchant_mails = explode(self::__MA_MAIL_DELIMITOR__, $this->merchant_mails); foreach ($merchant_mails as $merchant_mail) { Mail::Send( $id_lang, 'productcoverage', Mail::l('Stock coverage', $id_lang), $template_vars, $merchant_mail, null, (string)Configuration::get('PS_SHOP_EMAIL'), (string)Configuration::get('PS_SHOP_NAME'), null, null, dirname(__FILE__).'/mails/', null, $id_shop ); } } } } Link to comment Share on other sites More sharing options...
bliscar Posted March 9, 2021 Author Share Posted March 9, 2021 Merci pour votre réponse. Je viens de dégreffer le module de ActionProductCoverage. Malheureusement, le comportement est toujours le même. Je reçois plusieurs emails de "rupture de stock" pour toutes les déclinaisons à stock 0 pour un même produit. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now