Правило наценки по безналу

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 dimekh
  • Группа: Пользователь
  • Сообщений: 107
  • Регистрация: 14.04.2010

14.04.2011 10:07

Есть такая задача - отображать на странице товара 2 цены:
1. Обычная цена
2. Цена при оплате по безналичному расчету, которая больше обычной. Причем я так понимаю эту цену надо привязать к способу оплаты "Check/money orders"
со 2 пунктом непонятно, есть идеи?

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

14.04.2011 10:11

Magento позволяет в качестве одного из условий ценового правила для корзины использовать выбранный покупателем способ оплаты.
Прикрепленное изображение: price-rule-based-on-payment-method.png

#3 dimekh
  • Группа: Пользователь
  • Сообщений: 107
  • Регистрация: 14.04.2010

14.04.2011 10:35

:) это работает. только в одну сторону - в сторону скидки. пойду читать ветку как сделать наценку.

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

14.04.2011 10:38

Наценку стандартными способами без программирования не сделать никак.
Многие спрашивают об этой функции, планирую включить её в Российскую сборку 1.6 или 1.7.

#5 dimekh
  • Группа: Пользователь
  • Сообщений: 107
  • Регистрация: 14.04.2010

14.04.2011 12:43

Как делать наценку на товар (отрицательная скидка):

например, в итоге этих манипуляций у вас при оформлении заказа в поле скидки на странице "Подтверждение заказа" появится надпись

"Наименование товара" - "Цена" - "Кол-во" - "итого"
тарам-пам-пам... и после предварительного итога:
(Скидка/наценка) Наценка 3.5% за оплату по безналу = 231 руб.

1. app/code/core/Mage/rule/model/rule.php

ищем в районе 265 строки:
    protected function _beforeSave()
    {
        // check if discount amount > 0
        if ((int)$this->getDiscountAmount() < 0) {
            Mage::throwException(Mage::helper('rule')->__('Invalid discount amount.'));
        }

Меняем на:
    protected function _beforeSave()
    {
        // check if discount amount > 0
       /* if ((int)$this->getDiscountAmount() < 0) {
            Mage::throwException(Mage::helper('rule')->__('Invalid discount amount.'));
        }*/


2. app/code/core/Mage/Adminhtml/block/promo/quote/edit/tab/actions.php

ищем в районе 100 строки:
        $fieldset->addField('discount_amount', 'text', array(
            'name' => 'discount_amount',
            'required' => true,
            'class' => 'validate-not-negative-number',
            'label' => Mage::helper('salesrule')->__('Discount Amount'),
        ));

меняем на:
        $fieldset->addField('discount_amount', 'text', array(
            'name' => 'discount_amount',
            'required' => true,
            //'class' => 'validate-not-negative-number',
            'label' => Mage::helper('salesrule')->__('Discount Amount'),
        ));

3. В файле Mage_Sales.csv, что в /app/locale/ru-RU

напротив "Discount"-"Скидка" вместо скидка пишем что-нть типа "Скидка/наценка"

4. Идем в правило для корзины в админке и создаем правило: В моем случае про наценку, если клиент выбирает безнал - вбиваем отрицательные 3.5%, не забываем про метку "Наценка 3.5% за оплату безналичным расчетом"
5. Проверяем купив и оформив заказ.

Не забывайте делать копии файлов, которые вы меняете!


#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

01.09.2012 14:39

Современные версии Российской сборки Magento позволяют делать наценку, как абсолютную, так и относительную, посредством налогов, без программирования.
При этом вовсе необязательно называть покупателю налог налогом.
Можно настроить модуль налогообложения таким образом, что величина «налога» будет добавлена к стоимости товара совершенно незаметно для покупателя.

Поделиться темой: