2namespace Sale\Handlers\Delivery\Additional\DeliveryRequests\RusPost\Requests;
5use Bitrix\Main\Web\HttpClient;
6use Bitrix\Sale\Delivery\Requests;
7use Bitrix\Main\Localization\Loc;
8use Sale\Handlers\Delivery\AdditionalHandler;
9use Sale\Handlers\Delivery\Additional\DeliveryRequests\RusPost\Reference;
10use Sale\Handlers\Delivery\Additional\DeliveryRequests\RusPost\Handler;
12Loc::loadMessages(__FILE__);
20class BatchCreate
extends Base
22 protected $path =
"/1.0/user/shipment";
23 protected $type = HttpClient::HTTP_POST;
25 protected $deliveryService =
null;
26 protected $shipmentIdsMap =
array();
33 protected function convertResponse($rawData, $requestData)
35 $result =
new Requests\Result();
36 $errorPositions =
array();
37 $flippedIdsMap = array_flip($this->shipmentIdsMap);
40 $batchesResults =
array();
42 $shipmentResults =
array();
44 if(is_array($rawData[
'errors']))
46 foreach($rawData[
'errors'] as
$error)
48 if(!isset($requestData[
$error[
'position']]))
51 $externalShipmentId = $requestData[
$error[
'position']];
52 $internalShipmentId = $flippedIdsMap[$externalShipmentId];
54 if(!isset($shipmentResults[$internalShipmentId]))
55 $shipmentResults[$internalShipmentId] =
new Requests\ShipmentResult($internalShipmentId, $externalShipmentId);
57 $errorPositions[] =
$error[
'position'];
58 $message = Reference::getErrorDescription(
$error[
'error-code'],
'POST /1.0/user/shipment');
60 if(!empty(
$error[
'error-details']))
61 $message .=
' ('.$error[
'error-details'].
')';
63 $shipmentResults[$internalShipmentId]->addError(
new Main\
Error(
$message));
67 if(is_array($rawData[
'batches']) && !empty($rawData[
'batches']))
69 foreach($rawData[
'batches'] as $id => $batch)
71 $shpResults =
array();
72 $batchesResults[$id] =
new Requests\RequestResult();
73 $resOrders = $this->getBatchOrders($batch[
'batch-name']);
75 if(!$resOrders->isSuccess())
77 $batchesResults[$id]->addErrors($resOrders->getErrors());
81 foreach($resOrders->getData() as
$order)
84 $shpResults[
$order[
'order-num']] =
new Requests\ShipmentResult(
$order[
'order-num'], intval(
$order[
'id']));
85 $shpResults[
$order[
'order-num']]->setTrackingNumber(
$order[
'barcode']);
86 $shpResults[
$order[
'order-num']]->setDeliveryDocNum(
$order[
'list-number']);
87 $shpResults[
$order[
'order-num']]->setDeliveryDocDate(
$order[
'ist-number-date']);
90 $batchesResults[$id]->setResults($shpResults);
91 $batchesResults[$id]->setExternalId($batch[
'batch-name']);
92 $batchesResults[$id]->setData($batch);
98 array_values($batchesResults),
99 array_values($shipmentResults)
110 protected function getBatchOrders($batchName)
113 $deliveryRequest = $this->deliveryService->getDeliveryRequestHandler();
114 return $deliveryRequest->send(
'BATCH_ORDERS',
array(
'BATCH_NAME' => $batchName));
122 public function createBody(
array $shipmentIds,
array $additional =
array())
124 $result =
new Requests\Result();
126 if(empty($shipmentIds))
128 $result->addError(
new Main\
Error(Loc::getMessage(
'SALE_DLVRS_ADD_DREQ_RBATCHC_01')));
133 $deliveryRequest = $this->deliveryService->getDeliveryRequestHandler();
134 $request = $deliveryRequest->getRequestObject(
'ORDER_CREATE');
137 $addedShipments =
array();
139 if(!
$res->isSuccess())
143 $shipmentCreateResults =
$res->getShipmentResults();
145 if(!empty($shipmentCreateResults))
147 foreach($shipmentCreateResults as $createResult)
149 $shipmentId = $createResult->getInternalId();
151 if($createResult->isSuccess() && $createResult->getExternalId() <>
'')
152 $this->shipmentIdsMap[$shipmentId] = $createResult->getExternalId();
155 $addedShipments = array_values($this->shipmentIdsMap);
156 $result->setResults($shipmentCreateResults);
159 if(!empty($addedShipments))
160 $result->setData($addedShipments);
162 $result->addError(
new Main\
Error(Loc::getMessage(
'SALE_DLVRS_ADD_DREQ_RBATCHC_03')));
172 public function process(
array $shipmentIds,
array $additional =
array())
174 $result =
new Requests\Result();
176 if(!empty($additional[
'DATE']))
180 $date =
new Main\Type\Date($additional[
'DATE']);
182 catch (Main\ObjectException $exception)
184 $result->addError(
new Main\
Error(Loc::getMessage(
'SALE_DLVRS_ADD_DREQ_RBATCHC_04')));
188 $this->
path = $this->
path.
'?sending-date='.$date->format(
'Y').
'-'.$date->format(
'm').
'-'.$date->format(
'd');
191 return parent::process($shipmentIds, $additional);
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)