• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/documentgenerator/dataprovider/order.php
  • Класс: Bitrix\Crm\Integration\DocumentGenerator\DataProvider\Order
  • Вызов: Order::loadVatTaxesInfo
protected function loadVatTaxesInfo()
{
	$taxes = parent::loadVatTaxesInfo();
	$taxInfos = \CCrmTax::GetVatRateInfos();

	$order = $this->getOrder();
	if (!$order || empty($taxInfos))
	{
		return $taxes;
	}
	$taxNames = [];
	foreach($taxInfos as $taxInfo)
	{
		$taxNames[$taxInfo['VALUE']] = $taxInfo['NAME'];
	}
	$currencyID = $this->getCurrencyId();
	foreach ($order->getShipmentCollection() as $shipment)
	{
		/** @var \Bitrix\Crm\Order\Shipment $shipment */
		$vatSum = $shipment->getVatSum();
		if ($vatSum <= 0)
		{
			continue;
		}
		$vatRate = $shipment->getVatRate();
		$vatRate = isset($vatRate) ? $vatRate * 100 : null;
		if (!isset($taxNames[$vatRate]))
		{
			continue;
		}
		if (!isset($taxes[$vatRate]))
		{
			$taxes[$vatRate] = [
				'NAME' => $taxNames[$vatRate],
				'VALUE' => new Money(0, ['CURRENCY_ID' => $currencyID, 'WITH_ZEROS' => true]),
				'NETTO' => new Money(0, ['CURRENCY_ID' => $currencyID, 'WITH_ZEROS' => true]),
				'BRUTTO' => new Money(0, ['CURRENCY_ID' => $currencyID, 'WITH_ZEROS' => true]),
				'RATE' => $vatRate,
				'TAX_INCLUDED' => 'Y',
				'MODE' => Tax::MODE_VAT,
			];
		}

		$value = $taxes[$vatRate]['VALUE']->getValue();
		$value += $vatSum;
		$taxes[$vatRate]['VALUE'] = new Money($value, ['CURRENCY_ID' => $currencyID, 'WITH_ZEROS' => true]);
		$netto = $taxes[$vatRate]['NETTO']->getValue();
		$netto += ($shipment->getPrice() - $value);
		$taxes[$vatRate]['NETTO'] = new Money($netto, ['CURRENCY_ID' => $currencyID, 'WITH_ZEROS' => true]);
		$brutto = $taxes[$vatRate]['BRUTTO']->getValue();
		$brutto += $shipment->getPrice();
		$taxes[$vatRate]['BRUTTO'] = new Money($brutto, ['CURRENCY_ID' => $currencyID, 'WITH_ZEROS' => true]);
	}

	return $taxes;
}