• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/builder/orderbuilder.php
  • Класс: BitrixSalescenterBuilderOrderBuilder
  • Вызов: OrderBuilder::buildPayments
public function buildPayments()
{
	if (
		empty($this->formData["PAYMENT"])
		&& $this->needCreateDefaultPayment()
	)
	{
		$fields = ['SUM' => 0];

		$paySystem = $this->getDefaultPaySystem();
		if ($paySystem)
		{
			$fields['PAY_SYSTEM_ID'] = $paySystem['ID'];
			$fields['PAY_SYSTEM_NAME'] = $paySystem['NAME'];
		}

		foreach ($this->formData['PRODUCT'] as $index => $item)
		{
			$price = $item['PRICE'] ?? 0;

			$vatRate = (float)($item['VAT_RATE'] ?? 0);
			$isVatIncluded = ($item['VAT_INCLUDED'] ?? 'N') === 'Y';

			if (!$isVatIncluded && $vatRate > 0)
			{
				$vatCalculator = new TaxVatCalculator($vatRate);
				$price = $vatCalculator->accrue($price);
			}

			$quantity = (float)$item['QUANTITY'];

			$fields['SUM'] += PriceMaths::roundPrecision($quantity * $price);

			$fields['PRODUCT'][] = [
				'BASKET_CODE' => $index,
				'QUANTITY' => $quantity
			];
		}

		$this->formData["PAYMENT"] = [$fields];
	}

	if (isset($this->formData["PAYMENT"]))
	{
		foreach ($this->formData["PAYMENT"] as &$item)
		{
			if (!isset($item['PAY_SYSTEM_ID']))
			{
				$paySystem = $this->getDefaultPaySystem();
				if ($paySystem)
				{
					$item['PAY_SYSTEM_ID'] = $paySystem['ID'];
					$item['PAY_SYSTEM_NAME'] = $paySystem['NAME'];
				}
			}
		}
	}

	return parent::buildPayments();
}