Bitrix-D7 22.2
Загрузка...
Поиск...
Не найдено
Класс BasketItem
+ Граф наследования:BasketItem:

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

 getParentBasketItem ()
 
 getParentBasketItemId ()
 
 isBundleParent ()
 
 isBundleChild ()
 
 getBundleCollection ()
 
 isChanged ()
 
 getReservedQuantity ()
 
 findItemByBasketCode ($basketCode)
 
 findItemByXmlId ($xmlId)
 
 findItemById ($id)
 
 getBasketCode ()
 
 setField ($name, $value)
 
 setFieldNoDemand ($name, $value)
 
 getField ($name)
 
 setFields (array $fields)
 
 getProviderName ()
 
 getCallbackFunction ()
 
 getProviderEntity ()
 
 getProvider ()
 
 isVatInPrice ()
 
 getVat ()
 
 getInitialPrice ()
 
 getBasePriceWithVat ()
 
 getPriceWithVat ()
 
 getFinalPrice ()
 
 getProductId ()
 
 getPrice ()
 
 getBasePrice ()
 
 getDiscountPrice ()
 
 isCustomPrice ()
 
 getCurrency ()
 
 changeCurrency (string $currency)
 
 getQuantity ()
 
 getNotPurchasedQuantity ()
 
 getWeight ()
 
 getVatRate ()
 
 getFUserId ()
 
 setOrderId ($id)
 
 isBarcodeMulti ()
 
 canBuy ()
 
 isDelay ()
 
 isSupportedMarkingCode ()
 
 getMarkingCodeGroup ()
 
 isExistPropertyCollection ()
 
 setPropertyCollection (BasketPropertiesCollectionBase $propertyCollection)
 
 setPrice ($value, $custom=false)
 
 initFields (array $values)
 
 save ()
 
 verify ()
 
 isCustom ()
 
 toArray ()
 
 getDefaultPrice ()
 
 setCollection (EntityCollection $collection)
 
 getCollection ()
 
 setInternalIndex ($index)
 
 getInternalIndex ()
 
 isStartField ($isMeaningfulField=false)
 
 clearStartField ()
 
 hasMeaningfulField ()
 
 doFinalAction ($hasMeaningfulField=false)
 
 setMathActionOnly ($value=false)
 
 isMathActionOnly ()
 
 isClone ()
 
 fetch (Main\Text\Converter $converter=null)
 

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

static getRegistryType ()
 
static formatQuantity ($quantity)
 
static getRegistryEntity ()
 
static create (BasketItemCollection $basketItemCollection, $moduleId, $productId, $basketCode=null)
 
static getSettableFields ()
 
static getSettableFieldsMap ()
 
static getCalculatedFields ()
 
static getAvailableFields ()
 
static getCustomizableFields ()
 
static getRoundFields ()
 
static add (array $data)
 
static update ($id, array $data)
 
static load (BasketItemCollection $basketItemCollection, $data)
 
static getEntityEventName ()
 
static getEntity ()
 
static getList (array $parameters)
 
static getRow (array $parameters)
 
static clearCache ()
 
static delete ($id)
 
static setCacheItem ($id, array $row)
 
static getCacheItem ($id, bool $load=false)
 
static clearCacheItem ($id)
 
static getTabletClassName ()
 
static getTabletFieldNames (int $fields=self::FIELDS_MAIN)
 
static getCachedFieldList ()
 
static getCallbackRestEvent ()
 
static clearSettings ()
 

Поля данных

const TYPE_SET = 1
 
const PREFIX_OLD = 'OLD_'
 
const EVENT_ON_BUILD_CACHED_FIELD_LIST = 'OnBuildCachedFieldList'
 
const FIELDS_MAIN = 0x0001
 
const FIELDS_UF = 0x0002
 
const FIELDS_ALL = self::FIELDS_MAIN|self::FIELDS_UF
 

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

 loadBundleCollectionFromDb ()
 
 addInternal (array $fields)
 
 updateInternal ($primary, array $fields)
 
 deleteInternal ($primary)
 
 checkBeforeDelete ()
 
 onBeforeSetFields (array $values)
 
 isCalculatedField ($field)
 
 add ()
 
 update ()
 
 onFieldModify ($name, $oldValue, $value)
 
 getTablet ()
 

Защищенные статические члены

static getFieldsMap ()
 
static generateXmlId ()
 
static getMeaningfulFields ()
 
static prepareForAdd (ORM\Data\AddResult $result, $id, array &$data)
 
static prepareForUpdate (ORM\Data\UpdateResult $result, $id, array &$data)
 
static deleteNoDemands ($id)
 
static normalize (array &$data)
 
static runAddExternalActions ($id, array $data)
 
static runUpdateExternalActions ($id, array $data)
 
static runDeleteExternalActions ($id)
 
static getDefaultCachedFieldList ()
 
static prepareFloatValue ($value)
 
static prepareIntValue ($value)
 
static prepareStringValue ($value)
 

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

 $reserveQuantityCollection
 
 $propertyCollection
 
 $calculatedFields
 
 $provider
 
 $internalId = null
 
 $collection
 
 $internalIndex = null
 
 $isClone = false
 

Статические защищенные данные

static $idBasket = 0
 

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

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

Методы

◆ add() [1/2]

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

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

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

1417 {
1418 $result = new Result();
1419
1420 $dateInsert = new Main\Type\DateTime();
1421
1422 $this->setFieldNoDemand('DATE_INSERT', $dateInsert);
1423 $this->setFieldNoDemand('DATE_UPDATE', $dateInsert);
1424
1425 $fields = $this->fields->getValues();
1426
1427 $r = $this->addInternal($fields);
1428 if (!$r->isSuccess())
1429 {
1430 $result->addErrors($r->getErrors());
1431 return $result;
1432 }
1433
1434 if ($resultData = $r->getData())
1435 {
1436 $result->setData($resultData);
1437 }
1438
1439 $id = $r->getId();
1440 $this->setFieldNoDemand('ID', $id);
1441 $result->setId($id);
1442
1443 return $result;
1444 }
addInternal(array $fields)

◆ add() [2/2]

static add ( array  $data)
staticinherited

Add entity item. Use instead of DataManager method.

Аргументы
array$data
Возвращает
ORM\Data\AddResult

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

151 {
152 $result = new ORM\Data\AddResult();
153
154 $entity = static::getEntity();
155
156 static::normalize($data);
157
158 if (Event::existEventHandlers($entity, ORM\Data\DataManager::EVENT_ON_BEFORE_ADD))
159 {
160 $event = new Event(
161 $entity,
162 ORM\Data\DataManager::EVENT_ON_BEFORE_ADD,
163 $data
164 );
165 $event->send();
166
167 $event->mergeData($data);
168 if ($event->getErrors($result))
169 return $result;
170 }
171
172 static::prepareForAdd($result, null, $data);
173 if (!$result->isSuccess())
174 return $result;
175 unset($result);
176
177 if (Event::existEventHandlers($entity, ORM\Data\DataManager::EVENT_ON_ADD))
178 {
179 $event = new Event(
180 $entity,
181 ORM\Data\DataManager::EVENT_ON_ADD,
182 $data
183 );
184 $event->send();
185 unset($event);
186 }
187
188 $result = $entity->getTablet()->add($data['fields']);
189 $success = $result->isSuccess();
190 if ($success)
191 {
192 $data['fields'] = $result->getData();
193 if ($entity->fieldsCount > 0)
194 $entity->setEntityCacheItem((int)$result->getId(), $result->getData(), false);
195 }
196
197 if (Event::existEventHandlers($entity, ORM\Data\DataManager::EVENT_ON_AFTER_ADD))
198 {
199 $event = new Event(
200 $entity,
201 ORM\Data\DataManager::EVENT_ON_AFTER_ADD,
202 [
203 'id' => $result->getId(),
204 'fields' => $data['fields'],
205 'external_fields' => $data['external_fields'],
206 'actions' => $data['actions'],
207 'success' => $success
208 ]
209 );
210 $event->send();
211 unset($event);
212 }
213
214 if ($success && !empty($data['actions']))
215 static::runAddExternalActions($result->getId(), $data);
216
217 unset($success, $entity);
218
219 return $result;
220 }

◆ addInternal()

addInternal ( array  $fields)
protected
Аргументы
array$fields
Возвращает
Main\Entity\AddResult
Исключения

Exception

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

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

1112 {
1113 return Internals\BasketTable::add($fields);
1114 }

◆ canBuy()

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

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

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

1126 : bool
1127 {
1128 return $this->getField('CAN_BUY') === 'Y';
1129 }

◆ changeCurrency()

changeCurrency ( string  $currency)
inherited

Change basket item currency.

Аргументы
string$currency
Возвращает
Main\Result

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

1041 : Main\Result
1042 {
1043 $result = new Main\Result();
1044
1045 $oldCurrency = $this->getCurrency();
1046 if ($oldCurrency === $currency)
1047 {
1048 return $result;
1049 }
1050
1051 $result->addErrors(
1052 $this->setField('CURRENCY', $currency)->getErrors()
1053 );
1054
1055 return $result;
1056 }

◆ checkBeforeDelete()

checkBeforeDelete ( )
protectedinherited
Возвращает
Result

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

294 {
295 return new Result();
296 }

◆ clearCache()

static clearCache ( )
staticinherited

Clear all cache for entity.

Возвращает
void

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

139 : void
140 {
141 static::getEntity()->clearEntityCache();
142 }

◆ clearCacheItem()

static clearCacheItem (   $id)
staticinherited

Clear item cache. Do not use without good reason.

Аргументы
int$id
Возвращает
void @noinspection PhpUnused

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

411 : void
412 {
413 $id = (int)$id;
414 if ($id <= 0)
415 return;
416 static::getEntity()->clearEntityCacheItem($id);
417 }

◆ clearSettings()

static clearSettings ( )
staticinherited

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

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

970: void {}

◆ clearStartField()

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

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

105 {
106 $parent = $this->getCollection();
107 if ($parent == null)
108 return false;
109
110 return $parent->clearStartField();
111 }

◆ create()

static create ( BasketItemCollection  $basketItemCollection,
  $moduleId,
  $productId,
  $basketCode = null 
)
staticinherited
Аргументы
BasketItemCollection$basketItemCollection
$moduleId
$productId
null$basketCode
Возвращает
BasketItemBase
Исключения
Main

ArgumentException

Исключения
Main

NotImplementedException

Исключения
Main

ObjectException

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

130 {
131 $fields = [
132 "MODULE" => $moduleId,
133 "BASE_PRICE" => 0,
134 "CAN_BUY" => 'Y',
135 "VAT_RATE" => null,
136 "CUSTOM_PRICE" => 'N',
137 "PRODUCT_ID" => $productId,
138 'XML_ID' => static::generateXmlId(),
139 ];
140
141 $basket = $basketItemCollection->getBasket();
142 if ($basket instanceof BasketBase)
143 {
144 $fields['LID'] = $basket->getSiteId();
145 }
146
147 $basketItem = static::createBasketItemObject($fields);
148
149 if ($basketCode !== null)
150 {
151 $basketItem->internalId = $basketCode;
152 if (mb_strpos($basketCode, 'n') === 0)
153 {
154 $internalId = intval(mb_substr($basketCode, 1));
155 if ($internalId > static::$idBasket)
156 {
157 static::$idBasket = $internalId;
158 }
159 }
160 }
161
162 $basketItem->setCollection($basketItemCollection);
163
164 return $basketItem;
165 }

◆ delete()

static delete (   $id)
staticinherited

Delete entity item. Use instead of DataManager method.

Аргументы
int$id
Возвращает
ORM\Data\DeleteResult

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

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

317 : ORM\Data\DeleteResult
318 {
319 $result = new ORM\Data\DeleteResult();
320
321 $entity = static::getEntity();
322
323 if (Event::existEventHandlers($entity, ORM\Data\DataManager::EVENT_ON_BEFORE_DELETE))
324 {
325 $event = new Event(
326 $entity,
327 ORM\Data\DataManager::EVENT_ON_BEFORE_DELETE,
328 ['id' => $id]
329 );
330 $event->send();
331
332 if ($event->getErrors($result))
333 return $result;
334 }
335
336 if (Event::existEventHandlers($entity, ORM\Data\DataManager::EVENT_ON_DELETE))
337 {
338 $event = new Event(
339 $entity,
340 ORM\Data\DataManager::EVENT_ON_DELETE,
341 ['id' => $id]
342 );
343 $event->send();
344 unset($event);
345 }
346
347 if ($entity->fieldsCount > 0 && !isset($entity->cache[$id]))
348 $entity->loadEntityCacheItem($id);
349
350 $result = $entity->getTablet()->delete($id);
351 $success = $result->isSuccess();
352 if ($success)
353 $entity->expireEntityCacheItem((int)$id);
354
355 if (Event::existEventHandlers($entity, ORM\Data\DataManager::EVENT_ON_AFTER_DELETE))
356 {
357 $event = new Event(
358 $entity,
359 ORM\Data\DataManager::EVENT_ON_AFTER_DELETE,
360 ['id' => $id, 'success' => $success]
361 );
362 $event->send();
363 unset($event);
364 }
365
366 if ($success)
367 static::runDeleteExternalActions($id);
368
369 unset($success, $entity);
370
371 return $result;
372 }

◆ deleteInternal()

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

Exception

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

1133 {
1134 return Internals\BasketTable::delete($primary);
1135 }

◆ deleteNoDemands()

static deleteNoDemands (   $id)
staticprotectedinherited

Delete entity item without entity events (tablet events only).

Аргументы
int$id
Возвращает
ORM\Data\DeleteResult
Исключения
Main

ObjectNotFoundException

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

