Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Page 2 of 3
Configurer les envois pour un tarif en fonction du poids et de la destination
 
nicolas46
Sr. Member
 
Total Posts:  210
Joined:  2008-04-09
Toulouse
 

Visiblement il y a un bug global sur l’estimation des taxes de transport :
http://www.magentocommerce.com/bug-tracking/issue?issue=2027

 
Magento Community Magento Community
Magento Community
Magento Community
 
nicolas46
Sr. Member
 
Total Posts:  210
Joined:  2008-04-09
Toulouse
 

Comme l’indique VR… il faut aller trafiquer un peu le fichier Tablerate.php.
En attendant la résolution complète de ce bug par Varien il suffit de modifier le code :

$select->where(
            
$read->quoteInto("(dest_country_id=? AND dest_zip=?)"$request->getDestCountryId(), $request->getDestPostcode()). 
            
$read->quoteInto(" OR (dest_region_id=? AND dest_zip='')"$request->getDestRegionId()).
             
$read->quoteInto(" OR (dest_region_id=? )"$request->getDestRegionId()).
            
$read->quoteInto(" OR (dest_country_id=? AND dest_region_id='0' AND dest_zip='')"$request->getDestCountryId()).
            
"OR (dest_country_id='0' AND dest_region_id='0' AND dest_zip='')"
        
);
Par un “where” qui correspond au besoin spécifique de chacun de nos sites.
Par exemple dans mon cas, mon besoin est simple : Livraison en France 10€ ,dans l’europe 20€ mon code :

if ($request->getDestCountryId()!="FR"){
            $select
->where("dest_country_id='0'");    
        
}else{
            $select
->where(
            
$read->quoteInto("dest_country_id=?"$request->getDestCountryId())); //simplifiable
        
}

Mon CSV :

“Country”,"Region/State","Zip/Postal Code","Order Subtotal (and above)","Shipping Price”
*,*,*,0.0000,8.0000
FRA,*,*,0.0000,5.0000

Votre besoin semble plus complexe mais au fond ce n’est qu’une requête SQL à modifier, d’ailleur un :

print_r$select->__toString());
Vers la fin du fichier Tablerate.php permet de voir la requête générée.
 
Magento Community Magento Community
Magento Community
Magento Community
 
SeL_
Magento Team
 
Avatar
Total Posts:  1140
Joined:  2007-10-10
Paris, France
 

@nicolas46
Comme je l’ai dit dans un post précédent, il faut éviter de mettre les astérisques dans le fichier CSV.
Attention également à tes codes pays. Relis mon précédent post.
J’ai refait des tests et le comportement est correct, sans avoir à modifier le fichier Tablerate.php.

J’ai fait des tests avec le mode “Poids par destination” et “Prix par destination”.
Avec une configuration “Prix par destination” et le fichier CSV suivant:

"Pays","Région/État","Code postal","Sous-total de la commande (et au-delà)","Prix de transport"
"BE"
,,,0,1
"BE",,,100,2
"BE",,,200,3
"BE",,,300,4
"BE",,,400,5
"BE",,,500,6
"CH",,,0,11
"CH",,,100,12
"CH",,,200,13
"CH",,,300,14
"CH",,,400,15
"CH",,,500,16
Lorsque j’ai pour 120 euros dans mon panier, l’estimation du transport me donne bien 2 euros pour la Belgique et 12 euros pour la Suisse.
Si j’ajoute un article et que le sous-total de mon panier passe à 210 euros, l’estimation du transport me donne bien 3 euros pour la Belgique et 13 euros pour la Suisse.
 
Magento Community Magento Community
Magento Community
Magento Community
 
nicolas46
Sr. Member
 
Total Posts:  210
Joined:  2008-04-09
Toulouse
 

@Sel
Ok pour les astérisques.

Comme le dit dev722z et VR… :

ton format de CSV passe nickel mais le changement de tarif ne marche pas si je n’enlève pas la ligne 69 de Tablerate.php. J’ai beau effacer le cache, faires des règles simples… Le tarif le plus élevé est celui qui est choisi par Magento. Peu importe le pays.

