Jump to content

(resolu) les statuts de commandes


thierry_02

Recommended Posts

J'ai donc bien renomé le statut En cours de livraison par expédie mes pour effacé le statut livré je ne peut pas il marque : (1 erreur
Pour des raisons de sécurité, vous ne pouvez pas supprimer les statuts de commande par défaut ) Je ne sais pas si il peut provoqué des bugs??je vais faire des essais.

Link to comment
Share on other sites

il faut indiquer une url de tracking pour le lien transporteur sur la fiche transporteur.
La case pour entrer le n colissimo apparait lorsque la commande est en statut "en cours de livraison" ou "envoyé" si tu as modifié.
Le truc qui n'est pas pratique car le numero n'est pas envoyé dans l'email au client au changement de statut, c'est un defaut de Prestashop deja signalé

Link to comment
Share on other sites

Pourtant ça marche.

Mais peut-être que tu avais déjà affecté le statut "En cours de livraison" à cette commande avant de spécifier l'URL de tracking.

Dans ce cas il semble que si tu enlèves ce statut et le remets, ça ne marche pas.

Essaye sur une nouvelle commande.

3865_Rb4RXGiSxZSHE5qmOUFv_t

Link to comment
Share on other sites

  • 4 months later...

Ce n'est pas très pratique de ne pouvoir saisir le numéro de suivi qu'après avoir modifié le statut de la commande. Du coup le client a reçu le mail sans le numéro.

J'ai contourné en permettant la saisie du numéro dès le statut précédent (en cours de préparation). Ainsi quand je passe une commande à "en cours de livraison" (j'ai modifié aussi cet intitulé) le client reçoit le mail de changement avec le numéro de suivi. Ce n'est pas idéal car c'est une modification du code qui posera peut-être souci lors de la prochaine mise à jour, mais je n'avais pas d'autre choix dans l'immédiat.

Attention ceci n'est pas validé par l'équipe mais semble fonctionner pour moi jusqu'à maintenant.

Remplacer

/* Display shipping number field */
if ($carrier->url AND $currentState->id == _PS_OS_SHIPPING)



par

/* Display shipping number field */
if ($carrier->url AND ($currentState->id == _PS_OS_SHIPPING_ OR $currentState->id == _PS_OS_PREPARATION_))



Rodolphe

Link to comment
Share on other sites

  • 1 year later...

Bonjour,

effectivement, ca parait plus logique de saisir le numéro de tracking dans "en cours de préparation" et de l'envoyer au client dans le mail "en cours de livraison"


Rodolphe, As tu finalement gardé ta solution, pas d'effet indésirable a signaler ?

Merci pour le partage.

Link to comment
Share on other sites

Fichier AdminOrders.php est diffèrent sur la version 1.3.1.1

Voici le code d'origine :

    /* Display shipping number field  */
           if ($carrier->url && $order->hasBeenShipped()) 
            echo '
               <form action="'.$currentIndex.'&view;'.$this->table.'&token;='.$this->token.'" method="post" style="margin-top:10px;">
                   <input type="text" name="shipping_number" value="'. $order->shipping_number.'" />
                   <input type="hidden" name="id_order" value="'.$order->id.'" />
                   <input type="submit" name="submitShippingNumber" value="'.$this->l('Set shipping number').'" class="button" />
               </form>';
           echo '
';



J'ai essayé de remplacer la première ligne par ton script, visiblement ca ne fonctionne pas.

Link to comment
Share on other sites

J’ai finalement essayé modifier le AdminOrders.php, sachant que je ne suis pas développeur…

J’ai remplacé le code

/* Display shipping number field  */
           if ($carrier->url && $order->hasBeenShipped()) 


Par ceci

/

* Display shipping number field  */
if ($carrier->url && $order->hasBeenPaid())



Ensuite il y a également un control à modifier vers la ligne 68 :

        /* Update shipping number */
       if (Tools::isSubmit('submitShippingNumber') AND ($id_order = intval(Tools::getValue('id_order'))) AND Validate::isLoadedObject($order = new Order($id_order)))
       {
           if ($this->tabAccess['edit'] === '1')
           {
               if (!$order->hasBeenShipped ())
                   die(Tools::displayError('The shipping number can only be set once the order has been shipped!'));
               $_GET['view'.$this->table] = true;



A remplacer par :

/* Update shipping number */
       if (Tools::isSubmit('submitShippingNumber') AND ($id_order = intval(Tools::getValue('id_order'))) AND Validate::isLoadedObject($order = new Order($id_order)))
       {
           if ($this->tabAccess['edit'] === '1')
           {
               if (!$order->hasBeenPaid())
                   die(Tools::displayError('The shipping number can only be set once the order has been shipped!'));
               $_GET['view'.$this->table] = true;



Finalement, j’ai juste remplacé hasBeenShipped par hasBeenPaid.

De mon coté, ça fonctionne visiblement correctement, mais rien n’est garanti :D

Il faut ensuite modifier le le template du mail shipped.html pour y insérer le numero de trancking en rajoutant ce genre de lignes :

    

               Vous pouvez suivre l'avancement de la livraison à l'adresse suivante : {followup}

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