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

Hidalgo

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

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

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

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

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

25 апреля 2016
  • medvegatko@gmail.com 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. Но это только касаемо уже созданного заказа. Во фронте выкручиваться костылями придется.

  • Hidalgo 14 ноября 2017 13:35

    Евгений

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

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

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

  • Retributor 15 декабря 2018 15:19

    Добрый день! Кто-нибудь знает, как отредактировать /wa-apps/shop/lib/actions/frontend/shopFrontendCartAdd.controller.php, чтобы услуга засчитывалась только единожды?

  • Retributor 15 декабря 2018 18:18

    Отвечаю сам себе, правил /wa-apps/shop/lib/classes/shopCart.class.php

    А именно заменил на $s['quantity'] = $item['quantity']; на $s['quantity'] = 1; - пока что этот костыль меня полностью устраивает, т.к. у меня только одна услуга, и она не увеличивается с количеством товаров.

Добавление новых комментариев к этой теме отключено.