534 : ORM\Data\DeleteResult
535 {
536 $entity = static::getEntity();
537
538 if ($entity->fieldsCount > 0 && !isset($entity->cache[$id]))
539 $entity->loadEntityCacheItem($id);
540
541 $result = $entity->getTablet()->delete($id);
542 if ($result->isSuccess())
543 {
544 if ($entity->fieldsCount > 0)
545 $entity->expireEntityCacheItem((int)$id);
546 static::runDeleteExternalActions($id);
547 }
548
549 unset($entity);
550
551 return $result;
552 }

◆ doFinalAction()

doFinalAction (   $hasMeaningfulField = false)
inherited

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

126 {
127 $parent = $this->getCollection();
128 if ($parent == null)
129 {
130 return false;
131 }
132
133 return $parent->doFinalAction($hasMeaningfulField);
134 }

◆ fetch()

fetch ( Main\Text\Converter  $converter = null)
inherited

Entity fetch. Work with entity change cache.

Аргументы
Main\Text\Converter | null$converter
Возвращает
array|false

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

113 {
114 if ($this->result === null)
115 return false;
116 $row = $this->result->fetch($converter);
117 if (!$row)
118 {
119 $this->result = null;
120 $this->fetchCutMask = [];
121 return false;
122 }
123 if (empty($this->fields))
124 return $row;
125 if (!isset($row['ID']))
126 return $row;
127
128 $this->setEntityCacheItem((int)$row['ID'], $row, true);
129 if (!empty($this->fetchCutMask))
130 $row = array_diff_key($row, $this->fetchCutMask);
131 return $row;
132 }

◆ findItemByBasketCode()

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

ArgumentNullException

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

44 {
45 if ((string)$this->getBasketCode() === (string)$basketCode)
46 {
47 return $this;
48 }
49
50 return null;
51 }

◆ findItemById()

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

ArgumentNullException

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

83 {
84 if ($id <= 0)
85 {
86 return null;
87 }
88
89 if ($this->getId() === (int)$id)
90 {
91 return $this;
92 }
93
94 return null;
95 }

◆ findItemByXmlId()

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

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

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

60 {
61 if ((string)$this->getField('XML_ID') === (string)$xmlId)
62 {
63 return $this;
64 }
65
66 return null;
67 }

◆ formatQuantity()

static formatQuantity (   $quantity)
static
Аргументы
$quantity
Возвращает
float|string
Исключения
ArgumentNullException
ArgumentOutOfRangeException

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

862 {
863 $format = Config\Option::get('sale', 'format_quantity', 'AUTO');
864 if ($format == 'AUTO' || intval($format) <= 0)
865 {
866 $quantity = round($quantity, SALE_VALUE_PRECISION);
867 }
868 else
869 {
870 $quantity = number_format($quantity, intval($format), '.', '');
871 }
872
873 return $quantity;
874 }

◆ generateXmlId()

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

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

171 {
172 return uniqid('bx_');
173 }

◆ getAvailableFields()

static getAvailableFields ( )
staticinherited
Возвращает
array

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

241 {
242 return static::getSettableFields();
243 }

◆ getBasePrice()

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

ArgumentNullException

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

1002 {
1003 return (float)$this->getField('BASE_PRICE');
1004 }

◆ getBasePriceWithVat()

getBasePriceWithVat ( )
inherited
Возвращает
float|int
Исключения
Main

ArgumentNullException

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

921 {
922 $price = $this->getBasePrice();
923
924 if (!$this->isVatInPrice())
925 {
926 $vatRate = $this->getVatRate();
927 $price += $this->getBasePrice() * $vatRate;
928 }
929
930 return PriceMaths::roundPrecision($price);
931 }
static roundPrecision($value)
Definition: pricemaths.php:17

◆ getBasketCode()

getBasketCode ( )
inherited
Возвращает
int|null|string
Исключения
Main

ArgumentNullException

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

102 {
103 if ($this->internalId == null)
104 {
105 if ($this->getId() > 0)
106 {
107 $this->internalId = $this->getId();
108 }
109 else
110 {
111 static::$idBasket++;
112 $this->internalId = 'n'.static::$idBasket;
113 }
114 }
115
116 return $this->internalId;
117 }

◆ getBundleCollection()

getBundleCollection ( )
Возвращает
BundleCollection|null
Исключения
ArgumentException
ArgumentNullException
ArgumentOutOfRangeException
Main

ArgumentTypeException

Исключения
Main

NotImplementedException

Исключения
Main

ObjectException

Исключения
ObjectNotFoundException

Exception

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

565 {
566 if ($this->bundleCollection === null)
567 {
568 if ($this->getId() > 0)
569 {
570 $this->bundleCollection = $this->loadBundleCollectionFromDb();
571 }
572 else
573 {
574 $this->bundleCollection = $this->loadBundleCollectionFromProvider();
575 }
576 }
577
578 return $this->bundleCollection;
579 }

◆ getCachedFieldList()

static getCachedFieldList ( )
staticinherited

Returns fields list in cache.

Возвращает
array

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

465 : array
466 {
467 $entity = static::getEntity();
468 return $entity->fields;
469 }

◆ getCacheItem()

static getCacheItem (   $id,
bool  $load = false 
)
staticinherited

Returns item cache.

Аргументы
int$id
bool$load
Возвращает
array|null

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

396 : ?array
397 {
398 $id = (int)$id;
399 if ($id <= 0)
400 return null;
401 return static::getEntity()->getEntityCacheItem($id, $load);
402 }

◆ getCalculatedFields()

static getCalculatedFields ( )
staticinherited
Возвращает
array

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

228 {
229 return [
230 'DISCOUNT_PRICE_PERCENT',
231 'IGNORE_CALLBACK_FUNC',
232 'DEFAULT_PRICE',
233 'DISCOUNT_LIST'
234 ];
235 }

◆ getCallbackFunction()

getCallbackFunction ( )
inherited
Возвращает
null|string
Исключения
Main

ArgumentNullException

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

573 {
574 $callbackFunction = trim($this->getField('CALLBACK_FUNC'));
575 if (!isset($callbackFunction) || (strval(trim($callbackFunction)) == ""))
576 {
577 return null;
578 }
579
580 if (!function_exists($callbackFunction))
581 {
582 return null;
583 }
584
585 return $callbackFunction;
586 }

◆ getCallbackRestEvent()

static getCallbackRestEvent ( )
staticinherited

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

822 : array
823 {
824 return [Main\Rest\Event::class, 'processItemEvent'];
825 }

◆ getCollection()

getCollection ( )
inherited
Возвращает
EntityCollection

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

◆ getCurrency()

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

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

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

1030 {
1031 return $this->getField('CURRENCY');
1032 }

◆ getCustomizableFields()

static getCustomizableFields ( )
staticinherited
Возвращает
array

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

248 : array
249 {
250 return [
251 'PRICE' => 'PRICE',
252 'VAT_INCLUDED' => 'VAT_INCLUDED',
253 'VAT_RATE' => 'VAT_RATE'
254 ];
255 }

◆ getDefaultCachedFieldList()

static getDefaultCachedFieldList ( )
staticprotectedinherited

Returns entity default fields list for caching.

Возвращает
array

Переопределяется в Price, Product и Vat.

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

