Jump to content
julianbaros

[Résolu] Modification Back Office Commandes

Recommended Posts

Bonjour,

J'ai besoin de votre aide. Je souhaiterais modifier le BO de commande. J'ai dans un premier temps ajouté une colonne avec le numéro de suivi de ma commande et ça fonctionne parfaitement (CF image ModifBOCommande.png).
Maintenant, je souhaiterais faire un peu plus compliqué, j'espère que vous pourrez m'aider.

J'affiche donc lorsque j'en ai un, un numéro de suivi. Je souhaiterais pouvoir rendre ce numéro de suivi cliquable en récupérant le lien dans la commande du numéro de suivi (celui qui permet de suivre le colis (CF CommandeNumSuivi).

Je souhaite donc récupéré le lien en plus du numéro de suivi qui est dans la commande dans la partie livraison de ma commande, pour mettre ce lien dans la colonne numéro de suivi de ma liste de commande.

Le but est de m'éviter de rentrer dans la commande à chaque fois.

Auriez-vous une solution ?

D'avance merci.

ModifBOCommande.png

CommandeNumSuivi.png

Edited by julianbaros (see edit history)

Share this post


Link to post
Share on other sites

L'override de l'admin order controller ressemble à quoi ?

On va pas inventer la variable :) 

Share this post


Link to post
Share on other sites

Bonjour,

Merci pour votre réponse rapide. J'ai regardé ce que vous m'avez envoyé.

La difficulté pour moi c'est que je cherche à récupéré le lien de tracking pour le mettre sur le BO.

Voici mon fichier AdminOrdersController.php de l'override.

Avec ce que vous m'avez envoyé, j'ai essayé quelques idées mais qui ne fonctionnent pas. Je précise, je ne suis pas développer :).

J'espère que vous pourrez m'aider.

D'avance merci.

 

AdminOrdersControllerModifié.php

AdminOrdersController.php

Share this post


Link to post
Share on other sites

Auriez-vous une idée avec mes fichiers pour afficher le lien de tracking pour qu'il soit directement dans ma colonne sur la liste des commandes dans le BO s'il vous plait ?

Share this post


Link to post
Share on other sites

Regarde quand même le fichier que tu mets : 

 

public function printTracking($id_order, $tr)
{
    $tracking = array ('<a href ="otracking" ><img src="../img/admin/Tracking.png" style="width:80%"/>');
    $tr['otracking'] = $imagecarrier[$tr['otracking']];
    return ($tr['otracking']);
}	


Tu as un lien ouvert qui n'est pas fermé. Tu sets un array ( $traking ) qui n'est pas utilisé.

 Essaye des trucs simple

public function printTracking($id_order, $tr)
{
    $lien = '<a href="monliendetracking">Num Colis</a>'
    
    return $lien; 
}	

 

 

Share this post


Link to post
Share on other sites

Bonjour,

Merci pour votre réponse.

N'étant pas développeur, je ne suis pas sur de comprendre la fonction que vous m'avez donné. Mais si je comprends un peu, la fonction ne peut pas récupérer le lien en fonction de la commande si ?

En attendant une réponse de votre part.

Cordialement

Share this post


Link to post
Share on other sites

Bonjour,

J'ai enfin trouvé la solution :). Je précise que ma version de Prestashop est la 1.6.0.11.

C'est dans mon fichier AdminOrdersController.php que ça se passe.

Je créé ma colonne Numéro de suivi comme suit :

public function __construct()
{
	parent::__construct();
	// Ajout de la colonne Numero de suivi
	$this->_join .= '
	LEFT JOIN `'._DB_PREFIX_.'order_carrier` oc ON (oc.`id_order` = a.`id_order`)
    LEFT JOIN `'._DB_PREFIX_.'carrier` ca ON (ca.`id_carrier` = oc.`id_carrier`)';
    	$this->_select .= ", CONCAT(`url`, '|', `tracking_number`) as otracking";
		$this->fields_list['otracking'] = array(
            'title' => $this->l('Numéro de suivi'),
            'havingFilter' => true,
            'href' => '',
            'callback' => 'addTrackingLink'
        	);
}

Ensuite, juste après la création de la colonne dans le même fichier, je créé ma fonction pour insérer le lien de tracking. La particularité est que je gère 2 modes de livraison alors que je n'en propose qu'un. C'est à dire que par défaut c'est tout le temps chronopost qui est actif, mais lorsque mes colis font plus de 30kg je passe par schenker. Quand j'utilise la fonction explode sur mon lien de tracking $otracking, il va me récupéré toute l'URL du lien chronopost $tracking_data[0] et le numéro de suivi $tracking_data[1]. Je regarde si dans $tracking_data[1] s'il y a le mot "Schenker" dedans et bien j'utilise un autre lien (celui fournit par Schenker) auquel j'ajoute $tracking_data[1]. Ce qui donne le résultat suivant :

public function addTrackingLink($otracking)
    {
		$tracking_data = explode('|',$otracking);
		if (stristr($tracking_data[1],'Schenker'))
			{
				return '<span><a href="https://eschenker.dbschenker.com/nges-portal/public/fr-FR_FR/#!/tracking/customer-search?refType=aam&refNumber='.substr($tracking_data[1], 12).'&transportMode=LAND" target="_blank">'.substr($tracking_data[1], 12).'</a></span>';
			}
		else
		{
			return '<a href="'.str_replace('@', $tracking_data[1], $tracking_data[0]).'" target="_blank">'.$tracking_data[1].'</a>';
		}			
	}

Si vous avez des questions, je pourrais vous répondre.

Je passe le sujet en résolu.

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