3namespace Bitrix\Sale\Controller;
5use Bitrix\Main\Engine\AutoWire\ExactParameter;
6use Bitrix\Main\Engine\Response\DataType\Page;
8use Bitrix\Main\UI\PageNavigation;
9use Bitrix\Sale\Helpers\Order\Builder\SettingsContainer;
11use Bitrix\Sale\Result;
12use Bitrix\Sale\ShipmentCollection;
21 function($className, $id)
27 $shipmentClass = $registry->getShipmentClassName();
29 $r = $shipmentClass::getList([
30 'select'=>[
'ORDER_ID'],
37 if ($row = $r->fetch())
40 $orderClass = $registry->getOrderClassName();
42 $order = $orderClass::load($row[
'ORDER_ID']);
43 $shipment =
$order->getShipmentCollection()->getItemById($id);
51 $this->
addError(
new Error(
'shipment is not exists', 201140400001));
62 $entity = new \Bitrix\Sale\Rest\Entity\Shipment();
63 return [
'SHIPMENT'=>
$entity->prepareFieldInfos(
70 $builder = $this->getBuilder();
71 $builder->buildEntityShipments(
$fields);
73 if($builder->getErrorsContainer()->getErrorCollection()->count()>0)
75 $this->
addErrors($builder->getErrorsContainer()->getErrors());
79 $order = $builder->getOrder();
94 return [
'SHIPMENTS'=>$this->toArray(
$order)[
'ORDER'][
'SHIPMENTS']];
104 $builder = $this->getBuilder(
106 'deleteShipmentIfNotExists' =>
false,
107 'deleteShipmentItemIfNotExists' =>
false,
110 $builder->buildEntityShipments(
$data);
112 if($builder->getErrorsContainer()->getErrorCollection()->count()>0)
114 $this->
addErrors($builder->getErrorsContainer()->getErrors());
118 $order = $builder->getOrder();
121 $collection =
$order->getShipmentCollection();
123 foreach($collection as $shipment)
125 if($shipment->getId() <= 0)
127 $idx = $shipment->getInternalIndex();
138 elseif ($r->hasWarnings())
145 $entity =
$order->getShipmentCollection()->getItemByIndex($idx);
146 return [
'SHIPMENT'=>$this->
get(
$entity)];
149 public function updateAction(\Bitrix\Sale\Shipment $shipment,
array $fields)
153 $fields[
'ID'] = $shipment->getId();
154 $fields[
'ORDER_ID'] = $shipment->getParentOrderId();
159 $builder = $this->getBuilder(
160 new SettingsContainer([
161 'deleteShipmentIfNotExists' =>
false,
162 'deleteShipmentItemIfNotExists' =>
false,
165 $builder->buildEntityShipments(
$data);
167 if($builder->getErrorsContainer()->getErrorCollection()->count()>0)
169 $this->
addErrors($builder->getErrorsContainer()->getErrors());
173 $order = $builder->getOrder();
188 $entity =
$order->getShipmentCollection()->getItemById($shipment->getId());
189 return [
'SHIPMENT'=>$this->
get(
$entity)];
194 $r = $shipment->delete();
195 return $this->save($shipment, $r);
200 return [
'SHIPMENT'=>$this->
get($shipment)];
210 new \Bitrix\Main\Entity\ReferenceField(
212 '\Bitrix\Sale\Internals\StatusTable',
213 array(
'=this.STATUS_ID' =>
'ref.ID')
215 new \Bitrix\Main\Entity\ReferenceField(
217 '\Bitrix\Sale\Delivery\Services\Table',
218 array(
'=this.DELIVERY_ID' =>
'ref.ID')
227 'offset' => $pageNavigation->
getOffset(),
228 'limit' => $pageNavigation->
getLimit(),
229 'runtime' => $runtime,
243 return $shipment->getAllowDeliveryDate();
248 return $shipment->getAllowDeliveryUserId();
253 return $shipment->getCompanyId();
258 return $shipment->getCurrency();
263 return $shipment->getDeliveryId();
268 return $shipment->getDeliveryName();
273 return $shipment->getParentOrderId();
278 return $shipment->getPersonTypeId();
283 return $shipment->getPrice();
288 return $shipment->getShippedDate();
293 return $shipment->getShippedUserId();
298 return $shipment->getStoreId();
303 $shipment->getUnshipReason();
308 return $shipment->getVatRate();
313 return $shipment->getVatSum();
318 return $shipment->getWeight();
323 return $shipment->isAllowDelivery()?
'Y':
'N';
328 return $shipment->isCanceled()?
'Y':
'N';
333 return $shipment->isCustomPrice()?
'Y':
'N';
338 return $shipment->isEmpty()?
'Y':
'N';
343 return $shipment->isMarked()?
'Y':
'N';
348 return $shipment->isReserved()?
'Y':
'N';
353 return $shipment->isShipped()?
'Y':
'N';
358 $r=$shipment->setBasePriceDelivery($value,
$custom);
359 return $this->save($shipment, $r);
364 $r = $shipment->setField(
'DEDUCTED', $value);
365 return $this->save($shipment, $r);
379 $collection = $shipment->getCollection();
380 $r = $collection->getOrder()->save();
388 return $r->isSuccess();
393 $shipments = $this->toArray($shipment->getCollection()->getOrder(),
$fields)[
'ORDER'][
'SHIPMENTS'];
394 foreach ($shipments as $item)
396 if($item[
'ID']==$shipment->getId())
410 foreach(
$fields[
'SHIPMENTS'] as
$k=>$shipmentFormData)
413 if(isset($shipmentFormData[
'SHIPMENT_ITEMS']))
415 unset(
$data[
$k][
'SHIPMENT_ITEMS']);
418 foreach($shipmentFormData[
'SHIPMENT_ITEMS'] as $item)
422 if(isset($item[
'ID']) && intval($item[
'ID'])>0)
424 $shipmentItem[
'ORDER_DELIVERY_BASKET_ID'] = intval($item[
'ID']);
428 if(isset($item[
'BASKET_ID']))
429 $shipmentItem[
'BASKET_CODE'] = $item[
'BASKET_ID'];
432 if(isset($item[
'XML_ID']))
433 $shipmentItem[
'XML_ID'] = $item[
'XML_ID'];
435 $shipmentItem[
'AMOUNT'] = $item[
'QUANTITY'];
441 $storesInfo = isset($item[
'BARCODE_INFO'])? $item[
'BARCODE_INFO']:[];
442 foreach($storesInfo as &$storeInfo)
444 if(isset($storeInfo[
'BARCODE']))
446 foreach ($storeInfo[
'BARCODE'] as &$barCode)
447 $barCode[
'ID'] = isset($barCode[
'ID'])?$barCode[
'ID']:0;
459 $data[
$k][
'PRODUCT'][] = $shipmentItem + [
'BARCODE_INFO'=> $storesInfo];
469 return is_array(
$data)?[
'SHIPMENT'=>
$data]:[];
474 if(
$name ==
'getallowdeliverydate'
475 ||
$name ==
'getallowdeliveryuserid'
476 ||
$name ==
'getcompanyid'
477 ||
$name ==
'getcurrency'
478 ||
$name ==
'getdeliveryid'
479 ||
$name ==
'getdeliveryname'
480 ||
$name ==
'getparentorderid'
481 ||
$name ==
'getpersontypeid'
482 ||
$name ==
'getprice'
483 ||
$name ==
'getphippeddate'
484 ||
$name ==
'getstoreid'
485 ||
$name ==
'getunshipreason'
486 ||
$name ==
'getvatrate'
487 ||
$name ==
'getvatsum'
488 ||
$name ==
'getweight'
489 ||
$name ==
'getshippeddate'
490 ||
$name ==
'getshippeduserid'
491 ||
$name ==
'isallowdelivery'
492 ||
$name ==
'iscanceled'
493 ||
$name ==
'iscustomprice'
494 ||
$name ==
'isempty'
495 ||
$name ==
'ismarked'
496 ||
$name ==
'isreserved'
497 ||
$name ==
'isshipped'
500 $r = $this->checkReadPermissionEntity();
503 ||
$name ==
'setshipped'
506 $r = $this->checkModifyPermissionEntity();
510 $r = parent::checkPermissionEntity(
$name);
getPrimaryAutoWiredParameter()
static prepareFields($fields)
getWeightAction(\Bitrix\Sale\Shipment $shipment)
isMarkedAction(\Bitrix\Sale\Shipment $shipment)
setBasePriceDeliveryAction(\Bitrix\Sale\Shipment $shipment, $value, $custom=false)
getAction(\Bitrix\Sale\Shipment $shipment)
getAllowDeliveryDateAction(\Bitrix\Sale\Shipment $shipment)
checkPermissionEntity($name)
getAllowDeliveryUserIdAction(\Bitrix\Sale\Shipment $shipment)
getCompanyIdAction(\Bitrix\Sale\Shipment $shipment)
getVatRateAction(\Bitrix\Sale\Shipment $shipment)
getShippedUserIdAction(\Bitrix\Sale\Shipment $shipment)
getVatSumAction(\Bitrix\Sale\Shipment $shipment)
isCanceledAction(\Bitrix\Sale\Shipment $shipment)
getUnshipReasonAction(\Bitrix\Sale\Shipment $shipment)
isCustomPriceAction(\Bitrix\Sale\Shipment $shipment)
listAction(PageNavigation $pageNavigation, array $select=[], array $filter=[], array $order=[])
isEmptyAction(\Bitrix\Sale\Shipment $shipment)
getStoreIdAction(\Bitrix\Sale\Shipment $shipment)
getPersonTypeIdAction(\Bitrix\Sale\Shipment $shipment)
isShippedAction(\Bitrix\Sale\Shipment $shipment)
deleteAction(\Bitrix\Sale\Shipment $shipment)
isReservedAction(\Bitrix\Sale\Shipment $shipment)
getDeliveryIdAction(\Bitrix\Sale\Shipment $shipment)
getCurrencyAction(\Bitrix\Sale\Shipment $shipment)
getDeliveryNameAction(\Bitrix\Sale\Shipment $shipment)
getParentOrderIdAction(\Bitrix\Sale\Shipment $shipment)
setShippedAction(\Bitrix\Sale\Shipment $shipment, $value)
getPriceAction(\Bitrix\Sale\Shipment $shipment)
isAllowDeliveryAction(\Bitrix\Sale\Shipment $shipment)
getShippedDateAction(\Bitrix\Sale\Shipment $shipment)
static getInstance($type)
const REGISTRY_TYPE_ORDER
static getList(array $parameters)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"