Цена из Custom options используя API

Сформировать цену из не предопределенных данных !

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Sun
  • Группа: Пользователь
  • Сообщений: 5
  • Регистрация: 17.08.2010

17.08.2010 17:09

Здравствуйте.
Стоит задача сформировать цену из не предопределенных данных, перед отправкой товара в корзину !
Если конкретнее, то товар это изображение для печати и покупатель может ресайзить картинку как угодно, в зависимости от размера и должна формироваться цена, как это реализовать, то-есть как установить свою сформированную по алгоритму цену ?
Вот пример что есть сейчас:
$params = array(
    'product' => $product_id,
    'options' => array(        
        7 =>$info,        
        6 =>$size
    ),
    'qty' =>$qty
);
     $product = Mage::getModel('catalog/product')->load($product_id);     

     $session = Mage::getSingleton('core/session', array('name'=>'frontend'));

     $cart = Mage::helper('checkout/cart')->getCart();
     $cart->addProduct($product, $params);

     $session->setLastAddedProductId($product->getId());
     $session->setCartWasUpdated(true);

     $cart->save();
     


Я добавляю товар в корзину с кастом параметрами ($size,$info) используя "Custom Options", предварительно естественно добавив их в админке и узнал айдишники.
Может нужно создать какой-то хитрый атрибут который будет брать цену из своего поля или еще как, я в magento совсем зеленый ?!

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

17.08.2010 17:48

Magento - объекто-ориентированная система.
В ней есть базовый класс "Товар", у товара есть стандартный метод "Получить цену".
Очевидно, можно написать класс-потомок от класса "Товар", и переопределить в потомке метод "Получить цену".

#3 Sun
  • Группа: Пользователь
  • Сообщений: 5
  • Регистрация: 17.08.2010

17.08.2010 18:19

То-есть стандартными настройками это решить нельзя ?

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

17.08.2010 18:22

Magento способна расчитывать стоимость заказа на основе выбранных пользователем параметров товара (custom product options).
Для анализа применимости в вашем случае стандартной функциональности требуется описание вашей предметной области: в частности, полное описание правил ценообразования.

#5 Sun
  • Группа: Пользователь
  • Сообщений: 5
  • Регистрация: 17.08.2010

17.08.2010 18:31

Там нету формулы, необходимо просо прибавить стандартную цену к цене пришедшей из запроса.
типо:
$product->price = $product->price + (int)$_POST['new_price'];

Но насколько, я понял так сделать нельзя.

"new_price" формируется в флэше, он в принципе не прогнозируемый.

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

17.08.2010 18:41

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

#7 Sun
  • Группа: Пользователь
  • Сообщений: 5
  • Регистрация: 17.08.2010

17.08.2010 18:50

Цена зависит от разрешения изображения, которое может быть каким угодно, я могу узнать формулу но, что мне это даст ?
Предположим что: new_price = (W + H)* price; W и H, от 0 до 10000, что мне делат в этому случае ?

В принципе можно вбить в custom options список с ценами 1x2,1x3,...2x1,2x2,. итд. но это два дня вбивать сидеть.

#8 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

17.08.2010 18:56

Теперь предметная область мне понятна.
В вашем случае без программирования не обойтись.
Конкретнее читайте моё первое сообщение в этой теме.
Архитектура системы будет выглядеть так:
1) Магазин Magento получает длину и ширину изображения.
2) Запрос к магакзину обрабатывает контроллер вашего модуля
3) Контроллер создает объект-товар вашего типа и устанавливает для товара значения атрибутов "длина" и "ширина"
4) Для объекта-товар вы переопределяете метод "Получить цену" (getPrice) на основе вашей формулы.
5) Все. Для данной доработки менять системные файлы Magento не требуется, всю новую функциональность можно вынести в ваш модуль. При этом смежные функции (налогобложение, отчёты и т.п.) продолжат работу в полном объёме.

#9 Sun
  • Группа: Пользователь
  • Сообщений: 5
  • Регистрация: 17.08.2010

17.08.2010 19:00

Я понял, знаком с системой 2-й день, а она мне уже очень нравится :rolleyes:
Спасибо за помощь !

Поделиться темой: