• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/exchange/entity/orderimport.php
  • Класс: BitrixSaleExchangeEntityOrderImport
  • Вызов: OrderImport::add
public function add(array $params)
    {
        $result = new SaleResult();

        $fields = $params['TRAITS'];
        $basketItems = $params['ITEMS'];
        $taxes = $params['TAXES'];

        $userId = $fields['USER_ID'];
        $personalTypeId = $fields['PERSON_TYPE_ID'];

        $propertyFields = '';
        if(isset($fields['ORDER_PROP']))
        {
            $propertyFields = $fields['ORDER_PROP'];
            unset($fields['ORDER_PROP']);
        }

        if(empty($personalTypeId))
        {
            $result->addError(new MainError('Person type is not load'));
        }

        if(empty($userId))
        {
            $result->addError(new MainError('User id is not load'));
        }
        if(!$result->isSuccess())
        {
            return $result;
        }

        /** @var SaleOrder $entity */
	$entity = $this->createEntity(['USER_ID'=>$userId]);
	$entity->setPersonTypeId($personalTypeId);

        $result = $this->fillProperty($entity, $propertyFields);
        if(!$result->isSuccess())
        {
            return $result;
        }

	$registry = SaleRegistry::getInstance($entity::getRegistryType());
	$basketClassName = $registry->getBasketClassName();

        $basket = $basketClassName::create($entity->getSiteId());

        $result = $this->fillBasket($basket, $basketItems);
        if($result->isSuccess())
        {
		$entity->setBasket($basket);
            $items = $result->getData();
            $this->fillTax($entity, $taxes, $items['modifyTaxList']);
        }
        else
        {
            return $result;
        }

	$entity->setFields($fields);

        /** @var SaleResult $r */
        $result = $entity->doFinalAction(true);
        if ($result->isSuccess())
        {
            $this->setEntity($entity);
        }

        return $result;
        //static::transformationLocation($order);
    }