Jump to content

Gestion des retours produits


Recommended Posts

Bonsoir à tous.

Quand un client se connecte à son compte sur la boutique et qu'il se rende sur la page des retours de produits.
Là on voit un tableau avec des colonnes :
Retour | Commande | État du retour | Date d'émission | Étiquette de retour

J'ai une question au sujet de "l'Étiquette de retour".
A quoi correspond la dernière colonne Étiquette de retour, et à quel moment on voit des infos dans cette colonnes ?
J'ai fait des tests de retours en Fo et géré en BO, cette colonne ne se rempli d'aucune info.

D'autre part, en admettant que le client ait généré un retour. En BO, dans le menu Commandes/Retours (la gestion des retours), lorsqu'on clique sur le numéro du retour, on obtient la page du retour des produits et il y a un tableau avec la Liste des articles contenus dans le colis. En action (au bout de la ligne) on peut apparemment supprimer le produit. Mais cela ne marche pas, on a une erreur : Vous devez avoir au moins un article.
Comment fonctionne cette suppression ?

Salutations.

Link to comment
Share on other sites

Bonjour,

Tout comme vous, j'essaie en ce moment de me faire la main avec tout ce qui concerne les retours etc...
J'ai fait quelques tests, en fait la colonne "Etiquette de retour" se compléte au moment ou vous passez le statu à l'état suivant (Attente du colis) en B.O.
Je ne sais pas vous mais de mon côté, il m'affiche l'icône pdf avec "imprimer". J'aurais préféré avoir le numéro de retour qui y est à l'intérieur.
En espérant avoir pu vous aider sur ce point.
Cordialement

Link to comment
Share on other sites

Bonjour,
Merci pour votre réponse qui m'aide déjà pas mal.
Vous pouvez afficher le numéro de retour de la manière suivante.
A la place de :

{l s='Print out'}


vous mettez

{l s='RET'}{$return.id_order_return|string_format:"d"}



Cela se passe dans le fichier themes/NOMDUTHEME/order-follow.tpl

Je constate quand même que si le client ne vas pas voir sur la page retour, il n'aura pas cette information.
Le mail qui lui est envoyé en cas de retour signale juste le statut du retour. Il risque de passer à coté de l'info sur le retour.

Il faudrait que le mail qu'il recoit indique les infos de retour ou l'invite à se rendre sur la page des retour en BO.
Le fichier mail : order_return_state.html ne peut pas être personnalisé pour cet état de retour car il est commun à tous les statuts de retour. Ca cause quand même un soucis je trouve.

Concernant la suppression dans le tableau, vous avez trouvé quelque chose ?

Link to comment
Share on other sites

Bonjour,

Je vous remercie d'avoir bien voulu m'éclairer sur ce point.
Je suis tout à fait d'accord pour ce qui est du mail et plus particulièrement des infos à y ajouter.
Je n'ai pas encore pu tester les mail, j'ai toujours un problème de conf en local.

J'ai pu tester votre code pour avoir le numéro de retour à la place de "imprimer", par contre, il m'affiche RETd.
J'ai utilisé le debug pour voir, apparemment on a pas accès à $return.id_order_return.
Ca fonctionne de votre côté ? du mien, je continue d'y regarder.

J'ai testé aussi le fait de pouvoir supprimer un article dans la partie "Retours" du B.O
Je ne suis pas certain mais je pense qu'on doit l'utiliser quand le client souhaite renvoyer plusieurs articles.
Si certains articles ne respecte pas vos conditions de retour, vous pouvez les supprimer grâce a cette icone.
Ce qui permet d'éviter au client de devoir refaire une demande de retour, on continue avec celui la, uniquement pour les articles qui respectent vos conditions.
C'est pour ça à mon avis que lorsque le retour ne comporte qu'un seul article, on ne peut pas supprimer.
Dans ce cas, il faut supprimer le retour directement car il n'a plus d'intérêt si il ne contient pas d'article.

Link to comment
Share on other sites

Bonjour,
Votre remarque est pertinente concernant le retour. Je vais approfondir de ce coté la.
Je constate que le code rentré a été tronqué par le système du forum.
avant d"} il faut mettre % 06
entre % et 06 il n'y a pas d'espace, soit :

{l s='RET'}{$return.id_order_return|string_format:"% 06d"}



