Jump to content

Problema mensaje cliente en el resumen de la compra


Welele

Recommended Posts

Para empezar decir que el error es bastante raro.

 

Cuando un cliente realiza un pedido, en el formulario que aparece para que el cliente ponga cualquier anotación SE RELLENA SOLO. con anotaciones de pedidos anteriores de otros clientes. En el caso de que el cliente no se dé cuenta y lo borre, el correo que confirmación de nuevo pedido llega con anotaciones de pedidos antiguos, con el problema que eso conlleva.

 

Pongo un pantallazo para ilustrar:

 

 

post-712693-0-34463100-1437729277_thumb.jpg

Link to comment
Share on other sites

Aunque llevo poco tiempo en la web no creo que exista tal módulo. Sí que se han modificado los archivos para modificar las facturas que llegan por email, pero en lo relativo a los mensajes, la variable $message y el smarty {message} está todo igual. Ya en el controller OPC (que creoq ue es el que carga los mensajes anteriores y lo que da problemas) me pierdo.

 

Alguna idea? Pongo el código relativo a todo esto:

 

 

 

EL ARCHIVO mailalerts.php


public function getAllMessages($id)
	{
		$messages = Db::getInstance()->executeS('
			SELECT `message`
			FROM `'._DB_PREFIX_.'message`
			WHERE `id_order` = '.(int)$id.'
			ORDER BY `id_message` ASC');
		$result = array();
		foreach ($messages as $message)
			$result[] = $message['message'];

		return implode('<br/>', $result);
	}


....
....



$message = $this->getAllMessages($order->id);

		if (!$message || empty($message))
			$message = $this->l('No message');


......
.....


'{gift}' => (bool)$order->gift,
			'{gift_message}' => $order->gift_message,
			'{message}' => $message
		);




El archivo new_order.html

switch (Tools::getValue('method'))
					{
						case 'updateMessage':
							if (Tools::isSubmit('message'))
							{
								$txt_message = urldecode(Tools::getValue('message'));
								$this->_updateMessage($txt_message);
								if (count($this->errors))
									$this->ajaxDie('{"hasError" : true, "errors" : ["'.implode('\',\'', $this->errors).'"]}');
								$this->ajaxDie(true);
							}
							break;


	
......


$old_message = Message::getMessageByCartId((int)$this->context->cart->id);


.....


'address_collection' => $this->context->cart->getAddressCollection(),
			'opc' => true,
			'oldMessage' => isset($old_message['message'])? $old_message['message'] : '',
			'HOOK_BEFORECARRIER' => Hook::exec('displayBeforeCarrier', array(
				'carriers' => $carriers,


.....



Saludos y gracias

Edited by kinorro (see edit history)
Link to comment
Share on other sites

 

Aunque llevo poco tiempo en la web no creo que exista tal módulo.

 

Que te hace pensar eso? Te lo ha comentado alguién que es moderador y tiene 2615 mensajes... no crees que quizás existan esos módulos?

 

https://www.google.es/search?q=delete+orders+prestashop

 

Por mi experiencia efectivamente lo que comenta Ventura es lo mas probable. Es decir se ha quedado la base de datos de pedidos "corrupta" de forma que hay mensajes que están apuntando incorrectamente a identificadores de pedido que no existen y que conforme se van creando coinciden..

 

Y este estado corrupto puede aparecer si se han borrado pedidos con algún módulo...

 

Lo bueno es que probablemente se te acabe solucionando cuando vayan creciendo los pedidos...

 

Si puedes mirar el modelo de datos de prestashop referente a pedidos y ver si hay alguna incoherencia..

 

http://doc.prestashop.com/display/PS16/Fundamentals+of+PrestaShop+Development#FundamentalsofPrestaShopDevelopment-Databaseschema

 

En Mysq Workbench se ve genial -> la parte naranja es la de pedidos.

Link to comment
Share on other sites

Hola, gracias por responder.

 

No digo que no existan dichos módulos, digo que no están instalados en nuestro sistema.

 

Tampoco creo que el problema se solucione solo. En nuestro sistema tenemos más de 7000 clientes registrados que hacen una media de 30 pedidos diarios.

 

Aparte, he revisado el modelo de datos referente a los pedidos y no observamos incoherencia alguna.

 

 

El problema es bastante molesto. Alguna idea?

 

Saludos y gracias de antemano.

Link to comment
Share on other sites

Ok, en principio diría que lo que se han borrado son carritos de forma manual (o quizás con algún módulo..no se) en la base de datos, habiendo carritos con pedidos asociados (que en principio no deberían haberse borrado..) y la tabla ps_message no se borro  ... por lo que los carritos ha medida que se crean se hace un "match" con el registro de ps_message..

 

Realmente se debería borrar todos registros de ps_message que apuntan a un carrito que no existe.

Link to comment
Share on other sites

Gracias por responder.

 

Pero cómo haría eso? No sería bueno borrar todo el contenido de la tabla (ps_message). En este momento los administradores non nos podemos fiar de los mensajes de los clientes y el interés de almacenar mensajes pasados nes nulo. No podríamos hacer una purga para sanear todo el sistema de mensajes o eso no solucionaría el problema?

 

SI es que sí, simplemente tendríamos que acceder a PHPMyAdmin y ejecutar una sentencia SQL?

 

Saludos y gracias de antemano 

Link to comment
Share on other sites

Gracias por responder.

 

Pero cómo haría eso? No sería bueno borrar todo el contenido de la tabla (ps_message). En este momento los administradores non nos podemos fiar de los mensajes de los clientes y el interés de almacenar mensajes pasados nes nulo. No podríamos hacer una purga para sanear todo el sistema de mensajes o eso no solucionaría el problema?

 

SI es que sí, simplemente tendríamos que acceder a PHPMyAdmin y ejecutar una sentencia SQL?

 

Saludos y gracias de antemano 

 

en ese caso si no interesa guardar ningún mensaje -> ninguno referente a pedidos durante el checkout ni los de atención a cliente de un pedido (también los modulos de pago escriben en esa tabla)

se puede hacer una delete a fondo de todas las filas

 

Ni que decir tiene que en una tienda en producción hay que ir con cuidado, copia de seguridad de la tabla por lo que pueda pasar... y si se tiene un entorno de test mejor que mejor..

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...