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

[Решено?..] Установка скидки на товар с опцией


shurik

Recommended Posts

  • 3 weeks later...

Честно говоря, прочитал пост и не понял, что должно происходить, ведь в опциях настраивается сколько добавить или убавить от цены основной при выборе, а что надо если не это ?

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


  • 1 month later...

Честно говоря, прочитал пост и не понял, что должно происходить, ведь в опциях настраивается сколько добавить или убавить от цены основной при выборе, а что надо если не это ?

Вопрос такой же. Не знаю, что имел в виду автор темы, ситуация в моем случае: есть товар, у него есть опции (разный объем), соответственно у разных опций разная цена (поставил дополнение, которое дает устанавливать к опциям не только +/-, но и точные значения). Все работает, цену на сайте меняет в зависимости от выбора опции. Далее ввел дополнительную группу пользователей (по ней предусмотрена закупочная цена, не процент какой либо скидки, а фиксированная для каждого товара/опции) в карточке товара в разделе скидки я могу проставить цену для данной группы пользователей, НО!!!! я могу изменить только базовую цену, а цену опций нет, как бы этот момент реализовать?

Ситуация сейчас базовая цена я выставляю наименьшую из опций,

получаю: объем/цена

0,2 - 100

0,5 - 300

0,75 - 600

а скидку могу проставить только к первому объему

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


...как бы этот момент реализовать?

добавив новые столбцы в таблицы опций и протянув их сквозь админку и каталог.

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

добавив новые столбцы в таблицы опций и протянув их сквозь админку и каталог.

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

написал сюда, в надежде, что может кто-то уже сталкивался со схожим вопросом, и может даже есть готовый модуль, просто уровень программирования у меня очень начальный, на листочке написал что и где нужно сделать, но думаю, что очень долго буду реализовывать

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


добавив новые столбцы в таблицы опций и протянув их сквозь админку и каталог.

добавил столбцы в таблицы опций (точнее заменил столбик вес, он мне не нужен), а дальше застрял, подскажите если не сложно -

получается есть две группы, 3 опции, т.е. на странице опций проставлены 6 вариантов цен, как тут составить условие вывода цены?

а еще есть товары, у которых опций нет, т.е. есть только базовая цена, по которой тоже возможны варианты в зависимости от группы (в разделе скидка)

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


Вот тоже сейчас ломаю голову как реализовать систему скидок для опций, у меня у товара цена равна 0 а все цены хранятся в опциях (+200 р. +400 р. и т.д.) то-есть я могу управлять только одной ценой, как сделать скидку, и как сделать например если я хочу поднять все цены на 20%, может есть какое-то решение?

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


  • 1 month later...

Проблема актуальна!

Посоветуйте решение. Иначе при каталоге даже всего в несколько десятков товаров, что-то делать с опциями для дополнительных групп, просто не представляется возможным - очень большой объем работы. я не говорю о сотнях товаров.

 

У меня ситуация схожая с ранее озвучеными.

Вот пример:

Имею товар. базовая стоимость (для простоты) 1000 руб.

и имеет 3 опции:

1 опция + 500р. = 1500р.

2 опция + 1000р. = 2000р.

3 опция + 1500р. = 2500р.

 

Мне надо сделать скидку в 20% на этот товар для конкретной группы. Путем манипуляций на калькуляторе получаем то что дожно быть в магазине в идеале:

 

Базовая стоимость - 20% = 800р.

1 опция + 500р. - 20% = 1200р.

2 опция + 1000р. = 1600р.

3 опция + 1500р. = 2000р.

 

Соответстченно в этом случае система должна брать базовую стоимость без скидки, прибавлять к ней стоимость опции и делать скидку.

 

На деле имеем:

 

Базовая стоимость - 20% = 800р. (поставлена вручную)

1 опция + 500р. = 1300р.

2 опция + 1000р. = 1800р.

3 опция + 1500р. = 2300р.

 

Хорошо. я смогу в ручном режиме изменить цены для данной группы в рамках этой предновогодней акции. но потом мне надо вернуть цены обратно, а к 23 февраля танцы с бубном продолжаются?

 

Может быть я чего-то недопонимаю в логике данного движка магазина.

 

А может быть плохо изучал форум.

