Szed Posted September 2, 2014 Share Posted September 2, 2014 (edited) 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 September 19, 2014 by Szed (see edit history) Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted September 3, 2014 Share Posted September 3, 2014 Pourquoi ne pas plutôt modifier le controller qui affiche les transporteurs en checkant sur le poids du panier et en ajoutant ou enlevant le transporteur "lettre max" selon le poids total ? Link to comment Share on other sites More sharing options...
Szed Posted September 3, 2014 Author Share Posted September 3, 2014 C'est probablement ce que je vais faire. Je cherchais à voir si je ne passais pas à côté d'un module qui réglait la question (question qui revient assez souvent ) Thanks Link to comment Share on other sites More sharing options...
Szed Posted September 3, 2014 Author Share Posted September 3, 2014 (edited) 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 September 3, 2014 by Szed (see edit history) Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted September 3, 2014 Share Posted September 3, 2014 Ca semble correct en effet. Par contre un panier qui fait 0Kg proposera lettre max ET les autres transporteurs ce n'est pas un problème ? Link to comment Share on other sites More sharing options...
Szed Posted September 3, 2014 Author Share Posted September 3, 2014 Ouaip, ca ce n'est pas un problème. La cliente veut tout de même laisser le choix. Merci pour ton retour. Link to comment Share on other sites More sharing options...
Finality Posted September 4, 2014 Share Posted September 4, 2014 Petite question : si vous avez une commande de 6 produits à un poids de 0, la lettre Max vous sera proposée alors que les 6 produits ne rentreront peut être pas dedans non ? Link to comment Share on other sites More sharing options...
Szed Posted September 4, 2014 Author Share Posted September 4, 2014 Effectivement, mais la cliente en est bien consciente. Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted September 4, 2014 Share Posted September 4, 2014 Tu peux peut-être définir 15 grammes par produits et faire une tranche à 80 grammes ce qui limiterai le problème Link to comment Share on other sites More sharing options...
Szed Posted September 4, 2014 Author Share Posted September 4, 2014 Ouaip, c'est ce qui est prévu du coup. Link to comment Share on other sites More sharing options...
pouc Posted September 16, 2014 Share Posted September 16, 2014 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 More sharing options...
Olivier CLEMENCE Posted September 16, 2014 Share Posted September 16, 2014 C'est peut être le réglage du comportement hors tranche du transporteur. Je n'ai plus la dénomination exacte mais tu peux définir un comportement lorsque le panier ne respecte aucune des tranches définie pour le transporteur. Soit ne pas afficher le transporteur soit prendre la tranche la plus grande. Link to comment Share on other sites More sharing options...
pouc Posted September 16, 2014 Share Posted September 16, 2014 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 More sharing options...
Olivier CLEMENCE Posted September 16, 2014 Share Posted September 16, 2014 Non là tu ne pourra pas le faire sans développement spécifique. Prestashop (de base) n'est pas capable de fonctionner en poids ET en prix. J'avais fait quelques choses d'approchant pour un client en ajoutant des conditions dans la class cart, c'est elle qui calcul le poids d'un panier. Link to comment Share on other sites More sharing options...
pouc Posted September 16, 2014 Share Posted September 16, 2014 Parfait, Merci je vais regarder ce que tu me propose et si j'y arrive pas je passerais une journée supplémentaire sur le forum pour trouver le bon dev!! Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted September 16, 2014 Share Posted September 16, 2014 <-- le bon dev Link to comment Share on other sites More sharing options...
pouc Posted September 16, 2014 Share Posted September 16, 2014 ^^ je reviendrais vers toi alors!!=) 1 Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted September 16, 2014 Share Posted September 16, 2014 ça marche bon courage Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted September 16, 2014 Share Posted September 16, 2014 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 ). 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 More sharing options...
Szed Posted September 19, 2014 Author Share Posted September 19, 2014 Hellllo En fait, ca ne fonctionne pas tout à fait... Poid total de mon panier : 0.3kg Et pourtant, j'ai des transporteurs qui apparaissent, alors qu'ils normalement limité à 0.1kg ou 0.2kg ... Une idée ? Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted September 19, 2014 Share Posted September 19, 2014 Comportement du transporteur si hors tranche ? (par défaut prend la tranche la plus grande non ?) Link to comment Share on other sites More sharing options...
Szed Posted September 19, 2014 Author Share Posted September 19, 2014 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 More sharing options...
Olivier CLEMENCE Posted September 22, 2014 Share Posted September 22, 2014 Le caché c'est bien mais pas forcément suffisant un petit malin pourrai toujours aller chercher le transporteur masqué pour passer sa commande. Link to comment Share on other sites More sharing options...
Szed Posted September 22, 2014 Author Share Posted September 22, 2014 Oui c'est sur. Mais par le cacher, j'entendais ne pas du tout l'afficher. Link to comment Share on other sites More sharing options...
Szed Posted September 22, 2014 Author Share Posted September 22, 2014 (edited) 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 September 22, 2014 by Szed (see edit history) Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted September 22, 2014 Share Posted September 22, 2014 Tu as supprimé ton fichier class_index.php ? Link to comment Share on other sites More sharing options...
Szed Posted September 23, 2014 Author Share Posted September 23, 2014 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 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 More sharing options...
pouc Posted September 23, 2014 Share Posted September 23, 2014 D’après ces conseils c'était la classe cart.php et pour l'instant je me suis rapidement penché sur " l'idée " mais je galère un peu!! Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted September 23, 2014 Share Posted September 23, 2014 class_index.php garde en mémoire les liens entre chaque class. Si tu créé un override qui va surchargé une de tes class et que tu n'efface pas ton fichier class_index.php le lien n'existera pas et ton override ne sera pas prit en compte. Bon pour le coup ça n'était pas le problème Link to comment Share on other sites More sharing options...
Szed Posted September 24, 2014 Author Share Posted September 24, 2014 (edited) 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 September 24, 2014 by Szed (see edit history) Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted September 25, 2014 Share Posted September 25, 2014 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 More sharing options...
pouc Posted September 25, 2014 Share Posted September 25, 2014 Parfait ça fonctionne trés bien!! =) Un grand merci à vous!! Baptiste Link to comment Share on other sites More sharing options...
presta'luv Posted December 3, 2014 Share Posted December 3, 2014 Bonjour à tous, Je cherche à faire la même chose sur un Prestashop 1.4.7.0 mais je ne trouve pas cette fonction dans la Classe Carrier.php. Une idée du code à intégrer pour cette version de PS ? Merci d'avance ! Link to comment Share on other sites More sharing options...
terroirsmarket.com Posted December 8, 2014 Share Posted December 8, 2014 Bonjour J'ai un pb semble similaire, j'ai tout paramétré par tranche avec un seul transport, par contre, le cout ne se cumule pas avec le poids qui augmente et j'ai même des coûts à 0 sur certains produits Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now