Услуги без перемножения на кол-во основного товар?!

Сергей [wedoit.pro]

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

Скажем товара в корзине 5 шт. а услуга одна или иного кол-ва.

С логикой работы экшенов работы с корзиной (shopFrontendCartAdd, shopFrontendCartDelet и т.п.) все ясно - под замену.

Хелперы, вроде: {$wa->shop->cart()} так же, нужно переписать новые.

А как сделать обработчик события order_create ? Можно ли игнорировать зависимость услуги от кол-ва основного товара в других системных классах?

25 апреля 2016
  • Андрей 13 ноября 2017 22:03

    Мне тоже интересно это реализовать.

    К примеру человек заказывает 100 листовок, а услугой заказывает дизайн. Так вот 100 раз платить за дизайн глупо.


  • Евгений Леман 14 ноября 2017 01:06

    https://gyazo.com/9d2b189911c2e5b118215b9e7b2cff40 - технически это возможно. На скрине результат работы плагина, который добавляет текущее содержимое корзины в уже созданный заказ. И там вышел такой вот баг, который решено было считать не багом, а правильным подходом :)

    Если в двух словах, то придется отредактировать заказ после его создания. Как-то так:

    $om = new shopOrderModel();
    $workflow = new shopWorkflow();
    $order = $om->getOrder($order_id);
    $order['items'] = $this->recalculateServices($order['items']);
    // пересчитать $order['discount'], $order['total'] и пр. важности
    $workflow->getActionById('edit')->run($order);

    В методе recalculateServices() изменить 'quantity' у нужных услуг на 1. Но это только касаемо уже созданного заказа. Во фронте выкручиваться костылями придется.

  • Сергей [wedoit.pro] 14 ноября 2017 13:35

    Евгений

    Такой вариант уже рассматривался. Уведомления о заказе улетают раньше, чем он будет отредактирован.

  • Евгений Леман 14 ноября 2017 17:27

    Вроде никто не запрещает удалять стандартное уведомление при создании(настройки - уведомления). Вместо него можно создать своё событие для уведомления и уже для него...



Чтобы добавить комментарий, зарегистрируйтесь или войдите