Jump to content

Recherche Client - Créer un commande


Recommended Posts

Bonjour à tous,

tout récemment, j'ai décidé d'installer une boutique pour mon commerce. Étant un peu beaucoup geek, je me suis lancé dans ce grand défis seul et sans connaissance.

J'ai appris pas mal rien qu'en lisant ce forum (merci à tous d'ailleur).

Aujourd'hui, je cherche a modifier la recherche client lors de la création des commandes dans le BO de prestashop v1.5.6.2.

Ce que je cherche a faire exactement :

j'utilise des groupes qui on des réductions pour mes clients. Jusque la ça va. Par contre je voudrais lors de ma recherche client, pouvoir afficher le groupe d’accès dans le petit carré de chaque client.

Ce sera peut être plus clair avec une image ;-)

J'ai cherché mais je ne trouve pas le fichier ou ce trouve cela.

Merci pour votre aide,

Dida

post-793007-0-02389900-1399367670_thumb.png

Link to comment
Share on other sites

Bonjour,

 

Dans AdminOrdersController, il y a la méthode suivante: ajaxProcessSearchCustomers(). Celle-ci est en charge de lancer la recherche (Customer::searchByName()) et de retourner, sous format JSON, les résultats obtenus.

 

Le traitement du JSON obtenu se déroule dans la fonction JavaScript searchCustomers() inclue dans le fichier admin\themes\default\template\controllers\orders\form.tpl

 

Il faudra donc surement modifié les deux fonctions, PHP et JavaScript, afin de récupérer le nom du groupe par défaut (et non son ID obtenu) et le restituer dans la liste.

Link to comment
Share on other sites

Cool,

 

Merci j.danse.

 

Donc voici la function ;-)

	public function ajaxProcessSearchCustomers()
	{
		if ($customers = Customer::searchByName(pSQL(Tools::getValue('customer_search'))))
			$to_return = array('customers' => $customers,
					       'found' => true);
		else
			$to_return = array('found' => false);
		$this->content = Tools::jsonEncode($to_return);
	}

J'ai bien compris commment faire pour modifier la partie de form.tpl. Par contre j'ai un peu de mal avec ce bout de code pour la recherche SQL.

 

Serais tu assez sympa pour mettre ... sur la piste ? ;-)

Link to comment
Share on other sites

En fait, il faut faire quelque chose comme suit:

public function ajaxProcessSearchCustomers()
	{
		if ($customers = Customer::searchByName(pSQL(Tools::getValue('customer_search'))))
		{
			foreach($customers as $c => $customer)
			{
				$group = new Group((int)$customer['id_default_group']);
				$customers[$c]['default_group'] = $group->name;
			}
			
			$to_return = array('customers' => $customers,
					       'found' => true);
		}
		else
			$to_return = array('found' => false);
		$this->content = Tools::jsonEncode($to_return);
	}
Link to comment
Share on other sites

Je crois que je suis trop blonde :'(

 

Voici donc ce que j'ai ... enfin ce que j.dance a donné. Mais cela ne semble pas fonctionner enfin je me retrouve avec un super "[object Object]".

 

Fichier ./controllers/admin/AdminOrdersController.php

	public function ajaxProcessSearchCustomers()
	{
		if ($customers = Customer::searchByName(pSQL(Tools::getValue('customer_search'))))
		{
			// Début de modification
                        foreach($customers as $c => $customer)
      			{
 				$group = new Group((int)$customer['id_default_group']);
				 $customers[$c]['id_default_group'] = $group->name;
			 }
                        // Fin de modification
			
 			$to_return = array('customers' => $customers,
					       'found' => true);
 		}
 		else
			 $to_return = array('found' => false);
		 $this->content = Tools::jsonEncode($to_return);
	}

Fichier ./adminxxxx/themes/default/template/controllers/orders/form.tpl

	function searchCustomers()
	{
		$.ajax({
			type:"POST",
			url : "{$link->getAdminLink('AdminOrders')|escape:'html'}",
			async: true,
			dataType: "json",
			data : {
				ajax: "1",
				token: "{$token}",
				tab: "AdminOrders",
				action: "searchCustomers",
				customer_search: $('#customer').val()},
			success : function(res)
			{
				if(res.found)
				{
					var html = '<ul>';
					$.each(res.customers, function() {
						html += '<li class="customerCard"><div class="customerName"><a class="fancybox" href="{$link->getAdminLink('AdminCustomers')}&id_customer='+this.id_customer+'&viewcustomer&liteDisplaying=1">'+this.firstname+' '+this.lastname+'</a></div>';
						html += '<div class="customerEmail"><a href="mailto:'+this.email+'">'+this.email+'</a></div>';
						html += '<br/><b>'+this.id_default_group+'</b>'; // Ligne modifiée
						html += '<a onclick="setupCustomer('+this.id_customer+');return false;" href="#" class="id_customer button">{l s='Choose'}</a></li>';
					});
					html += '</ul>';
				}
				else
					html = '<div class="warn">{l s='No customers found'}</div>';
				$('#customers').html(html);
				resetBind();
			}
		});
	}
Link to comment
Share on other sites

Super merci.

 

Je suis hyper contente que ce fonctionne.

 

Et j'ai +/- compris.

 

Temps que j'y suis, je cherchais aussi a mettre le nom du client que l'on a selectionner dans cette même page de commande. Aurais tu idée d'ou cela pourrais se trouver ?

Link to comment
Share on other sites

Toujours dans la partie commande, une fois que tu as sélectionner un client, la partie inférieur te permet d'encoder la commande. Le truc c'est que si tu as par exemple un client qui s'appelle du Dupond. Dupond étant un nom fort rependu, j'ai 6 Dupond je clique sur mon client et la partie inférieur (panier) se développe. une fois que j'ai cliqué dessus impossible de savoir sur lequel on a cliqué...

 

Donc la question est est-il possible de mettre genre juste au dessus de la recherche produit est il possible de mettre le nom du client sur lequel on a cliqué ? cela permet de rester tout le long de la commande certain d'avoir le bon client de chargé.

Link to comment
Share on other sites

Salut Dida,

 

Toujours dans la partie commande, une fois que tu as sélectionner un client, la partie inférieur te permet d'encoder la commande. Le truc c'est que si tu as par exemple un client qui s'appelle du Dupond. Dupond étant un nom fort rependu, j'ai 6 Dupond je clique sur mon client et la partie inférieur (panier) se développe. une fois que j'ai cliqué dessus impossible de savoir sur lequel on a cliqué...

 

Donc la question est est-il possible de mettre genre juste au dessus de la recherche produit est il possible de mettre le nom du client sur lequel on a cliqué ? cela permet de rester tout le long de la commande certain d'avoir le bon client de chargé.

 

Cela m'interesse aussi ;-)

Edited by nullos (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

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...