Bitrix-D7  20.5.0
Класс UserBudgetPool

Открытые члены

 __construct ()
 
 add ($sum, $type, Sale\Order $order, Sale\Payment $payment=null)
 
 get ()
 
 delete ($index)
 

Открытые статические члены

static getUserBudgetPool ($key)
 
static addPoolItem (Sale\Order $order, $value, $type, Sale\Payment $payment=null)
 
static onUserBudgetSave ($userId)
 
static getUserBudgetTransForOrder (Sale\Order $order)
 
static getUserBudgetByOrder (Sale\Order $order)
 
static getUserBudget ($userId, $currency)
 

Поля данных

const BUDGET_TYPE_ORDER_CANCEL_PART = 'ORDER_CANCEL_PART'
 
const BUDGET_TYPE_ORDER_UNPAY = 'ORDER_UNPAY'
 
const BUDGET_TYPE_ORDER_PART_RETURN = 'ORDER_PART_RETURN'
 
const BUDGET_TYPE_OUT_CHARGE_OFF = 'OUT_CHARGE_OFF'
 
const BUDGET_TYPE_EXCESS_SUM_PAID = 'EXCESS_SUM_PAID'
 
const BUDGET_TYPE_MANUAL = 'MANUAL'
 
const BUDGET_TYPE_ORDER_PAY = 'ORDER_PAY'
 
const BUDGET_TYPE_ORDER_PAY_PART = 'ORDER_PAY_PART'
 

Защищенные данные

 $items = array()
 

Статические защищенные данные

static $userBudgetPool = array()
 

Подробное описание

См. определение в файле userbudgetpool.php строка 7

Конструктор(ы)

◆ __construct()

__construct ( )

См. определение в файле userbudgetpool.php строка 22

23  {
24  }

Методы

◆ add()

add (   $sum,
  $type,
Sale\Order  $order,
Sale\Payment  $payment = null 
)
Аргументы
$sum
$type
Sale\Order$order
Sale\Payment$payment

См. определение в файле userbudgetpool.php строка 32

33  {
34  $fields = array(
35  "SUM" => $sum,
36  "CURRENCY" => $order->getCurrency(),
37  "TYPE" => $type,
38  "ORDER" => $order,
39  );
40 
41  if ($payment !== null)
42  $fields['PAYMENT'] = $payment;
43 
44  $this->items[] = $fields;
45 
46  }

◆ addPoolItem()

static addPoolItem ( Sale\Order  $order,
  $value,
  $type,
Sale\Payment  $payment = null 
)
static
Аргументы
Sale\Order$order
$value
$type
Sale\Payment$payment

См. определение в файле userbudgetpool.php строка 92

93  {
94  if (floatval($value) == 0)
95  return;
96 
97  $key = $order->getUserId();
98  $pool = static::getUserBudgetPool($key);
99  $pool->add($value, $type, $order, $payment);
100  }

◆ delete()

delete (   $index)
Аргументы
$index
Возвращает
bool

См. определение в файле userbudgetpool.php строка 63

64  {
65  if (isset($this->items) && isset($this->items[$index]))
66  {
67  unset($this->items[$index]);
68  return true;
69  }
70 
71  return false;
72  }

◆ get()

get ( )
Возвращает
array

См. определение в файле userbudgetpool.php строка 51

52  {
53  if (isset($this->items))
54  return $this->items;
55 
56  return false;
57  }

◆ getUserBudget()

static getUserBudget (   $userId,
  $currency 
)
static
Аргументы
$userId
$currency
Возвращает
float|null

См. определение в файле userbudgetpool.php строка 223

224  {
225  $budget = null;
226  if ($userAccount = \CSaleUserAccount::GetByUserId($userId, $currency))
227  {
228  if ($userAccount['LOCKED'] != 'Y')
229  $budget = floatval($userAccount['CURRENT_BUDGET']);
230  }
231 
232  return $budget;
233  }

◆ getUserBudgetByOrder()

static getUserBudgetByOrder ( Sale\Order  $order)
static
Аргументы
Sale\Order$order
Возвращает
int

См. определение в файле userbudgetpool.php строка 204

205  {
206  $budget = static::getUserBudget($order->getUserId(), $order->getCurrency());
207  if ($userBudgetPool = static::getUserBudgetPool($order->getUserId()))
208  {
209  foreach ($userBudgetPool->get() as $userBudgetDat)
210  {
211  $budget += $userBudgetDat['SUM'];
212  }
213  }
214 
215  return $budget;
216  }

◆ getUserBudgetPool()

static getUserBudgetPool (   $key)
static
Аргументы
$key
Возвращает
UserBudgetPool

См. определение в файле userbudgetpool.php строка 78

79  {
80  if (!isset(static::$userBudgetPool[$key]))
81  static::$userBudgetPool[$key] = new static();
82 
83  return static::$userBudgetPool[$key];
84  }

◆ getUserBudgetTransForOrder()

static getUserBudgetTransForOrder ( Sale\Order  $order)
static
Аргументы
Sale\Order$order
Возвращает
int

См. определение в файле userbudgetpool.php строка 155

156  {
157  $ignoreTypes = array(
158  static::BUDGET_TYPE_ORDER_PAY
159  );
160  $sumTrans = 0;
161 
162  if ($order->getId() > 0)
163  {
164  $resTrans = \CSaleUserTransact::GetList(
165  array("TRANSACT_DATE" => "DESC"),
166  array(
167  "ORDER_ID" => $order->getId(),
168  ),
169  false,
170  false,
171  array("AMOUNT", "CURRENCY", "DEBIT")
172  );
173  while ($transactDat = $resTrans->Fetch())
174  {
175  if ($transactDat['DEBIT'] == "Y")
176  {
177  $sumTrans += $transactDat['AMOUNT'];
178  }
179  else
180  {
181  $sumTrans -= $transactDat['AMOUNT'];
182  }
183  }
184  }
185 
186  if ($userBudgetPool = static::getUserBudgetPool($order->getUserId()))
187  {
188  foreach ($userBudgetPool->get() as $userBudgetDat)
189  {
190  if (in_array($userBudgetDat['TYPE'], $ignoreTypes))
191  continue;
192 
193  $sumTrans += $userBudgetDat['SUM'];
194  }
195  }
196 
197  return $sumTrans;
198  }

◆ onUserBudgetSave()

static onUserBudgetSave (   $userId)
static
Аргументы
$userId
Возвращает
Sale\Result

См. определение в файле userbudgetpool.php строка 106

107  {
108  $result = new Sale\Result();
109 
110  $pool = static::getUserBudgetPool($userId);
111  foreach ($pool->get() as $key => $budgetDat)
112  {
113 
114  $orderId = null;
115  $paymentId = null;
116 
117  if (isset($budgetDat['ORDER'])
118  && ($budgetDat['ORDER'] instanceof Sale\OrderBase))
119  {
120  $orderId = $budgetDat['ORDER']->getId();
121  }
122 
123  if (isset($budgetDat['PAYMENT'])
124  && ($budgetDat['PAYMENT'] instanceof Sale\Payment))
125  {
126  $paymentId = $budgetDat['PAYMENT']->getId();
127  }
128 
129 // if ($budgetDat['TYPE'] == Internals\UserBudgetPool::BUDGET_TYPE_ORDER_PAY_PART
130 // || $budgetDat['TYPE'] == Internals\UserBudgetPool::BUDGET_TYPE_ORDER_PAY)
131 // {
132 // if (!\CSaleUserAccount::Pay($userId, ($budgetDat['SUM'] * -1), $budgetDat['CURRENCY'], $orderId, false, $paymentId))
133 // {
134 // $result->addError( new ResultError(Loc::getMessage("SALE_PROVIDER_USER_BUDGET_".$budgetDat['TYPE']."_ERROR"), "SALE_PROVIDER_USER_BUDGET_".$budgetDat['TYPE']."_ERROR") );
135 // }
136 // }
137 // else
138 // {
139  if (!\CSaleUserAccount::UpdateAccount($userId, $budgetDat['SUM'], $budgetDat['CURRENCY'], $budgetDat['TYPE'], $orderId, '', $paymentId))
140  {
141  $result->addError( new Sale\ResultError(Loc::getMessage("SALE_PROVIDER_USER_BUDGET_".$budgetDat['TYPE']."_ERROR"), "SALE_PROVIDER_USER_BUDGET_".$budgetDat['TYPE']."_ERROR") );
142  }
143 // }
144 
145  $pool->delete($key);
146  }
147 
148  return $result;
149  }
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29
Class RestHandler \Handlers\PaySystem.

Поля

◆ $items

$items = array()
protected

См. определение в файле userbudgetpool.php строка 11

◆ $userBudgetPool

$userBudgetPool = array()
staticprotected

См. определение в файле userbudgetpool.php строка 9

◆ BUDGET_TYPE_EXCESS_SUM_PAID

const BUDGET_TYPE_EXCESS_SUM_PAID = 'EXCESS_SUM_PAID'

См. определение в файле userbudgetpool.php строка 17

◆ BUDGET_TYPE_MANUAL

const BUDGET_TYPE_MANUAL = 'MANUAL'

См. определение в файле userbudgetpool.php строка 18

◆ BUDGET_TYPE_ORDER_CANCEL_PART

const BUDGET_TYPE_ORDER_CANCEL_PART = 'ORDER_CANCEL_PART'

См. определение в файле userbudgetpool.php строка 13

◆ BUDGET_TYPE_ORDER_PART_RETURN

const BUDGET_TYPE_ORDER_PART_RETURN = 'ORDER_PART_RETURN'

См. определение в файле userbudgetpool.php строка 15

◆ BUDGET_TYPE_ORDER_PAY

const BUDGET_TYPE_ORDER_PAY = 'ORDER_PAY'

См. определение в файле userbudgetpool.php строка 19

◆ BUDGET_TYPE_ORDER_PAY_PART

const BUDGET_TYPE_ORDER_PAY_PART = 'ORDER_PAY_PART'

См. определение в файле userbudgetpool.php строка 20

◆ BUDGET_TYPE_ORDER_UNPAY

const BUDGET_TYPE_ORDER_UNPAY = 'ORDER_UNPAY'

См. определение в файле userbudgetpool.php строка 14

◆ BUDGET_TYPE_OUT_CHARGE_OFF

const BUDGET_TYPE_OUT_CHARGE_OFF = 'OUT_CHARGE_OFF'

См. определение в файле userbudgetpool.php строка 16


Объявления и описания членов класса находятся в файле: