Bitrix-D7  20.0.0
Класс OrderBase
Граф наследования:OrderBase:
Entity Order

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

 getInternalId ()
 Return internal index of order. Подробнее...
 
 isSaveRunning ()
 
 setBasket (BasketBase $basket)
 Append basket to order and refresh it. Подробнее...
 
 appendBasket (BasketBase $basket)
 Append basket to order. Подробнее...
 
 getBasket ()
 Return order basket. Подробнее...
 
 setField ($name, $value)
 Set value with call events on field modify. Подробнее...
 
 setFieldNoDemand ($name, $value)
 
 getField ($name)
 Return field value. Подробнее...
 
 initField ($name, $value)
 
 getPropertyCollection ()
 
 loadPropertyCollection ()
 
 onPropertyValueCollectionModify ($action, PropertyValueBase $property, $name=null, $oldValue=null, $value=null)
 
 refreshData ()
 Full order refresh. Подробнее...
 
 getId ()
 Return order id. Подробнее...
 
 getPersonTypeId ()
 Return person type id of order. Подробнее...
 
 setPersonTypeId ($personTypeId)
 Set person type id of order. Подробнее...
 
 getPrice ()
 Return order price. Подробнее...
 
 getSumPaid ()
 Return paid sum. Подробнее...
 
 getDeliveryPrice ()
 
 getDeliveryLocation ()
 
 getTaxPrice ()
 
 getTaxValue ()
 
 getDiscountPrice ()
 Return discount price. Подробнее...
 
 getCurrency ()
 Return currency. Подробнее...
 
 getUserId ()
 Return user id. Подробнее...
 
 getSiteId ()
 Return site id. Подробнее...
 
 isUsedVat ()
 Return TRUE if VAT is used. Подробнее...
 
 getVatRate ()
 Return order vat rate. Подробнее...
 
 getVatSum ()
 Return order vat sum. Подробнее...
 
 isMarked ()
 Return TRUE if order has problems. Подробнее...
 
 refreshVat ()
 
 isShipped ()
 Return TRUE if order is deducted. Подробнее...
 
 isExternal ()
 Return TRUE if order is external. Подробнее...
 
 save ()
 Save order. Подробнее...
 
 setVatSum ($price)
 Set VAT sum. Подробнее...
 
 setVatDelivery ($price)
 Set VAT delivery sum. Подробнее...
 
 getDateInsert ()
 Return date order insert. Подробнее...
 
 getCalculateType ()
 Return value: OrderBase::SALE_ORDER_CALC_TYPE_REFRESH, OrderBase::SALE_ORDER_CALC_TYPE_CHANGE, OrderBase::SALE_ORDER_CALC_TYPE_NEW. Подробнее...
 
 onBasketModify ($action, BasketItemBase $basketItem, $name=null, $oldValue=null, $value=null)
 Modify basket. Подробнее...
 
 onBeforeBasketRefresh ()
 
 onAfterBasketRefresh ()
 
 getTax ()
 Get the entity of taxes. Подробнее...
 
 isNew ()
 
 resetTax ()
 Reset the value of taxes. Подробнее...
 
 isChanged ()
 Return TRUE if order is changed. Подробнее...
 
 clearChanged ()
 
 isClone ()
 Return TRUE, if this order is cloned. Подробнее...
 
 isPaid ()
 Return TRUE, if order is payed. Подробнее...
 
 isAllowDelivery ()
 Return TRUE, if order is allowed delivery. Подробнее...
 
 isCanceled ()
 Return TRUE, if order is canceled. Подробнее...
 
 getHash ()
 Return order hash. Подробнее...
 
 verify ()
 Verify object to correctness. Подробнее...
 
 getTaxLocation ()
 Return tax location. Подробнее...
 
 isMathActionOnly ()
 Return TRUE if calculations are based on current values. Подробнее...
 
 hasMeaningfulField ()
 
 clearStartField ()
 Reset order flags: \Bitrix\Sale\OrderBase::$isStartField, \Bitrix\Sale\OrderBase::$isMeaningfulField. Подробнее...
 
 isStartField ($isMeaningfulField=false)
 
 setMathActionOnly ($value=false)
 
 isAllowPay ()
 
 getDiscount ()
 Return discount object. Подробнее...
 
 doFinalAction ($hasMeaningfulField=false)
 
 applyDiscount (array $data)
 Apply the result of the discounts to the order. Подробнее...
 
 resetData ($select=array('PRICE'))
 Reset the value of the order and delivery. Подробнее...
 
 createClone ()
 Create order clone. Подробнее...
 
- Открытые члены унаследованные от Entity
 initializeField ($fieldName, $fieldInfo)
 Fields factory. Подробнее...
 
 initialize ($className)
 
 postInitialize ()
 
 getObjectClass ()
 Returns class of Object for current entity. Подробнее...
 
 getObjectClassName ()
 Returns class name of Object for current entity. Подробнее...
 
 getCollectionClass ()
 
 getCollectionClassName ()
 
 createObject ($setDefaultValues=true)
 
 createCollection ()
 
 wakeUpObject ($row)
 
 wakeUpCollection ($rows)
 
 addField ($fieldInfo, $fieldName=null)
 
 getReferencesCountTo ($refEntityName)
 
 getReferencesTo ($refEntityName)
 
 getFields ()
 
 hasField ($name)
 
 getScalarFields ()
 
 getUField ($name)
 
 hasUField ($name)
 
 getName ()
 
 getFullName ()
 
 getNamespace ()
 
 getModule ()
 
 getDataClass ()
 
 getConnection ()
 
 getDBTableName ()
 
 getPrimary ()
 
 getPrimaryArray ()
 
 getAutoIncrement ()
 
 isUts ()
 
 isUtm ()
 
 setDefaultScope ($query)
 
 getCode ()
 
 getLangCode ()
 
 getTitle ()
 
 __clone ()
 
 compileDbTableStructureDump ()
 
 createDbTable ()
 Creates table according to Fields collection. Подробнее...
 
 readFromCache ($ttl, $cacheId, $countTotal=false)
 Reads data from cache. Подробнее...
 
 writeToCache (Main\DB\Result $result, $cacheId, $countTotal=false)
 
 getCacheTtl ($ttl)
 Returns cache TTL for the entity, possibly limited by the .settings.php: 'cache_flags' => array('value'=> array( "b_group_max_ttl" => 200, "b_group_min_ttl" => 100, )) Maximum is a higher-priority. Подробнее...
 
 cleanCache ()
 Cleans all cache entries for the entity. Подробнее...
 
 enableFullTextIndex ($field, $mode=true)
 Sets a flag indicating full text index support for a field. Подробнее...
 
 fullTextIndexEnabled ($field)
 Returns true if full text index is enabled for a field. Подробнее...
 

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

static getAvailableFields ()
 Return field names that can set in \Bitrix\Sale\OrderBase::setField. Подробнее...
 
static getRegistryEntity ()
 
static create ($siteId, $userId=null, $currency=null)
 Create \Bitrix\Sale\OrderBase object. Подробнее...
 
static load ($id)
 Load order object by id. Подробнее...
 
static loadByFilter (array $parameters)
 Return object order list satisfying filter. Подробнее...
 
static loadByAccountNumber ($value)
 Load object order by account number. Подробнее...
 
static getList (array $parameters=array())
 Get order information. Подробнее...
 
static deleteNoDemand ($id)
 
static delete ($id)
 Delete order. Подробнее...
 
static getUfId ()
 Return user field id. Подробнее...
 
static getSettableFields ()
 
static getEntityEventName ()
 
- Открытые статические члены унаследованные от Entity
static get ($entityName)
 Returns entity object. Подробнее...
 
static has ($entityName)
 Checks if entity exists. Подробнее...
 
static getInstance ($entityName)
 
static getDefaultObjectClassName ($entityName)
 
static getDefaultCollectionClassName ($entityName)
 
static normalizeEntityClass ($entityName)
 
static getEntityClassParts ($class)
 
static camel2snake ($str)
 
static snake2camel ($str)
 
static normalizeName ($entityName)
 
static getInstanceByQuery (Query $query, &$entity_name=null)
 
static compileEntity ($entityName, $fields=null, $parameters=array())
 
static compileObjectClass ($dataClass)
 
static compileCollectionClass ($dataClass)
 
static destroy ($entity)
 

Поля данных

const SALE_ORDER_CALC_TYPE_NEW = 'N'
 
const SALE_ORDER_CALC_TYPE_CHANGE = 'C'
 
const SALE_ORDER_CALC_TYPE_REFRESH = 'R'
 
- Поля данных унаследованные от Entity
 $name
 
 $connectionName
 
 $dbTableName
 
 $primary
 
 $autoIncrement
 
 $isUts
 
 $isUtm
 
const DEFAULT_OBJECT_PREFIX = 'EO_'
 

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

 __construct (array $fields=array())
 OrderBase constructor. Подробнее...
 
 loadBasket ()
 Load basket appended to order. Подробнее...
 
 checkValueBeforeSet ($name, $value)
 
 refreshInternal ()
 
 resetVat ()
 Clear VAT info. Подробнее...
 
 calculateVat ()
 Calculate VAT. Подробнее...
 
 isCalculatedField ($field)
 
 onAfterSave ()
 
 callDelayedEvents ()
 
 completeSaving ($needUpdateDateInsert)
 
 add ()
 
 update ()
 
 callEventOnSaleOrderEntitySaved ()
 
 callEventOnSaleOrderSaved ()
 
 callEventOnBeforeOrderSaved ()
 
 saveEntities ()
 
 setAccountNumber ()
 Set account number. Подробнее...
 
 onFieldModify ($name, $oldValue, $value)
 
 onOrderModify ($name, $oldValue, $value)
 
 loadTax ()
 
 loadDiscount ()
 
 calculatePrice ()
 
 onBeforeSave ()
 
 setReasonMarked ($value)
 
 isStatusChangedOnPay ($value, $oldValue)
 
 cloneEntities (\SplObjectStorage $cloneEntity)
 
 addInternal (array $data)
 
- Защищенные члены унаследованные от Entity
 appendField (Field $field)
 
 getCacheDir ()
 

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

static getCalculatedFields ()
 Return virtual field names. Подробнее...
 
static getMeaningfulFields ()
 
static generateXmlId ()
 
static loadFromDb (array $parameters)
 
static getInitialStatus ()
 
static getFinalStatus ()
 
static deleteEntities (OrderBase $order)
 
static isExists ($id)
 
static deleteExternalEntities ($orderId)
 
static deleteEntitiesNoDemand ($orderId)
 
static updateInternal ($primary, array $data)
 
static deleteInternal ($primary)
 
- Защищенные статические члены унаследованные от Entity
static getInstanceDirect ($className)
 

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

 $calculatedFields = null
 
 $basketCollection
 
 $propertyCollection
 
 $discount = null
 
 $tax = null
 
 $internalId = 0
 
 $isNew = true
 
 $isSaveExecuting = false
 
 $isClone = false
 
 $isOnlyMathAction = null
 
 $isMeaningfulField = false
 
 $isStartField = null
 
 $calculateType = null
 
- Защищенные данные унаследованные от Entity
 $className
 
 $module
 
 $uf_id
 
 $fields
 
 $fieldsMap
 
 $u_fields
 
 $code
 
 $references
 
 $isClone = false
 

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

- Статические защищенные данные унаследованные от Entity
static $instances
 

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

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

Конструктор(ы)

◆ __construct()

__construct ( array  $fields = array())
protected

OrderBase constructor.

Аргументы
array$fields
Исключения
Main

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

74  {
75  $priceFields = ['PRICE', 'PRICE_DELIVERY', 'SUM_PAID', 'PRICE_PAYMENT', 'DISCOUNT_VALUE'];
76 
77  foreach ($priceFields as $code)
78  {
79  if (isset($fields[$code]))
80  {
82  }
83  }
84 
86  $this->isNew = (empty($fields['ID']));
87  }

Методы

◆ add()

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

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

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

1244  {
1245  global $USER;
1246 
1247  $result = new Result();
1248 
1249  $currentDateTime = new Type\DateTime();
1250 
1251  if (!$this->getField('DATE_UPDATE'))
1252  {
1253  $this->setField('DATE_UPDATE', $currentDateTime);
1254  }
1255 
1256  if (!$this->getField('DATE_INSERT'))
1257  {
1258  $this->setField('DATE_INSERT', $currentDateTime);
1259  }
1260 
1261  $fields = $this->fields->getValues();
1262 
1263  if (is_object($USER) && $USER->isAuthorized())
1264  {
1265  $fields['CREATED_BY'] = $USER->getID();
1266  $this->setFieldNoDemand('CREATED_BY', $fields['CREATED_BY']);
1267  }
1268 
1269  if (array_key_exists('REASON_MARKED', $fields) && strlen($fields['REASON_MARKED']) > 255)
1270  {
1271  $fields['REASON_MARKED'] = substr($fields['REASON_MARKED'], 0, 255);
1272  }
1273 
1274  $fields['RUNNING'] = 'Y';
1275 
1276  $r = $this->addInternal($fields);
1277  if (!$r->isSuccess())
1278  {
1279  return $result->addErrors($r->getErrors());
1280  }
1281 
1282  if ($resultData = $r->getData())
1283  {
1284  $result->setData($resultData);
1285  }
1286 
1287  $id = $r->getId();
1288  $this->setFieldNoDemand('ID', $id);
1289  $result->setId($id);
1290 
1291  $this->setAccountNumber();
1292 
1293  return $result;
1294  }

◆ addInternal()

addInternal ( array  $data)
abstractprotected
Аргументы
array$data
Исключения
Main

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

◆ appendBasket()

appendBasket ( BasketBase  $basket)

Append basket to order.

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

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

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

405  {
406  if ($this->getId())
407  {
408  throw new Main\NotSupportedException();
409  }
410 
411  $basket->setOrder($this);
412  $this->basketCollection = $basket;
413 
414  return new Result();
415  }

◆ applyDiscount()

applyDiscount ( array  $data)

Apply the result of the discounts to the order.

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

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

2590  {
2591  if (!empty($data['BASKET_ITEMS']) && is_array($data['BASKET_ITEMS']))
2592  {
2593  /** @var BasketBase $basket */
2594  $basket = $this->getBasket();
2595  $basketResult = $basket->applyDiscount($data['BASKET_ITEMS']);
2596  if (!$basketResult->isSuccess())
2597  return $basketResult;
2598  unset($basketResult, $basket);
2599 
2600  $this->refreshOrderPrice();
2601  }
2602 
2603  return new Result();
2604  }

◆ calculatePrice()

calculatePrice ( )
protected
Возвращает
float

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

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

2396  {
2397  $basket = $this->getBasket();
2398  $taxPrice = !$this->isUsedVat() ? $this->getField('TAX_PRICE') : 0;
2399 
2400  return $basket->getPrice() + $taxPrice;
2401  }

◆ calculateVat()

calculateVat ( )
protected

Calculate VAT.

Возвращает
array

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

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

934  {
935  $result = array();
936 
937  $basket = $this->getBasket();
938  if ($basket)
939  {
940  $result['VAT_RATE'] = $basket->getVatRate();
941  $result['VAT_SUM'] = $basket->getVatSum();
942  }
943 
944  return $result;
945  }

◆ callDelayedEvents()

callDelayedEvents ( )
protected
Исключения
Main

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

1173  {
1174  $registry = Registry::getInstance(static::getRegistryType());
1175  $notifyClassName = $registry->getNotifyClassName();
1176 
1177  $eventList = Internals\EventsPool::getEvents($this->getInternalId());
1178  if ($eventList)
1179  {
1180  foreach ($eventList as $eventName => $eventData)
1181  {
1182  $event = new Main\Event('sale', $eventName, $eventData);
1183  $event->send();
1184 
1185  $notifyClassName::callNotify($this, $eventName);
1186  }
1187 
1189  }
1190 
1191  $notifyClassName::callNotify($this, EventActions::EVENT_ON_ORDER_SAVED);
1192  }

◆ callEventOnBeforeOrderSaved()

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

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

1382  {
1383  $result = new Result();
1384 
1385  /** @var array $oldEntityValues */
1386  $oldEntityValues = $this->fields->getOriginalValues();
1387 
1388  $eventManager = Main\EventManager::getInstance();
1389  if ($eventsList = $eventManager->findEventHandlers('sale', EventActions::EVENT_ON_ORDER_BEFORE_SAVED))
1390  {
1391  /** @var Main\Entity\Event $event */
1392  $event = new Main\Event('sale', EventActions::EVENT_ON_ORDER_BEFORE_SAVED, array(
1393  'ENTITY' => $this,
1394  'VALUES' => $oldEntityValues
1395  ));
1396  $event->send();
1397 
1398  if ($event->getResults())
1399  {
1400  /** @var Main\EventResult $eventResult */
1401  foreach($event->getResults() as $eventResult)
1402  {
1403  if($eventResult->getType() == Main\EventResult::ERROR)
1404  {
1405  $errorMsg = new ResultError(Main\Localization\Loc::getMessage('SALE_EVENT_ON_BEFORE_ORDER_SAVED_ERROR'), 'SALE_EVENT_ON_BEFORE_ORDER_SAVED_ERROR');
1406  if ($eventResultData = $eventResult->getParameters())
1407  {
1408  if (isset($eventResultData) && $eventResultData instanceof ResultError)
1409  {
1410  /** @var ResultError $errorMsg */
1411  $errorMsg = $eventResultData;
1412  }
1413  }
1414 
1415  $result->addError($errorMsg);
1416  }
1417  }
1418  }
1419  }
1420 
1421  return $result;
1422  }

◆ callEventOnSaleOrderEntitySaved()

callEventOnSaleOrderEntitySaved ( )
protected
Возвращает
void

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

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

1342  {
1343  $oldEntityValues = $this->fields->getOriginalValues();
1344 
1345  if (!empty($oldEntityValues))
1346  {
1347  $eventManager = Main\EventManager::getInstance();
1348  if ($eventsList = $eventManager->findEventHandlers('sale', 'OnSaleOrderEntitySaved'))
1349  {
1350  /** @var Main\Event $event */
1351  $event = new Main\Event('sale', 'OnSaleOrderEntitySaved', array(
1352  'ENTITY' => $this,
1353  'VALUES' => $oldEntityValues,
1354  ));
1355  $event->send();
1356  }
1357  }
1358  }

◆ callEventOnSaleOrderSaved()

callEventOnSaleOrderSaved ( )
protected
Возвращает
void

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

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

1364  {
1365  $eventManager = Main\EventManager::getInstance();
1366  if ($eventsList = $eventManager->findEventHandlers('sale', EventActions::EVENT_ON_ORDER_SAVED))
1367  {
1368  $event = new Main\Event('sale', EventActions::EVENT_ON_ORDER_SAVED, array(
1369  'ENTITY' => $this,
1370  'IS_NEW' => $this->isNew,
1371  'IS_CHANGED' => $this->isChanged(),
1372  'VALUES' => $this->fields->getOriginalValues(),
1373  ));
1374  $event->send();
1375  }
1376  }

◆ checkValueBeforeSet()

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

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

493  {
494  $result = parent::checkValueBeforeSet($name, $value);
495 
496  if ($name === 'ACCOUNT_NUMBER')
497  {
498  $dbRes = static::getList([
499  'select' => ['ID'],
500  'filter' => ['=ACCOUNT_NUMBER' => $value]
501  ]);
502 
503  if ($dbRes->fetch())
504  {
505  $result->addError(
506  new ResultError(
507  Loc::getMessage('SALE_ORDER_ACCOUNT_NUMBER_EXISTS')
508  )
509  );
510  }
511  }
512 
513  return $result;
514  }

◆ clearChanged()

clearChanged ( )

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

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

1893  {
1894  parent::clearChanged();
1895 
1896  if ($basket = $this->getBasket())
1897  {
1898  $basket->clearChanged();
1899  }
1900 
1901  if ($property = $this->getPropertyCollection())
1902  {
1903  $property->clearChanged();
1904  }
1905 
1906  }

◆ clearStartField()

clearStartField ( )

Reset order flags: \Bitrix\Sale\OrderBase::$isStartField, \Bitrix\Sale\OrderBase::$isMeaningfulField.

Возвращает
void

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

2068  {
2069  $this->isStartField = null;
2070  $this->isMeaningfulField = false;
2071  }

◆ cloneEntities()

cloneEntities ( \SplObjectStorage  $cloneEntity)
protected
Аргументы
\SplObjectStorage$cloneEntity
Исключения
Main

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

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

2734  {
2735  if (!$cloneEntity->contains($this))
2736  {
2737  throw new Main\SystemException();
2738  }
2739 
2740  $orderClone = $cloneEntity[$this];
2741 
2742  /** @var BasketBase $basket */
2743  if ($basket = $this->getBasket())
2744  {
2745  $orderClone->basketCollection = $basket->createClone($cloneEntity);
2746  }
2747 
2748  /** @var PropertyValueCollectionBase $propertyCollection */
2750  {
2751  $orderClone->propertyCollection = $propertyCollection->createClone($cloneEntity);
2752  }
2753 
2754  if ($tax = $this->getTax())
2755  {
2756  $orderClone->tax = $tax->createClone($cloneEntity);
2757  }
2758 
2759  if ($discount = $this->getDiscount())
2760  {
2761  $orderClone->discount = $discount->createClone($cloneEntity);
2762  }
2763  }

◆ completeSaving()

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

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

1202  {
1203  $result = new Result();
1204 
1205  $currentDateTime = new Type\DateTime();
1206  $updateFields = array('RUNNING' => 'N');
1207 
1208  $changedFields = $this->fields->getChangedValues();
1209  if ($this->isNew
1210  || (
1211  $this->isChanged()
1212  && !array_key_exists('DATE_UPDATE', $changedFields)
1213  )
1214  )
1215  {
1216  $updateFields['DATE_UPDATE'] = $currentDateTime;
1217  }
1218 
1219  if ($needUpdateDateInsert)
1220  {
1221  $updateFields['DATE_INSERT'] = $currentDateTime;
1222  }
1223 
1224  $this->setFieldsNoDemand($updateFields);
1225  $r = static::updateInternal($this->getId(), $updateFields);
1226  if (!$r->isSuccess())
1227  {
1228  $result->addErrors($r->getErrors());
1229  }
1230 
1231  return $result;
1232  }

◆ create()

static create (   $siteId,
  $userId = null,
  $currency = null 
)
static

Create \Bitrix\Sale\OrderBase object.

Аргументы
$siteId
null$userId
null$currency
Возвращает
Order
Исключения
Main

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

204  {
205  $fields = [
206  'CANCELED' => 'N',
207  'DEDUCTED' => 'N',
208  'ALLOW_DELIVERY' => 'N',
209  'PAYED' => 'N',
210  ];
211 
212  $order = static::createOrderObject($fields);
213  $order->setFieldNoDemand('LID', $siteId);
214  if (intval($userId) > 0)
215  {
216  $order->setFieldNoDemand('USER_ID', $userId);
217  }
218 
219  if ($currency == null)
220  {
222  }
223 
224  if ($currency == null)
225  {
227  }
228 
229  $order->setFieldNoDemand('CURRENCY', $currency);
230  $order->setField('STATUS_ID', static::getInitialStatus());
231  $order->setFieldNoDemand('XML_ID', static::generateXmlId());
232 
233  $order->calculateType = static::SALE_ORDER_CALC_TYPE_NEW;
234 
235  return $order;
236  }

◆ createClone()

createClone ( )

Create order clone.

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

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

2698  {
2699  $cloneEntity = new \SplObjectStorage();
2700 
2701  /** @var OrderBase $orderClone */
2702  $orderClone = clone $this;
2703  $orderClone->isClone = true;
2704 
2705  /** @var Internals\Fields $fields */
2706  if ($fields = $this->fields)
2707  {
2708  $orderClone->fields = $fields->createClone($cloneEntity);
2709  }
2710 
2711  /** @var Internals\Fields $calculatedFields */
2712  if ($calculatedFields = $this->calculatedFields)
2713  {
2714  $orderClone->calculatedFields = $calculatedFields->createClone($cloneEntity);
2715  }
2716 
2717  if (!$cloneEntity->contains($this))
2718  {
2719  $cloneEntity[$this] = $orderClone;
2720  }
2721 
2722  $this->cloneEntities($cloneEntity);
2723 
2724  return $orderClone;
2725  }

◆ delete()

static delete (   $id)
static

Delete order.

Аргументы
int$idOrder id.
Возвращает
Result
Исключения
Main

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

2152  {
2153  $result = new Result();
2154 
2155  $registry = Registry::getInstance(static::getRegistryType());
2156  /** @var OrderBase $orderClassName */
2157  $orderClassName = $registry->getOrderClassName();
2158 
2159  if (!$order = $orderClassName::load($id))
2160  {
2161  $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_ENTITY_NOT_FOUND'), 'SALE_ORDER_ENTITY_NOT_FOUND'));
2162  return $result;
2163  }
2164 
2165  /** @var Notify $notifyClassName */
2166  $notifyClassName = $registry->getNotifyClassName();
2167  $notifyClassName::setNotifyDisable(true);
2168 
2169  /** @var Result $r */
2170  $r = $order->setField('CANCELED', 'Y');
2171  if (!$r->isSuccess())
2172  {
2173  $result->addErrors($r->getErrors());
2174  return $result;
2175  }
2176 
2177  $r = $order->save();
2178  if (!$r->isSuccess())
2179  {
2180  $result->addErrors($r->getErrors());
2181  return $result;
2182  }
2183 
2184  static::deleteEntities($order);
2185 
2186  $event = new Main\Event(
2187  'sale',
2189  array('ENTITY' => $order)
2190  );
2191  $event->send();
2192 
2193  foreach ($event->getResults() as $eventResult)
2194  {
2195  $return = null;
2196  if ($eventResult->getType() == Main\EventResult::ERROR)
2197  {
2198  if ($eventResultData = $eventResult->getParameters())
2199  {
2200  if (isset($eventResultData) && $eventResultData instanceof ResultError)
2201  {
2202  /** @var ResultError $errorMsg */
2203  $errorMsg = $eventResultData;
2204  }
2205  }
2206 
2207  if (!isset($errorMsg))
2208  $errorMsg = new ResultError('EVENT_ORDER_DELETE_ERROR');
2209 
2210  $result->addError($errorMsg);
2211  return $result;
2212  }
2213  }
2214 
2215  /** @var Result $r */
2216  $r = $order->save();
2217  if ($r->isSuccess())
2218  {
2219  /** @var Main\Entity\DeleteResult $r */
2220  $r = static::deleteInternal($id);
2221  if ($r->isSuccess())
2222  static::deleteExternalEntities($id);
2223  }
2224  else
2225  {
2226  $result->addErrors($r->getErrors());
2227  }
2228 
2229  $notifyClassName::setNotifyDisable(false);
2230 
2231  $event = new Main\Event(
2232  'sale',
2234  array('ENTITY' => $order, 'VALUE' => $r->isSuccess())
2235  );
2236  $event->send();
2237 
2238  $result->addData(array('ORDER' => $order));
2239 
2240  return $result;
2241  }

◆ deleteEntities()

static deleteEntities ( OrderBase  $order)
staticprotected
Аргументы
OrderBase$order
Возвращает
void

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

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

2248  {
2249  /** @var BasketBase $basketCollection */
2250  if ($basketCollection = $order->getBasket())
2251  {
2252  /** @var BasketItemBase $basketItem */
2253  foreach ($basketCollection as $basketItem)
2254  {
2255  $basketItem->delete();
2256  }
2257  }
2258 
2259  /** @var PropertyValueCollectionBase $propertyCollection */
2260  if ($propertyCollection = $order->getPropertyCollection())
2261  {
2262  /** @var PropertyValue $property */
2263  foreach ($propertyCollection as $property)
2264  {
2265  $property->delete();
2266  }
2267  }
2268  }

◆ deleteEntitiesNoDemand()

static deleteEntitiesNoDemand (   $orderId)
staticprotected
Аргументы
$orderId
Возвращает
Result

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

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

2315  {
2316  $registry = Registry::getInstance(static::getRegistryType());
2317 
2318  /** @var BasketBase $basketClassName */
2319  $basketClassName = $registry->getBasketClassName();
2320  $r = $basketClassName::deleteNoDemand($orderId);
2321  if (!$r->isSuccess())
2322  {
2323  return $r;
2324  }
2325 
2326  /** @var PropertyValueCollectionBase $propertyValueCollectionClassName */
2327  $propertyValueCollectionClassName = $registry->getPropertyValueCollectionClassName();
2328  $r = $propertyValueCollectionClassName::deleteNoDemand($orderId);
2329  if (!$r->isSuccess())
2330  {
2331  return $r;
2332  }
2333 
2334  /** @var OrderDiscountBase $orderDiscountClassName */
2335  $orderDiscountClassName = $registry->getOrderDiscountClassName();
2336  $orderDiscountClassName::deleteByOrder($orderId);
2337 
2338  return new Result();
2339  }

◆ deleteExternalEntities()

static deleteExternalEntities (   $orderId)
staticprotected
Аргументы
$orderId

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

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

2306  {
2307  return;
2308  }

◆ deleteInternal()

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

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

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

2789  {
2790  throw new Main\NotImplementedException();
2791  }

◆ deleteNoDemand()

static deleteNoDemand (   $id)
static

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

2118  {
2119  $result = new Result();
2120 
2121  if (!static::isExists($id))
2122  {
2123  $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_ENTITY_NOT_FOUND'), 'SALE_ORDER_ENTITY_NOT_FOUND'));
2124  return $result;
2125  }
2126 
2127  /** @var Result $deleteResult */
2128  $deleteResult = static::deleteEntitiesNoDemand($id);
2129  if (!$deleteResult->isSuccess())
2130  {
2131  $result->addErrors($deleteResult->getErrors());
2132  return $result;
2133  }
2134 
2135  $r = static::deleteInternal($id);
2136  if (!$r->isSuccess())
2137  $result->addErrors($r->getErrors());
2138 
2139  static::deleteExternalEntities($id);
2140 
2141  return $result;
2142  }

◆ doFinalAction()

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

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

2418  {
2419  $result = new Result();
2420 
2421  $orderInternalId = $this->getInternalId();
2422 
2423  $r = Internals\ActionEntity::runActions($orderInternalId);
2424  if (!$r->isSuccess())
2425  {
2426  $result->addErrors($r->getErrors());
2427  }
2428 
2429  if (!$hasMeaningfulField)
2430  {
2431  $this->clearStartField();
2432  return $result;
2433  }
2434 
2435 
2436  if ($r->hasWarnings())
2437  {
2438  $result->addWarnings($r->getWarnings());
2439  }
2440 
2441  $currentIsMathActionOnly = $this->isMathActionOnly();
2442 
2443  $basket = $this->getBasket();
2444  if ($basket)
2445  {
2446  $this->setMathActionOnly(true);
2447 
2448  $eventManager = Main\EventManager::getInstance();
2449  $eventsList = $eventManager->findEventHandlers('sale', 'OnBeforeSaleOrderFinalAction');
2450  if (!empty($eventsList))
2451  {
2452  $event = new Main\Event('sale', 'OnBeforeSaleOrderFinalAction', array(
2453  'ENTITY' => $this,
2454  'HAS_MEANINGFUL_FIELD' => $hasMeaningfulField,
2455  'BASKET' => $basket,
2456  ));
2457  $event->send();
2458 
2459  if ($event->getResults())
2460  {
2461  /** @var Main\EventResult $eventResult */
2462  foreach($event->getResults() as $eventResult)
2463  {
2464  if($eventResult->getType() == Main\EventResult::ERROR)
2465  {
2466  $errorMsg = new ResultError(
2467  Main\Localization\Loc::getMessage(
2468  'SALE_EVENT_ON_BEFORE_SALEORDER_FINAL_ACTION_ERROR'
2469  ),
2470  'SALE_EVENT_ON_BEFORE_SALEORDER_FINAL_ACTION_ERROR'
2471  );
2472 
2473  $eventResultData = $eventResult->getParameters();
2474  if ($eventResultData)
2475  {
2476  if (isset($eventResultData) && $eventResultData instanceof ResultError)
2477  {
2478  /** @var ResultError $errorMsg */
2479  $errorMsg = $eventResultData;
2480  }
2481  }
2482 
2483  $result->addError($errorMsg);
2484  }
2485  }
2486  }
2487  }
2488 
2489  if (!$result->isSuccess())
2490  {
2491  return $result;
2492  }
2493 
2494  // discount
2495  $discount = $this->getDiscount();
2496  $r = $discount->calculate();
2497  if (!$r->isSuccess())
2498  {
2499 // $this->clearStartField();
2500 // $result->addErrors($r->getErrors());
2501 // return $result;
2502  }
2503 
2504  if ($r->isSuccess() && ($discountData = $r->getData()) && !empty($discountData) && is_array($discountData))
2505  {
2506  /** @var Result $r */
2507  $r = $this->applyDiscount($discountData);
2508  if (!$r->isSuccess())
2509  {
2510  $result->addErrors($r->getErrors());
2511  return $result;
2512  }
2513  }
2514 
2515  /** @var Tax $tax */
2516  $tax = $this->getTax();
2517  /** @var Result $r */
2518  $r = $tax->refreshData();
2519  if (!$r->isSuccess())
2520  {
2521  $result->addErrors($r->getErrors());
2522  return $result;
2523  }
2524 
2525  $taxResult = $r->getData();
2526 
2527  $taxChanged = false;
2528  if (isset($taxResult['TAX_PRICE']) && floatval($taxResult['TAX_PRICE']) >= 0)
2529  {
2530  if (!$this->isUsedVat())
2531  {
2532  $taxChanged = $this->getField('TAX_PRICE') !== $taxResult['TAX_PRICE'];
2533  if ($taxChanged)
2534  {
2535  $this->setField('TAX_PRICE', $taxResult['TAX_PRICE']);
2536  $this->refreshOrderPrice();
2537  }
2538  }
2539 
2540  }
2541 
2542  if (array_key_exists('VAT_SUM', $taxResult))
2543  {
2544  if ($this->isUsedVat())
2545  {
2546  $this->setField('VAT_SUM', $taxResult['VAT_SUM']);
2547  }
2548  }
2549 
2550  if ($taxChanged || $this->isUsedVat())
2551  {
2552  $taxValue = $this->isUsedVat()? $this->getVatSum() : $this->getField('TAX_PRICE');
2553  if (floatval($taxValue) != floatval($this->getField('TAX_VALUE')))
2554  {
2555  $this->setField('TAX_VALUE', floatval($taxValue));
2556  }
2557  }
2558 
2559  }
2560 
2561  if (!$currentIsMathActionOnly)
2562  $this->setMathActionOnly(false);
2563 
2564  $this->clearStartField();
2565 
2566  $eventManager = Main\EventManager::getInstance();
2567  if ($eventsList = $eventManager->findEventHandlers('sale', 'OnAfterSaleOrderFinalAction'))
2568  {
2569  $event = new Main\Event(
2570  'sale',
2571  'OnAfterSaleOrderFinalAction',
2572  array('ENTITY' => $this)
2573  );
2574  $event->send();
2575  }
2576 
2577  return $result;
2578  }

◆ generateXmlId()

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

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

242  {
243  return uniqid('bx_');
244  }

◆ getAvailableFields()

static getAvailableFields ( )
static

Return field names that can set in \Bitrix\Sale\OrderBase::setField.

Возвращает
array

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

112  {
113  $result = array(
114  "LID", "PERSON_TYPE_ID", "CANCELED", "DATE_CANCELED",
115  "EMP_CANCELED_ID", "REASON_CANCELED", "STATUS_ID", "DATE_STATUS", "EMP_STATUS_ID", "DEDUCTED",
116  "MARKED", "DATE_MARKED", "EMP_MARKED_ID", "REASON_MARKED",
117  "PRICE", "CURRENCY", "DISCOUNT_VALUE", "USER_ID",
118  "DATE_INSERT", "DATE_UPDATE", "USER_DESCRIPTION", "ADDITIONAL_INFO", "COMMENTS", "TAX_VALUE",
119  "STAT_GID", "RECURRING_ID", "LOCKED_BY", "IS_RECURRING",
120  "DATE_LOCK", "RECOUNT_FLAG", "AFFILIATE_ID", "DELIVERY_DOC_NUM", "DELIVERY_DOC_DATE", "UPDATED_1C",
121  "STORE_ID", "ORDER_TOPIC", "RESPONSIBLE_ID", "DATE_BILL", "DATE_PAY_BEFORE", "ACCOUNT_NUMBER",
122  "XML_ID", "ID_1C", "VERSION_1C", "VERSION", "EXTERNAL_ORDER", "COMPANY_ID",
123  );
124 
125  return array_merge($result, static::getCalculatedFields());
126  }

◆ getBasket()

getBasket ( )

Return order basket.

Возвращает
BasketBase

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

423  {
424  if (!isset($this->basketCollection) || empty($this->basketCollection))
425  {
426  $this->basketCollection = $this->loadBasket();
427  }
428 
430  }

◆ getCalculatedFields()

static getCalculatedFields ( )
staticprotected

Return virtual field names.

Возвращает
array

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

134  {
135  return array(
136  'PRICE_WITHOUT_DISCOUNT',
137  'ORDER_WEIGHT',
138  'DISCOUNT_PRICE',
139  'BASE_PRICE_DELIVERY',
140 
141  'DELIVERY_LOCATION',
142  'DELIVERY_LOCATION_ZIP',
143  'TAX_LOCATION',
144  'TAX_PRICE',
145 
146  'VAT_RATE',
147  'VAT_VALUE',
148  'VAT_SUM',
149  'VAT_DELIVERY',
150  'USE_VAT',
151  );
152  }

◆ getCalculateType()

getCalculateType ( )

Return value: OrderBase::SALE_ORDER_CALC_TYPE_REFRESH, OrderBase::SALE_ORDER_CALC_TYPE_CHANGE, OrderBase::SALE_ORDER_CALC_TYPE_NEW.

Возвращает
null|string

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

1527  {
1528  return $this->calculateType;
1529  }

◆ getCurrency()

getCurrency ( )

Return currency.

Возвращает
string

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

816  {
817  return $this->getField('CURRENCY');
818  }

◆ getDateInsert()

getDateInsert ( )

Return date order insert.

Возвращает
mixed

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

1517  {
1518  return $this->getField('DATE_INSERT');
1519  }

◆ getDeliveryLocation()

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

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

780  {
781  return $this->getField('DELIVERY_LOCATION');
782  }

◆ getDeliveryPrice()

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

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

772  {
773  return floatval($this->getField('PRICE_DELIVERY'));
774  }

◆ getDiscount()

getDiscount ( )

Return discount object.

Возвращает
Discount

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

2347  {
2348  if ($this->discount === null)
2349  {
2350  $this->discount = $this->loadDiscount();
2351  }
2352 
2353  return $this->discount;
2354  }

◆ getDiscountPrice()

getDiscountPrice ( )

Return discount price.

Возвращает
float

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

806  {
807  return floatval($this->getField('DISCOUNT_PRICE'));
808  }

◆ getEntityEventName()

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

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

2819  {
2820  return 'SaleOrder';
2821  }

◆ getField()

getField (   $name)

Return field value.

Аргументы
$name
Возвращает
null|string

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

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

569  {
570  if ($this->isCalculatedField($name))
571  {
572  return $this->calculatedFields->get($name);
573  }
574 
575  return parent::getField($name);
576  }

◆ getFinalStatus()

static getFinalStatus ( )
staticprotected
Возвращает
mixed
Исключения
Main

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

1033  {
1034  $registry = Registry::getInstance(static::getRegistryType());
1035 
1036  /** @var OrderStatus $orderStatus */
1037  $orderStatus = $registry->getOrderStatusClassName();
1038  return $orderStatus::getFinalStatus();
1039  }

◆ getHash()

getHash ( )

Return order hash.

Возвращает
mixed

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

1954  {
1955  /** @var Main\Type\DateTime $dateInsert */
1956  $dateInsert = $this->getDateInsert()->setTimeZone(new \DateTimeZone("Europe/Moscow"));
1957  $timestamp = $dateInsert->getTimestamp();
1958  return md5(
1959  $this->getId().
1960  $timestamp.
1961  $this->getUserId().
1962  $this->getField('ACCOUNT_NUMBER')
1963  );
1964  }

◆ getId()

getId ( )

Return order id.

Возвращает
int

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

722  {
723  return (int)$this->getField('ID');
724  }

◆ getInitialStatus()

static getInitialStatus ( )
staticprotected
Возвращает
mixed
Исключения
Main

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

1019  {
1020  $registry = Registry::getInstance(static::getRegistryType());
1021 
1022  /** @var OrderStatus $orderStatus */
1023  $orderStatus = $registry->getOrderStatusClassName();
1024  return $orderStatus::getInitialStatus();
1025  }

◆ getInternalId()

getInternalId ( )

Return internal index of order.

Возвращает
int

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

95  {
96  static $idPool = 0;
97  if ($this->internalId == 0)
98  {
99  $idPool++;
100  $this->internalId = $idPool;
101  }
102 
103  return $this->internalId;
104  }

◆ getList()

static getList ( array  $parameters = array())
static

Get order information.

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

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

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

2018  {
2019  throw new Main\NotImplementedException();
2020  }

◆ getMeaningfulFields()

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

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

166  {
167  return array('PERSON_TYPE_ID', 'PRICE');
168  }

◆ getPersonTypeId()

getPersonTypeId ( )

Return person type id of order.

Возвращает
int

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

732  {
733  return $this->getField('PERSON_TYPE_ID');
734  }

◆ getPrice()

getPrice ( )

Return order price.

Возвращает
float

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

754  {
755  return floatval($this->getField('PRICE'));
756  }

◆ getPropertyCollection()

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

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

611  {
612  if(empty($this->propertyCollection))
613  {
614  $this->propertyCollection = $this->loadPropertyCollection();
615  }
616 
618  }

◆ getRegistryEntity()

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

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

188  {
189  return Registry::ENTITY_ORDER;
190  }

◆ getSettableFields()

static getSettableFields ( )
static
Уст.:
Use \Bitrix\Sale\OrderBase::getAvailableFields instead
Возвращает
array

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

2809  {
2810  return static::getAvailableFields();
2811  }

◆ getSiteId()

getSiteId ( )

Return site id.

Возвращает
null|string

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

836  {
837  return $this->getField('LID');
838  }

◆ getSumPaid()

getSumPaid ( )

Return paid sum.

Возвращает
float

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

764  {
765  return floatval($this->getField('SUM_PAID'));
766  }

◆ getTax()

getTax ( )

Get the entity of taxes.

Возвращает
Tax

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

1822  {
1823  if ($this->tax === null)
1824  {
1825  $this->tax = $this->loadTax();
1826  }
1827  return $this->tax;
1828  }

◆ getTaxLocation()

getTaxLocation ( )

Return tax location.

Возвращает
null|string

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

2028  {
2029  if (strval(($this->getField('TAX_LOCATION')) == ""))
2030  {
2031  /** @var PropertyValueCollectionBase $propertyCollection */
2033 
2034  if ($property = $propertyCollection->getTaxLocation())
2035  {
2036  $this->setField('TAX_LOCATION', $property->getValue());
2037  }
2038 
2039  }
2040 
2041  return $this->getField('TAX_LOCATION');
2042  }

◆ getTaxPrice()

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

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

788  {
789  return floatval($this->getField('TAX_PRICE'));
790  }

◆ getTaxValue()

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

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

796  {
797  return floatval($this->getField('TAX_VALUE'));
798  }

◆ getUfId()

static getUfId ( )
static

Return user field id.

Возвращает
null

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

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

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

