[Помогите] Оптовая и розничная цена товара + купон со скидкой групы (оптовик)

Тема в разделе "OpenCart", создана пользователем moonstyles, 25 дек 2016.

  1. moonstyles

    moonstyles

    Регистрация:
    13 апр 2013
    Сообщения:
    187
    Симпатии:
    7
    Задача вот такого плана:

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

    - Возможно ли задать в купоне на скидку вместо размера скидки в процентах - скидку групы (оптовиков)?


    Всё это нужно сети агентов которые зарабатывают на проценте с продажы. Клиент либо делает заказ с ними из их аккаунта, либо с помощю персонального купона который присваивается агенту.
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Вообще, для такой задачи можно обойтись обычными скидками от количества. Просто задать их только для группы оптовиков. Собственно, для этого даже акции подойдут, если у оптовиков оптовая цена не зависит от количества при покупке.
     
  3. moonstyles

    moonstyles

    Регистрация:
    13 апр 2013
    Сообщения:
    187
    Симпатии:
    7
    Нє нє нє... Вы не поняли... Покупать будут не оптовики... 1. Есть поставщик который четко мониторить рынок (цена для всех должна быть розничная). Но можна обойти запред, дав скидку оптовику... (Самого оптовика как такого не существует, есть только контр агент и его клиент - который и покупатель). Как пример - мы продаём Бытовую технику, есть мебельщики которые за откат советуют наш магазин, для того чтобы мебельщик мог заработать мы присваиваем ему купон, который он даёт клиенту (у клиента скидка у нас знание кому спасибо говорить), также у мастера статус оптовика и он может сделать заказ с клиентами сразу....

    1. Нужны 2 цены (опт и розница), обе видимы для всех груп покупателей.
    2. По оптовой цене чтобы могли заказать только те кто в групе (оптовики)
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Ну, как раз именно эти два пункта и можно реализовать, как я написал выше. Правда, наверное, потребуется небольшая правка, чтоб все могли видеть скидку для оптовиков, но сами цены задавать через скидки или акции.

    А на счёт купонов - есть же партнёрская программа. Кто привёл покупателя, там и так уже есть, а скидку можно допилить.
     
  5. moonstyles

    moonstyles

    Регистрация:
    13 апр 2013
    Сообщения:
    187
    Симпатии:
    7
    Можна пример реализации? Что как и где править....
    --- Добавлено, 26 дек 2016 ---
    Идеальный вариант: (в чорную пятницу был на Розетке) Цена - цена со скидкой, без промо кода в корзине цена без скидки, с промо кодом со скидкой... Для залогиненых оптовиков цена в корззине всегда со скидкой.
    --- Добавлено, 26 дек 2016 ---
    Перековырял я варианты, о групой покупателей опт невыходит, они тоже могут вводить промокод, и тогда от их опта будет ещо скидка а ето уже минус нам....

    1. Основная задача, вывести 2 цены (Базовая и со скидкой), чтобы в корзине была цена базовая, при введение промо кода - со скидкой.
     
  6. moonstyles

    moonstyles

    Регистрация:
    13 апр 2013
    Сообщения:
    187
    Симпатии:
    7
    Последнее редактирование: 30 дек 2016
  7. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Ну, это можно было сделать чуть универсальней, сразу для всех случаев использования.
    Посмотрите в /catalog/model/catalog/product.php метод getProduct.
    Самый простой вариант: вызвать здесь getProductSword и добавить результат к полям, которые возвращает getProduct, тогда оно будет доступно вообще везде и без дополнительных действий в контроллере для получения этого значения отдельно.

    Хотя ещё лучше это всё сделать одним запросом.
     
    moonstyles нравится это.
  8. moonstyles

    moonstyles

    Регистрация:
    13 апр 2013
    Сообщения:
    187
    Симпатии:
    7
    Был бы очень признателен вам, можете выложить решение в коде? Я в этом полный чайник...
     
  9. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    В /catalog/model/catalog/product.php метод getProduct:
    PHP:
    'viewed'  => $query->row['viewed'], //строка для ориентира
    'second_price' => $this->getProductSword($product_id)
    getProductSword - по идее, вы уже в этот файл добавили.

    И затем в любом контроллере, когда вы получаете информацию о товаре, у вас там среди прочего будет и поле second_price.
     
    moonstyles нравится это.
  10. moonstyles

    moonstyles

    Регистрация:
    13 апр 2013
    Сообщения:
    187
    Симпатии:
    7
    Я не силён в коде. Это не моё решение, я просто 2 недели упорно искал в инете:Biggrin: Поэтому и прошу, если ваша воля, написать метод решение вопроса...
     
  11. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Ну, так я и написал.
    Берёте getProductSword оттуда, добавляете в getProduct то, что я написал, а затем в любом контроллере, где достаются данные товара, у вас second_price будет доступно так же, как, например, price.
     
    mr.zefer нравится это.
  12. moonstyles

    moonstyles

    Регистрация:
    13 апр 2013
    Сообщения:
    187
    Симпатии:
    7

    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /sata2/home/users/etehnika/www/www.sklad.if.ua/vqmod/vqcache/vq2-catalog_model_catalog_product.php on line 125
     
  13. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Ещё раз проверьте, что вы вписали. У вас там синтаксическая ошибка.
     
    moonstyles нравится это.
  14. moonstyles

    moonstyles

    Регистрация:
    13 апр 2013
    Сообщения:
    187
    Симпатии:
    7
    Ок я закрыл кому в поле 'viewed' => $query->row['viewed'], и ошибка исчезла... Ефект остался прежним (просто я не знаю что оно должно было сделать), цена на странице категорий только базовая. Как сделать так чтобы на странице категорий также выводило 2 цены?
     
  15. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Посмотрите, как выводиться базовая цена (в контроллере и в шаблоне) и сделайте всё точно так же, но заменяя price на second_price. Там сейчас вывод будет 1 в 1.
     
  16. moonstyles

    moonstyles

    Регистрация:
    13 апр 2013
    Сообщения:
    187
    Симпатии:
    7
    Еесли вам не тяжело, можна хоть пример куска кода... Ато я реально методом тыка делаю и нифига не выходит... Я шаблон поправить могу, а вот с контроллерами полный ппц..
     
  17. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Для категории:
    PHP:
    $data['products'][] = array(
                        
    'product_id'  => $result['product_id'], //опорная строка
                        
    'second_price'  => $this->currency->format($this->tax->calculate($result['second_price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']),
     
    moonstyles нравится это.
  18. moonstyles

    moonstyles

    Регистрация:
    13 апр 2013
    Сообщения:
    187
    Симпатии:
    7
    Огромнейшее спасибо! Цену без ероров начало выводить! Один вопрос только - везде цена - 1... Как исправить?

    И ещо, после применения фильтра, или же обновления страницы - 2 цена исчезаэт:Biggrin:
     
  19. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    У фильтра собственный контроллер и шаблон, там это надо делать отдельно.

    Попробуйте так:
    PHP:
    'second_price'  => $result['second_price'],
    Если всё равно 1, то надо проверить getProductSword, которая достаёт цену из базы, если будет нормально - значит оно по курсу неправильно пересчитывается.