14 Dic Borrar pedidos en Prestashop 1.5 o superior
Para borrar o eliminar pedidos en Prestashop 1.4, estábamos acostumbrados a añadir una simple línea en el fichero AdminOrders.php, del directorio de \admin\tabs:
$this->delete=true;
Con esto teníamos la posibilidad de borrar los pedidos desde la pestaña Pedidos, bien uno a uno o marcando todos y pulsando un botón para eliminar todos. Esto era muy útil para borrar pedidos de prueba por ejemplo.
En Prestashop 1.5.2 esto ha cambiado un poco. Tanto es así, que salieron módulos que nos permitían borrar los pedidos uno a uno introduciendo el id del pedido, sin darnos la posibilidad de borrar todos, lo cual era muy lento. Pero hay una solución similar a la que teníamos en versiones anteriores.
Para ello modificaremos el fichero AdminOrdersController.php que encontraremos en el directorio /controllers/admin
Tan sólo tenemos que añadir las 2 líneas siguientes:
/* Eliminar pedidos en Prestashop 1.5 o superior */
$this->addRowAction('delete');
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
/* FIN: Eliminar pedidos en Prestashop 1.5 o superior */
Puede quedar algo similar a esto:
Cómo podéis ver, hemos añadido el código (1) y (2), y el (3) lo selañamos en la captura, porque es lo que en versiones anteriores de Prestashop se ponía a true, pero en este caso, debe permanecer como false.
Si te ha sido de ayuda o crees que le puede ser de ayuda a alguien, no te olvides de compartirlo en tus redes sociales. ¡Gracias!
Jose Costa
Enviado el 16:27h, 02 eneroHe encontrado un módulo que puede ayudar, espero que os resulte interesante.
http://mypresta.eu/modules/administration-tools/delete-orders-free.html
Un saludo.
aquihaydominios
Enviado el 16:34h, 02 eneroHola Jose,
gracias por la aportación. Precisamente en el artículo, cuando nos referimos a que salieron módulos para resolver este tema, nos referíamos a este en concreto. No obstante, la versión gratuita solo permite borrar pedidos 1 a 1, introduciendo el ID. Parece que hay una nueva versión de pago que te permite borrarlos todos de una lista, pero no vemos necesaria la instalación de un módulo, si se puede resolver fácilmente con un par de líneas.
No obstante, gracias por la aportación, puede que a algún usuario le sea de ayuda.
Saludos.
Ignacio
Enviado el 22:39h, 04 febreroAcabo de añadir estas 3 líneas de código y me ha funcionado perfectamente, he podido eliminar los pedidos de prueba que llevaba realizando.
Gracias por la aportación.
Saludos!!
aquihaydominios
Enviado el 01:04h, 06 febreroHola Ignacio,
gracias a ti por compartir tu experiencia con nosotros.
Saludos.
Flor
Enviado el 16:01h, 31 mayoMuy buena solucion, gracias boys
aquihaydominios
Enviado el 16:03h, 31 mayoDe nada, gracias a ti por participar.
Saludos.
lalo
Enviado el 08:19h, 24 junioHola a todos entiendo que el codo os funciona a todos pero yo no logro hacer que esto me funciene bien me da error. ¿podrias echar un vistazo a codigo y decirme por ocurre eso.?
es que da el error al agregar la linea 2
$this->table = ‘order’;
$this->className = ‘Order’;
$this->lang = false;
$this->addRowAction(‘view’);
$this->addRowAction(‘delete’);
$this->explicitSelect = true;
$this->bulk_actions = array(‘delete’ => array(‘text’ => $this->l(‘Delete selected’), ‘confirm’ => $this->l(‘Delete selected items?’)));
$this->allow_export = true;
$this->deleted = false;
$this->context = Context::getContext();
aquihaydominios
Enviado el 08:25h, 24 junioPrueba a cambiar las comillas por las que están enl a tecla de «?». Este puede ser el problema.
David
Enviado el 17:15h, 01 julioHola, me parece excelente poder eliminar los pedidos, pero queda un problema por resolver. si el pedido o esta previamente cancelado o no eliminas todos los productos antes, cuando elimines el pedido los productos se pierden por que no se devuelven al inventario.
JUAN Mª HERVAS GONZALEZ
Enviado el 18:07h, 03 julioHola.
He hecho lo que pone, y cuando le doy a la pestaña pedidos me saca de prestashop y me pone en el navegador:
http://localhost/prestashop/juan/index.php?controller=AdminOrders&token=2ca1576a7c08a690bbba4b9a42da6a3e
Donde JUAN es el nombre que he cambiado a la carpeta ADMIN.
Gracias por vuestra atención.
Saludos
JUAN Mª HERVAS GONZALEZ
Enviado el 18:08h, 03 julioPerdón, se me olvidó poner, ¿qué estoy haciendo mal?
[email protected]
Enviado el 17:06h, 04 julioExcelente..!! funciona a la perfección..
Gracias por el aporte..!!
Ccs – Vnz
aquihaydominios
Enviado el 21:19h, 05 julioHola Juan,
quizás al copiar el código, desde tu navegador se introdujo alguna comilla mal. Lo hemos embebido para que al copiar y pegar lo haga correctamente desde todos los navegadores. Prueba de nuevo por favor y confírmanos si ahora te funciona correctamente.
Gracias, un saludo.
aquihaydominios
Enviado el 21:20h, 05 julioGracias tecnosouci por compartir con nosotros que os ha funcionado correctamente.
Saludos.
Juan Mª Hervás
Enviado el 12:23h, 08 julioHola,
Lo he revisado y en principio lo veo bien. Os dejo el código para que por favor me digáis que estoy haciendo mal.
Gracias por vuestra atención.
Saludos.
public function __construct()
{
$this->table = ‘order’;
$this->className = ‘Order’;
$this->lang = false;
$this->addRowAction(‘view’);
$this->addRowAction(‘delete’);
$this->explicitSelect = true;
$this->bulk_actions = array(‘delete’ => array(‘text’ => $this->l(‘Delete selected’), ‘confirm’ => $this->l(‘Delete selected items?’)));
$this->allow_export = true;
$this->deleted = false;
$this->context = Context::getContext();
aquihaydominios
Enviado el 12:28h, 08 julioHola Juan,
¿te aparece la opción de borrar y cuando la pulsas no hace nada? ¿O ni si quiera te aparece y se queda todo en blanco dando algún error PHP…?
Gracias, un saludo.
Juan Mª Hervás
Enviado el 12:53h, 08 julioHola,
No, entro bien en prestashop, pero cuando le doy a la pestaña pedidos, me saca del prestashop y me lleva a :
http://localhost/prestashop/juan/index.php?controller=AdminOrders&token=2ca1576a7c08a690bbba4b9a42da6a3e
Quedándose la ventana del navegador en blanco. Juan es el nombre por el que he cambiado la carpeta ADMIN tal y como dice al final la instalación de prestashop.
¿puede ser algo de los permisos de escritura?, he utilizado el comando attribute para cambiar los permisos de escritura de la carpeta prestashop pero no hay forma, se quedan siempre en de solo lectura, ¿esto puede influir?
Gracias por vuestra atención.
Saludos.
Ron Morales
Enviado el 17:50h, 31 julioVa bien para borrar los pedidos visualmente pero en la base de datos hay apartados que no los borra como order_history ,order_detail, ps_order_discount sabeis como se podría hacer para que borrara todo?
aquihaydominios
Enviado el 22:36h, 31 julioHola Ron,
hay algunas tablas que se suelen usar para las estadísticas o historial, y puede efectivamente que de esta forma no se borre todo por completo. Si quieres hacer una limpieza más detallada, puedes hacerlo directamente desde la base de datos. En cualquier caso, no recomendamos esa opción a no ser que sea un usuario avanzado y la cantidad de pedidos a eliminar sea muy alta y sea realmente un inconveniente por el peso de la base de datos.
Saludos.
efemedia
Enviado el 09:19h, 12 agostoMuchas gracias por el aporte, con sólo dos líneas en el código se pueden eliminar tanto pedidos como carritos abandonados sin error. Está Genial !!
Rts
Enviado el 13:08h, 14 septiembreBuenisimo!!! gran aporte, muchas gracias!!!!
Sergio
Enviado el 13:31h, 26 octubreTengo la versión 1.5.4.1 de Prestashop. He probado el código, y funciona, pero cuando le doy a un pedido para abrirlo, me salta a la ventana de ‘crear nuevo pedido’ en lugar de mostrarme el pedido.
Al deshacer el código todo vuelve a la normalidad, pero claro, sin la opción de eliminar pedidos.
¿Alguien ha probado este parche con la misma versión que yo?
Gracias por vuestros aportes.
Sergio
Enviado el 12:02h, 28 octubreSolucionado. Fallo mío. Eliminé por equivocación la linea $this->addRowAction(‘view’);
Confirmo que funciona perfectamente en la versión 1.5.4.1
aquihaydominios
Enviado el 12:06h, 28 octubreHola Sergio,
gracias por confirmarlo y por tu colaboración en el blog.
Saludos.
paco
Enviado el 21:44h, 01 noviembreMuchas gracias funciona perfecto
matias
Enviado el 12:27h, 08 eneroLo probé y funciona por lo que veo es de forma visual, ya que información de los pedidos sigue dando vueltas. Mi duda es como debo borrar los pedidos de la base de datos de forma manual, para realmente eliminarlos
gracias
Daniel
Enviado el 17:48h, 16 eneroFunciona genial muchas gracias!!!!!!!!!!!!
aquihaydominios
Enviado el 13:43h, 20 eneroHola Matías,
en la base de datos, tienes varias tablas haciendo referencia a order. Pero a menos que sea un usuario experimentado con bases de datos y PrestaShop, no te recomendamos hacerlo, ya que podrías dejar tu tienda inoperativa. Normalmente, y como la mayoría de usuarios dicen por aquí, con lo comentado en el artículo es suficiente y funciona correctamente.
Gracias, un saludo.
Pablo
Enviado el 08:19h, 22 eneroMuy bueno y simple, pero me ocurre un problema, solamente me funciona la eliminacion individual. pero si selecciono un grupo de pedidos y presiono ‘eliminar seleccionados’,
luego de aceptar el confirm, lo que hace es que se recarga la pagina, agregando en la url este texto ‘#order’
Pablo
Enviado el 08:20h, 22 eneroah y no se borra el grupo seleccionado
aquihaydominios
Enviado el 14:39h, 23 eneroHola Pablo,
¿qué versión de PrestaShop usas? ¿Has visto algún error PHP en los logs?
Saludos.
Roberto
Enviado el 21:31h, 06 febreroSimplemente FANTASTICO, muy sencillo.
Gracias
Eduardo
Enviado el 10:32h, 23 marzoHola, como puedo realizar esta misma acción de agregar el boton de eliminar pedidos para Prestashop 1.6?
Gracias
jose angel
Enviado el 21:52h, 09 abrilHola a todos me sumo a la consulta de Eduardo, me gustaria tener esta funcionalidad en prestashop 1.6
Saludos
Miguel
Enviado el 05:24h, 21 abrilGracias por su ayuda, he podido borrar los pedidos fácilmente.
Tan solo he traducido al castellano los mensajes.
Un saludo y gracias.
Alex
Enviado el 15:40h, 24 abrilMe funcionó a la perfección para 1.5.4.1. Gracias por la aportación!
javi
Enviado el 13:44h, 13 mayoEn la version 1.6 deja de funcionar la pestaña de pedidos. Cuando entro en pedido da un error php. ¿Que hago ahora?
Javi
Enviado el 18:01h, 13 mayoel error que me da al entrar en la pestaña de los pedidos es:
Error interno del servidor HTTP 500
El Servidor Web no puede realizar esta solicitud. Por favor, inténtelo de nuevo más tarde.
Alguien me puede decir que hay mal:
public function __construct()
{
$this->bootstrap = true;
$this->table = ‘order’;
$this->className = ‘Order’;
$this->lang = false;
$this->addRowAction(‘view’);
$this->addRowAction(´delete´);
$this->explicitSelect = true;
$this->allow_export = true;
$this->bulk_actions = array(´delete´=> array(´text´=> $this->l(´Delete selected´),
´confirm´=>$this->l(´Delete selected items?´)));
$this->deleted = false;
$this->context = Context::getContext();
Antonio Menchón
Enviado el 12:23h, 20 mayoMuy buen artículo, la información me ha sido de mucha utilidad. Gracias. Espero que este sitio web siga funcionando por mucho tiempo.
Saludos! 🙂
jorge
Enviado el 18:02h, 04 junioHe puesto las lineas de codigo y todo correcto, ya que en cada pedido ya me sale la opcion eliminar.
Pero como puedo borrar todos los pedidos a la vez de forma masiva????
jorge
Enviado el 18:04h, 04 juniose me olvidaba tengo PRESTASHOP 1.6
aquihaydominios
Enviado el 21:30h, 04 junioHola Jorge,
puedes seleccionar todos y pulsar el botón de abajo de borrado. Puede que te aparezca en inglés.
Saludos.
Aldo Scully
Enviado el 23:16h, 29 julioOla.
Uso Prestashop 1.5.6.0 e as alterações ocorreram normalmente. Deu tudo certo. Ja tinha feito uma alteração numa outra loja com Prestashop 1.4.4.1 mudando no codigo tambem, obviamente diferente dessa vesao mas sabia que havia essa possibilidade. Bem melhor do que instalar modulos.
Obrigado.
Isidro
Enviado el 13:15h, 26 noviembreHola, he encontrado este código y me ha servido de mucho, gracias, pero querria hacerte una pregunta; he añadido a la tabla ps_orders un campo int «borrado», el cual esta todo a ‘1’….lo que quiero hacer es que al clicar sobre la X, en vez de borrar el pedido de la base de datos cambie el valor de este campo «borrado» a ‘0’. Nose si es mucho pedir pero estoy atascado en ese problema y nose como solucionarlo. Gracias por anticipado.
eduk2
Enviado el 16:10h, 26 noviembreHola Isidro,
es interesante lo que comentas, supongo que con idea de no borrar nada, si no de simplemente ocultar. Pero lo que propones requeriría bastantes cambios a nivel de programación como para explicar en unas líneas por comentario. Si la idea es simplemente esa, mantener todo sin borrarlo, creo que te va a ser más fácil, simplemente hacer backups de la base de datos desde la propia herramienta de PrestaShop de vez en cuando. Si la idea es otra, cuéntanosla, a ver si se nos ocurre algo más fácil para poder ayudarte.
Saludos
Isidro
Enviado el 20:38h, 26 noviembreSi, la verdad es que ha requerido el cambio de muchas cosas, pero al final ya lo tengo encaminado…Gracias por responder!!!
eduk2
Enviado el 21:49h, 26 noviembreNos alegramos Isidro. Si una vez terminado quieres compartir lo aprendido con nosotros, no dudes en hacerlo. Será bienvenido.
Saludos.
Luis
Enviado el 11:14h, 15 abrilHola,
he añadido el código, comprobado la escritura pero no apararece el icono para borrar el pedido.
También he probado comentando la línea que muestra el icono de «VER» y no desaparece.
Estoy usando PrestaShop 1.5.4.1, ¿a alguien se le ocurre una solución?
Gracias
Diego
Enviado el 11:37h, 28 julioLuis, el boton de ELIMINAR aparece cuando haces clic a la derecha del pedido, donde pone VER. Haz clic y veras el nuevo boton ELIMINAR.
Funciona de maravilla este codigo. Muchas gracias.
Manuel
Enviado el 08:07h, 04 febreroExcelente, pero el problema que tengo es que para modificar el codigo tengo que hacerlo por ftp (tengo prestashop cloud) y no encuentro el directorio controllers/admin
Alguien me podria ayudar?