THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Bonjour,

Je viens de rajouter un plugin "retrait sur place" et direct, Thelia l'utilise pour l'estimation des frais de ports ce qui ne me parait pas très pertinent car ça ne reflète pas le coût habituel du transport (vu l'endroit, peu de gens utiliseront un retrait sur place).
J'ai tenté d'agir sur l'ordre des plugins de transport, sans effet ... je peux bidouiller mes templates mais je me demandais ce qui régissais ce choix ... j'ai l'impression qu'une boucle décide du transport à partir du pays de destination et qu'à partir de là on n'a pas la main, ça prend le dernier transport ajouté pour la zone.
Ligne 153 de cart.html (enfin du mien), il y a un 

{if $delivery_id != 0 }

, je comprend pas qui fournit ce $delivery_id qui sert à la boucle en dessous qui choisit le mode de transport.
Une idée ? merci d'avance !
Pierre

Offline


et direct, Thelia l'utilise pour l'estimation des frais de ports

Thelia utilise les frais de port les plus bas pour l'estimation dans le panier.

C'est la fonction Smarty {postage} qui met à jour delivery_id, et d'autres variables :

        $template->assign('country_id', $this->countryId);
        $template->assign('delivery_id', $this->deliveryId);
        $template->assign('postage', $this->postage ?: 0.0);
        $template->assign('postage_tax', $this->postageTax ?: 0.0);
        $template->assign('postage_title', $this->postageTaxRuleTitle ?: 0.0);
        $template->assign('is_customizable', $this->isCustomizable);

La doc de cette fonction est là : http://doc.thelia.net/en/documentation/ … stage.html

Il serait sans doute judicieux d'ajouter qules paramètres à cette fonction, pour exclure certains modules de livraison, par exemple.

Tu peux aussi écrire ton propre code de calcul du poids du panier, en utilisant le boucle delivery (la doc est incomplète, jette un oeil sur le code de la boucle).


OpenStudio Toulouse

Offline


Bonjour,

Merci pour cette réponse. On le trouve ou le code de "postage" ?

J'ai essayé de forcer l'usage d'un mode de transport par un

{assign var="delivery_id" value=32 }

avant ou dans 

{postage}

, "dans" ça change bien le libellé de transport (c'est à dire que le libellé devient bien celui de l'id de transport que j'ai choisi, le 32 en l'occurence), mais le calcul ne correspond pas, ça reste 0 comme pour LocalDelivery. Y-a-t-il moyen de passer une valeur à

{postage}

pour forcer le transport souhaité ? Bizarre que ça marche pour le libellé et pas pour le montant ... (ma méthode est peut-être débile mais bon le fait que ça ait un effet ...)

Pierre.

Offline


Tu ne peux pas passer de paramètres à postage; c'est cette fonction qui passe delivery_id et d'autres variables au template.

La code est dans local/modules/TheliaSmarty/plugins/Postage.php (de mémoire).


OpenStudio Toulouse

Offline


Bonjour,

C'est dans local/modules/TheliaSmarty/Template/plugins/CartPostage.php .

Pour l'instant j'ai modifié ça, la fonction "getCheapestDelivery(Country $country)" pour que la query aille chercher un transport spécifique "filterByPrimaryKeys(32)", mais bon c'est moyen comme méthode (en cas de mise à jour)
Avec la boucle Delivery, le pbm c'est la perte de la possibilité de changer de pays, le contrôle des zones de transport, etc ...

Pour l’histoire de passer un paramètre à CartPostage.php, je vais poser ma question autrement: est-ce que c'est possible ? Genre {postage,32} ? et comment je récupérerai ça dans CartPostage.php ? Je me disais que je pourrai créer une fonction "getSpecificDelivery(Country $country)" et que l'appel à {postage} pourrait comprendre un switch (moins cher ou spécifique avec l'id si spécifique) voir un simple test, si l'id est présent c'est que l'on souhaite utiliser "getSpecificDelivery(Country $country)" sinon on se rabat sur "getCheapestDelivery(Country $country)".
C'est sûr que l'idéal serait un mécanisme au niveau des modules dans le back-office qui permette de désigner celui à utiliser pour l'estimation car tous les ceusses qui utilisent LocalPickup sont coincés, impossible de faire moins cher ....

Pierre

Offline


Écris donc ta propre estimation du  cout de transport avec la boucle delivery au lieu d'imaginer des trucs compliqués.


OpenStudio Toulouse

Offline


Pour l'instant j'ai changé une ligne de code et ça marche ... donc j'ai pas l'impression d'imaginer un truc compliqué, je voudrais juste rendre ce changement plus propre/pérenne ...
J'ai déjà plus ou moins fait mon estimation avec Delivery, ça c'est simple, ce qui est plus compliqué c'est de permettre une estimation sur n'importe quel pays et que ça se mette à jour correctement, mais bon si tu penses que c'est plus simple, je vais essayer de nouveau, même si c'est clairement plus compliqué vu le temps nécessaire par rapport à ma ligne changée qui marche.
Merci.

Pierre.

Offline


Bon j'ai écris ce qu'il fallait pour que ça fonctionne dans la template sans toucher au core avec possibilité de changer de pays ... ça a l'air de marcher nickel, je peux virer tout {postage} ... Merci.