1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
batchorderadd.php
См. документацию.
1<?
2namespace Sale\Handlers\Delivery\Additional\DeliveryRequests\RusPost\Requests;
3
4use Bitrix\Main\Error;
5use Bitrix\Main\Web\HttpClient;
6use Bitrix\Sale\Delivery\Requests;
7use Bitrix\Main\Localization\Loc;
8use Sale\Handlers\Delivery\Additional\DeliveryRequests\RusPost\Reference;
9
10Loc::loadMessages(__FILE__);
11
18class BatchOrderAdd extends Base
19{
20 protected $path = "/1.0/batch/{name}/shipment";
21 protected $type = HttpClient::HTTP_PUT;
22 protected $name = '';
23 protected $internalRequestId = 0;
24
30 protected function convertResponse($rawData, $requestData)
31 {
32 $result = new Requests\Result();
33 $reqRes = new Requests\RequestResult();
34 $reqRes->setExternalId($this->name);
35 $reqRes->setInternalId($this->internalRequestId);
36
38 $shpResults = array();
39 $errorPositions = array();
40
41 if(is_array($rawData['errors']))
42 {
43 foreach($rawData['errors'] as $error)
44 {
45 if(!isset($requestData[$error['position']]))
46 continue;
47
48 $internalId = $requestData[$error['position']]['order-num'];
49 $errorPositions[$error['position']] = true;
50
51 if(!isset($shpResults[$internalId]))
52 $shpResults[$internalId] = new Requests\ShipmentResult($internalId);
53
54 if(is_array($error['error-codes']))
55 {
56 $message = '';
57
58 foreach($error['error-codes'] as $errorCode)
59 {
60 $message = Reference::getErrorDescription($errorCode['code'], 'POST /1.0/user/shipment');
61
62 if(!empty($errorCode['details']) && $message.'.' != $errorCode['details'])
63 {
64 if($errorCode['code'] == 'ILLEGAL_MAIL_CATEGORY')
65 $message = str_replace('%s', Reference::getRpoCategory($errorCode['details']), $message);
66 else
67 $message .= ' ('.$errorCode['details'].')';
68 }
69 }
70
71 if($message <> '')
72 $shpResults[$internalId]->addError(new Error($message));
73 }
74 }
75 }
76
77 if(is_array($rawData['result-ids']) && is_array($requestData))
78 {
79 $resultIdsPosition = 0;
80 $deliveryRequest = $this->deliveryService->getDeliveryRequestHandler();
81
83 $res = $deliveryRequest->getRequestObject('BATCH')->process(array('BATCH_NAME' => $this->name));
84 $listNumber = '';
85 $listDate = '';
86
87 if($res->isSuccess())
88 {
89 $batchData = $res->getData();
90
91 if(!empty($batchData['list-number']))
92 $listNumber = $batchData['list-number'];
93
94 if(!empty($batchData['list-number-date']))
95 $listDate = $batchData['list-number-date'];
96 }
97
99 $res = $deliveryRequest->send('BATCH_ORDERS', array('BATCH_NAME' => $this->name));
100 $batchOrders = array();
101
102 if($res->isSuccess())
103 $batchOrders = $res->getData();
104
105 for($i = 0, $l = count($requestData); $i < $l; $i++)
106 {
107 if(isset($errorPositions[$i]))
108 continue;
109
110 $internalId = $requestData[$i]['order-num'];
111 $externalId = $rawData['result-ids'][$resultIdsPosition];
112 $resultIdsPosition++;
113
114 if(!isset($shpResults[$internalId]))
115 {
116 $shpResults[$internalId] = new Requests\ShipmentResult($internalId, $externalId);
117
118 foreach($batchOrders as $order)
119 {
120 if($order['order-num'] == $internalId)
121 {
122 $shpResults[$internalId]->setTrackingNumber($order['barcode']);
123 break;
124 }
125 }
126
127 $shpResults[$internalId]->setDeliveryDocNum($listNumber);
128 $shpResults[$internalId]->setDeliveryDocDate($listDate);
129 }
130 }
131 }
132
133 if(!empty($shpResults))
134 {
135 $reqRes->addResults(array_values($shpResults));
136 $result->addResult($reqRes);
137 }
138
139 return $result;
140 }
141
147 public function createBody(array $shipmentIds, array $additional = array())
148 {
150 $deliveryRequest = $this->deliveryService->getDeliveryRequestHandler();
151 $orderCreateRequest = $deliveryRequest->getRequestObject('ORDER_CREATE');
152 $result = $orderCreateRequest->createBody($shipmentIds, $additional);
153
154 if(!$result->isSuccess())
155 return $result;
156
157 $data = $result->getData();
158
159 if(empty($data))
160 $result->addError(new Error(Loc::getMessage('SALE_DLVRS_ADD_DREQ_BOA_DATA_EMPTY')));
161
162 return $result;
163
164 }
165
171 public function process(array $shipmentIds, array $additional = array())
172 {
173 if(empty($additional['BATCH_NAME']))
174 {
175 $result = new Requests\Result();
176 $result->addError(new Error(Loc::getMessage('SALE_DLVRS_ADD_DREQ_BOA_BNAME_EMPTY')));
177 }
178 $this->path = str_replace('{name}', $additional['BATCH_NAME'], $this->path);
179 $this->name = $additional['BATCH_NAME'];
180 $this->internalRequestId = $additional['REQUEST_ID'];
181 return parent::process($shipmentIds, $additional);
182 }
183}
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$result
Определения get_property_values.php:14
$l
Определения options.php:783
trait Error
Определения error.php:11
$order
Определения payment.php:8
$message
Определения payment.php:8
$i
Определения factura.php:643
</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."%"
Определения waybill.php:936
$error
Определения subscription_card_product.php:20
path
Определения template_copy.php:201