Я сделал купон [coupon_code = SWIMFREE], если category
– swimming equipment
а hobby
– swimming
будет скидка на 50%.
и теперь у меня проблема с 3-мя шагами. Вот описание …
sales_flat_quote table
sales_flat_quote_hobby
, sales_flat_quote_hobby
) То, что я хотел : когда купон применяется и хобби плавает, третий шаг, изменяющий цену, чтобы оценить каждый продукт, и купон все еще там показывается.
Как перехватить купон после шага Хобби?
Пример: шаг за шагом:
1. В корзину уже добавлено
2. На этапе доставки и выставления счетов
3. На шаге Хобби
4. В разделе «Обзор»
У меня много продуктов, я пытался добавлять новые атрибуты, но это не связано с атрибутом, потому что это на sales_flat_quote_hobby
Я попытался изменить Sales/Model/Quote/Subtotal.php
чтобы установить все цены на товары в корзине, но кажется бесполезным.
уже нашел ответ сам:
Можно создать настроенное условие купона .
переписать 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