Правила корзины покупок с пользовательским условием?

Я сделал купон [coupon_code = SWIMFREE], если category это swimming equipment, а hobby это swimming будет скидка 50%.

и теперь у меня проблема с 3-этапной оплатой. Вот описание...

  1. Корзина оформления заказа : чтобы применить купон
  2. Первый шаг: адрес доставки и платежный адрес
  3. Второй шаг: выберите свое хобби (есть еще sales_flat_quote table, sales_flat_quote_hobby)
  4. Последний шаг: оформление заказа->Обзор

Что я хотел, так это: когда купон применяется и хобби плавает, третий шаг меняет цену на цену каждого продукта, и купон по-прежнему отображается там.

Как перехватить купон после шага Хобби?


Пошаговый пример:

<сильный>1. В корзину он уже добавлен

  • Обычная цена купального костюма составляет 100 $ (категория плавательного снаряжения).
  • Обычная цена кевлара 50$ (категория стрелкового снаряжения).
  • Применен купон SWIMFREE, общая сумма составляет 100 $ (из-за условий купона)

<сильный>2. На этапе доставки и оплаты

  • Адрес доставки и выставления счетов - Далее

<сильный>3. На шаге хобби

  • Хобби Футбол проверено (переключатель) и подтверждено

<сильный>4. На этапе обзора затем

  • Цена купальника 50$ (категория плавательного снаряжения)
  • Цена кевлара 50$ (категория стрелкового снаряжения)
  • Купон применен SWIMFREE, общая сумма теперь составляет 150 $ (потому что хобби не плавание)

у меня много товаров, я пробовал добавлять новые атрибуты, но это не связано с атрибутом, потому что он на sales_flat_quote_hobby

Я пытался изменить Sales/Model/Quote/Subtotal.php, чтобы установить цены на все товары в корзине, но это кажется бесполезным.


person Josua Marcel C    schedule 08.08.2012    source источник
comment
кто-нибудь смог решить эту проблему???   -  person Josua Marcel C    schedule 18.08.2012


Ответы (3)


сам уже нашел ответ:

Возможно создать индивидуальное условие купона.

пример купона

переписать 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, то купон не будет применен.

Спасибо всем, кто принял участие. я ценю это.

person Josua Marcel C    schedule 23.08.2012
comment
не могли бы вы опубликовать полный ответ. Я имею в виду, как добавить пользовательское условие в бэкэнд? - person Zaheerabbas; 01.08.2014

Вы должны реализовать свой собственный коллектор для сбора итогов. Он может быть основан на Mage_SalesRule_Model_Quote_Discount.
Как создавать собственные сборщики: см. ответ stackoverflow, или вы можете проверить эта статья.

person Roman Snitko    schedule 20.08.2012

Да, это была бы моя идея.

Вы внедряете новое условие правила продажи, которое дает скидку 50%.

Правила продажи называются для каждого продукта. затем вам нужно проверить, плавает ли атрибут и установлено ли хобби. Если это так, вы можете скопировать остальное из %-salesrule

Вы найдете код для просмотра в Mage_SalesRule_Model_Validator::process()

Пример самореализуемого условия можно найти здесь: https://github.com/magento-hackathon/DiscountForATweet/blob/master/app/code/community/Hackathon/DiscountForATweet/Model/Condition/Tweet..php

person Fabian Blechschmidt    schedule 21.08.2012