Опции и цены , одинаковые в каждом товаре

Тема в разделе "Общие вопросы", создана пользователем mazik001, 12 дек 2020.

  1. mazik001

    mazik001 Новичок

    Сообщения:
    12
    Симпатии:
    1
    Добрый день, други. Подскажите, задача - есть опции допустим Цвет, у одного товара я выставил ценник для каждого цвета. Как сделать так чтобы я не выставлял для сотни других товаров к ТАКИМ же опциям снова цены, а они изначально были забиты?

    upd....
    Сам спросил и сам ответил)
    Как один из вариантов тупо продублировать товар )
     
    Последнее редактирование: 12 дек 2020
  2. Роман П

    Роман П Новичок

    Сообщения:
    4
    Симпатии:
    0
    У меня тоже проблема с ценами, торгуем продукты питания, цера выставлена за граммы, например 1,5 руб. Но программа сама округляет автоматом до 2,0, помогите может у кого-то был опыт?
     
  3. Ravilr

    Ravilr Специалист

    Сообщения:
    3.877
    Симпатии:
    1.064
    Это не проблема. Скорей всего в настройках валюты у вас выставлено округление. Система - Локализация - Валюта
    Подробнее в документации https://forum.opencart-russia.ru/forums/wiki/
     
  4. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    835
    Симпатии:
    94
    есть модуль.
    описание
     
  5. mazik001

    mazik001 Новичок

    Сообщения:
    12
    Симпатии:
    1
    А ссылку на модуль можно?
     
  6. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    835
    Симпатии:
    94
    модуль мой, нигде не продается, если надо, стучите в личку
     
  7. Zakus_qqq

    Zakus_qqq Пользователь

    Сообщения:
    35
    Симпатии:
    2
    Добрый день. Задача.
    Имеется товар, который может продаваться как на развес, так и упакованным изделием, т.е. штучно.

    Базовая цена 6 руб.
    Цена со скидкой 5 руб.
    По задумке эти цены за 1 кг.

    Имеются 4 опции. На разношерстный характер опций не обращаем внимания:

    - за 1 кг (= цена со скидкой =5 руб)
    - с добавкой ( = цена со скидкой + 2 руб = 7 руб)
    - за 100 г (= цена со скидкой/10 = 0,5 руб)
    - за 1 шт ( = новая цена = 8 руб)

    Так как на дефолтном опенкарте при наличии цены со скидкой опция корректирует именно цену со скидкой (а не базовую цену), то для первых двух опций хватает базового функционала, а для последних двух опций задача сводится лишь к добавлению к списку префиксов '=' и '/' к имеющимся уже '+' и '-'.

    По логике вещей, чтобы добавить дополнительный префикс '/' в функционал опции, нужно аккуратно продублировать все строчки кода, отвечающие за, например, прификс '+' и изменить + на /. Аналогично для * и =.

    Прошерстив форумы, я выкопал, что правки надо сделать в двух файлах:
    Админ/вьюшка..../product_form.twig
    и
    Библиотека/cart/cart.php

    Итак, у меня два вопроса:
    Ход моих рассуждений верный или я чего-то не учёл?

    Что не так с кодом (на фото) , почему во всплывающем списке не отображаются '*' и '/'? На фото выделили строчки кода, которые я добавил.
     

    Вложения:

  8. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    835
    Симпатии:
    94
    кеш обновляли ? в кешфайле ваш код появился ?
    но что бы это работало одним этим добавлением вам не обойтись )
     
  9. Zakus_qqq

    Zakus_qqq Пользователь

    Сообщения:
    35
    Симпатии:
    2
    Общий кэш из админки обновил. А что такое кэш файл?)

    Вы говорите, что добавлением не обойтись, но чем принципиально отличается + от *, кроме как математической операцией.
    Не могу даже представить подводных камней))
     
  10. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    835
    Симпатии:
    94
    который находится тут storage/modification/catalog/view
    если вы не знаете что такое кешфайл и где он находится то что то обьяснять про подводные камни бесполезно
    чем так изголяться поставьте готовый модуль и будет вам счастье
     
  11. Zakus_qqq

    Zakus_qqq Пользователь

    Сообщения:
    35
    Симпатии:
    2
    Вы наверное, имели ввиду storage/modification/ADMIN/view
    Там дописал те же строчки кода и выпадающем списке появились символы! Спасибо, zema50! :)

    Да, модуль это конечно, хорошо. Но опять же, пока никто не назвал мне хотя бы один пример, где префикс "/" принципиально отличался бы от "+". То есть, где бы логика расчёта была бы различна.

    "+" добавляет к базовой цене ( или цене со скидкой), а потом эта полученная величина умножается на кол-во.

    "/" делит базовую цену (или цену со скидкой), а потом эта полученная величина умножается на кол-во.

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

    Zakus_qqq Пользователь

    Сообщения:
    35
    Симпатии:
    2
    Последнее редактирование модератором: 1 фев 2021
  13. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    835
    Симпатии:
    94
    вам надо еще прописать в файлах system/library/cart/cart.php, catalog/model/catalog/product.php в product.twig дописать js ку что бы она воспринимала эти символы. так что тут не просто несколько строк кода ))))
    интересно где вы видели такую цену за модуль ?
     
  14. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    835
    Симпатии:
    94
    пока писал вы ответили. нет это совсем не тот модуль
     
    Zakus_qqq нравится это.
  15. Zakus_qqq

    Zakus_qqq Пользователь

    Сообщения:
    35
    Симпатии:
    2
    Итак, после правки кода в двух местах в файле admin/view... /produkt_form.twig и обновления кэш файла имеем новые символы в админке и их отображение в карточке товара.

    После правки кода в файле system/library/cart/cart.php, который отвечает за математику, ничего не происходит)) То есть, при выборе опции (*, /, =) стоимость остаётся равной базовой стоимости. Опции (+, -) работают как положено.

    Где ещё нужно дописать код?
     

    Вложения:

  16. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    239
    так вот же
    вам же говорили, все не так просто
    да и с = , тоже не все просто
     
  17. Zakus_qqq

    Zakus_qqq Пользователь

    Сообщения:
    35
    Симпатии:
    2
    Да, верно. Но я вроде бы выкрутился :) Остался последний штрих: надо убрать с экрана скобки и значения в них (на фото).

    В файле product.twig есть такие строки:

    {% if option_value.price %}
    ({{ option_value.price_prefix }}{{ option_value.price }})
    {% endif %}

    Просто комментирование {# #} не помогает - опция вовсе не работает. Как сделать, чтобы в коде строчки остались, но на экран не выводились?
     

    Вложения:

  18. Zakus_qqq

    Zakus_qqq Пользователь

    Сообщения:
    35
    Симпатии:
    2
    Вот, если что, полный код, отвечающий за радиокнопки:

    {% if option.type == 'radio' %}
    <div class="form-group{% if option.required %} required {% endif %}">
    <label class="control-label">{{ option.name }}</label>
    <div id="input-option{{ option.product_option_id }}"> {% for option_value in option.product_option_value %}
    <div class="radio">
    <label>
    <input type="radio" name="option[{{ option.product_option_id }}]" value="{{ option_value.product_option_value_id }}" />
    {{ option_value.name }}
    {% if option_value.price %}
    ({{ option_value.price_prefix }}{{ option_value.price }})
    {% endif %} </label>
    </div>
    {% endfor %} </div>
    </div>
    {% endif %}

    Когда я убирал с экрана поле "факс" при регистрации, я в описании div использовал конструкцию "style="display:none;"". Можно ли и в этом случае провернуть такую штуку. Если да, то куда ее вписать?
     
  19. Ravilr

    Ravilr Специалист

    Сообщения:
    3.877
    Симпатии:
    1.064
    По умолчанию все помогает. Это всего лишь вывод. Другой случай, если у вас что то еще установлен, например скрипт который цепляется на опции и смотрит именно на то что в скобках или модификатор который смотрит на строку, а вы ее меняете.
     
    Zakus_qqq нравится это.
  20. Zakus_qqq

    Zakus_qqq Пользователь

    Сообщения:
    35
    Симпатии:
    2
    Да, стоит мод. Можно ли сделать так, чтобы эти строчки в коде остались, но на экран не выводились? Например конструкцией style="display:none;"?