Zwei benutzerdefinierte Optionen kombiniert: Der Stufenpreis funktioniert nicht

11

Ich richte Produkte und Stufenpreise in Magento ein, aber ich habe festgestellt, dass bei einfachen Produkten mit benutzerdefinierten Optionen (Beispiel: blaues T-Shirt, rotes T-Shirt) der Stufenpreis nicht funktioniert, wenn wir sie kombinieren um die Menge zu erreichen.

Stufenpreise scheinen nur zu funktionieren, wenn die Menge aus einer Produktvariante erreicht wird, nicht jedoch aus einer Kombination von zwei.

Ich habe mehrere Antworten in Stack Overflow und den Magento-Foren gelesen und sie empfehlen, konfigurierbare Produkte zu erstellen. Dies kann jedoch ziemlich schwierig sein, wenn ein Geschäft viele Produkte oder viele Variationen hat.

Kennen Sie eine Problemumgehung, um den Tierpreis anzuwenden - mit einer Kombination von Variationen?

Erdnüsse
quelle
Kannst du genau sagen, was für ein blaues und ein rotes T-Shirt es gibt? Sind sie einzelne Produkte ohne Verbindung zwischen ihnen?
Christophe Ferreboeuf
Dies wären benutzerdefinierte Optionen ("Blau", "Rot") eines einfachen Produkts "T-Shirt". Wenn der Tier-Preis bei Magento derzeit "10 oder mehr, Sie erhalten einen Rabatt" wäre, würde dies beim Kauf von 10 Reds oder 10 Blues funktionieren, aber nicht beim Kauf von 5 + 5 ...
Peanuts
Wie kann Magento wissen, dass diese beiden Produkte miteinander verbunden sind?
Christophe Ferreboeuf
In meinem Beispiel gibt es nur 1 Produkt (einfaches Produkt) mit zwei benutzerdefinierten Optionen (Variationen): blau und rot. Magento berechnet keinen Staffelpreis, wenn Sie zwei Optionen desselben einfachen Produkts addieren (wir sprechen hier von einfachen Produkten, nicht von konfigurierbaren Produkten). Für konfigurierbare Produkte gibt es eine Erweiterung, die das Kombinieren von Stufenpreisen ermöglicht ( magentocommerce.com/magento-connect/… ), aber auch dies ist nicht mein Fall, wir haben zu viele Optionen, um ein Produkt pro Option zu erstellen.
Erdnüsse
Sie benötigen dazu ein benutzerdefiniertes Modul. Oder wenn ich Sie wäre, würde ich in Betracht ziehen, konfigurierbare Produkte mit dem von Ihnen erwähnten Tierpreismodul zu verwenden.
paj

Antworten:

11

Das Problem hierbei ist, dass Magento Produkte mit unterschiedlichen benutzerdefinierten Optionen als unterschiedliche Werbebuchungen im Warenkorb behandelt. Die Menge für die beiden Varianten der benutzerdefinierten Optionen summiert sich also nie, um den Angebotsposten für eine bestimmte Stufe der Staffelpreise zu qualifizieren.

Wenn Sie diese Arbeit ausführen möchten, müssen Sie benutzerdefinierte Arbeiten ausführen. Ich kann Ihnen Hinweise geben, wo Sie suchen können, damit es im Code funktioniert.

Auschecken Mage_Sales_Model_Quote_Address_Total_Subtotal::collect()

Bei dieser Methode müssen Sie alle Angebotspositionen durchlaufen und die für jedes Angebotselement geltende gestaffelte Menge verknüpfen. Angenommen, Sie haben zwei Varianten A und B mit den Mengen 1 und 3. Sie durchlaufen die Angebotspositionen und führen Folgendes aus:

$quoteItemA->setTieredQty(1+3);
$quoteItemB->setTieredQty(1+3); //ofcourse 1 and 3 are dynamic here

Dann in Mage_Sales_Model_Quote_Address_Total_Subtotal::_initItem

anstatt zu verwenden: $finalPrice = $product->getFinalPrice($quoteItem->getQty()); //on line 115 use:

$finalPrice = $product->getFinalPrice($quoteItem->getTieredQty());

Dies beinhaltet benutzerdefinierte Arbeit, aber der Ansatz, den ich aufführe, sollte mit einigen Anpassungen im laufenden Betrieb funktionieren, während Sie ihn durcharbeiten.

Paras Sood
quelle
4

Ich kann bestätigen, dass dies funktioniert

        /* hard coded - start */ 
        $cart = Mage::getModel('checkout/cart')->getQuote();
        $total_qty = 0;
        foreach ($cart->getAllItems() as $item2) {
          if ($item2->getProductId() == $quoteItem->getProductId()) $total_qty+= $item2->getQty();    
        }
        $finalPrice = $product->getFinalPrice($total_qty);
        // $finalPrice = $product->getFinalPrice($quoteItem->getQty());
        /* hard coded - end */ 
user7286399
quelle