Si vous souhaitez rajouter la référence fournisseur dans la liste des produits dans l’administration afin de pouvoir filtrer les produits via ce paramètre voici comment faire :

( Attention en raison de la méthode de stockage, ceci fonctionne uniquement pour les produits qui n’ont pas de déclinaisons )

Créer un override de la classe AdminProductControllers dans l’emplacement override/controllers/admin/ et insérer le code suivant :

<?php
class AdminProductsController extends AdminProductsControllerCore
{
    
    public function __construct()
    {
        
        parent::__construct();
        
        // On joint la table ps_supplier ou la référence est stockée
        $this->_join .= ' LEFT JOIN '._DB_PREFIX_.'product_supplier ps ON ( a.id_product = ps.id_product AND ps.id_product_attribute = 0 )';
        
        //Ajout du champs dans la liste des champs affichés dans l'amdin
        $this->fields_list['product_supplier_reference'] = array(
            'title' => $this->l('Supplier Reference'),
            'align' => 'left',
            'filter_key' => 'ps!product_supplier_reference',
            'width' => 80
        );
    }
}

La nouvelle colonne “Supplier reference” apparait bien ensuite dans le listing des produits, et il est possible de trier via ce paramètre 🙂
Supplier renference admin list

 

Edit 2015-08-20 :
Si vous souhaitez également pouvoir rechercher les produits dans l’administration via ces références, voici comment procéder :

Pour commencer il faut surcharger la fonction searchByName de la classe Product , afin de chercher dans le champ supplier_reference

 

<?php 
class Product extends ProductCore {
 
 
    /**
    * Admin panel product search
    *
    * @param integer $id_lang Language id
    * @param string $query Search query
    * @return array Matching products
    */
    public static function searchByName($id_lang, $query, Context $context = null)
    {
        if (!$context)
            $context = Context::getContext();
        $sql = new DbQuery();
        $sql->select('p.`id_product`, pl.`name`, p.`active`, p.`reference`, m.`name` AS manufacturer_name, stock.`quantity`, product_shop.advanced_stock_management, p.`customizable`');
        $sql->from('category_product', 'cp');
        $sql->leftJoin('product', 'p', 'p.`id_product` = cp.`id_product`');
        $sql->join(Shop::addSqlAssociation('product', 'p'));
        $sql->leftJoin('product_lang', 'pl', '
            p.`id_product` = pl.`id_product`
            AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl')
        );
        $sql->leftJoin('manufacturer', 'm', 'm.`id_manufacturer` = p.`id_manufacturer`');
        $where = 'pl.`name` LIKE \'%'.pSQL($query).'%\'
        OR p.`reference` LIKE \'%'.pSQL($query).'%\'
        OR p.`supplier_reference` LIKE \'%'.pSQL($query).'%\'
        OR  p.`id_product` IN (SELECT id_product FROM '._DB_PREFIX_.'product_supplier sp WHERE `product_supplier_reference` LIKE \'%'.pSQL($query).'%\')';
        $sql->groupBy('`id_product`');
        $sql->orderBy('pl.`name` ASC');
        if (Combination::isFeatureActive())
        {
            $sql->leftJoin('product_attribute', 'pa', 'pa.`id_product` = p.`id_product`');
            $sql->join(Shop::addSqlAssociation('product_attribute', 'pa', false));
 
//Select the product supplier reference            
$sql->select('sp.product_supplier_reference');
 
            //Join Product Supplier Table
            $sql->leftJoin('product_supplier', 'sp', 'sp.`id_product` = p.`id_product`');
            
            //Change Where condition in order to search supplier reference
            $where .= ' OR pa.`reference` LIKE \'%'.pSQL($query).'%\'
                        OR p.`supplier_reference` LIKE \'%'.pSQL($query).'%\'
                        OR `product_supplier_reference` LIKE \'%'.pSQL($query).'%\'';
        }
        $sql->where($where);
        $sql->join(Product::sqlStock('p', 'pa', false, $context->shop));
        $result = Db::getInstance()->executeS($sql);
        if (!$result)
            return false;
        $results_array = array();
        foreach ($result as $row)
        {
            $row['price_tax_incl'] = Product::getPriceStatic($row['id_product'], true, null, 2);
            $row['price_tax_excl'] = Product::getPriceStatic($row['id_product'], false, null, 2);
            $results_array[] = $row;
        }
        return $results_array;
    }
 
}

 

Puis de surcharger le controller AdminSearchController pour afficher ce champ dans la liste

<?php
class AdminSearchController extends AdminSearchControllerCore
{
    protected function initProductList()
    {
        parent::initProductList();
        //Add new field to display
        $this->fields_list['products']['product_supplier_reference'] = array('title' => $this->l('Supplier reference'), 'width' => 'auto');
    }
}