Поиск Скидка в %

rmqkr

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

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

Ну так реализовано в базе в Престашоп. Это настолько просто, что ничего искать-докупать не нужно. Не думал, что здесь такая заморочка будет на ровном месте ((
 
Да нет, к сожалению в опциях считает криво. Вместо (1000+200)*0,1 считает 1000*0,1+200
Т.е. пересчитывает не конечную цену, а базовую.
 
Я в свое время писал для своего сайта. Там как раз проценты и с учетом опций. К вечеру постараюсь вытащить код.
 
было бы хорошо.... жду
Скидка задается там же в админке в пункте акция, только вместо абсолютной цены указывается % от цены. Решение не универсальное, делал давно, но работает 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.";
Этим мы обеспечили пересчет стоимости опций.

Сейчас бы сделал по другому. Более лаконично:)
 
Попробуйте Для просмотра ссылки Войди или Зарегистрируйся.
вроде должен подойти, если не врет описание, покопаюсь глубже в демке


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

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

Может версия не та, у меня ocStore 1.5.4.1
 
Назад
Сверху