Jump to content

Frais de port selon transporteur et zones


Szed

Recommended Posts

Question qui doit revenir souvent, mais pas de réponse miracle.

Outre la technique de gérer cela en tranche de prix que l'on peut du coup spécifier par zones/transporteurs.

 

Y a-t-il un module permettant de faire cela proprement ?

 

Car pour un transporteur, j'aurais besoin de passer en mode "tranche par poids" (ce transporteur ne doit s'afficher que si tout les produits du panier remplissent certaines conditions, donc on penser tricher avec le poids...). Ce afin de pouvoir proposer la lettre max si tout les produits du panier peuvent partir en lettre max.

 

Thanks.

Edited by Szed (see edit history)
Link to comment
Share on other sites

Au final j'ai procédé comme cela :

 

 - passage de tout les produits à 1kg, sauf ceux qui pourront passer par lettre max que l'on laisse à 0.

 - création des transporteurs par tranches de prix, pour gérer les franco librement par zone/transporteur.

 - pour le transporteur lettre max : poid du paquet max à 0.0001 kg. Du coup, il n'est proposé que si le panier ne contient que des produits de 0 kg.

 

Ca semble correct ? Ou complètement aberrant ? ^^

Edited by Szed (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

 

Je reviens sur ce topic parce que j'ai le même problème sauf que c'est pour le transporteur socollisimo mais contrairement à Szed tout mes produits peuvent-être envoyé.

J'ai donc définis un poids maximum de 2kg pour l'envoi sauf que même avec plus de 2kg de produit socollisimo apparaît encore.

 

Auriez-vous une solutions?

 

Baptiste

Link to comment
Share on other sites

Merci de ta réponse,

 

Mais enfaite mes tranches sont paramétrées en prix et non en poids!

 

Du coup je souhaiterais que la livraison sois offerte au-dessus de 50 euros mais que si ça dépasse 2kg le transporteur ne sois pas proposé.

 

Peut-être il existe une autre manière de faire?

Link to comment
Share on other sites

Je remet ici ce que je viens de dire à Pouc en message privé histoire que ça profite à tous le monde.

Donc pour faire en sorte d'utiliser les tranches par prix mais qu'un transporteur puisse être désactivé si un poids total du panier est dépassé voici le principe à suivre (par contre pour le développement proprement dit je vous laisse vous amuser :D).

 

1) repérer la fonction qui donne le poids total du panier elle se trouve dans la class cart.php si je ne me trompe pas et doit s'appeler totalWeight ou un truc dans le genre.

 

2) Repérer toujours dans la class cart la fonction qui va définir les transporteurs valable pour le panier courant elle doit s'appeler getDeliveryOption ou un truc du genre.

 

3) modifier cette dernière fonction pour qu'elle vérifie également le poids total du panier (via la fonction que t'as repéré étape 1). Si le poids dépasse 2000 (je crois que c'est en grammes) tu enlèbe le transporteur que tu veux pas voir apparaître dans ce cas (il faut que tu repère son ID)

 

Ps: je te conseille très fortement de faire toutes ces modifs via des overrides pour conserver l'intégrité de ton prestashop

Link to comment
Share on other sites

Prend la tranche la plus grande oui.

Mais j'ai testé avec la première tranche, et même chose.

 

Mais au final, on a tout ce qu'il faut dans le TPL pour faire la vérif poids panier/poid maxi du transporteur, afin de cacher ou non le transporteur, donc on va s'en sortir =)

Link to comment
Share on other sites

Bon, en fait, solution cache misère un peu.

 

Comme cela ne fait que cacher mon transporteur, le panier peut toujours afficher "Frais de port gratuit", si le transporteur par défaut est un des transporteur qui se fait cacher par la suite...

 

Bizarre que cette histoire de poid maxi par panier ne marche plus (ca semblait marcher tres bien lors des premiers test, puis d'un coup, plus du tout).

 

Une idée ? Il faudrait faire la modif (comparaison poid maxi transporteur et poid panier) que j'ai fait dans le TPL, dans la classe Order plutot (comme ce que tu conseille plus haut), mais la partie Carrier est un peu...costaud... x)

Edited by Szed (see edit history)
Link to comment
Share on other sites

Je viens de le faire, pas de changement.

Je l'ai fait sans grande conviction non plus car je vois pas trop ou tu veux en venir avec class_index :P

 

Est-ce qu'avec @Pouc (cf plus haut), tu as vu la modif a apporter a la classe Order.php ? Ou juste l'"idée" de la modif ?

Link to comment
Share on other sites

Bien, j'ai peut être trouvé ce que je cherchais.
Dans la function getAvailableCarrierList de la classe Carrier, tout en bas, j'ai rajouté la dernière ligne du if  : 

if (($carrier->max_width > 0 && $carrier->max_width < $product->width)
|| ($carrier->max_height > 0 && $carrier->max_height < $product->height)
|| ($carrier->max_depth > 0 && $carrier->max_depth < $product->depth)
|| ($carrier->max_weight > 0 && $carrier->max_weight < $product->weight)
|| ($carrier->max_weight > 0 && (float)$carrier->max_weight < $cart->getTotalWeight())
){
unset($carrier_list[$key]);
}

Sans celle ci, ce que le transporteur comprend par "poids maxi du panier", est en fait : poids maxi du produit lors de l'ajout apparemment (cf la ligne juste au dessus).

Edited by Szed (see edit history)
Link to comment
Share on other sites

Tiens je connaissais pas cette partie du code. Ca semble juste en effet.

Le $carrier->$max_weight c'est normalement pour le poids maximum du paquet que tu peux définir dans les caractéristiques de ton transporteur.

Avec ce que tu viens de faire cette valeur devient alors le poids maximum du panier global. Je n'y vois pas de problème particulier sauf si un transporteur pouvais accepter des panier complet de 10Kg par exemple mais composer de produits de maxi 5Kg

 

(En gros si ton transporteur à vraiment une limite en poids par paquet mais pas en poids global de la commande, dans ce cas tu ne pourrai plus définir le poids limite par paquet)

Link to comment
Share on other sites

  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...