THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline

#26 Re: Module FreeShipping

(13-10-2014 09:01:21)


Tout à fait, ce qui est parfaitement compréhensible!

Quand je dis que c'était plus simple sur Thelia 1, c'est qu'il suffisait d'ajouter un petit bout de code dans le plugin Colissimo (c'est mon seul transporteur) pour que ça marche. Là je t'avoue être complètement largué avec cette nouvelle version.

On avait un outil tout en français avec 1 forum et 1 zone pour trouver les modules. Maintenant on est sur un outil tout en anglais, avec une doc partiellement traduite en français, 1 forum, de nombreuses « pages » sur Github pour les modules qui sont souvent compatibles uniquement avec des versions qui ne sont même pas encore sorties sans que cela soit clairement indiqué, des mises à jour à faire en ligne de commande (pour le moment) pour une version 2.0 et non beta c'est assez étonnant je trouve. Quand j'ai découvert Thelia 1 j'étais impressionné par la simplicité d'utilisation, de développement et de possibilité qu'on nous offrait même sans avoir de connaissances techniques poussées. Thelia 2 est Open Source, mais pas Open tout court ^^ Ce qui est frustrant puisque cette nouvelle version offre des possibilités franchement excellentes! Bref, je m'éloigne du sujet initial...

Offline

#27 Re: Module FreeShipping

(13-10-2014 12:04:17)


De mon cote le module Freeshipping marche parfaitement

Offline

#28 Re: Module FreeShipping

(13-10-2014 13:29:34)


Je viens de :
- désactiver le module
- supprimer le module
- faire un clear-cache.php
- supprimer tous les dossiers dans /cache (mais en fait y avais rien d'autres que le .htaccess que j'ai conservé)
- télécharger à nouveau le module depuis : https://github.com/thelia-modules/FreeShipping
- uploader le module (sans -master)
- activer le module
- passer en position 1
- ajouter la règle France et un montant de 10
- accès au panier via index_dev.php

À ce moment là, aucun message d'erreur, et aucun prix qui ne s'affiche. Je poursuis donc la commande, mais sur la page suivante on me propose le mode de livraison par Colissimo au tarif plein. Comme les frais de port sont normalement offerts à partir de 60€, je vais dans la configuration du module pour modifier le montant, j'ai un beau /admin/module/FreeShipping/save qui s'affiche en page blanche.

Last edited by iSkean (13-10-2014 13:30:26)

Offline

#29 Re: Module FreeShipping

(13-10-2014 20:06:54)


normalement toute page blanche correspond a une erreur php
il faut se connecter avec index_dev pour voir l'erreur

as tu regarde les logs ?

Offline

#30 Re: Module FreeShipping

(14-10-2014 10:57:48)


Bon iSkean va etre content !

je me suis penche sur le PB
j'en ai identifie une partie qui permet de le faire fonctionner

il faut modifier dans le module Freeshipping
fichier module->FreeShipping->FreeShipping.php
modifies la fonction qui suit
(elle renvoie si le module est valide pour la destination, par defaut elle renvoie vrai tout le temps, la suite corrige ce bug)

    public function isValidDelivery(Country $country)
    {
      $areaId = $country->getAreaId();
      $area = FreeShippingQuery::create()->findOneByAreaId($areaId);
      $maxAmount = $area->getAmount();
      
      $cart = $this->getContainer()->get('request')->getSession()->getCart();
      $amount = $cart->getTotalAmount();

      if(isset($area) && $amount>$maxAmount){
        return true;
      }
      return false;
    }

cette correction permet d'utiliser le module
mais il reste un autre bug
- il n'est pas possible de modifier la valeur du franco de port
la solution c'est de desactiver puis reactiver le module et reentrer la somme/zone

je m'y pencherai plus tard...qu'en j'aurais un moment
je ferai pullrequest a la fin wink

Offline

#31 Re: Module FreeShipping

(14-10-2014 14:27:22)


Merci zzuutt, ça corrige en partie mon problème!

Effectivement, en rajoutant ce code les frais de port sont gratuits dans le panier, mais une fois sur la page delivery pour choisir le transporteur, j'ai de nouveau colissimo avec les frais de port payants. Pourtant le module FreeShipping est bien en première position avec la boucle delivery en ordre manuel, mais rien n'y fait...

Du coup ça m'a permis de constater que le montant de la règle qu'on rentre doit être saisie en HT, c'est bien ça? Car mes frais de ports sont offerts à partir de 60€ TTC, mais si le panier fait 65€ ttc les FDP ne sont pas offerts avec une règle à 60. En revanche ils le sont avec une règle à 50€ HT soit 60€ TTC. Je trouve ça étrange, surtout si on vend des produits à différents taux de TVA.

Offline

#32 Re: Module FreeShipping

(14-10-2014 21:41:52)


Petit rappel:
Thelia est livre sous licence LGPL
si on veut que cela continue et que le projet evolue
il ne faut pas que demander mais aussi participer a son developpement
surtout si on a des connaissances dans les langages web
ALORS CONTRIBUE !
voici le lien vers la doc

DOC

tu trouveras comment recuperer le total TTC (....une piste getTaxedAmount)
et ainsi modifier le fichier modules->FreeShipping->FreShipping.php

Offline

#33 Re: Module FreeShipping

(15-10-2014 07:07:22)


Zzuutt,

Il y a de nombreuses choses que j'aimerai pouvoir développer pour Thelia. J'ai des idées plein la tête et des besoins bien précis. Or, comme je l'ai expliqué plus haut, mon niveau d'anglais est au ras des pâquerettes et la doc est très majoritairement en anglais. Du coup, oui, depuis Thelia 2 je sollicite énormément la communauté alors que pour Thelia 1 je cherchais de nombreux jours / semaines avant de demander si je n'avais pas trouvé par moi-même.

Offline

#34 Re: Module FreeShipping

(15-10-2014 12:09:37)


changes tous les getAmount()
par getTaxedAmount($country)

dans le fichier module->FreeShipping->FreeShipping.php

Last edited by zzuutt (15-10-2014 12:10:29)

Offline

#35 Re: Module FreeShipping

(15-10-2014 13:12:10)


Merci zzuutt, pour le moment je désactive le module puisqu'il ne fonctionne qu'en partie sur mon interface. Quand j'aurai du temps de me pencher dessus j'ajouterai ce bout de code!

Offline

#36 Re: Module FreeShipping

(18-12-2014 14:11:42)


Je découvre juste ce fil après avoir passé quelques jours à débugguer avec l'auteur (merci à lui), la version branche 2.0.4 marche maintenant nickel (et devrait pour tout le monde, mes templates sont simples). J'ai juste eu à faire une loop pour supprimer Colissimo quand on est en Free, et vice-versa (faire apparaitre le choix "franco" quand on est en dessous du seuil n'a pas de sens, tous les clients vont cliquer dessus ...). Voilà c'était juste pour info.

Offline

#37 Re: Module FreeShipping

(18-12-2014 14:45:19)


Tu pourrais donner la boucle que tu as inséré ? Car j'ai essayé mais ça me faisait des erreurs...

Offline

#38 Re: Module FreeShipping

(18-12-2014 16:02:20)


Voilà, copié-collé de tout ce qu'il y a dans la form dans ajax/order-delivery-module-list.hml . J'ai laissé ce qui est commenté pour voir ce qu'il y a d'enlevé par rapport template de base.

{form_field form=$form field='delivery-module'}
{*
        {if $isPost}
            {if $value == $ID}
                {assign var="isDeliveryMethodChecked" value="1"}
            {/if}
        {elseif $LOOP_COUNT == 1}
            {assign var="isDeliveryMethodChecked" value="1"}
        {/if}
*}
        
				{* si freeshipping affiche que ça sinon que colissimo  *}
				{loop type="module" name="codemodule" id="{$ID}"}
					{assign var="idDeliv" value="{$ID}"}
					{assign var="codeDeliv" value="{$CODE}"}
				{/loop}
				
				
				{loop name="franco" type="free_shipping"}
					{if {cart attr="total_taxed_price"} > {$AMOUNT} && {$codeDeliv} == "FreeShipping" }
						<label for="delivery-method_{$idDeliv}">
							<input type="radio" name="{$name}" id="delivery-method_{$idDeliv}" checked="checked" value="{$idDeliv}">
							<strong>{$TITLE}</strong>
						</label>
					{else if  {cart attr="total_taxed_price"} < {$AMOUNT} && {$codeDeliv} == "Colissimo" }
						<label for="delivery-method_{$idDeliv}">
							<input type="radio" name="{$name}" id="delivery-method_{$idDeliv}" checked="checked" value="{$idDeliv}">
							<strong>{$TITLE}</strong> / {format_money number=$POSTAGE symbol={currency attr="symbol"}}
						</label>
					{/if}
				{/loop}
					

					
      {/form_field}

J'ai aussi enlevé le "/" derrière "Franco de port", ou alors il faudrait faire "Franco /0" ..
Voilà, en espérant que ça servira !

Offline

#39 Re: Module FreeShipping

(18-12-2014 20:59:50)


Pour ma part je prefere afficher plusieurs choix,
- franco de port
- livraison en point relais
- livraison en chrono......

le franco n'est valable que pour une livraison a domicile 72h

mon franco ne s'affiche que si le panier atteind la somme

Offline

#40 Re: Module FreeShipping

(22-12-2014 18:58:33)


Dans FreeShipping\FreeShipping.php,
$area = FreeShippingQuery::create()->findOneByAreaId($areaId);
$maxAmount = $area->getAmount();

Si le franco n'est pas disponible pour un pays, on a une erreur fatale sur la 2ème ligne car $area est null.

Offline

#41 Re: Module FreeShipping

(22-12-2014 21:33:05)


modifies comme suit

    public function isValidDelivery(Country $country)
    {
      $areaId = $country->getAreaId();
      $area = FreeShippingQuery::create()->findOneByAreaId($areaId);
      if(isset($area)){      
        $maxAmount = $area->getAmount();
        
        $cart = $this->getContainer()->get('request')->getSession()->getCart();
        $amount = $cart->getTaxedAmount($country);
  
        if($amount>$maxAmount){
          return true;
        }
      }        
      return false;
    }

Offline

#42 Re: Module FreeShipping

(23-12-2014 09:50:03)


if(isset($area)){

Ce test est toujours vrai. Il faut utiliser ça:  if (null !== $area) {


OpenStudio Toulouse