THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Dans la petite doc de ce module, il est indiqué :
...
{loop type="address.local" name="yourloopname" id="1"} <!-- your template --> {/loop}
...

J'édite donc order-delivery.html pour y ajouter ma boucle, et je vois que c'est une form qui gère le smu :

{form_field field='delivery-module'}
                <div id="delivery-method" class="panel panel-default">
                    <div class="panel-heading">
                        {intl l="Choose your delivery method"}
                        {if $error}
                            <span class="help-block"><span class="fa fa-remove"></span> {$message}</span>
                        {/if}
                    </div>
                    <div class="panel-body" id="delivery-module-list-block">
                </div>
{/form_field}

Comment faire proprement :

- ajouter ma boucle en dessous de la ligne <div class="panel-body" id="delivery-module-list-block"> ?
- créer un petit module qui utilise un event listener sur l'event TheliaEvents::FORM_AFTER_BUILD ?
(dans ce cas, je place ou ma boucle ?)

Merci.

Last edited by anti-conformiste (02-10-2019 20:57:47)

Offline


Ce module utilise les hooks, il n'est donc pas nécessaire de modifier ton template.


OpenStudio Toulouse

Offline


Je n'avais pas mis de zone de livraison roll

Je souhaite donner aux clients la possiblité de choisir entre 2 points de retraits.
J'ai donc voulu modifier le template du hook "order-invoice.delivery-address", mais il n'est utilisé que sur la page order-invoice pour afficher l'adresse de la boutique, c-à-d l'adresse d'un seul point de retrait.

Soit, je remonte donc à l'étape précédente (order-delivery.html)
Je remarque que c'est le controlleur OrderController.php du module Front via l'appel du module de livraison concerné qui génère le code à travers la ligne <div class="panel-body" id="delivery-module-list-block"></div> de la form ayant pour nom thelia.order.delivery .

J'en déduis que je dois générer un petit module avec un EventListener qui écoute l'event TheliaEvents::FORM_AFTER_BUILD . ".thelia.order.delivery" et y ajouter un champ avec une commande du genre "$formBuilder->add('magasin-2,'radiobox');"

C'est la que je coince, car je ne suis pas encore à mon aise avec symfony et érire juste cette ligne dans une module généré en cli me paraît trop simple smile
Est-ce la bonne démarche ou je suis à côté de la plaque ?

Tx in advance smile

Offline


Bonjour,

J'ai eu le même besoin récemment et j'ai procédé de la manière suivante :
1/ J'ai utilisé le module Dealer (http://modules.thelia.net/dealer.html) car j'avais besoin de gérer différentes infos concernants les magasins de la franchise (adresse, responsable, horaires d'ouverture etc.)
2/ J'ai ensuite créer un module de livraison utilisant les adresses des magasins pour la sélection du point de livraison.

VUyhmtQ.png

Tu peux me contacter en MP pour plus d'infos.

Last edited by Nog (04-10-2019 10:17:07)

Offline


Merci pour ta réponse Nog, je t'ai envoyé un MP.

Offline


@Nog, as-tu publié ce module ?


OpenStudio Toulouse

Offline


Bonjour Roadster,

Le module n'est pas encore publié il faut que je nettoie le code avant de le faire.

Nicolas

Offline


Lol, on a tous les mêmes préoccupations !


OpenStudio Toulouse

Offline


Roadster,

Peut-on spécifier le type de module que l'on souhaite créer dans la commande module:generate (j'utilise la v2.3.5 de Thelia) ?

J'ai lancé cette commande mais par défaut elle crée un module dont le type est "classic". En remplaçant "classic" par "delivery" dans module.xml à l'installation du module celui apparaît toujours dans la liste des modules classiques au lieu d'être dans la liste des modes de livraison.

A l'aide, il ne me reste plus beaucoup de cheveux sur la tête.

Offline


C'est la classe dont hérite ton module qui en fait un module de livraison, de paiement ou un module normal. Pour un module de livraison,  tu dois donc avoir :

class TonModule extends AbstractDeliveryModule

OpenStudio Toulouse

Offline


Ah le boulet. Bon sang mais c'est bien sûr !.
Ne serait-il pas possible de passer en paramètre de type de module que l'on souhaite créer de telle sorte que le module hérite directement de la bonne classe ?

Merci en tout cas, je vais pouvoir finaliser le module (sans oublier la documentation qui va bien).

Offline


La "bonne" classe, c'est celle que le développeur a choisi. En fait, il suffit que la classe principale du module implémente l'interface DeliveryModuleInterface pour qu'il soit considéré comme un module de livraison. Idem avec PaymentModuleInterface pour les modules de paiement.


OpenStudio Toulouse

Offline


Tout à fait d'accord !
J'imaginais quelque chose de ce genre

php Thelia module:genrate --type=delivery MonModuleDeLivraison

Offline


roadster31 wrote:

@Nog, as-tu publié ce module ?

C'est fait. Comme d'habitude toutes modifications évolutions sont les bienvenues. Le module est disponible ici : DealerPickup

Offline

Offline


Bonjour,

je poste ça ici car il me semble que c'est suite à l'installation du module DealerPickup by NOG que j'ai perdu mes choix de livraison.

J'ai donc installé ce module puis en voulant tester, je me suis rendu compte que plus aucun choix de livraison n'était proposé lors du process de commande. J'ai donc vidé les caches sans succès. J'ai désactivé puis désinstallé le module DealerPickup, sans succès. J'ai fini par le désinstaller et revider les caches, sans succès.

En passant par l'index_dev.php, je n'ai aucune erreur affichée.

Le poids des produits du panier n'excède pas 30 kg (//Colissimo) et mes zones de livraison étaient déjà bien configurées.

Merci pour vos lumières


v2.4.4

Offline


Hello,

Mon module est DealerPickup et non LocalPickup. Il permet le retrait dans les boutiques renseignées dans le module Dealer.

Le poids n'entre pas en ligne de compte pour ce mode de livraison qui est toujours disponible. J'y jette un coup d'oeil.

Nicolas

Offline


Hola,

oui je faisais bien mention à ton module DealerPickup.
Pour le poids, c'était pour exclure la possibilité que le module Colissimo perturbe les autres modules lors du choix de livraison en ayant un poids qui dépasserait les 30kg.

En gros, j'ai un  

[delivery-module] Cette valeur ne doit pas être vide., Id du module de livraison non trouvé

quand le module SoColissimo est activé.
En le désactivant, les autres modules apparaissent alors qu'avant ce module fonctionnait correctement avant l'installation du module DealerPickup (il y a hypotéthique lien, faudrait arriver à le reproduire). J'en ai profité pour mettre à jour les modules qui ne l'avaient  pas été lors de la màj en 2.4.0

J'ai aussi vu passer une erreur furtive dans les logs de type

76: ERROR [ErrorListener.php:logException()] {111} 2020-05-19 14:31:23: Uncaught exceptionYou have requested a non-existent service "module.colissimo". Did you mean this: "module.socolissimo"?

et

76: ERROR [ErrorListener.php:logException()] {111} 2020-05-19 14:36:57: Uncaught exceptionYou have requested a non-existent service "module.dealerpickup". Did you mean one of these: "module.dealer", "module.localpickup"?

mais elles sont sans doutes dues à mes activations/désactivations/refreshs

Toutefois, en passant par index_dev.php, aucun choix de livraison ne s'affiche alors qu'en mode normal, c'est rentré dans l'ordre (en ayant tout vidé), ça me laisse perplexe :-s
Edit : en vidant le dossier dev du cache à la main, c'est raccord

En tout cas je vais explorer ton module qui a l'air chouette, mercipour ça :-)

Last edited by nadelo (19-05-2020 16:08:15)


v2.4.4

Offline


Bonjour,
Je ne saisis pas le fonctionnement du module LoclaPickup (v1.2). Je l'ai activé et je lui ai attribué des zones. Mais il n’apparaît pas dans la liste des possibilités de livraison en order-delivery. Mes questions sont:
-Est-ce que c'est le bon module pour permettre au client de choisir ce mode de livraison parmi les autres déjà présents?
-Est-il possible de permettre ce mode mode de livraison que pour une famille de client (customerFamily)?