Magento Показывает Разбивку Нескольких Скидок
Я установил модуль вознаграждений в свою сборку Magento. Я также организовал несколько рекламных акций в корзинах покупок. Все работает. На странице корзины покупок вы можете активировать бонусные баллы и ввести код скидки, и все будет правильно со скидкой. Проблема в том, что они оба помечены ярлыком "скидка" (где 1000 баллов = скидка 1 фунт стерлингов)
Как вы можете видеть, он группирует скидку по купону в размере 5 фунтов стерлингов и скидку на вознаграждение в размере 1 фунта стерлингов вместе. Как мне разделить их, чтобы у меня было две строки скидок, одна для купона и одна для бонусных баллов?
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
предложения, чтобы получить список идентификаторов правил сладкоежек, которые клиент применил к своей корзине. Затем вы можете восстановить общую скидку на сладкое, используя эти значения.
Как я уже сказал, это непростая задача, и, к сожалению, это единственный получистый способ ее решения. Надеюсь, это не слишком много. Вы также всегда можете нанять фирму-разработчика, которая сделает это за вас, если вы предпочитаете уделять свое время разработке другим задачам.
Надеюсь, это полезно!
Вам нужно будет изменить /TBT/Rewards/Model/Salesrule/Observer.php
- проверить checkRedemptionCouponBefore()
на сумму скидки и проверить resetDiscountLabels()
- именно здесь Сладкоежка добавляет свою скидку к описанию скидки.
Вам также может потребоваться изменить /app/design/frontend/base/default/template/rss/order/details.phtml
- после строк if ($_order->getDiscountAmount() > 0)