Bitrix-D7  20.0.0
Класс Shipment
Граф наследования:Shipment:
CollectableEntity IBusinessValueProvider IEntityMarker Entity

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

 getShipmentCode ()
 
 setDeliveryService (Delivery\Services\Base $deliveryService)
 
 needReservation ()
 
 onShipmentItemCollectionModify ($action, ShipmentItem $shipmentItem, $name=null, $oldValue=null, $value=null)
 
 delete ()
 Deletes shipment. Подробнее...
 
 setField ($name, $value)
 Sets new value to specified field of shipment item. Подробнее...
 
 getField ($name)
 
 getFieldValues ()
 
 setFieldNoDemand ($name, $value)
 
 save ()
 
 getParentOrderId ()
 
 getOrder ()
 
 getShipmentItemCollection ()
 
 getId ()
 
 getPrice ()
 
 isCustomPrice ()
 
 getCurrency ()
 
 getDeliveryId ()
 
 getDeliveryName ()
 
 setOrderId ($orderId)
 
 getDelivery ()
 
 isSystem ()
 
 isCanceled ()
 
 isShipped ()
 
 getShippedDate ()
 
 getShippedUserId ()
 
 getUnshipReason ()
 
 isMarked ()
 
 isReserved ()
 
 isAllowDelivery ()
 
 isEmpty ()
 
 getAllowDeliveryDate ()
 
 getAllowDeliveryUserId ()
 
 getCompanyId ()
 
 tryReserve ()
 
 tryUnreserve ()
 
 tryShip ()
 
 tryUnship ()
 
 needShip ()
 
 deliver ()
 
 allowDelivery ()
 
 disallowDelivery ()
 
 onBeforeBasketItemDelete (BasketItem $basketItem)
 
 onBasketModify ($action, BasketItem $basketItem, $name=null, $oldValue=null, $value=null)
 
 getServiceParams ()
 
 setServiceParams (array $serviceParams)
 
 getExtraServices ()
 
 setExtraServices (array $extraServices)
 
 getStoreId ()
 
 setStoreId ($storeId)
 
 getWeight ()
 
 setWeight (float $weight)
 
 calculateDelivery ()
 
 resetData ()
 
 getBasketItemQuantity (BasketItem $basketItem)
 
 isExistBasketItem (BasketItem $basketItem)
 
 verify ()
 
 setAccountNumber ($id)
 
 getBusinessValueProviderInstance ($mapping)
 
 getPersonTypeId ()
 
 createClone (\SplObjectStorage $cloneEntity)
 
 getErrorEntity ($value)
 
 canAutoFixError ($value)
 
 getAutoFixErrorsList ()
 
 tryFixError ($code)
 
 canMarked ()
 
 getMarkField ()
 
 clearChanged ()
 
 getVatRate ()
 
 getVatSum ()
 
 setBasePriceDelivery ($value, $custom=false)
 
 getParentOrder ()
 
- Открытые члены унаследованные от CollectableEntity
 setCollection (EntityCollection $collection)
 
 getCollection ()
 
 setInternalIndex ($index)
 
 getInternalIndex ()
 
 isStartField ($isMeaningfulField=false)
 
 clearStartField ()
 
 hasMeaningfulField ()
 
 doFinalAction ($hasMeaningfulField=false)
 
 setMathActionOnly ($value=false)
 
 isMathActionOnly ()
 
 isClone ()
 
- Открытые члены унаследованные от 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 getRegistryEntity ()
 
static getAvailableFields ()
 
static getCustomizableFields ()
 
static create (ShipmentCollection $collection, Delivery\Services\Base $deliveryService=null)
 
static getRegistryType ()
 
static updateReservedFlag (Shipment $shipment)
 
static deleteNoDemand ($idOrder)
 
static loadForOrder ($id)
 
static createSystem (ShipmentCollection $collection, Delivery\Services\Base $deliveryService=null)
 
static getList (array $parameters)
 
static fixReserveErrors (Shipment $entity)
 
static fixShipErrors (Shipment $entity)
 
static getUfId ()
 
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 isExists ($name)
 
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)
 

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

 __construct (array $fields=array())
 
 onBeforeSetFields (array $values)
 
 deleteDeliveryRequest ()
 
 checkValueBeforeSet ($name, $value)
 
 onBeforeSave ()
 
 setDeliveryRequestMarker ()
 
 onAfterSave ($isNew)
 
 markSystem ()
 
 loadDeliveryService ()
 
 onFieldModify ($name, $oldValue, $value)
 
 syncQuantityAfterModify (BasketItem $basketItem, $value=null, $oldValue=null)
 
 saveExtraServices ()
 
 saveStoreId ()
 
 addChangesToHistory ($name, $oldValue=null, $value=null)
 
 setStatus ($status)
 
 addInternal (array $data)
 
 updateInternal ($primary, array $data)
 
- Защищенные члены унаследованные от Entity
 appendField (Field $field)
 
 getCacheDir ()
 

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

static getMeaningfulFields ()
 
static generateXmlId ()
 
static getFixMethod ($code)
 
static getAutoFixRules ()
 
static deleteInternal ($primary)
 
static getFieldsMap ()
 
- Защищенные статические члены унаследованные от Entity
static getInstanceDirect ($className)
 

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

 $shipmentItemCollection
 
 $deliveryService = null
 
 $extraServices = null
 
 $storeId = null
 
 $internalId = 0
 
- Защищенные данные унаследованные от CollectableEntity
 $collection
 
 $internalIndex = null
 
 $isClone = false
 
- Защищенные данные унаследованные от Entity
 $className
 
 $module
 
 $uf_id
 
 $fields
 
 $fieldsMap
 
 $u_fields
 
 $code
 
 $references
 
 $isClone = false
 

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

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

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

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

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

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

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

◆ __construct()

__construct ( array  $fields = array())
protected

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

45  {
46  $priceFields = ['BASE_PRICE_DELIVERY', 'PRICE_DELIVERY', 'DISCOUNT_PRICE'];
47 
48  foreach ($priceFields as $code)
49  {
50  if (isset($fields[$code]))
51  {
53  }
54  }
55 
57 
59  $controller->initialize($this);
60  }

Методы

◆ addChangesToHistory()

addChangesToHistory (   $name,
  $oldValue = null,
  $value = null 
)
protected
Аргументы
string$name
null$oldValue
null$value
Исключения
Main

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

2304  {
2305  if ($this->getId() > 0 && !$this->isSystem())
2306  {
2307  $order = $this->getOrder();
2308 
2309  if ($order && $order->getId() > 0)
2310  {
2311  $registry = Registry::getInstance(static::getRegistryType());
2312 
2313  /** @var OrderHistory $orderHistory */
2314  $orderHistory = $registry->getOrderHistoryClassName();
2315  $orderHistory::addField(
2316  'SHIPMENT',
2317  $order->getId(),
2318  $name,
2319  $oldValue,
2320  $value,
2321  $this->getId(),
2322  $this
2323  );
2324  }
2325  }
2326  }

◆ addInternal()

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

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

2824  {
2825  return Internals\ShipmentTable::add($data);
2826  }

◆ allowDelivery()

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

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

1773  {
1774  return $this->setField('ALLOW_DELIVERY', "Y");
1775  }

◆ calculateDelivery()

calculateDelivery ( )
Возвращает
Delivery\CalculationResult
Исключения
Main

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

2256  {
2257  if ($this->isSystem())
2258  {
2259  throw new Main\NotSupportedException();
2260  }
2261 
2262  if ($this->getDeliveryId() == 0)
2263  {
2264  return new Delivery\CalculationResult();
2265  }
2266 
2267  return Delivery\Services\Manager::calculateDeliveryPrice($this);
2268  }

◆ canAutoFixError()

canAutoFixError (   $value)
Аргументы
$value
Возвращает
bool

Замещает IEntityMarker.

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

2605  {
2606  $autoFix = false;
2607  $errorsList = static::getAutoFixErrorsList();
2608  if (is_array($errorsList) && in_array($value, $errorsList))
2609  {
2610  $autoFix = true;
2611  }
2612  else
2613  {
2614  /** @var ShipmentItemCollection $shipmentItemCollection */
2616  {
2617  $autoFix = $shipmentItemCollection->canAutoFixError($value);
2618  }
2619  }
2620 
2621  return $autoFix;
2622  }

◆ canMarked()

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

Замещает IEntityMarker.

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

2747  {
2748  return true;
2749  }

◆ checkValueBeforeSet()

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

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

857  {
858  $result = parent::checkValueBeforeSet($name, $value);
859 
860  if ($name == "DELIVERY_ID")
861  {
862  if (intval($value) > 0 && !Delivery\Services\Manager::isServiceExist($value))
863  {
864  $result->addError(
865  new ResultError(
866  Loc::getMessage('SALE_SHIPMENT_WRONG_DELIVERY_SERVICE'),
867  'SALE_SHIPMENT_WRONG_DELIVERY_SERVICE'
868  )
869  );
870  }
871  }
872  elseif ($name === 'ACCOUNT_NUMBER')
873  {
874  $dbRes = static::getList([
875  'select' => ['ID'],
876  'filter' => ['=ACCOUNT_NUMBER' => $value]
877  ]);
878 
879  if ($dbRes->fetch())
880  {
881  $result->addError(
882  new ResultError(
883  Loc::getMessage('SALE_SHIPMENT_ACCOUNT_NUMBER_EXISTS')
884  )
885  );
886  }
887  }
888 
889  return $result;
890  }

◆ clearChanged()

clearChanged ( )

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

2763  {
2764  parent::clearChanged();
2765 
2767  {
2768  /** @var ShipmentItem $shipmentItem */
2769  foreach ($shipmentItemCollection as $shipmentItem)
2770  {
2771  $shipmentItem->clearChanged();
2772  }
2773  }
2774  }

◆ create()

static create ( ShipmentCollection  $collection,
Delivery\Services\Base  $deliveryService = null 
)
static
Аргументы
ShipmentCollection$collection
Delivery\Services\Base | null$deliveryService
Возвращает
mixed
Исключения
Main

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

200  {
201  $fields = array(
202  'DATE_INSERT' => new Main\Type\DateTime(),
203  'ALLOW_DELIVERY' => 'N',
204  'DEDUCTED' => 'N',
205  'CUSTOM_PRICE_DELIVERY' => 'N',
206  'MARKED' => 'N',
207  'CANCELED' => 'N',
208  'SYSTEM' => 'N',
209  'XML_ID' => static::generateXmlId(),
210  'RESERVED' => 'N'
211  );
212 
213  $registry = Registry::getInstance(static::getRegistryType());
214 
215  /** @var DeliveryStatus $deliveryStatusClassName */
216  $deliveryStatusClassName = $registry->getDeliveryStatusClassName();
217  $fields['STATUS_ID'] = $deliveryStatusClassName::getInitialStatus();
218 
219  $shipment = static::createShipmentObject();
220  $shipment->setFieldsNoDemand($fields);
221  $shipment->setCollection($collection);
222 
223  if ($deliveryService !== null)
224  {
225  $shipment->setDeliveryService($deliveryService);
226  }
227 
228  return $shipment;
229  }

◆ createClone()

createClone ( \SplObjectStorage  $cloneEntity)

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

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

2493  {
2494  if ($this->isClone() && $cloneEntity->contains($this))
2495  {
2496  return $cloneEntity[$this];
2497  }
2498 
2499  /** @var Shipment $shipmentClone */
2500  $shipmentClone = parent::createClone($cloneEntity);
2501 
2502  /** @var ShipmentItemCollection $shipmentItemCollection */
2504  {
2505  if (!$cloneEntity->contains($shipmentItemCollection))
2506  {
2507  $cloneEntity[$shipmentItemCollection] = $shipmentItemCollection->createClone($cloneEntity);
2508  }
2509 
2510  if ($cloneEntity->contains($shipmentItemCollection))
2511  {
2512  $shipmentClone->shipmentItemCollection = $cloneEntity[$shipmentItemCollection];
2513  }
2514  }
2515 
2516  /** @var Delivery\Services\Base $deliveryService */
2517  if ($deliveryService = $this->getDelivery())
2518  {
2519  if (!$cloneEntity->contains($deliveryService))
2520  {
2521  $cloneEntity[$deliveryService] = $deliveryService->createClone($cloneEntity);
2522  }
2523 
2524  if ($cloneEntity->contains($deliveryService))
2525  {
2526  $shipmentClone->deliveryService = $cloneEntity[$deliveryService];
2527  }
2528  }
2529 
2530  return $shipmentClone;
2531  }

◆ createSystem()

static createSystem ( ShipmentCollection  $collection,
Delivery\Services\Base  $deliveryService = null 
)
static

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

1408  {
1409  $shipment = static::create($collection, $deliveryService);
1410  $shipment->markSystem();
1411 
1412  if ($deliveryService === null)
1413  {
1414  $shipment->setFieldNoDemand('DELIVERY_ID', Delivery\Services\Manager::getEmptyDeliveryServiceId());
1415  }
1416 
1417  return $shipment;
1418  }

◆ delete()

delete ( )

Deletes shipment.

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

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

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

741  {
742  if ($this->isShipped())
743  {
744  $result = new Result();
745  $result->addError(
746  new ResultError(
747  Loc::getMessage('SALE_SHIPMENT_EXIST_SHIPPED'),
748  'SALE_SHIPMENT_EXIST_SHIPPED'
749  )
750  );
751  return $result;
752  }
753 
754  if (!$this->isSystem())
755  {
756  $this->setField('BASE_PRICE_DELIVERY', 0);
757  $this->disallowDelivery();
758  }
759 
760  $this->deleteDeliveryRequest();
761 
763  $shipmentItemCollection->clearCollection();
764  return parent::delete();
765  }

◆ deleteDeliveryRequest()

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

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

771  {
772  Requests\Manager::onBeforeShipmentDelete($this);
773  }

◆ deleteInternal()

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

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

2846  {
2847  return Internals\ShipmentTable::deleteWithItems($primary);
2848  }

◆ deleteNoDemand()

static deleteNoDemand (   $idOrder)
static

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

703  {
704  $result = new Result();
705 
706  $shipmentDataList = static::getList(
707  array(
708  "filter" => array("=ORDER_ID" => $idOrder),
709  "select" => array("ID")
710  )
711  );
712 
713  while ($shipment = $shipmentDataList->fetch())
714  {
715  $r = static::deleteInternal($shipment['ID']);
716  if ($r -> isSuccess())
717  {
719  }
720  else
721  {
722  $result->addErrors($r->getErrors());
723  }
724  }
725 
726  return $result;
727  }

◆ deliver()

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

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

1712  {
1713  $order = $this->getParentOrder();
1714  if (!$order)
1715  {
1716  throw new Main\ObjectNotFoundException('Entity "Order" not found');
1717  }
1718 
1719  $result = new Result();
1720 
1721  $context = array(
1722  'USER_ID' => $order->getUserId(),
1723  'SITE_ID' => $order->getSiteId(),
1724  );
1725 
1726  $creator = Internals\ProviderCreator::create($context);
1727 
1729 
1730  /** @var ShipmentItemCollection $shipmentItemCollection */
1732  {
1733  throw new Main\ObjectNotFoundException('Entity "ShipmentItemCollection" not found');
1734  }
1735 
1736  /** @var ShipmentItem $shipmentItem */
1737  foreach ($shipmentItemCollection as $shipmentItem)
1738  {
1739  $creator->addShipmentItem($shipmentItem);
1740  }
1741 
1742  $r = $creator->deliver();
1743  if ($r->isSuccess())
1744  {
1745  $r = $creator->createItemsResultAfterDeliver($r);
1746  if ($r->isSuccess())
1747  {
1748  $data = $r->getData();
1749  if (array_key_exists('RESULT_AFTER_DELIVER_LIST', $data))
1750  {
1751  $resultList = $data['RESULT_AFTER_DELIVER_LIST'];
1752  }
1753  }
1754  }
1755  else
1756  {
1757  $result->addErrors($r->getErrors());
1758  }
1759 
1760  if (!empty($resultList) && is_array($resultList))
1761  {
1762  Recurring::repeat($order, $resultList);
1763  }
1764 
1765  return $result;
1766  }

◆ disallowDelivery()

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

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

1782  {
1783  return $this->setField('ALLOW_DELIVERY', "N");
1784  }

◆ fixReserveErrors()

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

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

2677  {
2678  $result = new Result();
2679 
2680  $r = $entity->tryReserve();
2681  if (!$r->isSuccess())
2682  {
2683  $result->addErrors($r->getErrors());
2684  }
2685  elseif ($r->hasWarnings())
2686  {
2687  $result->addWarnings($r->getWarnings());
2688  }
2689 
2690  return $result;
2691  }

◆ fixShipErrors()

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

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

2700  {
2701  $result = new Result();
2702 
2703  $r = $entity->setField('DEDUCTED', 'Y');
2704  if (!$r->isSuccess())
2705  {
2706  if (!$r->isSuccess())
2707  {
2708  $result->addErrors($r->getErrors());
2709  }
2710  }
2711 
2712  $r = $entity->tryShip();
2713  if (!$r->isSuccess())
2714  {
2715  if (!$r->isSuccess())
2716  {
2717  $result->addErrors($r->getErrors());
2718  }
2719  }
2720 
2721  return $result;
2722  }

◆ generateXmlId()

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

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

235  {
236  return uniqid('bx_');
237  }

◆ getAllowDeliveryDate()

getAllowDeliveryDate ( )
Возвращает
Main\Type\DateTime

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

1596  {
1597  return $this->getField('DATE_ALLOW_DELIVERY');
1598  }

◆ getAllowDeliveryUserId()

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

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

1604  {
1605  return $this->getField('EMP_ALLOW_DELIVERY_ID');
1606  }

◆ getAutoFixErrorsList()

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

Замещает IEntityMarker.

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

2628  {
2629  return array_keys(static::getAutoFixRules());
2630  }

◆ getAutoFixRules()

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

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

2728  {
2729  return array(
2730  'PROVIDER_BASKET_ITEM_WRONG_AVAILABLE_QUANTITY' => array('\Bitrix\Sale\Shipment', "fixReserveErrors"),
2731  'SALE_PROVIDER_RESERVE_SHIPMENT_ITEM_WRONG_AVAILABLE_QUANTITY' => array('\Bitrix\Sale\Shipment', "fixReserveErrors"),
2732  'PROVIDER_UNRESERVE_SHIPMENT_ITEM_WRONG_AVAILABLE_QUANTITY' => array('\Bitrix\Sale\Shipment', "fixReserveErrors"),
2733  'SALE_PROVIDER_RESERVE_SHIPMENT_ITEM_QUANTITY_NOT_ENOUGH' => array('\Bitrix\Sale\Shipment', "fixReserveErrors"),
2734 
2735  'SALE_PROVIDER_SHIPMENT_SHIPPED_LESS_QUANTITY' => array('\Bitrix\Sale\Shipment', "fixShipErrors"),
2736  'SALE_PROVIDER_SHIPMENT_SHIPPED_MORE_QUANTITY' => array('\Bitrix\Sale\Shipment', "fixShipErrors"),
2737  'DDCT_DEDUCTION_QUANTITY_STORE_ERROR' => array('\Bitrix\Sale\Shipment', "fixShipErrors"),
2738  'SALE_PROVIDER_SHIPMENT_QUANTITY_NOT_ENOUGH' => array('\Bitrix\Sale\Shipment', "fixShipErrors"),
2739  'DDCT_DEDUCTION_QUANTITY_ERROR' => array('\Bitrix\Sale\Shipment', "fixShipErrors"),
2740  );
2741  }

◆ getAvailableFields()

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

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

86  {
87  return array(
88  "STATUS_ID",
89  "BASE_PRICE_DELIVERY",
90  "PRICE_DELIVERY",
91  "ALLOW_DELIVERY",
92  "DATE_ALLOW_DELIVERY",
93  "EMP_ALLOW_DELIVERY_ID",
94  "DEDUCTED",
95  "DATE_DEDUCTED",
96  "EMP_DEDUCTED_ID",
97  "REASON_UNDO_DEDUCTED",
98  "DELIVERY_ID",
99  "DELIVERY_DOC_NUM",
100  "DELIVERY_DOC_DATE",
101  "TRACKING_NUMBER",
102  "XML_ID",
103  "PARAMS",
104  "DELIVERY_NAME",
105  "COMPANY_ID",
106  "MARKED",
107  "WEIGHT",
108  "DATE_MARKED",
109  "EMP_MARKED_ID",
110  "REASON_MARKED",
111  "CANCELED",
112  "DATE_CANCELED",
113  "EMP_CANCELED_ID",
114  "RESPONSIBLE_ID",
115  "DATE_RESPONSIBLE_ID",
116  "EMP_RESPONSIBLE_ID",
117  "COMMENTS",
118  "CURRENCY",
119  "CUSTOM_PRICE_DELIVERY",
120  "UPDATED_1C",
121  "EXTERNAL_DELIVERY",
122  "VERSION_1C","ID_1C",
123  "TRACKING_STATUS",
124  "TRACKING_LAST_CHECK",
125  "TRACKING_DESCRIPTION",
126  "ACCOUNT_NUMBER",
127  'DISCOUNT_PRICE'
128  );
129  }

◆ getBasketItemQuantity()

getBasketItemQuantity ( BasketItem  $basketItem)
Аргументы
BasketItem$basketItem
Возвращает
float|int
Исключения
Main

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

2290  {
2291  /** @var ShipmentItemCollection $shipmentItemCollection */
2293 
2294  return $shipmentItemCollection->getBasketItemQuantity($basketItem);
2295  }

◆ getBusinessValueProviderInstance()

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

Замещает IBusinessValueProvider.

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

2437  {
2438  $providerInstance = null;
2439 
2440  if (is_array($mapping))
2441  {
2442  switch ($mapping['PROVIDER_KEY'])
2443  {
2444  case 'SHIPMENT': $providerInstance = $this; break;
2445  case 'COMPANY' : $providerInstance = $this->getField('COMPANY_ID'); break;
2446  default:
2447  $order = $this->getOrder();
2448  if ($order)
2449  {
2450  $providerInstance = $order->getBusinessValueProviderInstance($mapping);
2451  }
2452  }
2453  }
2454 
2455  return $providerInstance;
2456  }

◆ getCompanyId()

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

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

1612  {
1613  return $this->getField('COMPANY_ID');
1614  }

◆ getCurrency()

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

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

1449  {
1450  return $this->getField('CURRENCY');
1451  }

◆ getCustomizableFields()

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

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

134  : array
135  {
136  return ['PRICE_DELIVERY' => 'PRICE_DELIVERY', 'WEIGHT' => 'WEIGHT'];
137  }

◆ getDelivery()

getDelivery ( )
Возвращает
Delivery\Services\Base
Исключения
Main

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

1483  {
1484  if ($this->deliveryService === null)
1485  {
1486  $this->deliveryService = $this->loadDeliveryService();
1487  }
1488 
1489  return $this->deliveryService;
1490  }

◆ getDeliveryId()

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

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

1457  {
1458  return $this->getField('DELIVERY_ID');
1459  }

◆ getDeliveryName()

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

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

1465  {
1466  return $this->getField('DELIVERY_NAME');
1467  }

◆ getEntityEventName()

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

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

2909  {
2910  return 'SaleShipment';
2911  }

◆ getErrorEntity()

getErrorEntity (   $value)
Аргументы
$value
Возвращает
string

Замещает IEntityMarker.

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

2580  {
2581  $className = null;
2582  $errorsList = static::getAutoFixErrorsList();
2583  if (is_array($errorsList) && in_array($value, $errorsList))
2584  {
2585  $className = static::getClassName();
2586  }
2587  else
2588  {
2589  /** @var ShipmentItemCollection $shipmentItemCollection */
2591  {
2592  $className = $shipmentItemCollection->getErrorEntity($value);
2593  }
2594  }
2595 
2596  return $className;
2597  }

◆ getExtraServices()

getExtraServices ( )
Возвращает
null

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

2171  {
2172  if($this->extraServices === null)
2173  {
2174  $this->setExtraServices(
2175  Delivery\ExtraServices\Manager::getValuesForShipment(
2176  $this->getId(),
2177  $this->getDeliveryId()
2178  )
2179  );
2180  }
2181 
2182  return $this->extraServices;
2183  }

◆ getField()

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

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

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

828  {
829  if ($name === 'CUSTOM_PRICE_DELIVERY')
830  {
831  return $this->isMarkedFieldCustom('PRICE_DELIVERY') ? 'Y' : 'N';
832  }
833 
834  return parent::getField($name);
835  }

◆ getFieldsMap()

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

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

2854  {
2856  }

◆ getFieldValues()

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

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

841  {
842  $fields = parent::getFieldValues();
843 
844  $fields['CUSTOM_PRICE_DELIVERY'] = $this->isMarkedFieldCustom('PRICE_DELIVERY') ? 'Y' : 'N';
845 
846  return $fields;
847  }

◆ getFixMethod()

static getFixMethod (   $code)
staticprotected
Аргументы
$code
Возвращает
mixed|null

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

2660  {
2661  $codeList = static::getAutoFixRules();
2662 
2663  if (!empty($codeList[$code]))
2664  {
2665  return $codeList[$code];
2666  }
2667  return null;
2668  }

◆ getId()

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

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

1424  {
1425  return $this->getField('ID');
1426  }

◆ getList()

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

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

2479  {
2480  return Internals\ShipmentTable::getList($parameters);
2481  }

◆ getMarkField()

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

Замещает IEntityMarker.

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

2755  {
2756  return 'MARKED';
2757  }

◆ getMeaningfulFields()

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

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

172  {
173  return array('BASE_PRICE_DELIVERY', 'DELIVERY_ID');
174  }

◆ getOrder()

getOrder ( )
Возвращает
Order|null

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

1351  {
1352  /** @var ShipmentCollection $collection */
1353  $collection = $this->getCollection();
1354  if (!$collection)
1355  {
1356  return null;
1357  }
1358 
1359  /** @var Order $order */
1360  $order = $collection->getOrder();
1361  if (!$order)
1362  {
1363  return null;
1364  }
1365 
1366  return $order;
1367  }

◆ getParentOrder()

getParentOrder ( )
Уст.:
Use getOrder instead
Возвращает
Order|null

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

2899  {
2900  return $this->getOrder();
2901  }

◆ getParentOrderId()

getParentOrderId ( )
Возвращает
bool|int

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

1337  {
1338  $order = $this->getParentOrder();
1339  if (!$order)
1340  {
1341  return false;
1342  }
1343 
1344  return $order->getId();
1345  }

◆ getPersonTypeId()

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

Замещает IBusinessValueProvider.

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

2462  {
2463  $order = $this->getOrder();
2464  if ($order)
2465  {
2466  return $order->getPersonTypeId();
2467  }
2468 
2469  return null;
2470  }

◆ getPrice()

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

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

1432  {
1433  return $this->getField('PRICE_DELIVERY');
1434  }

◆ getRegistryEntity()

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

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

40  {
42  }

◆ getRegistryType()

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

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

256  {
258  }

◆ getServiceParams()

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

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

2151  {
2152  $params = $this->getField('PARAMS');
2153  return isset($params["SERVICE_PARAMS"]) ? $params["SERVICE_PARAMS"] : array();
2154  }

◆ getShipmentCode()

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

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

66  {
67  if ($this->internalId == 0)
68  {
69  if ($this->getId() > 0)
70  {
71  $this->internalId = $this->getId();
72  }
73  else
74  {
75  static::$idShipment++;
76  $this->internalId = static::$idShipment;
77  }
78  }
79  return $this->internalId;
80  }

◆ getShipmentItemCollection()

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

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

1376  {
1377  if (empty($this->shipmentItemCollection))
1378  {
1379  $registry = Registry::getInstance(static::getRegistryType());
1380 
1381  /** @var ShipmentItemCollection $itemCollectionClassName */
1382  $itemCollectionClassName = $registry->getShipmentItemCollectionClassName();
1383  $this->shipmentItemCollection = $itemCollectionClassName::load($this);
1384  }
1385 
1387  }

◆ getShippedDate()

getShippedDate ( )
Возвращает
Main\Type\DateTime

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

1534  {
1535  return $this->getField('DATE_DEDUCTED');
1536  }

◆ getShippedUserId()

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

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

1542  {
1543  return $this->getField('EMP_DEDUCTED_ID');
1544  }

◆ getStoreId()

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

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

2205  {
2206  if($this->storeId === null)
2207  {
2208  $this->setStoreId(
2209  Delivery\ExtraServices\Manager::getStoreIdForShipment(
2210  $this->getId(),
2211  $this->getDeliveryId()
2212  ));
2213  }
2214 
2215  return $this->storeId;
2216  }

◆ getUfId()

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

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

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

2862  {
2863  return Internals\ShipmentTable::getUfId();
2864  }

◆ getUnshipReason()

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

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

1550  {
1551  return $this->getField('REASON_UNDO_DEDUCTED');
1552  }

◆ getVatRate()

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

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

2781  {
2782  $vatRate = 0;
2783 
2784  $service = $this->getDelivery();
2785  if ($service)
2786  {
2787  if (!Main\Loader::includeModule('catalog'))
2788  return $vatRate;
2789 
2790  $vatId = $service->getVatId();
2791  if ($vatId <= 0)
2792  return $vatRate;
2793 
2794  $dbRes = VatTable::getById($vatId);
2795  $vatInfo = $dbRes->fetch();
2796  if ($vatInfo)
2797  {
2798  $vatRate = $vatInfo['RATE'] / 100;
2799  }
2800  }
2801 
2802  return $vatRate;
2803  }

◆ getVatSum()

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

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

2811  {
2812  $vatRate = $this->getVatRate();
2813  $price = $this->getPrice() * $vatRate / (1 + $vatRate);
2814 
2815  return PriceMaths::roundPrecision($price);
2816  }

◆ getWeight()

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

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

2237  : float
2238  {
2239  return (float)$this->getField('WEIGHT');
2240  }

◆ isAllowDelivery()

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

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

1574  {
1575  return $this->getField('ALLOW_DELIVERY') === "Y";
1576  }

◆ isCanceled()

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

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

1518  {
1519  return $this->getField('CANCELED') === 'Y';
1520  }

◆ isCustomPrice()

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

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

1441  {
1442  return $this->isMarkedFieldCustom('PRICE_DELIVERY');
1443  }

◆ isEmpty()

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

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

1582  {
1583  /** @var ShipmentItemCollection $shipmentItemCollection */
1585  {
1586  return true;
1587  }
1588 
1589  return $shipmentItemCollection->isEmpty();
1590  }

◆ isExistBasketItem()

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

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

2335  {
2336  /** @var ShipmentItemCollection $shipmentItemCollection */
2338  {
2339  throw new Main\ObjectNotFoundException('Entity "ShipmentItemCollection" not found');
2340  }
2341 
2342  return $shipmentItemCollection->isExistBasketItem($basketItem);
2343  }

◆ isMarked()

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

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

1558  {
1559  return $this->getField('MARKED') === "Y";
1560  }

◆ isReserved()

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

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

1566  {
1567  return $this->getField('RESERVED') === "Y";
1568  }

◆ isShipped()

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

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

1526  {
1527  return $this->getField('DEDUCTED') === 'Y';
1528  }

◆ isSystem()

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

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

1512  {
1513  return $this->getField('SYSTEM') === 'Y';
1514  }

◆ loadDeliveryService()

loadDeliveryService ( )
protected
Возвращает
Delivery\Services\Base
Исключения
Main

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

1498  {
1499  if ($deliveryId = $this->getDeliveryId())
1500  {
1501  return Delivery\Services\Manager::getObjectById($deliveryId);
1502  }
1503 
1504  return null;
1505  }

◆ loadForOrder()

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

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

935  {
936  if (intval($id) <= 0)
937  {
938  throw new Main\ArgumentNullException("id");
939  }
940 
941  $shipments = [];
942 
943  $shipmentDataList = static::getList([
944  'filter' => [
945  'ORDER_ID' => $id
946  ],
947  'order' => [
948  'SYSTEM' => 'ASC',
949  'DATE_INSERT' => 'ASC',
950  'ID' => 'ASC'
951  ]
952  ]);
953  while ($shipmentData = $shipmentDataList->fetch())
954  {
955  $shipments[] = static::createShipmentObject($shipmentData);
956  }
957 
958 
959  return $shipments;
960  }

◆ markSystem()

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

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

1394  {
1395  $this->setFieldNoDemand("SYSTEM", 'Y');
1396  }

◆ needReservation()

needReservation ( )

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

268  {
270 
271  if ($condition === Configuration::RESERVE_ON_CREATE)
272  {
273  return true;
274  }
275 
276  if ($condition === Configuration::RESERVE_ON_PAY
277  || $condition === Configuration::RESERVE_ON_FULL_PAY)
278  {
279  $order = $this->getOrder();
280  if ($condition === Configuration::RESERVE_ON_FULL_PAY)
281  {
282  return $order->isPaid();
283  }
284 
285  /** @var PaymentCollection $paymentCollection */
286  if (!$paymentCollection = $order->getPaymentCollection())
287  {
288  throw new Main\ObjectNotFoundException('Entity "PaymentCollection" not found');
289  }
290 
291  return $paymentCollection->hasPaidPayment();
292  }
293 
294  if ($this->isSystem())
295  {
296  return false;
297  }
298 
299  return (($condition === Configuration::RESERVE_ON_ALLOW_DELIVERY) && $this->isAllowDelivery()
300  || ($condition === Configuration::RESERVE_ON_SHIP) && $this->isShipped());
301  }

◆ needShip()

needShip ( )

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

1690  {
1691  if ($this->fields->isChanged('DEDUCTED'))
1692  {
1693  if ($this->getField('DEDUCTED') === "Y")
1694  {
1695  return true;
1696  }
1697  elseif ($this->getField('DEDUCTED') === "N" && $this->getId() != 0)
1698  {
1699  return false;
1700  }
1701  }
1702 
1703  return null;
1704  }

◆ onAfterSave()

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

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

1310  {
1311  return;
1312  }

◆ onBasketModify()

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

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

1831  {
1832  $result = new Result();
1833 
1834  if ($action === EventActions::ADD)
1835  {
1836  if (!$this->isSystem())
1837  {
1838  return $result;
1839  }
1840 
1841  return $this->getShipmentItemCollection()->onBasketModify($action, $basketItem, $name, $oldValue, $value);
1842  }
1843  elseif ($action === EventActions::UPDATE)
1844  {
1845  if ($name === "QUANTITY")
1846  {
1847  if ($this->isSystem())
1848  {
1849  return $this->syncQuantityAfterModify($basketItem, $value, $oldValue);
1850  }
1851 
1852  /** @var ShipmentItemCollection $shipmentItemCollection */
1854 
1855  $r = $shipmentItemCollection->onBasketModify($action, $basketItem, $name, $oldValue, $value);
1856 
1857  if ($r->isSuccess())
1858  {
1859  /** @var Delivery\CalculationResult $deliveryCalculate */
1860  $deliveryCalculate = $this->calculateDelivery();
1861  if ($deliveryCalculate->isSuccess())
1862  {
1863  $this->setField('BASE_PRICE_DELIVERY', $deliveryCalculate->getPrice());
1864  }
1865  else
1866  {
1867  $result->addWarnings($deliveryCalculate->getErrors());
1868  }
1869  }
1870  }
1871  elseif ($name === 'WEIGHT')
1872  {
1873  if (!$this->isMarkedFieldCustom('WEIGHT'))
1874  {
1875  if ($this->getShipmentItemCollection()->isExistBasketItem($basketItem))
1876  {
1877  $this->setField('WEIGHT', $this->getShipmentItemCollection()->getWeight());
1878  }
1879  }
1880  }
1881  }
1882 
1883  return $result;
1884  }

◆ onBeforeBasketItemDelete()

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

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

1797  {
1798  $result = new Result();
1799 
1801  $r = $shipmentItemCollection->onBeforeBasketItemDelete($basketItem);
1802  if (!$r->isSuccess())
1803  {
1804  $result->addErrors($r->getErrors());
1805  return $result;
1806  }
1807 
1808  if ($this->isSystem())
1809  {
1810  return $this->syncQuantityAfterModify($basketItem);
1811  }
1812 
1813  return $result;
1814  }

◆ onBeforeSave()

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

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

968  {
969  $this->setFieldNoDemand('CUSTOM_PRICE_DELIVERY', $this->isMarkedFieldCustom('PRICE_DELIVERY') ? 'Y' : 'N');
970  }

◆ onBeforeSetFields()

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

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

144  {
145  if (isset($values['DEDUCTED']))
146  {
147  if ($this->getField('DEDUCTED') === 'Y')
148  {
149  if ($values['DEDUCTED'] === 'N')
150  {
151  $values = ['DEDUCTED' => $values['DEDUCTED']] + $values;
152  }
153  }
154  else
155  {
156  if ($values['DEDUCTED'] === 'Y')
157  {
158  // move to the end of array
159  unset($values['DEDUCTED']);
160  $values['DEDUCTED'] = 'Y';
161  }
162  }
163  }
164 
165  return $values;
166  }

◆ onFieldModify()

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

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

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

1898  {
1899  global $USER;
1900 
1901  $result = new Result();
1902 
1903  if ($name === "MARKED")
1904  {
1905  if ($oldValue != "Y")
1906  {
1907  $this->setField('DATE_MARKED', new Main\Type\DateTime());
1908 
1909  if (is_object($USER))
1910  {
1911  $this->setField('EMP_MARKED_ID', $USER->GetID());
1912  }
1913  }
1914  elseif ($value === "N")
1915  {
1916  $this->setField('REASON_MARKED', '');
1917  }
1918  }
1919  elseif ($name === "ALLOW_DELIVERY")
1920  {
1921  $this->setField('DATE_ALLOW_DELIVERY', new Main\Type\DateTime());
1922 
1923  if (is_object($USER))
1924  {
1925  $this->setField('EMP_ALLOW_DELIVERY_ID', $USER->GetID());
1926  }
1927 
1928  if ($oldValue === 'N')
1929  {
1930  $shipmentStatus = Main\Config\Option::get('sale', 'shipment_status_on_allow_delivery', '');
1931 
1932  $registry = Registry::getInstance(static::getRegistryType());
1933  /** @var DeliveryStatus $deliveryStatus */
1934  $deliveryStatusClassName = $registry->getDeliveryStatusClassName();
1935 
1936  if (strval($shipmentStatus) != '' && $this->getField('STATUS_ID') != $deliveryStatusClassName::getFinalStatus())
1937  {
1938  $r = $this->setStatus($shipmentStatus);
1939  if (!$r->isSuccess())
1940  {
1941  $result->addErrors($r->getErrors());
1942  }
1943  }
1944  }
1945  }
1946  elseif ($name === "DEDUCTED")
1947  {
1948  $this->setField('DATE_DEDUCTED', new Main\Type\DateTime());
1949 
1950  if (is_object($USER))
1951  {
1952  $this->setField('EMP_DEDUCTED_ID', $USER->GetID());
1953  }
1954 
1955  if ($oldValue === 'N')
1956  {
1957  $shipmentStatus = Main\Config\Option::get('sale', 'shipment_status_on_shipped', '');
1958 
1959  $registry = Registry::getInstance(static::getRegistryType());
1960  /** @var DeliveryStatus $deliveryStatus */
1961  $deliveryStatusClassName = $registry->getDeliveryStatusClassName();
1962 
1963  if (strval($shipmentStatus) != '' && $this->getField('STATUS_ID') != $deliveryStatusClassName::getFinalStatus())
1964  {
1965  $r = $this->setStatus($shipmentStatus);
1966  if (!$r->isSuccess())
1967  {
1968  $result->addErrors($r->getErrors());
1969  }
1970  }
1971  }
1972 
1973  if ($value === 'Y')
1974  {
1975  /** @var ShipmentItem $shipmentItem */
1976  foreach ($this->getShipmentItemCollection() as $shipmentItem)
1977  {
1978  $r = $shipmentItem->checkMarkingCodeOnDeducted();
1979  if (!$r->isSuccess())
1980  {
1981  $result->addErrors($r->getErrors());
1982  }
1983  }
1984  }
1985  }
1986  elseif ($name === "STATUS_ID")
1987  {
1988  $event = new Main\Event('sale', EventActions::EVENT_ON_BEFORE_SHIPMENT_STATUS_CHANGE, array(
1989  'ENTITY' => $this,
1990  'VALUE' => $value,
1991  'OLD_VALUE' => $oldValue,
1992  ));
1993  $event->send();
1994 
1996  'ENTITY' => $this,
1997  'VALUE' => $value,
1998  'OLD_VALUE' => $oldValue,
1999  ));
2000 
2002  'ENTITY' => $this,
2003  'VALUE' => $value,
2004  'OLD_VALUE' => $oldValue,
2005  ));
2006  }
2007  elseif ($name === 'RESPONSIBLE_ID')
2008  {
2009  $this->setField('DATE_RESPONSIBLE_ID', new Main\Type\DateTime());
2010  }
2011 
2012 
2013  $r = parent::onFieldModify($name, $oldValue, $value);
2014  if (!$r->isSuccess())
2015  {
2016  $result->addErrors($r->getErrors());
2017  }
2018 
2019  if ($r->hasWarnings())
2020  {
2021  $result->addWarnings($r->getWarnings());
2022  }
2023 
2024  if (($resultData = $r->getData()) && !empty($resultData))
2025  {
2026  $result->addData($resultData);
2027  }
2028 
2029  return $result;
2030  }

◆ onShipmentItemCollectionModify()

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

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

642  {
643  if ($action != EventActions::UPDATE)
644  {
645  return new Result();
646  }
647 
648  if ($this->isSystem()
649  && ($name != 'RESERVED_QUANTITY')
650  )
651  {
652  throw new Main\NotSupportedException(Loc::getMessage('SALE_SHIPMENT_SYSTEM_SHIPMENT_CHANGE'));
653  }
654 
655  if ($name === "QUANTITY")
656  {
657  $result = $this->transferItem2SystemShipment($shipmentItem, $oldValue - $value);
658 
659  if (!$this->isMarkedFieldCustom('WEIGHT'))
660  {
661  $this->setField(
662  'WEIGHT',
664  );
665  }
666 
667  return $result;
668  }
669  elseif ($name === 'RESERVED_QUANTITY')
670  {
671  $order = $this->getParentOrder();
672  if ($order &&
673  !Internals\ActionEntity::isTypeExists(
674  $order->getInternalId(),
676  )
677  )
678  {
680  $order->getInternalId(),
682  array(
683  'METHOD' => 'Bitrix\Sale\ShipmentCollection::updateReservedFlag',
684  'PARAMS' => array($this->getCollection())
685  )
686  );
687  }
688  }
689 
690  return new Result();
691  }

◆ resetData()

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

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

2275  {
2276  if (!$this->isCustomPrice())
2277  {
2278  $this->setField('BASE_PRICE_DELIVERY', 0);
2279  }
2280  }

◆ save()

save ( )

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

983  {
984  $this->checkCallingContext();
985 
986  $result = new Result();
987 
988  $registry = Registry::getInstance(static::getRegistryType());
989 
990  $id = $this->getId();
991  $isNew = ($this->getId() == 0);
992 
993  $this->onBeforeSave();
994 
995  if ($this->isChanged())
996  {
997  $this->callEventOnBeforeEntitySaved();
998  }
999 
1000  if ($id > 0)
1001  {
1002  $r = $this->update();
1003  }
1004  else
1005  {
1006  $r = $this->add();
1007 
1008  if ($r->getId() > 0)
1009  {
1010  $id = $r->getId();
1011  }
1012  }
1013 
1014  if (!$r->isSuccess())
1015  {
1016  /** @var OrderHistory $orderHistory */
1017  $orderHistory = $registry->getOrderHistoryClassName();
1018  $orderHistory::addAction(
1019  'SHIPMENT',
1020  $this->getParentOrderId(),
1021  $isNew ? 'SHIPMENT_ADD_ERROR' : 'SHIPMENT_UPDATE_ERROR',
1022  $isNew ? null : $id,
1023  $this,
1024  array("ERROR" => $r->getErrorMessages())
1025  );
1026 
1027  $result->addErrors($r->getErrors());
1028  return $result;
1029  }
1030 
1031  if ($id > 0)
1032  {
1033  $result->setId($id);
1034 
1036  $controller->save($this);
1037  }
1038 
1039  if ($this->fields->isChanged('ALLOW_DELIVERY')
1040  && ($this->getField('ALLOW_DELIVERY') === "Y" || !$isNew)
1041  )
1042  {
1043  $this->callEventOnAllowDelivery();
1044 
1045  /** @var Notify $notifyClassName */
1046  $notifyClassName = $registry->getNotifyClassName();
1047  $notifyClassName::callNotify($this, EventActions::EVENT_ON_SHIPMENT_ALLOW_DELIVERY);
1048  }
1049 
1050  if ($this->fields->isChanged('DEDUCTED')
1051  && ($this->getField('DEDUCTED') === "Y" || !$isNew)
1052  )
1053  {
1054  $this->callEventOnDeducted();
1055 
1056  /** @var Notify $notifyClassName */
1057  $notifyClassName = $registry->getNotifyClassName();
1058  $notifyClassName::callNotify($this, EventActions::EVENT_ON_SHIPMENT_DEDUCTED);
1059  }
1060 
1061  if (!$this->isSystem())
1062  {
1063  $this->saveExtraServices();
1064  $this->saveStoreId();
1065  }
1066 
1067  if ($this->fields->isChanged("DEDUCTED"))
1068  {
1069  Cashbox\Internals\Pool::addDoc($this->getParentOrder()->getInternalId(), $this);
1070  }
1071 
1072  if ($this->isChanged())
1073  {
1074  $this->callEventOnEntitySaved();
1075  }
1076 
1077  $this->callDelayedEvents();
1078 
1080  $r = $shipmentItemCollection->save();
1081  if (!$r->isSuccess())
1082  {
1083  $result->addErrors($r->getErrors());
1084  return $result;
1085  }
1086 
1087  if (!$this->isSystem())
1088  {
1089  $registry = Registry::getInstance(static::getRegistryType());
1090 
1091  /** @var OrderHistory $orderHistory */
1092  $orderHistory = $registry->getOrderHistoryClassName();
1093  $orderHistory::collectEntityFields('SHIPMENT', $this->getParentOrderId(), $id);
1094  }
1095 
1096  $this->onAfterSave($isNew);
1097 
1098  return $result;
1099  }

◆ saveExtraServices()

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

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

2197  {
2198  return Delivery\ExtraServices\Manager::saveValuesForShipment($this->getId(), $this->getExtraServices());
2199  }

◆ saveStoreId()

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

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

2230  {
2231  return Delivery\ExtraServices\Manager::saveStoreIdForShipment($this->getId(), $this->getDeliveryId(), $this->getStoreId());
2232  }

◆ setAccountNumber()

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

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

2390  {
2391  $result = new Result();
2392  $accountNumber = null;
2393  $id = intval($id);
2394  if ($id <= 0)
2395  {
2396  $result->addError(new ResultError(Loc::getMessage('SALE_PAYMENT_GENERATE_ACCOUNT_NUMBER_ORDER_NUMBER_WRONG_ID'), 'SALE_PAYMENT_GENERATE_ACCOUNT_NUMBER_ORDER_NUMBER_WRONG_ID'));
2397  return $result;
2398  }
2399 
2401 
2402  try
2403  {
2404  /** @var \Bitrix\Sale\Result $r */
2405  $r = static::updateInternal($id, array("ACCOUNT_NUMBER" => $value));
2406  $res = $r->isSuccess(true);
2407  }
2408  catch (Main\DB\SqlQueryException $exception)
2409  {
2410  $res = false;
2411  }
2412 
2413  if ($res)
2414  {
2415  if ($this->isSystem())
2416  {
2417  $this->setFieldNoDemand('ACCOUNT_NUMBER', $value);
2418  }
2419  else
2420  {
2421  $r = $this->setField('ACCOUNT_NUMBER', $value);
2422  if (!$r->isSuccess())
2423  {
2424  $result->addErrors($r->getErrors());
2425  }
2426  }
2427  }
2428 
2429  return $result;
2430  }

◆ setBasePriceDelivery()

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

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

2876  {
2877  $result = new Result();
2878 
2879  if ($custom === true)
2880  {
2881  $this->markFieldCustom('PRICE_DELIVERY');
2882  }
2883 
2884  $r = $this->setField('BASE_PRICE_DELIVERY', $value);
2885  if (!$r->isSuccess())
2886  {
2887  $result->addErrors($r->getErrors());
2888  }
2889 
2890  return $result;
2891  }

◆ setDeliveryRequestMarker()

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

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

1246  {
1247  $order = $this->getParentOrder();
1248 
1249  Requests\Manager::onBeforeShipmentSave($order, $this);
1250  }

◆ setDeliveryService()

setDeliveryService ( Delivery\Services\Base  $deliveryService)
Аргументы
Delivery\Services\Base$deliveryService
Исключения
Main

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

183  {
184  $this->deliveryService = $deliveryService;
185  $resultSetting = $this->setField("DELIVERY_ID", $deliveryService->getId());
186  if ($resultSetting->isSuccess())
187  {
188  $this->setField("DELIVERY_NAME", $deliveryService->getName());
189  }
190  }

◆ setExtraServices()

setExtraServices ( array  $extraServices)
Аргументы
array$extraServices

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

2189  {
2190  $this->extraServices = $extraServices;
2191  }

◆ setField()

setField (   $name,
  $value 
)

Sets new value to specified field of shipment item.

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

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

786  {
787  if ($this->isSystem())
788  {
789  throw new Main\NotSupportedException();
790  }
791 
792  if ($name === "REASON_MARKED" && strlen($value) > 255)
793  {
794  $value = substr($value, 0, 255);
795  }
796 
797  $priceFields = [
798  'BASE_PRICE_DELIVERY' => 'BASE_PRICE_DELIVERY',
799  'PRICE_DELIVERY' => 'PRICE_DELIVERY',
800  'DISCOUNT_PRICE' => 'DISCOUNT_PRICE',
801  ];
802  if (isset($priceFields[$name]))
803  {
804  $value = PriceMaths::roundPrecision($value);
805  }
806 
807  if ($name === 'CUSTOM_PRICE_DELIVERY')
808  {
809  if ($value == 'Y')
810  {
811  $this->markFieldCustom('PRICE_DELIVERY');
812  }
813  else
814  {
815  $this->unmarkFieldCustom('PRICE_DELIVERY');
816  }
817  }
818 
819  return parent::setField($name, $value);
820  }

◆ setFieldNoDemand()

setFieldNoDemand (   $name,
  $value 
)

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

902  {
903  $priceFields = [
904  'BASE_PRICE_DELIVERY' => 'BASE_PRICE_DELIVERY',
905  'PRICE_DELIVERY' => 'PRICE_DELIVERY',
906  'DISCOUNT_PRICE' => 'DISCOUNT_PRICE',
907  ];
908  if (isset($priceFields[$name]))
909  {
910  $value = PriceMaths::roundPrecision($value);
911  }
912 
913  if ($name === 'CUSTOM_PRICE_DELIVERY')
914  {
915  if ($value === 'Y')
916  {
917  $this->markFieldCustom('PRICE_DELIVERY');
918  }
919  else
920  {
921  $this->unmarkFieldCustom('PRICE_DELIVERY');
922  }
923  }
924 
925  parent::setFieldNoDemand($name, $value);
926  }

◆ setOrderId()

setOrderId (   $orderId)
Аргументы
$orderId

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

1473  {
1474  $this->setField('ORDER_ID', $orderId);
1475  }

◆ setServiceParams()

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

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

2161  {
2162  $params = $this->getField('PARAMS');
2163  $params["SERVICE_PARAMS"] = $serviceParams;
2164  $this->setField("PARAMS", $params);
2165  }

◆ setStatus()

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

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

2542  {
2543  global $USER;
2544 
2545  $result = new Result();
2546 
2547  $registry = Registry::getInstance(static::getRegistryType());
2548  /** @var DeliveryStatus $deliveryStatus */
2549  $deliveryStatusClassName = $registry->getDeliveryStatusClassName();
2550 
2551  if (is_object($USER) && $USER->isAuthorized())
2552  {
2553  $statusesList = $deliveryStatusClassName::getAllowedUserStatuses($USER->getID(), $this->getField('STATUS_ID'));
2554  }
2555  else
2556  {
2557  $statusesList = $deliveryStatusClassName::getAllStatuses();
2558  }
2559 
2560  if($this->getField('STATUS_ID') != $status && array_key_exists($status, $statusesList))
2561  {
2562  /** @var Result $r */
2563  $r = $this->setField('STATUS_ID', $status);
2564  if (!$r->isSuccess())
2565  {
2566  $result->addErrors($r->getErrors());
2567  return $result;
2568  }
2569  }
2570 
2571  return $result;
2572  }

◆ setStoreId()

setStoreId (   $storeId)
Аргументы
$storeId

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

2222  {
2223  $this->storeId = (int)$storeId;
2224  }

◆ setWeight()

setWeight ( float  $weight)
Аргументы
float$weight
Возвращает
string|null

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

2247  {
2248  return $this->setField('WEIGHT', $weight);
2249  }

◆ syncQuantityAfterModify()

syncQuantityAfterModify ( BasketItem  $basketItem,
  $value = null,
  $oldValue = null 
)
protected

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

2046  {
2047  $result = new Result();
2048 
2049  /** @var ShipmentItemCollection $shipmentItemCollection */
2051  {
2052  throw new Main\ObjectNotFoundException('Entity "ShipmentItemCollection" not found');
2053  }
2054 
2055  $shipmentItem = $shipmentItemCollection->getItemByBasketCode($basketItem->getBasketCode());
2056 
2057  if ($value == 0)
2058  {
2059  if ($shipmentItem !== null)
2060  {
2061  $shipmentItem->setFieldNoDemand('QUANTITY', 0);
2062  }
2063 
2064  return $result;
2065  }
2066 
2067  if ($shipmentItem === null)
2068  {
2069  $shipmentItem = $shipmentItemCollection->createItem($basketItem);
2070  }
2071 
2072  $deltaQuantity = $value - $oldValue;
2073 
2074 
2075  /** @var Basket $basket */
2076  $basket = $basketItem->getCollection();
2077  if (!$basket)
2078  {
2079  throw new Main\ObjectNotFoundException('Entity "Basket" not found');
2080  }
2081 
2082  /** @var Order $order */
2083  $order = $basket->getOrder();
2084  if (!$order)
2085  {
2086  throw new Main\ObjectNotFoundException('Entity "Order" not found');
2087  }
2088 
2089  $context = [
2090  'USER_ID' => $order->getUserId(),
2091  'SITE_ID' => $order->getSiteId(),
2092  'CURRENCY' => $order->getCurrency(),
2093  ];
2094 
2095  if ($deltaQuantity > 0) // plus
2096  {
2097  $shipmentItem->setFieldNoDemand(
2098  "QUANTITY",
2099  $shipmentItem->getField("QUANTITY") + $deltaQuantity
2100  );
2101 
2102  if ($this->needReservation())
2103  {
2104  /** @var Result $tryReserveResult */
2105  Internals\Catalog\Provider::tryReserveShipmentItem($shipmentItem, $context);
2106  }
2107  }
2108  else // minus
2109  {
2110  if (floatval($shipmentItem->getField("QUANTITY")) <= 0)
2111  {
2112  return new Result();
2113  }
2114 
2115  if ($value != 0 && roundEx($shipmentItem->getField("QUANTITY"), SALE_VALUE_PRECISION) < roundEx(-$deltaQuantity, SALE_VALUE_PRECISION))
2116  {
2117  $result->addError(
2118  new ResultError(
2119  str_replace(
2120  array("#NAME#", "#QUANTITY#", "#DELTA_QUANTITY#"),
2121  array($basketItem->getField("NAME"), $shipmentItem->getField("QUANTITY"), abs($deltaQuantity)),
2122  Loc::getMessage('SALE_SHIPMENT_SYSTEM_QUANTITY_ERROR')
2123  ),
2124  'SALE_SHIPMENT_SYSTEM_QUANTITY_ERROR'
2125  )
2126  );
2127  return $result;
2128  }
2129 
2130  if ($value > 0)
2131  {
2132  $shipmentItem->setFieldNoDemand(
2133  "QUANTITY",
2134  $shipmentItem->getField("QUANTITY") + $deltaQuantity
2135  );
2136  if ($this->needReservation())
2137  {
2138  Internals\Catalog\Provider::tryReserveShipmentItem($shipmentItem, $context);
2139  }
2140  }
2141 
2142  }
2143 
2144  return $result;
2145  }

◆ tryFixError()

tryFixError (   $code)
Аргументы
$code
Возвращает
Result

Замещает IEntityMarker.

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

2638  {
2639  $result = new Result();
2640 
2641  $method = static::getFixMethod($code);
2642  $r = call_user_func_array($method, array($this));
2643  if (!$r->isSuccess())
2644  {
2645  $result->addErrors($r->getErrors());
2646  }
2647  elseif ($r->hasWarnings())
2648  {
2649  $result->addWarnings($r->getWarnings());
2650  }
2651 
2652  return $result;
2653  }

◆ tryReserve()

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

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

1623  {
1625  }

◆ tryShip()

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

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

1643  {
1644  $result = new Result();
1645 
1646  /** @var Result $r */
1648  if ($r->isSuccess())
1649  {
1650  $resultList = $r->getData();
1651 
1652  if (!empty($resultList) && is_array($resultList))
1653  {
1654  /** @var Result $resultDat */
1655  foreach ($resultList as $resultDat)
1656  {
1657  if (!$resultDat->isSuccess())
1658  {
1659  $result->addErrors( $resultDat->getErrors() );
1660  }
1661  }
1662  }
1663  }
1664  else
1665  {
1666  $result->addErrors( $r->getErrors() );
1667  }
1668 
1669  if ($r->hasWarnings())
1670  {
1671  $result->addWarnings( $r->getWarnings() );
1672  }
1673  return $result;
1674  }

◆ tryUnreserve()

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

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

1633  {
1635  }

◆ tryUnship()

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

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

1682  {
1683  return $this->tryShip();
1684  }

◆ updateInternal()

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

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

2835  {
2836  return Internals\ShipmentTable::update($primary, $data);
2837  }

◆ updateReservedFlag()

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

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

545  {
546  $shipmentReserved = true;
547 
548  /** @var ShipmentItemCollection $shipmentItemCollection */
549  if (!$shipmentItemCollection = $shipment->getShipmentItemCollection())
550  {
551  throw new Main\ObjectNotFoundException('Entity "ShipmentItemCollection" not found');
552  }
553 
554  $shipmentItemList = $shipmentItemCollection->getShippableItems();
555 
556  if ($shipmentItemList->count() == 0)
557  {
558  $shipmentReserved = false;
559  }
560 
561  /** @var ShipmentItem $shipmentItem */
562  foreach ($shipmentItemList as $shipmentItem)
563  {
564  if ($shipmentItem->getQuantity() - $shipmentItem->getReservedQuantity())
565  {
566  $shipmentReserved = false;
567  break;
568  }
569  }
570 
571  $shipmentReservedValue = $shipmentReserved ? "Y" : "N";
572  $currentValue = $shipment->getField('RESERVED');
573  if ($shipment->getField('RESERVED') != $shipmentReservedValue)
574  {
575  $eventManager = Main\EventManager::getInstance();
576  $eventsList = $eventManager->findEventHandlers('sale', EventActions::EVENT_ON_BEFORE_SHIPMENT_RESERVE);
577  if (!empty($eventsList))
578  {
579  /** @var Main\Entity\Event $event */
580  $event = new Main\Event('sale', EventActions::EVENT_ON_BEFORE_SHIPMENT_RESERVE, array(
581  'ENTITY' => $shipment,
582  'VALUE' => $shipmentReservedValue,
583  ));
584 
585  $event->send();
586 
587  if ($event->getResults())
588  {
589  $result = new Result();
590  /** @var Main\EventResult $eventResult */
591  foreach($event->getResults() as $eventResult)
592  {
593  if($eventResult->getType() == Main\EventResult::ERROR)
594  {
595  $errorMsg = new ResultError(Main\Localization\Loc::getMessage('SALE_EVENT_ON_BEFORE_SHIPMENT_RESERVE_ERROR'), 'SALE_EVENT_ON_BEFORE_SHIPMENT_RESERVE_ERROR');
596 
597  $eventResultData = $eventResult->getParameters();
598  if ($eventResultData)
599  {
600  if (isset($eventResultData) && $eventResultData instanceof ResultError)
601  {
602  /** @var ResultError $errorMsg */
603  $errorMsg = $eventResultData;
604  }
605  }
606 
607  $result->addError($errorMsg);
608 
609  }
610  }
611 
612  if (!$result->isSuccess())
613  {
614  return $result;
615  }
616  }
617  }
618 
619  $shipment->setFieldNoDemand('RESERVED', $shipmentReserved ? "Y" : "N");
620 
621  Internals\EventsPool::addEvent('s'.$shipment->getInternalIndex(), EventActions::EVENT_ON_SHIPMENT_RESERVED, array(
622  'ENTITY' => $shipment,
623  'VALUE' => $shipmentReservedValue,
624  'OLD_VALUE' => $currentValue,
625  ));
626  }
627 
628  return new Result();
629  }

◆ verify()

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

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

2352  {
2353  $result = new Result();
2354 
2355  if ($this->getDeliveryId() <= 0)
2356  {
2357  $result->addError(
2358  new ResultError(
2359  Loc::getMessage("SALE_SHIPMENT_DELIVERY_SERVICE_EMPTY"),
2360  'SALE_SHIPMENT_DELIVERY_SERVICE_EMPTY'
2361  )
2362  );
2363  }
2364 
2365  /** @var ShipmentItemCollection $shipmentItemCollection */
2367  {
2368  /** @var ShipmentItem $shipmentItem */
2369  foreach ($shipmentItemCollection as $shipmentItem)
2370  {
2371  $r = $shipmentItem->verify();
2372  if (!$r->isSuccess())
2373  {
2374  $result->addErrors($r->getErrors());
2375  }
2376  }
2377  }
2378 
2379  return $result;
2380  }

Поля

◆ $deliveryService

$deliveryService = null
protected

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

◆ $extraServices

$extraServices = null
protected

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

◆ $idShipment

$idShipment = 0
staticprotected

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

◆ $internalId

$internalId = 0
protected

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

◆ $shipmentItemCollection

$shipmentItemCollection
protected

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

◆ $storeId

$storeId = null
protected

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