Je pense avoir trouvé une solution pour l'envoi des mails personnalisés de retour de produits en fonction du statu du retour. Je teste cela et je poste ensuite si c'est bon.
PS: Quel est votre problème de conf en local ?

Link to comment
Share on other sites

Bonjour,

Sincèrement désolé pour le temps de réponse, je me suis encore laissé débordé.

En fait, l'envoi de mail en local ne fonctionne toujours pas. J'avais essayé de le configurer aussi bien avec la fonction mail() qu'avec un compte gmail, rien à faire. Je vais y plancher d'ici peu pour pouvoir tester les mails avec vous ;)

Je vous remercie pour le code, il fonctionne impec ;)
Par contre, je me propose de vous exposer ce que j'ai pu constater pendant mes tests.
Pourriez-vous me dire ce que vous en pensez et ce qu'il en est de votre côté ?

J'ai donc remplacé le code pour affiché le numéro de retour.
J'avais dans le tableau :
N° de retour : 000002
N°de commande : 000003
Etiquette de retour : RET00002
J'ai affiché le pdf pour vérifier l'étiquette de retour, sur le pdf RET000003 par contre dans le tableau RET000002.
Si j'ai bien compris, le numéro de retour reprends en fait le numéro de commande.
J'ai donc remplacé la variable $return.id_order_return par $return.id_order ce qui m'a permis d'avoir RET000003.
Avez-vous rencontré le même problème ?

Maintenant, je m'interroge sur l'utilité de la colonne N°de retour dans le tableau.
Pour rester cohérent, je vais devoir la variable pour afficher le bon numéro de retour à savoir RET000003.
Au final, j'aurai 3fois la même information dans mon tableau donc je me demande si je ne vais pas afficher l'id du retour tel qu'il est dans la base de données.
Le client saura que c'est le 2ème retour qu'il fait, ca n'a pas grande utilité.
Ou peut être supprimer une des colonnes ;)

Est-ce que vous avez pu tester l'envoi de mails personnalisés que vous aviez commencé à mettre en place ?
Encore merci
Cordialement

Link to comment
Share on other sites

Bonsoir,

En fait ce que vous expliquez est juste mais n'est pas un problème réel. Étant donné que vous voulez afficher le numéro de l'étiquette de retour, il faut effectivement changer la variable comme vous l'avez fait. Au départ je vous avais donné la solution pour afficher le numéro de retour et non le numéro de l'étiquette de retour.
Vous n'avez pas 3 fois la même info ! Puisque l'étiquette correspond à RET+le numéro de la commande : RET000003 et 000003 ce n'est pas pareil !
Et puis le numéro de retour n'est pas le numéro de la commande. Ca peut arriver par exemple que votre 10me retour correspond a la commande 10, mais ca reste deux choses différentes.

Link to comment
Share on other sites

Pour ce qui concerne l'envoi de mail par rapport au statut de retour, j'ai modifié le fichier tabs\AdminReturn de la mainière suivante :

Dans la fonction public function postProcess :

après :

        elseif (Tools::isSubmit('submitAddorder_return'))
       {
           if ($this->tabAccess['edit'] === '1')
           {
               if (($id_order_return = intval(Tools::getValue('id_order_return'))) AND Validate::isUnsignedId($id_order_return))
               {
                   $orderReturn = new OrderReturn($id_order_return);
                   $customer = new Customer($orderReturn->id_customer);
                   $orderReturn->state = intval(Tools::getValue('state'));
                   if ($orderReturn->save())
                   {



j'ai mis des conditions en fonction des statuts :

                        if ($orderReturn->state === 1)
                       {
                           $orderReturnState = new OrderReturnState($orderReturn->state);
                           $vars = array(
                           '{lastname}' => $customer->lastname,
                           '{firstname}' => $customer->firstname,
                           '{id_order_return}' => $id_order_return,
                           '{state_order_return}' => $orderReturnState->name[intval(Configuration::get('PS_LANG_DEFAULT'))]);
                           Mail::Send(intval($cookie->id_lang), 'order_return_state1', html_entity_decode($this->l('Your order return state has changed'), ENT_NOQUOTES, 'UTF-8'), $vars, $customer->email, $customer->firstname.' '.$customer->lastname);
                           Tools::redirectAdmin($currentIndex.'&conf=4&token;='.$this->token);
                       }
                       if ($orderReturn->state === 2)
                       {
                           $orderReturnState = new OrderReturnState($orderReturn->state);
                           $vars = array(
                           '{lastname}' => $customer->lastname,
                           '{firstname}' => $customer->firstname,
                           '{id_order_return}' => $id_order_return,
                           '{state_order_return}' => $orderReturnState->name[intval(Configuration::get('PS_LANG_DEFAULT'))]);
                           Mail::Send(intval($cookie->id_lang), 'order_return_state2', html_entity_decode($this->l('Your order return state has changed'), ENT_NOQUOTES, 'UTF-8'), $vars, $customer->email, $customer->firstname.' '.$customer->lastname);
                           Tools::redirectAdmin($currentIndex.'&conf=4&token;='.$this->token);
                       }
                       if ($orderReturn->state === 3)
                       {
                           $orderReturnState = new OrderReturnState($orderReturn->state);
                           $vars = array(
                           '{lastname}' => $customer->lastname,
                           '{firstname}' => $customer->firstname,
                           '{id_order_return}' => $id_order_return,
                           '{state_order_return}' => $orderReturnState->name[intval(Configuration::get('PS_LANG_DEFAULT'))]);
                           Mail::Send(intval($cookie->id_lang), 'order_return_state3', html_entity_decode($this->l('Your order return state has changed'), ENT_NOQUOTES, 'UTF-8'), $vars, $customer->email, $customer->firstname.' '.$customer->lastname);
                           Tools::redirectAdmin($currentIndex.'&conf=4&token;='.$this->token);
                       }
                       if ($orderReturn->state === 4)
                       {
                           $orderReturnState = new OrderReturnState($orderReturn->state);
                           $vars = array(
                           '{lastname}' => $customer->lastname,
                           '{firstname}' => $customer->firstname,
                           '{id_order_return}' => $id_order_return,
                           '{state_order_return}' => $orderReturnState->name[intval(Configuration::get('PS_LANG_DEFAULT'))]);
                           Mail::Send(intval($cookie->id_lang), 'order_return_state4', html_entity_decode($this->l('Your order return state has changed'), ENT_NOQUOTES, 'UTF-8'), $vars, $customer->email, $customer->firstname.' '.$customer->lastname);
                           Tools::redirectAdmin($currentIndex.'&conf=4&token;='.$this->token);
                       }
                       if ($orderReturn->state === 5)
                       {
                           $orderReturnState = new OrderReturnState($orderReturn->state);
                           $vars = array(
                           '{lastname}' => $customer->lastname,
                           '{firstname}' => $customer->firstname,
                           '{id_order_return}' => $id_order_return,
                           '{state_order_return}' => $orderReturnState->name[intval(Configuration::get('PS_LANG_DEFAULT'))]);
                           Mail::Send(intval($cookie->id_lang), 'order_return_state5', html_entity_decode($this->l('Your order return state has changed'), ENT_NOQUOTES, 'UTF-8'), $vars, $customer->email, $customer->firstname.' '.$customer->lastname);
                           Tools::redirectAdmin($currentIndex.'&conf=4&token;='.$this->token);
                       }



Attention le code est tronqué par le forum (j'ai mis des espace un peu partout pour l'afficher ci-dessous :

Tools::redirectAdmin($currentIndex.' & conf = 4 & token =' . $this -> token);

  • Like 1
Link to comment
Share on other sites

Pour chaque statut (il y en a 5)

 if ($orderReturn->state === 5)


un mail personnalisé est envoyé :

Mail::Send(intval($cookie->id_lang), 'order_return_state5', html_entity_decode($this->l('Your order return state has changed'), ENT_NOQUOTES, 'UTF-8'), $vars, $customer->email, $customer->firstname.' '.$customer->lastname);



Pour simplifier dans le code j'ai incrémenté le nom du template mail avec des numéros ('order_return_state1...à 5). On peut nommer le fichier template comme on veut et bien entendu, il faut les créer et les placer dans le dossier mails. Ainsi on peut personnaliser chacun des emails en fonction du statut et y mettre le contenu qu'on veut.

Cela marche bien sur PS 1.2.5.0

  • Like 1
Link to comment
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...