Łączone dwie opcje niestandardowe: Cena na poziomie nie działa

11

Konfiguruję produkty i ceny poziomów w Magento, ale zauważyłem, że w Prostym produkcie z opcjami niestandardowymi (na przykład: niebieska koszulka, czerwona koszulka) Cena podstawowa nie będzie działać, jeśli je połączymy aby osiągnąć ilość.

Ceny na poziomie wydają się działać tylko wtedy, gdy ilość zostanie osiągnięta z jednej odmiany produktu, ale nie z kombinacji dwóch.

Przeczytałem kilka odpowiedzi na Stack Overflow i forach Magento, i zalecają tworzenie konfigurowalnych produktów. Jednak może to być dość trudne, jeśli sklep ma wiele produktów lub wiele odmian.

Czy znasz jakieś obejście, aby uzyskać zastosowanie Ceny Poziomu - z kombinacją wariantów?

Orzeszki ziemne
źródło
potrafisz precyzyjnie określić, jaki jest rodzaj niebieskiej koszulki i czerwonej koszulki? Czy są to pojedyncze produkty bez powiązania między nimi?
Christophe Ferreboeuf
Byłyby to opcje niestandardowe („niebieski”, „czerwony”) prostego „koszulki” produktu. Na Magento, jeśli Cena Poziomu to, powiedzmy, „10 lub więcej dostaniesz zniżkę”, działałoby to przy zakupie 10 Czerwonych lub 10 Niebieskich, ale nie przy zakupie 5 + 5 ...
Peanuts
Skąd Magento może wiedzieć, że te dwa produkty są powiązane?
Christophe Ferreboeuf
W moim przykładzie jest tylko 1 produkt (produkt prosty), który ma dwie opcje niestandardowe (warianty): niebieski i czerwony. Magento nie oblicza ceny poziomu, jeśli dodasz dwie opcje tego samego produktu prostego (mówimy tutaj o produktach prostych, a nie produktach konfigurowalnych). W przypadku produktów konfigurowalnych istnieje rozszerzenie, które umożliwia łączenie cen podstawowych ( magentocommerce.com/magento-connect/... ), ale znowu, to nie w moim przypadku, mamy zbyt wiele opcji, aby stworzyć produkt według opcji).
Peanuts
Będziesz potrzebował niestandardowego modułu, aby to osiągnąć. Lub gdybym był tobą, rozważyłbym użycie konfigurowalnych produktów z wspomnianym modułem cenowym.
paj

Odpowiedzi:

11

Problem polega na tym, że Magento traktuje produkty z różnymi niestandardowymi opcjami jako różne elementy zamówienia w koszyku. Tak więc ilość tych dwóch wariantów opcji niestandardowych nigdy się nie sumuje, aby móc zakwalifikować pozycję wyceny do określonej warstwy warstwowych cen.

Teraz wykonanie tej pracy wymagałoby niestandardowej pracy. Mogę dać ci wskazówki, gdzie możesz szukać, aby działało w kodzie.

Sprawdzić Mage_Sales_Model_Quote_Address_Total_Subtotal::collect()

W tej metodzie konieczne będzie przejście przez wszystkie pozycje wyceny i połączenie wielopoziomowej ilości stosowanej dla każdego z wycen. Powiedzmy, że masz dwa warianty A i B z liczbą 1 i 3. Przejdziesz przez pozycje z cytatem i zrobisz coś takiego:

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

Następnie w Mage_Sales_Model_Quote_Address_Total_Subtotal::_initItem

zamiast używać: $finalPrice = $product->getFinalPrice($quoteItem->getQty()); //on line 115 use:

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

Wymaga to pracy niestandardowej, ale podejście, które wymieniam, powinno działać z niektórymi dostosowaniami w locie podczas pracy.

Paras Sood
źródło
4

Mogę potwierdzić, to działa

        /* 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 */ 
użytkownik7286399
źródło