Jump to content

Modulo alertas email


Eutanasio

Recommended Posts

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

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

  • Like 1
Link to comment
Share on other sites

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

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

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

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

Tendrás que añadir la misma lógica en los hooks  hookActionUpdateQuantity 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

3 hours ago, ventura said:

Tendrás que añadir la misma lógica en los hooks  hookActionUpdateQuantity 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!

  • Like 1
Link to comment
Share on other sites

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

  • 2 weeks later...

@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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...