2 votes

Magento - Réglage du transporteur par produit

Je travaille sur un magasin qui propose deux types de produits : des denrées périssables et des marchandises générales. Les aliments doivent toujours être expédiés le lendemain par FedEx, et les autres marchandises doivent toujours être expédiées par USPS. Si quelqu'un commande des produits des deux catégories, ils doivent être expédiés séparément.

Connaissez-vous un module existant ou des paramètres de configuration qui permettraient cela ?

Sinon, il semble qu'un module personnalisé soit l'autre solution. Dans ce cas, quelle est la meilleure approche ? Je pense qu'il s'agirait de diviser la commande en un envoi multi-adresses, en utilisant la même adresse pour les deux, mais avec des méthodes d'expédition différentes. Malheureusement, je ne suis pas sûr de savoir comment faire cela par programmation, donc tout tutoriel/exemple/ressource serait grandement apprécié.

3voto

unknownnf Points 349

Probablement le le plus sain La meilleure façon de gérer ce problème serait de créer deux commandes par type de produit, chacune étant expédiée par un transporteur différent à la même adresse. Cette solution est également plus logique du point de vue du suivi des magasins, car vous pouvez traiter chaque commande indépendamment de l'autre.

Pour vous mettre sur la bonne voie (puisque Magento est particulièrement cryptique dans cette partie de lui-même), vous devriez lire le document suivant Création programmatique d'une commande dans Magento par Inchoo post et par le même auteur Création programmée d'un client et d'une commande dans Magento avec une page complète de paiement. .

En gros, je vois les choses comme ça :

  1. Obtenir la commande du client
  2. Itérer à travers chaque produit de la commande et le diviser en deux tableaux pour chaque type de produit.
  3. Créez une commande distincte pour chaque type de produit et utilisez les différentes méthodes d'expédition pour chacun.

Vous devrez probablement étendre certains contrôleurs OU le faire de manière non standard en utilisant des fonctions d'aide. Le plus difficile sera d'intégrer les modules de paiement/expédition dans votre processus de commande. En procédant de cette manière, vous devrez créer un processus de paiement complet, car la page de paiement unique proposée par Magento ne fonctionne pas vraiment et est trop difficile à faire fonctionner en raison de la manière dont elle utilise AJAX.

Une autre solution consiste à se connecter aux événements de pré-création de commande de Magento et à créer les commandes à partir des données de commande déjà définies, en les divisant en deux commandes, mais c'est quelque chose que je n'ai jamais entendu ou vu mis en œuvre pour l'instant, donc il faut le faire "les yeux bandés" pour ainsi dire.

Une approche plus simple serait d'utiliser un champ personnalisé qui définit la méthode d'expédition de votre produit, de cette façon vous ajoutez simplement cela et ne vous souciez pas des commandes personnalisées. Vous réagissez simplement avec cela, cependant le suivi deviendra pratiquement impossible IMO.

0voto

ʍǝɥʇɐɯ Points 2740

Annulez le module de livraison gratuite.

Vous pouvez définir une règle de vente qui s'applique à certains produits et les rend "gratuits", laissant les autres produits à votre fournisseur principal.

Il vous faudra voir comment cela fonctionne, mais le fait est que Magento a intégré une fonction permettant de diviser une commande en deux catégories d'expédition, même s'il n'existe qu'une règle de vente pour l'expédition gratuite. Mais vous avez le code source...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X