THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline

#1 Plugin forfait frais de port

(26-09-2014 08:59:46)


Bonjour,

J'utilise le plugin Forfait pour calculer les frais de port.

J'aimerais que ceux-ci soient de 0.01 euros pour les paniers à partir de 20 euros (ceci pour respecter la loi anti-amazon qui dit que les frais de port ne peuvent plus être gratuits pour les envois de livres achetés depuis internet).

J'ai donc paramétré ainsi une ligne de mon plugin forfait :

if ($this->total >= 20) return 0.01;

Désormais, lorsque j'ajoute un article dont le prix est supérieur ou égal à 20 euros, le récapitulatif de ma commande se présente ainsi :
livre      20.00 €
Frais de livraison     0.01 €
Remise     0.00 €
Total     20.01 €

Tout est donc correct !

Le souci est que lorsque je paie ma commande, le montant débité est de 20.00 et non de 20.01 euros !!!

Comment expliquer et corriger ce problème ?

Merci à tous pour votre aide,

Bien amicalement,

Thierry

Last edited by tsabot (26-09-2014 09:05:28)


TS Editions Thisa

Offline


Si cela peut aider, voici l'intégralité du code du plugin :

?>
<?php

    include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsTransports.class.php");
   
    class ForfaitZ1 extends PluginsTransports{

        function __construct(){
            parent::__construct("forfait");
        }
       
        function init(){
            $this->ajout_desc("Forfait", "Forfait", "", 1);
           
        }
        function calcule(){
            if ($this->total >= 20) return 0.01;
                        else if($this->poids>0.10 && $this->poids<=0.25) return 3;
            else if($this->poids>0.25 && $this->poids<=0.49) return 3.5;
            else if($this->poids>0.49 && $this->poids<=0.52) return 4;
            else if($this->poids>0.52 && $this->poids<=1) return 4.5;
            else if($this->poids>1 && $this->poids<=2) return 5.5;
            else if($this->poids>2 && $this->poids<=3) return 6.5;
            else if($this->poids>3 && $this->poids<=5) return 8;
            else if($this->poids>5 && $this->poids<=7) return 10;
            else if($this->poids>7 && $this->poids<=10) return 12;
            else if($this->poids>10 && $this->poids<=15) return 14;
            else if($this->poids>15 && $this->poids<=30) return 20;
            else if($this->poids>30) return 20;
        }

    }
   
?>


TS Editions Thisa

Offline


Je viens de remarquer que si par exemple je passe les frais de port à 0 euros et 11 centimes (0.11), :

if ($this->total >= 20) return 0.11;

le plugin ne prend en compte que l'unité (0 euros) et jamais le montant des centimes quel qu'il soit.

Comment expliquer ce problème et comment forcer le plugin à prendre en compte les centimes si les frais de port ont pour unité 0 euros ?

Merci pour votre aide....

Cela dépasse mon entendement !

Thierry


TS Editions Thisa

Offline


Le plugin retourne bien 0.11. Par contre, il doit se passer quelque chose au moment ou tu affiche le montant.

Par ailleurs, le plugin ne retourne rien (0, donc) si le poids est <= 0.10 et le total < 20

Le code (bien que présent dans plein de plugins...) est atroce et source d'erreur. Quelque chose comme ça est plus clair:

        function calcule() {
            if ($this->total >= 20) $prix = 0.01;
            else if ($this->poids<=0.25) $prix = 3;
            else if ($this->poids<=0.49) $prix =  3.5;
            else if ($this->poids<=0.52) $prix =  4;
            else if ($this->poids<=1) $prix =  4.5;
            else if ($this->poids<=2) $prix =  5.5;
            else if ($this->poids<=3) $prix =  6.5;
            else if ($this->poids<=5) $prix =  8;
            else if ( $this->poids<=7) $prix =  10;
            else if ($this->poids<=10) $prix =  12;
            else if ($this->poids<=15) $prix =  14;
            else $prix = 20;

            return $prix;
      }


OpenStudio Toulouse

Offline


roadster31 wrote:

Le plugin retourne bien 0.11. Par contre, il doit se passer quelque chose au moment ou tu affiche le montant.

Salut Roadter, oui c'est vrai, lors du récapitulatif de ma commande  le plugin retourne bien 0.11 ou tout autre somme exprimée en centimes (0.01, 0.56...), mais je ne comprends pas pourquoi au moment du calcul du total de la commande, les centimes ne sont pas pris en compte lorsque le montant des frais de port est de 0 euro + quelques centimes. En effet, cette situation ne se produit que dans les cas où le montant des frais de port est de 0 euro + quelques centimes et inférieur à 1 euros.

Ainsi, si j'écris :

if ($this->total >= 20) return 0.11; -> le plugin ajoute 0 euro de frais de port au total de la commande (il ne tient jamais compte des centimes car l'unité est de 0 euro).

mais si j'écris :

if ($this->total >= 20) return 1.11; -> le plugin ajoute bien 1.11 de frais de port au total de la commande

C'est incompréhensible !
Le problème vient de l'affichage 0 euro + quelques centimes !

Est-ce que tu as une idée ? Je rame dessus depuis ce matin !

Amicalement

TS

Last edited by tsabot (26-09-2014 15:12:15)


TS Editions Thisa

Offline


Aucune idée.

Vérifie en base que pour la commande, les frais de port sont ou non à 0.


OpenStudio Toulouse

Offline


roadster31 wrote:

Aucune idée.

Vérifie en base que pour la commande, les frais de port sont ou non à 0.

J'ai fait un essai avec le code que tu as corrigé :

function calcule() {
            if ($this->total >= 20) $prix = 0.01;
            else if ($this->poids<=0.25) $prix = 3;
            else if ($this->poids<=0.49) $prix =  3.5;
            else if ($this->poids<=0.52) $prix =  4;
            else if ($this->poids<=1) $prix =  4.5;
            else if ($this->poids<=2) $prix =  5.5;
            else if ($this->poids<=3) $prix =  6.5;
            else if ($this->poids<=5) $prix =  8;
            else if ( $this->poids<=7) $prix =  10;
            else if ($this->poids<=10) $prix =  12;
            else if ($this->poids<=15) $prix =  14;
            else $prix = 20;

            return $prix;
      }

mais le résultat est exactement le même, le total du panier ne prend toujours pas en compte les centimes.

Est-ce que le souci peut venir d'une autre variable que le plugin forfait.

Que veux tu dire par ? :
Vérifie en base que pour la commande, les frais de port sont ou non à 0.

Merci pour toute aide

Last edited by tsabot (26-09-2014 21:04:56)


TS Editions Thisa

Offline


C'est quoi ton plugin de paiement ?


OpenStudio Toulouse

Offline


roadster31 wrote:

C'est quoi ton plugin de paiement ?


j'utilise :

Chèque v1.2    
   
Paypal2 v2.3    
   
Virement v1.2    
   
Atos v1.1    

mais le résultat est le même pour tous, le calcul du montant total du panier ne tient jamais compte des centimes lorsque les frais de port sont de 0 euros + quelques centimes.


TS Editions Thisa

Offline


tsabot wrote:
roadster31 wrote:

C'est quoi ton plugin de paiement ?


j'utilise :

Chèque v1.2    
   
Paypal2 v2.3    
   
Virement v1.2    
   
Atos v1.1    

mais le résultat est le même pour tous, le calcul du montant total du panier ne tient jamais compte des centimes lorsque les frais de port sont de 0 euros + quelques centimes.


Bon, ben je n'ai toujours pas trouvé de solution à mon problème.
Mais il me vient une idée : en dehors des fichiers propres au plugin forfait, quel autre fichier natif de Thélia pourrait intervenir sur le calcul du total du panier d'une commande lorsque les frais de port sont de 0 euros + quelques centimes ?

Merci et bonne journée,

Bien cordialement,

Thierry


TS Editions Thisa

Offline


Il y a peut être un arrondi quelque part. Essaie de voir ce que ça fait avec 0.4 et 0.6


OpenStudio Toulouse

Offline


roadster31 wrote:

Il y a peut être un arrondi quelque part. Essaie de voir ce que ça fait avec 0.4 et 0.6

C'est ce que je pense aussi, j'ai donc fait plusieurs essais avec 0.4, 0.6 et autres comme 0.09,  0.25, 0.45... mais à chaque fois les centimes ne sont pas pris en compte dans le total du panier.

Exemple : pour un panier de 20 euros et des frais de port à 0.4 euro, le total qui s'affiche est de 20 euros et non de 20.40 euros.

Par contre, si je mets des frais de port à 1.01 euros le total est le suivant :

Exemple : pour un panier de 20 euros et des frais de port à 1.01 euros, le total qui s'affiche est de 21.01 euros et non de 20.40 euros.

C'est donc bien le 0 avant la virgule qui pose problème dans le calcul du total (le 0 euros).

Last edited by tsabot (30-09-2014 14:29:24)


TS Editions Thisa

Offline


A part un plugin moisi qui bidouille les frais de port, je n'ai pas plus d'idées.


OpenStudio Toulouse

Offline


roadster31 wrote:

A part un plugin moisi qui bidouille les frais de port, je n'ai pas plus d'idées.

Bonjour,

Hier soir, j'ai viré tous les plugins que je n'utilisais pas pour ne laisser que ceux que j'utilise.
En voici la liste :

LISTE DES PLUGINS CLASSIQUES

Filtre mail v1.0   
Ce filtre permet de protéger les adresse e-mail présentes sur votre site des spammeurs. (ID : 12)

Newsletter Basic v1.2.5   
Ce plugin permet d'ajouter, de modifier, de supprimer des mails dans une table ainsi que d'exporter cette liste au format CSV. Il peut aussi exporter la liste des email client. (ID : 35)

Notification de l'inscription d'un nouveau client v2.0
Ce plugin vous avertit par mail lors de l'inscription d'un nouveau client. (ID : 40)

Zfgetipclient v1.1   
Permet de stocker l'adresse IP des clients (ID : 47)

LISTE DES PLUGINS PAIEMENTS
Chèque v1.2
Paypal2 v2.3
Virement v1.
Atos v1.1

LISTE DES PLUGINS TRANSPORTS
Forfait v1.1

Dans cette liste, aucun plugin ne me semble pouvoir interférer avec le montant total d'un panier.
Je sais également que le problème ne peux venir d'un plugin paiement en particulier car aucun ne prend en compte les centimes pour une somme de 0 euros + quelques centimes (0.25 par exemple).

C'est à n'y rien comprendre !

Bien amicalement,

Thierry


TS Editions Thisa

Offline


Bonjour,

Une question au sujet du plugin forfait : est-ce qu'il fonctionne sous Thélia 2 ?

Bien amicalement,

Thierry


TS Editions Thisa

Offline


Aucun plugin Thelia 1 ne fonctionne sur Thelia 2. Il faut une ré-écriture complète.

Peu-être a-t-il déjà été ecrit ?

Voir https://github.com/thelia-modules


OpenStudio Toulouse

Offline


roadster31 wrote:

Aucun plugin Thelia 1 ne fonctionne sur Thelia 2. Il faut une ré-écriture complète.

Peut-être a-t-il déjà été ecrit ?

Voir https://github.com/thelia-modules


Ben non, je viens de regarder, il n'est pas dans la liste des plugins compatibles, comme d'ailleurs d'autres que j'utilise.
Bref, la migration n'est donc pas pour demain...
Tant pis !

Last edited by tsabot (02-10-2014 13:08:38)


TS Editions Thisa

Offline


Enfin, celui-là il est tout simple a écrire smile


OpenStudio Toulouse

Offline


roadster31 wrote:

Enfin, celui-là il est tout simple a écrire smile


Sans doute, mais ce n'est pas dans mon domaine de compétence, déjà que la complexité de la migration vers Thélia 2 me rebute. Si je trouve un peu de disponibilité, je tenterai une installation et une migration en local... mais j'ai bien peur, au final, d'être arrimé à la version 1 (qui d'ailleurs me suffit amplement)...


TS Editions Thisa