Prestashop: aggiungere 2 colonne con note in lista ordini
Per aggiungere le colonne Note e Messaggio va modificato il file overrides/controllers/admin/AdminOrdersController.php
<?php class AdminOrdersController extends AdminOrdersControllerCore { public function __construct() { parent::__construct(); // collegamento alla tabella ps_customer_thread $this->_join .= 'LEFT JOIN ps_customer_thread ct ON ct.id_order=a.id_order'; // questo mostra la nota nell'indirizzo di spedizione $this->_select .= ', address.other AS `note`'; // utilizza invece questo per mostrare la nota interna dell'ordine // $this->_select .= ', c.note AS `note`'; // questo mostra l'ultimo messaggio (max. 1), nella tabellas customer_thread collegata prima. Cambiando ASC o DESC decidi se mostrare il primo o ultimo messaggio. $this->_select .= ', (SELECT message FROM ps_customer_message cm WHERE cm.id_customer_thread=ct.id_customer_thread AND ct.status="open" ORDER BY cm.date_upd DESC LIMIT 1) AS `message`'; // aggiunta della colonna note (fields_list) - prima nominata note $this->fields_list['note'] = array( 'title' => $this->l('Note'), 'havingFilter' => true, ); // aggiunta della colonna messaggio - nominata message $this->fields_list['message'] = array( 'title' => $this->l('Message'), 'havingFilter' => true, ); // rimozione della colonna riferimento per fare spazio (ho ID ordine = ID progressivo di Prestashop) unset($this->fields_list['reference']); } }
Quello che faccio qui sopra è manipolare la query al database, ed estrapolare dei campi in più da aggiungere nell’array “fields_list”, che andranno poi nelle colonne. Quindi devi avere come riferimento la query originale che qui non si vede, ma vediamo il riferimento “a.id_order”, l’alias “a” è definito nella query principale. Su di questa mi collego con una JOIN ad altre tabelle di Prestashop (in questo caso ps_customer_thread). Con questo principio possiamo aggiungere varie colonne di altri dati.
Questo articolo ha 0 commenti