4

クーポン[coupon_code=SWIMFREE]を作成しましたcategoryswimming equipment、現在hobbyswimming50%割引になります。

そして今、私は3ステップのチェックアウトについて問題があります。これが説明です...

  1. チェックアウトカート:クーポンに申し込む
  2. 最初のステップ:配送先住所と請求先住所
  3. 2番目のステップ:あなたの趣味を選んでください(別のものがありますsales_flat_quote tablesales_flat_quote_hobby
  4. 最終ステップ:チェックアウト->概要

私が欲しかったのは、クーポンが適用され、趣味が泳いでいるとき、すべての製品の価格に価格を変更する3番目のステップであり、クーポンはまだそこに表示されています。

趣味のステップの後にクーポンを傍受する方法は?


ステップバイステップの例:

1.カートにはすでに追加されています

  • 水着の通常価格は100ドルです(水泳用具カテゴリー)
  • ケブラーの通常価格は50ドルです(射撃設備カテゴリー)
  • クーポンが適用されたSWIMFREE、総計は100ドルです(クーポン条件のため)

2.配送と請求のステップについて

  • 配送先住所と請求先住所-次へ

3.ホビーステップについて

  • サッカーの趣味をチェック(ラジオボタン)して確認

4.概要ステップで

  • 水着の価格は50ドルです(水泳用具カテゴリー)
  • ケブラーの価格は50ドルです(射撃設備カテゴリー)
  • クーポン適用SWIMFREE、総計は150ドルになりました(趣味が泳いでいないため)

たくさんの商品があります。新しい属性を追加しようとしましたが、属性がオンになっているため、属性とは関係ありません。sales_flat_quote_hobby

カートにすべての商品の価格を設定するように変更しようとしましSales/Model/Quote/Subtotal.phpたが、役に立たないようです。

4

3 に答える 3

5

すでに自分で答えを見つけました:

カスタマイズされたクーポン条件を作成することが可能です。

クーポンの例

Mage_SalesRule_Model_Rule_Condition_Productを書き直します

    public function validate(Varien_Object $object){
        if ($this->getAttribute() == 'quote_item_with_hobby') {

            $quote = Mage::getSingleton('checkout/cart')->getQuote();
            $hobby= $quote->getHobbyByItemId($object->getId());

            if ($hobby){
                if ($this->getOperator() == '=='){
                    if (strtolower($this->getValue()) == $hobby->getHobby()) return true;
                    else return false;
                }
                else if ($this->getOperator() == '!='){
                    if (strtolower($this->getValue()) == $hobby->getHobby()) return false;
                    else return true;
                }

            }
            return true;
        }

        return parent::validate($object);
    }

この関数は、ロードされるすべてのステップで呼び出されます。次に、trueを返すかどうかを確認すると、クーポンが適用されます。falseを返すと、クーポンは適用されません。

参加してくださった皆様、ありがとうございました。それは有り難いです。

于 2012-08-23T10:09:30.843 に答える
2

合計を収集するには、カスタムコレクターを実装する必要があります。に基づいている可能性がありますMage_SalesRule_Model_Quote_Discount
カスタムコレクターを作成する方法:stackoverflowの回答を参照するか、この記事を確認してください。

于 2012-08-20T11:22:13.557 に答える
2

はい、それが私の考えです。

50%の割引を提供する新しいsalesrule条件を実装します。

セールスルールはすべての製品に対して呼び出されます。次に、属性が水泳であり、趣味が設定されているかどうかを確認する必要があります。その場合は、残りを%-salesruleからコピーできます。

あなたはで見るべきコードを見つけますMage_SalesRule_Model_Validator::process()

自己実装条件の例は、https ://github.com/magento-hackathon/DiscountForATweet/blob/master/app/code/community/Hackathon/DiscountForATweet/Model/Condition/Tweet.phpにあります。

于 2012-08-21T14:30:37.797 に答える