Jump to content
  • 0
THX9999

[Résolu] Modification référence commande

Question

Bonjour,

 

Je bascule mon site qui fonctionne depuis 2006 sur oScommerce vers Prestashop 1.5 ; je travaille depuis plusieurs mois sur cette nouvelle version prometteuse et compte d'ici quelque temps basculer définitivement sur cette 1.5.

 

Dans l'ensemble j'arrive à m'en sortir, surtout grâce aux nombreuses réponses disponibles sur ce forum très actif.

 

Malgré tout je n'arrive pas à trouver la solution pour remplacer les références commande de type "TRKUKRKML" par un chiffre de type "15648645".

 

Si quelqu'un à la solution, merci d'avance.

 

Cordialement.

Olivier.

Edited by THX9999

Share this post


Link to post
Share on other sites

49 answers to this question

Recommended Posts

  • 0

Cela se passe dans la classe Order, voici la méthode:

/**
 * Gennerate a unique reference for orders generated with the same cart id
 * This references, is usefull for check payment
 *
 * @return String
 */
public static function generateReference()
{
 return strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));
}

 

Il est donc possible de faire un override de la classe pour lui demander de ne mettre que du numérique.

 

Attention, seul 9 caractères autorisés: (sauf si modification de la base de données !)

Share this post


Link to post
Share on other sites
  • 0

bonjour,

 

comment faut-il modifier cette partie pour qu'on retrouve bien les références commande en numérique comme avant la mise à jour vers la 1.5.2

 

j'ai bien lu le message au dessus mais ... jene sais pas comment faire

 

merci d'avance

Edited by Foxalone

Share this post


Link to post
Share on other sites
  • 0

Foxalone,

 

Tu vas dans le dossier "classes", puis dans le dossier "order", tu ouvre le fichier order.php et tu trouves la ligne (autour de 1370) :

 

return strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));

 

A la place tu mets :

 

return strtoupper(Tools::passwdGen(9, 'NUMERIC'));

 

et voilà...

Edited by THX9999

Share this post


Link to post
Share on other sites
  • 0

Foxalone,

 

Tu vas dans le dossier "classes", puis dans le dossier "order", tu ouvre le fichier order.php et tu trouves la ligne (autour de 1370) :

 

return strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));

 

A la place tu mets :

 

return strtoupper(Tools::passwdGen(9, 'NUMERIC'));

 

et voilà...

 

merci pour ton retour rapide

 

oui ca je l'avais bien fait (ouf ça me rassure un peu ;))

 

mais je ne retrouve pas les références comme avant (avec les numéros 000000805)

je retrouve bine des références numériques mais désordonnées.

 

 

avant j'avais :

 

id 805 références : 000000805

et maintenant j'ai

id811 références : 378047802

 

c'est peut-être pas important mais cela me permet de bien me retrouver au niveau des commandes, facture etc...

Edited by Foxalone

Share this post


Link to post
Share on other sites
  • 0

bonjour,

 

comment est-il possible de faire comme indiqué en commentaire : "

 

* Gennerate a unique reference for orders generated with the same cart id * This references, is usefull for check payment

 

 

l'indication " @return String" doit permettre cela non ?

 

a bientot

Share this post


Link to post
Share on other sites
  • 0

Salut,

 

Foxalone >> As-tu pu avancer et trouver une solution pour revenir à un numéro de commande en numérique et incrémentées ?

 

Car le nouveau mode de numérotation me casse superbement les pieds...

Share this post


Link to post
Share on other sites
  • 0

Bonjour à tous,

 

Quelqu'un a-t-il trouvé comment mettre les références eu format id 805 références : 000000805 et non 4568552452 ??

C'est vrai que c'est une nouveauté que je n'ai toujours pas compris...

Edited by stephmrls

Share this post


Link to post
Share on other sites
  • 0

Je suis moi-même intéressé.

je suis sur PS1.5.3.

Spécialement pour le suivi invité, il est préferable que le client insère le numéro de la commande qu'il a reçu lors de la confirmation de sa commande, alors qu'en ce moment on lui demande d'ecrire la référence du type "TRKUKRKML".

 

Donc,

- soit comme dans la version PS 1.4.9 mettre le numéro de commande pour le suivi invité.

- soit faire en sorte que la référence = numéro de commande.

 

Mais comment faire ?

Merci de votre aide.

Share this post


Link to post
Share on other sites
  • 0

Re bonjour,

A force de fouiner depuis hier là dessus (c'est la raison, force de désespoir, que j'avais posté mon post précédent)... je viens de trouver ceci ce module gratuit.

http://www.prestashop.com/forums/topic/218257-module-change-order-reference-using-order-id-andor-cart-id/

 

Ca marche pour moi et ça répond à mon souci.

Share this post


Link to post
Share on other sites
  • 0

