Due opzioni personalizzate combinate: il prezzo di livello non funziona


11

Sto impostando prodotti e prezzi di livello in Magento, ma ho notato che in un prodotto semplice con opzioni personalizzate (esempio: maglietta blu, maglietta rossa), il prezzo di livello non funzionerà se li combiniamo per raggiungere la quantità.

I prezzi di livello sembrano funzionare solo quando la quantità viene raggiunta da una variazione del prodotto, ma non una combinazione di due.

Ho letto diverse risposte su Stack Overflow e sui forum Magento e mi consigliano di creare prodotti configurabili. Tuttavia, questo può essere piuttosto difficile se un negozio ha molti prodotti o molte varianti.

Conosci qualche soluzione alternativa per applicare il prezzo di base, con una combinazione di variazioni?


puoi precisare qual è il tipo di maglietta blu e maglietta rossa? Sono singoli prodotti senza alcun collegamento tra loro?
Christophe Ferreboeuf,

Sarebbero opzioni personalizzate ("Blu", "Rosso") di un prodotto "T-Shirt" semplice. Al momento su Magento, se il prezzo di livello fosse, diciamo, "10 o più ottieni uno sconto", funzionerebbe quando acquisti 10 rossi o 10 blu, ma non quando comprerei 5 + 5 ...
Peanuts

Come può magento sapere che questi due prodotti sono collegati?
Christophe Ferreboeuf,

Bene nel mio esempio c'è solo 1 prodotto (Prodotto semplice), che ha due opzioni personalizzate (varianti): blu e rosso. Magento non calcola un prezzo di livello quando sommi due opzioni dello stesso Prodotto semplice (qui stiamo parlando di Prodotti semplici, non di Prodotti configurabili). Per i prodotti configurabili, esiste un'estensione che consente la combinazione di livelli di prezzo ( magentocommerce.com/magento-connect/… ), ma ancora una volta, questo non è il mio caso, abbiamo troppe opzioni per creare un prodotto per opzione).
Peanuts,

Avrai bisogno di un modulo personalizzato per raggiungere questo obiettivo. O se fossi in te, prenderei in considerazione l'utilizzo di prodotti configurabili con il modulo prezzi di livello che hai menzionato.
paj,

Risposte:


11

Il problema qui è che Magento tratta i prodotti con diverse opzioni personalizzate come diversi elementi pubblicitari nel carrello. Pertanto, la quantità per le due varianti di opzioni personalizzate non si somma mai per essere in grado di qualificare l'articolo di preventivo per un determinato livello di prezzi a livelli.

Ora, realizzare questo lavoro implicherebbe un lavoro personalizzato. Posso darti indicazioni su dove puoi cercare per farlo funzionare nel codice.

Check-out Mage_Sales_Model_Quote_Address_Total_Subtotal::collect()

In questo metodo dovrai scorrere tutti gli articoli di preventivo e collegare la quantità a livelli applicabile su ciascuno degli articoli di preventivo. Quindi, diciamo, hai due varianti A e B con quantità 1 e 3. Passerai in rassegna gli articoli della citazione e farai qualcosa del tipo:

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

Quindi dentro Mage_Sales_Model_Quote_Address_Total_Subtotal::_initItem

invece di usare: $finalPrice = $product->getFinalPrice($quoteItem->getQty()); //on line 115 use:

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

Ciò comporta un lavoro personalizzato, ma l'approccio che sto elencando dovrebbe funzionare con alcuni aggiustamenti al volo mentre lo fai.


4

Posso confermare, questo funziona

        /* 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 */ 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.