Magento Показывает Разбивку Нескольких Скидок


Я установил модуль вознаграждений в свою сборку Magento. Я также организовал несколько рекламных акций в корзинах покупок. Все работает. На странице корзины покупок вы можете активировать бонусные баллы и ввести код скидки, и все будет правильно со скидкой. Проблема в том, что они оба помечены ярлыком "скидка" (где 1000 баллов = скидка 1 фунт стерлингов)

Http://i.imm.io/N0hf.png

Как вы можете видеть, он группирует скидку по купону в размере 5 фунтов стерлингов и скидку на вознаграждение в размере 1 фунта стерлингов вместе. Как мне разделить их, чтобы у меня было две строки скидок, одна для купона и одна для бонусных баллов?

Author: Richard Parnaby-King, 2012-11-26

2 answers

Это непростая задача. К сожалению, система скидок Magento не в полной мере подготовлена к добавлению новых типов скидок , которые вы, возможно, не захотите добавлять вместе в поле итоги корзины.

Это правда, что вам нужно изменить метод resetDiscountLabels() класса TBT_Rewards_Model_Salesrule_Observer. Однако этот метод не , где Сладкоежка добавляет свою скидку к описанию скидки. Совсем наоборот. Скидки для сладкоежек автоматически добавляются к Список скидок Magento в корзине (и описание скидки автоматически генерируется из этого списка скидок). Проблема в том, что там появятся даже скидки для сладкоежек, которые не следует добавлять в корзину - скидки, которые применяются к корзине на основе созданного вами правила, но клиент еще не решил потратить свои баллы. Метод resetDiscountLabels() существует для удаления нежелательных описаний скидок из корзины, а не для добавления любой.

Решение вашей проблемы состоит из двух шагов, и второй шаг является более трудоемким.

Сначала вы должны изменить вышеупомянутый метод, чтобы удалить все описания скидок для сладкоежек из корзины, а не только те, которые не применяются. Я бы предложил сначала скопировать файл в ваше приложение/код/локальный пул кодов и изменить этот файл вместо оригинала. Если вы пройдете по всем идентификаторам правил в корзине, а затем загрузите модель правил, вы сможете определить, является ли она правило сладкоежки или нет, если задано его поле points_action, т. Е. $rule->getPointsAction() !== null. Если какие-либо из правил являются правилами сладкоежек, вы можете unset использовать их из описания скидки так, как это уже делает этот метод. После этого скидки для сладкоежек больше не должны появляться в этой строке вашего окна итогов.

Второй шаг - добавить новую строку в поле итогов, иначе говоря, добавить новую итоговую модель в предложение. Это будет более сложный шаг - гораздо более сложный, чем я могу описать в этот ответ, но вот учебник по добавлению новых итоговых столбцов: http://turnkeye.com/blog/magento-development-add-total-row-checkout / В методе collect() вашей новой модели total вам следует проверить поле applied_redemptions предложения, чтобы получить список идентификаторов правил сладкоежек, которые клиент применил к своей корзине. Затем вы можете восстановить общую скидку на сладкое, используя эти значения.

Как я уже сказал, это непростая задача, и, к сожалению, это единственный получистый способ ее решения. Надеюсь, это не слишком много. Вы также всегда можете нанять фирму-разработчика, которая сделает это за вас, если вы предпочитаете уделять свое время разработке другим задачам.

Надеюсь, это полезно!

 11
Author: JMTyler, 2013-09-20 17:43:55

Вам нужно будет изменить /TBT/Rewards/Model/Salesrule/Observer.php - проверить checkRedemptionCouponBefore() на сумму скидки и проверить resetDiscountLabels() - именно здесь Сладкоежка добавляет свою скидку к описанию скидки.

Вам также может потребоваться изменить /app/design/frontend/base/default/template/rss/order/details.phtml - после строк if ($_order->getDiscountAmount() > 0)

 4
Author: Francis Kim, 2012-12-01 14:29:18