1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
reservequantitycollection.php
См. документацию.
1<?php
2
3namespace Bitrix\Sale;
4
5use Bitrix\Main;
6use Bitrix\Main\DI\ServiceLocator;
7use Bitrix\Sale\Reservation\BasketReservationService;
8
10{
12 protected $basketItem;
13
17 protected function getEntityParent()
18 {
19 return $this->getBasketItem();
20 }
21
22 protected function setBasketItem(BasketItemBase $item)
23 {
24 $this->basketItem = $item;
25 }
26
27 public function getBasketItem()
28 {
29 return $this->basketItem;
30 }
31
35 public static function getRegistryType()
36 {
38 }
39
45 protected static function createCollectionObject() : self
46 {
47 $registry = Registry::getInstance(static::getRegistryType());
48 $className = $registry->get(Registry::ENTITY_BASKET_RESERVE_COLLECTION);
49
50 return new $className;
51 }
52
59 public function create()
60 {
61 $registry = Registry::getInstance(static::getRegistryType());
62
64 $reservedItemClassName = $registry->getReservedItemClassName();
65
66 $reservedItem = $reservedItemClassName::create($this);
67 $this->addItem($reservedItem);
68
69 return $reservedItem;
70 }
71
77 public static function load(BasketItemBase $basketItem): self
78 {
79 if (!$basketItem->isReservableItem())
80 {
81 throw new Main\SystemException('Basket item is not available for reservation');
82 }
83
84 $collection = static::createCollectionObject();
85 $collection->setBasketItem($basketItem);
86
87 if ($basketItem->getId() > 0)
88 {
89 $registry = Registry::getInstance(static::getRegistryType());
90
92 $reservedItemClassName = $registry->getReservedItemClassName();
93
94 $reservedQuantityList = $reservedItemClassName::loadForBasketItem($basketItem->getId());
95 foreach ($reservedQuantityList as $item)
96 {
97 $item->setCollection($collection);
98 $collection->bindItem($item);
99 }
100 }
101
102 return $collection;
103 }
104
113 public function save()
114 {
115 $result = new Result();
116
117 if (!$this->isChanged())
118 {
119 return $result;
120 }
121
122 $basketItem = $this->getEntityParent();
123
124 if ($basketItem->getId() > 0)
125 {
126 $itemsFromDbList = static::getList([
127 'filter' => ["BASKET_ID" => $basketItem->getId()],
128 ]);
129 while ($item = $itemsFromDbList->fetch())
130 {
131 if (!$this->getItemById($item['ID']))
132 {
133 static::deleteInternal($item['ID']);
134 }
135 }
136 }
137
139 foreach ($this->collection as $entity)
140 {
141 $r = $entity->save();
142 if (!$r->isSuccess())
143 {
144 $result->addErrors($r->getErrors());
145 }
146 }
147
148 $this->clearChanged();
149
150 return $result;
151 }
152
162 public static function deleteNoDemand($basketId)
163 {
164 $result = new Result();
165
166 $dbRes = static::getList([
167 'select' => ['ID'],
168 'filter' => ['=BASKET_ID' => $basketId],
169 ]);
170
171 while ($entity = $dbRes->fetch())
172 {
173 $r = static::deleteInternal($entity['ID']);
174 if (!$r->isSuccess())
175 {
176 $result->addErrors($r->getErrors());
177 }
178 }
179
180 return $result;
181 }
182
183 public function getQuantity() : float
184 {
185 $quantity = 0;
186
188 foreach ($this->collection as $reservation)
189 {
190 $quantity += $reservation->getQuantity();
191 }
192
193 return $quantity;
194 }
195
196 public function getQuantityByStoreId(int $storeId) : float
197 {
198 $quantity = 0;
199
201 foreach ($this->collection as $reservation)
202 {
203 if ($reservation->getStoreId() === $storeId)
204 {
205 $quantity += $reservation->getQuantity();
206 }
207 }
208
209 return $quantity;
210 }
211
217 protected static function deleteInternal($primary)
218 {
220 $service = ServiceLocator::getInstance()->get('sale.basketReservation');
221 return $service->delete($primary);
222 }
223
231 public static function getList(array $parameters = [])
232 {
234 }
235}
static getList(array $parameters=array())
Определения datamanager.php:431
const ENTITY_BASKET_RESERVE_COLLECTION
Определения registry.php:35
static getInstance($type)
Определения registry.php:183
const REGISTRY_TYPE_ORDER
Определения registry.php:16
setBasketItem(BasketItemBase $item)
Определения reservequantitycollection.php:22
static getList(array $parameters=[])
Определения reservequantitycollection.php:231
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$entity
$service
Определения payment.php:18
$dbRes
Определения yandex_detail.php:168