Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
%total% для %data doSelection()%

Автор albionРаздел Макросы UMI.CMS

Ответов: 5
Просмотров: 6080
Последний ответ 24 Июля 2011, 10:29:40
от albion
Фильтр по полю

Автор mihdanРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 2761
Последний ответ 18 Октября 2013, 22:53:46
от PHOENIX-75
autothumbs.php версии 2,8,4

Автор albionРаздел Настройка системы и модулей

Ответов: 6
Просмотров: 6982
Последний ответ 21 Июля 2011, 18:00:19
от admin
Кастомный макрос

Автор thecoderРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 2408
Последний ответ 22 Июля 2013, 17:50:14
от admin
Яндекс.Карта на сайте

Автор thecoderРаздел Шаблоны XSLT

Ответов: 5
Просмотров: 5050
Последний ответ 22 Июля 2013, 16:14:40
от thecoder

0 Пользователей и 1 Гость просматривают эту тему.

*

asbezrukov

  • *
  • 8
  • +1/-0
    • Просмотр профиля
В стандартных шаблонах при добавлении опции "составное" к товару, происходит сложение суммы товара и "опции". Например, как в стандартном шаблоне, купить проигрыватель с возможностью вида отделки...

Но сейчас столкнулся с проблемой, что необходимо не сложить стоимость товара и "опцию", а умножить.
Например: на рынке продают золотую проволку, везде указывается цена за 1 погонный метр. Но магазин не торгует в розницу по метражу, а продает ее бухтами ( для олигархов  :D ), причем разной намотки. Т.е. покупатель когда пытается купить, то ему предлагается выбрать бухту в зависимости от намотки. (это и есть опция на которую надо умножить цену за 1кв.м.)

Подскажите пожалуйста, где можно изменить функцию сложения "опции" и цены товара на умножение.
Спасибо. Надеюсь, не я первый с такой задачей столкнулся. 
« Последнее редактирование: 15 Марта 2013, 15:19:38 от asbezrukov »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Изменение функции добавления товара в коl
« Ответ #1 : 15 Марта 2013, 16:46:03 »
фактически у вас получается есть опция (бухта), в которой есть цена которую надо вывести на сайте и цена по которой надо считать?

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


*

asbezrukov

  • *
  • 8
  • +1/-0
    • Просмотр профиля
Re:Изменение функции добавления товара в коl
« Ответ #2 : 15 Марта 2013, 17:44:33 »
фактически у вас получается есть опция (бухта), в которой есть цена которую надо вывести на сайте и цена по которой надо считать?
Опция "бухта" - это метраж, т.е. кол-во метров в бухте. При добавлении пользователя в корзину проволоки, за определенную стоимость, ему предлагается выбрать размер бухты(под размером подразумевается длина проволоки). Вот пример, чтобы было понятно, http://stsgeo.ru/geotekstil/lavsangeo/geotekstil_dornit_igloprobivnoj1/ (выбирайте в таблице 600 Лавсан) только реализован не на проволоке, а на геотекстиле, но смысл один и тотже. Надо умножить цену товара на опцию (метраж) чтобы получить сумму, которая пойдет в корзину.
« Последнее редактирование: 15 Марта 2013, 17:52:02 от asbezrukov »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Изменение функции добавления товара в коl
« Ответ #3 : 15 Марта 2013, 19:18:56 »
видимо я не совсем понял вопрос, у вас есть товар(проволока) и есть вариации поставок данного товара(бухта 100 метров,бухта 200 метров и т.д.) у каждой вариации есть цена за погонный метр. Например покупая бухту в 100 метров мы платим по 12 рублей за метр, а покупая бухту в 200 метров мы платим по 14 рублей за метр.... так?

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

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

*

asbezrukov

  • *
  • 8
  • +1/-0
    • Просмотр профиля
Re:Изменение функции добавления товара в коl
« Ответ #4 : 15 Марта 2013, 20:21:36 »
Извините, за мою назойливость, и за то что сразу не правильно изложил.

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

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

Ранее я пробовал указать в опциях число "стоимость" (рулона, бухты и т.д.), но тогда пришлось цену  у товара делать равную нулю (т.к. к ней прибавляется число из опции), не буду говорить про видимость на странице этой цены ))). Но ведь, это начало геморроя, ведь когда менялась цена у товара (метр, метр погонный, кв. метр. и т.п.), то приходится изменять число в опциях у каждого товара. Это не выход.

А выход есть, если при добавлении товара в корзину, не прибавлялась "опция" к "цене" товара, а умножалась. Это возможно?
« Последнее редактирование: 15 Марта 2013, 21:48:34 от asbezrukov »

*

asbezrukov

  • *
  • 8
  • +1/-0
    • Просмотр профиля
Re:Изменение функции добавления товара в коl
« Ответ #5 : 15 Марта 2013, 21:39:37 »
видимо я не совсем понял вопрос, у вас есть товар(проволока) и есть вариации поставок данного товара(бухта 100 метров,бухта 200 метров и т.д.) у каждой вариации есть цена за погонный метр. Например покупая бухту в 100 метров мы платим по 12 рублей за метр, а покупая бухту в 200 метров мы платим по 14 рублей за метр.... так?

Нет у каждой вариации цена одна и таже.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Изменение функции добавления товара в коl
« Ответ #6 : 16 Марта 2013, 02:06:13 »
ага, значит это я намудрил с пониманием вопроса... тогда у вас скорее всего 2 пути...

1. вы правите ядро в файле /classes/modules/emarket/classes/orders/items/optioned.php , в функции public function getItemPrice()...

Там есть строчка
$price += (float) $optionPrice;

меняйте её на
$price = $price * (float) $optionPrice;

При этом надо помнить что при обновлении этот файл перезаписывается, так что вам надо помнить об этой доделке и после обновления восстанавливать эти правки.

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

3. Ждем когда umi добавят возможность переназначать функции ядра при этом не боясь потерять свой код при обновлении и радуемся.

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

5. еще можно отказаться от опционных полей и написать свой вариант выпадающего списка. И написать кастом вариант функции emarket basket(), который будет просчитывать цену умноженную на количество (заданное в каком-то вами созданном доп поле, какого-нибудь вами подключенного справочника) и передавать его в корзину как вам надо. При все прелести этого варианта у вас опять же проблема, что система не считая ваши поля опционным, будет класть в корзину один товар с разными бухтами, как один и тот же товар (то есть этим вопросом вам тоже придется озаботиться)


P.S. я бы остановился на первом варианте и как-то для себя и для будущих разработчиков задокументировал, что именно надо изменить и где, если запускалось обновление системы...

*

asbezrukov

  • *
  • 8
  • +1/-0
    • Просмотр профиля
Re:Изменение функции добавления товара в коl
« Ответ #7 : 16 Марта 2013, 11:56:44 »
Спасибо большое! все работает по 1 способу. 5 вариант тоже хорош. будем над ним думать.