2つのカスタムオプションの組み合わせ:Tier価格が機能しません


11

Magentoで製品とティア価格を設定していますが、カスタムオプションのあるシンプルな製品(例:青いTシャツ、赤いTシャツ)では、それらを組み合わせた場合、ティア価格は機能しません。量に達するため。

Tier価格は、1つの製品バリエーションから数量に達した場合にのみ機能し、2つの組み合わせでは機能しないようです。

Stack OverflowとMagentoフォーラムでいくつかの回答を読みましたが、構成可能な製品を作成することをお勧めしています。ただし、店舗に多数の商品やバリエーションがある場合、これはかなり難しい場合があります。

バリエーションの組み合わせで、Tier Priceを適用するためのいくつかの回避策を知っていますか?


青のTシャツと赤のTシャツのタイプは何ですか?それらはそれらの間にリンクのない単一の製品ですか?
Christophe Ferreboeuf、2014

シンプルな製品「Tシャツ」のカスタムオプション(「青」、「赤」)になります。現在Magentoで、Tier価格が「10以上の場合は割引を受ける」とすると、10 Redsまたは10 Bluesを購入した場合は機能しますが、5 + 5を購入した場合は機能しません...
Peanuts

これら2つの製品がリンクされていることをmagentoはどのようにして知ることができますか?
Christophe Ferreboeuf、2014

私の例では、青と赤の2つのカスタムオプション(バリエーション)がある1つの製品(単純な製品)しかありません。同じ単純な製品の2つのオプションを合計しても、Magentoは階層価格を計算しません(ここでは、構成可能な製品ではなく、単純な製品について説明しています)。構成可能な製品には、Tier Priceの組み合わせを可能にする拡張機能(magentocommerce.com/magento-connect/…)がありますが、これも私のケースではありません。オプションごとに製品を作成するにはオプションが多すぎます)。
ピーナッツ

これを実現するには、カスタムモジュールが必要です。または、私があなたなら、あなたが言及したティア価格モジュールで構成可能な製品を使用することを検討します。
paj 2015

回答:


11

ここでの問題は、Magentoが異なるカスタムオプションの製品をカート内の異なるラインアイテムとして扱うことです。したがって、カスタムオプションの2つのバリアントの数量は、階層化された価格設定の特定の階層の見積もり項目を修飾できるようになることはありません。

さて、この作品を作るにはカスタムワークが必要になります。コード内で機能させるためにどこを見ることができるかについて、ポインタを示します。

チェックアウト Mage_Sales_Model_Quote_Address_Total_Subtotal::collect()

この方法では、すべての見積もりアイテムをループして、各見積もりアイテムに適用可能な段階的な数量をリンクする必要があります。たとえば、数量が1と3の2つのバリアントAとBがあるとします。見積もり項目をループして、次のようにします。

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

次に Mage_Sales_Model_Quote_Address_Total_Subtotal::_initItem

使用する代わりに: $finalPrice = $product->getFinalPrice($quoteItem->getQty()); //on line 115 use:

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

これにはカスタム作業が含まれますが、私がリストしているアプローチは、作業中にいくつかのオンザフライ調整で機能するはずです。


4

私は確認できます、これは機能します

        /* 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 */ 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.