En fait lorsque tu tests d’estimation est-ce que tu change plein de fois de pays ?, je veux dire : est-ce que tu fais par exemple :
Belgique->Suisse->Belgique->Suisse (comportement bizarre pour un client je te l’accorde smile )

Parce que si on fait pas ça y a pas de problème mais si on a ce comportement alors sa bug:
La première estimation me donne 6€ (panier à 800€) la seconde 16€, la troisième 16€, et la quatrième 16 aussi.

 
Magento Community Magento Community
Magento Community
Magento Community
 
SeL_
Magento Team
 
Avatar
Total Posts:  1140
Joined:  2007-10-10
Paris, France
 

Oui, j’ai essayé ce comportement bizarre smile
Et le résultat est celui attendu.
Belgique -> 2€
Suisse -> 12€
Belgique -> 2€
Suisse -> 12€
Belgique -> 2€
Suisse -> 12€

J’arrête là, hein… smile

 
Magento Community Magento Community
Magento Community
Magento Community
 
nicolas46
Sr. Member
 
Total Posts:  210
Joined:  2008-04-09
Toulouse
 

Moui c’est bon tu peux d’arrêter là. Ben je comprends pas alors rolleyes . Peut-être poste ici ton Tablerates.php ou je ne sais pas quoi.
Peut être que dev722z, VR, et moi même avons modifier quelque chose quelque part >:( .

 
Magento Community Magento Community
Magento Community
Magento Community
 
MmaxX
Sr. Member
 
Avatar
Total Posts:  112
Joined:  2008-04-01
 

Juste une remarque par rapport aux étoiles (*) et aux guillemets ou double quotes (").

Quand j’importe le fichier :

"Pays","Région/État","Code postal","Poids (et au-delà)","Prix de transport"
"BE"
,,,"0.0000","1"
"BE"
,,,"100.0000","2"
"BE"
,,,"200.0000","3"
"BE"
,,,"500.0000","4"
"CH"
,,,"0.0000","11"
"CH"
,,,"100.0000","12"
"CH"
,,,"200.0000","13"
"CH"
,,,"500.0000","14" 
"FR"
,,,"0.0000","3"
"FR"
,,,"100.0000","3"
"FR"
,,,"200.0000","18"
"FR"
,,,"300.0000","26"

et que je l’exporte ensuite, j’obtiens :

"Pays","Région/État","Code postal","Poids (et au-delà)","Prix de transport"
BEL,*,*,200.0000,3.0000
BEL
,*,*,100.0000,2.0000
BEL
,*,*,0.0000,1.0000
BEL
,*,*,500.0000,4.0000
CHE
,*,*,500.0000,14.0000
CHE
,*,*,200.0000,13.0000
CHE
,*,*,100.0000,12.0000
CHE
,*,*,0.0000,11.0000
FRA
,*,*,300.0000,26.0000
FRA
,*,*,200.0000,18.0000
FRA
,*,*,100.0000,3.0000
FRA
,*,*,0.0000,3.0000

Donc je ne pense pas que les guillemets et étoiles aient une importance capitale.

 
Magento Community Magento Community
Magento Community
Magento Community
 
dev722z
Member
 
Total Posts:  65
Joined:  2008-04-08
 

@SeL : je viens de reprendre ton tableau et effectivement ça fonctionne bien avec suisse/Belgique.

Si maintenant je rajoute la France comme cela:

"Pays","Région/État","Code postal","Sous-total de la commande (et au-delà)","Prix de transport"
"BE"
,,,0,1
"BE",,,100,2
"BE",,,200,3
"BE",,,300,4
"BE",,,400,5
"BE",,,500,6
"CH",,,0,11
"CH",,,100,12
"CH",,,200,13
"CH",,,300,14
"CH",,,400,15
"CH",,,500,16
"FR",,,0,17
"FR",,,100,18
"FR",,,200,19
"FR",,,300,20
"FR",,,400,21
"FR",,,500,22

Alors c’est toujours ok pour Belgique et Suisse, mais pour la France:
- en mode invité:
- si j’arrive du panier: c’est le tarif de la belgique qui est appliqué
- si je modifie les adresses dans le onepage ckeckout, ça devient bon après quelques manipulations
- avec un compte utilisateur et des adresses enregistrées ce sont les tarifs de la belgique qui sont systématiquement appliqués

Bref, je constates toujours un problème.
Est-ce lié à la France en particulier ? Je ne sais pas mais en tout cas dans l’exemple ci-dessous tout fonctionne correctement pour la Belgique et la Suisse.

dev722z

 
Magento Community Magento Community
Magento Community
Magento Community
 
nicolas46
Sr. Member
 
Total Posts:  210
Joined:  2008-04-09
Toulouse
 

C’est bien possible parce que pour mes tests j’ai oublié de signaler que j’avais transformé le CSV de Sel comme ceci :

"Pays","Région/État","Code postal","Sous-total de la commande (et au-delà)","Prix de transport"
"BE"
,,,0,1
"BE",,,100,2
"BE",,,200,3
"BE",,,300,4
"BE",,,400,5
"BE",,,500,6
"FR",,,0,11
"FR",,,100,12
"FR",,,200,13
"FR",,,300,14
"FR",,,400,15
"FR",,,500,16

La suisse ne faisant pas partie des pays que je livre.

 
Magento Community Magento Community
Magento Community
Magento Community
 
MmaxX
Sr. Member
 
Avatar
Total Posts:  112
Joined:  2008-04-01
 

Je viens de remarquer quelque chose d’intéressant, qui est peut-être la raison de nos problèmes.

Regardez attentivement dans mon post précédent comment le fichier que j’ai importé a été modifié à l’exportation.
En-dehors des caractères qui ont changés, des lignes ont été inversées, la ligne de la Belgique à 500 n’est pas classée comme les autres.

Voilà, c’est une piste.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Otaugames
Sr. Member
 
Total Posts:  101
Joined:  2007-10-07
Troyes, France
 

Je viens de tester avec le fichier de SeL et à priori ça fonctionne chez moi également (sans modification du code). Par contre, si je modifie CH par FR pour appliquer les tarifs à la France, ça ne fonctionne plus. Seuls les tarifs pour la Belgique ressortent.

La seule différence que je note entre la France et la Suisse est qu’on ne sélectionne aucune région pour la France alors qu’on le fait pour la Suisse à l’aide d’une liste déroulante. Ne pourrait-on pas penser que le fichier de SeL fonctionne car seul un pays sur les deux n’oblige pas à choisir la région ? Alors que dans le cas où deux pays n’obligerais pas au choix de la région (cas FR et BE), il y aurait effectivement un bug qui prendrais le tarif du pays le plus élevé pour le poids donné ?

En tout cas, ça collerais avec la proposition de VR… qui supprime ce qui est en rapport avec la région et le code postal. SeL, si tu as le temps, pourrais-tu faire le test avec la Belgique et la France, pour voir si ça marche toujours pour toi dans ce cas ? Ca permettrait d’affirmer ou d’infirmer cette piste.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Otaugames
Sr. Member
 
Total Posts:  101
Joined:  2007-10-07
Troyes, France
 

Je continue à triturer ce fichier tablerates et je n’arrive pas à trouver de point commun…

Pour commencer ma base de travail (tarifs Colissimo pour la France, la Belgique, la Suisse et la Guadeloupe, avec ajout d’un 9 volontairement devant ceux de la Suisse pour les différencier de la Belgique) :

"Pays","Région/État","Code postal","Poids (et au-delà)","Prix de transport"
"FR"
,,,"0.0000","5.3000"
"FR"
,,,"0.5000","6.5000"
"FR"
,,,"1.0000","7.4000"
"FR"
,,,"2.0000","8.3000"
"FR"
,,,"3.0000","10.1000"
"FR"
,,,"5.0000","11.9000"
"FR"
,,,"7.0000","14.6000"
"FR"
,,,"10.0000","16.6000"
"FR"
,,,"15.0000","22.6000"
"BE"
,,,"0.0000","15.6000"
"BE"
,,,"1.0000","17.1500"
"BE"
,,,"2.0000","20.7500"
"BE"
,,,"3.0000","24.3500"
"BE"
,,,"4.0000","27.9500"
"BE"
,,,"5.0000","31.5500"
"BE"
,,,"6.0000","35.1500"
"BE"
,,,"7.0000","38.7500"
"BE"
,,,"8.0000","42.3500"
"BE"
,,,"9.0000","45.9500"
"BE"
,,,"10.0000","52.9500"
"BE"
,,,"15.0000","59.9500"
"BE"
,,,"20.0000","66.9500"
"BE"
,,,"25.0000","73.9500"
"CH"
,,,"0.0000","915.6000"
"CH"
,,,"1.0000","917.1500"
"CH"
,,,"2.0000","920.7500"
"CH"
,,,"3.0000","924.3500"
"CH"
,,,"4.0000","927.9500"
"CH"
,,,"5.0000","931.5500"
"CH"
,,,"6.0000","935.1500"
"CH"
,,,"7.0000","938.7500"
"CH"
,,,"8.0000","942.3500"
"CH"
,,,"9.0000","945.9500"
"CH"
,,,"10.0000","952.9500"
"CH"
,,,"15.0000","959.9500"
"CH"
,,,"20.0000","966.9500"
"CH"
,,,"25.0000","973.9500"
"GP"
,,,"0.0000","8.1000"
"GP"
,,,"0.5000","12.2000"
"GP"
,,,"1.0000","16.6500"
"GP"
,,,"2.0000","21.1000"
"GP"
,,,"3.0000","25.5500"
"GP"
,,,"4.0000","30.0000"
"GP"
,,,"5.0000","34.4500"
"GP"
,,,"6.0000","38.9000"
"GP"
,,,"7.0000","43.3500"
"GP"
,,,"8.0000","47.8000"
"GP"
,,,"9.0000","52.2500"
"GP"
,,,"10.0000","74.7500"
"GP"
,,,"15.0000","97.2500"
"GP"
,,,"20.0000","119.7500"
"GP"
,,,"25.0000","142.2500"

Je fais donc mes tests avec deux articles dans le panier pour un poids total de 10Kg + 0.3Kg = 10.3 Kg, et voici les résultats selon le pays séléctionné :
- France : 52,95 // Faux, c’est le tarif de la Belgique qui sort
- Belgique : 52,95 // OK !
- Suisse : 952,95 // OK !
- Guadeloupe : 74,75 // OK !

Ca n’est donc pas encore ce que je disais avant : la Guadeloupe ne nécessite pas de saisir la région ou le CP, et pourtant le bon tarif sort ...

En dernier recours, je me suis donc lancé à la lecture du fichier Tablerate.php, et n’étant pas un as du PHP, j’ai bidouillé quelque chose qui marche en m’inspirant de la ligne immédiatement au dessus et en dessous. Au lieu de supprimer la ligne 69 comme le suggère VR..., je l’ai modifié en ajoutant le “dest_country_id” puisqu’à aucun moment il n’apparaissait contrairement aux autres lignes :

$read->quoteInto(" OR (dest_country_id=? AND dest_region_id=? AND dest_zip='')"$request->getDestCountryId(), $request->getDestRegionId()).

Je pose donc ma questions à ceux qui maitrisent, est-ce que ma modification semble “cohérente” ? Est-ce mieux ainsi ou en supprimant la ligne comme VR… ?

 
Magento Community Magento Community
Magento Community
Magento Community
 
nicolas46
Sr. Member
 
Total Posts:  210
Joined:  2008-04-09
Toulouse
 

Bon on en est où sur ce problème ? j’ai modifié tablerates.php à ma façon pour qu’il fonctionne sur le site que nous devons livrer mais j’aurais préféré une résolution globale du bug.

 
Magento Community Magento Community
Magento Community
Magento Community
 
chatlumo
Guru
 
Total Posts:  301
Joined:  2008-02-20
Paris
 

Aucune news sur ce sujet ?
Je m’apprête à lancer ma boutique et ça m’inquiète…

 
Magento Community Magento Community
Magento Community
Magento Community
 
nicolas46
Sr. Member
 
Total Posts:  210
Joined:  2008-04-09
Toulouse
 

Item

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top
Page 2 of 3