WinterZlat

Скидка в процентах

Рекомендуемые сообщения

WinterZlat    0

Здравствуйте!

Хочу сделать так, чтобы скидка на товар проставлялась в %, а не стандартно жетской привязкой к сумме. Схема такая: Если сумма скидки > 1, то считаем эту сумму как новую цену товара, если сумма скидки < 1 (например 0.30), то достаем price (цену) товара и умножаем её на special (сумма в акции). Получается примерно так: Товар стоит 1000 рублей. Указываем сумму в акции товара 300 и товар становится акционным со стоимостью товара 300 рублей. А если мы указываем сумму в акции товара 0.30, то 1000 умножается на 0.30 и выходит товар теперь стоит 700 рублей (отняли 30%).

 

Пишу значит условие в product.php : 

if ((float)$product_info['special'] < 1) {
	$data['special'] = $this->model_catalog_product->getProduct($this->request->get['product_id'])['price'] * $this->model_catalog_product->getProduct($this->request->get['product_id'])['special'];
}

Условие работает, в карте товара отображается нужная стоимость, но при покупке товара наша сумма в процентах не учитывается, а в корзину добавляется 0 стоимость товара (мы ведь в акции 0.30 указали).

Почему так происходит? 

 

P.S. С разработкой столкнулся впервые.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    830

1. грубейшая ошибка

 

Если вам это это надо то так не делают

 

if ((float)$product_info['special'] < 1) {
    $data['special'] = $this->model_catalog_product->getProduct($this->request->get['product_id'])['price'] * $this->model_catalog_product->getProduct($this->request->get['product_id'])['special'];
}

 

 

 вот  так

if ((float)$product_info['special'] < 1) {
    $data['special'] = $product_info['price']  - $product_info['price'] * (float)$product_info['special']
}

 

но это все просто..

 

А вот если вам понадобится делать Сортировку по цене, то... Вы узнаете что ..

 

или будет в корзину что-то класть

то вы узнаете что это используется во многих моделях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
tabook    124
WinterZlat    0

1. грубейшая ошибка

 

Если вам это это надо то так не делают

 

 вот  так

if ((float)$product_info['special'] < 1) {

    $data['special'] = $product_info['price']  - $product_info['price'] * (float)$product_info['special']

}

 

но это все просто..

 

А вот если вам понадобится делать Сортировку по цене, то... Вы узнаете что ..

 

или будет в корзину что-то класть

то вы узнаете что это используется во многих моделях.

К сожалению не работает, все так же, сумма товара в корзине = 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WinterZlat    0

Купите ...

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

 

Интересно что переменная отрабатывает нормально в tpl, но в cart.php передается другое значение...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    830
но в cart.php

 

Именно об этом я и сказал

 

или будет в корзину что-то класть

то вы узнаете что это используется во многих моделях.

 

Т.е. смотрите cart/add

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WinterZlat    0

Именно об этом я и сказал

 

Т.е. смотрите cart/add

Я вас немного не понял) Спасибо, сейчас буду рыть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
tabook    124

А мне нужно 

Скидки нужно делать либо акциями либо объемными скидками(стандартный функционал), либо модулями "учитывать в итоге". Но кто ж вас заставит не изобретать свой велосипед. Вперед )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WinterZlat    0

Но кто ж вас заставит не изобретать свой велосипед. Вперед )

Мой велик будет со скоростями) 

А как по-другому учиться работать с кодом Opencart?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mpn2005    332

Есть пример для акций в процентах для oc1.5

 

Вот кусок vqmod:

  <file name="admin/controller/catalog/product.php">
    <operation>                           
      <search position="replace"><![CDATA[$special = $product_special['price'];]]></search>
      <add><![CDATA[$special = '-' . (float)$product_special['price'] . '%';]]></add>
    </operation>  
  </file>  
  
  <file name="system/library/cart.php">
    <operation>                           
      <search position="replace"><![CDATA[$price = $product_special_query->row['price'];]]></search>
      <add><![CDATA[$price *= 1.0 - $product_special_query->row['price'] / 100.0;]]></add>
    </operation>     
  </file>
  

  <file name="catalog/model/catalog/product.php">
    <operation>                           
      <search position="replace"><![CDATA[$query->row['special']]]></search>
      <add><![CDATA[((float)$query->row['special'] ? $query->row['price'] * (1.0 - (float)$query->row['special']/100.0) : 0)]]></add>
    </operation>  
  </file>  

Для OC2 можно переделать по аналогии.

Сейчас пока нет времени привести готовый кусок под скидки OC2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    830

Вы заранее обрекли на акции в процентах

 

а теперь попробуйте отсортировать... по цене.с акциями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mpn2005    332

Вы заранее обрекли на акции в процентах

 

а теперь попробуйте отсортировать... по цене.с акциями.

С сортировкой вопрос тоже элементарно решается.

Это не входит в вопрос данной темы.

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу