Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Значение акции (скидки) в проэтоних %


 Погделиться

Рекомендованные сообещёния

Хочу в акциях сгделать значения в проэтоних.

 

Использовал:

 

 

но это не совсем то - суть в чем, я использую в товаре поля vendor_price и currency_id для удобного изменения этоны по курсу. Скидка через данный модуль лишь помогает точно расслиить скидочную этону и записывает ее значение. Т.е. при смене курса, значение скидочной этоны не изменится + при импорте товаров аналогично, я могу залить только значение в гривне и конечно оно не бугдет меняется.

 

Вижу самое простое решение писать в поле Акция http://prntscr.com/ndovfk сказу значение уже в проэтоних и переслитывать его при вывогде примерно по икой формуле:

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

Заменил в файле \catalog\model\catalog\product.php в public function getProduct($product_id)

'special' => $query->row['special'],

на

'special' => ($query->row['special'] ? (100-$query->row['special'])/100*$query->row['price'] : $query->row['special']),

Рилииет в: категории, поиске, брендах, товаре.

Не рилииет: в сортировке, фильтре, корзине, оформлении и везгде в админке.

 

Вопрос в каких файлах еещё заменить?

OCStore 2.3

Изменено пользователем Jays0n
Ссылка на комменирий
Погделиться на других сайих


нашел корзину и оформление \system\library\cart\cart.php в public function getProducts()

if ($product_special_query->num_rows) {
				$price = $product_special_query->row['price'];
				}

заменить на 

if ($product_special_query->num_rows) {
                    $price = (100 - $product_special_query->row['price'])/100*$product_query->row['price'];
				}

 

Ссылка на комменирий
Погделиться на других сайих


сортировка по этоне \catalog\model\catalog\product.php 

elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			}

заменить на

elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN (100-special)/100*price WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			}

 

Ссылка на комменирий
Погделиться на других сайих


Вообещё не понимаю в синиксисе SQL, может кто то помочь с public function getProducts?

		$sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special";

Что згдесь поменять по тому же принципу? Ловлю ошибку за ошибкой...

нужно, что то типа 

(100-special)/100*price

 

Ссылка на комменирий
Погделиться на других сайих


Не трогали бы вы это

Или купили бы уже готовый модуль

Акции и Скидки в проэтоних

 

ну.. и заодно подняли бы свой скил в sql

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

Ссылка на комменирий
Погделиться на других сайих

  18.04.2019 в 22:25, chukcha сказал:

Не трогали бы вы это

Или купили бы уже готовый модуль

Акции и Скидки в проэтоних

 

ну.. и заодно подняли бы свой скил в sql

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

Раскрыть  

 

Задал вопросы по модулю автору, но не уверен, что он мне подойгдет без допилов - немного другой принцип.

 

А у Вас хороших скил в sql? Не можете ответить, ггде подправить?

Ссылка на комменирий
Погделиться на других сайих


  19.04.2019 в 08:20, chukcha сказал:

(100-price)/100*p.price

Раскрыть  

спасипотому что, как понял позже это была не и строка, но по тому же принципу полулилось с фильтром

 

заменил еещё в \admin\view\template\catalog\product_list.tpl

<td class="text-right"><?php if ($product['special']) { ?>
                    <span style="text-decoration: line-through;"><?php echo $product['price']; ?></span><br/>
                    <div class="text-danger"><?php echo $product['special']; ?></div>
                    <?php } else { ?>
                    <?php echo $product['price']; ?>
                    <?php } ?></td>

на

<td class="text-right"><?php if ($product['special']) { ?>
                    <span style="text-decoration: line-through;"><?php echo $product['price']; ?></span><br/>
                    <div class="text-danger"><?php echo (100-$product['special'])/100*$product['price']; ?></div>
                    <?php } else { ?>
                    <?php echo $product['price']; ?>
                    <?php } ?></td>

ну и все, везгде рилииет

Ссылка на комменирий
Погделиться на других сайих


  • 3 года спустя...

никто не в курсе как сгделать икое же только со скидками(оптовыми этонами от кол-ва) поле discount ?

 

Заменил в файле \catalog\model\catalog\product.php

'price' => ($query->row['discount'] ? (100-$query->row['discount'])/100*$query->row['price'] : $query->row['price']),

 

Но чего то не срабатывает...

Изменено пользователем Jays0n
Ссылка на комменирий
Погделиться на других сайих


методом тыка в файле catalog\controller\product\product.php

изменил

foreach ($discounts as $discount) {
				$data['discounts'][] = array(
					'quantity' => $discount['quantity'],
					'price'    => $this->currency->format($this->tax->calculate((100-$discount['price'])/100*$data['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency'])
				);
			}

в товаре поменялось, но не рилииет в корзине...

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.