Jump to content

[Modulo] Administración de las alertas de correo de los clientes


dwilden
 Share

Recommended Posts

Hola de nuevo,

 

Publico aquí mi nueva aportación, se trata de un modulo de administración que os permite visualizar las alertas de los usuarios que se han dado de alta en los productos agotados.

 

Os permite visualizar el mail del cliente, producto y la combinación, ademas de ordenar la lista y borrar las notificaciones.

 

Una vez instalado, se accede mediante el menú de administración, Clientes -> Notificaciones de Clientes.

 

Compatible solo con la versión 1.5.x

 

Espero que os sirva de ayuda.

 

Otros modulos disponibles:

http://www.prestashop.com/forums/topic/284003-modulo-bloque-%C3%BAltimos-movimientos-de-stock-ps-15/

http://www.prestashop.com/forums/topic/214923-modulo-prestashop-cleanner-ps15/

mailalerts_oos.zip

Edited by dwilden (see edit history)
  • Like 3

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Ok, ya esta!

 

Hay que crear una nueva carpeta en "modules" y copiar el contenido alli.

 

Gracias por el aporte... :)

 

No se si se puede añadir la fecha en que el usuario se ha apuntado al producto.. se me acuerdo este finde lo miro y lo resubo (con el permiso de dwilde).

Share this post


Link to post
Share on other sites

  • 1 month later...

funciona perfectamente, 1.5.5, acordaros que después de subir el módulo a prestashop hay que buscarlo e instalarlo, ya luego ya se ve en el menú cliente-notificaciones de clientes.

 

Muchas gracias por la aportación

Share this post


Link to post
Share on other sites

Buenas tardes,

lo primero felicitarte y darte las gracias por este gran módulo.

He detectado un pequeño fallo dado porque el prefijo de las tablas de la base de datos en mi caso no es 'ps'.

 

El problema viene de la función renderList() del fichero controllers/admin/AdminMaillertsOos.php que no utiliza _DB_PREFIX_

 

El código original es este:

public function renderList()
{
	$this->_select = 'p.`id_product`, pl.`name`, p.`active`,
		CONCAT(GROUP_CONCAT(IFNULL(al.name, \'\'), \'\')) attribute,
		if(isnull(pa.reference),p.reference,pa.reference) AS referencia';
	$this->_join = '
		LEFT JOIN ps_product_attribute_combination AS pac ON a.id_product_attribute = pac.id_product_attribute
		LEFT JOIN ps_product_attribute AS pa ON pa.id_product_attribute = a.id_product_attribute
		LEFT JOIN ps_attribute AS att ON att.id_attribute = pac.id_attribute
		LEFT JOIN ps_attribute_group AS ag ON ag.id_attribute_group = att.id_attribute_group
		LEFT JOIN ps_attribute_lang AS al ON att.id_attribute = al.id_attribute AND al.id_lang = '.(int)Context::getContext()->language->id.'
		LEFT JOIN ps_attribute_group_lang AS agl ON ag.id_attribute_group = agl.id_attribute_group AND agl.id_lang = '.(int)Context::getContext()->language->id.'
		LEFT JOIN ps_product AS p ON p.id_product = a.id_product
		LEFT JOIN ps_product_lang AS pl ON p.id_product = pl.id_product AND pl.id_lang = '.(int)Context::getContext()->language->id;
	$this->_group = 'GROUP BY a.id_mailalert_customer_oos';
	$this->_orderBy = 'pl.name';
	$this->_orderWay = 'ASC';
		
	return parent::renderList();		
}

El código que funcionará en todos los entornos es este:

public function renderList()
{
	$this->_select = 'p.`id_product`, pl.`name`, p.`active`,
		CONCAT(GROUP_CONCAT(IFNULL(al.name, \'\'), \'\')) attribute,
		if(isnull(pa.reference),p.reference,pa.reference) AS referencia';
	$this->_join = '
		LEFT JOIN ' . _DB_PREFIX_ . 'product_attribute_combination AS pac ON a.id_product_attribute = pac.id_product_attribute
		LEFT JOIN ' . _DB_PREFIX_ . 'product_attribute AS pa ON pa.id_product_attribute = a.id_product_attribute
		LEFT JOIN ' . _DB_PREFIX_ . 'attribute AS att ON att.id_attribute = pac.id_attribute
		LEFT JOIN ' . _DB_PREFIX_ . 'attribute_group AS ag ON ag.id_attribute_group = att.id_attribute_group
		LEFT JOIN ' . _DB_PREFIX_ . 'attribute_lang AS al ON att.id_attribute = al.id_attribute AND al.id_lang = '.(int)Context::getContext()->language->id.'
		LEFT JOIN ' . _DB_PREFIX_ . 'attribute_group_lang AS agl ON ag.id_attribute_group = agl.id_attribute_group AND agl.id_lang = '.(int)Context::getContext()->language->id.'
		LEFT JOIN ' . _DB_PREFIX_ . 'product AS p ON p.id_product = a.id_product
		LEFT JOIN ' . _DB_PREFIX_ . 'product_lang AS pl ON p.id_product = pl.id_product AND pl.id_lang = '.(int)Context::getContext()->language->id;		
	$this->_group = 'GROUP BY a.id_mailalert_customer_oos';
	$this->_orderBy = 'pl.name';
	$this->_orderWay = 'ASC';
		
	return parent::renderList();		
}

Un saludo!

Share this post


Link to post
Share on other sites

Hola de nuevo,

 

Publico aquí mi nueva aportación, se trata de un modulo de administración que os permite visualizar las alertas de los usuarios que se han dado de alta en los productos agotados.

 

Os permite visualizar el mail del cliente, producto y la combinación, ademas de ordenar la lista y borrar las notificaciones.

 

Una vez instalado, se accede mediante el menú de administración, Clientes -> Notificaciones de Clientes.

 

Compatible solo con la versión 1.5.x

 

Espero que os sirva de ayuda.

 

Otros modulos disponibles:

http://www.prestashop.com/forums/topic/284003-modulo-bloque-%C3%BAltimos-movimientos-de-stock-ps-15/

http://www.prestashop.com/forums/topic/214923-modulo-prestashop-cleanner-ps15/

 

Gracias una vez mas por tus aportaciones Dwilden!

Share this post


Link to post
Share on other sites

  • 5 weeks later...

Actualizado, corregido el error en la consulta sql.

 

Gracias Lobiks :-)

 

ups creo que faltan las dos últimas lineas por corregir

public function renderList()
	{
		$this->_select = 'p.`id_product`, pl.`name`, p.`active`,
				CONCAT(GROUP_CONCAT(IFNULL(al.name, \'\'), \'\')) attribute,
				if(isnull(pa.reference),p.reference,pa.reference) AS referencia';
		$this->_join = '
				LEFT JOIN '._DB_PREFIX_.'product_attribute_combination AS pac ON a.id_product_attribute = pac.id_product_attribute
				LEFT JOIN '._DB_PREFIX_.'product_attribute AS pa ON pa.id_product_attribute = a.id_product_attribute
				LEFT JOIN '._DB_PREFIX_.'attribute AS att ON att.id_attribute = pac.id_attribute
				LEFT JOIN '._DB_PREFIX_.'attribute_group AS ag ON ag.id_attribute_group = att.id_attribute_group
				LEFT JOIN '._DB_PREFIX_.'attribute_lang AS al ON att.id_attribute = al.id_attribute AND al.id_lang = '.(int)Context::getContext()->language->id.'
				LEFT JOIN '._DB_PREFIX_.'attribute_group_lang AS agl ON ag.id_attribute_group = agl.id_attribute_group AND agl.id_lang = '.(int)Context::getContext()->language->id.'
				LEFT JOIN ps_product AS p ON p.id_product = a.id_product
				LEFT JOIN ps_product_lang AS pl ON p.id_product = pl.id_product AND pl.id_lang = '.(int)Context::getContext()->language->id;		
		$this->_group = 'GROUP BY a.id_mailalert_customer_oos';
		$this->_orderBy = 'pl.name';
		$this->_orderWay = 'ASC';
		
		return parent::renderList();		
	}	
Edited by moraira (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

dwilden un modulazo,

 

muchas gracias, justo yo acabo de postear una pequeña modificación en el modulo de PS para evitar que los clientes puedan registrar por error las direcciones [email protected], [email protected], [email protected] etc

 

gracias por el aporte

 

 

http://www.prestashop.com/forums/topic/311045-aporte-mejorar-mailalerts/

Share this post


Link to post
Share on other sites

Por si os viene bien me he tomado la libertad de estudiar el módulo y para agregar un campo fecha y así saber la "edad" de la información, basta crear un campo fecha llamado por ejemplo date_add con valor predeterminado "fecha hora actual"

 

ojo al prefijo de la tabla, que cada uno ponga el suyo

ALTER TABLE  `prstshp_mailalert_customer_oos` ADD  `date_add` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ; 

bueno ya esta creado el campo, ahora hacemos que aparezca, para ello vamos al fichero: www.mitienda/modules/mailalerts_oos/controllers/admin/AdminMailalertsOos.php y al final de la public function __construct() como en la linea 56 insertamos esto:

			'date_add' => array(
			'title' => $this->l('Date'),
			'width' => 130,
			'align' => 'right',
			'type' => 'datetime',
			'search' => false,
			'filter_key' => 'a!date_add'
		), 

es decir que la funcion que terminaba así:

			'referencia' => array(
				'title' => $this->l('Reference'),
				'align' => 'left',
				'width' => 150,
				'search' => false
			),	
			'active' => array(
				'title' => $this->l('Enabled'),
				'align' => 'center',
				'active' => 'status',
				'type' => 'bool',
				'search' => false,
				'width' => 25
			)
		);
		
		$this->clearFilters();
		
		parent::__construct();
	}
 

ahora debe terminar así

			'referencia' => array(
				'title' => $this->l('Reference'),
				'align' => 'left',
				'width' => 150,
				'search' => false
			),
			'date_add' => array(
			'title' => $this->l('Date'),
			'width' => 130,
			'align' => 'right',
			'type' => 'datetime',
			'search' => false,
			'filter_key' => 'a!date_add'
		),
			'active' => array(
				'title' => $this->l('Enabled'),
				'align' => 'center',
				'active' => 'status',
				'type' => 'bool',
				'search' => false,
				'width' => 25
			)
		);
		
		$this->clearFilters();
		
		parent::__construct();
	} 

y ya tenemos campo fecha-hora  :)

  • Like 1

Share this post


Link to post
Share on other sites

Gracias Moraira,

 

 

He actualizado el modulo corrigiendo el la linea de la consulta sql.

 

Hace un tiempo intente añadir la fecha, pero vi que tenia que tocar el core, tal como tu lo planteas y preferí dejarlo tal como esta, apto para todos los usuario :-)

 

De todas maneras, es una buena aportación para los mas entendidos, muchas gracias :-)

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Gracias dwilden. He instalado tu modulo y funciona perfectamente. La sorpresa es que, como bien indicas en tu post de respuesta en el hilo 

"APORTE Mejorar mailalerts", la mitad de los email de avisos eran erroneos solo aparecía "[email protected]". Así que he modificado la traducción como recomiendas.

Al no saber las fechas de los avisos, me falta información para saber si aún pueden ser relevantes, así que también he realizado las modificaciones que indicas moraima, gracias también a ti

 

Un aporte estupendo y muy útil.

  • Like 1

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Lo he probado en una tienda 1.6 de test  y me da este error:

 

El siguiente módulo(s) no se ha instalado correctamente:

  • mailalerts_oos :
        The version of your module is not compliant with your PrestaShop version.

 

Saludos

 

 

Edito:

 

Lo he corregido cambiando en la línea 21 de mailalerts_oos.php por esto:

		$this->ps_versions_compliancy = array('min' => '1.5', 'max' => '1.6');
Edited by francesc (see edit history)

Share this post


Link to post
Share on other sites

Hola,

 

Si es correcta la linea, cuando hice el modulo, la versión 1.6 aun estaba en fase alpha y no sabia si iba a ser compatible, por eso limite el modulo a la versión 1.5.

 

Aun no lo he probado en la versión 1.6, en cuanto lo haga y me asegure que es 100% compatible, subiré la versión.

 

Ahora he visto que en Add-ons hay un modulo que hace la misma funcion que el mio, cuesta 29,90€. Con mi modulo tenéis las mismas características gratuitamente, pero siempre se aceptan y agradece alguna donación :-)

Share this post


Link to post
Share on other sites

Yo acabo de instalarlo y en breve voy  ponerme con el tema de fechas que veo que puede ser interesante, a primera vista y para mi caso particular echo un poco de menos poder ver la foto del producto, ya que tengo muchos productos con casi el mismo nombre, aun asi el aporte del modulo esta de lujo!!! muchas gracias

Share this post


Link to post
Share on other sites

Ante todo ENHORABUENA por tan buen aporte. Lo he probado en Prestashop 1.5.6.2 y he detectado como "fallo" que aquellos productos que no disponen de "atributos" toman un valor que no les corresponde, en mi caso el del atributo color nº 31.

 

 

Share this post


Link to post
Share on other sites

  • 1 month later...
  • 1 month later...

Buenas tardes,

       He descargado este módulo que tiene una pinta genial pero no me da un error al instalarlo. Únicamente me dice: "El siguiente módulo no se ha instalado correctamente..."

Mi versión es la 1.5.5 y creo que lo he instalado correctamente... :S
a) Descargar archivo
B) Descomprimirlo y meterlo en la carpeta de modules
c) Ir a modules y darle al boton de instalar :S

