UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: atach от 19 Августа 2013, 21:47:29

Название: как узнать id заказа (корзины) с которой работает покупатель
Отправлено: atach от 19 Августа 2013, 21:47:29
Подскажите такой вопрос, как можно узнать id заказа (корзины) с которой в настоящий момент работает покупатель в Интернет магазине.

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

Цитировать
##########
Ответ службы поддержки:

Текущую корзину товаров (заказ) можно получить с помощью метода getBasketOrder() класса order:
public function getBasketOrder($useDummyOrder = true)
Описание метода:
Получить заказ, который представляет текущую корзину товаров.
Если такого заказа нет, то он будет создан
@param bool $useDummyOrder использовать ли заказ с пометкой 'dummy'
Возвращает int|order заказ, который представляет корзину товаров.
Пример:
$order = order::getBasketOrder(false);
Название: Re:как узнать id заказа (корзины) с которой работает покупатель
Отправлено: e.ioffe от 20 Августа 2013, 10:58:34
Все правильно.

$order = order::getBasketOrder(false);
$orderId = $order->getId();

Что дальше хотите сделать с заказом?
Название: Re:как узнать id заказа (корзины) с которой работает покупатель
Отправлено: atach от 20 Августа 2013, 11:30:13
Спасибо буду пробовать
Название: Re:как узнать id заказа (корзины) с которой работает покупатель
Отправлено: atach от 20 Августа 2013, 15:13:18
Вот ещё бы вопрос такой подсказали...
Дальше я в принудительном порядке пытаюсь вешать на заказ или на товар в заказе скидку, но не могу понять структуру...
Класс выглядит вот так:
Цитировать
/**
      * Назначить скидку на заказ
      * @param discount $discount скидка на заказ
      */
      public function setDiscount(discount $discount = null) {
         if($discount && ($discount->validate($this) == false)) {
            $discount = null;
         }
         $this->discount = $discount;
      }

но немогу понять как обратиться к нему...
$order->setDiscount($discoyntId);

Я так понимаю что $discoyntId это id скидки созданный в модуле ИНтренет магазин, или как нахначить скидку если также  она не подходит под правило.
Название: Re:как узнать id заказа (корзины) с которой работает покупатель
Отправлено: Aisamiery от 22 Августа 2013, 17:36:36
public function setDiscount(discount $discount = null)

По этой семантики метода я могу сказать, что она ждет не ID в виде числа, а конкретно объект класса discount

Может быть попробовать воспользоваться вот этой функцией
public function getAllDiscounts($codeName = false)

Получить все скидки или скидку по codeName, а потом уже передавать её в функцию установки скидки?
Название: Re:как узнать id заказа (корзины) с которой рабо
Отправлено: Aisamiery от 22 Августа 2013, 17:39:19
а есть вот ещё

/**
* Получить экземпляр скидки по ее id
* @param Integer $discountId id скидки
* @return discount объект скидки, экземпляр класса-потомка discount
*/
public static function get($discountId) {
static $cache = array();

if(!$discountId) {
return null;
}

if(isset($cache[$discountId])) {
return $cache[$discountId];
}

$objects = umiObjectsCollection::getInstance();
$discountObject = $objects->getObject($discountId);
if($discountObject instanceof iUmiObject == false) {
return false;
}

$discountTypeId = $discountObject->discount_type_id;
$discountTypeObject = $objects->getObject($discountTypeId);
if($discountTypeObject instanceof iUmiObject == false) return null;

$className = $discountTypeObject->codename . 'Discount';
self::includeDiscount($className);

return $cache[$discountId] = new $className($discountObject);
}

в принципе можно попробовать

$discount = discount::get($Id);
$order->setDiscount($discount);
Название: Re:как узнать id заказа (корзины) с которой работает покупатель
Отправлено: atach от 22 Августа 2013, 22:57:57
Спасибо большое ... будем ковырять дальше ...
Хоть ООП не мой конёк, но когда то нужно начинать