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

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

 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. Подробнее...
 
 save ()
 Save 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. Подробнее...
 
 deleteItem ($index)
 
 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 loadItemsForFUser ($fUserId, $siteId)
 
static create ($siteId)
 
static getList (array $parameters=array())
 
static deleteNoDemand ($idOrder)
 
static loadItemsForOrder (OrderBase $order)
 
- Открытые статические члены унаследованные от EntityCollection
static getRegistryType ()
 

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

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

Защищенные данные

 $siteId = null
 
 $fUserId = null
 
 $order = null
 
 $basketItemIndexMap = array()
 
 $maxItemSort = null
 
 $isSaveExecuting = false
 
- Защищенные данные унаследованные от EntityCollection
 $isClone = false
 
 $anyItemDeleted = false
 
- Защищенные данные унаследованные от CollectionBase
 $collection = array()
 

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

- Защищенные статические члены унаследованные от BasketItemCollection
static createItemInternal (BasketItemCollection $basket, $moduleId, $productId, $basketCode=null)
 
static getItemCollectionClassName ()
 

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

См. определение в файле basketbase.php строка 16

Методы

◆ addItem()

addItem ( Internals\CollectableEntity  $basketItem)

См. определение в файле basketbase.php строка 1087

1088  {
1089  /** @var BasketItemBase $basketItem */
1090  $basketItem = parent::addItem($basketItem);
1091 
1092  $this->basketItemIndexMap[$basketItem->getBasketCode()] = $basketItem->getInternalIndex();
1093 
1094  $this->verifyItemSort($basketItem);
1095 
1096  $basketItem->setCollection($this);
1097 
1098  /** @var OrderBase $order */
1099  if ($order = $this->getOrder())
1100  {
1101  $order->onBasketModify(EventActions::ADD, $basketItem);
1102  }
1103  }

◆ applyDiscount()

applyDiscount ( array  $basketRows)

Apply the result of the discounts to the basket.

См. определение в файле basketbase.php строка 953

954  {
955  $result = new Result();
956 
957  if ($this->count() == 0 || empty($basketRows))
958  return $result;
959 
960  /** @var BasketItemBase $basketItem */
961  foreach ($this->collection as $basketItem)
962  {
963  if ($basketItem->isCustomPrice())
964  continue;
965  $basketCode = $basketItem->getBasketCode();
966  if (!isset($basketRows[$basketCode]))
967  continue;
968 
969  $fields = $basketRows[$basketCode];
970 
971  if (isset($fields['PRICE']) && isset($fields['DISCOUNT_PRICE']))
972  {
973  $fields['PRICE'] = (float)$fields['PRICE'];
974  $fields['DISCOUNT_PRICE'] = (float)$fields['DISCOUNT_PRICE'];
975 
976  if ($fields['PRICE'] >= 0
977  && $basketItem->getPrice() != $fields['PRICE'])
978  {
979  $fields['PRICE'] = PriceMaths::roundPrecision($fields['PRICE']);
980  $basketItem->setFieldNoDemand('PRICE', $fields['PRICE']);
981  }
982 
983  if ($basketItem->getDiscountPrice() != $fields['DISCOUNT_PRICE'])
984  {
985  $fields['DISCOUNT_PRICE'] = PriceMaths::roundPrecision($fields['DISCOUNT_PRICE']);
986  $basketItem->setFieldNoDemand('DISCOUNT_PRICE', $fields['DISCOUNT_PRICE']);
987  }
988 
989  if (isset($fields['DISCOUNT_VALUE']))
990  $basketItem->setFieldNoDemand('DISCOUNT_VALUE', $fields['DISCOUNT_VALUE']);
991  }
992  }
993  unset($fields, $basketCode, $basketItem);
994 
995  return $result;
996  }

◆ callEventOnSaleBasketBeforeSaved()

callEventOnSaleBasketBeforeSaved ( )
protected
Возвращает
Result

См. определение в файле basketbase.php строка 576

577  {
578  $result = new Result();
579 
580  /** @var Main\Entity\Event $event */
581  $event = new Main\Event(
582  'sale',
584  array('ENTITY' => $this)
585  );
586  $event->send();
587 
588  if ($event->getResults())
589  {
590  /** @var Main\EventResult $eventResult */
591  foreach ($event->getResults() as $eventResult)
592  {
593  if ($eventResult->getType() == Main\EventResult::ERROR)
594  {
595  $errorMsg = new ResultError(
596  Main\Localization\Loc::getMessage('SALE_EVENT_ON_BEFORE_BASKET_SAVED'),
597  'SALE_EVENT_ON_BEFORE_BASKET_SAVED'
598  );
599  if ($eventResultData = $eventResult->getParameters())
600  {
601  if (isset($eventResultData) && $eventResultData instanceof ResultError)
602  {
603  /** @var ResultError $errorMsg */
604  $errorMsg = $eventResultData;
605  }
606  }
607 
608  $result->addError($errorMsg);
609  }
610  }
611  }
612 
613  return $result;
614  }

◆ callEventOnSaleBasketItemDeleted()

callEventOnSaleBasketItemDeleted (   $itemValues)
protected
Аргументы
$itemValues
Возвращает
void

Переопределяется в Basket.

См. определение в файле basketbase.php строка 564

565  {
566  $itemValues['ENTITY_REGISTRY_TYPE'] = static::getRegistryType();
567 
568  /** @var Main\Event $event */
569  $event = new Main\Event('sale', "OnSaleBasketDeleted", array('VALUES' => $itemValues));
570  $event->send();
571  }

◆ callEventOnSaleBasketSaved()

callEventOnSaleBasketSaved ( )
protected
Возвращает
Result

См. определение в файле basketbase.php строка 619

620  {
621  $result = new Result();
622 
623  /** @var Main\Entity\Event $event */
624  $event = new Main\Event('sale', EventActions::EVENT_ON_BASKET_SAVED, array(
625  'ENTITY' => $this
626  ));
627  $event->send();
628 
629  if ($event->getResults())
630  {
631  /** @var Main\EventResult $eventResult */
632  foreach($event->getResults() as $eventResult)
633  {
634  if($eventResult->getType() == Main\EventResult::ERROR)
635  {
636  $errorMsg = new ResultError(
637  Main\Localization\Loc::getMessage('SALE_EVENT_ON_BASKET_SAVED'),
638  'SALE_EVENT_ON_BASKET_SAVED'
639  );
640  if ($eventResultData = $eventResult->getParameters())
641  {
642  if (isset($eventResultData) && $eventResultData instanceof ResultError)
643  {
644  /** @var ResultError $errorMsg */
645  $errorMsg = $eventResultData;
646  }
647  }
648 
649  $result->addError($errorMsg);
650  }
651  }
652  }
653 
654  return $result;
655  }

◆ copy()

copy ( )

Returns copy of current basket.

For example, the copy will be used to calculate discounts. So, basket does not contain full information about BasketItem with bundleCollection, because now it is not necessary.

Attention! Don't save the basket.

См. определение в файле basketbase.php строка 1037

1038  {
1039  if($this->order !== null)
1040  {
1041  throw new Main\SystemException('Could not clone basket which has order.');
1042  }
1043 
1044  $basket = static::create($this->siteId);
1045  /**@var BasketItemBase $item */
1046  foreach($this as $originalItem)
1047  {
1048  $item = $basket->createItem($originalItem->getField("MODULE"), $originalItem->getProductId());
1049  $item->initFields($originalItem->getFields()->getValues());
1050  }
1051 
1052  return $basket;
1053  }

◆ create()

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

См. определение в файле basketbase.php строка 245

246  {
247  $basket = static::createBasketObject();
248  $basket->setSiteId($siteId);
249 
250  return $basket;
251  }

◆ createClone()

createClone ( \SplObjectStorage  $cloneEntity = null)

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

См. определение в файле basketbase.php строка 1004

1005  {
1006  if ($cloneEntity === null)
1007  {
1008  $cloneEntity = new \SplObjectStorage();
1009  }
1010 
1011  /** @var BasketBase $basketClone */
1012  $basketClone = parent::createClone($cloneEntity);
1013 
1014  if ($this->order)
1015  {
1016  if ($cloneEntity->contains($this->order))
1017  {
1018  $basketClone->order = $cloneEntity[$this->order];
1019  }
1020  }
1021 
1022  return $basketClone;
1023  }

◆ deleteInternal()

deleteInternal ( array  $itemValues)
abstractprotected
Аргументы
array$itemValues
Возвращает
Result

Переопределяется в Basket.

◆ deleteItem()

deleteItem (   $index)

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

Переопределяется в Basket.

См. определение в файле basketbase.php строка 929

930  {
931  $oldItem = parent::deleteItem($index);
932 
933  unset($this->basketItemIndexMap[$oldItem->getBasketCode()]);
934 
935  /** @var OrderBase $order */
936  if ($order = $this->getOrder())
937  {
938  $order->onBasketModify(EventActions::DELETE, $oldItem);
939  }
940 
941  return $oldItem;
942  }

◆ deleteNoDemand()

static deleteNoDemand (   $idOrder)
static
Аргументы
$idOrder
Исключения
Main

Переопределяется в Basket.

См. определение в файле basketbase.php строка 859

860  {
861  throw new Main\NotImplementedException();
862  }

◆ getBasePrice()

getBasePrice ( )

Getting basket price without discounts.

Возвращает
float
Исключения
Main

См. определение в файле basketbase.php строка 276

277  {
278  $orderPrice = 0;
279 
280  /** @var BasketItemBase $basketItem */
281  foreach ($this->collection as $basketItem)
282  {
283  $orderPrice += PriceMaths::roundPrecision($basketItem->getBasePrice() * $basketItem->getQuantity());
284  }
285 
286  $orderPrice = PriceMaths::roundPrecision($orderPrice);
287 
288  return $orderPrice;
289  }

◆ getBasket()

getBasket ( )
Возвращает
BasketBase

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

См. определение в файле basketbase.php строка 849

850  {
851  return $this;
852  }

◆ getContext()

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

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

См. определение в файле basketbase.php строка 877

878  {
879  $context = array();
880 
881  $order = $this->getOrder();
882  /** @var OrderBase $order */
883  if ($order)
884  {
885  $context['USER_ID'] = $order->getUserId();
886  $context['SITE_ID'] = $order->getSiteId();
887  $context['CURRENCY'] = $order->getCurrency();
888  }
889  else
890  {
891  $context = parent::getContext();
892  }
893 
894  return $context;
895  }

◆ getEntityParent()

getEntityParent ( )
protected
Возвращает
OrderBase

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

См. определение в файле basketbase.php строка 81

82  {
83  return $this->getOrder();
84  }

◆ getExistsItemByItem()

getExistsItemByItem ( BasketItemBase  $item)
Аргументы
BasketItemBase$item
Возвращает
BasketItemBase|null
Исключения
Main

См. определение в файле basketbase.php строка 65

66  {
67  $propertyList = [];
68  $propertyCollection = $item->getPropertyCollection();
69  if ($propertyCollection)
70  {
71  $propertyList = $propertyCollection->getPropertyValues();
72  }
73 
74  return $this->getExistsItem($item->getField('MODULE'), $item->getField('PRODUCT_ID'), $propertyList);
75  }

◆ getFUserId()

getFUserId (   $skipCreate = false)

Getting Customer ID.

Аргументы
bool$skipCreate- Creating a buyer if it is not found
Возвращает
int|null

См. определение в файле basketbase.php строка 683

684  {
685  if ($this->fUserId === null)
686  {
687  $this->fUserId = Fuser::getId($skipCreate);
688  }
689  return $this->fUserId;
690  }

◆ getItemByBasketCode()

getItemByBasketCode (   $code)
Аргументы
$code
Возвращает
BasketItemBase|null
Исключения
Main

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

См. определение в файле basketbase.php строка 45

46  {
47  if (
48  isset($this->basketItemIndexMap[$code])
49  && isset($this->collection[$this->basketItemIndexMap[$code]])
50  )
51  {
52  return $this->collection[$this->basketItemIndexMap[$code]];
53  }
54 
55  return parent::getItemByBasketCode($code);
56  }

◆ getList()

static getList ( array  $parameters = array())
static
Аргументы
array$parameters
Исключения
Main

Переопределяется в Basket.

См. определение в файле basketbase.php строка 707

708  {
709  throw new Main\NotImplementedException();
710  }

◆ getOrder()

getOrder ( )

Getting the object of the order.

Возвращает
OrderBase

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

См. определение в файле basketbase.php строка 205

206  {
207  return $this->order;
208  }

◆ getOrderableItems()

getOrderableItems ( )
Возвращает
BasketBase
Исключения
Main

См. определение в файле basketbase.php строка 813

814  {
815  /** @var BasketBase $basket */
816  $basket = static::create($this->getSiteId());
817 
818  if ($this->isLoadForFUserId)
819  {
820  $basket->setFUserId($this->getFUserId(true));
821  }
822 
823  if ($order = $this->getOrder())
824  {
825  $basket->setOrder($order);
826  }
827 
828  $sortedCollection = $this->collection;
829  usort($sortedCollection, function(BasketItemBase $a, BasketItemBase $b){
830  return (int)$a->getField('SORT') - (int)$b->getField('SORT');
831  });
832 
833  /** @var BasketItemBase $item */
834  foreach ($sortedCollection as $item)
835  {
836  if (!$item->canBuy() || $item->isDelay())
837  continue;
838 
839  $item->setCollection($basket);
840  $basket->addItem($item);
841  }
842 
843  return $basket;
844  }

◆ getPrice()

getPrice ( )

Getting basket price with discounts and taxes.

Возвращает
float
Исключения
Main

См. определение в файле basketbase.php строка 259

260  {
261  $orderPrice = 0;
262 
263  /** @var BasketItemBase $basketItem */
264  foreach ($this->collection as $basketItem)
265  $orderPrice += $basketItem->getFinalPrice();
266 
267  return $orderPrice;
268  }

◆ getQuantityList()

getQuantityList ( )

Getting a list of a count of elements in the basket.

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

См. определение в файле basketbase.php строка 903

904  {
905  $quantityList = array();
906 
907  /**
908  * @var $basketKey
909  * @var BasketItemBase $basketItem
910  */
911  foreach ($this->collection as $basketKey => $basketItem)
912  {
913  $quantityList[$basketItem->getBasketCode()] = $basketItem->getQuantity();
914  }
915 
916  return $quantityList;
917  }

◆ getSiteId()

getSiteId ( )

Getting Site ID.

Возвращает
string

См. определение в файле basketbase.php строка 697

698  {
699  return $this->siteId;
700  }

◆ getVatRate()

getVatRate ( )

Getting the value of the tax rate basket.

Возвращает
float
Исключения
Main

См. определение в файле basketbase.php строка 322

323  {
324  $vatRate = 0;
325 
326  /** @var BasketItemBase $basketItem */
327  foreach ($this->collection as $basketItem)
328  {
329  // BasketItem that is removed is not involved
330  if ($basketItem->getQuantity() == 0)
331  {
332  continue;
333  }
334 
335  if ($basketItem->getVatRate() > $vatRate)
336  {
337  $vatRate = $basketItem->getVatRate();
338  }
339  }
340 
341  return $vatRate;
342  }

◆ getVatSum()

getVatSum ( )

Getting the value of the tax basket.

Возвращает
float
Исключения
Main

См. определение в файле basketbase.php строка 297

298  {
299  $vatSum = 0;
300 
301  /** @var BasketItemBase $basketItem */
302  foreach ($this->collection as $basketItem)
303  {
304  // BasketItem that is removed is not involved
305  if ($basketItem->getQuantity() == 0)
306  {
307  continue;
308  }
309 
310  $vatSum += $basketItem->getVat();
311  }
312 
313  return $vatSum;
314  }

◆ getWeight()

getWeight ( )

Getting the weight basket.

Возвращает
int

См. определение в файле basketbase.php строка 383

384  {
385  $orderWeight = 0;
386 
387  /** @var BasketItemBase $basketItem */
388  foreach ($this->collection as $basketItem)
389  {
390  $orderWeight += $basketItem->getWeight() * $basketItem->getQuantity();
391  }
392 
393  return $orderWeight;
394  }

◆ isSaveRunning()

isSaveRunning ( )
Возвращает
bool

См. определение в файле basketbase.php строка 867

868  {
869  return $this->isSaveExecuting;
870  }

◆ loadFromDb()

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

См. определение в файле basketbase.php строка 133

134  {
135  $select = array(
136  "ID", "LID", "MODULE", "PRODUCT_ID", "QUANTITY", "WEIGHT",
137  "DELAY", "CAN_BUY", "PRICE", "CUSTOM_PRICE", "BASE_PRICE",
138  'PRODUCT_PRICE_ID', 'PRICE_TYPE_ID', "CURRENCY", 'BARCODE_MULTI',
139  "RESERVED", "RESERVE_QUANTITY", "NAME", "CATALOG_XML_ID",
140  "VAT_RATE", "NOTES", "DISCOUNT_PRICE","PRODUCT_PROVIDER_CLASS",
141  "CALLBACK_FUNC", "ORDER_CALLBACK_FUNC", "PAY_CALLBACK_FUNC",
142  "CANCEL_CALLBACK_FUNC", "DIMENSIONS", "TYPE", "SET_PARENT_ID",
143  "DETAIL_PAGE_URL", "FUSER_ID", 'MEASURE_CODE', 'MEASURE_NAME',
144  'ORDER_ID', 'DATE_INSERT', 'DATE_UPDATE', 'PRODUCT_XML_ID',
145  'SUBSCRIBE', 'RECOMMENDATION', 'VAT_INCLUDED', 'SORT',
146  'DATE_REFRESH', 'DISCOUNT_NAME', 'DISCOUNT_VALUE', 'DISCOUNT_COUPON',
147  'XML_ID', 'MARKING_CODE_GROUP'
148  );
149 
150  $itemList = array();
151  $first = true;
152 
153  $res = static::getList(array(
154  "select" => $select,
155  "filter" => $filter,
156  "order" => array('SORT' => 'ASC', 'ID' => 'ASC'),
157  ));
158  while ($item = $res->fetch())
159  {
160  if ($first)
161  {
162  $this->setSiteId($item['LID']);
163  $this->setFUserId($item['FUSER_ID']);
164  $first = false;
165  }
166 
167  $itemList[$item['ID']] = $item;
168  }
169 
170  foreach ($itemList as $id => $item)
171  {
172  if ($item['SET_PARENT_ID'] > 0)
173  {
174  $itemList[$item['SET_PARENT_ID']]['ITEMS'][$id] = &$itemList[$id];
175  }
176  }
177 
178  $result = array();
179  foreach ($itemList as $id => $item)
180  {
181  if ($item['SET_PARENT_ID'] == 0)
182  $result[$id] = $item;
183  }
184 
185  $this->loadFromArray($result);
186 
187  return $this;
188  }

◆ loadItemsForFUser()

static loadItemsForFUser (   $fUserId,
  $siteId 
)
static
Аргументы
$fUserId
$siteId
Возвращает
BasketBase
Исключения
Main

См. определение в файле basketbase.php строка 107

108  {
109  /** @var BasketBase $basket */
110  $basket = static::create($siteId);
111 
112  $basket->setFUserId($fUserId);
113 
114  $basket->isLoadForFUserId = true;
115 
116  /** @var BasketBase $collection */
117  return $basket->loadFromDb(
118  array(
119  "FUSER_ID" => $fUserId,
120  "=LID" => $siteId,
121  "ORDER_ID" => null
122  )
123  );
124  }

◆ loadItemsForOrder()

static loadItemsForOrder ( OrderBase  $order)
static

См. определение в файле basketbase.php строка 1066

1067  {
1068  $basket = static::createBasketObject();
1069  $basket->setOrder($order);
1070  $basket->setSiteId($order->getSiteId());
1071 
1072  return $basket->loadFromDb(array("ORDER_ID" => $order->getId()));
1073  }

◆ onItemModify()

onItemModify ( Internals\CollectableEntity  $item,
  $name = null,
  $oldValue = null,
  $value = null 
)
Аргументы
Internals\CollectableEntity$item
null$name
null$oldValue
null$value
Возвращает
Result
Исключения
Main

См. определение в файле basketbase.php строка 720

721  {
722  if (!($item instanceof BasketItemBase))
723  throw new Main\ArgumentTypeException($item);
724 
725  $result = new Result();
726 
727  /** @var OrderBase $order */
728  if ($order = $this->getOrder())
729  {
730  $r = $order->onBasketModify(EventActions::UPDATE, $item, $name, $oldValue, $value);
731  if (!$r->isSuccess())
732  {
733  $result->addErrors($r->getErrors());
734  }
735  elseif ($r->hasWarnings())
736  {
737  $result->addWarnings($r->getWarnings());
738  }
739  }
740 
741  return $result;
742  }

◆ refresh()

refresh ( RefreshStrategy  $strategy = null)
Аргументы
RefreshStrategy | null$strategy
Возвращает
Result

См. определение в файле basketbase.php строка 748

749  {
750  $isStartField = $this->isStartField();
751 
752  /** @var OrderBase $order */
753  $order = $this->getOrder();
754  if ($order)
755  {
756  $r = $order->onBeforeBasketRefresh();
757  if (!$r->isSuccess())
758  {
759  return $r;
760  }
761  }
762 
763  if ($strategy === null)
764  {
765  $strategy = RefreshFactory::create();
766  }
767 
768  $result = $strategy->refresh($this);
769 
770  if ($order)
771  {
772  $r = $order->onAfterBasketRefresh();
773  if (!$r->isSuccess())
774  {
775  return $r;
776  }
777  }
778 
779  $changedBasketItems = $result->get('CHANGED_BASKET_ITEMS');
780  if (!empty($changedBasketItems))
781  {
782  /** @var OrderBase $order */
783  $order = $this->getOrder();
784  if ($order)
785  {
786  $r = $order->refreshData(array('PRICE', 'PRICE_DELIVERY'));
787  if (!$r->isSuccess())
788  {
789  $result->addErrors($r->getErrors());
790  }
791  }
792  }
793 
794  if ($isStartField)
795  {
796  $hasMeaningfulFields = $this->hasMeaningfulField();
797 
798  /** @var Result $r */
799  $r = $this->doFinalAction($hasMeaningfulFields);
800  if (!$r->isSuccess())
801  {
802  $result->addErrors($r->getErrors());
803  }
804  }
805 
806  return $result;
807  }

◆ refreshData()

refreshData (   $select = array(),
BasketItemBase  $refreshItem = null 
)
Уст.:
Use \Bitrix\Sale\BasketBase::refresh instead
Аргументы
array$select
BasketItemBase | null$refreshItem
Возвращает
Result
Исключения
Main

См. определение в файле basketbase.php строка 1113

1114  {
1115  if ($refreshItem !== null)
1116  {
1117  $strategy = RefreshFactory::createSingle($refreshItem->getBasketCode());
1118  }
1119  else
1120  {
1122  }
1123 
1124  return $this->refresh($strategy);
1125  }

◆ save()

save ( )

Save basket.

Возвращает
Result
Исключения
Main

Переопределяется в Basket.

См. определение в файле basketbase.php строка 477

478  {
479  $result = new Result();
480 
481  $this->isSaveExecuting = true;
482 
483  /** @var OrderBase $order */
484  $order = $this->getOrder();
485  if (!$order)
486  {
487  $r = $this->verify();
488  if (!$r->isSuccess())
489  {
490  return $result->addErrors($r->getErrors());
491  }
492 
493  $r = $this->callEventOnSaleBasketBeforeSaved();
494  if (!$r->isSuccess())
495  {
496  $this->isSaveExecuting = false;
497 
498  return $result->addErrors($r->getErrors());
499  }
500  }
501 
502  $originalItemsValues = $this->getOriginalItemsValues();
503 
504  /** @var BasketItemBase $basketItem */
505  foreach ($this->collection as $basketItem)
506  {
507  $r = $basketItem->save();
508  if (!$r->isSuccess())
509  {
510  $result->addErrors($r->getErrors());
511  }
512 
513  if (isset($originalItemsValues[$basketItem->getId()]))
514  {
515  unset($originalItemsValues[$basketItem->getId()]);
516  }
517  }
518 
519  if ($originalItemsValues)
520  {
521  foreach ($originalItemsValues as $id => $itemValues)
522  {
523  $this->callEventOnBeforeSaleBasketItemDeleted($itemValues);
524 
525  $this->deleteInternal($itemValues);
526 
527  $this->callEventOnSaleBasketItemDeleted($itemValues);
528  }
529  }
530 
531  if (!$order)
532  {
533  $r = $this->callEventOnSaleBasketSaved();
534  if (!$r->isSuccess())
535  {
536  $result->addErrors($r->getErrors());
537  }
538  }
539 
540  $this->clearChanged();
541 
542  $this->isSaveExecuting = false;
543 
544  return $result;
545  }

