djnos Posted January 16, 2013 Share Posted January 16, 2013 Bonjour à tous et toutes, J'ouvre ce topic car j'ai un problème avec ma boutique d'e-commerce Il s'agit en fait d'un site e-commerce qui sert de réservation pour des commandes pour des adhérents d'une coopérative. Donc le paiement ne se fait pas en ligne mais directement lorsque les adhérents viennent au magasin donc je ne souhaite pas d'étape de paiement lorsque les clients valident leurs paniers. Actuellement il est défini avec le moyen de paiement qui est le chèque car c'était le seul possible qui ne me bloquer pas les clients dans le processus de validation. Y aurait il une solution pour lors de la confirmation de la commande enlever l'étape de paiement et avoir une commande validée ? Je suis actuellement en version PrestaShop™ 1.4.7.0 Merci d'avance pour votre aide Link to comment Share on other sites More sharing options...
Dovitch Posted January 18, 2013 Share Posted January 18, 2013 Bonjour, j'avais le même genre de besoin que vous et j'ai trouvé la solution en allant surcharger juste un controller. J'ai fait cette modif sur la version 1.5.3 mais dans mes souvenirs, mis à part le numéro de lignes, le processus de validation des commandes se fait de la même façon. surchargez la fonction initContent() du controller OrderController A un moment (au début), il fait un switch sur la variable (int)$this->step . Suivant l'étape que vous voulez être la dernière, il vous faut vous placer dans tel ou tel case (case 1 => juste après le panier, case 2 => juste après le choix des adresses, case 3 => juste après le choix du transport) Suivant ce que vous décidez, juste après l'appel à $this->autoStep() , il vous faut appeler la fonction de validation de commande qui est validateOrder 2. Allez voir dans /classes/PayementModule.php et chercher la fonction validateOrder renseignez les paramètres (au moins les obligatoires), vous pouvez créer en BO des "états de commande" pour pouvoir personnaliser vos commandes. Juste après l'appel de votre fonction de validation, ajoutez la ligne Tools::redirect('index.php?controller=history'); qui redirigera votre client directement vers son historique de commande, comme dans le cas d'une commande réussie "normale". voilà une solution parmi tant d'autre, elle fonctionne pour moi, en espérant que cela ai pu vous aider! N'hésitez pas à me MP au cas où, Cordialement Link to comment Share on other sites More sharing options...
djnos Posted January 29, 2013 Author Share Posted January 29, 2013 (edited) Bonjour Dovitch, Tout d'abord merci d'avoir prit le temps pour m'expliquer c'est gentil de ta part . Je ne comprend pas l'étape 1 ou il faut surchargez la fonction. Je vois bien ou elle est mais je ne saisis pas les modifs à effectuer. Cordialement Edited January 29, 2013 by djnos (see edit history) Link to comment Share on other sites More sharing options...
djnos Posted February 11, 2013 Author Share Posted February 11, 2013 Bonjour, problème toujours pas résolu quelqu'un pourrait m'expliquer en détail la première étape ? Merci d'avance pour la personne qui pourra m'aider Link to comment Share on other sites More sharing options...
Tatoo Posted February 21, 2013 Share Posted February 21, 2013 Bonjour, J'ai un peu du mal a comprendre vos explications. Il faut mettre dans le case ou on aimerai terminer l'appel de fonction validate order? Mais dans ce cas il passe quand même sur toute les étapes qu'il y a entre la premiere et celle choisie non? Si on veut éviter une étape qui se trouve au milieu mais garder les autres comment faire? Merci de votre attention Link to comment Share on other sites More sharing options...
redtango2 Posted February 25, 2013 Share Posted February 25, 2013 Bonjour Dovitch, je suis sur 1.5.3. en suivant cette méthode, y a t'il un moyen de mettre un formulaire à remplir lors de cette étape ( en remplacement de l'étape Transport) et de le voir apparaître dans le mail et le pdf. Dis autrement on a une case commentaire client, je cherche à mettre un formulaire avec 5-6 champs pour du btob, en évitant la personnalisation de chaque produit trop fastidieuse. Merci d'une réponse BJ Link to comment Share on other sites More sharing options...
Dovitch Posted April 16, 2013 Share Posted April 16, 2013 Bonjour Dovitch, Tout d'abord merci d'avoir prit le temps pour m'expliquer c'est gentil de ta part . Je ne comprend pas l'étape 1 ou il faut surchargez la fonction. Je vois bien ou elle est mais je ne saisis pas les modifs à effectuer. Cordialement Bonjour, en ce qui concerne l'étape 1, ma problématique était la suivante: je voulais qu'après le choix des adresses (facturation/livraison), la commande se valide d'elle même, le règlement étant géré par un autre circuit. Dans la fonction init_content() de OrderController(), vous avez un switch qui vous place dans tel ou tel case suivant l'étape/l'avancement dans le processus de commande. Voilà la transformation que j'ai effectué en surchargeant cette fonction initContent(): Avant case 2: if (Tools::isSubmit('processAddress')) $this->processAddress(); $this->autoStep(); $this->_assignCarrier(); $this->setTemplate(_PS_THEME_DIR_.'order-carrier.tpl'); break; je ne voulais pas assigner de transporteur à cette commande, je voulais juste la valider une fois les adresses renseignées,d'où: Après case 2: if (Tools::isSubmit('processAddress')) $this->processAddress(); $this->autoStep(); $cart = new Cart((int)$this->context->cart->id); /* on instancie le module de virement juste pour pouvoir appeler la fonction de validation de commande */ $payment_module = Module::getInstanceByName('bankwire'); $payment_module->validateOrder($this->context->cart->id,13,$cart->getOrderTotal(true, Cart::BOTH),'validation commande',null,array(),null, false, $this->context->cart->secure_key);//exit(); /* dès la validation, on redirige vers l'historique des commandes */ Tools::redirect('index.php?controller=history'); break; Une fois ma fonction validateOrder() appelée et correctement exécutée, je renvoi l'utilisateur vers l'historique de ses commandes. Link to comment Share on other sites More sharing options...
Dovitch Posted April 16, 2013 Share Posted April 16, 2013 Bonjour, J'ai un peu du mal a comprendre vos explications. Il faut mettre dans le case ou on aimerai terminer l'appel de fonction validate order? Mais dans ce cas il passe quand même sur toute les étapes qu'il y a entre la premiere et celle choisie non? Si on veut éviter une étape qui se trouve au milieu mais garder les autres comment faire? Merci de votre attention Bonjour, je serais tenté de dire que c'est possible, mais je n'ai jamais vérifié ni testé une pareille solution. Suivant l'étape que vous souhaité zapper, commenter peut-être simplement son traitement par exemple pour le traitement case 2: if (Tools::isSubmit('processAddress')) $this->processAddress(); $this->autoStep(); //$this->_assignCarrier(); /* pensez à rediriger vers l'étape suivant celle que vous enlevez, mais en prenant garde à bien lui renseigner toutes les variables nécessaires */ //$this->setTemplate(_PS_THEME_DIR_.'order-carrier.tpl'); Link to comment Share on other sites More sharing options...
Dovitch Posted April 16, 2013 Share Posted April 16, 2013 Bonjour Dovitch, je suis sur 1.5.3. en suivant cette méthode, y a t'il un moyen de mettre un formulaire à remplir lors de cette étape ( en remplacement de l'étape Transport) et de le voir apparaître dans le mail et le pdf. Dis autrement on a une case commentaire client, je cherche à mettre un formulaire avec 5-6 champs pour du btob, en évitant la personnalisation de chaque produit trop fastidieuse. Merci d'une réponse BJ Bonjour! J'ai tendance à dire que tout est possible moyennant finance et je pense que c'est le cas ici. Le fait de modifier une étape existante, la vider complètement de sa substance et remplacer son traitement par un autre totalement différent...est faisable mais je pense que cela nécessite un lourd développement qu'il ne m'est pas possible de vous expliquer rapidement tout simplement car je ne l'ai jamais tenté; mais à première vue, je penses qu'il vous faudrait un template pour l'affichage de votre formulaire, modifier OrderController() pour traiter votre formulaire et voir comment incorporer tout ça dans vos mails et pdfs. C'est jouable mais ça prends du temps, à vous de voir si le jeu en vaut la chandelle, peut-être devriez vous faire appel à un prestataire pour ce développement si vous n'avez pas de connaissances techniques sur Prestashop. Cordialement, p.s:désolé pour le temps mis à répondre, le boulot n'attends pas! Link to comment Share on other sites More sharing options...
fphred Posted April 20, 2013 Share Posted April 20, 2013 Bonjour! Je trouve ce topic très intéressant et je pense que ça va bien me servir! Mais je me pose une question... Comment va se comporter le site au niveau de la modification lors de la mise à jour de la version de Prestashop ? Est-ce qu'il faut refaire la modification ? A moins que le fait de surcharger la fonction dans un nouveau fichier (php est objet maintenant il me semble) permet de faire une mise à jour sans autre intervention pour que le site fonctionne tel que voulu ? Merci d'avance, Cordialement Link to comment Share on other sites More sharing options...
djnos Posted April 29, 2013 Author Share Posted April 29, 2013 Bonjour Dovitch, merci pour les détails que tu a apporté par contre quand je modifie les deux fichiers avec les lignes que tu m'a marquer cela ne fonctionne pas chez moi si je charge les deux fichiers modifiés et que je vais tester sur la boutique lorsque je vais sur commander apres avoir rajouter des produits dans le panier je tome sur une page blanche et lorsque je charge que le fichier OrderController.php la jarrive sur une page apres la commande qui me dit : Le panier ne peut être chargé ou une commande a déjà était réalisé avec ce dernier sur ce lien je t'ai mit dans un fichier zip mes deux fichiers originaux et les deux fichiers modifiés si tu vois ou est l'erreur je suis preneur car la je tourne en rond depuis 5j :/ https://www.dropbox.com/s/b54x7pmmcx5vfg8/Archive.zip Cordialement 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