Merci pour le topic, je viens d'installer le module recommandé par @A1TH

Re bonjour,

A force de fouiner depuis hier là dessus (c'est la raison, force de désespoir, que j'avais posté mon post précédent)... je viens de trouver ceci ce module gratuit.

http://www.prestasho...-andor-cart-id/

 

Ca marche pour moi et ça répond à mon souci.

Je viens d'installer le module chez moi ça fonctionne aussi

Share this post


Link to post
Share on other sites
  • 0

Moi j'ai tout simplement remplacé dans l'historique client et dans l'admin le numéro de 9 lettres aléatoires (très chiant pour retrouver la commande d'un client que vous avez au téléphone.. B comme bernard, F comme françoise...) par l'id de commande enregistré en BDD.

 

L'id de la commande en BDD est, comme pour toutes ce genre de tables, en auto_increment donc aucun doublon possible entre les commandes. De plus, ils sont ordonés par ordre croissant donc très facile de retrouver les commandes comme cela :)

 

Il faut donc remplacer dans les fichiers .tpl {Order::getUniqReferenceOf($order.id_order)} par la variable $order.id_order.

Pour l'affichage style n°000851 il faut mettre dans le .tpl {l s='#'}{$order.id_order|string_format:"%06d"}

Edited by lambi521

Share this post


Link to post
Share on other sites
  • 0

Bonjour.

 

Sinon il suffit d'override la classe Order.php et de réécrire la méthode generateReference en utilisant la fonction php strpad avec l'id de la commande.

Ton message est rés pertinent c'est exactement celas qu'il faudrai faire.

Comment tu réalise ca pour des newwbie comme moi. Aurai tu un bout de code ?

 

Merci d'avance

Share this post


Link to post
Share on other sites
  • 0

Foxalone,

 

Tu vas dans le dossier "classes", puis dans le dossier "order", tu ouvre le fichier order.php et tu trouves la ligne (autour de 1370) :

 

return strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));

 

A la place tu mets :

 

return strtoupper(Tools::passwdGen(9, 'NUMERIC'));

 

et voilà...

 

Merci

Share this post


Link to post
Share on other sites
  • 0

Merci A1TH, je viens de tester le module et ça fonctionne aussi, ouf !

On se demande quand même par quel processus l'équipe Prestashop arrive à ce genre de modification tordue d'une version à l'autre...

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

 

Je fais actuellement des essais sur la version 1.6 de Presta.  Super travail des développeurs mais ….. POURQUOI des lettres à la place des chiffres pour les confirmations de commande ???  

Des numéros de commande à suivre du style: 5001, 5002, 5003 est plus logique et plus facile à gérer que des lettres aléatoires  …. FLROEIZSE , LOPRKELED, …  

 

Je n’arrive pas à comprendre l’intérêt de cette modification.

Il faut espérer que pour la version 1.7, les confirmations de commandes ne vont pas ressembler à ça : x+&@≥€Ø£2F

 

LITERIE SHOP

www.literieshop.com

Share this post


Link to post
Share on other sites
  • 0

Bonjour.

 

Sinon il suffit d'override la classe Order.php et de réécrire la méthode generateReference en utilisant la fonction php strpad avec l'id de la commande.

 

Bonjour,

Je déterre un sujet un peu ancien car je cherche et je ne comprends pas bien.

 

Pouvez vous expliquer en détail ce qu'il faut faire pour un novice?

 

Merci d'avance

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

 

Oui, bien dommage qu'il faille passer par un module externe ou une modification de fichier pour revenir à cette numérotation classique de commande ....

 

Cordialement

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

En fait mon problème n'est toujours pas résolu, en effet, le module permet de changer la référence des commandes mais je reçois toujours les mails de confirmations avec la référence en lettre. les clients eux, reçoivent bien les confirmations et les factures avec la bonne référence.

c'est uniquement sur les mails d'alerte que la référence est erronée.

 

Si quelqu'un pouvait m'aider.

Merci

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

 

ouai perso je fais un site pour quelqu'un et le mail avec l'ancienne référence est très rédhibitoire...

Share this post


Link to post
Share on other sites
  • 0

Moi c'est l'inverse, le mail que le marchand reçoit est correct mais celui du clients est en mode alpha. Cela est devenu comme ça depuis la mise un jour d'un module, je sais plus lequel. Est ce que quelqu'un a une solution ?

 

J'aimerais afficher la référence comme celà 36320 (id du produit étant 000036320).

 

Je ne retrouve même pas les fichiers dans lequel cela se passe donc si quelqu'un je suis preneur.

 

Merci d'avance

Share this post


Link to post
Share on other sites
  • 0

Bonjour

En effet pas simple à gérer des commandes IZQSCAYLEH .... surtout pour les classer par ordre !!

Avant c'était simple : 1906, 1907, 1908, etc ... On découvre plein de choses originales avec la 1.6 !!!

 

Question : le module cité plus haut est-il comptatible avec la 1.6 ?

Merci

 

(Et merci aux dévelloppeurs de Prestashop de nous pondre de telles inepties !)

Share this post


Link to post
Share on other sites
  • 0

j'ai testé sur une version 1.6.08 ça fonctionne.

je n'ai pas encore testé sur une multiboutique

je vais voir ce que ça donne et si on peut avoir in ID par boutique ex : B10000052 pour la boutique 1 et B20000053 pour la boutique 2

a+

Share this post


Link to post
Share on other sites
  • 0

OK ...

Je suis en phase de test sur un Prestashop d'essai et visiblement cela fonctionne.

J'ai également contacté le développeur en Hollande qui m'a assuré du bon fonctionnement de son module.

Leur site : http://prestadev.nl/nl/gratis-modules/

Tout cela m'a l'air sérieux

 

Donc au diable ces fichus numéros en XSFJDF !!!

 

Face à la gène occasionnée par cette numérotation alphabétique, Prestashop aurait pu tout de même prévoir dans les préférences commandes, une possibilité permettant d'opter entre la numérotation numérique ou bien alphabétique pour ceux qui le souhaitent !

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

 

J'ai essayé de commander (pour le télécharger) le module gratuit indiqué ci-dessus.

Malheureusement, pas moyen de créer un compte client, leur site semble avoir un problème et donc pas moyen de récupérer ce module.

Je leur ai envoyé un mot pour signaler la difficulté mais pas de réponse pour l'instant.

Le problème est qu'on ne peut renseigner des informations de contact complètes (le formulaire est incomplet) et donc on ne peut terminer la commande et télécharger le module ...

Share this post


Link to post
Share on other sites
  • 0

Moi j'ai tout simplement remplacé dans l'historique client et dans l'admin le numéro de 9 lettres aléatoires (très chiant pour retrouver la commande d'un client que vous avez au téléphone.. B comme bernard, F comme françoise...) par l'id de commande enregistré en BDD.

 

L'id de la commande en BDD est, comme pour toutes ce genre de tables, en auto_increment donc aucun doublon possible entre les commandes. De plus, ils sont ordonés par ordre croissant donc très facile de retrouver les commandes comme cela :)

 

Il faut donc remplacer dans les fichiers .tpl {Order::getUniqReferenceOf($order.id_order)} par la variable $order.id_order.

Pour l'affichage style n°000851 il faut mettre dans le .tpl {l s='#'}{$order.id_order|string_format:"%06d"}

Share this post


Link to post
Share on other sites
  • 0

Salut,

Je suis parvenu à télécharger le module. Leur site merdait complètement sous Firefox ou Opera (pourtant à jour) et je suis revenu à IE pour pouvoir passer la commande gratuite et télécharger le module.

Installé sur mon site de test sous 1.6.0.9, le module semble fonctionner tout a fait correctement.

Les traductions en Français sont un peu "Google like" mais à part ça c'est impecc.

Share this post


Link to post
Share on other sites
  • 0
Cette sordide histoire de numérotation est une réponse au problème de confidentialité des activités numériques des sites.

 

En clair je suis le concurrent d'un site (ou une administration ? ;), je passe une petite commande régulièrement sur ce site et je regarde alors l'évolution du numéro de commande.

J+0 : 000170

J+10 : 000182

Donc je suppose 12 commandes en 10 jours.

 

Après Prestashop aurait pus faire un petit bouton :

"Je préfère les codes séquentiels pour mes commandes même si cela donne des indications sur mon activité"

Edited by bunam

Share this post


Link to post
Share on other sites
  • 0

Salut,

 

Oui j'ai déjà lu cette explication, à mon avis elle ne tiens pas la route: les factures restent avec une numérotation incrémentale...

Donc le concurrent a toujours l'information qu'il recherche !

 

Et donc ce système de numérotation de commande casse les pieds a (presque) tout le monde pour rien...

Share this post


Link to post
Share on other sites
  • 0

Tout à fait ! avec le numéro de facture, il est possible de suivre l'évolution des commandes !

Donc cette numérotation FKLZMGHAKP  NE SERT  A RIEN !!!

 

Génial pour classer les fiches commandes !

Genial pour entrer les numéros de commandes dans Expeditor !

Genial pour suivre les commandes en cours

etc ... etc ...

 

Merci à Prestashop de nous pondre de telles aberrations et surtout laisser toute la communauté avec ce problème et ne pas écouter ses utilisateurs !

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

 

Est-ce que quelqu'un aurait pu récupérer le module en question?

Le site NL est fermé...

 

Je suis très intéressé par ce module qui simplifierais pas mal de chose.

 

Merci

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

B2B, une autre approche : j'aimerais mettre la référence du client (son numéro de commande) dans ce champs... existe-il un module pour cela ?

Cette référence, doit-elle être impérativement unique ? (pas pour moi, je me retrouverais - mais pour PS ? )

Edited by 7m7g7

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

Est-ce que ceci peut aider

modrefchange.zip

Attention, je n'ai pas testé cette version

A+

J'ai trouvé celui-ci qui à 2 mois à l'heure actuelle alors que ta version A1TH à apparemment 1 an.

 

https://www.dropbox.com/s/7kkhtgkrpq4h755/modrefchange.zip

 

Si ça peut servir, je vais voir pour la tester. 

Share this post


Link to post
Share on other sites
  • 0

Bonjour, 

 

J'utilise ce module qui fonctionne correctement. J'ai juste un souci avec le préfixe de l'ID. Je veux intégrer l'année de la commande. Je précise %Y dans la config comme indiqué. L'ID de la commande commence alors par %Y2014 et non pas juste 2014...

Quelqu'un aurait une solution ? Merci !

Share this post


Link to post
Share on other sites
  • 0

J'ai malheureusement le même problème, le "code " fonctionne bien, il affiche le résultat correspondant mais le code apparaît en plus !

 

Comme toi :(

Share this post


Link to post
Share on other sites
  • 0

Ouais c'est ballot ! Je remarque sur la facture avoir aussi le numéro de facture précédé de #. Peut-être que cela vient du paramétrage de la facture et non pas du module ????

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

 

Pour ceux qui veulent rappeler l'id_order à la place de la référence, modifier la classe Order.php comme ci-dessous :

 

public static function generateReference()
{
/*
*return strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));
*/
 
 
        $query = new DbQuery();
        $query->select('MAX(id_order) as max');
        $query->from('orders');
        $query->where('id_cart' > 0);
        $order = Db::getInstance()->getRow($query);
        $reference = $order['max'] +1 ;
        return sprintf('CMD%06d', $reference);
     
 
}
Edited by zoekkoez

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

Perso je cherche une solution pour donner quelque chose comme mon système de numérotation de factures pour mon activité d'installateur : CCCC-###-YYYY avec CCCC les 4 premières lettres du nom du client en majuscules ### un incrément de 001 à 999 en fonction du reste du numéro et YYYY l'année de facture. En gros si Mr TOTO en est à sa 4è facture de l'année il recevra le n° TOTO-004-2015. Bien sure si un Mr TOTORO a commandé 7 fois et que Mr TOTO fait sa 4è commande on en sera à TOTO-011-2015. Chaque année l'incrément se remet à 0.  Est-il possible de faire ainsi? (je sais que ce n'est pas facile, j'ai l'avantage que le volume installateur n'est pas de 500 commandes chaque année et que l'incrément est fait manuellement, passer cela en informatique risque de ne pas être aussi simple).

Merci d'avance pour vos réponses.

PS : avec un numéro comme celui là on ne risque pas d'avoir des clients qui jugent le niveau de commande sur le site...

Share this post


Link to post
Share on other sites
  • 0

Bonjour à toutes et à tous.

 

 

Je viens d'installer le module VENTE FLASH PRO dans la version de prestashop 1.6

il m'est impossible de le paramétrer .

Comment résoudre ce problème: [PrestaShop] Erreur fatale dans le fichier de module: /htdocs/fret/modules/flashsalespro/flashsalespro.php: Vous ne pouvez pas passer le paramètre 13 par référence

 

merci

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

Comment overrider la solution de zoekkoez :

 

Bonjour,

 

Pour ceux qui veulent rappeler l'id_order à la place de la référence, modifier la classe Order.php comme ci-dessous :

 

public static function generateReference()
{
/*
*return strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));
*/
 
 
        $query = new DbQuery();
        $query->select('MAX(id_order) as max');
        $query->from('orders');
        $query->where('id_cart' > 0);
        $order = Db::getInstance()->getRow($query);
        $reference = $order['max'] +1 ;
        return sprintf('CMD%06d', $reference);
     
 

}

 

Cela ne marche pas. Je voudrais éviter un écrasement lors des prochaines maj.

 

Avez-vous une idée du problème ?

 

Merci

Share this post


Link to post
Share on other sites
  • 0

https://www.prestashop.com/forums/topic/548800-free-module-custom-order-reference/?p=2383260

 

il y a sinon ce merveilleux module, à tester évidemment et voir si jamais il y a des soucis, puis un autre module encore une fois GRATUIT qui est celui du post suivant:

 

https://www.prestashop.com/forums/topic/433999-free-module-order-reference-change-module/?p=2017126

 

et encore un:

https://www.prestashop.com/forums/topic/495065-free-module-numeric-order-reference/?p=2220916

 

voilà

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

×

Important Information

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