¿Alguien me puede echar un cable?

Gracias !

Share this post


Link to post
Share on other sites

Buenas tardes,

 

       He descargado este módulo que tiene una pinta genial pero no me da un error al instalarlo. Únicamente me dice: "El siguiente módulo no se ha instalado correctamente..."

 

Mi versión es la 1.5.5 y creo que lo he instalado correctamente... :S

a) Descargar archivo

B) Descomprimirlo y meterlo en la carpeta de modules

c) Ir a modules y darle al boton de instalar :S

 

¿Alguien me puede echar un cable?

 

Gracias !

 

Por que lo descomprimes? Instalalo desde el gestor de módulos, así me lo instalo a mi y funciona perfectamente.

Share this post


Link to post
Share on other sites

Hola solnuevo,

 

         Gracias por contestar. También he intentado instalarlo desde el gestor de módulos: Añadir nuevo módulo/instalar.... Pero nada...

Cuando me aparece para instalar, le doy y me da error :(

¿Se te ocurre algo?

 

Share this post


Link to post
Share on other sites

Hola solnuevo,

 

         Gracias por contestar. También he intentado instalarlo desde el gestor de módulos: Añadir nuevo módulo/instalar.... Pero nada...

Cuando me aparece para instalar, le doy y me da error :(

¿Se te ocurre algo?

 

 

 

Lo único que se me ocurre es que modifiques los archivos desde el pc a través de FTP y un programa para poder abrir los .TPL.

Los modifiques a tú gusto y los resubas al servidor sobre escribiendo los existentes. OJO, haz copia de seguridad antes de modificar los archivos.

Mira este aporte: http://www.prestashop.com/forums/topic/205892-aporte-factura-a-la-espa%C3%B1ola-en-prestashop-15/?hl=facturas

Share this post


Link to post
Share on other sites

  • 1 month later...

Hola amigos, instalado y funcionado en presta 1.5.6.2 my enhorabuena y agradecimiento al creador 

 

Solo una cosa extraña si pongo la modificación de moraira el modulo peta

 

Se supone que lo copio bien, no lo entiendo

 

dwilden ¿Puedes subir tu el archivo corregido? Es que ver la fecha es muy interesante para ver el interes real del producto

Edited by TechnoSpain (see edit history)

Share this post


Link to post
Share on other sites

  • 3 months later...
  • 1 year later...
  • 3 weeks later...

Hola a todos! Estoy buscando precisamente este tipo de solución para implantar en mi tienda. 

Sabéis si es compatible con la versión 1.6.1?

Alguien lo ha podido comprobar??

Si, con la 1.6.1 funciona perfectamente.

 

Os animo a seguir con este proyecto, y por cierto, una funcionalidad muy útil sería que avisase por email cuando hubiera una nueva notificación de cliente.

 

Un saludo!

Share this post


Link to post
Share on other sites

  • 3 years later...

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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More