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

Подсчет и вывод цены со скидкой


Vojdelenec

Recommended Posts

День добрый.

 

Такой вопрос возник. 

На странице оформления заказа под строкой "Итого" необходимо вывести общую цену при заказе с сайта 5%.

На данный момент, есть строка такого типа, отвечающая за вывод общей стоимости товаров:

<tr class="<?php echo $total['code']; ?>">
	<td class="text-right"><strong><?php echo $total['title']; ?>:</strong></td>
	<td class="text-right"><?php echo $total['text']; ?></td>
</tr>

Где "$total['text']" это общая сумма которая берется из массива.

По логике, для получения цены со скидкой, достаточно умножить итоговую стоимость на 0,95.

Я добавил строки такого типа:

<td class="text-right"><?php echo number_format(round(floatval(str_replace(',', '.', $total['text'] )) * 0.95, 2), 2, ',', ' '); ?> р.</td>

Но подсчет почему-то идет не правильный, и вместо цены со скидкой (при стоимости 1700 р.) выводится - 0,95

Знающие люди, подскажите пожалуйста, в какую сторону копать(

 

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


55 минут назад, Vojdelenec сказал:

Где "$total['text']" это общая сумма которая берется из массива.

да, но это строка со знаком валюты

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

Вроде как нужно перевести ее в int

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


9 часов назад, Vojdelenec сказал:

Но подсчет почему-то идет не правильный, и вместо цены со скидкой (при стоимости 1700 р.) выводится - 0,95

Потому что "1700р" у вас приходит как "1 700р". И хоть в целое, хоть в плавающее будет преобразовываться до первой не цифры, т.е. вы получаете "1".
Вам не с запятыми бороться надо, а пробелы вырезать 

str_replace(' ', '', $total['text'] )
  • +1 1
Надіслати
Поділитися на інших сайтах


12 часов назад, Shureg сказал:

Потому что "1700р" у вас приходит как "1 700р". И хоть в целое, хоть в плавающее будет преобразовываться до первой не цифры, т.е. вы получаете "1".
Вам не с запятыми бороться надо, а пробелы вырезать 


str_replace(' ', '', $total['text'] )

Большое спасибо. Очень помогло

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


Все отлично настроил, работает как часы, но есть одно "но"
В письме о заказе почему-то задваивается итог:

В файле order.tpl смотрел, там вроде все нормально, но итог все равно двойной выходит, за исключением одной строки

5785df0258[1].jpg

 

Подозреваю что это какой-то модуль лезет, но как это выяснить...

 

p.s. прошу сильно не пинать, т.к. копаюсь в файлах сам, дабы понять что и откуда идет. Но знаний маловато(

Змінено користувачем Vojdelenec
Надіслати
Поділитися на інших сайтах


И снова небольшая проблемка...
решил убрать подсчет скидки и итога поглубже, отредактировал файл cart.php и разместил такой код:
 

			$data['totals'] = array();

			foreach ($totals as $total) {
				$data['totals'][] = array(
					'title' => $total['title'],
					'pretext' => $this->currency->format($total['value'], $this->session->data['currency'],
					'saletext' => $this->currency->format($total['value'] * 0.05, $this->session->data['currency'],
					'text' => $this->currency->format($total['value'] * 0.95, $this->session->data['currency'])
				);
			}

теперь даже в корзину товар добавить не могу, выдает ошибку синтаксиса в строке с данными saletext
Никак понять не могу, где и что я пропустил...

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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