piloop35 Posted February 21, 2017 Share Posted February 21, 2017 Bonjour, J'ai un soucis concernant un override dans mon module de paiement. Je dois relier une référence (int) avec la référence de prestashop. j'ai donc crée dans mon module une classe Override/classes/order/Order.php avec dedans <?php class Order extends OrderCore { public static function generateReference() { $last_id = Db::getInstance()->getValue(' SELECT MAX(id_order) FROM '._DB_PREFIX_.'orders'); return str_pad((int)$last_id, 9, '000000000', STR_PAD_LEFT); } } ?> Comment puis-je faire ensuite pour que mon module à l'installation surcharge la classe Order? Merci d'avance Link to comment Share on other sites More sharing options...
BeComWeb Posted February 21, 2017 Share Posted February 21, 2017 Le fichier doit être placé dans le répertoire "override/classes/order" et tu dois supprimé le fichier class_index.php qui est dans le répertoire cache pour que ce soit pris en compte. Regarde aussi les explications dans la doc officielle. Link to comment Share on other sites More sharing options...
piloop35 Posted February 21, 2017 Author Share Posted February 21, 2017 Merci de ta réponse mais ça ne va pas être possible.J'ai besoin d'avoir mon override directement dans mon module et non dans les fichiers de prestashop. Si je veux installer ce module autre part, je ne veux pas a avoir une modification a faire sur le presta . Link to comment Share on other sites More sharing options...
BeComWeb Posted February 21, 2017 Share Posted February 21, 2017 Les modules qui font des overrides fonctionnent comme ça. A l’installation ils copient les fichiers dans ce répertoire. Si tu veux bricoler autre chose libre à toi... 1 Link to comment Share on other sites More sharing options...
piloop35 Posted February 21, 2017 Author Share Posted February 21, 2017 Hum ok je ne savais pas. C'est bon à savoir. As-tu une idée de comment je peux faire pour copier mes fichiers dans ce répertoire?. Merci pour ton aide en tout cas Link to comment Share on other sites More sharing options...
piloop35 Posted February 21, 2017 Author Share Posted February 21, 2017 (edited) Edit: j'avais posé une autre question que j'ai pu régler. il me reste l'override d'une classe via un module. je suis ouvert à toutes propositions ! Edit2 : ha bah non ma deuxieme question est toujours d'actualité... Je dois trouver une solution pour changer l'id_order par un ID d'une API. J'ai effectué un Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'orders` SET id_order = '.$id_smoney.' WHERE id_order = '.(int)$order_id); Cela fonctionne, sauf que dans la partie produit en backend, j'ai plus aucun produit de trouvé... donc les remboursement sont impossibles.. Edited February 21, 2017 by piloop35 (see edit history) Link to comment Share on other sites More sharing options...
BeComWeb Posted February 21, 2017 Share Posted February 21, 2017 Je ne sais pas trop où tu en es mais pour copier des fichiers il y a des fonctions PHP pour ça. Je viens de voir que dans la classe Tools il y a une fonction copy également. A tester mais avec Tools::copy($source, $destination, null) ca devrait faire le taf Link to comment Share on other sites More sharing options...
piloop35 Posted February 21, 2017 Author Share Posted February 21, 2017 Ok merci pour cet info, je vais tester ça dès que possible. Par contre pour mon deuxième problème est plus urgent. juste avant le validate Order : $this->module->validateOrder($cart_id, $status, $cart->getOrderTotal(), $module_name, $message, array(), $currency_id, false, $secure_key); j'ai rajouté ça : Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'orders` SET id_order = '.$id_smoney.' WHERE id_order = '.(int)$order_id); J'ai besoin de changer l'id de base de prestashop par l'ID que le retour de l'api va me donner.Le problème est, que ça a l'air de merder au niveau de la variable $cart.Dans mon back-end quand je regarde ma commande, le produit n’apparaît pas + pas de facture etc etc. Pourtant l'id de la commande est bien la bonne ;.En tout cas un grand merci pour ton aide Link to comment Share on other sites More sharing options...
BeComWeb Posted February 21, 2017 Share Posted February 21, 2017 Ca commence à devenir un peu obscure, dans le sens où je ne comprends pas tous les tenants et les aboutissants de ta problématique. Une chose est sûr c'est qu'avec ta requête SQL tu ne modifies que la table "cart". Hors les produits d'une commande sont "attachés" à cette commande via la table "cart_products". Donc si tu modifies l'un tu dois modifier les autres aussi. Et tu vas rencontrer plein de cas comme ça... La table "order_carrier" indique à PS quel transporteur est associé à une commande par exemple. "order_state" aussi pour les statuts de commande. Idem pour les vouchers... Link to comment Share on other sites More sharing options...
piloop35 Posted February 22, 2017 Author Share Posted February 22, 2017 (edited) Damn, effectivement c'est une sacré usine :/. En faite, j'ai 2 id différents pour le même produit en ce moment.l'order_ID de prestashop et l'id que l'api accepte. J'ai besoin d'avoir une liaison entre cet api et le backend de prestashop au niveaux des commandes.Je voulais donc changer l'id de prestashop (Bon apparemment c'est pas la meilleure solution...) Je dois avoir cette liaison pour pouvoir faire un appel de l'api (via un bouton a coté de chaque produits) dans la partie commande pour effectuer un remboursement. Je ne sais pas si j'ai été assez clair :/j'utilise cette fonction pour récupérer l'order_id public static function generateReference() { $last_id = Db::getInstance()->getValue(' SELECT MAX(id_order) FROM '._DB_PREFIX_.'orders'); return str_pad((int)$last_id + 2, STR_PAD_LEFT); }Malheureusement, l'id_order n'est pas forcément le dernier ID. j'ai donc voulu récupérer l'order_id du cart $cart_id = Context::getContext()->cart->id; $cart = new Cart((int)$cart_id); $order_id = Order::getOrderByCartId((int)$cart->id); sauf que $order_id est null...je n'arrive pas à comprendre quand est-ce que prestashop crée l'order_id. Edited February 22, 2017 by piloop35 (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted February 23, 2017 Share Posted February 23, 2017 Ce module est fait pour ça^^ https://eoliashop.com/modules-prestashop/Prestashop15-16/reftoid Link to comment Share on other sites More sharing options...
piloop35 Posted February 27, 2017 Author Share Posted February 27, 2017 Eolia : Oui Merci, j'ai remarqué 2/3 modules pour changer la référence sauf que je dois implémenter cette solution dans mon module . Je vais essayer la solution de BeComWeb à copier des fichiers du module sur prestashop avec Tool:: 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