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

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

и теперь у меня проблема с 3-мя шагами. Вот описание …

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

То, что я хотел : когда купон применяется и хобби плавает, третий шаг, изменяющий цену, чтобы оценить каждый продукт, и купон все еще там показывается.

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


Пример: шаг за шагом:

1. В корзину уже добавлено

  • Обычная цена Swim Suit составляет 100 $ (Категория оборудования для плавания)
  • Обычная цена кевлара составляет 50 $ (категория Съемки)
  • Купон Примененный SWIMFREE, Grand Total – 100 $ (из-за условия купона)

2. На этапе доставки и выставления счетов

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

3. На шаге Хобби

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

4. В разделе «Обзор»

  • Стоимость Swim Suit составляет 50 $ (Категория оборудования для плавания)
  • Цена Кевлара составляет 50 $ (категория Съемки)
  • Купон Примененный SWIMFREE, Grand Total теперь составляет 150 $ (потому что хобби не плавает)

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

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

Solutions Collecting From Web of "Правила корзины покупок с пользовательским условием?"

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

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

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

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

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

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

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

Вы реализуете новое условие salesrule, которое дает 50% скидку.

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

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

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