• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/order.php
  • Класс: BitrixSaleOrder
  • Вызов: Order::syncOrderPaid
private function syncOrderPaid()
{
	$result = new Result();

	if ($this->getSumPaid() == $this->getPrice())
		return $result;

	$debitSum = $this->getPrice() - $this->getSumPaid();

	$sumPaid = $this->getPaymentCollection()->getPaidSum();
	$userBudget = InternalsUserBudgetPool::getUserBudgetByOrder($this);

	$bePaid = $sumPaid - $this->getSumPaid();

	if ($bePaid > 0)
	{
		if ($debitSum > $bePaid)
		{
			$debitSum = $bePaid;
		}

		if ($debitSum >= $userBudget)
		{
			$debitSum = $userBudget;
		}

		if ($userBudget >= $debitSum && $debitSum > 0)
		{
			InternalsUserBudgetPool::addPoolItem($this, ($debitSum * -1), InternalsUserBudgetPool::BUDGET_TYPE_ORDER_PAY);

			$finalSumPaid = $this->getSumPaid() + $debitSum;
			$result->setData(['SUM_PAID' => $finalSumPaid]);
		}
	}

	return $result;
}