616 : array
617 {
618 return [];
619 }

◆ getDefaultPrice()

getDefaultPrice ( )
inherited
Уст.:
Возвращает
float
Исключения
Main

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

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

1728 {
1729 return (float)$this->getField('DEFAULT_PRICE');
1730 }

◆ getDiscountPrice()

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

ArgumentNullException

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

1011 {
1012 return (float)$this->getField('DISCOUNT_PRICE');
1013 }

◆ getEntity()

static getEntity ( )
staticinherited

Returns entity class.

Возвращает
Entity

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

56 : Entity
57 {
58 $className = get_called_class();
59 if (empty(self::$entity[$className]))
60 {
61 $entity = new static;
62 self::$entity[$className] = $entity;
63 }
64
65 return self::$entity[$className];
66 }

◆ getEntityEventName()

static getEntityEventName ( )
staticinherited
Возвращает
null|string

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

1702 {
1703 return 'SaleBasketItem';
1704 }

◆ getField()

getField (   $name)
inherited
Аргументы
$name
Возвращает
float|string|null
Исключения
Main

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

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

491 {
492 static $calculatedFields = null;
493
494 if ($calculatedFields === null)
495 {
496 $calculatedFields = array_fill_keys(static::getCalculatedFields(), true);
497 }
498
499 if (isset($calculatedFields[$name]))
500 {
501 if (
502 isset($this->calculatedFields[$name])
503 || (is_array($this->calculatedFields) && array_key_exists($name, $this->calculatedFields))
504 )
505 {
506 return $this->calculatedFields->get($name);
507 }
508
509 return null;
510 }
511
512 return parent::getField($name);
513 }

◆ getFieldsMap()

static getFieldsMap ( )
staticprotected
Возвращает
array

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

880 {
881 return Internals\BasketTable::getMap();
882 }

◆ getFinalPrice()

getFinalPrice ( )
inherited
Возвращает
float|int
Исключения
Main

ArgumentNullException

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

955 {
956 $price = PriceMaths::roundPrecision($this->getPrice() * $this->getQuantity());
957
958 if (!$this->isVatInPrice())
959 $price += $this->getVat();
960
961 return $price;
962 }

◆ getFUserId()

getFUserId ( )
inherited
Возвращает
float|null|string
Исключения
Main

ArgumentNullException

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

1098 {
1099 return $this->getField('FUSER_ID');
1100 }

◆ getInitialPrice()

getInitialPrice ( )
inherited
Возвращает
float|int
Исключения
Main

ArgumentNullException

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

907 {
908 $price = PriceMaths::roundPrecision($this->getPrice() * $this->getQuantity());
909
910 if ($this->isVatInPrice())
911 $price -= $this->getVat();
912
913 return $price;
914 }

◆ getInternalIndex()

getInternalIndex ( )
inherited
Возвращает
null|int

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

◆ getList()

static getList ( array  $parameters)
staticinherited

Entity getList with change cache. Need for use before add/update/delete entity row.

Аргументы
array$parameters
Возвращает
Entity
Исключения
Main

ArgumentException

Исключения
Main

ObjectNotFoundException

Исключения
Main

ObjectPropertyException

Исключения
Main

SystemException

Переопределяется в Shipment, ShipmentItem, BasketPropertyItem, BasketPropertyItemBase, EntityPropertyValue, Payment, Order, OrderBase и ShipmentItemStore.

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

78 : Entity
79 {
80 $entity = static::getEntity();
81 $parameters = $entity->prepareTabletQueryParameters($parameters);
82 $entity->result = $entity->getTablet()->getList($parameters);
83
84 return $entity;
85 }

◆ getMarkingCodeGroup()

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

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

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

1156 : string
1157 {
1158 return (string)$this->getField('MARKING_CODE_GROUP');
1159 }

◆ getMeaningfulFields()

static getMeaningfulFields ( )
staticprotectedinherited
Возвращает
array

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

261 {
262 return ['QUANTITY', 'PRICE', 'CUSTOM_PRICE'];
263 }

◆ getNotPurchasedQuantity()

getNotPurchasedQuantity ( )
inherited
Возвращает
float

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

1070 : float
1071 {
1072 return (float)$this->getField('QUANTITY');
1073 }

◆ getParentBasketItem()

getParentBasketItem ( )
Возвращает
BasketItem|null

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

439 {
440 $collection = $this->getCollection();
441
442 if ($collection instanceof BundleCollection)
443 {
444 return $collection->getParentBasketItem();
445 }
446
447 return null;
448 }

◆ getParentBasketItemId()

getParentBasketItemId ( )
Возвращает
int|null|string
Исключения
ArgumentNullException

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

455 {
456 if ($parentBasketItem = $this->getParentBasketItem())
457 {
458 return $parentBasketItem->getId();
459 }
460 return null;
461 }

◆ getPrice()

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

ArgumentNullException

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

993 {
994 return (float)$this->getField('PRICE');
995 }

◆ getPriceWithVat()

getPriceWithVat ( )
inherited
Возвращает
float|int
Исключения
Main

ArgumentNullException

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

938 {
939 $price = $this->getPrice();
940
941 if (!$this->isVatInPrice())
942 {
943 $vatRate = $this->getVatRate();
944 $price += $this->getPrice() * $vatRate;
945 }
946
947 return PriceMaths::roundPrecision($price);
948 }

◆ getProductId()

getProductId ( )
inherited
Возвращает
int

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

984 {
985 return (int)$this->getField('PRODUCT_ID');
986 }

◆ getProvider()

getProvider ( )
inherited
Возвращает
ProviderBase|null|string
Исключения
Main

ArgumentNullException

Исключения
Main

LoaderException

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

620 {
621 if ($this->provider !== null)
622 return $this->provider;
623
624 $module = $this->getField('MODULE');
625 $productProviderName = $this->getField('PRODUCT_PROVIDER_CLASS');
626 if (
627 !isset($module)
628 || !isset($productProviderName)
629 || (strval($productProviderName) == "")
630 )
631 {
632 return null;
633 }
634
635 $providerName = Internals\Catalog\Provider::getProviderName($module, $productProviderName);
636 if ($providerName !== null)
637 {
638 $this->provider = $providerName;
639 }
640
641 return $providerName;
642 }

◆ getProviderEntity()

getProviderEntity ( )
inherited
Возвращает
bool|mixed|null
Исключения
Main

ArgumentNullException

Исключения
Main

LoaderException

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

594 {
595 $module = $this->getField('MODULE');
596 $productProviderName = $this->getField('PRODUCT_PROVIDER_CLASS');
597 if (
598 !isset($module)
599 || !isset($productProviderName)
600 || (strval($productProviderName) == "")
601 )
602 {
603 return false;
604 }
605
606 if (!empty($module) && Main\Loader::includeModule($module))
607 {
608 return Internals\Catalog\Provider::getProviderEntity($productProviderName);
609 }
610
611 return null;
612 }

◆ getProviderName()

getProviderName ( )
inherited
Возвращает
ProviderBase|null
Исключения
Main

ArgumentNullException

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

564 {
565 return $this->getProvider();
566 }

◆ getQuantity()

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

ArgumentNullException

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

1062 : float
1063 {
1064 return (float)$this->getField('QUANTITY');
1065 }

◆ getRegistryEntity()

static getRegistryEntity ( )
staticinherited
Возвращает
string|void

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

73 {
75 }
const ENTITY_BASKET_ITEM
Definition: registry.php:32

◆ getRegistryType()

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

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

40 {
42 }
const REGISTRY_TYPE_ORDER
Definition: registry.php:16

◆ getReservedQuantity()

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

ArgumentTypeException

Исключения
Main

NotImplementedException

Исключения
Main

SystemException

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

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

1145 {
1146 return $this->getReserveQuantityCollection()->getQuantity();
1147 }

◆ getRoundFields()

static getRoundFields ( )
staticinherited

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

1244 {
1245 return [
1246 'BASE_PRICE',
1247 'DISCOUNT_PRICE',
1248 'DISCOUNT_PRICE_PERCENT',
1249 ];
1250 }

◆ getRow()

static getRow ( array  $parameters)
staticinherited

Entity getRow with change cache. Wrapper for entity getList.

Аргументы
array$parameters
Возвращает
array|null
Исключения
Main

ArgumentException

Исключения
Main

ObjectNotFoundException

Исключения
Main

ObjectPropertyException

Исключения
Main

SystemException

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

97 : ?array
98 {
99 $parameters['limit'] = 1;
100 $result = static::getList($parameters);
101 $row = $result->fetch();
102
103 return (is_array($row) ? $row : null);
104 }

◆ getSettableFields()

static getSettableFields ( )
staticinherited
Возвращает
array

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

193 {
194 $result = [
195 "NAME", "LID", "SORT", "PRODUCT_ID", "PRODUCT_PRICE_ID", "PRICE_TYPE_ID",
196 "CATALOG_XML_ID", "PRODUCT_XML_ID", "DETAIL_PAGE_URL",
197 "BASE_PRICE", "PRICE", "DISCOUNT_PRICE", "CURRENCY", "CUSTOM_PRICE",
198 "QUANTITY", "WEIGHT", "DIMENSIONS", "MEASURE_CODE", "MEASURE_NAME",
199 "DELAY", "CAN_BUY", "NOTES", "VAT_RATE", "VAT_INCLUDED", "BARCODE_MULTI",
200 "SUBSCRIBE", "PRODUCT_PROVIDER_CLASS", "CALLBACK_FUNC", "ORDER_CALLBACK_FUNC",
201 "CANCEL_CALLBACK_FUNC", "PAY_CALLBACK_FUNC", "TYPE", "SET_PARENT_ID",
202 "DISCOUNT_NAME", "DISCOUNT_VALUE", "DISCOUNT_COUPON", "RECOMMENDATION", "XML_ID",
203 "MARKING_CODE_GROUP"
204 ];
205
206 return array_merge($result, static::getCalculatedFields());
207 }

◆ getSettableFieldsMap()

static getSettableFieldsMap ( )
staticinherited
Возвращает
array|null

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

213 {
214 static $fieldsMap = null;
215
216 if ($fieldsMap === null)
217 {
218 $fieldsMap = array_fill_keys(static::getSettableFields(), true);
219 }
220
221 return $fieldsMap;
222 }

◆ getTablet()

getTablet ( )
protectedinherited

Returns entity table object.

Возвращает
ORM\Data\DataManager
Исключения
Main

ObjectNotFoundException

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

477 : ORM\Data\DataManager
478 {
479 if (!($this->tablet instanceof ORM\Data\DataManager))
480 throw new Main\ObjectNotFoundException(sprintf(
481 'Tablet not found in entity `%s`',
482 get_class($this)
483 ));
484 return $this->tablet;
485 }

◆ getTabletClassName()

static getTabletClassName ( )
staticinherited

Returns entity tablet name.

Возвращает
string

Переопределяется в Price, Product и Vat.

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

424 : string
425 {
426 return '';
427 }

◆ getTabletFieldNames()

static getTabletFieldNames ( int  $fields = self::FIELDS_MAIN)
staticinherited

Returns list of tablet field names, include user fields.

Аргументы
int$fields
Возвращает
array

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

435 : array
436 {
437 $result = [];
438 $entity = static::getEntity();
439 if ($fields & self::FIELDS_MAIN)
440 {
441 $result = array_keys($entity->tabletFields);
442 }
443 if ($fields & self::FIELDS_UF)
444 {
445 $list = array_keys($entity->tabletUserFields);
446 if (!empty($list))
447 {
448 $result = (empty($result)
449 ? $list
450 : array_merge($result, $list)
451 );
452 }
453 unset($list);
454 }
455
456 unset($entity);
457 return $result;
458 }

◆ getVat()

getVat ( )
inherited
Возвращает
float|int
Исключения
Main

ArgumentNullException

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

891 {
892 $calculator = new VatCalculator((float)$this->getVatRate());
893 $vat = $calculator->calc(
894 $this->getPrice(),
895 $this->isVatInPrice(),
896 false
897 );
898
899 return PriceMaths::roundPrecision($vat * $this->getQuantity());
900 }

◆ getVatRate()

getVatRate ( )
inherited
Возвращает
float|null|string
Исключения
Main

ArgumentNullException

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

1089 {
1090 return $this->getField('VAT_RATE');
1091 }

◆ getWeight()

getWeight ( )
inherited
Возвращает
float|null|string
Исключения
Main

ArgumentNullException

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

1080 {
1081 return $this->getField('WEIGHT');
1082 }

◆ hasMeaningfulField()

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

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

117 {
118 $parent = $this->getCollection();
119 if ($parent == null)
120 return false;
121
122 return $parent->hasMeaningfulField();
123 }

◆ initFields()

initFields ( array  $values)
inherited
Аргументы
array$values
Исключения
Main

ArgumentOutOfRangeException

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

1257 {
1258 if (!isset($values['BASE_PRICE']) || doubleval($values['BASE_PRICE']) == 0)
1259 $values['BASE_PRICE'] = $values['PRICE'] + $values['DISCOUNT_PRICE'];
1260
1261 parent::initFields($values);
1262 }

◆ isBarcodeMulti()

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

ArgumentNullException

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

1117 {
1118 return $this->getField('BARCODE_MULTI') === "Y";
1119 }

◆ isBundleChild()

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

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

476 {
477 return $this->collection instanceof BundleCollection;
478 }

◆ isBundleParent()

isBundleParent ( )
Возвращает
bool
Исключения
ArgumentNullException

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

468 {
469 return (int)$this->getField('TYPE') === static::TYPE_SET;
470 }

◆ isCalculatedField()

isCalculatedField (   $field)
protectedinherited
Аргументы
string$fieldField name.
Возвращает
bool

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

969 {
970 static $calculateFields = null;
971
972 if ($calculateFields === null)
973 {
974 $calculateFields = array_fill_keys(static::getCalculatedFields(), true);
975 }
976
977 return isset($calculateFields[$field]);
978 }