2799  {
2800  return null;
2801  }

◆ getUserId()

getUserId ( )

Return user id.

Возвращает
int

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

826  {
827  return $this->getField('USER_ID');
828  }

◆ getVatRate()

getVatRate ( )

Return order vat rate.

Возвращает
mixed|null

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

862  {
863  $vatRate = $this->getField('VAT_RATE');
864  if ($vatRate === null && $this->getId() > 0)
865  {
866  $this->refreshVat();
867  return $this->getField('VAT_RATE');
868  }
869  return $vatRate;
870  }

◆ getVatSum()

getVatSum ( )

Return order vat sum.

Возвращает
float

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

878  {
879  $vatSum = $this->getField('VAT_SUM');
880  if ($vatSum === null && $this->getId() > 0)
881  {
882  $this->refreshVat();
883  return $this->getField('VAT_SUM');
884  }
885  return $vatSum;
886  }

◆ hasMeaningfulField()

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

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

2058  {
2059  return $this->isMeaningfulField;
2060  }

◆ initField()

initField (   $name,
  $value 
)

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

589  {
590  if ($this->isCalculatedField($name))
591  {
592  $this->calculatedFields->set($name, $value);
593  }
594 
595  if ($name === 'ID')
596  {
597  $this->isNew = false;
598  }
599 
600  parent::initField($name, $value);
601  }

◆ isAllowDelivery()

isAllowDelivery ( )

Return TRUE, if order is allowed delivery.

Else return FALSE

Возвращает
bool

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

1934  {
1935  return $this->getField('ALLOW_DELIVERY') === "Y";
1936  }

◆ isAllowPay()

isAllowPay ( )
Уст.:
Use OrderStatus::isAllowPay instead
Возвращает
bool
Исключения
Main

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

2294  {
2295  $registry = Registry::getInstance(static::getRegistryType());
2296 
2297  /** @var OrderStatus $orderClassName */
2298  $orderClassName = $registry->getOrderStatusClassName();
2299  return $orderClassName::isAllowPay($this->getField('STATUS_ID'));
2300  }

◆ isCalculatedField()

isCalculatedField (   $field)
protected
Аргументы
$field
Возвращает
bool

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

1004  {
1005  if ($this->calculatedFields == null )
1006  {
1007  $this->calculatedFields = new Internals\Fields();
1008  }
1009 
1010  return (in_array($field, static::getCalculatedFields()));
1011  }

◆ isCanceled()

isCanceled ( )

Return TRUE, if order is canceled.

Else return FALSE

Возвращает
bool

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

1944  {
1945  return $this->getField('CANCELED') === "Y";
1946  }

◆ isChanged()

isChanged ( )

Return TRUE if order is changed.

Else return FALSE

Возвращает
bool

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

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

1859  {
1860  if (parent::isChanged())
1861  return true;
1862 
1863  /** @var PropertyValueCollectionBase $propertyCollection */
1865  {
1866  if ($propertyCollection->isChanged())
1867  {
1868  return true;
1869  }
1870  }
1871 
1872  /** @var BasketBase $basket */
1873  if ($basket = $this->getBasket())
1874  {
1875  if ($basket->isChanged())
1876  {
1877  return true;
1878  }
1879 
1880  }
1881 
1882  return false;
1883  }

◆ isClone()

isClone ( )

Return TRUE, if this order is cloned.

Else return FALSE

Возвращает
bool

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

1914  {
1915  return $this->isClone;
1916  }

◆ isExists()

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

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

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

2276  {
2277  $dbRes = static::getList(array('filter' => array('ID' => $id)));
2278  if ($dbRes->fetch())
2279  return true;
2280 
2281  return false;
2282  }

◆ isExternal()

isExternal ( )

Return TRUE if order is external.

Else return FALSE

Возвращает
bool

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

995  {
996  return $this->getField('EXTERNAL_ORDER') == "Y";
997  }

◆ isMarked()

isMarked ( )

Return TRUE if order has problems.

Else return FALSE

Возвращает
null|string

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

893  {
894  return $this->getField('MARKED') === "Y";
895  }

◆ isMathActionOnly()

isMathActionOnly ( )

Return TRUE if calculations are based on current values.

Data from the provider is not requested. Else return false

Возвращает
bool

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

2050  {
2051  return $this->isOnlyMathAction;
2052  }

◆ isNew()

isNew ( )

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

1838  {
1839  return $this->isNew;
1840  }

◆ isPaid()

isPaid ( )

Return TRUE, if order is payed.

Else return FALSE

Возвращает
bool

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

1924  {
1925  return $this->getField('PAYED') === "Y";
1926  }

◆ isSaveRunning()

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

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

158  {
159  return $this->isSaveExecuting;
160  }

◆ isShipped()

isShipped ( )

Return TRUE if order is deducted.

Else return FALSE

Возвращает
string

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

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

985  {
986  return $this->getField('DEDUCTED') === 'Y';
987  }

◆ isStartField()

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

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

2078  {
2079  if ($this->isStartField === null)
2080  {
2081  $this->isStartField = true;
2082  }
2083  else
2084  {
2085  $this->isStartField = false;
2086  }
2087 
2088  if ($isMeaningfulField === true)
2089  {
2090  $this->isMeaningfulField = true;
2091  }
2092 
2093  return $this->isStartField;
2094  }

◆ isStatusChangedOnPay()

isStatusChangedOnPay (   $value,
  $oldValue 
)
protected
Аргументы
$value
$oldValue
Возвращает
bool
Исключения
Main

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

2674  {
2675  $registry = Registry::getInstance(static::getRegistryType());
2676 
2677  /** @var OrderStatus $orderStatus */
2678  $orderStatus = $registry->getOrderStatusClassName();
2679 
2680  $allowPayStatus = $orderStatus::getAllowPayStatusList();
2681  $disallowPayStatus = $orderStatus::getDisallowPayStatusList();
2682 
2683  return !empty($disallowPayStatus)
2684  && in_array($oldValue, $disallowPayStatus)
2685  && !empty($allowPayStatus)
2686  && in_array($value, $allowPayStatus);
2687  }

◆ isUsedVat()

isUsedVat ( )

Return TRUE if VAT is used.

Else return FALSE

Возвращает
bool

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

846  {
847  $useVat = $this->getField('USE_VAT');
848  if ($useVat === null)
849  {
850  $this->refreshVat();
851  }
852 
853  return $this->getField('USE_VAT') === 'Y';
854  }

◆ load()

static load (   $id)
static

Load order object by id.

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

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

254  {
255  if (intval($id) <= 0)
256  {
257  throw new Main\ArgumentNullException("id");
258  }
259 
260  $filter = [
261  'filter' => ['ID' => $id],
262  'select' => ['*'],
263  ];
264 
265  $list = static::loadByFilter($filter);
266  if (!empty($list) && is_array($list))
267  {
268  return reset($list);
269  }
270 
271  return null;
272  }

◆ loadBasket()

loadBasket ( )
protected

Load basket appended to order.

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

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

440  {
441  if ((int)$this->getId() > 0)
442  {
443  $registry = Registry::getInstance(static::getRegistryType());
444  /** @var BasketBase $basketClassName */
445  $basketClassName = $registry->getBasketClassName();
446 
447  return $basketClassName::loadItemsForOrder($this);
448  }
449 
450  return null;
451  }

◆ loadByAccountNumber()

static loadByAccountNumber (   $value)
static

Load object order by account number.

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

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

345  {
346  if (trim($value) == '')
347  {
348  throw new Main\ArgumentNullException("value");
349  }
350 
351  $parameters = [
352  'filter' => ['=ACCOUNT_NUMBER' => $value],
353  'select' => ['*'],
354  ];
355 
356  $list = static::loadByFilter($parameters);
357 
358  return reset($list);
359  }

◆ loadByFilter()

static loadByFilter ( array  $parameters)
static

Return object order list satisfying filter.

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

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

283  {
284  $list = [];
285 
286  $parameters = static::prepareParams($parameters);
287 
288  /** @var Main\DB\Result $res */
289  $res = static::loadFromDb($parameters);
290  while($orderData = $res->fetch())
291  {
292  $order = static::createOrderObject($orderData);
293 
294  $order->calculateType = static::SALE_ORDER_CALC_TYPE_CHANGE;
295  $list[] = $order;
296  }
297 
298  return $list;
299  }

◆ loadDiscount()

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

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

2376  {
2377  $registry = Registry::getInstance(static::getRegistryType());
2378 
2379  /** @var Discount $discountClassName */
2380  $discountClassName = $registry->getDiscountClassName();
2381  return $discountClassName::buildFromOrder($this);
2382  }

◆ loadFromDb()

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

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

367  {
368  return static::getList($parameters);
369  }

◆ loadPropertyCollection()

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

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

628  {
629  $registry = Registry::getInstance(static::getRegistryType());
630  /** @var PropertyValueCollectionBase $propertyCollectionClassName */
631  $propertyCollectionClassName = $registry->getPropertyValueCollectionClassName();
632 
633  return $propertyCollectionClassName::load($this);
634  }

◆ loadTax()

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

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

2362  {
2363  $registry = Registry::getInstance(static::getRegistryType());
2364 
2365  /** @var Tax $taxClassName */
2366  $taxClassName = $registry->getTaxClassName();
2367  return $taxClassName::load($this);
2368  }

◆ onAfterBasketRefresh()

onAfterBasketRefresh ( )

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

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

1812  {
1813  return new Result();
1814  }

◆ onAfterSave()

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

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

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

1163  {
1164  return new Result();
1165  }

◆ onBasketModify()

onBasketModify (   $action,
BasketItemBase  $basketItem,
  $name = null,
  $oldValue = null,
  $value = null 
)

Modify basket.

Аргументы
string$actionAction.
BasketItemBase$basketItemBasket item.
null | string$nameField name.
null | string | int | float$oldValueOld value.
null | string | int | float$valueNew value.
Возвращает
Result
Исключения
Main

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

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

1746  {
1747  $result = new Result();
1748 
1749  if ($action === EventActions::DELETE)
1750  {
1751  /** @var Result $r */
1752  $r = $this->refreshVat();
1753  if (!$r->isSuccess())
1754  {
1755  $result->addErrors($r->getErrors());
1756  return $result;
1757  }
1758 
1759  if ($tax = $this->getTax())
1760  {
1761  $tax->resetTaxList();
1762  }
1763 
1764  /** @var Result $result */
1765  $r = $this->refreshOrderPrice();
1766  if (!$r->isSuccess())
1767  {
1768  $result->addErrors($r->getErrors());
1769  }
1770 
1771  return $result;
1772  }
1773  elseif ($action !== EventActions::UPDATE)
1774  {
1775  return $result;
1776  }
1777 
1778  if ($name == "QUANTITY" || $name == "PRICE")
1779  {
1780  /** @var Result $result */
1781  $r = $this->refreshOrderPrice();
1782  if (!$r->isSuccess())
1783  {
1784  $result->addErrors($r->getErrors());
1785  }
1786  }
1787  elseif ($name == "CURRENCY")
1788  {
1789  if ($value != $this->getField("CURRENCY"))
1790  {
1791  throw new Main\NotSupportedException("CURRENCY");
1792  }
1793  }
1794 
1795  return $result;
1796  }

◆ onBeforeBasketRefresh()

onBeforeBasketRefresh ( )

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

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

1803  {
1804  return new Result();
1805  }

◆ onBeforeSave()

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

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

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

2407  {
2408  return new Result();
2409  }

◆ onFieldModify()

onFieldModify (   $name,
  $oldValue,
  $value 
)
protected
Аргументы
string$name
mixed$oldValue
mixed$value
Возвращает
Result
Исключения
Main

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

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

1543  {
1544  global $USER;
1545 
1546  $result = new Result();
1547 
1548  if ($name !== 'UPDATED_1C' && !$this->getFields()->isChanged('UPDATED_1C'))
1549  {
1550  $this->setField("UPDATED_1C", "N");
1551  }
1552 
1553  if ($name == "PRICE")
1554  {
1555  /** @var Result $r */
1556  $r = $this->refreshVat();
1557  if (!$r->isSuccess())
1558  {
1559  $result->addErrors($r->getErrors());
1560  return $result;
1561  }
1562  }
1563  elseif ($name == "CURRENCY")
1564  {
1565  throw new Main\NotImplementedException('field CURRENCY');
1566  }
1567  elseif ($name == "CANCELED")
1568  {
1569  $event = new Main\Event('sale', EventActions::EVENT_ON_BEFORE_ORDER_CANCELED, array(
1570  'ENTITY' => $this
1571  ));
1572  $event->send();
1573 
1574  if ($event->getResults())
1575  {
1576  /** @var Main\EventResult $eventResult */
1577  foreach($event->getResults() as $eventResult)
1578  {
1579  if($eventResult->getType() == Main\EventResult::ERROR)
1580  {
1581  $errorMsg = new ResultError(
1582  Main\Localization\Loc::getMessage('SALE_EVENT_ON_BEFORE_ORDER_CANCELED_ERROR'),
1583  'SALE_EVENT_ON_BEFORE_ORDER_CANCELED_ERROR'
1584  );
1585  if ($eventResultData = $eventResult->getParameters())
1586  {
1587  if (isset($eventResultData) && $eventResultData instanceof ResultError)
1588  {
1589  /** @var ResultError $errorMsg */
1590  $errorMsg = $eventResultData;
1591  }
1592  }
1593 
1594  $result->addError($errorMsg);
1595  }
1596  }
1597  }
1598 
1599  if (!$result->isSuccess())
1600  {
1601  return $result;
1602  }
1603 
1604  $r = $this->onOrderModify($name, $oldValue, $value);
1605  if (!$r->isSuccess())
1606  {
1607  $result->addErrors($r->getErrors());
1608  return $result;
1609  }
1610 
1611  $this->setField('DATE_CANCELED', new Type\DateTime());
1612 
1613  if (is_object($USER) && $USER->isAuthorized())
1614  {
1615  $this->setField('EMP_CANCELED_ID', $USER->getID());
1616  }
1617 
1619  $this->getInternalId(),
1621  array('ENTITY' => $this)
1622  );
1623 
1625  $this->getInternalId(),
1627  array('ENTITY' => $this)
1628  );
1629  }
1630  elseif ($name == "USER_ID")
1631  {
1632  throw new Main\NotImplementedException('field USER_ID');
1633  }
1634  elseif($name == "MARKED")
1635  {
1636  if ($oldValue != "Y")
1637  {
1638  $this->setField('DATE_MARKED', new Type\DateTime());
1639 
1640  if ($USER->isAuthorized())
1641  {
1642  $this->setField('EMP_MARKED_ID', $USER->getID());
1643  }
1644  }
1645  elseif ($value == "N")
1646  {
1647  $this->setField('REASON_MARKED', '');
1648  }
1649  }
1650  elseif ($name == "STATUS_ID")
1651  {
1652  $event = new Main\Event('sale', EventActions::EVENT_ON_BEFORE_ORDER_STATUS_CHANGE, array(
1653  'ENTITY' => $this,
1654  'VALUE' => $value,
1655  'OLD_VALUE' => $oldValue,
1656  ));
1657  $event->send();
1658 
1659  if ($event->getResults())
1660  {
1661  /** @var Main\EventResult $eventResult */
1662  foreach($event->getResults() as $eventResult)
1663  {
1664  if($eventResult->getType() == Main\EventResult::ERROR)
1665  {
1666  $errorMsg = new ResultError(
1667  Main\Localization\Loc::getMessage('SALE_EVENT_ON_BEFORE_ORDER_STATUS_CHANGE_ERROR'),
1668  'SALE_EVENT_ON_BEFORE_ORDER_STATUS_CHANGE_ERROR'
1669  );
1670  if ($eventResultData = $eventResult->getParameters())
1671  {
1672  if (isset($eventResultData) && $eventResultData instanceof ResultError)
1673  {
1674  /** @var ResultError $errorMsg */
1675  $errorMsg = $eventResultData;
1676  }
1677  }
1678 
1679  $result->addError($errorMsg);
1680  }
1681  }
1682  }
1683 
1684  if (!$result->isSuccess())
1685  {
1686  return $result;
1687  }
1688 
1689  $this->setField('DATE_STATUS', new Type\DateTime());
1690 
1691  if (is_object($USER) && $USER->isAuthorized())
1692  {
1693  $this->setField('EMP_STATUS_ID', $USER->GetID());
1694  }
1695 
1697  'ENTITY' => $this,
1698  'VALUE' => $value,
1699  'OLD_VALUE' => $oldValue,
1700  ));
1701 
1703  'ENTITY' => $this,
1704  'VALUE' => $value,
1705  'OLD_VALUE' => $oldValue,
1706  ));
1707 
1708  if ($this->isStatusChangedOnPay($value, $oldValue))
1709  {
1711  'ENTITY' => $this,
1712  'VALUE' => $value,
1713  'OLD_VALUE' => $oldValue,
1714  ));
1715  }
1716  }
1717 
1718  return $result;
1719  }

◆ onOrderModify()

onOrderModify (   $name,
  $oldValue,
  $value 
)
protected
Аргументы
$name
$oldValue
$value
Возвращает
Result

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

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

1728  {
1729  return new Result();
1730  }

◆ onPropertyValueCollectionModify()

onPropertyValueCollectionModify (   $action,
PropertyValueBase  $property,
  $name = null,
  $oldValue = null,
  $value = null 
)

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

647  {
648  return new Result();
649  }

◆ refreshData()

refreshData ( )

Full order refresh.

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

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

661  {
662  $result = new Result();
663 
664  $isStartField = $this->isStartField();
665 
666  $this->calculateType = ($this->getId() > 0 ? static::SALE_ORDER_CALC_TYPE_REFRESH : static::SALE_ORDER_CALC_TYPE_NEW);
667 
668  $this->resetData();
669 
670  $this->refreshInternal();
671 
672  if ($isStartField)
673  {
674  $hasMeaningfulFields = $this->hasMeaningfulField();
675 
676  /** @var Result $r */
677  $r = $this->doFinalAction($hasMeaningfulFields);
678  if (!$r->isSuccess())
679  {
680  $result->addErrors($r->getErrors());
681  }
682  }
683 
684  return $result;
685 
686  }

◆ refreshInternal()

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

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

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

695  {
696  $result = new Result();
697 
698  /** @var Basket $basket */
699  $basket = $this->getBasket();
700  if (!$basket)
701  {
702  return $result;
703  }
704 
705  /** @var Result $r */
706  $r = $this->setField('PRICE', $basket->getPrice());
707  if (!$r->isSuccess())
708  {
709  $result->addErrors($r->getErrors());
710  return $result;
711  }
712 
713  return $result;
714  }

◆ refreshVat()

refreshVat ( )

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

916  {
917  $this->resetVat();
918 
919  $vatInfo = $this->calculateVat();
920  if ($vatInfo && $vatInfo['VAT_RATE'] > 0)
921  {
922  return $this->applyCalculatedVat($vatInfo);
923  }
924 
925  return new Result();
926  }

◆ resetData()

resetData (   $select = array('PRICE'))

Reset the value of the order and delivery.

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

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

2652  {
2653  if (in_array('PRICE', $select))
2654  {
2655  $this->setFieldNoDemand('PRICE', 0);
2656  }
2657 
2658  if (in_array('PRICE_DELIVERY', $select))
2659  {
2660  $this->setFieldNoDemand('PRICE_DELIVERY', 0);
2661  }
2662  }

◆ resetTax()

resetTax ( )

Reset the value of taxes.

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

1848  {
1849  $this->setFieldNoDemand('TAX_PRICE', 0);
1850  $this->setFieldNoDemand('TAX_VALUE', 0);
1851  }

◆ resetVat()

resetVat ( )
protected

Clear VAT info.

Исключения
Main

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

902  {
903  $this->setFieldNoDemand('USE_VAT', 'N');
904  $this->setFieldNoDemand('VAT_RATE', 0);
905 
906  $this->setFieldNoDemand('VAT_SUM', 0);
907  $this->setFieldNoDemand('VAT_DELIVERY', 0);
908  }

◆ save()

save ( )

Save order.

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

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

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

1051  {
1052  if ($this->isSaveExecuting)
1053  {
1054  trigger_error("Order saving in recursion", E_USER_WARNING);
1055  }
1056 
1057  $this->isSaveExecuting = true;
1058 
1059  $result = new Result();
1060 
1061  $id = $this->getId();
1062  $this->isNew = ($id == 0);
1063  $needUpdateDateInsert = $this->getDateInsert() === null;
1064 
1065  $r = $this->callEventOnBeforeOrderSaved();
1066  if (!$r->isSuccess())
1067  {
1068  $this->isSaveExecuting = false;
1069  return $r;
1070  }
1071 
1072  $r = $this->verify();
1073  if (!$r->isSuccess())
1074  {
1075  $result->addWarnings($r->getErrors());
1076  }
1077 
1078  $r = $this->onBeforeSave();
1079  if (!$r->isSuccess())
1080  {
1081  $this->isSaveExecuting = false;
1082  return $r;
1083  }
1084  elseif ($r->hasWarnings())
1085  {
1086  $result->addWarnings($r->getWarnings());
1087  }
1088 
1089  if ($id > 0)
1090  {
1091  $r = $this->update();
1092  }
1093  else
1094  {
1095  $r = $this->add();
1096  if ($r->getId() > 0)
1097  {
1098  $id = $r->getId();
1099  }
1100  }
1101 
1102  if ($r->hasWarnings())
1103  {
1104  $result->addWarnings($r->getWarnings());
1105  }
1106 
1107  if (!$r->isSuccess())
1108  {
1109  $this->isSaveExecuting = false;
1110  return $r;
1111  }
1112 
1113  if ($id > 0)
1114  {
1115  $result->setId($id);
1116  }
1117 
1119 
1120  $r = $this->saveEntities();
1121  if (!$r->isSuccess())
1122  {
1123  $result->addWarnings($r->getErrors());
1124  }
1125 
1126  if ($r->hasWarnings())
1127  {
1128  $result->addWarnings($r->getWarnings());
1129  }
1130 
1131  /** @var Discount $discount */
1132  $discount = $this->getDiscount();
1133 
1134  /** @var Result $r */
1135  $r = $discount->save();
1136  if (!$r->isSuccess())
1137  {
1138  $result->addWarnings($r->getErrors());
1139  }
1140 
1141  $r = $this->completeSaving($needUpdateDateInsert);
1142  if (!$r->isSuccess())
1143  {
1144  $result->addWarnings($r->getErrors());
1145  }
1146 
1147  $this->callEventOnSaleOrderSaved();
1148  $this->callDelayedEvents();
1149 
1150  $this->onAfterSave();
1151 
1152  $this->isNew = false;
1153  $this->isSaveExecuting = false;
1154  $this->clearChanged();
1155 
1156  return $result;
1157  }

◆ saveEntities()

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

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

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

1434  {
1435  $result = new Result();
1436 
1437  /** @var BasketBase $basket */
1438  $basket = $this->getBasket();
1439 
1440  /** @var Result $r */
1441  $r = $basket->save();
1442  if (!$r->isSuccess())
1443  {
1444  $result->addWarnings($r->getErrors());
1445  }
1446 
1447  /** @var Tax $tax */
1448  $tax = $this->getTax();
1449 
1450  /** @var Result $r */
1451  $r = $tax->save();
1452  if (!$r->isSuccess())
1453  {
1454  $result->addWarnings($r->getErrors());
1455  }
1456 
1457  /** @var PropertyValueCollectionBase $propertyCollection */
1459 
1460  /** @var Result $r */
1461  $r = $propertyCollection->save();
1462  if (!$r->isSuccess())
1463  {
1464  $result->addWarnings($r->getErrors());
1465  }
1466 
1467 
1468 
1469  return $result;
1470  }

◆ setAccountNumber()

setAccountNumber ( )
protected

Set account number.

Исключения
Main

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

1481  {
1483  if ($accountNumber !== false)
1484  {
1485  $this->setField('ACCOUNT_NUMBER', $accountNumber);
1486 
1487  static::updateInternal($this->getId(), ['ACCOUNT_NUMBER' => $accountNumber]);
1488  }
1489  }

◆ setBasket()

setBasket ( BasketBase  $basket)

Append basket to order and refresh it.

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

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

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

379  {
380  $result = self::appendBasket($basket);
381 
382  if (!$this->isMathActionOnly())
383  {
384  /** @var Result $r */
385  $r = $basket->refreshData(['PRICE', 'QUANTITY', 'COUPONS']);
386  if (!$r->isSuccess())
387  {
388  $result->addErrors($r->getErrors());
389  return $result;
390  }
391  }
392 
393  return $result;
394  }

◆ setField()

setField (   $name,
  $value 
)

Set value with call events on field modify.

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

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

464  {
465  $priceFields = array(
466  'PRICE' => 'PRICE',
467  'PRICE_DELIVERY' => 'PRICE_DELIVERY',
468  'SUM_PAID' => 'SUM_PAID',
469  'PRICE_PAYMENT' => 'PRICE_PAYMENT',
470  'DISCOUNT_VALUE' => 'DISCOUNT_VALUE',
471  );
472  if (isset($priceFields[$name]))
473  {
474  $value = PriceMaths::roundPrecision($value);
475  }
476 
477  if ($this->isCalculatedField($name))
478  {
479  $this->calculatedFields->set($name, $value);
480  return new Result();
481  }
482 
483  return parent::setField($name, $value);
484  }

◆ setFieldNoDemand()

setFieldNoDemand (   $name,
  $value 
)

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

527  {
528  $priceFields = array(
529  'PRICE' => 'PRICE',
530  'PRICE_DELIVERY' => 'PRICE_DELIVERY',
531  'SUM_PAID' => 'SUM_PAID',
532  'PRICE_PAYMENT' => 'PRICE_PAYMENT',
533  'DISCOUNT_VALUE' => 'DISCOUNT_VALUE',
534  );
535  if (isset($priceFields[$name]))
536  {
537  $value = PriceMaths::roundPrecision($value);
538  }
539 
540  if ($this->isCalculatedField($name))
541  {
542  $this->calculatedFields->set($name, $value);
543  return;
544  }
545 
546  if (!$this->fields->isChanged("UPDATED_1C") && $name != 'UPDATED_1C')
547  {
548  $this->setField("UPDATED_1C", "N");
549  }
550 
551  if ($this->isSaveExecuting === false)
552  {
553  if ($name === 'ID')
554  {
555  $this->isNew = false;
556  }
557  }
558 
559  parent::setFieldNoDemand($name, $value);
560  }

◆ setMathActionOnly()

setMathActionOnly (   $value = false)

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

2104  {
2105  $this->isOnlyMathAction = $value;
2106  }

◆ setPersonTypeId()

setPersonTypeId (   $personTypeId)

Set person type id of order.

Аргументы
$personTypeId
Возвращает
Result

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

744  {
745  return $this->setField('PERSON_TYPE_ID', intval($personTypeId));
746  }

◆ setReasonMarked()

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

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

2612  {
2613  $result = new Result();
2614 
2615  if (!empty($value))
2616  {
2617  $orderReasonMarked = $this->getField('REASON_MARKED');
2618  if (is_array($value))
2619  {
2620  $newOrderReasonMarked = '';
2621 
2622  foreach ($value as $err)
2623  {
2624  $newOrderReasonMarked .= (strval($newOrderReasonMarked) != '' ? "\n" : "") . $err;
2625  }
2626  }
2627  else
2628  {
2629  $newOrderReasonMarked = $value;
2630  }
2631 
2632  /** @var Result $r */
2633  $r = $this->setField('REASON_MARKED', $orderReasonMarked. (strval($orderReasonMarked) != '' ? "\n" : ""). $newOrderReasonMarked);
2634  if (!$r->isSuccess())
2635  {
2636  $result->addErrors($r->getErrors());
2637  }
2638  }
2639 
2640  return $result;
2641  }

◆ setVatDelivery()

setVatDelivery (   $price)

Set VAT delivery sum.

Аргументы
$price

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

1507  {
1508  $this->setField('VAT_DELIVERY', $price);
1509  }

◆ setVatSum()

setVatSum (   $price)

Set VAT sum.

Аргументы
$price

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

1497  {
1498  $this->setField('VAT_SUM', $price);
1499  }

◆ update()

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

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

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

1302  {
1303  $result = new Result();
1304 
1305  $fields = $this->fields->getChangedValues();
1306 
1307  if ($this->isChanged())
1308  {
1309  if (array_key_exists('DATE_UPDATE', $fields) && $fields['DATE_UPDATE'] === null)
1310  {
1311  unset($fields['DATE_UPDATE']);
1312  }
1313 
1314  $fields['VERSION'] = intval($this->getField('VERSION')) + 1;
1315  $this->setFieldNoDemand('VERSION', $fields['VERSION']);
1316 
1317  if (array_key_exists('REASON_MARKED', $fields) && strlen($fields['REASON_MARKED']) > 255)
1318  {
1319  $fields['REASON_MARKED'] = substr($fields['REASON_MARKED'], 0, 255);
1320  }
1321 
1322  $r = static::updateInternal($this->getId(), $fields);
1323 
1324  if (!$r->isSuccess())
1325  {
1326  return $result->addErrors($r->getErrors());
1327  }
1328 
1329  if ($resultData = $r->getData())
1330  {
1331  $result->setData($resultData);
1332  }
1333  }
1334 
1335  return $result;
1336  }

◆ updateInternal()

static updateInternal (   $primary,
array  $data 
)
staticprotected
Аргументы
$primary
array$data
Исключения
Main

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

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

2779  {
2780  throw new Main\NotImplementedException();
2781  }

◆ verify()

verify ( )

Verify object to correctness.

Возвращает
Result

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

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

1972  {
1973  $result = new Result();
1974 
1975  /** @var BasketBase $basket */
1976  if ($basket = $this->getBasket())
1977  {
1978  $r = $basket->verify();
1979  if (!$r->isSuccess())
1980  {
1981  $result->addErrors($r->getErrors());
1982  }
1983  }
1984 
1985  /** @var PropertyValueCollectionBase $propertyCollection */
1987  {
1988  $r = $propertyCollection->verify();
1989  if (!$r->isSuccess())
1990  {
1991  $result->addErrors($r->getErrors());
1992  }
1993  }
1994 
1995  /** @var DiscountBase $discounts */
1996  if ($discounts = $this->getDiscount())
1997  {
1998  $r = $discounts->verify();
1999  if (!$r->isSuccess())
2000  {
2001  $result->addErrors($r->getErrors());
2002  }
2003  unset($r);
2004  }
2005  unset($discounts);
2006 
2007  return $result;
2008  }

Поля

◆ $basketCollection

$basketCollection
protected

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

◆ $calculatedFields

$calculatedFields = null
protected

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

◆ $calculateType

null string $calculateType = null
protected

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

◆ $discount

Discount $discount = null
protected

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

◆ $internalId

$internalId = 0
protected

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

◆ $isClone

bool $isClone = false
protected

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

◆ $isMeaningfulField

bool $isMeaningfulField = false
protected

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

◆ $isNew

bool $isNew = true
protected

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

◆ $isOnlyMathAction

bool $isOnlyMathAction = null
protected

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

◆ $isSaveExecuting

$isSaveExecuting = false
protected

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

◆ $isStartField

bool $isStartField = null
protected

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

◆ $propertyCollection

$propertyCollection
protected

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

◆ $tax

Tax $tax = null
protected

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

◆ SALE_ORDER_CALC_TYPE_CHANGE

const SALE_ORDER_CALC_TYPE_CHANGE = 'C'

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

◆ SALE_ORDER_CALC_TYPE_NEW

const SALE_ORDER_CALC_TYPE_NEW = 'N'

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

◆ SALE_ORDER_CALC_TYPE_REFRESH

const SALE_ORDER_CALC_TYPE_REFRESH = 'R'

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


Объявления и описания членов класса находятся в файле:
Bitrix\Sale\OrderBase\getBasket
getBasket()
Return order basket.
Definition: orderbase.php:422
Bitrix\Sale\EventsPool\getEvents
static getEvents(Order $order)
Definition: eventspool.php:9
Bitrix\Sale\OrderBase\$isNew
$isNew
Definition: orderbase.php:43
Bitrix\Sale\OrderBase\clearStartField
clearStartField()
Reset order flags: \Bitrix\Sale\OrderBase::$isStartField, \Bitrix\Sale\OrderBase::$isMeaningfulField.
Definition: orderbase.php:2067
Bitrix\Sale\OrderBase\verify
verify()
Verify object to correctness.
Definition: orderbase.php:1971
Bitrix\Sale\OrderBase\$propertyCollection
$propertyCollection
Definition: orderbase.php:31
Bitrix\Main\Localization\Loc\getMessage
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29
Bitrix\Sale\OrderBase\appendBasket
appendBasket(BasketBase $basket)
Append basket to order.
Definition: orderbase.php:404
Bitrix\Sale\OrderBase\callDelayedEvents
callDelayedEvents()
Definition: orderbase.php:1172
Bitrix\Sale\OrderBase\getTax
getTax()
Get the entity of taxes.
Definition: orderbase.php:1821
Bitrix\Sale\EventActions\EVENT_ON_ORDER_CANCELED
const EVENT_ON_ORDER_CANCELED
Definition: eventactions.php:21
Bitrix\Sale\OrderBase\setMathActionOnly
setMathActionOnly($value=false)
Definition: orderbase.php:2103
Bitrix\Sale\OrderBase\$internalId
$internalId
Definition: orderbase.php:40
Bitrix\Sale\OrderBase\loadDiscount
loadDiscount()
Definition: orderbase.php:2375
Bitrix\Sale\OrderBase\loadTax
loadTax()
Definition: orderbase.php:2361
Bitrix\Sale\OrderBase\update
update()
Definition: orderbase.php:1301
Bitrix\Sale\OrderBase\$isStartField
$isStartField
Definition: orderbase.php:58
Bitrix\Sale\OrderBase\getVatSum
getVatSum()
Return order vat sum.
Definition: orderbase.php:877
Bitrix\Sale\OrderBase\isUsedVat
isUsedVat()
Return TRUE if VAT is used.
Definition: orderbase.php:845
Bitrix\Sale\OrderBase\refreshVat
refreshVat()
Definition: orderbase.php:915
Bitrix\Sale\OrderBase\saveEntities
saveEntities()
Definition: orderbase.php:1433
Bitrix\Sale\OrderBase\completeSaving
completeSaving($needUpdateDateInsert)
Definition: orderbase.php:1201
Bitrix\Sale\OrderBase\getDateInsert
getDateInsert()
Return date order insert.
Definition: orderbase.php:1516
Bitrix\Sale\EventActions\EVENT_ON_BEFORE_ORDER_STATUS_CHANGE
const EVENT_ON_BEFORE_ORDER_STATUS_CHANGE
Definition: eventactions.php:40
Bitrix\Sale\EventActions\EVENT_ON_ORDER_SAVED
const EVENT_ON_ORDER_SAVED
Definition: eventactions.php:17
Bitrix\Sale\OrderBase\callEventOnSaleOrderEntitySaved
callEventOnSaleOrderEntitySaved()
Definition: orderbase.php:1341
Bitrix\Sale\OrderBase\resetData
resetData($select=array('PRICE'))
Reset the value of the order and delivery.
Definition: orderbase.php:2651
Bitrix\Main\ORM\Entity\$fields
$fields
Definition: main/lib/orm/entity.php:44
Bitrix\Sale\EventActions\DELETE
const DELETE
Definition: eventactions.php:10
Bitrix\Sale\OrderBase\isChanged
isChanged()
Return TRUE if order is changed.
Definition: orderbase.php:1858
Bitrix\Sale\OrderBase\clearChanged
clearChanged()
Definition: orderbase.php:1892
Bitrix\Sale\EventActions\EVENT_ON_ORDER_STATUS_CHANGE_SEND_MAIL
const EVENT_ON_ORDER_STATUS_CHANGE_SEND_MAIL
Definition: eventactions.php:42
Bitrix\Sale\OrderBase\onOrderModify
onOrderModify($name, $oldValue, $value)
Definition: orderbase.php:1727
Bitrix\Sale\OrderBase\callEventOnSaleOrderSaved
callEventOnSaleOrderSaved()
Definition: orderbase.php:1363
Bitrix\Sale\Internals\SiteCurrencyTable\getSiteCurrency
static getSiteCurrency($siteId)
Returns site currency.
Definition: internals/sitecurrency.php:80
Bitrix\Sale\OrderBase\getField
getField($name)
Return field value.
Definition: orderbase.php:568
Bitrix\Sale\OrderBase\$calculatedFields
$calculatedFields
Definition: orderbase.php:25
Bitrix\Sale\Internals\AccountNumberGenerator\generateForOrder
static generateForOrder(Sale\OrderBase $order)
Definition: accountnumber.php:25
Bitrix\Sale\EventActions\EVENT_ON_ORDER_BEFORE_SAVED
const EVENT_ON_ORDER_BEFORE_SAVED
Definition: eventactions.php:16
Bitrix\Sale\OrderBase\applyDiscount
applyDiscount(array $data)
Apply the result of the discounts to the order.
Definition: orderbase.php:2589
Bitrix\Main\Type
Definition: main/lib/type/collection.php:2
Bitrix\Sale\Internals\ActionEntity\runActions
static runActions($code, array $typeList=array())
Definition: actionentity.php:20
Bitrix\Sale\OrderBase\$isSaveExecuting
$isSaveExecuting
Definition: orderbase.php:46
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\OrderBase\$isClone
$isClone
Definition: orderbase.php:49
Bitrix\Sale\OrderBase\setAccountNumber
setAccountNumber()
Set account number.
Definition: orderbase.php:1480
Bitrix\Main\EventManager\getInstance
static getInstance()
Definition: main/lib/eventmanager.php:34
Bitrix\Sale\OrderBase\cloneEntities
cloneEntities(\SplObjectStorage $cloneEntity)
Definition: orderbase.php:2733
Bitrix\Sale\EventActions\EVENT_ON_BEFORE_ORDER_CANCELED
const EVENT_ON_BEFORE_ORDER_CANCELED
Definition: eventactions.php:20
Bitrix\Sale\OrderBase\$isMeaningfulField
$isMeaningfulField
Definition: orderbase.php:55
Bitrix\Sale\OrderBase\loadPropertyCollection
loadPropertyCollection()
Definition: orderbase.php:627
Bitrix\Sale\EventsPool\addEvent
static addEvent(Order $order, $type, $event)
Definition: eventspool.php:24
Bitrix\Sale\OrderBase\onAfterSave
onAfterSave()
Definition: orderbase.php:1162
Bitrix\Sale\OrderBase\isStatusChangedOnPay
isStatusChangedOnPay($value, $oldValue)
Definition: orderbase.php:2673
Bitrix\Sale\OrderBase\calculateVat
calculateVat()
Calculate VAT.
Definition: orderbase.php:933
Bitrix\Sale\EventActions\EVENT_ON_ORDER_STATUS_CHANGE
const EVENT_ON_ORDER_STATUS_CHANGE
Definition: eventactions.php:41
Bitrix\Sale\OrderBase\getDiscount
getDiscount()
Return discount object.
Definition: orderbase.php:2346
Bitrix\Sale\OrderBase\getInternalId
getInternalId()
Return internal index of order.
Definition: orderbase.php:94
Bitrix\Sale\OrderBase\loadBasket
loadBasket()
Load basket appended to order.
Definition: orderbase.php:439
Bitrix\Sale\EventActions\EVENT_ON_ORDER_CANCELED_SEND_MAIL
const EVENT_ON_ORDER_CANCELED_SEND_MAIL
Definition: eventactions.php:24
Bitrix\Sale\OrderBase\isCalculatedField
isCalculatedField($field)
Definition: orderbase.php:1003
Bitrix\Sale\OrderBase\add
add()
Definition: orderbase.php:1243
Bitrix\Sale\OrderBase\setFieldNoDemand
setFieldNoDemand($name, $value)
Definition: orderbase.php:526
Bitrix\Sender\Connector\__construct
__construct(Base $connector)
Constructor.
Definition: resultview.php:40
Bitrix\Main\EventResult\ERROR
const ERROR
Definition: main/lib/eventresult.php:8
Bitrix\Main\ORM\Entity\$code
$code
Definition: main/lib/orm/entity.php:52
Bitrix\Sale\OrderBase\callEventOnBeforeOrderSaved
callEventOnBeforeOrderSaved()
Definition: orderbase.php:1381
Bitrix\Sale\OrderBase\doFinalAction
doFinalAction($hasMeaningfulField=false)
Definition: orderbase.php:2417
Bitrix\Sale\OrderBase\refreshInternal
refreshInternal()
Definition: orderbase.php:694
Bitrix\Sale\OrderBase\resetVat
resetVat()
Clear VAT info.
Definition: orderbase.php:901
Bitrix\Sale\OrderBase\getId
getId()
Return order id.
Definition: orderbase.php:721
Bitrix\Sale\OrderBase\isMathActionOnly
isMathActionOnly()
Return TRUE if calculations are based on current values.
Definition: orderbase.php:2049
Bitrix\Sale\OrderBase\hasMeaningfulField
hasMeaningfulField()
Definition: orderbase.php:2057
Bitrix\Sale\OrderBase\isNew
isNew()
Definition: orderbase.php:1837
Bitrix\Currency\CurrencyManager\getBaseCurrency
static getBaseCurrency()
Return base currency.
Definition: currencymanager.php:59
Bitrix\Sale\EventActions\EVENT_ON_BEFORE_ORDER_DELETE
const EVENT_ON_BEFORE_ORDER_DELETE
Definition: eventactions.php:14
Bitrix\Sale\OrderBase\isStartField
isStartField($isMeaningfulField=false)
Definition: orderbase.php:2077
Bitrix\Sale\OrderBase\addInternal
addInternal(array $data)
Bitrix\Sale\OrderBase\$calculateType
$calculateType
Definition: orderbase.php:62
Bitrix\Sale\EventActions\EVENT_ON_ORDER_DELETED
const EVENT_ON_ORDER_DELETED
Definition: eventactions.php:15
Bitrix\Sale\OrderBase\$isOnlyMathAction
$isOnlyMathAction
Definition: orderbase.php:52
Bitrix\Main\ORM\Entity\getFields
getFields()
Definition: main/lib/orm/entity.php:526
Bitrix\Sale\EventActions\EVENT_ON_ORDER_STATUS_ALLOW_PAY_CHANGE
const EVENT_ON_ORDER_STATUS_ALLOW_PAY_CHANGE
Definition: eventactions.php:48
Bitrix\Sale\EventsPool\resetEvents
static resetEvents(Order $order=null)
Definition: eventspool.php:32
Bitrix\Sale\OrderBase\$tax
$tax
Definition: orderbase.php:37
Bitrix\Sale\PriceMaths\roundPrecision
static roundPrecision($value)
Definition: pricemaths.php:17
Bitrix\Sale\Registry\ENTITY_ORDER
const ENTITY_ORDER
Definition: sale/lib/registry.php:20
Bitrix\Main\Type\DateTime
Definition: main/lib/type/datetime.php:7
Bitrix\Sale\OrderBase\$discount
$discount
Definition: orderbase.php:34
Bitrix\Sale\OrderBase\getPropertyCollection
getPropertyCollection()
Definition: orderbase.php:610
Bitrix\Sale\OrderBase\onBeforeSave
onBeforeSave()
Definition: orderbase.php:2406
Bitrix\Sale\OrderBase\$basketCollection
$basketCollection
Definition: orderbase.php:28
Bitrix\Main\ORM\Entity\$name
$name
Definition: main/lib/orm/entity.php:32
Bitrix\Sale\OrderBase\setField
setField($name, $value)
Set value with call events on field modify.
Definition: orderbase.php:463