4namespace Bitrix\Sale\Controller;
10use Bitrix\Main\ModuleManager;
11use Bitrix\Main\NotImplementedException;
12use Bitrix\Rest\RestException;
13use Bitrix\Sale\Helpers\Order\Builder\SettingsContainer;
14use Bitrix\Sale\Rest\ModificationFieldsBase;
15use Bitrix\Sale\Result;
16use Bitrix\Sale\TradeBindingEntity;
28 return ModuleManager::isModuleInstalled(
'crm');
33 $r = $this->checkPermission(
$action->getName());
38 $internalizer = \Bitrix\Crm\Order\Rest\Internalizer::buildByAction(
$action, [], $this->
getScope());
45 $r = $internalizer->process();
49 $action->setArguments($r->getData()[
'data']);
50 return parent::processBeforeAction(
$action);
68 if($this->errorCollection->count()==0)
77 $externalizer = \Bitrix\Crm\Order\Rest\Externalizer::buildByAction(
$action,
$data, $this->
getScope());
98 $externalizer->setFormat([
107 $externalizer->getPage(
$result):$externalizer;
111 return $externalizer->toArray();
149 ? new \Bitrix\Crm\Order\Builder\OrderBuilderRest(
$settings)
150 : new \Bitrix\Sale\Helpers\Order\Builder\OrderBuilderRest(
$settings);
156 'deleteClientsIfNotExists' =>
true,
157 'deleteTradeBindingIfNotExists' =>
true,
158 'deletePaymentIfNotExists' =>
true,
159 'deleteShipmentIfNotExists' =>
true,
160 'deleteShipmentItemIfNotExists' =>
true,
161 'deletePropertyValuesIfNotExists' =>
true,
162 'createDefaultPaymentIfNeed' =>
false,
163 'createDefaultShipmentIfNeed' =>
false,
164 'createUserIfNeed' => SettingsContainer::SET_ANONYMOUS_USER,
165 'cacheProductProviderData' =>
false,
167 'acceptableErrorCodes' => []
173 $orderProperties = [];
175 if (isset($this->request->getFileList()[
'fields'][
'PROPERTIES']))
177 foreach ($this->request->getFileList()[
'fields'][
'PROPERTIES'] as $orderPropId => $arFileData)
179 if (is_array($arFileData))
181 foreach ($arFileData as $paramName => $value)
183 if (is_array($value))
185 foreach ($value as $nIndex =>
$val)
187 if ($arFileData[
"name"][$nIndex] <>
'')
189 $orderProperties[$orderPropId][$nIndex][$paramName] =
$val;
195 $orderProperties[$orderPropId][$paramName] = $value;
202 return $orderProperties;
212 $director = new \Bitrix\Crm\Order\Rest\Normalizer\Director();
213 $normalizer = new \Bitrix\Crm\Order\Rest\Normalizer\ObjectNormalizer(
$fields);
217 $director = new \Bitrix\Sale\Rest\Normalizer\Director();
218 $normalizer = new \Bitrix\Sale\Rest\Normalizer\ObjectNormalizer(
$fields);
221 return $director->normalize($normalizer,
$order);
230 $ixInternal[
'personType'][$row[
'ID']] = $row[
'XML_ID'];
235 $ixInternal[
'orderStatus'][$row[
'ID']] = $row[
'XML_ID'];
238 foreach (\
Bitrix\
Sale\Property::getList([
'select'=>[
'ID',
'XML_ID']])->fetchAll() as $row)
240 $ixInternal[
'properties'][$row[
'ID']] = $row[
'XML_ID'];
243 foreach (\
Bitrix\Sale\PaySystem\Manager::getList([
'select'=>[
'ID',
'XML_ID',
'IS_CASH']])->fetchAll() as $row)
245 $ixInternal[
'paySystems'][$row[
'ID']][
'XML_ID'] = $row[
'XML_ID'];
246 $ixInternal[
'paySystems'][$row[
'ID']][
'IS_CASH'] = $row[
'IS_CASH'];
249 foreach (\Bitrix\Sale\Delivery\Services\Manager::getActiveList() as $row)
251 $ixInternal[
'deliverySystems'][$row[
'ID']] = $row[
'XML_ID'];
254 foreach (\Bitrix\Sale\DeliveryStatus::getList([
'select'=>[
'ID',
'XML_ID']]) as $row)
256 $ixInternal[
'deliveryStatus'][$row[
'ID']] = $row[
'XML_ID'];
259 foreach (\Bitrix\Sale\TradingPlatformTable::getList([
'select'=>[
'ID',
'XML_ID']])->fetchAll() as $row)
261 $ixInternal[
'tradingPlatform'][$row[
'ID']] = $row[
'XML_ID'];
265 $r[
'ORDER'][
$order->getInternalId()] = [
266 'PERSON_TYPE_XML_ID' => $ixInternal[
'personType'][
$order->getPersonTypeId()] ??
null,
267 'STATUS_XML_ID' => $ixInternal[
'orderStatus'][
$order->getField(
'STATUS_ID')] ??
null,
270 foreach (
$order->getPropertyCollection() as $property)
272 $r[
'PROPERTIES'][$property->getInternalIndex()] = [
273 'ORDER_PROPS_XML_ID' => $ixInternal[
'properties'][$property->getPropertyId()] ??
null,
279 $r[
'PAYMENTS'][
$payment->getInternalIndex()] = [
280 'PAY_SYSTEM_XML_ID' => $ixInternal[
'paySystems'][
$payment->getPaymentSystemId()][
'XML_ID'] ??
null,
281 'PAY_SYSTEM_IS_CASH' => $ixInternal[
'paySystems'][
$payment->getPaymentSystemId()][
'IS_CASH'] ??
null,
286 foreach (
$order->getShipmentCollection() as $shipment)
288 $shipmentIndex = $shipment->getInternalIndex();
289 $r[
'SHIPMENTS'][$shipmentIndex] = [
290 'DELIVERY_XML_ID' => $ixInternal[
'deliverySystems'][$shipment->getDeliveryId()] ??
null,
291 'STATUS_XML_ID' => $ixInternal[
'deliveryStatus'][$shipment->getField(
'STATUS_ID')] ??
null,
296 foreach (
$order->getTradeBindingCollection() as $binding)
298 if ($binding->getTradePlatform() !==
null)
300 $r[
'TRADE_BINDINGS'][$binding->getInternalIndex()] = [
301 'TRADING_PLATFORM_XML_ID' => $ixInternal[
'tradingPlatform'][$binding->getTradePlatform()->getId()] ??
null,
309 private function checkPermission(
$name)
365 $r->addError(
new Error(
'Access Denied', 200040300010));
377 $r->addError(
new Error(
'Access Denied', 200040300020));
checkModifyPermissionEntity()
checkDeletePermissionEntity()
toArray(\Bitrix\Sale\Order $order, array $fields=[])
checkReadPermissionEntity()
checkCreatePermissionEntity()
processBeforeAction(Engine\Action $action)
checkPermissionEntity($name)
getFielsPropertyValuesFromRequest()
processAfterAction(Engine\Action $action, $result)
static getNavData($start, $bORM=false)
getBuilder(SettingsContainer $settings=null)
getSettingsContainerDefault()
checkUpdatePermissionEntity()
static getList(array $parameters=[])
static buildByAction(Action $action, $data=[], $scope='')
static getList(array $parameters=array())
</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)