Jump to content

facture avec le même numéro + problème getOrderByCartId => page order-confirmation.php PS 1.2.5


Recommended Posts

Bonjour

Sur la version 1.2.5, j'ai trouvé quelques petits trucs bizarre :

1/ des commandes différentes peuvent porter le même numéro de factures, si les commandes sont effectuées simultanément par 2 clients. (je n'aime pas du tout la validation du numéro de facture par la table _configuration, mais il y a peut-être une raison qui m'échappe). Le plus simple (à mon humble avis) étant de récupere le MAX(invoice_number) de la table _orders.
(la boutique génère entre 50 et 100 ventes par jour)

2/ lors d'un paiement paypal, en cas de validation très rapide du client, la fonction getOrderByCartId n'arrive pas à retourner un id_order, probablement parce que le retour à la boutique revient avant la mise à jour de la table _orders.

Il faudra y penser pour la version 1.3 (je n'ai pas eu le temps de regarder le fonctionnement)

Pour ceux qui ont le même problème que moi :

1/
Avant de passer à la suite, je vérifie que l'id de la commande est unique dans la table _orders.
S'il ne l'est pas, j'augmente ce numéro (par un nombre variable entre 5 et 15, pour éviter que ceux qui commandent en même aient tjs le même numéro - à mon avis inutile, mais bon, impossible à reproduire en test).
Je mets la table _configuration à jour en utilisant la fonction disponible (Configuration::updateValue('PS_INVOICE_NUMBER', $new_invoice_number + 1);)
Et mes problèmes de factures avec les mêmes numéros est résolu.

2/
Si je n'ai pas l'id-order retourné, je boucle jusqu'à l'obtenir, avec un sleep(2). Evidemment, je sors de la boucle après 10 essais, sinon, c'est trop long...
De façon étonnante, l'utilisation de la fonction getOrderByCartId ne marche pas dans la boucle (requete en mémoire ?), mais recopier la requête dans le code marche impeccablement.

Voilà, la méthode pour ceux qui auraient les mêmes problèmes.
Je peux bien sûr mettre le code, si certains sont intéressés.

Share this post


Link to post
Share on other sites
  • 3 weeks later...

Bonjour pppplus

Dans le point n1, vous dites <<< des commandes différentes peuvent porter le même numéro de factures, si les commandes sont effectuées simultanément par 2 clients. (je n’aime pas du tout la validation du numéro de facture par la table _configuration, mais il y a peut-être une raison qui m‘échappe). Le plus simple (à mon humble avis) étant de récupere le MAX de la table _orders.>>>

Logiquement le numéro de facture de facture n'est défini qu'au moment où la commande est payée, et non pas au moment où la commande est créée. Est-ce que je me trompe ?

Pour éviter d'avoir le même numéro de facture (champ INVOICE_NUMBER dans la table _ORDERS), peut être que l'on devrait indiquer le type UNIQUE à ce champ. Qu'en pensez-vous ?

Merci
Thierry

Share this post


Link to post
Share on other sites

Oui, en effet, le numéro de facture est généré lors du paiement. Sachant que le paiement en ligne est presque toujours immédiat (paypal ou cb), j'ai fait un raccourci en parlant de commande au lieu de commande payée.

Modifier le champ INVOICE_NUMBER en UNIQUE ne fera que générer une erreur mysql. Car le soft envoie un ID de facture déjà existant.

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