Jump to content
Scoof

Filtrer les commandes par transporteur (prestashop 1.6)

Recommended Posts

Bonjour à tous, 

 

je cherche à rajouter un filtre par type de transporteur dans mon back office, du coup j'ai cherché un peu partout pour pouvoir le faire mais je n'ai pas trouvé pour la dernière mouture de prestashop. 

 

Je sais ou ça se passe je vois le principe mais mes connaissances en dev sont nulles et je ne sais pas comment faire. En sachant que je n'ai pas besoin de filtrer par pays et je me suis dit que je pouvais remplacer le filtre par pays par le filtre par transporteur. 

 

Si quelqu'un à une solution je vous en serais très reconnaissant :)

merci d'avance

 

 

Share this post


Link to post
Share on other sites

Bonjour,

 

Le principe est donc de surcharger la méthode __construct() pour y ajouter à l'array $this->fields_list un tableau comportant le nom du transporteur.

Cet array est directement tiré d'une requête SQL (il faudra donc surcharger la variable $this->_select et $this->_join pour y ajouter les transporteurs)

 

Vous pouvez vous baser sur la fonction __construct de la class AdminOrdersControllerCore

  • Like 1

Share this post


Link to post
Share on other sites

Bonjour Nowis et merci pour votre aide.

Pour être totalement franc avec vous je suis dans le brouillard le plus complet car comme je le disais je n'y connais pas grand chose et meme si je vois le principe je ne sais pas comment le réaliser... 

 

Merci

Share this post


Link to post
Share on other sites

Bonjour,

 

Je remonte ce sujet car je suis également à la recherche d'une solution à ce problème.

 

Merci

Share this post


Link to post
Share on other sites

Boujour,

 

Pour surcharger un contrôleur vous devez vous rendre dans votre-site/override/controllers/admin

 

Dans ce dossier créer un fichier AdminOrdersController.php et puis y mettre ceci

<?php

class AdminOrdersController extends AdminOrdersControllerCore
{
	public function __construct()
	{
		parent::__construct();
		$this->_select .= ', ca.name as carrier_name';
		$this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'carrier` ca ON (ca.`id_carrier` = a.`id_carrier`)';
		$this->fields_list['carrier_name'] = array(
			'title' => $this->l('Transporteur'),
			'width' => 200,
			'callback' => 'transporteur'
		);
	}
        public function processFilter()
	{
		parent::processFilter();
		$this->_filter = str_replace('`carrier_name`', 'ca.name', $this->_filter);
	}
	public function transporteur($carrier_name)
	{
		if (strpos(strtolower($carrier_name), 'colissimo') !== FALSE)
			return '<span style="color: #006a32;">' . $carrier_name . '</span>';
		else
			return $carrier_name;
	}
}

Vidé le cache de presta et voila !  :)

  • Like 1

Share this post


Link to post
Share on other sites

Bonjou

On 2/3/2016 at 2:17 PM, AlexanderOs said:

Boujour,

 

Pour surcharger un contrôleur vous devez vous rendre dans votre-site/override/controllers/admin

 

Dans ce dossier créer un fichier AdminOrdersController.php et puis y mettre ceci


<?php

class AdminOrdersController extends AdminOrdersControllerCore
{
	public function __construct()
	{
		parent::__construct();
		$this->_select .= ', ca.name as carrier_name';
		$this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'carrier` ca ON (ca.`id_carrier` = a.`id_carrier`)';
		$this->fields_list['carrier_name'] = array(
			'title' => $this->l('Transporteur'),
			'width' => 200,
			'callback' => 'transporteur'
		);
	}
        public function processFilter()
	{
		parent::processFilter();
		$this->_filter = str_replace('`carrier_name`', 'ca.name', $this->_filter);
	}
	public function transporteur($carrier_name)
	{
		if (strpos(strtolower($carrier_name), 'colissimo') !== FALSE)
			return '<span style="color: #006a32;">' . $carrier_name . '</span>';
		else
			return $carrier_name;
	}
}

Vidé le cache de presta et voila !  :)

Merci pour cette astuce mais j'ai cette erreur :

Column 'id_carrier' in field list is ambiguous

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More