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

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

 getPrintedChecks ()
 Return printed check list. Подробнее...
 
 addPrintedCheck ($check)
 Add printed check to order. Подробнее...
 
 onShipmentCollectionModify ($action, Shipment $shipment, $name=null, $oldValue=null, $value=null)
 Modify shipment collection. Подробнее...
 
 resetData ($select=array('PRICE'))
 
 setBasket (BasketBase $basket)
 
 appendBasket (BasketBase $basket)
 
 getShipmentCollection ()
 Return shipment collection. Подробнее...
 
 getTradeBindingCollection ()
 Return trade binding collection. Подробнее...
 
 getPaymentCollection ()
 Return payment collection. Подробнее...
 
 loadShipmentCollection ()
 Load shipment collection. Подробнее...
 
 loadPaymentCollection ()
 Load payment collection. Подробнее...
 
 isShipped ()
 
 onPaymentCollectionModify ($action, Payment $payment, $name=null, $oldValue=null, $value=null)
 
 onBeforeBasketItemDelete (BasketItem $basketItem)
 
 onBasketModify ($action, BasketItemBase $basketItem, $name=null, $oldValue=null, $value=null)
 Modify basket. Подробнее...
 
 onBeforeBasketRefresh ()
 
 onAfterBasketRefresh ()
 
 applyDiscount (array $data)
 
 verify ()
 
 getBusinessValueProviderInstance ($mapping)
 
 isChanged ()
 
 clearChanged ()
 
 getDeliveryIdList ()
 
 getPaySystemIdList ()
 
 save ()
 
 getDeliverySystemId ()
 
 getPaymentSystemId ()
 
- Открытые члены унаследованные от OrderBase
 getInternalId ()
 Return internal index of order. Подробнее...
 
 isSaveRunning ()
 
 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 ()
 
 isExternal ()
 Return TRUE if order is external. Подробнее...
 
 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. Подробнее...
 
 getTax ()
 Get the entity of taxes. Подробнее...
 
 isNew ()
 
 resetTax ()
 Reset the value of taxes. Подробнее...
 
 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. Подробнее...
 
 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)
 
 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. Подробнее...
 
- Открытые члены унаследованные от IBusinessValueProvider
 getPersonTypeId ()
 

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

static getRegistryType ()
 
static getUfId ()
 
static lock ($id)
 Lock order. Подробнее...
 
static unlock ($id)
 Unlock order. Подробнее...
 
static isLocked ($id)
 Return TRUE if order is locked. Подробнее...
 
static getLockedStatus ($id)
 Return order locked status. Подробнее...
 
static getList (array $parameters=array())
 
- Открытые статические члены унаследованные от OrderBase
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 deleteNoDemand ($id)
 
static delete ($id)
 Delete order. Подробнее...
 
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_LOCK_STATUS_RED = 'red'
 
const SALE_ORDER_LOCK_STATUS_GREEN = 'green'
 
const SALE_ORDER_LOCK_STATUS_YELLOW = 'yellow'
 
- Поля данных унаследованные от OrderBase
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_'
 

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

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

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

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

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

 $shipmentCollection
 
 $paymentCollection
 
 $tradeBindingCollection
 
 $printedChecks = array()
 
- Защищенные данные унаследованные от OrderBase
 $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
 

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

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

Методы

◆ add()

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

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

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

2365  {
2366  $result = parent::add();
2367 
2368  $registry = Registry::getInstance(static::getRegistryType());
2369 
2370  /** @var OrderHistory $orderHistory */
2371  $orderHistory = $registry->getOrderHistoryClassName();
2372  $orderHistory::addAction('ORDER', $result->getId(), 'ORDER_ADDED', $result->getId(), $this);
2373 
2374  return $result;
2375  }

◆ addChangesToHistory()

addChangesToHistory (   $name,
  $oldValue = null,
  $value = null 
)
protected

Save field modify to history.

Аргументы
string$nameField name.
null | string$oldValueOld value.
null | string$valueNew value.

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

2554  {
2555  if ($this->getId() > 0)
2556  {
2557  $historyFields = array();
2558  if ($name == "PRICE")
2559  {
2560  $historyFields['CURRENCY'] = $this->getCurrency();
2561  }
2562 
2563  $historyFields['OLD_'.$name] = $oldValue;
2564 
2565  $registry = Registry::getInstance(static::getRegistryType());
2566 
2567  /** @var OrderHistory $orderHistory */
2568  $orderHistory = $registry->getOrderHistoryClassName();
2569  $orderHistory::addField(
2570  'ORDER',
2571  $this->getId(),
2572  $name,
2573  $oldValue,
2574  $value,
2575  $this->getId(),
2576  $this,
2577  $historyFields
2578  );
2579  }
2580  }

◆ addInternal()

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

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

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

2499  {
2500  return Internals\OrderTable::add($data);
2501  }

◆ addPrintedCheck()

addPrintedCheck (   $check)

Add printed check to order.

Аргументы
$check

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

109  {
110  $this->printedChecks[] = $check;
111  }

◆ appendBasket()

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

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

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

701  {
702  $result = new Result();
703 
704  $isStartField = $this->isStartField();
705 
706  $r = parent::appendBasket($basket);
707  if (!$r->isSuccess())
708  {
709  $result->addErrors($r->getErrors());
710  return $result;
711  }
712 
713  /** @var ShipmentCollection $shipmentCollection */
714  if (!$shipmentCollection = $this->getShipmentCollection())
715  {
716  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
717  }
718 
719  /** @var Result $r */
720  $result = $shipmentCollection->resetCollection();
721  if (!$r->isSuccess())
722  {
723  $result->addErrors($r->getErrors());
724  return $result;
725  }
726 
727  if (!$this->isMathActionOnly())
728  {
729  /** @var Result $r */
730  $r = $this->refreshData();
731  if (!$r->isSuccess())
732  {
733  $result->addErrors($r->getErrors());
734  }
735  }
736 
737  if ($isStartField)
738  {
739  $hasMeaningfulFields = $this->hasMeaningfulField();
740 
741  /** @var Result $r */
742  $r = $this->doFinalAction($hasMeaningfulFields);
743  if (!$r->isSuccess())
744  {
745  $result->addErrors($r->getErrors());
746  }
747  }
748 
749  return $result;
750  }

◆ applyDiscount()

applyDiscount ( array  $data)

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

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

1787  {
1788  $r = parent::applyDiscount($data);
1789  if (!$r->isSuccess())
1790  {
1791  return $r;
1792  }
1793 
1794  if (isset($data['SHIPMENT']) && intval($data['SHIPMENT']) > 0
1795  && (isset($data['PRICE_DELIVERY']) && floatval($data['PRICE_DELIVERY']) >= 0
1796  || isset($data['DISCOUNT_PRICE']) && floatval($data['DISCOUNT_PRICE']) >= 0))
1797  {
1798  /** @var ShipmentCollection $shipmentCollection */
1799  if ($shipmentCollection = $this->getShipmentCollection())
1800  {
1801  /** @var Shipment $shipment */
1802  if ($shipment = $shipmentCollection->getItemByShipmentCode($data['SHIPMENT']))
1803  {
1804  if (!$shipment->isCustomPrice())
1805  {
1806  $data['PRICE_DELIVERY'] = (float)$data['PRICE_DELIVERY'];
1807  $data['DISCOUNT_PRICE'] = (float)$data['DISCOUNT_PRICE'];
1808  if ($data['PRICE_DELIVERY'] >= 0 && $data['PRICE_DELIVERY'] != $shipment->getPrice())
1809  {
1810  $data['PRICE_DELIVERY'] = PriceMaths::roundPrecision(floatval($data['PRICE_DELIVERY']));
1811  $shipment->setField('PRICE_DELIVERY', $data['PRICE_DELIVERY']);
1812  }
1813 
1814  if ($data['DISCOUNT_PRICE'] != $shipment->getField('DISCOUNT_PRICE'))
1815  {
1816  $data['DISCOUNT_PRICE'] = PriceMaths::roundPrecision(floatval($data['DISCOUNT_PRICE']));
1817  $shipment->setField('DISCOUNT_PRICE', $data['DISCOUNT_PRICE']);
1818  }
1819  }
1820 
1821  }
1822  }
1823  }
1824 
1825  return new Result();
1826  }

◆ calculatePrice()

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

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

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

2243  {
2244  $price = parent::calculatePrice();
2246 
2247  return $price + $shipmentCollection->getPriceDelivery();
2248  }

◆ calculateVat()

calculateVat ( )
protected
Возвращает
array

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

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

2160  {
2161  $vatInfo = parent::calculateVat();
2162 
2164  if ($shipmentCollection)
2165  {
2166  /** @var Shipment $shipment */
2167  foreach ($shipmentCollection as $shipment)
2168  {
2169  $rate = $shipment->getVatRate();
2170  if ($rate)
2171  {
2172  $vatInfo['VAT_SUM'] += $shipment->getVatSum();
2173  $vatInfo['VAT_RATE'] = max($vatInfo['VAT_RATE'], $rate);
2174  }
2175  }
2176  }
2177 
2178  return $vatInfo;
2179  }

◆ callEventOnSaleOrderEntitySaved()

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

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

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

2421  {
2422  parent::callEventOnSaleOrderEntitySaved();
2423 
2424  $changeMeaningfulFields = array(
2425  "PERSON_TYPE_ID",
2426  "CANCELED",
2427  "STATUS_ID",
2428  "MARKED",
2429  "PRICE",
2430  "SUM_PAID",
2431  "USER_ID",
2432  "EXTERNAL_ORDER",
2433  );
2434 
2435  if ($this->isChanged())
2436  {
2437  $logFields = array();
2438 
2439  if (!$this->isNew)
2440  {
2441  $fields = $this->getFields();
2442  $originalValues = $fields->getOriginalValues();
2443 
2444  foreach($originalValues as $originalFieldName => $originalFieldValue)
2445  {
2446  if (in_array($originalFieldName, $changeMeaningfulFields) && $this->getField($originalFieldName) != $originalFieldValue)
2447  {
2448  $logFields[$originalFieldName] = $this->getField($originalFieldName);
2449  $logFields['OLD_'.$originalFieldName] = $originalFieldValue;
2450  }
2451  }
2452 
2453  $registry = Registry::getInstance(static::getRegistryType());
2454 
2455  /** @var OrderHistory $orderHistory */
2456  $orderHistory = $registry->getOrderHistoryClassName();
2457  $orderHistory::addLog(
2458  'ORDER',
2459  $this->getId(),
2460  "ORDER_UPDATE",
2461  $this->getId(),
2462  $this,
2463  $logFields,
2464  $orderHistory::SALE_ORDER_HISTORY_LOG_LEVEL_1
2465  );
2466  }
2467  }
2468  }

◆ callEventOnSaleOrderSaved()

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

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

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

2475  {
2476  $registry = Registry::getInstance(static::getRegistryType());
2477 
2478  /** @var OrderHistory $orderHistory */
2479  $orderHistory = $registry->getOrderHistoryClassName();
2480  $orderHistory::addLog(
2481  'ORDER',
2482  $this->getId(),
2483  'ORDER_EVENT_ON_ORDER_SAVED',
2484  null,
2485  null,
2486  array(),
2487  $orderHistory::SALE_ORDER_HISTORY_LOG_LEVEL_1
2488  );
2489 
2490  parent::callEventOnSaleOrderSaved();
2491  }

◆ clearChanged()

clearChanged ( )

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

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

2088  {
2089  parent::clearChanged();
2090 
2091  if ($paymentCollection = $this->getPaymentCollection())
2092  {
2093  $paymentCollection->clearChanged();
2094  }
2095 
2096  if ($shipmentCollection = $this->getShipmentCollection())
2097  {
2098  $shipmentCollection->clearChanged();
2099  }
2100 
2101  if ($tradeCollection = $this->getTradeBindingCollection())
2102  {
2103  $tradeCollection->clearChanged();
2104  }
2105  }

◆ cloneEntities()

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

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

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

2029  {
2030  /** @var Order $orderClone */
2031  parent::cloneEntities($cloneEntity);
2032 
2033  $orderClone = $cloneEntity[$this];
2034 
2035  /** @var ShipmentCollection $shipmentCollection */
2036  if ($shipmentCollection = $this->getShipmentCollection())
2037  {
2038  $orderClone->shipmentCollection = $shipmentCollection->createClone($cloneEntity);
2039  }
2040 
2041  /** @var PaymentCollection $paymentCollection */
2042  if ($paymentCollection = $this->getPaymentCollection())
2043  {
2044  $orderClone->paymentCollection = $paymentCollection->createClone($cloneEntity);
2045  }
2046 
2047  /** @var TradeBindingCollection $tradeBindingCollection */
2048  if ($tradeBindingCollection = $this->getTradeBindingCollection())
2049  {
2050  $orderClone->tradeBindingCollection = $tradeBindingCollection->createClone($cloneEntity);
2051  }
2052  }

◆ deleteEntities()

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

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

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

888  {
889  parent::deleteEntities($order);
890 
891  if (!($order instanceof Order))
892  throw new Main\ArgumentTypeException($order);
893 
894  /** @var ShipmentCollection $shipmentCollection */
895  if ($shipmentCollection = $order->getShipmentCollection())
896  {
897  /** @var Shipment $shipment */
898  foreach ($shipmentCollection as $shipment)
899  {
900  $shipment->delete();
901  }
902  }
903 
904  /** @var PaymentCollection $paymentCollection */
905  if ($paymentCollection = $order->getPaymentCollection())
906  {
907  /** @var Payment $payment */
908  foreach ($paymentCollection as $payment)
909  {
910  $payment->delete();
911  }
912  }
913  }

◆ deleteEntitiesNoDemand()

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

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

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

856  {
857  $r = parent::deleteEntitiesNoDemand($orderId);
858  if (!$r->isSuccess())
859  return $r;
860 
861  $registry = Registry::getInstance(static::getRegistryType());
862 
863  /** @var Shipment $shipmentClassName */
864  $shipmentClassName = $registry->getShipmentClassName();
865  $shipmentClassName::deleteNoDemand($orderId);
866  if (!$r->isSuccess())
867  return $r;
868 
869  /** @var Payment $paymentClassName */
870  $paymentClassName = $registry->getPaymentClassName();
871  $paymentClassName::deleteNoDemand($orderId);
872  if (!$r->isSuccess())
873  return $r;
874 
875  return new Result();
876  }

◆ deleteExternalEntities()

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

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

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

2529  {
2530  parent::deleteExternalEntities($orderId);
2531 
2532  $registry = Registry::getInstance(static::getRegistryType());
2533 
2534  TradingPlatform\OrderTable::deleteByOrderId($orderId);
2536 
2537  /** @var EntityMarker $entityMarker */
2538  $entityMarker = $registry->getEntityMarkerClassName();
2539  $entityMarker::deleteByOrderId($orderId);
2540 
2541  /** @var OrderHistory $orderHistory */
2542  $orderHistory = $registry->getOrderHistoryClassName();
2543  $orderHistory::deleteByOrderId($orderId);
2544  }

◆ deleteInternal()

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

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

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

2520  {
2521  return Internals\OrderTable::delete($primary);
2522  }

◆ getBusinessValueProviderInstance()

getBusinessValueProviderInstance (   $mapping)
Аргументы
$mapping
Возвращает
Order|null|string

Замещает IBusinessValueProvider.

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

1988  {
1989  $providerInstance = null;
1990 
1991  if (is_array($mapping))
1992  {
1993  switch ($mapping['PROVIDER_KEY'])
1994  {
1995  case 'ORDER':
1996  case 'PROPERTY':
1997  $providerInstance = $this;
1998  break;
1999  case 'USER':
2000  $providerInstance = $this->getField('USER_ID');
2001  break;
2002  case 'COMPANY':
2003  $providerInstance = $this->getField('COMPANY_ID');
2004  break;
2005  }
2006  }
2007 
2008  return $providerInstance;
2009  }

◆ getDeliveryIdList()

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

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

2113  {
2114  $result = array();
2115 
2116  /** @var ShipmentCollection $collection */
2117  $collection = $this->getShipmentCollection();
2118 
2119  /** @var Shipment $shipment */
2120  foreach ($collection->getNotSystemItems() as $shipment)
2121  {
2122  if ($shipment->getDeliveryId() > 0)
2123  {
2124  $result[] = $shipment->getDeliveryId();
2125  }
2126  }
2127 
2128  return $result;
2129  }

◆ getDeliverySystemId()

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

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

2589  {
2590  return $this->getDeliveryIdList();
2591  }

◆ getFieldsMap()

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

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

50  {
52  }

◆ getList()

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

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

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

2018  {
2019  return Internals\OrderTable::getList($parameters);
2020  }

◆ getLockedStatus()

static getLockedStatus (   $id)
static

Return order locked status.

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

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

1924  {
1925  $result = new Result();
1926 
1927  $res = static::getList(array(
1928  'filter' => array('=ID' => $id),
1929  'select' => array(
1930  'LOCKED_BY',
1931  'LOCK_STATUS',
1932  'DATE_LOCK'
1933  )
1934  ));
1935 
1936  if ($data = $res->fetch())
1937  {
1938  $result->addData(array(
1939  'LOCKED_BY' => $data['LOCKED_BY'],
1940  'LOCK_STATUS' => $data['LOCK_STATUS'],
1941  'DATE_LOCK' => $data['DATE_LOCK'],
1942  ));
1943  }
1944 
1945  return $result;
1946  }

◆ getPaymentCollection()

getPaymentCollection ( )

Return payment collection.

Возвращает
PaymentCollection

Замещает IPaymentOrder.

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

793  {
794  if (empty($this->paymentCollection))
795  {
796  $this->paymentCollection = $this->loadPaymentCollection();
797  }
798 
799  return $this->paymentCollection;
800  }

◆ getPaymentSystemId()

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

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

2599  {
2600  return $this->getPaySystemIdList();
2601  }

◆ getPaySystemIdList()

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

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

2136  {
2137  $result = array();
2138  /** @var PaymentCollection $paymentCollection */
2139  if (!$paymentCollection = $this->getPaymentCollection())
2140  {
2141  throw new Main\ObjectNotFoundException('Entity "PaymentCollection" not found');
2142  }
2143 
2144  /** @var Payment $payment */
2145  foreach ($paymentCollection as $payment)
2146  {
2147  if ($payment->getPaymentSystemId() > 0)
2148  {
2149  $result[] = $payment->getPaymentSystemId();
2150  }
2151  }
2152 
2153  return $result;
2154  }

◆ getPrintedChecks()

getPrintedChecks ( )

Return printed check list.

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

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

69  {
70  if (!$this->printedChecks
71  && !$this->isNew()
72  )
73  {
74  $this->printedChecks = $this->loadPrintedChecks();
75  }
76 
77  return $this->printedChecks;
78  }

◆ getRegistryType()

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

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

41  {
43  }

◆ getShipmentCollection()

getShipmentCollection ( )

Return shipment collection.

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

Замещает IShipmentOrder.

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

760  {
761  if (empty($this->shipmentCollection))
762  {
763  $this->shipmentCollection = $this->loadShipmentCollection();
764  }
765 
766  return $this->shipmentCollection;
767  }

◆ getStatusOnPaid()

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

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

1553  {
1554  $registry = Registry::getInstance(static::getRegistryType());
1555 
1556  $optionClassName = $registry->get(Registry::ENTITY_OPTIONS);
1557  return $orderStatus = $optionClassName::get('sale', 'status_on_paid', '');
1558  }

◆ getStatusOnPartialPaid()

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

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

1565  {
1566  $registry = Registry::getInstance(static::getRegistryType());
1567 
1568  $optionClassName = $registry->get(Registry::ENTITY_OPTIONS);
1569  return $orderStatus = $optionClassName::get('sale', 'status_on_half_paid', '');
1570  }

◆ getTradeBindingCollection()

getTradeBindingCollection ( )

Return trade binding collection.

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

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

778  {
779  if (empty($this->tradeBindingCollection))
780  {
781  $this->tradeBindingCollection = $this->loadTradeBindingCollection();
782  }
783 
784  return $this->tradeBindingCollection;
785  }

◆ getUfId()

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

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

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

58  {
60  }

◆ isChanged()

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

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

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

2058  {
2059  if (parent::isChanged())
2060  return true;
2061 
2062  /** @var PaymentCollection $paymentCollection */
2063  if ($paymentCollection = $this->getPaymentCollection())
2064  {
2065  if ($paymentCollection->isChanged())
2066  {
2067  return true;
2068  }
2069  }
2070 
2071  /** @var ShipmentCollection $shipmentCollection */
2072  if ($shipmentCollection = $this->getShipmentCollection())
2073  {
2074  if ($shipmentCollection->isChanged())
2075  {
2076  return true;
2077  }
2078  }
2079 
2080  return false;
2081  }

◆ isLocked()

static isLocked (   $id)
static

Return TRUE if order is locked.

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

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

1899  {
1900  /** @var Result $r */
1901  $r = static::getLockedStatus($id);
1902  if ($r->isSuccess())
1903  {
1904  $lockResultData = $r->getData();
1905 
1906  if (array_key_exists('LOCK_STATUS', $lockResultData)
1907  && $lockResultData['LOCK_STATUS'] == static::SALE_ORDER_LOCK_STATUS_RED)
1908  {
1909  return true;
1910  }
1911  }
1912 
1913  return false;
1914  }

◆ isShipped()

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

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

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

919  {
921  return $shipmentCollection->isShipped();
922  }

◆ loadPaymentCollection()

loadPaymentCollection ( )

Load payment collection.

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

Замещает IPaymentOrder.

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

825  {
826  $registry = Registry::getInstance(static::getRegistryType());
827 
828  /** @var PaymentCollection $paymentCollectionClassName */
829  $paymentCollectionClassName = $registry->getPaymentCollectionClassName();
830  return $paymentCollectionClassName::load($this);
831  }

◆ loadPrintedChecks()

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

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

85  {
86  $result = [];
87 
89  'filter' => [
90  '=ORDER_ID' => $this->getId()
91  ]
92  ]);
93 
94  while ($data = $dbRes->fetch())
95  {
96  $result[] = Cashbox\CheckManager::create($data);
97  }
98 
99  return $result;
100  }

◆ loadShipmentCollection()

loadShipmentCollection ( )

Load shipment collection.

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

Замещает IShipmentOrder.

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

810  {
811  $registry = Registry::getInstance(static::getRegistryType());
812 
813  /** @var ShipmentCollection $shipmentCollectionClassName */
814  $shipmentCollectionClassName = $registry->getShipmentCollectionClassName();
815  return $shipmentCollectionClassName::load($this);
816  }

◆ loadTradeBindingCollection()

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

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

840  {
841  $registry = Registry::getInstance(static::getRegistryType());
842 
843  /** @var TradeBindingCollection $tradeBindingCollection */
845 
846  return $tradeBindingCollection::load($this);
847  }

◆ lock()

static lock (   $id)
static

Lock order.

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

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

1836  {
1837  global $USER;
1838 
1839  $result = new Result();
1840  $id = (int)$id;
1841  if ($id <= 0)
1842  {
1843  $result->addError( new ResultError(Loc::getMessage('SALE_ORDER_WRONG_ID'), 'SALE_ORDER_WRONG_ID') );
1844  return $result;
1845  }
1846 
1847  return static::updateInternal($id, array(
1848  'DATE_LOCK' => new Main\Type\DateTime(),
1849  'LOCKED_BY' => (is_object($USER) ? $USER->GetID(): false)
1850  ));
1851  }

◆ onAfterBasketRefresh()

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

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

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

1335  {
1336  $result = new Result();
1337 
1339  if ($shipmentCollection)
1340  {
1341  /** @var \Bitrix\Sale\Shipment $shipment */
1342  foreach ($shipmentCollection as $shipment)
1343  {
1344  if ($shipment->isShipped() || !$shipment->needReservation())
1345  continue;
1346 
1347  $r = $shipment->tryReserve();
1348  if(!$r->isSuccess())
1349  {
1350  $result->addErrors($r->getErrors());
1351  }
1352  }
1353  }
1354 
1355  return $result;
1356  }

◆ onAfterSave()

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

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

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

2306  {
2307  $result = parent::onAfterSave();
2308  if (!$result->isSuccess())
2309  {
2310  return $result;
2311  }
2312 
2313  global $CACHE_MANAGER;
2314 
2315  if (defined("CACHED_b_sale_order")
2316  && (
2317  $this->isNew
2318  || (
2319  $this->isChanged()
2320  && $this->getField("UPDATED_1C") != "Y"
2321  )
2322  )
2323  )
2324  {
2325  $CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders");
2326  $CACHE_MANAGER->SetImmediate("sale_orders", true);
2327  }
2328 
2329  return new Result();
2330  }

◆ onBasketModify()

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

Modify basket.

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

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

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

1224  {
1225  $result = new Result();
1226 
1227  if ($action === EventActions::DELETE)
1228  {
1229  $r = parent::onBasketModify($action, $basketItem, $name, $oldValue, $value);
1230  if (!$r->isSuccess())
1231  {
1232  $result->addErrors($r->getErrors());
1233  return $result;
1234  }
1235 
1236  return $result;
1237  }
1238  elseif ($action === EventActions::ADD)
1239  {
1240  if ($basketItem->getField('ORDER_ID'))
1241  {
1242  return $result;
1243  }
1244 
1245  return $this->getShipmentCollection()->onBasketModify($action, $basketItem, $name, $oldValue, $value);
1246  }
1247  elseif ($action !== EventActions::UPDATE)
1248  {
1249  return $result;
1250  }
1251 
1252  if ($name === "QUANTITY")
1253  {
1254  $r = parent::onBasketModify($action, $basketItem, $name, $oldValue, $value);
1255  if (!$r->isSuccess())
1256  {
1257  $result->addErrors($r->getErrors());
1258  return $result;
1259  }
1260 
1262 
1263  $r = $shipmentCollection->onBasketModify($action, $basketItem, $name, $oldValue, $value);
1264  if (!$r->isSuccess())
1265  {
1266  $result->addErrors($r->getErrors());
1267  return $result;
1268  }
1269  elseif ($r->hasWarnings())
1270  {
1271  $result->addWarnings($r->getWarnings());
1272  }
1273 
1274  return $result;
1275  }
1276  elseif ($name === "PRICE")
1277  {
1278  $r = parent::onBasketModify($action, $basketItem, $name, $oldValue, $value);
1279  if (!$r->isSuccess())
1280  {
1281  $result->addErrors($r->getErrors());
1282  return $result;
1283  }
1284 
1285  if ($this->getId() == 0 && !$this->isMathActionOnly())
1286  {
1288 
1289  $r = $shipmentCollection->refreshData();
1290  if (!$r->isSuccess())
1291  $result->addErrors($r->getErrors());
1292  }
1293  }
1294  elseif ($name === 'WEIGHT')
1295  {
1296  return $this->getShipmentCollection()->onBasketModify($action, $basketItem, $name, $oldValue, $value);
1297  }
1298  else
1299  {
1300  $r = parent::onBasketModify($action, $basketItem, $name, $oldValue, $value);
1301  if (!$r->isSuccess())
1302  {
1303  $result->addErrors($r->getErrors());
1304  return $result;
1305  }
1306  }
1307 
1308  return $result;
1309  }

◆ onBeforeBasketItemDelete()

onBeforeBasketItemDelete ( BasketItem  $basketItem)

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

1186  {
1187  $result = new Result();
1188 
1189  /** @var ShipmentCollection $shipmentCollection */
1190  if (!$shipmentCollection = $this->getShipmentCollection())
1191  {
1192  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
1193  }
1194 
1195  $r = $shipmentCollection->onBeforeBasketItemDelete($basketItem);
1196  if (!$r->isSuccess())
1197  {
1198  $result->addErrors($r->getErrors());
1199  return $result;
1200  }
1201 
1202 
1203  return $result;
1204  }

◆ onBeforeBasketRefresh()

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

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

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

1315  {
1316  $result = new Result();
1317 
1319  if ($shipmentCollection)
1320  {
1321  $r = $shipmentCollection->tryUnreserve();
1322  if(!$r->isSuccess())
1323  {
1324  $result->addErrors($r->getErrors());
1325  }
1326  }
1327 
1328  return $result;
1329  }

◆ onBeforeSave()

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

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

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

2258  {
2259  $registry = Registry::getInstance(static::getRegistryType());
2260 
2261  /** @var EntityMarker $entityMarker */
2262  $entityMarker = $registry->getEntityMarkerClassName();
2263 
2264  /** @var Result $result */
2265  $result = Internals\Catalog\Provider::save($this);
2266  if ($result->hasWarnings())
2267  {
2268  $entityMarker::addMarker($this, $this, $result);
2269  if ($this->getId() > 0)
2270  {
2271  static::updateInternal($this->getId(), ['MARKED' => 'Y']);
2272  }
2273  }
2274 
2275  $entityMarker::refreshMarkers($this);
2276 
2277  if (!$result->isSuccess())
2278  {
2279  $resultPool = $entityMarker::getPoolAsResult($this);
2280  if (!$resultPool->isSuccess())
2281  {
2282  foreach ($resultPool->getErrors() as $errorPool)
2283  {
2284  foreach ($result->getErrors() as $error)
2285  {
2286  if ($errorPool->getCode() == $error->getCode() && $errorPool->getMessage() == $error->getMessage())
2287  {
2288  continue 2;
2289  }
2290  }
2291 
2292  $result->addError($errorPool);
2293  }
2294  }
2295 
2296  $entityMarker::saveMarkers($this);
2297  }
2298 
2299  return $result;
2300  }

◆ onFieldModify()

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

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

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

1075  {
1076  $result = parent::onFieldModify($name, $oldValue, $value);
1077 
1078  if ($name == "PRICE")
1079  {
1080  /** @var ShipmentCollection $shipmentCollection */
1081  if (!$shipmentCollection = $this->getShipmentCollection())
1082  {
1083  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
1084  }
1085 
1086  $r = $shipmentCollection->onOrderModify($name, $oldValue, $value);
1087  if (!$r->isSuccess())
1088  {
1089  $result->addErrors($r->getErrors());
1090  return $result;
1091  }
1092 
1093  /** @var PaymentCollection $paymentCollection */
1094  if (!$paymentCollection = $this->getPaymentCollection())
1095  {
1096  throw new Main\ObjectNotFoundException('Entity "PaymentCollection" not found');
1097  }
1098 
1099  $r = $paymentCollection->onOrderModify($name, $oldValue, $value);
1100  if (!$r->isSuccess())
1101  {
1102  $result->addErrors($r->getErrors());
1103  return $result;
1104  }
1105 
1106  /** @var Result $r */
1107  $r = $this->syncOrderAndPayments();
1108  if (!$r->isSuccess())
1109  {
1110  $result->addErrors($r->getErrors());
1111  }
1112  }
1113  elseif($name == "MARKED")
1114  {
1115  /** @var ShipmentCollection $shipmentCollection */
1116  if (!$shipmentCollection = $this->getShipmentCollection())
1117  {
1118  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
1119  }
1120 
1121  $r = $shipmentCollection->onOrderModify($name, $oldValue, $value);
1122  if (!$r->isSuccess())
1123  {
1124  $result->addErrors($r->getErrors());
1125  return $result;
1126  }
1127  }
1128 
1129  return $result;
1130  }

◆ onOrderModify()

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

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

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

1141  {
1142  $result = new Result();
1143 
1144  /** @var PaymentCollection $paymentCollection */
1145  if (!$paymentCollection = $this->getPaymentCollection())
1146  {
1147  throw new Main\ObjectNotFoundException('Entity "PaymentCollection" not found');
1148  }
1149 
1150  $r = $paymentCollection->onOrderModify($name, $oldValue, $value);
1151  if (!$r->isSuccess())
1152  {
1153  $result->addErrors($r->getErrors());
1154  return $result;
1155  }
1156 
1157  /** @var ShipmentCollection $shipmentCollection */
1158  if (!$shipmentCollection = $this->getShipmentCollection())
1159  {
1160  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
1161  }
1162 
1163  $r = $shipmentCollection->onOrderModify($name, $oldValue, $value);
1164  if (!$r->isSuccess())
1165  {
1166  $result->addErrors($r->getErrors());
1167  return $result;
1168  }
1169 
1170  return $result;
1171  }

◆ onPaymentCollectionModify()

onPaymentCollectionModify (   $action,
Payment  $payment,
  $name = null,
  $oldValue = null,
  $value = null 
)
Аргументы
$action
Payment$payment
null$name
null$oldValue
null$value
Возвращает
Result
Исключения
Main

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

