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.
Réponses:
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èlesshipping.phtml
etoverview.phtml
sé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.
la source
Mage_Shipping_Model_Shipping
ils 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). -/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.