Ищу Скидка в %

Тема в разделе "Opencart", создана пользователем rmqkr, 22 июл 2013.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Модераторы: ZiX
  1. rmqkr

    rmqkr Создатель

    Регистр.:
    7 июн 2013
    Сообщения:
    21
    Симпатии:
    10
    Подскажите, как задать скидку в % от цены товара. Причем нужно, чтобы этота скидка влияла и на цену в опциях, т.е. на конечную, а не только на базовую в "Данных"
    ocStore 1.5.4.1
    Стандартными средствами это, похоже, не сделать. Может модуль какой существует?

    В идеале, как должно быть: для любого товара на вкладке "Скидка" или "Акции" задаю цифру % скидки и все - модуль меняет конечную базовую цену товара и опций на эту величину + отображает, что цена снижена (зачеркиванием, цветом и.т.п.).

    Ну так реализовано в базе в Престашоп. Это настолько просто, что ничего искать-докупать не нужно. Не думал, что здесь такая заморочка будет на ровном месте ((
     
  2. truebugi

    truebugi Создатель

    Регистр.:
    13 июн 2013
    Сообщения:
    34
    Симпатии:
    7
    rmqkr нравится это.
  3. rmqkr

    rmqkr Создатель

    Регистр.:
    7 июн 2013
    Сообщения:
    21
    Симпатии:
    10
    Да нет, к сожалению в опциях считает криво. Вместо (1000+200)*0,1 считает 1000*0,1+200
    Т.е. пересчитывает не конечную цену, а базовую.
     
  4. truebugi

    truebugi Создатель

    Регистр.:
    13 июн 2013
    Сообщения:
    34
    Симпатии:
    7
    Я в свое время писал для своего сайта. Там как раз проценты и с учетом опций. К вечеру постараюсь вытащить код.
     
  5. thekorolev

    thekorolev Постоялец

    Регистр.:
    24 май 2012
    Сообщения:
    107
    Симпатии:
    59
    Попробуйте этот модуль.
     
    Unlimiter нравится это.
  6. rmqkr

    rmqkr Создатель

    Регистр.:
    7 июн 2013
    Сообщения:
    21
    Симпатии:
    10
    не понятно, что за линк
     
  7. rmqkr

    rmqkr Создатель

    Регистр.:
    7 июн 2013
    Сообщения:
    21
    Симпатии:
    10
    было бы хорошо.... жду
     
    Unlimiter нравится это.
  8. thekorolev

    thekorolev Постоялец

    Регистр.:
    24 май 2012
    Сообщения:
    107
    Симпатии:
    59
    Сорри, парсер съел. Поправил.
     
    Unlimiter нравится это.
  9. truebugi

    truebugi Создатель

    Регистр.:
    13 июн 2013
    Сообщения:
    34
    Симпатии:
    7
    Скидка задается там же в админке в пункте акция, только вместо абсолютной цены указывается % от цены. Решение не универсальное, делал давно, но работает 100%.

    Вот что нашел:
    1) catalog/controller/product.php
    Добавляем
    Код:
    if ($special) {
                        $v = $this->data['price'];
                        //$this->data['special'] = $this->currency->format($this->tax->calculate($special, $product_info['tax_class_id'], $this->config->get('config_tax')));
                        $this->data['price'] = (int)str_replace(",", "", $this->data['price']);
                        $this->data['special'] =number_format(round($this->data['price']*(1 - $special/100)))." p.";
                    } else {
                        $this->data['special'] = FALSE;
                    }
    в ELSE часть условия
    Код:
    if ($discount) {
                    $this->data['price'] = $this->currency->format($this->tax->calculate($discount, $product_info['tax_class_id'], $this->config->get('config_tax')));
               
                    $this->data['special'] = FALSE;
                } else {
    // Добавляем сюда
    }
    Этим мы обеспечили пересчет базовой цены.
    2) Далее в том же файле находим
    Код:
    if ($option_value['price']>0){
                            if (isset($special)) {
                              //что-то   
                            }
                        }
    и нутро)) условия меняем на:
    Код:
    $option_value['price'] = (int)str_replace(",", "", $option_value['price']);
    $option_value['price'] = number_format(round($option_value['price']*(1 - $special/100)))." p.";
    Этим мы обеспечили пересчет стоимости опций.

    Сейчас бы сделал по другому. Более лаконично:)
     
    Unlimiter нравится это.
  10. rmqkr

    rmqkr Создатель

    Регистр.:
    7 июн 2013
    Сообщения:
    21
    Симпатии:
    10
    вроде должен подойти, если не врет описание, покопаюсь глубже в демке


    Извиняюсь, я не силен в php, потому сложновато разобраться, но такого файла не нашел, есть:
    admin\controller\catalog\product.php
    catalog\controller\product\product.php

    ни в одном из них, да и во всех остальных подстроки
    Код:
    if ($option_value['price']>0){
    не нашел, так что попробовать не получилось, а могло получиться хорошо.

    Может версия не та, у меня ocStore 1.5.4.1
     
    Unlimiter нравится это.