Подскажите решение или модель волшебный.

Спасибо!

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


  • 1 month later...

Актуально, думал "волшебный модуль" уже существует.

 

Вот у меня значение цен по опциям может отличатся в 10 раз. Например, я установил скидку для опции стоимостью 10 р,  5 р. То есть -50%. На странице появилась заманчивая надпись "-50%".  При этом цена опции за 100 р. стала 95 р. (-5%). Не логично, как то.

 

Было бы неплохо если бы  скидки для опций пересчитывались в процентном соотношении. То есть, в этом случае, -50% для каждой опции. 

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


  • 8 months later...
  • 7 months later...

Если не решили проблему то вот:

У меня не плюсуется, а сразу выводится цена опции

В контроллере указать цена опции -( (цена опции/100 )*процент от товара)

Ну и на опцию поставить событие onchange

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


  • 1 month later...

Если не решили проблему то вот:

У меня не плюсуется, а сразу выводится цена опции

В контроллере указать цена опции -( (цена опции/100 )*процент от товара)

Ну и на опцию поставить событие onchange

Простите, а можно поподробнее, в каком контроллере и где указывать, и на какую опцию нужно ставить событие onchange? Заранее спасибо.

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


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

до тиражного состояния еще не довел, так что для желающих делаю ручную установку.

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

  • 3 weeks later...

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

до тиражного состояния еще не довел, так что для желающих делаю ручную установку.

Если можно, то нужен этот модуль.

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


Добрый день!

Свяжитесь со мной в понедельник после 16-00.

Сейчас уезжаю на выходные.

С уважением,

Игорь

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

  • 1 month later...

В контроллере products.php 

$dependent_option_value_data = $this->model_catalog_product->getDependentOptionValues($this->request->get['product_id'], $option_value['product_option_value_id']);

 

после

$sp = round(100-($product_info['special']*100/$product_info['price'])); // считаем проценты

$sp2 = round((int)$option_value['price']/100)*$sp;
$sp3 = round((int)$option_value['price']-$sp2);
$option_value_data[] = array(
'price2'   =>  (float)$sp3 ? (float)$sp3 : 0
);
 
Как-то так, по крайней мере у меня работает
Надіслати
Поділитися на інших сайтах


  • 6 months later...

 

В контроллере products.php 

$dependent_option_value_data = $this->model_catalog_product->getDependentOptionValues($this->request->get['product_id'], $option_value['product_option_value_id']);

 

после

$sp = round(100-($product_info['special']*100/$product_info['price'])); // считаем проценты

$sp2 = round((int)$option_value['price']/100)*$sp;
$sp3 = round((int)$option_value['price']-$sp2);
$option_value_data[] = array(
'price2'   =>  (float)$sp3 ? (float)$sp3 : 0
);
 
Как-то так, по крайней мере у меня работает

 

 

А для второй версии как это реализовать, не подскажите?

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


  • 8 months later...

А для второй версии как это реализовать, не подскажите?

 

 

catalog/model/catalog/product.php

перед public function getProductDiscounts($product_id) 

 

public function getDependentOptions($product_id) {

$this->checkDependentOptionDb();

$query = $this->db->query("SELECT parent_product_option_id AS parent, child_product_option_id AS child FROM `" . DB_PREFIX . "dependent_option` WHERE product_id = '" . (int)$product_id . "'");

return $query->rows;

}

public function getDependentOptionValues($product_id, $product_option_value_id) {

$this->checkDependentOptionValueDb();

$parent = array();

$query = $this->db->query("SELECT parent_product_option_value_id FROM `" . DB_PREFIX . "dependent_option_value` WHERE product_id = '" . (int)$product_id . "' AND child_product_option_value_id = '" . (int)$product_option_value_id . "'");

foreach ($query->rows as $value) {

$parent[] = $value['parent_product_option_value_id'];

}

$parent = implode(' ', $parent);

return $parent;

}

private function checkDependentOptionDb() {

$query = $this->db->query("SHOW TABLES LIKE '" . DB_PREFIX . "dependent_option'");

if (!$query->rows) {

$this->db->query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "dependent_option` (

`product_id` int(11) NOT NULL,

`parent_option_id` int(11) NOT NULL,

`child_option_id` int(11) NOT NULL,

`parent_product_option_id` int(11) NOT NULL,

`child_product_option_id` int(11) NOT NULL,

KEY `product_id` (`product_id`),

KEY `child_product_option_id` (`child_product_option_id`))

ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;");

}

}

