- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/internals/paysysteminner.php
- Класс: BitrixSaleInternalsPaySystemInner
- Вызов: PaySystemInner::createOperation
static function createOperation(Order &$order, Payment &$payment, $operation)
{
$result = new Result();
$paymentSum = $payment->getSum();
if($operation == self::OPERATION_DEBIT)
{
$userBudget = UserBudgetPool::getUserBudgetByOrder($order);
if($userBudget >= $paymentSum)
{
UserBudgetPool::addPoolItem($order, ( $paymentSum * -1 ), UserBudgetPool::BUDGET_TYPE_ORDER_PAY, $payment);
// $payment->setField('PAID', 'Y');
}
else
{
$result->addError(new EntityError(Loc::getMessage('ORDER_PS_INNER_ERROR_INSUFFICIENT_MONEY')));
}
}
elseif($operation == self::OPERATION_CREDIT)
{
UserBudgetPool::addPoolItem($order, ( $paymentSum ), UserBudgetPool::BUDGET_TYPE_ORDER_UNPAY, $payment);
// $payment->setField('PAID', 'N');
}
elseif($operation == self::OPERATION_RETURN)
{
$sumPaid = $order->getSumPaid();
$sumTrans = UserBudgetPool::getUserBudgetTransForOrder($order);
$finalSumPaid = $paymentSum + $sumTrans;
if ($finalSumPaid > 0)
{
$paymentSum = $paymentSum - $finalSumPaid;
}
// InternalsUserBudgetPool::addPoolItem($order->getUserId(), ( $paymentSum ), UserBudgetPool::BUDGET_TYPE_CANCEL_RETURN, $order, $payment);
// $payment->setField('PAID', 'N');
$payment->setField('IS_RETURN', 'Y');
}
else
{
throw new InvalidOperationException('Wrong operation type!');
}
return $result;
}