Bitrix-D7  20.0.0
Класс Basket
Граф наследования:Basket:
BasketBase BasketItemCollection EntityCollection CollectionBase

Открытые члены

 getListOfFormatText ()
 
 save ()
 Save basket. Подробнее...
 
 deleteItem ($index)
 
- Открытые члены унаследованные от BasketBase
 getItemByBasketCode ($code)
 
 getExistsItemByItem (BasketItemBase $item)
 
 setOrder (OrderBase $order)
 Attach to the essence of the object of the order basket. Подробнее...
 
 getOrder ()
 Getting the object of the order. Подробнее...
 
 getPrice ()
 Getting basket price with discounts and taxes. Подробнее...
 
 getBasePrice ()
 Getting basket price without discounts. Подробнее...
 
 getVatSum ()
 Getting the value of the tax basket. Подробнее...
 
 getVatRate ()
 Getting the value of the tax rate basket. Подробнее...
 
 verify ()
 
 getWeight ()
 Getting the weight basket. Подробнее...
 
 setFUserId ($fUserId)
 Setting Customer ID to basket. Подробнее...
 
 getFUserId ($skipCreate=false)
 Getting Customer ID. Подробнее...
 
 getSiteId ()
 Getting Site ID. Подробнее...
 
 onItemModify (Internals\CollectableEntity $item, $name=null, $oldValue=null, $value=null)
 
 refresh (RefreshStrategy $strategy=null)
 
 getOrderableItems ()
 
 getBasket ()
 
 isSaveRunning ()
 
 getContext ()
 
 getQuantityList ()
 Getting a list of a count of elements in the basket. Подробнее...
 
 applyDiscount (array $basketRows)
 Apply the result of the discounts to the basket. Подробнее...
 
 createClone (\SplObjectStorage $cloneEntity=null)
 
 copy ()
 Returns copy of current basket. Подробнее...
 
 addItem (Internals\CollectableEntity $basketItem)
 
 refreshData ($select=array(), BasketItemBase $refreshItem=null)
 
- Открытые члены унаследованные от BasketItemCollection
 createItem ($moduleId, $productId, $basketCode=null)
 
 loadFromArray (array $itemList)
 
 getItemById ($id)
 
 getBasketItems ()
 
 getExistsItem ($moduleId, $productId, array $properties=array())
 
 getOrderId ()
 
- Открытые члены унаследованные от EntityCollection
 onItemModify (CollectableEntity $item, $name=null, $oldValue=null, $value=null)
 
 clearCollection ()
 
 getIndexById ($id)
 
 getItemByIndex ($index)
 
 isStartField ($isMeaningfulField=false)
 
 clearStartField ()
 
 hasMeaningfulField ()
 
 doFinalAction ($hasMeaningfulField=false)
 
 isMathActionOnly ()
 
 setMathActionOnly ($value=false)
 
 isChanged ()
 
 isClone ()
 
 isAnyItemDeleted ()
 
 clearChanged ()
 
- Открытые члены унаследованные от CollectionBase
 getIterator ()
 
 offsetExists ($offset)
 Whether a offset exists. Подробнее...
 
 offsetGet ($offset)
 Offset to retrieve. Подробнее...
 
 offsetSet ($offset, $value)
 Offset to set. Подробнее...
 
 offsetUnset ($offset)
 Offset to unset. Подробнее...
 
 count ()
 Count elements of an object. Подробнее...
 
 current ()
 Return the current element. Подробнее...
 
 next ()
 Move forward to next element. Подробнее...
 
 key ()
 Return the key of the current element. Подробнее...
 
 valid ()
 Checks if current position is valid. Подробнее...
 
 rewind ()
 Rewind the Iterator to the first element. Подробнее...
 
 isEmpty ()
 Checks if collection is empty. Подробнее...
 

Открытые статические члены

static getRegistryType ()
 
static getList (array $parameters=array())
 
static deleteNoDemand ($idOrder)
 
static deleteOld ($days)
 
static deleteOldAgent ($days, $speed=0)
 
- Открытые статические члены унаследованные от BasketBase
static loadItemsForFUser ($fUserId, $siteId)
 
static create ($siteId)
 
static loadItemsForOrder (OrderBase $order)
 

Поля данных

const BASKET_DELETE_LIMIT = 2000
 

Защищенные члены

 deleteInternal (array $itemValues)
 
 callEventOnSaleBasketItemDeleted ($itemValues)
 
- Защищенные члены унаследованные от BasketBase
 getEntityParent ()
 
 loadFromDb (array $filter)
 
 verifyItemSort (BasketItemBase $item)
 
 callEventOnSaleBasketBeforeSaved ()
 
 callEventOnSaleBasketSaved ()
 
 setSiteId ($siteId)
 Setting site ID to basket. Подробнее...
 
- Защищенные члены унаследованные от EntityCollection
 __construct ()
 EntityCollection constructor. Подробнее...
 
 addItem (CollectableEntity $item)
 
 createIndex ()
 
 getDeletableItems ()
 
 callEventOnBeforeCollectionClear ()
 
 setAnyItemDeleted ($value)
 

Дополнительные унаследованные члены

- Защищенные статические члены унаследованные от BasketItemCollection
static createItemInternal (BasketItemCollection $basket, $moduleId, $productId, $basketCode=null)
 
static getItemCollectionClassName ()
 
- Защищенные данные унаследованные от BasketBase
 $siteId = null
 
 $fUserId = null
 
 $order = null
 
 $basketItemIndexMap = array()
 
 $maxItemSort = null
 
 $isSaveExecuting = false
 
- Защищенные данные унаследованные от EntityCollection
 $isClone = false
 
 $anyItemDeleted = false
 
- Защищенные данные унаследованные от CollectionBase
 $collection = array()
 

Подробное описание

См. определение в файле sale/lib/basket.php строка 20

Методы

◆ callEventOnSaleBasketItemDeleted()

callEventOnSaleBasketItemDeleted (   $itemValues)
protected
Аргументы
$itemValues
Исключения
Main

Переопределяет метод предка BasketBase.

См. определение в файле sale/lib/basket.php строка 300

301  {
302  parent::callEventOnSaleBasketItemDeleted($itemValues);
303 
304  $orderId = $this->getOrderId();
305  if ($orderId > 0)
306  {
307  $registry = Registry::getInstance(static::getRegistryType());
308 
309  /** @var OrderHistory $orderHistory */
310  $orderHistory = $registry->getOrderHistoryClassName();
311  $orderHistory::addAction(
312  'BASKET',
313  $orderId,
314  'BASKET_REMOVED',
315  $itemValues['ID'],
316  null,
317  array(
318  'NAME' => $itemValues['NAME'],
319  'QUANTITY' => $itemValues['QUANTITY'],
320  'PRODUCT_ID' => $itemValues['PRODUCT_ID'],
321  )
322  );
323 
324  /** @var EntityMarker $entityMarker */
325  $entityMarker = $registry->getEntityMarkerClassName();
326  $entityMarker::deleteByFilter(array(
327  '=ORDER_ID' => $orderId,
328  '=ENTITY_TYPE' => $entityMarker::ENTITY_TYPE_BASKET_ITEM,
329  '=ENTITY_ID' => $itemValues['ID'],
330  ));
331  }
332  }

◆ deleteInternal()

deleteInternal ( array  $itemValues)
protected
Аргументы
array$itemValues
Возвращает
Result
Исключения
Main

Переопределяет метод предка BasketBase.

См. определение в файле sale/lib/basket.php строка 250

251  {
252  $result = new Result();
253 
254  /** @var BasketItem $itemClassName */
255  $itemClassName = static::getItemCollectionClassName();
256  if ($itemValues['TYPE'] == $itemClassName::TYPE_SET)
257  {
258  $r = Internals\BasketTable::deleteBundle($itemValues['ID']);
259  }
260  else
261  {
262  $r = Internals\BasketTable::deleteWithItems($itemValues['ID']);
263  }
264 
265  if (!$r->isSuccess())
266  {
267  $result->addErrors($r->getErrors());
268  }
269 
270  $orderId = $this->getOrderId();
271  if ($orderId > 0)
272  {
273  $registry = Registry::getInstance(static::getRegistryType());
274 
275  /** @var OrderHistory $orderHistory */
276  $orderHistory = $registry->getOrderHistoryClassName();
277  $orderHistory::addLog(
278  'BASKET',
279  $orderId,
280  'BASKET_ITEM_DELETED',
281  $itemValues['ID'],
282  null,
283  array(
284  "PRODUCT_ID" => $itemValues["PRODUCT_ID"],
285  "NAME" => $itemValues["NAME"],
286  "QUANTITY" => $itemValues["QUANTITY"],
287  ),
288  $orderHistory::SALE_ORDER_HISTORY_LOG_LEVEL_1
289  );
290  }
291 
292  return $result;
293  }

◆ deleteItem()

deleteItem (   $index)

Переопределяет метод предка BasketBase.

См. определение в файле sale/lib/basket.php строка 346

347  {
348  /** @var Order $order */
349  if ($order = $this->getOrder())
350  {
351  /** @var BasketItem $item */
352  $item = $this->getItemByIndex($index);
353 
354  $order->onBeforeBasketItemDelete($item);
355  }
356 
357  return parent::deleteItem($index);
358  }

◆ deleteNoDemand()

static deleteNoDemand (   $idOrder)
static
Аргументы
$idOrder
Возвращает
Result
Исключения
Main

Переопределяет метод предка BasketBase.

См. определение в файле sale/lib/basket.php строка 49

50  {
51  $result = new Result();
52 
53  $itemsDataList = static::getList(
54  array(
55  "filter" => array("=ORDER_ID" => $idOrder),
56  "select" => array("ID", "TYPE")
57  )
58  );
59 
60  /** @var BasketItem $itemClassName */
61  $itemClassName = static::getItemCollectionClassName();
62  while ($item = $itemsDataList->fetch())
63  {
64  if ($item['TYPE'] === $itemClassName::TYPE_SET)
65  {
66  $r = Internals\BasketTable::deleteBundle($item['ID']);
67  }
68  else
69  {
71  }
72 
73  if (!$r->isSuccess())
74  {
75  $result->addErrors($r->getErrors());
76  }
77  }
78 
79  return $result;
80  }

◆ deleteOld()

static deleteOld (   $days)
static
Аргументы
int$days
Возвращает
bool

См. определение в файле sale/lib/basket.php строка 87

88  {
89  $expired = new Main\Type\DateTime();
90  $expired->add('-'.$days.' days');
91  $expiredValue = $expired->format('Y-m-d H:i:s');
92 
93  /** @var Main\DB\Connection $connection */
94  $connection = Main\Application::getConnection();
95  /** @var Main\DB\SqlHelper $sqlHelper */
96  $sqlHelper = $connection->getSqlHelper();
97 
98  $sqlExpiredDate = $sqlHelper->getDateToCharFunction("'" . $expiredValue . "'");
99 
100  $query = "DELETE FROM b_sale_basket WHERE
101  FUSER_ID IN (
102  SELECT b_sale_fuser.id FROM b_sale_fuser WHERE
103  b_sale_fuser.DATE_UPDATE < ".$sqlExpiredDate."
104  AND b_sale_fuser.USER_ID IS NULL
105  ) AND ORDER_ID IS NULL LIMIT ". static::BASKET_DELETE_LIMIT;
106 
107  $connection->queryExecute($query);
108  $affectRows = $connection->getAffectedRowsCount();
109 
110  $query = "DELETE FROM b_sale_basket
111  WHERE
112  FUSER_ID NOT IN (SELECT b_sale_fuser.id FROM b_sale_fuser)
113  AND
114  ORDER_ID IS NULL
115  LIMIT ". static::BASKET_DELETE_LIMIT;
116 
117  $connection->queryExecute($query);
118  $affectRows = max($affectRows, $connection->getAffectedRowsCount());
119 
120  $query = "
121  DELETE
122  FROM b_sale_basket_props
123  WHERE b_sale_basket_props.BASKET_ID NOT IN (
124  SELECT b_sale_basket.ID FROM b_sale_basket
125  )
126  LIMIT ".static::BASKET_DELETE_LIMIT;
127 
128  $connection->queryExecute($query);
129 
130  return max($affectRows, $connection->getAffectedRowsCount());
131  }

◆ deleteOldAgent()

static deleteOldAgent (   $days,
  $speed = 0 
)
static
Аргументы
$days
int$speed
Возвращает
string
Исключения
Main

См. определение в файле sale/lib/basket.php строка 140

141  {
142  if (!isset($GLOBALS["USER"]) || !is_object($GLOBALS["USER"]))
143  {
144  $tmpUser = True;
145  $GLOBALS["USER"] = new \CUser();
146  }
147 
148  $affectRows = static::deleteOld($days);
149  Fuser::deleteOld($days);
150 
151  $days = intval(Main\Config\Option::get("sale", "delete_after", "30"));
152  $result = "\Bitrix\Sale\Basket::deleteOldAgent(".$days.");";
153 
154  if ($affectRows === static::BASKET_DELETE_LIMIT)
155  {
156  global $pPERIOD;
157  $pPERIOD = 300;
158  }
159 
160  if (isset($tmpUser))
161  {
162  unset($GLOBALS["USER"]);
163  }
164 
165  return $result;
166  }

◆ getList()

static getList ( array  $parameters = array())
static
Аргументы
array$parameters
Возвращает
Main\DB\Result|mixed
Исключения
Main

Переопределяет метод предка BasketBase.

См. определение в файле sale/lib/basket.php строка 37

38  {
39  return Internals\BasketTable::getList($parameters);
40  }

◆ getListOfFormatText()

getListOfFormatText ( )
Возвращает
array|bool
Исключения
Main

См. определение в файле sale/lib/basket.php строка 175

176  {
177  $list = array();
178 
179  /** @var BasketItem $basketItemClassName */
180  $basketItemClassName = static::getItemCollectionClassName();
181 
182  /** @var BasketItem $basketItem */
183  foreach ($this->collection as $basketItem)
184  {
185  $basketItemData = $basketItem->getField("NAME");
186 
187  /** @var \Bitrix\Sale\BasketPropertiesCollection $basketPropertyCollection */
188  if ($basketPropertyCollection = $basketItem->getPropertyCollection())
189  {
190  $basketItemDataProperty = "";
191  /** @var \Bitrix\Sale\BasketPropertyItem $basketPropertyItem */
192  foreach ($basketPropertyCollection as $basketPropertyItem)
193  {
194  if ($basketPropertyItem->getField('CODE') == "PRODUCT.XML_ID"
195  || $basketPropertyItem->getField('CODE') == "CATALOG.XML_ID"
196  || $basketPropertyItem->getField('CODE') == "SUM_OF_CHARGE"
197  )
198  {
199  continue;
200  }
201 
202  if (strval(trim($basketPropertyItem->getField('VALUE'))) == "")
203  continue;
204 
205 
206  $basketItemDataProperty .= (!empty($basketItemDataProperty) ? "; " : "").trim($basketPropertyItem->getField('NAME')).": ".trim($basketPropertyItem->getField('VALUE'));
207  }
208 
209  if (!empty($basketItemDataProperty))
210  $basketItemData .= " [".$basketItemDataProperty."]";
211  }
212 
213  $measure = (strval($basketItem->getField("MEASURE_NAME")) != '') ? $basketItem->getField("MEASURE_NAME") : Loc::getMessage("SOA_SHT");
214  $list[$basketItem->getBasketCode()] = $basketItemData." - ".$basketItemClassName::formatQuantity($basketItem->getQuantity())." ".$measure." x ".SaleFormatCurrency($basketItem->getPrice(), $basketItem->getCurrency());
215 
216  }
217 
218  return !empty($list) ? $list : false;
219  }

◆ getRegistryType()

static getRegistryType ( )
static
Возвращает
string

Переопределяет метод предка EntityCollection.

См. определение в файле sale/lib/basket.php строка 27

28  {
30  }

◆ save()

save ( )

Save basket.

Возвращает
Result

Переопределяет метод предка BasketBase.

См. определение в файле sale/lib/basket.php строка 226

227  {
228  $result = parent::save();
229 
230  $orderId = $this->getOrderId();
231  if ($orderId > 0)
232  {
233  $registry = Registry::getInstance(static::getRegistryType());
234 
235  /** @var OrderHistory $orderHistory */
236  $orderHistory = $registry->getOrderHistoryClassName();
237  $orderHistory::collectEntityFields('BASKET', $orderId);
238  }
239 
240  return $result;
241  }

Поля

◆ BASKET_DELETE_LIMIT

const BASKET_DELETE_LIMIT = 2000

См. определение в файле sale/lib/basket.php строка 22


Объявления и описания членов класса находятся в файле:
Bitrix\Main\Config
Definition: main/lib/config/configuration.php:2
Bitrix\Main\Localization\Loc\getMessage
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29
Bitrix\Sale\Fuser\deleteOld
static deleteOld($days)
Delete fuserId over several days.
Definition: fuser.php:148
Bitrix\Sale\BasketBase\$order
$order
Definition: basketbase.php:25
Bitrix\Sale\Registry\REGISTRY_TYPE_ORDER
const REGISTRY_TYPE_ORDER
Definition: sale/lib/registry.php:16
Bitrix\Sale\Internals\BasketTable\deleteWithItems
static deleteWithItems($id)
Definition: sale/lib/internals/basket.php:49
Bitrix\Main\Config\Option\get
static get($moduleId, $name, $default="", $siteId=false)
Returns a value of an option.
Definition: main/lib/config/option.php:29
Bitrix\Sale\Registry\getInstance
static getInstance($type)
Definition: sale/lib/registry.php:161
Bitrix\Sale\BasketBase\getOrder
getOrder()
Getting the object of the order.
Definition: basketbase.php:205
Bitrix\Main\Application\getConnection
static getConnection($name="")
Static method returns database connection for the specified name.
Definition: main/lib/application.php:381
Bitrix\Sale\BasketItemCollection\getOrderId
getOrderId()
Definition: basketitemcollection.php:188
Bitrix\Sale\Internals\BasketTable\deleteBundle
static deleteBundle($id)
Definition: sale/lib/internals/basket.php:23
Bitrix\Sale\Internals\EntityCollection\getItemByIndex
getItemByIndex($index)
Definition: entitycollection.php:217
Bitrix\Landing\$GLOBALS
$GLOBALS['____2000984581']
Definition: mutator.php:1