private function checkDependentOptionValueDb() {

$query = $this->db->query("SHOW TABLES LIKE '" . DB_PREFIX . "dependent_option_value'");

if (!$query->rows) {

$this->db->query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "dependent_option_value` (

`product_id` int(11) NOT NULL,

`parent_option_id` int(11) NOT NULL,

`child_option_id` int(11) NOT NULL,

`parent_option_value_id` int(11) NOT NULL,

`child_option_value_id` int(11) NOT NULL,

`parent_product_option_value_id` int(11) NOT NULL,

`child_product_option_value_id` int(11) NOT NULL,

KEY `product_id` (`product_id`),

KEY `parent_option_id` (`parent_option_id`))

ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;");

}

}

 
 
 
в контроллере-после $data['options'] = array(); пишем что-то на подобии этого

foreach ($this->model_catalog_product->getProductOptions($product_id) as $option) {

if ($option['type'] == 'select' || $option['type'] == 'radio' || $option['type'] == 'checkbox' || $option['type'] == 'image') {

$option_value_data = array();

foreach ($option['option_value'] as $option_value) {

if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {

$dependent_option_value_data = $this->model_catalog_product->getDependentOptionValues($product_id, $option_value['product_option_value_id']);

$option_value_data[] = array(

'product_option_value_id' => $option_value['product_option_value_id'],

'option_value_id' => $option_value['option_value_id'],

'parent' => $dependent_option_value_data,

'name' => $option_value['name'],

'image' => $this->model_tool_image->resize($option_value['image'], 120, 120),

'price' => (float)$option_value['price'] ? $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) : false,

'price2' => (float)$option_value['price'] ? (int)$option_value['price'] : false,

'coeff' => (float)$option_value['price'] ? (float)$option_value['price'] : 0,

'price_prefix' => $option_value['price_prefix']

);

}

}

$this->data['options'][] = array(

'product_option_id' => $option['product_option_id'],

'option_id' => $option['option_id'],

'name' => $option['name'],

'type' => $option['type'],

'option_value' => $option_value_data,

'required' => $option['required']

);

} elseif ($option['type'] == 'text' || $option['type'] == 'textarea' || $option['type'] == 'file' || $option['type'] == 'date' || $option['type'] == 'datetime' || $option['type'] == 'time') {

$this->data['options'][] = array(

'product_option_id' => $option['product_option_id'],

'option_id' => $option['option_id'],

'name' => $option['name'],

'type' => $option['type'],

'option_value' => $option['option_value'],

'required' => $option['required']

);

}

}

 
Это не решение, а всего лишь пример, подходит для всех версий с некоторыми допилами под собственные нужды, лично у меня на всех версиях при работе ручками все работает, бездумно копировать код смысла нет, просто прочитайте его поймите ход мысли.
Змінено користувачем user13
Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

 

В контроллере products.php 

$dependent_option_value_data = $this->model_catalog_product->getDependentOptionValues($this->request->get['product_id'], $option_value['product_option_value_id']);

 

после

$sp = round(100-($product_info['special']*100/$product_info['price'])); // считаем проценты

$sp2 = round((int)$option_value['price']/100)*$sp;
$sp3 = round((int)$option_value['price']-$sp2);
$option_value_data[] = array(
'price2'   =>  (float)$sp3 ? (float)$sp3 : 0
);
 
Как-то так, по крайней мере у меня работает

 

а можно подробней? в каком контроллере, куда вставлять? не нашел даже файла такого. версия 1.5.5.1.2.

спасибо

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

  • 3 years later...
  • 4 months later...
В 18.06.2020 в 22:54, lapami5452 сказал:

Потратил 2 дня, зато все работает

изменения нужны в catalog/model/catalog/product.php и system/library/cart/cart.php

Вот мод для 2.3.0.2  discount_option_auto.ocmod.xml 5 \u043a\u0411 · 15 downloads

это он добавить скидку для опции ? 

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


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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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