{"id":1062,"date":"2015-08-11T10:24:52","date_gmt":"2015-08-11T08:24:52","guid":{"rendered":"http:\/\/www.h-hennes.fr\/blog\/?p=1062"},"modified":"2018-11-22T18:16:33","modified_gmt":"2018-11-22T16:16:33","slug":"prestashop-afficher-la-reference-fournisseur-dans-la-liste-admin-des-produits","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2015\/08\/11\/prestashop-afficher-la-reference-fournisseur-dans-la-liste-admin-des-produits\/","title":{"rendered":"Prestashop : Afficher la r\u00e9f\u00e9rence fournisseur dans la liste admin des produits"},"content":{"rendered":"<p>Si vous souhaitez rajouter la r\u00e9f\u00e9rence fournisseur dans la liste des produits dans l&rsquo;administration afin de pouvoir filtrer les produits via ce param\u00e8tre voici comment faire :<\/p>\n<p><em>( Attention en raison de la m\u00e9thode de stockage, ceci fonctionne uniquement pour les produits qui n&rsquo;ont pas de d\u00e9clinaisons )<\/em><\/p>\n<p>Cr\u00e9er un override de la classe AdminProductControllers dans l&#8217;emplacement override\/controllers\/admin\/ et ins\u00e9rer le code suivant :<\/p>\n<pre lang=\"php\" escaped=\"true\">&lt;?php\r\nclass AdminProductsController extends AdminProductsControllerCore\r\n{\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0public function __construct()\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0parent::__construct();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ On joint la table ps_supplier ou la r\u00e9f\u00e9rence est stock\u00e9e\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;_join .= ' LEFT JOIN '._DB_PREFIX_.'product_supplier ps ON ( a.id_product = ps.id_product AND ps.id_product_attribute = 0 )';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/Ajout du champs dans la liste des champs affich\u00e9s dans l'amdin\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;fields_list['product_supplier_reference'] = array(\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0'title' =&gt; $this-&gt;l('Supplier Reference'),\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0'align' =&gt; 'left',\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0'filter_key' =&gt; 'ps!product_supplier_reference',\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0'width' =&gt; 80\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0);\r\n\u00a0\u00a0 \u00a0}\r\n}\r\n\r\n\r\n<\/pre>\n<p>La nouvelle colonne \u00ab\u00a0Supplier reference\u00a0\u00bb apparait bien ensuite dans le listing des produits, et il est possible de trier via ce param\u00e8tre \ud83d\ude42<br \/>\n<a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/08\/supplier_reference.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1065\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/08\/supplier_reference.jpg\" alt=\"Supplier renference admin list\" width=\"780\" height=\"118\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/08\/supplier_reference.jpg 780w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/08\/supplier_reference-300x45.jpg 300w\" sizes=\"auto, (max-width: 780px) 100vw, 780px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Edit 2015-08-20 :<\/strong><br \/>\nSi vous souhaitez \u00e9galement pouvoir rechercher les produits dans l&rsquo;administration via ces r\u00e9f\u00e9rences, voici comment proc\u00e9der :<\/p>\n<p>Pour commencer il faut surcharger la fonction <em>searchByName<\/em> de la classe <em>Product , <\/em>afin de chercher dans le champ supplier_reference<\/p>\n<p>&nbsp;<\/p>\n<pre lang=\"php\" escaped=\"true\">&lt;?php \r\nclass Product extends ProductCore {\r\n\r\n\r\n\u00a0\u00a0 \u00a0\/**\r\n\u00a0\u00a0 \u00a0* Admin panel product search\r\n\u00a0\u00a0 \u00a0*\r\n\u00a0\u00a0 \u00a0* @param integer $id_lang Language id\r\n\u00a0\u00a0 \u00a0* @param string $query Search query\r\n\u00a0\u00a0 \u00a0* @return array Matching products\r\n\u00a0\u00a0 \u00a0*\/\r\n\u00a0\u00a0 \u00a0public static function searchByName($id_lang, $query, Context $context = null)\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (!$context)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$context = Context::getContext();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql = new DbQuery();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;select('p.`id_product`, pl.`name`, p.`active`, p.`reference`, m.`name` AS manufacturer_name, stock.`quantity`, product_shop.advanced_stock_management, p.`customizable`');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;from('category_product', 'cp');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;leftJoin('product', 'p', 'p.`id_product` = cp.`id_product`');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;join(Shop::addSqlAssociation('product', 'p'));\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;leftJoin('product_lang', 'pl', '\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0p.`id_product` = pl.`id_product`\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl')\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;leftJoin('manufacturer', 'm', 'm.`id_manufacturer` = p.`id_manufacturer`');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$where = 'pl.`name` LIKE \\'%'.pSQL($query).'%\\'\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0OR p.`reference` LIKE \\'%'.pSQL($query).'%\\'\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0OR p.`supplier_reference` LIKE \\'%'.pSQL($query).'%\\'\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0OR\u00a0 p.`id_product` IN (SELECT id_product FROM '._DB_PREFIX_.'product_supplier sp WHERE `product_supplier_reference` LIKE \\'%'.pSQL($query).'%\\')';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;groupBy('`id_product`');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;orderBy('pl.`name` ASC');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (Combination::isFeatureActive())\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;leftJoin('product_attribute', 'pa', 'pa.`id_product` = p.`id_product`');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;join(Shop::addSqlAssociation('product_attribute', 'pa', false));\r\n\r\n\/\/Select the product supplier reference\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n$sql-&gt;select('sp.product_supplier_reference');\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/Join Product Supplier Table\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;leftJoin('product_supplier', 'sp', 'sp.`id_product` = p.`id_product`');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/Change Where condition in order to search supplier reference\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$where .= ' OR pa.`reference` LIKE \\'%'.pSQL($query).'%\\'\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 OR p.`supplier_reference` LIKE \\'%'.pSQL($query).'%\\'\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 OR `product_supplier_reference` LIKE \\'%'.pSQL($query).'%\\'';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;where($where);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$sql-&gt;join(Product::sqlStock('p', 'pa', false, $context-&gt;shop));\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$result = Db::getInstance()-&gt;executeS($sql);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (!$result)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return false;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$results_array = array();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0foreach ($result as $row)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$row['price_tax_incl'] = Product::getPriceStatic($row['id_product'], true, null, 2);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$row['price_tax_excl'] = Product::getPriceStatic($row['id_product'], false, null, 2);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$results_array[] = $row;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return $results_array;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Puis de surcharger le controller AdminSearchController pour afficher ce champ dans la liste<\/p>\n<pre lang=\"php\" escaped=\"true\">&lt;?php\r\nclass AdminSearchController extends AdminSearchControllerCore\r\n{\r\n\u00a0\u00a0 \u00a0protected function initProductList()\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0parent::initProductList();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/Add new field to display\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;fields_list['products']['product_supplier_reference'] = array('title' =&gt; $this-&gt;l('Supplier reference'), 'width' =&gt; 'auto');\r\n\u00a0\u00a0 \u00a0}\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Si vous souhaitez rajouter la r\u00e9f\u00e9rence fournisseur dans la liste des produits dans l&rsquo;administration afin de pouvoir filtrer les produits via ce param\u00e8tre voici comment faire : ( Attention en raison de la m\u00e9thode de stockage, ceci fonctionne uniquement pour les produits qui n&rsquo;ont pas de d\u00e9clinaisons ) Cr\u00e9er un override de la classe AdminProductControllers [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[245],"tags":[348,374,104],"class_list":["post-1062","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","tag-admin","tag-liste-produits","tag-prestashop","prestashop-1-5","prestashop-1-6","prestashop-1-7","prestashop-1-7-3","prestashop-1-7-4","prestashop-1-7-5","prestashop-1-7-6","prestashop-1-7-8","prestashop-8-0"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1062","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=1062"}],"version-history":[{"count":5,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1062\/revisions"}],"predecessor-version":[{"id":1082,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1062\/revisions\/1082"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}