Eutanasio Posted May 28, 2020 Share Posted May 28, 2020 Buenas, He visto q este módulo solo se activa si el producto está fuera de stock y no es posible de pedir. El caso es que en mi catálogo aceptamos pedidos de productos bajo demanda, por lo que a pesar de no estar un producto en stock, como sí se puede pasar pedido por él, el módulo de alertas email no aparece, cosa que me gustaría que hiciera también en estos casos. Alguien sabe cómo se podría hacer? Gracias Link to comment Share on other sites More sharing options...
ventura Posted May 29, 2020 Share Posted May 29, 2020 En principio si editas el hook, function hookDisplayProductAdditional en /modules/ps_emailalerts/ps_emailalerts.php Y eliminas estas parte if (0 < $params['product']['quantity'] || !$this->customer_qty || !Configuration::get('PS_STOCK_MANAGEMENT') || Product::isAvailableWhenOutOfStock($params['product']['out_of_stock'])) return; Debería de aparecer en todos los productos 1 Link to comment Share on other sites More sharing options...
Eutanasio Posted May 29, 2020 Author Share Posted May 29, 2020 4 hours ago, ventura said: En principio si editas el hook, function hookDisplayProductAdditional en /modules/ps_emailalerts/ps_emailalerts.php Y eliminas estas parte if (0 < $params['product']['quantity'] || !$this->customer_qty || !Configuration::get('PS_STOCK_MANAGEMENT') || Product::isAvailableWhenOutOfStock($params['product']['out_of_stock'])) return; Debería de aparecer en todos los productos Gracias @ventura! sería una solución sí, pero me sobrecargaría más aún de lo que tengo las páginas de productos haciéndolas más engorrosas aún. Por eso preferiría que apareciera solo cuando el stock_available de un producto sea <=0 Me han propuesto de simplemente cambiar este otro fragmento de código, no sé si serviría: public function hookActionProductOutOfStock($params) { if (!$this->customer_qty || !Configuration::get('PS_STOCK_MANAGEMENT') || Product::isAvailableWhenOutOfStock($params['product']->out_of_stock)) return; Por este otro public function hookActionProductOutOfStock($params) { if (!$this->customer_qty || !Configuration::get('PS_STOCK_MANAGEMENT')) return; Gracias Link to comment Share on other sites More sharing options...
Eutanasio Posted June 3, 2020 Author Share Posted June 3, 2020 @ventura qué opinas de esto último? Link to comment Share on other sites More sharing options...
ventura Posted June 3, 2020 Share Posted June 3, 2020 Ya depende de lo que quieras hacer, y de la configuración y contexto global que tengas puedes ir probando. Con esa configuración solo se ocultaría el módulo en los casos en que se desactive de las opciones del módulo o de que no este activado el gestor avanzado de stock. Puedes utilizar tambien para ocultar por cantidad, para cuando sea 0 mayor que 0, $stockAvailable = StockAvailable::getStockAvailableIdByProductId((int) $params['product']['id'], (int) $params['product']['id_product_attribute'], $this->context->shop->id); En caso de tener productos con combinaciones se aplicaría a la combinación por defecto o haría falta añadir js para ocultarlo según combinación elegida Link to comment Share on other sites More sharing options...
Eutanasio Posted June 3, 2020 Author Share Posted June 3, 2020 15 minutes ago, ventura said: Ya depende de lo que quieras hacer, y de la configuración y contexto global que tengas puedes ir probando. Con esa configuración solo se ocultaría el módulo en los casos en que se desactive de las opciones del módulo o de que no este activado el gestor avanzado de stock. Puedes utilizar tambien para ocultar por cantidad, para cuando sea 0 mayor que 0, $stockAvailable = StockAvailable::getStockAvailableIdByProductId((int) $params['product']['id'], (int) $params['product']['id_product_attribute'], $this->context->shop->id); En caso de tener productos con combinaciones se aplicaría a la combinación por defecto o haría falta añadir js para ocultarlo según combinación elegida Exacto, a mi lo que me gustaría simplemente es que se vea siempre que el Stock_Available sea <= 0 Qué debería hacer en este caso? Gracias! Link to comment Share on other sites More sharing options...
ventura Posted June 3, 2020 Share Posted June 3, 2020 Entonces prueba con if (!$this->customer_qty || !Configuration::get('PS_STOCK_MANAGEMENT') || $stockAvailable > 0) return; Añadiendo antes la instancia StockAvailable comentada Link to comment Share on other sites More sharing options...
Eutanasio Posted June 3, 2020 Author Share Posted June 3, 2020 5 hours ago, ventura said: Entonces prueba con if (!$this->customer_qty || !Configuration::get('PS_STOCK_MANAGEMENT') || $stockAvailable > 0) return; Añadiendo antes la instancia StockAvailable comentada Muchísimas gracias @ventura, el código funciona en tanto que hace que se muestre el módulo siempre que un producto tenga cantidad <=0. La cosa es que no funciona el sistema de notificación por email cuando ese producto vuelve a estar en stock. He probado con un producto sin stock a poner mi email, luego he metido cantidad en stock y nada, no llega el aviso. Tengo PS1.7 con el módulo en cuestión actualizado a la última versión. Gracias! Link to comment Share on other sites More sharing options...
ventura Posted June 4, 2020 Share Posted June 4, 2020 Tendrás que añadir la misma lógica en los hooks hookActionUpdateQuantity y hookActionProductAttributeUpdate en la parte if ($this->customer_qty && $result['quantity'] > 0) { MailAlert::sendCustomerAlert((int) $result['id_product'], (int) $params['id_product_attribute']); } Para que se envíe el mail cuando se modifique el stock de producto o atributo Link to comment Share on other sites More sharing options...
Eutanasio Posted June 4, 2020 Author Share Posted June 4, 2020 3 hours ago, ventura said: Tendrás que añadir la misma lógica en los hooks hookActionUpdateQuantity y hookActionProductAttributeUpdate en la parte if ($this->customer_qty && $result['quantity'] > 0) { MailAlert::sendCustomerAlert((int) $result['id_product'], (int) $params['id_product_attribute']); } Para que se envíe el mail cuando se modifique el stock de producto o atributo Mil gracias @ventura, pero sigue sin funcionar (he borrado caché y todo), también he probado a cambiar un producto a la configuración básica en la cual se supone que funcionaría este módulo, haciendo que el producto no se pueda pedir si no hay stock, y tampoco manda ningún email. He investigado un poco antes de volver a escribirte, he comprobado cosas como ver que las carpetas de traducción del módulo estén, así como las debidas traducciones del email que se debe de mandar, todo parece en orden. El módulo aparece y desaparece cuando debe, pero no manda en ningún caso un email. Gracias por la ayuda! 1 Link to comment Share on other sites More sharing options...
ventura Posted June 4, 2020 Share Posted June 4, 2020 Revisa a ver si se estan guardando bien los registros en la tabla mailalert_customer_oos Link to comment Share on other sites More sharing options...
Eutanasio Posted June 4, 2020 Author Share Posted June 4, 2020 5 minutes ago, ventura said: Revisa a ver si se estan guardando bien los registros en la tabla mailalert_customer_oos @ventura Así lo hace! imagen adjunta Link to comment Share on other sites More sharing options...
ventura Posted June 4, 2020 Share Posted June 4, 2020 Mira a ver errores en /var/logs/prod.log Link to comment Share on other sites More sharing options...
Eutanasio Posted June 4, 2020 Author Share Posted June 4, 2020 1 hour ago, ventura said: Mira a ver errores en /var/logs/prod.log Nada, no consta ningún error en el log en las últimas 24h @ventura. Diría q el módulo no funciona, pero se encarga de muchas otras alertas email que sí están funcionando, así que no creo Link to comment Share on other sites More sharing options...
Eutanasio Posted June 8, 2020 Author Share Posted June 8, 2020 @ventura parece que el problema está en el módulo: https://github.com/PrestaShop/PrestaShop/issues/19611#issuecomment-640488090 Link to comment Share on other sites More sharing options...
Eutanasio Posted June 21, 2020 Author Share Posted June 21, 2020 @ventura han actualizado el módulo y ha cambiado un poco el código al parecer. Ahora cuando aplico tus códigos, el bloque se muestra siempre en los productos independientemente de si están o no en stock. A parte de eso, según he podido comprobar, parece que las notificaciones por email basadas en los niveles de stock siguen sin funcionar 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