Wenn ein Kunde in unser Geschäft kommt und mehrere Artikel auscheckt, muss ich ein Modul schreiben, um den Versand anhand mehrerer Faktoren zu berechnen. Ich habe aus meiner Forschung festgestellt, dass Folgendes passieren sollte:
Zuerst muss ich die Warenkorbartikel für die Versandberechnung in verschiedene Bestellungen aufteilen. Ich möchte, dass die Bestellungen nach dem Attributwert "Lieferant" sortiert werden. "Anbieter" ist ein Attribut, das wir dem System hinzugefügt haben und das für alle einfachen Produkte gilt. Nehmen wir also an, im Einkaufswagen befindet sich ein rosa Hemd mit dem "Verkäufer" -Wert "1", ein Bleistift mit dem "Verkäufer" -Wert "1" und ein blaues Hemd mit dem "Verkäufer" -Wert "2". Alle Artikel mit dem "Lieferanten" -Wert "1" müssen eine Bestellung sein, während der Artikel mit dem "Lieferanten" -Wert "2" eine andere Bestellung sein muss. Ich sehe, dass diese andere Frage dieses Dilemma beantwortet, aber dann eine andere aufwirft.
Zweitens muss ich den Versand mit den Standard-UPS- und Fedex-Versandfunktionen von Magento berechnen, jedoch mit einer Ursprungsadresse, die durch die Wertnummer des "Lieferanten" bestimmt wird (in einer separaten Datenbanktabelle gespeichert). Anregungen willkommen!
Ich verwende Codefragmente, um von hier und hier loszulegen .
Ich werde wahrscheinlich mehrere Fragen haben, aber die ersten sind die oben fett gedruckten.
UPDATE Ich entschied, dass es am besten ist, das Magento-Kernmodul für mehrere Sendungen zu überschreiben, um das zu tun, was ich versuche. Bitte helfen Sie mir, herauszufinden, wo und was Sie einsetzen müssen, um die Multishipping-Magento-Funktionalität zu manipulieren und die Artikel einer Bestellung basierend auf dem Attribut "Anbieter" in Sendungen aufzuteilen! Ich kämpfe damit.
Antworten:
Hierbei ist zu berücksichtigen, dass Sie möglicherweise nur einige kosmetische Front-End-Änderungen an den Multishipping-Vorlagen (
template/checkout/multishipping/
) vornehmen müssen, damit die beiden Bestellungen dem Kunden einfach als eine Bestellung angezeigt werden . Die Vorlagenshipping.phtml
undoverview.phtml
teilen die beiden Bestellungen mit jeweils einer Kopfzeile (Adresse 1 von 2 usw.) und einer anderen Kopie auf, um anzuzeigen, dass es sich um zwei Bestellungen handelt.Anstelle der Standardeinstellung kann ich vorschlagen, diese Vorlagen ein wenig kreativ zu gestalten, damit die beiden Bestellungen einfach aufgeteilt werden und einfach als zwei separate Werbebuchungen angezeigt werden.
Das nächste Bit wäre, unterschiedliche Versandursprünge basierend auf dem Lieferantenattribut zu behandeln. Dies könnte möglicherweise in Mage_Shipping_Model_Shipping erfolgen. Ganz oben sehen Sie, wo Magento die Versandursprungsadresse aus der Konfiguration abruft und dann weiter unten in der
requestToShipment()
Methode die Ursprungsadresselemente der Versandanforderung zugewiesen werden (von der ich annehme, dass sie später abhängig von der Versandmethode verwendet wird namens).Das könnte zumindest eine Richtung sein, in die Sie gehen sollten. Wenn ich Ihre Frage und Ihr Update durchlese, habe ich den Eindruck, dass Sie dies schwieriger machen als nötig. Denken Sie immer daran, dass es im Allgemeinen am besten ist, Magento tun zu lassen, was es tun möchte, und nur kleine Teile zu ändern, um Ihre speziellen Fälle zu behandeln. Ein Großteil dessen, was Sie benötigen, ist bereits im Kern erledigt, daher erscheint es etwas albern, die Multi-Shipping-Komponenten neu zu schreiben, wenn es einfachere Optionen gibt.
quelle
Mage_Shipping_Model_Shipping
lediglich die Ursprungsadresse in der Versandanfrage durch den diesem Lieferanten zugewiesenen Ursprung ersetzt würde. Magento würde dann sein Geschäft fortsetzen und alle Versandkosten abrufen, die für diese Bestellung gelten würden. Ich könnte möglicherweise sehen, dass eines der WebShopApps-Versandmodule hier nützlich ist, da Sie damit Versandmethoden anhand verschiedener Kriterien zuweisen können. - Auch dies ist alles in der Theorie, ich habe so etwas noch nie gemacht, daher kann es einige Einschränkungen geben (es gibt immer). -/app/code/core/Mage/Sales/Model/Quote.php
- Denken Sie daran, dass Magento nicht ganz so linear ist wie andere Einkaufswagen. Gehen Sie in den Kaninchenbau und sehen Sie, wie Angebote in Bestellungen (und Credits usw.) geändert werden. Irgendwann finden Sie die Methode (n), die Sie ändern möchten. Wie ich bereits sagte, ist es oftmals von Vorteil, einfach in ein hochwertiges Backend-Modul (und ebenso wichtig in den Support) zu investieren, mit dem Sie schnell das erreichen, was Sie benötigen. Einige Schrauben und Muttern mögen es nicht, gewechselt zu werden.