939  {
940  $result = new Result();
941 
942  if ($action == EventActions::DELETE)
943  {
944  if ($this->getField('PAY_SYSTEM_ID') == $payment->getPaymentSystemId())
945  {
946  /** @var PaymentCollection $paymentCollection */
947  if (!$paymentCollection = $payment->getCollection())
948  {
949  throw new Main\ObjectNotFoundException('Entity "PaymentCollection" not found');
950  }
951 
952  /** @var Payment $entityPayment */
953  foreach ($paymentCollection as $entityPayment)
954  {
955  if (intval($entityPayment->getField('PAY_SYSTEM_ID')) > 0
956  && intval($entityPayment->getField('PAY_SYSTEM_ID')) != $payment->getPaymentSystemId())
957  {
958  $this->setFieldNoDemand('PAY_SYSTEM_ID', $entityPayment->getField('PAY_SYSTEM_ID'));
959  break;
960  }
961  }
962  }
963  }
964  elseif ($action === EventActions::ADD)
965  {
966  if ((int)$payment->getId() === 0)
967  {
968  $this->getPropertyCollection()->refreshRelated();
969  }
970  }
971 
972  if ($action != EventActions::UPDATE)
973  {
974  return $result;
975  }
976 
977  if (($name == "CURRENCY") && ($value != $this->getField("CURRENCY")))
978  {
979  throw new Main\NotImplementedException();
980  }
981 
982  if ($name == "SUM" || $name == "PAID")
983  {
984  if ($this->isCanceled())
985  {
986  $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_PAID_ORDER_CANCELED'), 'SALE_ORDER_PAID_ORDER_CANCELED'));
987  return $result;
988  }
989 
990  if ($name == "SUM"
991  && !$payment->isPaid()
992  )
993  {
994  return $result;
995  }
996 
997  $r = $this->syncOrderAndPayments($payment);
998  if (!$r->isSuccess())
999  {
1000  $result->addErrors($r->getErrors());
1001  }
1002  elseif ($r->hasWarnings())
1003  {
1004  $result->addWarnings($r->getWarnings());
1005  }
1006  }
1007  elseif ($name == "PAY_SYSTEM_ID")
1008  {
1009  $this->setFieldNoDemand('PAY_SYSTEM_ID', $payment->getField('PAY_SYSTEM_ID'));
1010 
1011  $this->getPropertyCollection()->refreshRelated();
1012  }
1013  elseif ($name == "DATE_PAID")
1014  {
1015  $this->setFieldNoDemand('DATE_PAYED', $payment->getField('DATE_PAID'));
1016  }
1017  elseif ($name == "PAY_VOUCHER_NUM")
1018  {
1019  $this->setFieldNoDemand('PAY_VOUCHER_NUM', $payment->getField('PAY_VOUCHER_NUM'));
1020  }
1021  elseif ($name == "PAY_VOUCHER_DATE")
1022  {
1023  $this->setFieldNoDemand('PAY_VOUCHER_DATE', $payment->getField('PAY_VOUCHER_DATE'));
1024  }
1025  elseif ($name == "EMP_PAID_ID")
1026  {
1027  $this->setFieldNoDemand('EMP_PAYED_ID', $payment->getField('EMP_PAID_ID'));
1028  }
1029  elseif ($name == "MARKED")
1030  {
1031  if ($value == "Y")
1032  {
1033  /** @var Result $r */
1034  $r = $this->setField('MARKED', 'Y');
1035  if (!$r->isSuccess())
1036  {
1037  $result->addErrors($r->getErrors());
1038  }
1039  }
1040  }
1041  elseif ($name == "REASON_MARKED")
1042  {
1043  $r = $this->setReasonMarked($value);
1044  if (!$r->isSuccess())
1045  {
1046  $result->addErrors($r->getErrors());
1047  }
1048  }
1049 
1050  if ($value != $oldValue)
1051  {
1052  $fields = $this->fields->getChangedValues();
1053  if (!empty($fields) && !array_key_exists("UPDATED_1C", $fields) && $name != 'UPDATED_1C')
1054  {
1055  parent::setField("UPDATED_1C", "N");
1056  }
1057  }
1058 
1059  return $result;
1060  }

◆ onShipmentCollectionModify()

onShipmentCollectionModify (   $action,
Shipment  $shipment,
  $name = null,
  $oldValue = null,
  $value = null 
)

Modify shipment collection.

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

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

131  {
132  $result = new Result();
133 
134  $registry = Registry::getInstance(static::getRegistryType());
135 
136  $optionClassName = $registry->get(Registry::ENTITY_OPTIONS);
137 
138  /** @var EntityMarker $entityMarker */
139  $entityMarker = $registry->getEntityMarkerClassName();
140 
141  if ($action == EventActions::DELETE)
142  {
143  if ($this->getField('DELIVERY_ID') == $shipment->getDeliveryId())
144  {
145  /** @var ShipmentCollection $shipmentCollection */
146  if (!$shipmentCollection = $shipment->getCollection())
147  {
148  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
149  }
150 
151  $foundShipment = false;
152 
153  /** @var Shipment $entityShipment */
154  foreach ($shipmentCollection->getNotSystemItems() as $entityShipment)
155  {
156  if (intval($entityShipment->getField('DELIVERY_ID')) > 0)
157  {
158  $foundShipment = true;
159  $this->setFieldNoDemand('DELIVERY_ID', $entityShipment->getField('DELIVERY_ID'));
160  break;
161  }
162  }
163 
164  if (!$foundShipment && !$shipment->isSystem())
165  {
166  /** @var Shipment $systemShipment */
167  if (($systemShipment = $shipmentCollection->getSystemShipment()) && intval($systemShipment->getField('DELIVERY_ID')) > 0)
168  {
169  $this->setFieldNoDemand('DELIVERY_ID', $systemShipment->getField('DELIVERY_ID'));
170  }
171  }
172  }
173  }
174  elseif ($action === EventActions::ADD)
175  {
176  if ((int)$shipment->getId() === 0)
177  {
178  $this->getPropertyCollection()->refreshRelated();
179  }
180  }
181 
182  if ($action != EventActions::UPDATE)
183  return $result;
184 
185 
186  if ($name == "ALLOW_DELIVERY")
187  {
188  if ($this->isCanceled())
189  {
190  $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_ALLOW_DELIVERY_ORDER_CANCELED'), 'SALE_ORDER_ALLOW_DELIVERY_ORDER_CANCELED'));
191  return $result;
192  }
193 
194  $r = $shipment->deliver();
195  if ($r->isSuccess())
196  {
197  $eventManager = Main\EventManager::getInstance();
198  if ($eventsList = $eventManager->findEventHandlers('sale', EventActions::EVENT_ON_SHIPMENT_DELIVER))
199  {
200  $event = new Main\Event('sale', EventActions::EVENT_ON_SHIPMENT_DELIVER, array(
201  'ENTITY' =>$shipment
202  ));
203  $event->send();
204  }
205 
206  /** @var Notify $notifyClassName */
207  $notifyClassName = $registry->getNotifyClassName();
208  $notifyClassName::callNotify($shipment, EventActions::EVENT_ON_SHIPMENT_DELIVER);
209  }
210  else
211  {
212  $result->addErrors($r->getErrors());
213  }
214 
216  {
217  if ($value == "Y")
218  {
219  /** @var Result $r */
220  $r = $shipment->tryReserve();
221  if (!$r->isSuccess())
222  {
223  $result->addErrors($r->getErrors());
224  }
225 
226  if ($r->hasWarnings())
227  {
228  $result->addWarnings($r->getWarnings());
229  $entityMarker::addMarker($this, $shipment, $r);
230  if (!$shipment->isSystem())
231  {
232  $shipment->setField('MARKED', 'Y');
233  }
234  }
235  }
236  else
237  {
238  if (!$shipment->isShipped())
239  {
240  /** @var Result $r */
241  $r = $shipment->tryUnreserve();
242  if (!$r->isSuccess())
243  {
244  $result->addErrors($r->getErrors());
245  }
246 
247  if ($r->hasWarnings())
248  {
249  $result->addWarnings($r->getWarnings());
250  $entityMarker::addMarker($this, $shipment, $r);
251  if (!$shipment->isSystem())
252  {
253  $shipment->setField('MARKED', 'Y');
254  }
255  }
256  }
257  }
258 
259  if (!$result->isSuccess())
260  {
261  return $result;
262  }
263  }
264 
265  /** @var ShipmentCollection $shipmentCollection */
266  if (!$shipmentCollection = $this->getShipmentCollection())
267  {
268  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
269  }
270 
271  $orderStatus = null;
272 
273  if ($oldValue == "N")
274  {
275  if ($shipmentCollection->isAllowDelivery())
276  {
277  $orderStatus = $optionClassName::get('sale', 'status_on_allow_delivery', '');
278  }
279  elseif ($shipmentCollection->hasAllowDelivery())
280  {
281  $orderStatus = $optionClassName::get('sale', 'status_on_allow_delivery_one_of', '');
282  }
283  }
284 
285  if ($orderStatus !== null && $this->getField('STATUS_ID') != static::getFinalStatus())
286  {
287  if (strval($orderStatus) != '')
288  {
289  $r = $this->setField('STATUS_ID', $orderStatus);
290  if (!$r->isSuccess())
291  {
292  $result->addErrors($r->getErrors());
293  }
294 
295  if ($r->hasWarnings())
296  {
297  $result->addWarnings($r->getWarnings());
298  $entityMarker::addMarker($this, $this, $r);
299  $this->setField('MARKED', 'Y');
300  }
301  }
302  }
303 
304  if (Configuration::needShipOnAllowDelivery() && $value == "Y")
305  {
306  if (!$shipment->isEmpty())
307  {
308  $r = $shipment->setField("DEDUCTED", "Y");
309  if (!$r->isSuccess())
310  {
311  $result->addErrors($r->getErrors());
312  }
313 
314  if ($r->hasWarnings())
315  {
316  $result->addWarnings($r->getWarnings());
317  $entityMarker::addMarker($this, $shipment, $r);
318  if (!$shipment->isSystem())
319  {
320  $shipment->setField('MARKED', 'Y');
321  }
322  }
323  }
324  }
325 
326  if ($shipmentCollection->isAllowDelivery() && $this->getField('ALLOW_DELIVERY') == 'N')
327  $this->setFieldNoDemand('DATE_ALLOW_DELIVERY', new Type\DateTime());
328 
329  $this->setFieldNoDemand('ALLOW_DELIVERY', $shipmentCollection->isAllowDelivery() ? "Y" : "N");
330  }
331  elseif ($name == "DEDUCTED")
332  {
333  if ($this->isCanceled())
334  {
335  $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_SHIPMENT_ORDER_CANCELED'), 'SALE_ORDER_SHIPMENT_ORDER_CANCELED'));
336  return $result;
337  }
338 
340  {
341  if ($value == "Y")
342  {
343  /** @var Result $r */
344  $r = $shipment->tryReserve();
345  if (!$r->isSuccess())
346  {
347  $result->addErrors($r->getErrors());
348  }
349 
350  if ($r->hasWarnings())
351  {
352  $result->addWarnings($r->getWarnings());
353  $entityMarker::addMarker($this, $shipment, $r);
354  if (!$shipment->isSystem())
355  {
356  $shipment->setField('MARKED', 'Y');
357  }
358  }
359  }
360  else
361  {
362  $r = $shipment->tryUnreserve();
363  if (!$r->isSuccess())
364  {
365  $result->addErrors($r->getErrors());
366  }
367 
368  if ($r->hasWarnings())
369  {
370  $result->addWarnings($r->getWarnings());
371  $entityMarker::addMarker($this, $shipment, $r);
372  if (!$shipment->isSystem())
373  {
374  $shipment->setField('MARKED', 'Y');
375  }
376  }
377  }
378  }
379 
380  if ($value == "Y")
381  {
382  /** @var Result $r */
383  $r = $shipment->tryShip();
384  if (!$r->isSuccess())
385  {
386  $result->addErrors($r->getErrors());
387  }
388 
389  if ($r->hasWarnings())
390  {
391  $result->addWarnings($r->getWarnings());
392  $entityMarker::addMarker($this, $shipment, $r);
393  if (!$shipment->isSystem())
394  {
395  $shipment->setField('MARKED', 'Y');
396  }
397  }
398 
399  }
400  elseif ($oldValue == 'Y')
401  {
402  /** @var Result $r */
403  $r = $shipment->tryUnship();
404  if (!$r->isSuccess())
405  {
406  $result->addErrors($r->getErrors());
407  }
408 
409  if ($r->hasWarnings())
410  {
411  $result->addWarnings($r->getWarnings());
412  $entityMarker::addMarker($this, $shipment, $r);
413  if (!$shipment->isSystem())
414  {
415  $shipment->setField('MARKED', 'Y');
416  }
417  }
418  if ($shipment->needReservation())
419  {
420  $r = $shipment->tryReserve();
421  if (!$r->isSuccess())
422  {
423  $result->addErrors($r->getErrors());
424  }
425 
426  if ($r->hasWarnings())
427  {
428  $result->addWarnings($r->getWarnings());
429  $entityMarker::addMarker($this, $shipment, $r);
430  if (!$shipment->isSystem())
431  {
432  $shipment->setField('MARKED', 'Y');
433  }
434  }
435  }
436  }
437 
438  if (!$result->isSuccess())
439  {
440  return $result;
441  }
442 
443  /** @var ShipmentCollection $shipmentCollection */
444  if (!$shipmentCollection = $shipment->getCollection())
445  {
446  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
447  }
448 
449  $orderStatus = null;
450 
451  $allowSetStatus = false;
452 
453  if ($oldValue == "N")
454  {
455  if ($shipmentCollection->isShipped())
456  {
457  $orderStatus = $optionClassName::get('sale', 'status_on_shipped_shipment', '');
458  }
459  elseif ($shipmentCollection->hasShipped())
460  {
461  $orderStatus = $optionClassName::get('sale', 'status_on_shipped_shipment_one_of', '');
462  }
463  $allowSetStatus = ($this->getField('STATUS_ID') != static::getFinalStatus());
464  }
465  else
466  {
467  $fields = $this->getFields();
468  $originalValues = $fields->getOriginalValues();
469  if (!empty($originalValues['STATUS_ID']))
470  {
471  $orderStatus = $originalValues['STATUS_ID'];
472  $allowSetStatus = true;
473  }
474  }
475 
476  if (strval($orderStatus) != '' && $allowSetStatus)
477  {
478  if (strval($orderStatus) != '')
479  {
480  $r = $this->setField('STATUS_ID', $orderStatus);
481  if (!$r->isSuccess())
482  {
483  $result->addErrors($r->getErrors());
484  }
485  elseif ($r->hasWarnings())
486  {
487  $result->addWarnings($r->getWarnings());
488  $entityMarker::addMarker($this, $this, $r);
489  $this->setField('MARKED', 'Y');
490  }
491  }
492  }
493 
494  $this->setFieldNoDemand('DEDUCTED', $shipmentCollection->isShipped() ? "Y" : "N");
495 
496  if ($shipmentCollection->isShipped())
497  {
498  if (strval($shipment->getField('DATE_DEDUCTED')) != '')
499  {
500  $this->setFieldNoDemand('DATE_DEDUCTED', $shipment->getField('DATE_DEDUCTED'));
501  }
502  if (strval($shipment->getField('EMP_DEDUCTED_ID')) != '')
503  {
504  $this->setFieldNoDemand('EMP_DEDUCTED_ID', $shipment->getField('EMP_DEDUCTED_ID'));
505  }
506  }
507  }
508  elseif ($name == "MARKED")
509  {
510  if ($value == "Y")
511  {
512  /** @var Result $r */
513  $r = $this->setField('MARKED', 'Y');
514  if (!$r->isSuccess())
515  {
516  $result->addErrors($r->getErrors());
517  }
518  }
519  }
520  elseif ($name == "REASON_MARKED")
521  {
522  $r = $this->setReasonMarked($value);
523  if (!$r->isSuccess())
524  {
525  $result->addErrors($r->getErrors());
526  }
527  }
528  elseif ($name == "BASE_PRICE_DELIVERY")
529  {
530  if ($this->isCanceled())
531  {
532  $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_PRICE_DELIVERY_ORDER_CANCELED'), 'SALE_ORDER_PRICE_DELIVERY_ORDER_CANCELED'));
533  return $result;
534  }
535 
536  /** @var ShipmentCollection $shipmentCollection */
537  if (!$shipmentCollection = $shipment->getCollection())
538  {
539  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
540  }
541 
542  $discount = $this->getDiscount();
543  $discount->setCalculateShipments($shipment);
544 
545  $r = $shipment->setField('PRICE_DELIVERY', $value);
546  if (!$r->isSuccess())
547  {
548  $result->addErrors($r->getErrors());
549  }
550  }
551  elseif ($name == "PRICE_DELIVERY")
552  {
553  if ($this->isCanceled())
554  {
555  $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_PRICE_DELIVERY_ORDER_CANCELED'), 'SALE_ORDER_PRICE_DELIVERY_ORDER_CANCELED'));
556  return $result;
557  }
558 
559  /** @var ShipmentCollection $shipmentCollection */
560  if (!$shipmentCollection = $shipment->getCollection())
561  {
562  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
563  }
564 
565  $deliveryPrice = ($this->isNew()) ? $value : $this->getField("PRICE_DELIVERY") - $oldValue + $value;
566  $this->setFieldNoDemand(
567  "PRICE_DELIVERY",
568  $deliveryPrice
569  );
570 
571  /** @var Result $r */
572  $r = $this->setField(
573  "PRICE",
574  $this->getField("PRICE") - $oldValue + $value
575  );
576 
577  if (!$r->isSuccess())
578  {
579  $result->addErrors($r->getErrors());
580  }
581 
582  }
583  elseif ($name == "DELIVERY_ID")
584  {
585  if ($shipment->isSystem() || intval($shipment->getField('DELIVERY_ID')) <= 0 )
586  {
587  return $result;
588  }
589 
590  $this->setFieldNoDemand('DELIVERY_ID', $shipment->getField('DELIVERY_ID'));
591 
592  $this->getPropertyCollection()->refreshRelated();
593 
594  }
595  elseif ($name == "TRACKING_NUMBER")
596  {
597  if ($shipment->isSystem())
598  {
599  return $result;
600  }
601 
602  $this->setFieldNoDemand('TRACKING_NUMBER', $shipment->getField('TRACKING_NUMBER'));
603  }
604 
605  if ($value != $oldValue)
606  {
607  $fields = $this->fields->getChangedValues();
608  if (!empty($fields) && !array_key_exists("UPDATED_1C", $fields))
609  {
610  parent::setField("UPDATED_1C", "N");
611  }
612  }
613 
614  return $result;
615  }

◆ refreshInternal()

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

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

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

1761  {
1762  $result = parent::refreshInternal();
1763  if (!$result->isSuccess())
1764  {
1765  return $result;
1766  }
1767 
1768  /** @var ShipmentCollection $shipmentCollection */
1769  if (!$shipmentCollection = $this->getShipmentCollection())
1770  {
1771  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
1772  }
1773 
1774  return $shipmentCollection->refreshData();
1775  }

◆ resetData()

resetData (   $select = array('PRICE'))
Аргументы
array$select
Исключения
Main

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

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

624  {
625  $this->getShipmentCollection()->resetData();
626 
627  parent::resetData($select);
628  }

◆ save()

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

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

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

2340  {
2341  $result = parent::save();
2342 
2343  $registry = Registry::getInstance(static::getRegistryType());
2344 
2345  /** @var OrderHistory $orderHistory */
2346  $orderHistory = $registry->getOrderHistoryClassName();
2347  $orderHistory::collectEntityFields('ORDER', $this->getId(), $this->getId());
2348 
2349  /** @var EntityMarker $entityMarker */
2350  $entityMarker = $registry->getEntityMarkerClassName();
2351  if ($entityMarker::hasErrors($this))
2352  {
2353  $entityMarker::saveMarkers($this);
2354  static::updateInternal($this->getId(), array("MARKED" => "Y"));
2355  }
2356 
2357  return $result;
2358  }

◆ saveEntities()

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

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

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

2185  {
2186  $result = parent::saveEntities();
2187 
2188  /** @var PaymentCollection $paymentCollection */
2190 
2191  /** @var Result $r */
2192  $r = $paymentCollection->save();
2193  if (!$r->isSuccess())
2194  {
2195  $result->addWarnings($r->getErrors());
2196  }
2197 
2198  // user budget
2200 
2201  /** @var ShipmentCollection $shipmentCollection */
2203 
2204  /** @var Result $r */
2205  $r = $shipmentCollection->save();
2206  if (!$r->isSuccess())
2207  {
2208  $result->addWarnings($r->getErrors());
2209  }
2210 
2211  /** @var TradeBindingCollection $tradeBindingCollection */
2213 
2214  /** @var Result $r */
2215  $r = $tradeBindingCollection->save();
2216  if (!$r->isSuccess())
2217  {
2218  $result->addWarnings($r->getErrors());
2219  }
2220 
2222  if (!$res->isSuccess())
2223  {
2224  $result->addWarnings($res->getErrors());
2225 
2226  $warningResult = new Result();
2227  $warningResult->addWarnings($res->getErrors());
2228 
2229  $registry = Registry::getInstance(static::getRegistryType());
2230  /** @var EntityMarker $entityMarker */
2231  $entityMarker = $registry->getEntityMarkerClassName();
2232  $entityMarker::addMarker($this, $this, $warningResult);
2233  static::updateInternal($this->getId(), array('MARKED' => 'Y'));
2234  }
2235 
2236  return $result;
2237  }

◆ setBasket()

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

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

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

640  {
641  $result = new Result();
642 
643  $isStartField = $this->isStartField();
644 
645  $r = parent::setBasket($basket);
646  if (!$r->isSuccess())
647  {
648  $result->addErrors($r->getErrors());
649  return $result;
650  }
651 
652  /** @var ShipmentCollection $shipmentCollection */
653  if (!$shipmentCollection = $this->getShipmentCollection())
654  {
655  throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found');
656  }
657 
658  /** @var Result $r */
659  $result = $shipmentCollection->resetCollection();
660  if (!$r->isSuccess())
661  {
662  $result->addErrors($r->getErrors());
663  return $result;
664  }
665 
666  if (!$this->isMathActionOnly())
667  {
668  /** @var Result $r */
669  $r = $this->refreshData();
670  if (!$r->isSuccess())
671  {
672  $result->addErrors($r->getErrors());
673  }
674  }
675 
676  if ($isStartField)
677  {
678  $hasMeaningfulFields = $this->hasMeaningfulField();
679 
680  /** @var Result $r */
681  $r = $this->doFinalAction($hasMeaningfulFields);
682  if (!$r->isSuccess())
683  {
684  $result->addErrors($r->getErrors());
685  }
686  }
687 
688  return $result;
689  }

◆ unlock()

static unlock (   $id)
static

Unlock order.

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

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

1862  {
1863  global $USER;
1864 
1865  $result = new Result();
1866  $id = (int)$id;
1867  if ($id <= 0)
1868  {
1869  $result->addError( new ResultError(Loc::getMessage('SALE_ORDER_WRONG_ID'), 'SALE_ORDER_WRONG_ID') );
1870  return $result;
1871  }
1872 
1873  if(!$order = static::load($id))
1874  {
1875  $result->addError( new ResultError(Loc::getMessage('SALE_ORDER_ENTITY_NOT_FOUND'), 'SALE_ORDER_ENTITY_NOT_FOUND') );
1876  return $result;
1877  }
1878 
1879  $userRights = \CMain::getUserRight("sale", $USER->getUserGroupArray(), "Y", "Y");
1880 
1881  if (($userRights >= "W") || ($order->getField("LOCKED_BY") == $USER->getID()))
1882  {
1883  return static::updateInternal($id, array(
1884  'DATE_LOCK' => null,
1885  'LOCKED_BY' => null
1886  ));
1887  }
1888 
1889  return $result;
1890  }

◆ update()

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

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

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

2382  {
2383  $result = parent::update();
2384 
2385  $registry = Registry::getInstance(static::getRegistryType());
2386  /** @var OrderHistory $orderHistory */
2387  $orderHistory = $registry->getOrderHistoryClassName();
2388 
2389  if (!$result->isSuccess())
2390  {
2391  $orderHistory::addAction(
2392  'ORDER',
2393  $this->getId(),
2394  'ORDER_UPDATE_ERROR',
2395  $this->getId(),
2396  $this,
2397  array("ERROR" => $result->getErrorMessages())
2398  );
2399  }
2400  else
2401  {
2402  $orderHistory::addAction(
2403  'ORDER',
2404  $this->getId(),
2405  'ORDER_UPDATED',
2406  $this->getId(),
2407  $this,
2408  array(),
2410  );
2411  }
2412 
2413  return $result;
2414  }

◆ updateInternal()

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

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

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

2510  {
2511  return Internals\OrderTable::update($primary, $data);
2512  }

◆ verify()

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

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

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

1957  {
1958  $result = parent::verify();
1959 
1960  /** @var PaymentCollection $paymentCollection */
1961  if ($paymentCollection = $this->getPaymentCollection())
1962  {
1963  $r = $paymentCollection->verify();
1964  if (!$r->isSuccess())
1965  {
1966  $result->addErrors($r->getErrors());
1967  }
1968  }
1969 
1970  /** @var ShipmentCollection $shipmentCollection */
1971  if ($shipmentCollection = $this->getShipmentCollection())
1972  {
1973  $r = $shipmentCollection->verify();
1974  if (!$r->isSuccess())
1975  {
1976  $result->addErrors($r->getErrors());
1977  }
1978  }
1979 
1980  return $result;
1981  }

Поля

◆ $paymentCollection

$paymentCollection
protected

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

◆ $printedChecks

array $printedChecks = array()
protected

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

◆ $shipmentCollection

$shipmentCollection
protected

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

◆ $tradeBindingCollection

$tradeBindingCollection
protected

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

◆ SALE_ORDER_LOCK_STATUS_GREEN

const SALE_ORDER_LOCK_STATUS_GREEN = 'green'

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

◆ SALE_ORDER_LOCK_STATUS_RED

const SALE_ORDER_LOCK_STATUS_RED = 'red'

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

◆ SALE_ORDER_LOCK_STATUS_YELLOW

const SALE_ORDER_LOCK_STATUS_YELLOW = 'yellow'

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


Объявления и описания членов класса находятся в файле:
Bitrix\Sale\Cashbox\CheckManager\getList
static getList(array $parameters=array())
Definition: checkmanager.php:1244
Bitrix\Main\Localization\Loc\getMessage
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29
Bitrix\Sale\Order\$tradeBindingCollection
$tradeBindingCollection
Definition: sale/lib/order.php:27
Bitrix\Sale\Order\getDeliveryIdList
getDeliveryIdList()
Definition: sale/lib/order.php:2112
Bitrix\Sale\EventActions\ADD
const ADD
Definition: eventactions.php:8
Bitrix\Main\hasErrors
hasErrors()
Return true if collection has errors.
Definition: errorableimplementation.php:17
Bitrix\Sale\OrderBase\$isStartField
$isStartField
Definition: orderbase.php:58
Bitrix\Sale\Internals\OrderProcessingTable\deleteByOrderId
static deleteByOrderId($orderId)
Definition: internals/orderprocessing.php:148
Bitrix\Sale\Order\loadShipmentCollection
loadShipmentCollection()
Load shipment collection.
Definition: sale/lib/order.php:809
Bitrix\Sale\Registry\REGISTRY_TYPE_ORDER
const REGISTRY_TYPE_ORDER
Definition: sale/lib/registry.php:16
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\Order\getPaySystemIdList
getPaySystemIdList()
Definition: sale/lib/order.php:2135
Bitrix\Sale\Internals\OrderTable\getUfId
static getUfId()
Definition: sale/lib/internals/order.php:530
Bitrix\Sale\OrderBase\refreshData
refreshData()
Full order refresh.
Definition: orderbase.php:660
Bitrix\Sale\OrderBase\setReasonMarked
setReasonMarked($value)
Definition: orderbase.php:2611
Bitrix\Sale\Order\loadPrintedChecks
loadPrintedChecks()
Definition: sale/lib/order.php:84
Bitrix\Sale\Internals\OrderTable\getMap
static getMap()
Returns entity map definition.
Definition: sale/lib/internals/order.php:32
Bitrix\Sale\OrderBase\getField
getField($name)
Return field value.
Definition: orderbase.php:568
Bitrix\Sale\Configuration\RESERVE_ON_ALLOW_DELIVERY
const RESERVE_ON_ALLOW_DELIVERY
Definition: sale/lib/configuration.php:19
Bitrix\Sale\Cashbox\Internals\Pool\generateChecks
static generateChecks($code)
Definition: cashbox/internals/pool.php:54
Bitrix\Main\Type
Definition: main/lib/type/collection.php:2
Bitrix\Sale\Registry\getInstance
static getInstance($type)
Definition: sale/lib/registry.php:161
Bitrix\Sale\EventActions\UPDATE
const UPDATE
Definition: eventactions.php:9
Bitrix\Main\EventManager\getInstance
static getInstance()
Definition: main/lib/eventmanager.php:34
Bitrix\Sale\Cashbox\CheckManager\create
static create(array $settings)
Definition: checkmanager.php:1072
Bitrix\Sale\Registry\ENTITY_TRADE_BINDING_COLLECTION
const ENTITY_TRADE_BINDING_COLLECTION
Definition: sale/lib/registry.php:47
Bitrix\Sale\Order\loadTradeBindingCollection
loadTradeBindingCollection()
Definition: sale/lib/order.php:839
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\Internals\UserBudgetPool\onUserBudgetSave
static onUserBudgetSave($userId)
Definition: userbudgetpool.php:106
Bitrix\Sale\Order\getTradeBindingCollection
getTradeBindingCollection()
Return trade binding collection.
Definition: sale/lib/order.php:777
Bitrix\Sale\OrderBase\getCurrency
getCurrency()
Return currency.
Definition: orderbase.php:815
Bitrix\Sale\OrderBase\setFieldNoDemand
setFieldNoDemand($name, $value)
Definition: orderbase.php:526
Bitrix\Sale\Order\isChanged
isChanged()
Definition: sale/lib/order.php:2057
Bitrix\Sale\OrderBase\isCanceled
isCanceled()
Return TRUE, if order is canceled.
Definition: orderbase.php:1943
Bitrix\Sale\EventActions\EVENT_ON_SHIPMENT_DELIVER
const EVENT_ON_SHIPMENT_DELIVER
Definition: eventactions.php:18
Bitrix\Sale\OrderBase\doFinalAction
doFinalAction($hasMeaningfulField=false)
Definition: orderbase.php:2417
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\Sale\Order\getShipmentCollection
getShipmentCollection()
Return shipment collection.
Definition: sale/lib/order.php:759
Bitrix\Sale\Configuration\getProductReservationCondition
static getProductReservationCondition()
Returns current reservation condition.
Definition: sale/lib/configuration.php:60
Bitrix\Sale\OrderBase\isStartField
isStartField($isMeaningfulField=false)
Definition: orderbase.php:2077
Bitrix\Sale\Order\$paymentCollection
$paymentCollection
Definition: sale/lib/order.php:24
Bitrix\Sale\Order\$shipmentCollection
$shipmentCollection
Definition: sale/lib/order.php:21
Bitrix\Sale\Configuration\RESERVE_ON_SHIP
const RESERVE_ON_SHIP
Definition: sale/lib/configuration.php:20
Bitrix\Sale\Order\getPaymentCollection
getPaymentCollection()
Return payment collection.
Definition: sale/lib/order.php:792
Bitrix\Sale\Configuration\needShipOnAllowDelivery
static needShipOnAllowDelivery()
Returns true, if current condition - delivery.
Definition: sale/lib/configuration.php:99
Bitrix\Sale\Internals\Catalog\Provider\save
static save(Sale\Order $order, array $context=array())
Definition: sale/lib/internals/catalog/provider.php:1387
Bitrix\Sale\OrderBase\getUserId
getUserId()
Return user id.
Definition: orderbase.php:825
Bitrix\Main\ORM\Entity\getFields
getFields()
Definition: main/lib/orm/entity.php:526
Bitrix\Sale\PriceMaths\roundPrecision
static roundPrecision($value)
Definition: pricemaths.php:17
Bitrix\Sale\Order\loadPaymentCollection
loadPaymentCollection()
Load payment collection.
Definition: sale/lib/order.php:824
Bitrix\Sale\OrderBase\$discount
$discount
Definition: orderbase.php:34
Bitrix\Sale\Registry\ENTITY_OPTIONS
const ENTITY_OPTIONS
Definition: sale/lib/registry.php:36
Bitrix\Sale\OrderHistory\SALE_ORDER_HISTORY_ACTION_LOG_LEVEL_1
const SALE_ORDER_HISTORY_ACTION_LOG_LEVEL_1
Definition: orderhistory.php:29
Bitrix\Sale\OrderBase\getPropertyCollection
getPropertyCollection()
Definition: orderbase.php:610
Bitrix\Sale\OrderBase\setField
setField($name, $value)
Set value with call events on field modify.
Definition: orderbase.php:463