Deux options personnalisées combinées: le prix de niveau ne fonctionne pas

11

Je configure des produits et des prix de niveau dans Magento, mais j'ai remarqué qu'un produit simple avec des options personnalisées (exemple: t-shirt bleu, t-shirt rouge), le prix de niveau ne fonctionnera pas si nous les combinons pour atteindre la quantité.

Les prix par paliers semblent fonctionner uniquement lorsque la quantité est atteinte à partir d'une variation de produit, mais pas une combinaison de deux.

J'ai lu plusieurs réponses sur Stack Overflow et les forums Magento, et ils recommandent de créer des produits configurables. Cependant, cela peut être assez difficile si un magasin propose de nombreux produits ou de nombreuses variantes.

Connaissez-vous une solution de contournement pour appliquer le prix Tier - avec une combinaison de variations?

Cacahuètes
la source
pouvez-vous préciser quel est le type de t-shirt bleu et de t-shirt rouge? S'agit-il de produits uniques sans lien entre eux?
Christophe Ferreboeuf
Il s'agirait d'options personnalisées ("bleu", "rouge") d'un "T-shirt" de produit simple. Sur Magento actuellement, si le prix du niveau était, disons, "10 ou plus, vous obtenez une remise", cela fonctionnerait lors de l'achat de 10 rouges ou 10 bleus, mais pas lorsque j'achèterais 5 + 5 ...
Peanuts
Comment magento peut-il savoir que ces deux produits sont liés?
Christophe Ferreboeuf
Eh bien dans mon exemple, il n'y a qu'un seul produit (produit simple), qui a deux options personnalisées (variations): bleu et rouge. Magento ne calcule pas un prix de niveau lorsque vous ajoutez deux options du même produit simple (nous parlons ici de produits simples, pas de produits configurables). Pour les produits configurables, il existe une extension qui permet la combinaison de prix de niveau ( magentocommerce.com/magento-connect/… ), mais encore une fois, ce n'est pas mon cas, nous avons trop d'options pour créer un produit par option).
Peanuts
Vous aurez besoin d'un module personnalisé pour y parvenir. Ou si j'étais vous, j'envisagerais d'utiliser des produits configurables avec le module de prix de niveau que vous avez mentionné.
paj

Réponses:

11

Le problème ici est que Magento traite les produits avec différentes options personnalisées comme différents éléments de ligne dans le panier. Ainsi, la quantité des deux variantes d'options personnalisées ne s'additionne jamais pour pouvoir qualifier l'élément de devis pour un niveau particulier de tarification à plusieurs niveaux.

Maintenant, faire ce travail impliquerait un travail personnalisé. Je peux vous indiquer où vous pouvez chercher pour le faire fonctionner dans le code.

Check-out Mage_Sales_Model_Quote_Address_Total_Subtotal::collect()

Dans cette méthode, vous devrez parcourir tous les articles du devis et lier la quantité étagée applicable à chacun des articles du devis. Disons que vous avez deux variantes A et B avec les quantités 1 et 3. Vous allez parcourir les éléments de devis et faire quelque chose comme:

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

Puis dans Mage_Sales_Model_Quote_Address_Total_Subtotal::_initItem

à la place d'utiliser: $finalPrice = $product->getFinalPrice($quoteItem->getQty()); //on line 115 use:

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

Cela implique un travail personnalisé, mais l'approche que je répertorie devrait fonctionner avec certains ajustements à la volée au fur et à mesure.

Paras Sood
la source
4

Je peux confirmer, cela fonctionne

        /* 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
la source