Jump to content

Bloquer un transporteur en fonction des produits dans le panier


Audigane

Recommended Posts

Bonsoir,

Je viens vers vous car après des recherches je n'ai pas trouvé de solution à mon problème.

Je travaille sous Presta 1.7, et je souhaite en fonction des produits dans mon panier qu'il y ai une règle de gestion pour la proposition du transporteur.

Ex

J'ai dans le panier, le produit A paramétré pour une livraison via La Poste = Pour l'instant pas de problème

J'ajoute à ce panier, un second produit A. Les deux ensembles sont trop volumineux et doivent passer via un transport de messagerie, malheureusement on me propose uniquement La Poste.

2ème exemple :

J'ai dans mon panier le produit C paramétré via un transport de message car trop volumineux.

J'ajoute le produit D paramétré via le transporteur La Poste, et lors de la validation on me propose uniquement le transporteur La Poste alors que le produit ne va jamais être accepté par La Poste.

 

Avez-vous une solution à mon problème?

Merci

Link to comment
Share on other sites

Le 17/03/2022 à 7:44 PM, Audigane a dit :

J'ajoute à ce panier, un second produit A. Les deux ensembles sont trop volumineux et doivent passer via un transport de messagerie, malheureusement on me propose uniquement La Poste.

Bonjour

Vos transporteur sont mal configuré et difficile de vous orienter sans plus d'infos ou capture d'écran.

Voici la doc qui pourra peut être vous aider.

https://doc.prestashop.com/display/PS17/Gerer+les+transporteurs

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

Avez vous trouvez ne solution à votre problème?  avez vous essayer d'ajouter des volumes pour vos article et volume maximum pour vos transporteur ?

 

Je rencontre egalement un problème similaire avec les poids et zone/pays disponible car meme en imposant des règles de transporteur sur mes articles,

mes clients arrive quand meme a effectuer le passage de commande et cela cree une double commande de meme reference avec deux factures différentes.

 

Par exemple l'article A est disponible à l'envoi pour tout les transporteur pour tout les pays

et l'article B est disponible a l'envoi que pour 1 transporteur et uniquement certain pays.

Un client ajoute l'article A et B à son panier mais ne fait pas parti de la liste des pays qui accepte l'envoi de l'article B,

normalement aucun transporteur ne devrait apparaitre mais le panier va quand meme autoriser la commande

par contre si le client avait uniquement l'article B la règle du panier fonctionnerai.

 

Le problème est qu'avec ce panier qui autorise le passage de commande,

ceci va crée deux commandes avec la meme reference avec deux factures dont une avec l'article A et le montant du transport seul

+ une autre facture avec l'article B et le montant du transport s'il était disponible.

 

Es-ce que quelqu'un rencontre également ce problème sur version 1.7.8 ?

Cordialement

 

Link to comment
Share on other sites

Salut,

C’est un problème connu sur 1.7 et 1.6 notamment depuis le retrait de la fonctionnalité de la 1.5 qui permettait de choisir plusieurs transporteurs.

Le système de package existe toujours, le panier est composer d’un ou plusieurs packages chacun pouvant être associé à une adresse de livraison et un transporteur.

Mais depuis le retrait de la fonctionnalité, il n’est plus possible de choisir un transporteur et une adresse de livraison pour chaque package dans le tunnel de commande.

Au moment où un module de paiement demande de transformer le panier en commande, PrestaShop va créer une commande par package et associer le seul transporteur qui a été sélectionné par le client.

Ce qui provoque un soucis avec les différentes commandes créées qui n’ont pas le bon transporteur associé (car incompatible) et/ou les frais de livraison qui n’ont du coup pas été payé sur toutes les commandes causant un écart de montant total payé versus montant total de la somme de tous les montants total de chaque commande.

La seule façon de bloquer ce genre de commande ou de les autoriser en restaurant la possibilité choisir un transporteur et une adresse de livraison pour chaque package, c’est de passer par un module…

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

Pour les développeurs de module, il existe des hooks et des méthodes sur le panier pour arriver à restaurer le système mais cela demande également de modifier les modules de livraison afin de leur faire prendre en charge le système...

Connaitre le nombre de package du panier en cours : https://github.com/PrestaShop/PrestaShop/blob/1.7.8.5/classes/Cart.php#L2516

Récupérer la liste des packages du panier en cours : https://github.com/PrestaShop/PrestaShop/blob/1.7.8.5/classes/Cart.php#L2543

Récupérer l'identifiant de l'entrepôt (fonctionnalité également supprimée dans la 1.7) associé au panier en cours https://github.com/PrestaShop/PrestaShop/blob/1.7.8.5/classes/Cart.php#L2783

Récupérer les frais de livraison d'un package du panier en cours : https://github.com/PrestaShop/PrestaShop/blob/1.7.8.5/classes/Cart.php#L3547

Les modules de livraison peuvent implémenter la fonction getPackageShippingCost pour retourner les frais de livraison d'un package (ce qu'ils ne font pas et qu'on doit donc ajouter nous même) : https://github.com/PrestaShop/PrestaShop/blob/1.7.8.5/classes/Cart.php#L3880

En plus de modifier chaque module de livraison, il faut ensuite modifier le tunnel de commande afin de pouvoir sélectionner un transporteur pour chaque package à l'étape de livraison, on peut utiliser les hooks existant et du javascript pour éviter de toucher au Core mais c'est du boulot

Il y a pas mal de boulot et il faut s'assurer que cela fonctionner correctement au niveau des calculs de prix et de la facturation...

Link to comment
Share on other sites

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...