Salta al contenuto ID

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna su