Корзина пользователя. Хранится в базе данных, привязана к пользователю по идентификатору сессии. В сессии кэшируются общие данные о корзине. Данный класс также используется для работы с корзиной оформленного заказа.
Открытые члены | |
| getItems () | |
| setOrder (Orm\Order $order=null) | |
| loadCart () | |
| updateOrderItems (array $items) | |
| cleanCache () | |
| cleanInfoCache () | |
| getCartItemsByType ($type=null, $only_enabled=false) | |
| enableAffiliateRestrictions ($bool) | |
| getCartUserId () | |
| prepareMultiOffersInfo ($product_id, $multioffers) | |
| exists ($id, $offer=null, $multioffers=null, $concomitants=null, $type=self::TYPE_PRODUCT, $additional_uniq=null) | |
| update ($products=[], $coupon=null, $safe=true, $manual=false) | |
| removeItem ($uniq, $manual=false) | |
| clean ($only_enabled=true) | |
| mergeEqual () | |
| getPriceItemsData ($use_currency=true) | |
| getTotalWithoutDelivery ($use_currency=true) | |
| makeOrderCart () | |
| saveOrderData () | |
| getOrderProfit () | |
| getOrderData ($format=true, $use_currency=true, $write_currency_liter=true) | |
| getTotalWeight ($weight_unit=null) | |
| getCustomOrderPrice (array $excludeTypesOfItem=[], $use_currency=true) | |
| setCustomAmountChecker ($callback) | |
| getCustomAmountChecker () | |
| runAmountChecker ($result, $amount, $item, $n) | |
| getCouponItems () | |
| getCouponUsedTimesByCurrentUser (Discount $coupon) | |
| addUserError ($message, $can_checkout=true, $key=null) | |
| getUserError ($key) | |
| cleanUserError ($key=null) | |
| getOrder () | |
| triggerChangeEvent (bool $update_items=true) | |
| getMode () | |
| getCartId () | |
| __set ($name, $value) | |
| __get ($name) | |
| __isset ($name) | |
| __unset ($name) | |
Открытые статические члены | |
| static | currentCart () |
| static | preOrderCart (Orm\Order $order=null) |
| static | emptyCart (Orm\Order $order) |
| static | orderCart (Orm\Order $order) |
| static | userCart ($session_id, $site_id=null, $cart_mode=self::MODE_SESSION, $cart_id=0) |
| static | destroy () |
| static | deleteExpiredCartItems () |
| static | getCurrentInfo ($format=true, $use_currency=true) |
| static | generateId () |
| static | evenlyAllocateTheSum (float $sum, array $items) |
| static | correctDiscountSumByAmount ($discount_sum, $amount) |
| static | getGlobalCartId () |
| static | setGlobalCartId ($cart_id) |
Поля данных | |
| const | CART_SESSION_VAR = 'cart' |
| const | MODE_SESSION = 'session' |
| const | MODE_PREORDER = 'preorder' |
| const | MODE_ORDER = 'order' |
| const | MODE_EMPTY = 'order' |
| const | CART_ITEM_KEY = 'cartitem' |
| const | TYPE_PRODUCT = 'product' |
| const | TYPE_COUPON = 'coupon' |
| const | TYPE_COMMISSION = 'commission' |
| const | TYPE_TAX = 'tax' |
| const | TYPE_ORDER_DISCOUNT = 'order_discount' |
| const | TYPE_SUBTOTAL = 'subtotal' |
| const | TYPE_DELIVERY = 'delivery' |
| const | ITEM_EXTRA_KEY_ADDITIONAL_UNIQUE = 'additional_uniq' |
| const | ITEM_EXTRA_KEY_SOURCE = 'source' |
| const | CART_SOURCE_REPEAT_ORDER = 'repeat_order' |
| const | DISCOUNT_SOURCE_OLD_COST = 'old_cost' |
| const | SESSION_CART_PRODUCTS = 'cart_products' |
Защищенные члены | |
| __construct ($mode=self::MODE_SESSION, Orm\Order $order=null, $session_id=null, $site_id=null, $cart_id=null) | |
| getPaymentCommissionValue ($price, $commission_percent) | |
| addPaymentCommissionData ($result, $use_currency=true) | |
| addOrderDiscountData ($result, $use_currency) | |
| appendUserErrors ($result) | |
| correctAmount (Product $product, float $amount,?int $offer) | |
| getFlagPreventChangeEvent () | |
| setFlagPreventChangeEvent ($value=true) | |
Защищенные данные | |
| $mode | |
| $order | |
| $cartitem | |
| $user_errors = [] | |
| $select_expression = [] | |
| $order_expression | |
| $session_id | |
| $site_id | |
| $cache_coupons | |
| $cache_commission | |
| $cache_products | |
| $cache_products_with_concomitants | |
| $items = [] | |
| $order_items = [] | |
| $prevent_change_event = false | |
| $first_cart_data_call = true | |
| $enable_affiliate_restrictions = true | |
| $options = [] | |
| $cart_id | |
| $config | |
Статические защищенные данные | |
| static | $instance |
|
protected |
Получать экземпляр класса можно только через ::currentCart()
| string | $mode | режим работы корзины. см константы self::MODE_.... |
| Orm\Order | null | $order | объект заказа, если корзина создается из заказа |
| integer | null | $session_id | ID сессии корзины |
| integer | null | $site_id | ID сайта |
| integer | null | $cart_id |
| __get | ( | $name | ) |
Возвращает значение произвольного свойства
| string | $name | Идентификатор свойства |
| __isset | ( | $name | ) |
Возвращает true, если произвольное свойство существует (было задано)
| string | $name | Идентификатор свойства |
| __set | ( | $name, | |
| $value | |||
| ) |
Устанавливает значение произвольного свойства
| string | $name | Идентификатор свойства |
| __unset | ( | $name | ) |
Удаляет произвольное свойство
| string | $name | Идентификатор свойства |
|
protected |
Добавляет к результату информацию о скидках на заказ
| array | $result | - массив со сведениями о корзине |
| bool | $use_currency | - использовать ли текущую валюту? |
|
protected |
Добавляет сведения о комиссии в корзине
| mixed | $result | |
| bool | $use_currency | - Если true, то использовать текущую валюту, иначе используется базовая валюта |
| addUserError | ( | $message, | |
$can_checkout = true, |
|||
$key = null |
|||
| ) |
|
protected |
Добавляет пользовательские ошибки к результату $result
| array | $result | - массив со сведениями |
| clean | ( | $only_enabled = true | ) |
Очищает корзину
| bool | $only_enabled | - Если true, то будут удалены только включенные позиции |
| cleanCache | ( | ) |
Очищает кэш товаров корзины
| cleanInfoCache | ( | ) |
Очищает кэшированные сведения о сумме и количестве товаров в корзине
| cleanUserError | ( | $key = null | ) |
|
protected |
Возвращает откорректированное количество товара
| Product | $product | - объект товара |
| int | $offer | - комплектация |
| float | $amount | - исходное количество |
|
static |
Возвращает сумму скидки, скорректированную относительно количества товаров
| float | $discount_sum | - сумма скидки |
| float | $amount | - количество товара |
|
static |
Возвращает объект корзины текущего пользователя.
|
static |
Очистка всех истекших по времени корзин
|
static |
Уничтожает загруженный экземпляр корзины. Означает, что при следующем вызове ::currentCart() будет произведена загрузка из базы заново
|
static |
Возвращает пустую корзину
| Orm\Order | $order |
| enableAffiliateRestrictions | ( | $bool | ) |
Включает или выключает установку ограничений по остаткам для филиалов. В случае запросов по API, иногда нужно отключать лимит по филиалам, т.к. филиал может неточно устанавливаться
| bool | $bool |
|
static |
Равномерно распределяет указанную сумму между элементами
| float | $sum | |
| float[] | $items |
| exists | ( | $id, | |
$offer = null, |
|||
$multioffers = null, |
|||
$concomitants = null, |
|||
$type = self::TYPE_PRODUCT, |
|||
$additional_uniq = null |
|||
| ) |
Проверяет существование элемента в корзине. Возвращает уникальный идентификатор позиции в корзине или false
| mixed | $id | |
| integer | $offer | - комплектация |
| array | $multioffers | - многомерная комплектация |
| array | $concomitants | - сопутствующие товары |
| string | $type | - тип позиции в корзине |
| string | $additional_uniq | - дополнительный идентификатор |
| RSException |
|
static |
Генерирует уникальный в рамках пользователя id позиции в корзине
| getCartId | ( | ) |
Возвращает идентификатор корзины пользователя, у текущего объекта
| getCartItemsByType | ( | $type = null, |
|
$only_enabled = false |
|||
| ) |
Возвращает элементы корзины по типу
| string | null | $type | Если Type - null, то возвращаются элементы всех типов |
| bool | $only_enabled | Если true, то будет возвращены только включенные позиции |
| getCartUserId | ( | ) |
Возвращает id пользователя, которому принадлежит корзина
| getCouponItems | ( | ) |
Возвращает объекты купонов на скидку
| RSException |
| getCouponUsedTimesByCurrentUser | ( | Discount | $coupon | ) |
Получает сколько раз был использован купон, текущим авторизованным пользователем
| Discount | $coupon | - объект купона |
| DbException | |
| RSException |
|
static |
Возвращает информацию по количеству товаров и стоимости товаров в корзине
| mixed | $format | - форматировать общую сумму заказа |
| mixed | $use_currency | - если true, то использовать текущую валюту, иначе используется базовая валюта |
| RSException |
| getCustomAmountChecker | ( | ) |
Возвращает произвольный обработчик для контроля за остатком
| getCustomOrderPrice | ( | array | $excludeTypesOfItem = [], |
$use_currency = true |
|||
| ) |
Возвращает стоимость заказа
| array | $excludeTypesOfItem | - массив элементов из констант self::TYPE_...., с помощью которого можно исключить из расчета различные компоненты заказа |
| bool | $use_currency |
| RSException |
|
protected |
Возвращает флаг, запрещающий вызов события "изменения в корзине"
|
static |
Возвращает глобальный идентификатор корзины пользователя
| getItems | ( | ) |
Возвращает все элементы корзины
| getMode | ( | ) |
Возвращает режим работы корзины
| getOrder | ( | ) |
Возвращает объект заказа, которому принадлежит корзина
| getOrderData | ( | $format = true, |
|
$use_currency = true, |
|||
$write_currency_liter = true |
|||
| ) |
Возвращает сведения об элементах заказа. Сведения не зависят от существования в магазине реальных элементов заказа.
| bool | $format | - если true, то форматировать вывод |
| bool | $use_currency | - если true, то конвертировать в валюту заказа |
| bool | $write_currency_liter | - если true, то отображать символ валюты после суммы |
| getOrderProfit | ( | ) |
Возвращает доходность товаров в заказе
|
protected |
Возвращает наценку на цену $price
| float | $price | - сумма |
| integer | $commission_percent | - процент комиссии |
| getPriceItemsData | ( | $use_currency = true | ) |
Возвращает данные по товарам, налогам и скидкам в корзине
| bool | $use_currency | - Если true, то использовать текущую валюту, иначе используется базовая валюта |
| RSException |
| getTotalWeight | ( | $weight_unit = null | ) |
Возвращает общий вес элементов корзины
| null | string | $weight_unit | - идентификатор единицы измерения, в которй нужно получить вес (соотношение к граммам) |
| RSException |
| getTotalWithoutDelivery | ( | $use_currency = true | ) |
Возвращает стоимость товаров в заказе
| bool | $use_currency | - Если true, то использовать текущую валюту, иначе используется базовая валюта |
| RSException |
| getUserError | ( | $key | ) |
Возвращает массив с ошибкой по ключу
| string | $key | - ключ в массиве ошибок |
| loadCart | ( | ) |
Загружает корзину из базы данных
| makeOrderCart | ( | ) |
Переносит элементы из корзины в таблицу элементов заказа Вызывается при подтверждении заказа
| RSException |
| mergeEqual | ( | ) |
Объединяет одинаковые товары с одинаковой комплектацией, увеличивая количество.
| DbException | |
| RSException |
|
static |
Возвращает корзину оформленного заказа.
| Orm\Order | $order |
|
static |
Возвращает корзину пользователя во время оформления заказа. т.е. элементы корзины еще привязаны к сессии, но к ним уже добавляются сведения из заказа (налоги, доставка)
| Orm\Order | $order |
| prepareMultiOffersInfo | ( | $product_id, | |
| $multioffers | |||
| ) |
Подготавливает дополнительную информацию уточняя детали многомерных комплектаций Возвращет подготовленный двумерный массив с ключами id,title для каждой комплектации
| integer | $product_id | - id товара |
| array | $multioffers | - массив с мультикомплектациями полученными из запроса, ключи в нём id характеристики |
| removeItem | ( | $uniq, | |
$manual = false |
|||
| ) |
Удаляет позицию из корзины.
| string | $uniq | - Уникальный идентификатор элемента корзины |
| bool | $manual | - операция вызвана пользователем |
| RSException |
| runAmountChecker | ( | $result, | |
| $amount, | |||
| $item, | |||
| $n | |||
| ) |
Выполняет проверку наличия товара с учетом всех параметров
| array | $result | Массив с результатом getCartData |
| integer | $amount | Количество товара |
| array | $item | Массив с товаром и элементом cartItem |
| string | $n | Уникальный идентификатор позиции в корзине |
| saveOrderData | ( | ) |
Сохраняет сформированный заказ в базу данных
| setCustomAmountChecker | ( | $callback | ) |
Устанавливает произвольный обработчик для контроля за остатком товара
| callback | $callback |
|
protected |
Устанавливает флаг, запрещающий вызов события "изменения в корзине"
| bool | $value |
|
static |
Устанавливает глобальный идентификатор корзины пользователя. Будет использоваться, если при создании корзины явно не будет указан ИД Корзины
| integer | $cart_id |
| setOrder | ( | Orm\Order | $order = null | ) |
| triggerChangeEvent | ( | bool | $update_items = true | ) |
Вызывает событие "изменения в корзине", обновляет содержимое корзины при изменении, предотвращает циклический вызов себя
| bool | $update_items | - обновить товарные позиции в БД |
| RSException |
| update | ( | $products = [], |
|
$coupon = null, |
|||
$safe = true, |
|||
$manual = false |
|||
| ) |
Обновляет информацию в корзине
| array | $products | - новые сведения по товарам |
| string | $coupon | - код купона на скидку |
| bool | $safe | - если true, то цена, скидка и наименование товара в $products будет игнорироваться |
| bool | $manual | - операция вызвана пользователем |
| DbException | |
| RSException |
| updateOrderItems | ( | array | $items | ) |
Обновляет сведения об элементах заказа.
| Orm\OrderItem[] | $items - массив элементов заказа |
| RSException |
|
static |
Возвращает корзину конкретного пользователя по ID его сессии
| string | $session_id | - ID сессии корзины |
| int | $site_id | - ID сайта |
| string | $cart_mode | - режим корзины |
| integer | null | $cart_id | - ID корзины, 0 - корзина по умолчанию |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
staticprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
| const CART_ITEM_KEY = 'cartitem' |
| const CART_SESSION_VAR = 'cart' |
| const CART_SOURCE_REPEAT_ORDER = 'repeat_order' |
| const DISCOUNT_SOURCE_OLD_COST = 'old_cost' |
| const ITEM_EXTRA_KEY_ADDITIONAL_UNIQUE = 'additional_uniq' |
| const ITEM_EXTRA_KEY_SOURCE = 'source' |
| const MODE_EMPTY = 'order' |
| const MODE_ORDER = 'order' |
| const MODE_PREORDER = 'preorder' |
| const MODE_SESSION = 'session' |
| const SESSION_CART_PRODUCTS = 'cart_products' |
| const TYPE_COMMISSION = 'commission' |
| const TYPE_COUPON = 'coupon' |
| const TYPE_DELIVERY = 'delivery' |
| const TYPE_ORDER_DISCOUNT = 'order_discount' |
| const TYPE_PRODUCT = 'product' |
| const TYPE_SUBTOTAL = 'subtotal' |
| const TYPE_TAX = 'tax' |