◆ isChanged()

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

ArgumentException

Исключения
Main

ArgumentNullException

Исключения
Main

ArgumentTypeException

Исключения
Main

NotImplementedException

Исключения
Main

ObjectNotFoundException

Исключения
Main

SystemException

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

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

885 {
886 $isChanged = parent::isChanged();
887
888 if ($isChanged === false)
889 {
890 $reserveCollection = $this->getReserveQuantityCollection();
891 $isChanged = $reserveCollection->isChanged();
892 }
893
894 return $isChanged;
895 }

◆ isClone()

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

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

◆ isCustom()

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

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

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

1688 {
1689 $moduleId = trim($this->getField('MODULE'));
1690 $providerClassName = trim($this->getField('PRODUCT_PROVIDER_CLASS'));
1691 $callback = trim($this->getField('CALLBACK_FUNC'));
1692
1693 return (empty($moduleId) && empty($providerClassName) && empty($callback));
1694 }

◆ isCustomPrice()

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

ArgumentOutOfRangeException

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

1020 {
1021 return $this->isMarkedFieldCustom('PRICE');
1022 }

◆ isDelay()

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

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

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

1136 : bool
1137 {
1138 return $this->getField('DELAY') === 'Y';
1139 }

◆ isExistPropertyCollection()

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

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

1197 {
1198 return $this->propertyCollection !== null;
1199 }

◆ isMathActionOnly()

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

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

155 {
156 $parent = $this->getCollection();
157 if ($parent == null)
158 return false;
159
160 return $parent->isMathActionOnly();
161 }

◆ isStartField()

isStartField (   $isMeaningfulField = false)
inherited
Аргументы
bool$isMeaningfulField
Возвращает
bool

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

93 {
94 $parent = $this->getCollection();
95 if ($parent == null)
96 return false;
97
98 return $parent->isStartField($isMeaningfulField);
99 }

◆ isSupportedMarkingCode()

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

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

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

1146 : bool
1147 {
1148 return $this->getMarkingCodeGroup() !== '';
1149 }

◆ isVatInPrice()

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

ArgumentNullException

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

882 {
883 return $this->getField('VAT_INCLUDED') === 'Y';
884 }

◆ load()

static load ( BasketItemCollection  $basketItemCollection,
  $data 
)
staticinherited
Аргументы
BasketItemCollection$basketItemCollection
$data
Возвращает
mixed
Исключения
Main

ArgumentException

Исключения
Main

NotImplementedException

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

1631 {
1632 $basketItem = static::createBasketItemObject($data);
1633 $basketItem->setCollection($basketItemCollection);
1634
1635 return $basketItem;
1636 }

◆ loadBundleCollectionFromDb()

loadBundleCollectionFromDb ( )
protected
Возвращает
BundleCollection
Исключения
ArgumentNullException
ArgumentOutOfRangeException

Exception

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

610 {
611 $collection = $this->createBundleCollection();
612
613 if ($this->getId() > 0)
614 {
615 return $collection->loadFromDb(["SET_PARENT_ID" => $this->getId(), "TYPE" => false]);
616 }
617
618 return $collection;
619 }

◆ normalize()

static normalize ( array &  $data)
staticprotectedinherited

Normalize data before prepare. Convert fields list into complex structure.

Аргументы
array&$data
Возвращает
void

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

560 : void
561 {
562 $result = [
563 'fields' => [],
564 'external_fields' => [],
565 'actions' => []
566 ];
567
568 if (isset($data['fields']) && is_array($data['fields']))
569 {
570 $result['fields'] = $data['fields'];
571 if (isset($data['external_fields']) && is_array($data['external_fields']))
572 $result['external_fields'] = $data['external_fields'];
573 if (isset($data['actions']) && is_array($data['actions']))
574 $result['actions'] = $data['actions'];
575 }
576 else
577 {
578 $result['fields'] = $data;
579 }
580
581 $data = $result;
582 unset($result);
583 }

◆ onBeforeSetFields()

onBeforeSetFields ( array  $values)
protectedinherited
Аргументы
array$values
Возвращает
array

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

520 {
521 $priorityFields = [
522 'CURRENCY', 'CUSTOM_PRICE', 'VAT_RATE', 'VAT_INCLUDED',
523 'PRODUCT_PROVIDER_CLASS', 'SUBSCRIBE', 'TYPE', 'LID', 'FUSER_ID'
524 ];
525
526 $priorityValues = [];
527 foreach ($priorityFields as $field)
528 {
529 if (isset($values[$field]))
530 {
531 $priorityValues[$field] = $values[$field];
532 }
533 }
534
535 return $priorityValues + $values;
536 }

◆ onFieldModify()

onFieldModify (   $name,
  $oldValue,
  $value 
)
protectedinherited
Аргументы
string$name
mixed$oldValue
mixed$value
Возвращает
Result

Переопределяется в PayableBasketItem, PayableShipmentItem, ReserveQuantity и TradeBindingEntity.

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

30 {
31 $collection = $this->getCollection();
32 return $collection->onItemModify($this, $name, $oldValue, $value);
33 }

◆ prepareFloatValue()

static prepareFloatValue (   $value)
staticprotectedinherited

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

974 : ?float
975 {
976 if ($value === null)
977 {
978 return null;
979 }
980
981 $result = null;
982 if (is_string($value))
983 {
984 if ($value !== '' && is_numeric($value))
985 {
986 $value = (float)$value;
987 if (is_finite($value))
988 {
989 $result = $value;
990 }
991 }
992 }
993 else
994 {
995 if (is_int($value))
996 {
997 $value = (float)$value;
998 }
999 if (
1000 is_float($value) && is_finite($value)
1001 )
1002 {
1003 $result = $value;
1004 }
1005 }
1006
1007 return $result;
1008 }

◆ prepareForAdd()

static prepareForAdd ( ORM\Data\AddResult  $result,
  $id,
array &  $data 
)
staticprotectedinherited

Check and modify fields before add entity item. Need for entity automation.

Аргументы
ORM\Data\AddResult$result
int | null$id
array&$data
Возвращает
void

Переопределяется в Price, Product и Vat.

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

495 : void
496 {
497 $data = static::getEntity()->checkTabletWhiteList($data);
498 if (empty($data))
499 {
500 $result->addError(new ORM\EntityError(sprintf(
501 'Empty data for add in entity `%s`',
502 get_called_class()
503 )));
504 }
505 }

◆ prepareForUpdate()

static prepareForUpdate ( ORM\Data\UpdateResult  $result,
  $id,
array &  $data 
)
staticprotectedinherited

Check and modify fields before update entity item. Need for entity automation.

Аргументы
ORM\Data\UpdateResult$result
int$id
array&$data
Возвращает
void

Переопределяется в Price, Product и Vat.

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

515 : void
516 {
517 $data = static::getEntity()->checkTabletWhiteList($data);
518 if (empty($data))
519 {
520 $result->addError(new ORM\EntityError(sprintf(
521 'Empty data for update in entity `%s`',
522 get_called_class()
523 )));
524 }
525 }

◆ prepareIntValue()

static prepareIntValue (   $value)
staticprotectedinherited

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

1010 : ?int
1011 {
1012 if ($value === null)
1013 {
1014 return null;
1015 }
1016
1017 $result = null;
1018 if (is_string($value))
1019 {
1020 if ($value !== '' && is_numeric($value))
1021 {
1022 $result = (int)$value;
1023 }
1024 }
1025 elseif (is_int($value))
1026 {
1027 $result = $value;
1028 }
1029
1030 return $result;
1031 }

◆ prepareStringValue()

static prepareStringValue (   $value)
staticprotectedinherited

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

1033 : ?string
1034 {
1035 if (is_string($value))
1036 {
1037 return trim($value) ?: null;
1038 }
1039
1040 return null;
1041 }

◆ runAddExternalActions()

static runAddExternalActions (   $id,
array  $data 
)
staticprotectedinherited

Run core automation after add entity item.

Аргументы
int$id
array$data
Возвращает
void

Переопределяется в Price и Product.

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

592: void {}

◆ runDeleteExternalActions()

static runDeleteExternalActions (   $id)
staticprotectedinherited

Run core automation after delete entity item.

Аргументы
int$id
Возвращает
void

Переопределяется в Price и Product.

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

609: void {}

◆ runUpdateExternalActions()

static runUpdateExternalActions (   $id,
array  $data 
)
staticprotectedinherited

Run core automation after update entity item.

Аргументы
int$id
array$data
Возвращает
void

Переопределяется в Price и Product.

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

601: void {}

◆ save()

save ( )
inherited

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

1273 {
1274 $this->checkCallingContext();
1275
1276 $result = new Result();
1277
1278 $id = $this->getId();
1279 $isNew = $id === 0;
1280
1281 $this->onBeforeSave();
1282
1283 $r = $this->callEventSaleBasketItemBeforeSaved($isNew);
1284 if (!$r->isSuccess())
1285 {
1286 return $r;
1287 }
1288
1289 if (!$this->isChanged())
1290 {
1291 return $result;
1292 }
1293
1294 if ($id > 0)
1295 {
1296 $r = $this->update();
1297 }
1298 else
1299 {
1300 $r = $this->add();
1301 if ($r->getId() > 0)
1302 {
1303 $id = $r->getId();
1304 }
1305 }
1306
1307 if (!$r->isSuccess())
1308 {
1309 return $r;
1310 }
1311
1312 if ($id > 0)
1313 {
1314 $result->setId($id);
1315
1316 $controller = Internals\CustomFieldsController::getInstance();
1317 $controller->save($this);
1318 }
1319
1320 $r = $this->callEventSaleBasketItemSaved($isNew);
1321 if (!$r->isSuccess())
1322 {
1323 return $r;
1324 }
1325
1326 $propertyCollection = $this->getPropertyCollection();
1327 $r = $propertyCollection->save();
1328 if (!$r->isSuccess())
1329 {
1330 $result->addErrors($r->getErrors());
1331 }
1332
1333 $this->callEventOnBasketItemEntitySaved();
1334
1335 return $result;
1336 }

◆ setCacheItem()

static setCacheItem (   $id,
array  $row 
)
staticinherited

Fill item cache data. Do not use without good reason.

Аргументы
int$id
array$row
Возвращает
void

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

381 : void
382 {
383 $id = (int)$id;
384 if ($id <= 0 || empty($row))
385 return;
386 static::getEntity()->setEntityCacheItem($id, $row, false);
387 }

◆ setCollection()

setCollection ( EntityCollection  $collection)
inherited
Аргументы
EntityCollection$collection

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

39 {
40 $this->collection = $collection;
41 }

◆ setField()

setField (   $name,
  $value 
)
inherited
Аргументы
string$nameField name.
string | int | float$valueField value.
Возвращает
Result
Исключения
Main

ArgumentOutOfRangeException

Исключения

Exception

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

411 {
412 $priceFields = [
413 'BASE_PRICE' => 'BASE_PRICE',
414 'PRICE' => 'PRICE',
415 'DISCOUNT_PRICE' => 'DISCOUNT_PRICE',
416 ];
417 if (isset($priceFields[$name]))
418 {
419 $value = PriceMaths::roundPrecision($value);
420 }
421
422 if ($this->isCalculatedField($name))
423 {
424 $this->calculatedFields->set($name, $value);
425 return new Result();
426 }
427
428 if ($name === 'CUSTOM_PRICE')
429 {
430 if ($value == 'Y')
431 {
432 $this->markFieldCustom('PRICE');
433 }
434 else
435 {
436 $this->unmarkFieldCustom('PRICE');
437 }
438 }
439
440 return parent::setField($name, $value);
441 }

◆ setFieldNoDemand()

setFieldNoDemand (   $name,
  $value 
)
inherited

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

452 {
453 $priceFields = [
454 'BASE_PRICE' => 'BASE_PRICE',
455 'PRICE' => 'PRICE',
456 'DISCOUNT_PRICE' => 'DISCOUNT_PRICE',
457 ];
458 if (isset($priceFields[$name]))
459 {
460 $value = PriceMaths::roundPrecision($value);
461 }
462
463 if ($this->isCalculatedField($name))
464 {
465 $this->calculatedFields->set($name, $value);
466 return;
467 }
468
469 if ($name === 'CUSTOM_PRICE')
470 {
471 if ($value === 'Y')
472 {
473 $this->markFieldCustom('PRICE');
474 }
475 else
476 {
477 $this->unmarkFieldCustom('PRICE');
478 }
479 }
480
481 parent::setFieldNoDemand($name, $value);
482 }

◆ setFields()

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

ArgumentOutOfRangeException

Исключения
Main

NotSupportedException

Исключения

Exception

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

546 {
547 foreach ($fields as $name => $value)
548 {
549 if ($this->isCalculatedField($name))
550 {
551 $this->calculatedFields[$name] = $value;
552 unset($fields[$name]);
553 }
554 }
555
556 return parent::setFields($fields);
557 }

◆ setInternalIndex()

setInternalIndex (   $index)
inherited

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

76 {
77 $this->internalIndex = $index;
78 }

◆ setMathActionOnly()

setMathActionOnly (   $value = false)
inherited
Аргументы
bool | false$value
Возвращает
bool

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

141 {
142 $parent = $this->getCollection();
143 if ($parent == null)
144 {
145 return false;
146 }
147
148 return $parent->setMathActionOnly($value);
149 }

◆ setOrderId()

setOrderId (   $id)
inherited
Аргументы
$id
Исключения
Main

ArgumentOutOfRangeException

Исключения

Exception

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

1108 {
1109 $this->setField('ORDER_ID', (int)$id);
1110 }

◆ setPrice()

setPrice (   $value,
  $custom = false 
)
inherited
Аргументы
$value
bool$custom
Возвращает
Result
Исключения
Main

ArgumentOutOfRangeException

Исключения

Exception

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

1218 {
1219 $result = new Result();
1220
1221 if ($custom)
1222 {
1223 $this->markFieldCustom('PRICE');
1224 }
1225 else
1226 {
1227 $this->unmarkFieldCustom('PRICE');
1228 }
1229
1230 $r = $this->setField('PRICE', $value);
1231 if (!$r->isSuccess())
1232 {
1233 $result->addErrors($r->getErrors());
1234 }
1235
1236 return $result;
1237 }

◆ setPropertyCollection()

setPropertyCollection ( BasketPropertiesCollectionBase  $propertyCollection)
inherited

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

1206 {
1207 $this->propertyCollection = $propertyCollection;
1208 }

◆ toArray()

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

ArgumentException

Исключения
Main

SystemException

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

1711 : array
1712 {
1713 $result = parent::toArray();
1714
1715 $result['PROPERTIES'] = $this->getPropertyCollection()->toArray();
1716
1717 return $result;
1718 }

◆ update() [1/2]

static update (   $id,
array  $data 
)
staticinherited

Update entity item. Use instead of DataManager method.

Аргументы
int$id
array$data
Возвращает
ORM\Data\UpdateResult

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

230 {
231 $result = new ORM\Data\UpdateResult();
232
233 $entity = static::getEntity();
234
235 static::normalize($data);
236
237 if (Event::existEventHandlers($entity, ORM\Data\DataManager::EVENT_ON_BEFORE_UPDATE))
238 {
239 $event = new Event(
240 $entity,
241 ORM\Data\DataManager::EVENT_ON_BEFORE_UPDATE,
242 [
243 'id' => $id,
244 'fields' => $data['fields'],
245 'external_fields' => $data['external_fields'],
246 'actions' => $data['actions']
247 ]
248 );
249 $event->send();
250
251 $event->mergeData($data);
252 if ($event->getErrors($result))
253 return $result;
254 }
255
256 static::prepareForUpdate($result, $id, $data);
257 if (!$result->isSuccess())
258 return $result;
259 unset($result);
260
261 if (Event::existEventHandlers($entity, ORM\Data\DataManager::EVENT_ON_UPDATE))
262 {
263 $event = new Event(
264 $entity,
265 ORM\Data\DataManager::EVENT_ON_UPDATE,
266 [
267 'id' => $id,
268 'fields' => $data['fields'],
269 'external_fields' => $data['external_fields'],
270 'actions' => $data['actions']
271 ]
272 );
273 $event->send();
274 unset($event);
275 }
276
277 $result = $entity->getTablet()->update($id, $data['fields']);
278 $success = $result->isSuccess();
279 if ($success)
280 {
281 $data['fields'] = $result->getData();
282 if ($entity->fieldsCount > 0)
283 $entity->modifyEntityCacheItem($id, $data['fields']);
284 }
285
286 if (Event::existEventHandlers($entity, ORM\Data\DataManager::EVENT_ON_AFTER_UPDATE))
287 {
288 $event = new Event(
289 $entity,
290 ORM\Data\DataManager::EVENT_ON_AFTER_UPDATE,
291 [
292 'id' => $id,
293 'fields' => $data['fields'],
294 'external_fields' => $data['external_fields'],
295 'actions' => $data['actions'],
296 'success' => $success
297 ]
298 );
299 $event->send();
300 unset($event);
301 }
302
303 if ($success && !empty($data['actions']))
304 static::runUpdateExternalActions($id, $data);
305
306 unset($success, $entity);
307
308 return $result;
309 }

◆ update() [2/2]

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

ArgumentNullException

Исключения
Main

ArgumentOutOfRangeException

Исключения
Main

ObjectException

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

1453 {
1454 $result = new Result();
1455
1456 $this->setFieldNoDemand('DATE_UPDATE', new Main\Type\DateTime());
1457
1458 $fields = $this->fields->getChangedValues();
1459
1460 if (!empty($fields))
1461 {
1462 $r = $this->updateInternal($this->getId(), $fields);
1463 if (!$r->isSuccess())
1464 {
1465 $result->addErrors($r->getErrors());
1466 return $result;
1467 }
1468
1469 if ($resultData = $r->getData())
1470 {
1471 $result->setData($resultData);
1472 }
1473 }
1474
1475 return $result;
1476 }
updateInternal($primary, array $fields)

◆ updateInternal()

updateInternal (   $primary,
array  $fields 
)
protected
Аргументы
$primary
array$fields
Возвращает
Main\Entity\UpdateResult
Исключения

Exception

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

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

1123 {
1124 return Internals\BasketTable::update($primary, $fields);
1125 }

◆ verify()

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

ArgumentException

Исключения
Main

NotImplementedException

Исключения
Main

ObjectNotFoundException

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

1645 {
1646 $result = new Result();
1647
1648 if ((float)$this->getField('QUANTITY') <= 0)
1649 {
1650 $result->addError(new Main\Error(
1651 Localization\Loc::getMessage(
1652 'SALE_BASKET_ITEM_ERR_QUANTITY_ZERO',
1653 ['#PRODUCT_NAME#' => $this->getField('NAME')]
1654 )
1655 ));
1656 }
1657
1658 if (!$this->getField('CURRENCY'))
1659 {
1660 $result->addError(new Main\Error(
1661 Localization\Loc::getMessage('SALE_BASKET_ITEM_ERR_CURRENCY_EMPTY')
1662 ));
1663 }
1664
1665 if ($basketPropertyCollection = $this->getPropertyCollection())
1666 {
1667 $r = $basketPropertyCollection->verify();
1668 if (!$r->isSuccess())
1669 {
1670 $result->addErrors($r->getErrors());
1671 }
1672 }
1673
1674 return $result;
1675 }
static getMessage($code, $replace=null, $language=null)
Definition: loc.php:29

Поля

◆ $calculatedFields

$calculatedFields
protectedinherited

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

◆ $collection

$collection
protectedinherited

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

◆ $idBasket

$idBasket = 0
staticprotectedinherited

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

◆ $internalId

$internalId = null
protectedinherited

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

◆ $internalIndex

$internalIndex = null
protectedinherited

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

◆ $isClone

$isClone = false
protectedinherited

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

◆ $propertyCollection

BasketPropertiesCollectionBase $propertyCollection
protectedinherited

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

◆ $provider

$provider
protectedinherited

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

◆ $reserveQuantityCollection

ReserveQuantityCollection $reserveQuantityCollection
protected

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

◆ EVENT_ON_BUILD_CACHED_FIELD_LIST

const EVENT_ON_BUILD_CACHED_FIELD_LIST = 'OnBuildCachedFieldList'
inherited

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

◆ FIELDS_ALL

const FIELDS_ALL = self::FIELDS_MAIN|self::FIELDS_UF
inherited

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

◆ FIELDS_MAIN

const FIELDS_MAIN = 0x0001
inherited

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

◆ FIELDS_UF

const FIELDS_UF = 0x0002
inherited

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

◆ PREFIX_OLD

const PREFIX_OLD = 'OLD_'
inherited

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

◆ TYPE_SET

const TYPE_SET = 1

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


Объявления и описания членов класса находятся в файле: