• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/exchange/entity/orderimport.php
  • Класс: BitrixSaleExchangeEntityOrderImport
  • Вызов: OrderImport::fillTax
private function fillTax(Order $order, array $fields, $modifyTaxList)
    {
        if(isset($modifyTaxList))
        {
            /** @var SaleTax $tax */
            $tax = $order->getTax();
            $tax->resetTaxList();

            /** @var SaleBasket $basket */
            $basket = $order->getBasket();
            $productVatData = static::getProductsVatRate($basket);

            /** @var SaleBasketItem $basketItem */
            foreach($basket as $basketItem)
            {
                $code = $basketItem->getBasketCode();
                if(isset($modifyTaxList[$code]))
                {
                    /*if($basketItem->getId()>0)
                    {
                        $this->setCollisions(EntityCollisionType::OrderBasketItemTaxValueError, $this->getEntity(), $basketItem->getField('NAME'));
                    }
                    else
                    {*/
                        $productVatFields = $productVatData[$basketItem->getBasketCode()];
                        if(!empty($productVatFields))
                        {
                            if($productVatFields['VAT_RATE'] <> $modifyTaxList[$code]['VAT_RATE'])
                            {
                                $this->setCollisions(EntityCollisionType::OrderBasketItemTaxValueError, $order, $basketItem->getField('NAME'));
                            }
                        }
                    //}

                    $basketItem->setField('VAT_RATE', $modifyTaxList[$code]['VAT_RATE']);
                    $basketItem->setField('VAT_INCLUDED', $modifyTaxList[$code]['VAT_INCLUDED']);
                }
            }

            $tax->initTaxList($this->prepareFieldsTax($fields));
            $order->refreshVat();
        }
     }