Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Изобретаем велосипед (стикер процента акционной цены)


ArtemPitov

Recommended Posts

Доброго времени суток, цель сего поста понять правильно ли сделал или можно проще 

 

суть такова, делаю стирке для акцентных товаров с  процентом, получилось как то так 

$special = preg_replace("/[^0-9]*^[.]*[^0-9]/", '', $product['special']);
$price = preg_replace("/[^0-9]*^[.]*[^0-9]/", '', $product['price']);

$procent = (($price/100)-($special/100))*100;

<?php echo $procent; ?>%
не велосипед получился ?  :ugeek:
Надіслати
Поділитися на інших сайтах

Если это делать в шаблоне, то, наверное, правильно для конкртного, быстрого решения. но не верно для системы в целом.

Опять же... В разных языках, могут быть разные десятичные разделители.

 

Лучше это делать в контроллере, оперируя не приведенными значениями.

Надіслати
Поділитися на інших сайтах

У меня в контроллере не получилось получить значения без знака, подскажите логику решения этой задачи в контроллере 

Надіслати
Поділитися на інших сайтах

Это вчера ночью не выходило ничего в контролере ) щяс все заработало 

$procent = (($result['special'] / 100) - ($result['price']/100))*100;

:eek:

Надіслати
Поділитися на інших сайтах

А что вы собственно посчитали?

 

$procent = (($result['special'] / 100) - ($result['price']/100))*100 = $result['special'] - $result['price'];

 

В итоге вы получили просто разность цен.

 

Для скидки в процентах надо считать так:

$procent = (1.0 - $result['special'] / $result['price']) * 100.0;
Надіслати
Поділитися на інших сайтах

$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); // отформатированная цена с символом валюты

$this->data['price_wo_currency_symbol'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), '', false); // отформатированная цена БЕЗ символа валюты

Надіслати
Поділитися на інших сайтах

 

А что вы собственно посчитали?

 

$procent = (($result['special'] / 100) - ($result['price']/100))*100 = $result['special'] - $result['price'];

 

В итоге вы получили просто разность цен.

 

Для скидки в процентах надо считать так:

$procent = (1.0 - $result['special'] / $result['price']) * 100.0;

ой точно )

Надіслати
Поділитися на інших сайтах

$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); // отформатированная цена с символом валюты

$this->data['price_wo_currency_symbol'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), '', false); // отформатированная цена БЕЗ символа валюты

А такой вариант имеет право на жизнь  ? 

if ((float)$result['special']) {
$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
$procent = (1.0 - $result['special'] / $result['price']) * 100.0;
} else {
$special = false;
}
Змінено користувачем ArtenPitov
Надіслати
Поділитися на інших сайтах

А такой вариант имеет право на жизнь?

только если одна валюта, нет налогов и ничего не будет меняться в этом плане.

Надіслати
Поділитися на інших сайтах

только если одна валюта, нет налогов и ничего не будет меняться в этом плане.

А когда проценты начали зависеть от валюты?

Вопрос же в отображении скидки в виде процентов.

 

С налогами надо всего небольшую правку сделать. Если вообще налоги нужны.

$procent = (1.0 - $this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')) / $this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')) * 100.0;
Надіслати
Поділитися на інших сайтах

только если одна валюта, нет налогов и ничего не будет меняться в этом плане.

А почему со сменой валюты не пойдет ? Все нормально работает, в переменных   $result['price'] и $result['special'] только число 

Надіслати
Поділитися на інших сайтах

 

А когда проценты начали зависеть от валюты?

Вопрос же в отображении скидки в виде процентов.

 

С налогами надо всего небольшую правку сделать. Если вообще налоги нужны.

$procent = (1.0 - $this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')) / $this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')) * 100.0;

не видел еще не одного интернет магазина с налогами

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.