◆ setFUserId()

setFUserId (   $fUserId)

Setting Customer ID to basket.

Аргументы
$fUserId- customer ID

См. определение в файле basketbase.php строка 662

663  {
664  $this->fUserId = (int)$fUserId > 0 ? (int)$fUserId : null;
665  }

◆ setOrder()

setOrder ( OrderBase  $order)

Attach to the essence of the object of the order basket.

Аргументы
OrderBase$order- object of the order

См. определение в файле basketbase.php строка 195

196  {
197  $this->order = $order;
198  }

◆ setSiteId()

setSiteId (   $siteId)
protected

Setting site ID to basket.

Аргументы
$siteId- site ID

См. определение в файле basketbase.php строка 672

673  {
674  $this->siteId = $siteId;
675  }

◆ verify()

verify ( )
Возвращает
Result
Исключения
Main

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

См. определение в файле basketbase.php строка 350

351  {
352  $result = new Result();
353 
354  /** @var BasketItemBase $basketItem */
355  foreach ($this->collection as $basketItem)
356  {
357  $r = $basketItem->verify();
358  if (!$r->isSuccess())
359  {
360  $result->addErrors($r->getErrors());
361 
362  /** @var OrderBase $order */
363  if ($order = $this->getOrder())
364  {
365  $registry = Registry::getInstance(static::getRegistryType());
366 
367  /** @var EntityMarker $entityMarker */
368  $entityMarker = $registry->getEntityMarkerClassName();
369  $entityMarker::addMarker($order, $basketItem, $r);
370  $order->setField('MARKED', 'Y');
371  }
372  }
373  }
374 
375  return $result;
376  }

◆ verifyItemSort()

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

См. определение в файле basketbase.php строка 216

217  {
218  $itemSort = (int)$item->getField('SORT') ?: 100;
219 
220  if ($this->maxItemSort === null)
221  {
222  $this->maxItemSort = $itemSort;
223  }
224  else
225  {
226  if ($itemSort > $this->maxItemSort)
227  {
228  $this->maxItemSort = $itemSort;
229  }
230  else
231  {
232  $this->maxItemSort += 100 + $this->maxItemSort % 100;
233  }
234  }
235 
236  $item->setFieldNoDemand('SORT', $this->maxItemSort);
237  }

Поля

◆ $basketItemIndexMap

array $basketItemIndexMap = array()
protected

См. определение в файле basketbase.php строка 28

◆ $fUserId

$fUserId = null
protected

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

◆ $isSaveExecuting

bool $isSaveExecuting = false
protected

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

◆ $maxItemSort

int $maxItemSort = null
protected

См. определение в файле basketbase.php строка 31

◆ $order

$order = null
protected

См. определение в файле basketbase.php строка 25

◆ $siteId

$siteId = null
protected

См. определение в файле basketbase.php строка 19


Объявления и описания членов класса находятся в файле:
Bitrix\Sale\BasketBase\callEventOnSaleBasketItemDeleted
callEventOnSaleBasketItemDeleted($itemValues)
Definition: basketbase.php:564
Bitrix\Main\Localization\Loc\getMessage
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29
Bitrix\Sale\EventActions\EVENT_ON_BASKET_BEFORE_SAVED
const EVENT_ON_BASKET_BEFORE_SAVED
Definition: eventactions.php:26
Bitrix\Sale\BasketBase\$siteId
$siteId
Definition: basketbase.php:19
Bitrix\Sale\EventActions\ADD
const ADD
Definition: eventactions.php:8
Bitrix\Sale\Basket\RefreshFactory\TYPE_FULL
const TYPE_FULL
Definition: refreshfactory.php:7
Bitrix\Sale\Internals\EntityCollection\isStartField
isStartField($isMeaningfulField=false)
Definition: entitycollection.php:244
Bitrix\Sale\BasketBase\$order
$order
Definition: basketbase.php:25
Bitrix\Sale\EventActions\DELETE
const DELETE
Definition: eventactions.php:10
Bitrix\Sale\BasketBase\getFUserId
getFUserId($skipCreate=false)
Getting Customer ID.
Definition: basketbase.php:683
Bitrix\Sale\BasketBase\refresh
refresh(RefreshStrategy $strategy=null)
Definition: basketbase.php:748
Bitrix\Sale\Internals\CollectionBase\count
count()
Count elements of an object.
Definition: collectionbase.php:79
Bitrix\Sale\Internals\CollectionBase\$collection
$collection
Definition: collectionbase.php:21
Bitrix\Sale\Fuser\getId
static getId($skipCreate=false)
Return fuserId.
Definition: fuser.php:29
Bitrix\Sale\Basket\RefreshFactory\createSingle
static createSingle($basketItemCode)
Definition: refreshfactory.php:26
Bitrix\Sale\BasketBase\$isSaveExecuting
$isSaveExecuting
Definition: basketbase.php:37
Bitrix\Sale\BasketBase\verify
verify()
Definition: basketbase.php:350
Bitrix\Sale\Registry\getInstance
static getInstance($type)
Definition: sale/lib/registry.php:161
Bitrix\Sale\EventActions\UPDATE
const UPDATE
Definition: eventactions.php:9
Bitrix\Sale\BasketBase\getSiteId
getSiteId()
Getting Site ID.
Definition: basketbase.php:697
Bitrix\Sale\BasketBase\setSiteId
setSiteId($siteId)
Setting site ID to basket.
Definition: basketbase.php:672
Bitrix\Sale\Internals\EntityCollection\doFinalAction
doFinalAction($hasMeaningfulField=false)
Definition: entitycollection.php:287
Bitrix\Sale\BasketBase\getOrder
getOrder()
Getting the object of the order.
Definition: basketbase.php:205
Bitrix\Sale\BasketBase\verifyItemSort
verifyItemSort(BasketItemBase $item)
Definition: basketbase.php:216
Bitrix\Main\EventResult\ERROR
const ERROR
Definition: main/lib/eventresult.php:8
Bitrix\Sale\BasketBase\callEventOnSaleBasketBeforeSaved
callEventOnSaleBasketBeforeSaved()
Definition: basketbase.php:576
Bitrix\Sale\BasketBase\$fUserId
$fUserId
Definition: basketbase.php:22
Bitrix\Sale\Internals\EntityCollection\hasMeaningfulField
hasMeaningfulField()
Definition: entitycollection.php:272
Bitrix\Sale\Basket\RefreshFactory\create
static create($type='', $params=null)
Definition: refreshfactory.php:10
Bitrix\Sale\BasketBase\deleteInternal
deleteInternal(array $itemValues)
Bitrix\Sale\Internals\EntityCollection\clearChanged
clearChanged()
Definition: entitycollection.php:385
Bitrix\Sale\BasketBase\setFUserId
setFUserId($fUserId)
Setting Customer ID to basket.
Definition: basketbase.php:662
Bitrix\Sale\PriceMaths\roundPrecision
static roundPrecision($value)
Definition: pricemaths.php:17
Bitrix\Sale\BasketItemCollection\getExistsItem
getExistsItem($moduleId, $productId, array $properties=array())
Definition: basketitemcollection.php:159
Bitrix\Sale\EventActions\EVENT_ON_BASKET_SAVED
const EVENT_ON_BASKET_SAVED
Definition: eventactions.php:29
Bitrix\Sale\BasketBase\callEventOnSaleBasketSaved
callEventOnSaleBasketSaved()
Definition: basketbase.php:619
Bitrix\Sale\BasketItemCollection\loadFromArray
loadFromArray(array $itemList)
Definition: basketitemcollection.php:78