COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

Опции + к общему количеству товара, а не к каждой единице


kimono11

Recommended Posts

Добрый вечер. Второй день ищу решение по форумам, но безрезультатно.

Стандартно опции плюсуют или вычитают от основной цены товара, по каждой единице.

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

Пример:

Делаем сахар с стиках с логотипом заказчика. Минимальный тираж 100кг. Есть дополнительные затраты на печатные формы(клише), которые плюсуются к тиражу (100, 200, 300 кг)

Расчет тиража происходит по формуле:

  100кг*36,50+1клише*400,00=4050,00
  200кг*35,00+1клише*400,00=7400,00

 

Как, каким модулем вывести клише опциями и прибавлять к тиражу?

Скрытый текст

image.thumb.png.ce6587394d002b8b5e6e34249f200d2a.png

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

То есть у вас товар это килограммы?

 

Я для таких целей использовал опции с количеством вот пример

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

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

9 часов назад, Get-Web сказал:

То есть у вас товар это килограммы?

 

Я для таких целей использовал опции с количеством вот пример

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

Товар это сахар (телефон, кроссовки), и есть его количество (в килограммах или в штуках неважно)

Спасибо за наводку, смотрел этот модуль, но не хотелось бы таким способом как в Вашем примере. Тем более что цена зависит от количества (кг)

 

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

6 часов назад, kimono11 сказал:

Спасибо за наводку, смотрел этот модуль, но не хотелось бы таким способом как в Вашем примере. Тем более что цена зависит от количества (кг)

К этому модулю есть дополнение, чтобы можно было устанавливать арефметические действия */%

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

В 01.08.2019 at 18:51, BuslikDrev сказал:

К этому модулю есть дополнение, чтобы можно было устанавливать арифметические действия */%

Да, я устанавливал это дополнение, у меня есть эти опции: =, *, +%, -%

Но они считаются также как + и - к одной единице товара, а не к сумме товаров.

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

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

2 часа назад, kimono11 сказал:

к одной единице товара, а не к сумме товаров

Что к сумме нужно добавить? Почему скидка от количества не устраивает?

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

3 часа назад, kimono11 сказал:

к одной единице товара, а не к сумме товаров.

Если очень хочется и формирование цены в магазине это допускает, то в /system/library/cart/cart.php

Есть строка:

'total'           => ($price + $option_price) * $cart['quantity'],

Если удалить * $cart['quantity'] то количество не будет учитываться в итоговой стоимости

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

14 часа назад, BuslikDrev сказал:

Что к сумме нужно добавить? Почему скидка от количества не устраивает?

 

Видимо в первом посте недостаточно ясно выразился с примерами. Попробую пояснить по другому.

Стандартный функционал выглядит так:

'price'           => ($price + $option_price),
'total'           => ($price + $option_price) * $cart['quantity'],

Мне нужно добавить дополнительный вид опции так, чтобы итоговое значение получалось следующим:

'total'           => ($price * $cart['quantity']) + $option_price,

Надеюсь пример на гаджетах станет более понятным.

Товар - Наушники. В опциях к этим наушникам я хочу вывести дополнительные аксессуары на выбор - футляр, переходник USB Type-C, и т.д.

Покупатель может выбрать Наушники 10 шт. + 1 футляр + 1 переходник.

Тогда общая сумма заказа должна выглядеть так: 10 наушников * 5$ + 1 футляр 1,5$ + переходник 1,5$   Итого 10*5+1,5+1,5=53$ 

(сейчас система по-умолчанию считает так: (5+1,5+1,5)*10=80 )

 

Мои предположения и наброски как это сделать на основе options_price_OC2.ocmod.xml

По примеру добавленных функций =,/, *, +%, -%, нужно добавить новую:

в admin/view/template/catalog/product_form.tpl

html += '      <option value="f">()+</option>';
и
<?php if ($product_option_value['price_prefix'] == 'f') { ?>
    <option value="f" selected="selected">()+</option>
<?php } else { ?>
    <option value="f">()+</option>
<?php } ?>

и в system/library/cart/cart.php

$new_total = $total;

} else if ($operation == 'f') {
    $new_total = ($new_price * $cart['quantity']) + $new_option_price;
    $new_option_price = $new_option_price + $value;
или
    $new_option_price += $value;

 

Пока не знаю как правильно добавить сюда:
 

Скрытый текст

  <file path="catalog/controller/product/product.php">
    <operation>
      <search><![CDATA[$price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false)]]></search>
      <add position="replace"><![CDATA[
        if ($option_value['price_prefix']=="u") {
            $price = '+' . (float)$option_value['price'].'%';
        }
        elseif ($option_value['price_prefix']=="d") {
            $price = '-' . (float)$option_value['price'].'%';
        }
        elseif ($option_value['price_prefix']=="*") {
            $price = '*' . (float)$option_value['price'];
        }
        elseif ($option_value['price_prefix']=="/") {
            $price = '/' . (float)$option_value['price'];
        }
        else{
            $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']);
        }
        // $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false)]]></add>
    </operation>
  </file>

 

 

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

1 час назад, kimono11 сказал:

Надеюсь пример на гаджетах станет более понятным.

Товар - Наушники. В опциях к этим наушникам я хочу вывести дополнительные аксессуары на выбор - футляр, переходник USB Type-C, и т.д.

Покупатель может выбрать Наушники 10 шт. + 1 футляр + 1 переходник.

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

 

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу