36 "CURRENCY" => $order->getCurrency(),
41 if ($payment !==
null)
42 $fields[
'PAYMENT'] = $payment;
44 $this->items[] = $fields;
53 if (isset($this->items))
63 public function delete($index)
65 if (isset($this->items) && isset($this->items[$index]))
67 unset($this->items[$index]);
80 if (!isset(static::$userBudgetPool[$key]))
81 static::$userBudgetPool[$key] =
new static();
83 return static::$userBudgetPool[$key];
94 if (floatval($value) == 0)
97 $key = $order->getUserId();
98 $pool = static::getUserBudgetPool($key);
99 $pool->add($value, $type, $order, $payment);
110 $pool = static::getUserBudgetPool($userId);
111 foreach ($pool->get() as $key => $budgetDat)
117 if (isset($budgetDat[
'ORDER'])
120 $orderId = $budgetDat[
'ORDER']->getId();
123 if (isset($budgetDat[
'PAYMENT'])
124 && ($budgetDat[
'PAYMENT'] instanceof
Sale\
Payment))
126 $paymentId = $budgetDat[
'PAYMENT']->getId();
139 if (!\CSaleUserAccount::UpdateAccount($userId, $budgetDat[
'SUM'], $budgetDat[
'CURRENCY'], $budgetDat[
'TYPE'], $orderId,
'', $paymentId))
141 $result->addError(
new Sale\
ResultError(
Loc::getMessage(
"SALE_PROVIDER_USER_BUDGET_".$budgetDat[
'TYPE'].
"_ERROR"),
"SALE_PROVIDER_USER_BUDGET_".$budgetDat[
'TYPE'].
"_ERROR") );
157 $ignoreTypes = array(
158 static::BUDGET_TYPE_ORDER_PAY
162 if ($order->getId() > 0)
164 $resTrans = \CSaleUserTransact::GetList(
165 array(
"TRANSACT_DATE" =>
"DESC"),
167 "ORDER_ID" => $order->getId(),
171 array(
"AMOUNT",
"CURRENCY",
"DEBIT")
173 while ($transactDat = $resTrans->Fetch())
175 if ($transactDat[
'DEBIT'] ==
"Y")
177 $sumTrans += $transactDat[
'AMOUNT'];
181 $sumTrans -= $transactDat[
'AMOUNT'];
190 if (in_array($userBudgetDat[
'TYPE'], $ignoreTypes))
193 $sumTrans += $userBudgetDat[
'SUM'];
206 $budget = static::getUserBudget($order->getUserId(), $order->getCurrency());
211 $budget += $userBudgetDat[
'SUM'];
226 if ($userAccount = \CSaleUserAccount::GetByUserId($userId, $currency))
228 if ($userAccount[
'LOCKED'] !=
'Y')
229 $budget = floatval($userAccount[
'CURRENT_BUDGET']);
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
const BUDGET_TYPE_ORDER_CANCEL_PART
const BUDGET_TYPE_OUT_CHARGE_OFF
static getUserBudget($userId, $currency)
const BUDGET_TYPE_ORDER_PART_RETURN
const BUDGET_TYPE_ORDER_PAY
const BUDGET_TYPE_EXCESS_SUM_PAID
static getUserBudgetPool($key)
static getUserBudgetByOrder(Sale\Order $order)
static getUserBudgetTransForOrder(Sale\Order $order)
static onUserBudgetSave($userId)
const BUDGET_TYPE_ORDER_UNPAY
const BUDGET_TYPE_ORDER_PAY_PART
add($sum, $type, Sale\Order $order, Sale\Payment $payment=null)
static addPoolItem(Sale\Order $order, $value, $type, Sale\Payment $payment=null)
Class RestHandler \Handlers\PaySystem.