Fractionnez la commande en commandes distinctes et calculez l'expédition séparément avec ups et fedex et différentes adresses d'origine

8

Lorsqu'un client vient dans notre magasin et va vérifier plusieurs articles, je dois écrire un module pour calculer les frais de port en fonction de plusieurs facteurs. J'ai déterminé à partir de mes recherches que les événements suivants devraient se produire:

Tout d'abord, je dois séparer les articles du panier en différentes commandes pour le calcul de l'expédition. Je souhaite que les commandes soient triées par valeur d'attribut "fournisseur". "Vendeur" est un attribut que nous avons ajouté au système et qui s'applique à tous les produits simples. Disons que dans le panier, il y a une chemise rose avec la valeur "1" du vendeur ", un crayon avec la valeur" 1 "du vendeur et une chemise bleue avec la valeur" 2 "du" vendeur ". Tous les articles avec la valeur «fournisseur» «1» doivent être une commande, tandis que l'article avec la valeur «fournisseur» «2» doit être une commande différente. Je vois que cette autre question répond à ce dilemme, mais en soulève une autre.

Deuxièmement, j'ai besoin de calculer les frais de livraison avec les fonctionnalités d'expédition par défaut de UPS et Fedex de Magento, mais avec une adresse d'origine qui est déterminée par le numéro de valeur «fournisseur» (stocké dans une table de base de données distincte). Toutes les suggestions sont les bienvenues!

J'utilise des extraits de code pour commencer ici et ici .

J'aurai probablement plusieurs questions, mais les premières sont celles en gras ci-dessus.

MISE À JOUR J'ai décidé qu'il serait préférable de remplacer le module de base magento à plusieurs envois pour faire ce que j'essaie de faire. S'il vous plaît, aidez-moi à trouver où et quoi mettre pour manipuler la fonctionnalité de multi-envoi de Magento pour diviser les articles d'une commande en envois en fonction de l'attribut "fournisseur"! Je me bats avec ça.

CaitlinHavener
la source
1
Le multishipping de Magento le fait nativement. Peut-être pouvez-vous utiliser la fonctionnalité de multi-envoi sans l'afficher au client?
philwinkle
Hors sujet: cela vous dérangerait-il d'accepter des réponses ou de clore vos anciennes questions ouvertes? Nous nous efforçons d'obtenir le taux de réponse pendant la version bêta. Merci.
philwinkle
1
J'examinerai à la fois les réponses multiples et non acceptées maintenant. Souvent, je n'ai pas accepté car je suis passé à autre chose et j'y reviendrai. Néanmoins, je vais regarder et voir si j'en ai manqué
CaitlinHavener
Une autre alternative consiste à implémenter quelque chose comme Unirgy uDropship qui intègre également la fonctionnalité de type fournisseur que vous écrivez actuellement; mais il offre aux fournisseurs un portail pour l'expédition, génère des étiquettes d'expédition et bien plus encore. Je ne travaille pas pour, et je ne suis pas approuvé par Unirgy.
philwinkle
1
Je ne veux pas utiliser une extension dropship. Il y a de nombreux facteurs pour lesquels je ne peux pas.
CaitlinHavener

Réponses:

3

Quelque chose à considérer ici est que vous n'aurez peut-être qu'à appliquer des modifications frontales esthétiques aux modèles de multi-envoi ( template/checkout/multishipping/) afin que les deux commandes apparaissent simplement comme une seule commande pour le client. Les modèles shipping.phtmlet overview.phtmlséparent les deux commandes, chacune avec un en-tête (adresse 1 sur 2, etc.) et une autre copie pour montrer qu'il s'agit de deux commandes.

Au lieu de la valeur par défaut, je pourrais suggérer d'être un peu créatif sur ces modèles afin que les deux commandes soient simplement divisées afin qu'elles apparaissent simplement comme deux éléments de campagne distincts.

Le bit suivant serait de gérer différentes origines d'expédition en fonction de l'attribut du fournisseur. Cela pourrait être fait dans Mage_Shipping_Model_Shipping. Vous pouvez voir tout en haut que Magento récupère l'adresse d'origine d'expédition de la configuration, puis plus loin dans la requestToShipment()méthode, les éléments d'adresse d'origine sont attribués à la demande d'expédition (qui, je suppose, sera utilisé plus tard en fonction de la méthode d'expédition). appelé).

Cela pourrait au moins être une direction à suivre. En lisant votre question et votre mise à jour, j'ai l'impression que vous rendez cela plus difficile que nécessaire. Rappelez-vous toujours qu'il est généralement préférable de laisser Magento faire ce qu'il veut, et de ne modifier que les petits morceaux pour gérer vos cas spécifiques. Une majorité de ce dont vous avez besoin est déjà faite en core, il semble donc un peu idiot de réécrire les composants multi-expédition quand il peut y avoir des options plus simples.

pspahn
la source
Comment alors calculerait-il l'expédition pour chaque expédition groupée par attribut de fournisseur?
CaitlinHavener
Les calculs d'expédition ne changeraient pas, car Mage_Shipping_Model_Shippingils remplaceraient simplement l'adresse d'origine dans la demande d'expédition par l'origine attribuée à ce fournisseur. Magento poursuivrait ensuite ses activités et retirerait tous les frais d'expédition qui s'appliqueraient à cette commande. Je pourrais éventuellement voir l'un des modules d'expédition WebShopApps utile ici, car il vous permet d'attribuer des méthodes d'expédition en fonction de divers critères. - encore une fois, c'est tout en théorie, je n'ai jamais fait quelque chose comme ça auparavant, donc il peut y avoir des mises en garde (il y en a toujours). -
pspahn
Je vérifie ces extensions webshopapp. Je pense que ce que je suis en ce moment confus ... c'est ce que la classe / méthode dit à la classe Mage_Shipping_Model_Shipping "hey voici un ordre et ce sont les éléments qu'il contient". Où puis-je trouver ça?
CaitlinHavener
1
Jetez un œil à /app/code/core/Mage/Sales/Model/Quote.php- Gardez à l'esprit que Magento n'est pas aussi linéaire que les autres paniers d'achat. Descendez dans le terrier du lapin et regardez comment les devis sont changés en commandes (et crédits, etc.). À un moment donné, vous trouverez la ou les méthodes que vous souhaitez modifier. Encore une fois, comme je l'ai dit précédemment, il est souvent avantageux d'investir simplement dans un module backend de qualité (et tout aussi important, le support) qui accomplira rapidement ce dont vous avez besoin. Certains écrous et boulons n'aiment pas être changés.
pspahn
Si vous avez besoin de plus de détails, aidez-nous! Merci beaucoup pour l'aide ici aussi. Votre me sauver! C'est le projet Magento le plus difficile que j'ai eu à ce jour! magento.stackexchange.com/questions/7635/…
CaitlinHavener