Объявления и описания членов класса находятся в файле:
Bitrix\Sale\Delivery\Requests\ShipmentTable\getMap
static getMap()
Returns entity map definition.
Definition: delivery/requests/shipment.php:41
Bitrix\Sale\Shipment\$internalId
$internalId
Definition: shipment.php:32
Bitrix\Sale\Shipment\loadDeliveryService
loadDeliveryService()
Definition: shipment.php:1497
Bitrix\Main\Localization\Loc\getMessage
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29
Bitrix\Sale\Internals\ActionEntity\ACTION_ENTITY_SHIPMENT_COLLECTION_RESERVED_QUANTITY
const ACTION_ENTITY_SHIPMENT_COLLECTION_RESERVED_QUANTITY
Definition: actionentity.php:11
Bitrix\Sale\Shipment\saveExtraServices
saveExtraServices()
Definition: shipment.php:2196
Bitrix\Sale\Internals\CollectableEntity\getInternalIndex
getInternalIndex()
Definition: collectableentity.php:83
Bitrix\Sale\Shipment\getVatRate
getVatRate()
Definition: shipment.php:2780
Bitrix\Sale\Internals\CustomFieldsController\getInstance
static getInstance()
Definition: customfieldscontroller.php:25
Bitrix\Sale\EventActions\EVENT_ON_SHIPMENT_STATUS_CHANGE_SEND_MAIL
const EVENT_ON_SHIPMENT_STATUS_CHANGE_SEND_MAIL
Definition: eventactions.php:46
Bitrix\Sale\Configuration\RESERVE_ON_FULL_PAY
const RESERVE_ON_FULL_PAY
Definition: sale/lib/configuration.php:18
Bitrix\Main\ORM\Entity\$className
$className
Definition: main/lib/orm/entity.php:28
Bitrix\Sale\EventActions\ADD
const ADD
Definition: eventactions.php:8
Bitrix\Sale\Shipment\isCustomPrice
isCustomPrice()
Definition: shipment.php:1440
Bitrix\Sale\Internals\PoolBase\add
static add($code, $type, $value)
Definition: poolbase.php:51
Bitrix\Sale\Shipment\calculateDelivery
calculateDelivery()
Definition: shipment.php:2255
Bitrix\Sale\Shipment\$shipmentItemCollection
$shipmentItemCollection
Definition: shipment.php:22
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\Internals\CollectableEntity\getCollection
getCollection()
Definition: collectableentity.php:46
Bitrix\Main\ORM\Entity\$primary
$primary
Definition: main/lib/orm/entity.php:35
Bitrix\Sale\Shipment\getPrice
getPrice()
Definition: shipment.php:1431
Bitrix\Sale\Shipment\$extraServices
$extraServices
Definition: shipment.php:27
Bitrix\Sale\Internals\ShipmentExtraServiceTable\deleteByShipmentId
static deleteByShipmentId($shipmentId)
Definition: shipmentextraservice.php:67
Bitrix\Sale\EventActions\EVENT_ON_SHIPMENT_DEDUCTED
const EVENT_ON_SHIPMENT_DEDUCTED
Definition: eventactions.php:33
Bitrix\Sale\Shipment\setFieldNoDemand
setFieldNoDemand($name, $value)
Definition: shipment.php:901
Bitrix\Sale\Internals\PoolBase\isTypeExists
static isTypeExists($code, $type)
Definition: poolbase.php:76
Bitrix\Forum\Internals\getById
static getById(int $id)
Definition: forum/lib/internals/entityfabric.php:11
Bitrix\Sale\Shipment\getDeliveryId
getDeliveryId()
Definition: shipment.php:1456
Bitrix\Sale\Shipment\saveStoreId
saveStoreId()
Definition: shipment.php:2229
Bitrix\Sale\Shipment\setStatus
setStatus($status)
Definition: shipment.php:2541
Bitrix\Sale\Shipment\getDelivery
getDelivery()
Definition: shipment.php:1482
Bitrix\Sale\Shipment\isExistBasketItem
isExistBasketItem(BasketItem $basketItem)
Definition: shipment.php:2334
Bitrix\Sale\Internals\CollectableEntity\isClone
isClone()
Definition: collectableentity.php:166
Bitrix\Sale\EventActions\EVENT_ON_SHIPMENT_STATUS_CHANGE
const EVENT_ON_SHIPMENT_STATUS_CHANGE
Definition: eventactions.php:45
Bitrix\Sale\Configuration\RESERVE_ON_ALLOW_DELIVERY
const RESERVE_ON_ALLOW_DELIVERY
Definition: sale/lib/configuration.php:19
Bitrix\Main\Config\Option\get
static get($moduleId, $name, $default="", $siteId=false)
Returns a value of an option.
Definition: main/lib/config/option.php:29
Bitrix\Main\Type
Definition: main/lib/type/collection.php:2
Bitrix\Sale\Shipment\onBeforeSave
onBeforeSave()
Definition: shipment.php:967
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\Shipment\tryShip
tryShip()
Definition: shipment.php:1642
Bitrix\Sale\Shipment\$storeId
$storeId
Definition: shipment.php:29
Bitrix\Sale\Configuration\RESERVE_ON_CREATE
const RESERVE_ON_CREATE
Definition: sale/lib/configuration.php:16
Bitrix\Sale\Registry\ENTITY_SHIPMENT
const ENTITY_SHIPMENT
Definition: sale/lib/registry.php:19
Bitrix\Sale\Shipment\needReservation
needReservation()
Definition: shipment.php:267
Bitrix\Sale\Internals\Catalog\Provider\tryReserveShipmentItem
static tryReserveShipmentItem(Sale\ShipmentItem $shipmentItem, array $context=array())
Definition: sale/lib/internals/catalog/provider.php:489
Bitrix\Sale\EventsPool\addEvent
static addEvent(Order $order, $type, $event)
Definition: eventspool.php:24
Bitrix\Sale\Shipment\isSystem
isSystem()
Definition: shipment.php:1511
Bitrix\Sale\Shipment\getParentOrderId
getParentOrderId()
Definition: shipment.php:1336
Bitrix\Sale\Shipment\getId
getId()
Definition: shipment.php:1423
Bitrix\Sale\Shipment\getWeight
getWeight()
Definition: shipment.php:2237
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\Sale\Recurring\repeat
static repeat(Order $order, array $resultList)
Definition: recurring.php:26
Bitrix\Sale\Internals\Catalog\Provider\tryShipShipment
static tryShipShipment(Sale\Shipment $shipment, array $context=array())
Definition: sale/lib/internals/catalog/provider.php:1060
Bitrix\Sale\EventActions\EVENT_ON_SHIPMENT_RESERVED
const EVENT_ON_SHIPMENT_RESERVED
Definition: eventactions.php:36
Bitrix\Main\ORM\Entity\$code
$code
Definition: main/lib/orm/entity.php:52
Bitrix\Sale\Shipment\isShipped
isShipped()
Definition: shipment.php:1525
Bitrix\Sale\Configuration\RESERVE_ON_PAY
const RESERVE_ON_PAY
Definition: sale/lib/configuration.php:17
Bitrix\Sale\EventActions\EVENT_ON_BEFORE_SHIPMENT_STATUS_CHANGE
const EVENT_ON_BEFORE_SHIPMENT_STATUS_CHANGE
Definition: eventactions.php:44
Bitrix\Sale\EventActions\EVENT_ON_BEFORE_SHIPMENT_RESERVE
const EVENT_ON_BEFORE_SHIPMENT_RESERVE
Definition: eventactions.php:35
Bitrix\Sale\Internals\Catalog\Provider\tryReserveShipment
static tryReserveShipment(Sale\Shipment $shipment, array $context=array())
Definition: sale/lib/internals/catalog/provider.php:317
Bitrix\Sale\Shipment\setField
setField($name, $value)
Sets new value to specified field of shipment item.
Definition: shipment.php:785
Bitrix\Sale\Shipment\setStoreId
setStoreId($storeId)
Definition: shipment.php:2221
Bitrix\Sale\Configuration\getProductReservationCondition
static getProductReservationCondition()
Returns current reservation condition.
Definition: sale/lib/configuration.php:60
Bitrix\Sale\Shipment\disallowDelivery
disallowDelivery()
Definition: shipment.php:1781
Bitrix\Sale\EventActions\EVENT_ON_SHIPMENT_ALLOW_DELIVERY
const EVENT_ON_SHIPMENT_ALLOW_DELIVERY
Definition: eventactions.php:32
Bitrix\Sale\Configuration\RESERVE_ON_SHIP
const RESERVE_ON_SHIP
Definition: sale/lib/configuration.php:20
Bitrix\Sale\Shipment\getExtraServices
getExtraServices()
Definition: shipment.php:2170
Bitrix\Sale\Shipment\$deliveryService
$deliveryService
Definition: shipment.php:25
Bitrix\Sale\Cashbox\Manager\getObjectById
static getObjectById($id)
Definition: sale/lib/cashbox/manager.php:60
Bitrix\Sale\Cashbox\Internals\Pool\addDoc
static addDoc($code, $doc)
Definition: cashbox/internals/pool.php:30
Bitrix\Sale\Shipment\getShipmentItemCollection
getShipmentItemCollection()
Definition: shipment.php:1375
Bitrix\Sale\Shipment\deleteDeliveryRequest
deleteDeliveryRequest()
Definition: shipment.php:770
Bitrix\Sale\Internals\CollectableEntity\$collection
$collection
Definition: collectableentity.php:16
Bitrix\Sale\Shipment\getParentOrder
getParentOrder()
Definition: shipment.php:2898
Bitrix\Sale\PriceMaths\roundPrecision
static roundPrecision($value)
Definition: pricemaths.php:17
Bitrix\Sale\Internals\AccountNumberGenerator\generateForShipment
static generateForShipment(CollectableEntity $item)
Definition: accountnumber.php:141
Bitrix\Sale\Internals\ProviderCreator\create
static create(array $context)
Definition: providercreator.php:22
Bitrix\Sale\Shipment\onAfterSave
onAfterSave($isNew)
Definition: shipment.php:1309
Bitrix\Sale\Shipment\setExtraServices
setExtraServices(array $extraServices)
Definition: shipment.php:2188
Bitrix\Sale\Shipment\getOrder
getOrder()
Definition: shipment.php:1350
Bitrix\Sale\Shipment\getStoreId
getStoreId()
Definition: shipment.php:2204
Bitrix\Sale\Shipment\isAllowDelivery
isAllowDelivery()
Definition: shipment.php:1573
Bitrix\Sale\Shipment\syncQuantityAfterModify
syncQuantityAfterModify(BasketItem $basketItem, $value=null, $oldValue=null)
Definition: shipment.php:2045
Bitrix\Sale\Shipment\getField
getField($name)
Definition: shipment.php:827
Bitrix\Main\Loader\includeModule
static includeModule($moduleName)
Includes module by its name.
Definition: main/lib/loader.php:70
Bitrix\Sale\Internals\Catalog\Provider\tryUnreserveShipment
static tryUnreserveShipment(Sale\Shipment $shipment)
Definition: sale/lib/internals/catalog/provider.php:825
Bitrix\Main\ORM\Entity\$name
$name
Definition: main/lib/orm/entity.php:32