[email protected] Posted January 18, 2018 Share Posted January 18, 2018 Bonjour, Nous rencontrons un problème, je ne sais pas si cela viens de Prestashop ou d'un module tiers mais il nous arrive, parfois, d'avoir des doublons de commande. Parfois avec le même ID, parfois avec un ID différent. La date est exactement la même et je ne sais pas pourquoi, sur certaine commande, elles apparaissent en doublon. J'ai apporté quelques modifications sur différents fichier notamment en utilisant la fonction hookOrderConfirmation, je ne récupère qu'une seule commande à ce niveau, aucun doublon à signaler. Le problème survient uniquement sur le module universalpay, que je n'ai pas modifié, cela vient peut-être d'eux mais je n'ai toujours pas de réponse de leur part. Je tente ma chance ici si des fois quelqu'un en saurait davantage ! Je suis avec Prestashop v1.6.1.9 et le module de paiement avec lequel j'ai le soucis est universalpay v2.4. Si vous avez besoin de plus d'informations n'hésitez pas. Merci par avance de votre aide Link to comment Share on other sites More sharing options...
doekia Posted January 18, 2018 Share Posted January 18, 2018 Si tu vois 2 commandes avec le même id c'est que tu n'en vois qu'une mais qu'une table dans la jointure remonte trop de données. Link to comment Share on other sites More sharing options...
[email protected] Posted January 18, 2018 Author Share Posted January 18, 2018 Je me suis mal exprimé, je voulais parler de même référence, mais d'un ID différent Link to comment Share on other sites More sharing options...
doekia Posted January 18, 2018 Share Posted January 18, 2018 c'est tout autant impossible d'avoir la même référence que le même id, et, je doute que tu ais l'un sans l'autre ou alors il y a de sérieux problème dans ta bdd. ce qui est possible c'est 2 id différents et 2 références quasi identique l'une XXXXX-1 et l'autre XXXXX-2 dans le cas d'une commande multi-shipping, mais elles ne contiennent pas les même produits Link to comment Share on other sites More sharing options...
[email protected] Posted January 19, 2018 Author Share Posted January 19, 2018 (edited) Merci tout d'abord de ton intervention rapide. Voici ce que je trouve en BDD : <table> <tr> <th>id_order</th> <th>reference</th> <th>id_shop_group</th> <th>id_shop</th> <th>id_carrier</th> <th>id_lang</th> <th>id_customer</th> <th>id_cart</th> <th>secure_key</th> <th>total_paid</th> <th>total_products</th> <th>invoice_date</th> <th>date_add</th> <th>date_upd</th> </tr> <tr> <td>889</td> <td>WEB-0000889</td> <td>1</td> <td>1</td> <td>46</td> <td>1</td> <td>394</td> <td>3777</td> <td>98798798787874545621</td> <td>101.810000</td> <td>66.840000</td> <td>2018-01-17 12:15:52</td> <td>2018-01-17 12:15:52</td> <td>2018-01-17 12:15:52</td> </tr> <tr> <td>890</td> <td>WEB-0000889</td> <td>1</td> <td>1</td> <td>46</td> <td>1</td> <td>394</td> <td>3777</td> <td>98798798787874545621</td> <td>101.810000</td> <td>66.840000</td> <td>2018-01-17 12:15:52</td> <td>2018-01-17 12:15:52</td> <td>2018-01-17 12:15:52</td> </tr> </table> Concernant la référence, je la modifie dans la fonction generateReference dans l'override de Order.php Mais cela n'explique pas pourquoi le doublon de la commande. Edited January 19, 2018 by [email protected] (see edit history) Link to comment Share on other sites More sharing options...
[email protected] Posted January 22, 2018 Author Share Posted January 22, 2018 Pas d'idée ? Link to comment Share on other sites More sharing options...
doekia Posted January 22, 2018 Share Posted January 22, 2018 Non puisque tu ne réponds pas vraiment. Est-ce les même id. Ont elle les même produit. Link to comment Share on other sites More sharing options...
[email protected] Posted January 22, 2018 Author Share Posted January 22, 2018 J'ai répondu avec le tableau, les deux lignes sont exactement les mêmes sauf l'id qui est différent (889 pour l'une et 890 pour l'autre). Concernant le contenu, tout est identique aussi. Ci joint la page descriptive des deux commandes Link to comment Share on other sites More sharing options...
doekia Posted January 22, 2018 Share Posted January 22, 2018 Et ton code qui réaffecte la référence, tu l'as implémenté où et comment? Link to comment Share on other sites More sharing options...
[email protected] Posted January 23, 2018 Author Share Posted January 23, 2018 Je l'ai mis dans override/classes/order/Order.php et j'ai utilisé la fonction generateReference comme ceci : // Modification référence commande : WEB-000idCommande public static function generateReference () { $last_id = Db::getInstance()->getValue(' SELECT MAX(id_order) FROM ' . _DB_PREFIX_ . 'orders'); return 'WEB-' . str_pad((int)$last_id + 1, 7, '0000000', STR_PAD_LEFT); } Link to comment Share on other sites More sharing options...
doekia Posted January 23, 2018 Share Posted January 23, 2018 Hum il y a quelque chose d'impossible ici. Dans PaymentModule.php, la fonction generateReference() est appelé de cette manière: do { $reference = Order::generateReference(); } while (Order::getByReference($reference)->count()); Donc il est impossible d'avoir 2 référence identique, ça part en boucle infini avec ton override. Tu as du donc également changer quelque chose dans PaymentModule. Un module que je connais qui fait les choses +/- de la même manière est celui-ci: https://eoliashop.com/reftoid Le changer pour qu'il réponde à ton besoin exact (WEB-000000XX) est trivial Link to comment Share on other sites More sharing options...
[email protected] Posted January 23, 2018 Author Share Posted January 23, 2018 (edited) Merci de ta réponse. En effet, le fichier PaymentModule est aussi override avec la fonction validateOrder avec les modifications suivantes : $order->invoice_date = '0000-00-00 00:00:00'; PAR $order->invoice_date = date('Y-m-d H:i:s'); '{payment}' => Tools::substr($order->payment, 0, 32) PAR '{payment}' => Tools::substr($order->payment, 0, 34) '{total_shipping}' => Tools::displayPrice($order->total_shipping, $this->context->currency, false) PAR '{total_shipping}' => Tools::displayPrice($order->total_shipping_tax_excl, $this->context->currency, false) Rien de plus sur cette fonction. Le problème du module, c'est qu'il est payant, je ne suis pas responsable de l'achat de module mais justement du développement, pour ne pas acheter de module. Des solutions que j'ai pu voir sur internet, plusieurs proposent l'override et personne n'a l'air de se plaindre de doublons de commande. C'est étrange. Je viens d'avoir sur la boutique un autre doublon, celui-ci avec une référence différente, un ID différent. Les produits sont les mêmes également. En BDD, le current_state dans ps_orders sont différents ainsi que le delivery_number Ce n'est pas la première fois non plus que j'ai cette erreure, et à chaque fois, ce sont ces deux modifications qui changent entre les deux commandes. Ce n'e Si c'est une piste supplémentaire ... Edited January 23, 2018 by [email protected] (see edit history) Link to comment Share on other sites More sharing options...
[email protected] Posted January 30, 2018 Author Share Posted January 30, 2018 Bonjour, Est-ce que quelqu'un aurait une autre idée de ce problème ? Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now