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

        $criterion = $this->getCurrentCriterion($this->getEntity());

        /** @var SaleOrder $order*/
        $order = $this->getEntity();

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

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

        if($criterion->equals($fields))
        {
            $result = $this->fillProperty($order, $propertyFields);
            if(!$result->isSuccess())
            {
                return $result;
            }

            $basket = $order->getBasket();

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

            $result = $order->doFinalAction(true);
            if(!$result->isSuccess())
            {
                return $result;
            }

		foreach ($fields as $k =>$field)
		{
			if(!in_array($k, $order::getAvailableFields()))
				unset($fields[$k]);
            }

            $result = $order->setFields($fields);
        }

        return $result;
    }