4webs

Mostrar mensajes de pedidos en Prestashop 1.5

Uno de los problemas, bugs o carencias que hemos encontrado en Prestashop 1.5 es que en los pedidos no aparecen los mensajes en la misma página del pedido, para poder ver nuestras anotaciones como administradores tenemos que ir al centro de atención al cliente que se encuentra en la pestaña de clientes.

El centro de atención al cliente está muy bien, ya que podremos hacer un seguimiento de todas las consultas producidas por los clientes y tenerlos ordenador por varios criterios de búsqueda, pero esta información no se extrapola a la pantalla de pedidos, por lo que es un auténtico coñazo tener que entrar al pedido, pulsar en comentarios sobre el pedido y que te redirija a todos los mensajes.

Os vamos a explicar hoy como podéis modificar fácilmente Prestashop para que todos los mensajes de un único pedido aparezcan siempre en el mismo detalle del pedido, en la versión 1.6 de Prestashop está solucionado, pero en la 1.5 no se puede hacer si no se modifican una serie de archivos.

<h2>Archivos a modificar</h2>

Lo primero que tenemos que hacer es descargarnos a nuestro ordenador los siguientes archivos.

  • /classes/CustomerThread.php
  • /controllers/admin/AdminOrdersController.php
  • carpeta_backend/themes/default/template/controllers/orders/helpers/view/view.tpl

Ahora vamos a realizar los cambios necesarios para mostrar los cambios.

En el archivo CustomerThread.php tenemos que añadir al final, después de la última función.

public static function getCustomerMessagesByOrderId($id_order) { $sql = 'SELECT ct.*,cm.*, c.`firstname` AS cfirstname, c.`lastname` AS clastname, e.`firstname` AS efirstname, e.`lastname` AS elastname FROM '._DB_PREFIX_.'customer_thread ct LEFT JOIN '._DB_PREFIX_.'customer_message cm ON ct.id_customer_thread = cm.id_customer_thread LEFT JOIN `'._DB_PREFIX_.'customer` c ON ct.`id_customer` = c.`id_customer` LEFT JOIN '._DB_PREFIX_.'employee e ON cm.id_employee = e.id_employee WHERE id_order = '.(int)$id_order.' ORDER BY cm.id_customer_message DESC'; return Db::getInstance()->executeS($sql); }

En el archivo AdminOrderController.php

Hay que buscar la línea 1368:
'messages' => Message::getMessagesByOrderId($order->id, true),

Y reemplazarla por :
'messages' => CustomerThread::getCustomerMessagesByOrderId($order->id, true),

Y por último en el archivo view.tpl

Tenemos que buscar la línea 780
{l s='At'} {dateFormat date=$message['date_add']}

Y reemplazarla por :
{l s='At'} {$message['date_add']}

Ahora tenemos que subir los archivos, es importante que lo hagamos como Prestashop indica que hay que hacerlo, no sobreescribiendo los archivos sino haciendo override, para que podamos volver a la versión inicial fácilmente si ocurre algún error o queremos tener Prestashop como se instaló.

Para ello ahora vamos a subir:

  • customerThread.php los subimos a override/classes/
  • AdminOrderController.php lo subimos a override/controllers/admin/
  • Y view.tpl como es un archivo de vista lo subimos donde lo cogimos.

Con estos sencillos cambios tendremos visibles los comentarios de pedido en la misma ficha de cliente.