8a7e6ecf
Yarik
Namespaces
|
1
2
3
4
|
<?php
namespace artweb\artbox\ecommerce\models;
use artweb\artbox\models\Customer;
|
3bb55546
Alexey Boroda
-Fixing bugs
|
5
|
use common\behaviors\DefaultLabelBehavior;
|
01185786
Alexey Boroda
-Sms in process
|
6
|
use common\models\User;
|
8a7e6ecf
Yarik
Namespaces
|
7
|
use Yii;
|
2b29877e
Alexey Boroda
-Added time colum...
|
8
|
use yii\behaviors\TimestampBehavior;
|
8a7e6ecf
Yarik
Namespaces
|
9
|
use yii\db\ActiveRecord;
|
ee0e1df5
Alexey Boroda
-Statistics half ...
|
10
|
use yii\db\Query;
|
d3406983
Alexey Boroda
-Order history ha...
|
11
12
|
use yii\helpers\Json;
use yii\helpers\VarDumper;
|
8a7e6ecf
Yarik
Namespaces
|
13
14
15
16
17
18
|
/**
* Class Order
*
* @todo Write docs and refactor
* @package artweb\artbox\ecommerce\models
|
eb190b1f
Alexey Boroda
-Order form add p...
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
* @property OrderProduct[] $products
* @property integer $created_at
* @property integer $updated_at
* @property integer $deleted_at
* @property integer $deadline
* @property boolean $wasted
* @property string $delivery_cost
* @property integer $reason
* @property string $check
* @property string $sms
* @property int $id
* @property integer $edit_id
* @property integer $edit_time
* @property integer $manager_id
* @property int $user_id
* @property string $name
* @property string $phone
* @property string $phone2
* @property string $email
* @property string $adress
* @property string $body
* @property double $total
* @property string $date_time
* @property string $date_dedline
* @property string $reserve
* @property string $status
* @property string $comment
* @property int $label
* @property int $pay
* @property int $numbercard
* @property int $delivery
* @property string $declaration
* @property string $stock
* @property string $consignment
* @property string $payment
* @property string $insurance
* @property double $amount_imposed
* @property string $shipping_by
* @property string $city
* @property string $deliveryString
* @property boolean $published
|
3bee3445
Alexey Boroda
-Order history ready
|
60
61
62
|
* @property Label $orderLabel
* @property Delivery $orderDelivery
* @property OrderPayment $orderPayment
|
d3406983
Alexey Boroda
-Order history ha...
|
63
|
* @property OrderLog[] $logs
|
93a0cd0b
Yarik
Credits
|
64
65
|
* @property float $credit_sum
* @property int $credit_month
|
8a7e6ecf
Yarik
Namespaces
|
66
67
68
|
*/
class Order extends ActiveRecord
{
|
bb962a6d
Alexey Boroda
-Order in process
|
69
70
71
72
73
74
75
76
77
|
const SHIPPING_BY = [
1 => [
'label' => 'Отправитель',
],
2 => [
'label' => 'Получатель',
],
];
|
8a7e6ecf
Yarik
Namespaces
|
78
|
|
db3040d3
Alexey Boroda
-Order module alm...
|
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
const REASONS = [
1 => 'Нет товара',
2 => 'Нет оплаты',
3 => 'Передумал',
4 => ' - Купил в другом месте',
5 => ' - Не подошли условия доставки',
6 => ' - Не подошел срок доставки',
7 => ' - Нет денег',
8 => ' - Купит позже',
9 => 'Купил в другом месте',
10 => 'Подьедет в маг.',
11 => 'Дубль заказа.',
12 => 'Другое',
13 => 'Брак',
14 => 'Отказался от Самовывоза',
15 => 'Не приехал за Самовывозом',
16 => 'Отменил заказ',
17 => 'Не берет трубку',
];
|
8a7e6ecf
Yarik
Namespaces
|
99
100
101
102
|
public static function tableName()
{
return 'order';
}
|
3bee3445
Alexey Boroda
-Order history ready
|
103
|
|
ee0e1df5
Alexey Boroda
-Statistics half ...
|
104
|
/**
|
29257441
Alexey Boroda
-Manager filter o...
|
105
106
|
* @param array $date
* @param array $manager
|
ee0e1df5
Alexey Boroda
-Statistics half ...
|
107
108
109
|
*
* @return array
*/
|
29257441
Alexey Boroda
-Manager filter o...
|
110
|
public static function getRejectionStatistics(array $date = [], array $manager = [])
|
ee0e1df5
Alexey Boroda
-Statistics half ...
|
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
{
$result = [];
foreach (self::REASONS as $id => $reason) {
$result[ $reason ] = ( new Query() )->select(
[
'sum' => 'SUM(total)',
'count' => 'COUNT(*)',
]
)
->from(self::tableName())
->where(
[
'reason' => $id,
]
|
3bee3445
Alexey Boroda
-Order history ready
|
125
|
)
|
29257441
Alexey Boroda
-Manager filter o...
|
126
127
|
->andFilterWhere($date)
->andFilterWhere($manager)
|
3bee3445
Alexey Boroda
-Order history ready
|
128
|
->one();
|
ee0e1df5
Alexey Boroda
-Statistics half ...
|
129
130
131
132
|
}
return $result;
}
|
8a7e6ecf
Yarik
Namespaces
|
133
|
|
ff71eeed
Alexey Boroda
-Logs ready
|
134
135
136
137
138
139
140
|
/**
* @param string $attr
* @param array $values
*
* @return array
* Return array in form ['old'=>'old value ...', 'new' => 'new value ...']
*/
|
d3406983
Alexey Boroda
-Order history ha...
|
141
142
|
public function getLogAttributes(string $attr, array $values)
{
|
d3406983
Alexey Boroda
-Order history ha...
|
143
144
|
if ($attr == 'deadline') {
return [
|
ff71eeed
Alexey Boroda
-Logs ready
|
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
|
'old' => empty($values[ 'old' ]) ? '' : date('d.m.Y', $values[ 'old' ]),
'new' => empty($values[ 'new' ]) ? '' : date('d.m.Y', $values[ 'new' ]),
];
} elseif ($attr == 'reason') {
return [
'old' => empty($values[ 'old' ]) ? '' : self::REASONS[ $values[ 'old' ] ],
'new' => empty($values[ 'new' ]) ? '' : self::REASONS[ $values[ 'new' ] ],
];
} elseif ($attr == 'label') {
$labels = Label::find()
->with('lang')
->indexBy('id')
->all();
return [
'old' => empty($values[ 'old' ]) ? '' : $labels[ $values[ 'old' ] ]->lang->title,
'new' => empty($values[ 'new' ]) ? '' : $labels[ $values[ 'new' ] ]->lang->title,
];
} elseif ($attr == 'delivery') {
$deliveries = Delivery::find()
->with('lang')
->indexBy('id')
->all();
return [
'old' => empty($values[ 'old' ]) ? '' : $deliveries[ $values[ 'old' ] ]->lang->title,
'new' => empty($values[ 'new' ]) ? '' : $deliveries[ $values[ 'new' ] ]->lang->title,
];
} elseif ($attr == 'manager_id') {
$users = User::find()
->indexBy('id')
->all();
return [
'old' => empty($values[ 'old' ]) ? '' : $users[ $values[ 'old' ] ]->username,
'new' => empty($values[ 'new' ]) ? '' : $users[ $values[ 'new' ] ]->username,
];
} elseif ($attr == 'payment') {
$payment = OrderPayment::find()
->with('lang')
->indexBy('id')
->all();
return [
'old' => empty($values[ 'old' ]) ? '' : $payment[ $values[ 'old' ] ]->lang->title,
'new' => empty($values[ 'new' ]) ? '' : $payment[ $values[ 'new' ] ]->lang->title,
|
6649cf43
Alexey Boroda
-Otp and logging
|
187
|
];
|
ff71eeed
Alexey Boroda
-Logs ready
|
188
|
} elseif ($attr == 'shipping_by') {
|
6649cf43
Alexey Boroda
-Otp and logging
|
189
|
return [
|
ff71eeed
Alexey Boroda
-Logs ready
|
190
191
|
'old' => empty($values[ 'old' ]) ? '' : self::SHIPPING_BY[ $values[ 'old' ] ][ 'label' ],
'new' => empty($values[ 'new' ]) ? '' : self::SHIPPING_BY[ $values[ 'new' ] ][ 'label' ],
|
6649cf43
Alexey Boroda
-Otp and logging
|
192
|
];
|
ff71eeed
Alexey Boroda
-Logs ready
|
193
|
} elseif ($attr == 'pay') {
|
6649cf43
Alexey Boroda
-Otp and logging
|
194
|
return [
|
29257441
Alexey Boroda
-Manager filter o...
|
195
196
|
'old' => ( $values[ 'old' ] == true ) ? 'Оплачен' : 'Не оплачен',
'new' => ( $values[ 'new' ] == true ) ? 'Оплачен' : 'Не оплачен',
|
d3406983
Alexey Boroda
-Order history ha...
|
197
|
];
|
ff71eeed
Alexey Boroda
-Logs ready
|
198
199
|
} else {
return $values;
|
d3406983
Alexey Boroda
-Order history ha...
|
200
201
202
|
}
}
|
3bee3445
Alexey Boroda
-Order history ready
|
203
204
205
|
/**
* @inheritdoc
*/
|
2b29877e
Alexey Boroda
-Added time colum...
|
206
207
208
209
210
211
|
public function behaviors()
{
return [
[
'class' => TimestampBehavior::className(),
],
|
3bb55546
Alexey Boroda
-Fixing bugs
|
212
213
214
|
[
'class' => DefaultLabelBehavior::className(),
],
|
2b29877e
Alexey Boroda
-Added time colum...
|
215
216
217
|
];
}
|
3bee3445
Alexey Boroda
-Order history ready
|
218
219
220
|
/**
* @inheritdoc
*/
|
8a7e6ecf
Yarik
Namespaces
|
221
222
223
224
|
public function rules()
{
return [
[
|
eb190b1f
Alexey Boroda
-Order form add p...
|
225
226
227
228
|
[
'pay',
'published',
],
|
bb962a6d
Alexey Boroda
-Order in process
|
229
230
231
|
'boolean',
],
[
|
8a7e6ecf
Yarik
Namespaces
|
232
|
[
|
e861ae92
Alexey Boroda
-Add column to pa...
|
233
|
'shipping_by',
|
2b29877e
Alexey Boroda
-Added time colum...
|
234
235
236
|
'created_at',
'updated_at',
'deleted_at',
|
ccfc5763
Alexey Boroda
-Order in process 3
|
237
238
239
|
'payment',
'reason',
'label',
|
01185786
Alexey Boroda
-Sms in process
|
240
|
'manager_id',
|
d57c8c00
Alexey Boroda
-Blocking in process
|
241
242
|
'edit_time',
'edit_id',
|
622a985a
Alexey Boroda
-Feed in process
|
243
|
'delivery',
|
2b29877e
Alexey Boroda
-Added time colum...
|
244
245
246
247
|
],
'integer',
],
[
|
01185786
Alexey Boroda
-Sms in process
|
248
249
250
251
|
[ 'total' ],
'double',
],
[
|
2b29877e
Alexey Boroda
-Added time colum...
|
252
|
[
|
8a7e6ecf
Yarik
Namespaces
|
253
254
255
256
257
|
'phone',
],
'required',
],
[
|
6035d2b4
Yarik
Order body length
|
258
259
260
261
|
[
'comment',
'body',
],
|
bb962a6d
Alexey Boroda
-Order in process
|
262
|
'string',
|
8a7e6ecf
Yarik
Namespaces
|
263
264
265
266
267
268
|
],
[
[ 'email' ],
'email',
],
[
|
bb962a6d
Alexey Boroda
-Order in process
|
269
270
271
272
|
[
'phone',
'phone2',
],
|
8a7e6ecf
Yarik
Namespaces
|
273
274
|
'match',
'pattern' => '/^\+38\(\d{3}\)\d{3}-\d{2}-\d{2}$/',
|
8a7e6ecf
Yarik
Namespaces
|
275
276
277
|
],
[
[
|
93a0cd0b
Yarik
Credits
|
278
279
280
281
282
283
284
285
286
287
288
|
'credit_month',
],
'integer',
'min' => 3,
'max' => 36,
],
[
[
'credit_sum',
],
'number',
|
03c7b7bc
Yarik
Credit v2
|
289
|
'min' => 0,
|
93a0cd0b
Yarik
Credits
|
290
291
292
|
],
[
[
|
ccfc5763
Alexey Boroda
-Order in process 3
|
293
|
'deadline',
|
8a7e6ecf
Yarik
Namespaces
|
294
|
'name',
|
8a7e6ecf
Yarik
Namespaces
|
295
|
'numbercard',
|
8a7e6ecf
Yarik
Namespaces
|
296
297
298
|
'declaration',
'stock',
'consignment',
|
8a7e6ecf
Yarik
Namespaces
|
299
300
|
'insurance',
'amount_imposed',
|
8a7e6ecf
Yarik
Namespaces
|
301
302
|
'city',
'adress',
|
8a7e6ecf
Yarik
Namespaces
|
303
|
'status',
|
ccfc5763
Alexey Boroda
-Order in process 3
|
304
305
|
'check',
'sms',
|
28b51b30
Alexey Boroda
-Order module bug...
|
306
|
'delivery_cost',
|
8a7e6ecf
Yarik
Namespaces
|
307
308
309
310
|
],
'string',
'max' => 255,
],
|
8a7e6ecf
Yarik
Namespaces
|
311
312
313
|
];
}
|
3bee3445
Alexey Boroda
-Order history ready
|
314
315
|
public function afterSave($insert, $changedAttributes)
{
|
d3406983
Alexey Boroda
-Order history ha...
|
316
317
|
$data = [];
foreach ($changedAttributes as $key => $attribute) {
|
d8203a8c
Alexey Boroda
-Updated at bug fix
|
318
|
if ($this->oldAttributes[ $key ] != $attribute && $key != 'updated_at') {
|
ff71eeed
Alexey Boroda
-Logs ready
|
319
320
321
322
323
324
325
|
$data[ $key ] = $this->getLogAttributes(
$key,
[
'old' => $attribute,
'new' => $this->oldAttributes[ $key ],
]
);
|
d3406983
Alexey Boroda
-Order history ha...
|
326
327
328
329
330
331
332
333
334
335
336
337
|
}
}
if (!empty($data) && empty($data[ 'edit_time' ])) {
$log = new OrderLog();
$log->order_id = (integer) $this->id;
$log->user_id = (integer) \Yii::$app->user->identity->id;
$log->data = Json::encode($data);
$log->save();
}
|
3bee3445
Alexey Boroda
-Order history ready
|
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
|
if (!empty($changedAttributes[ 'label' ])) {
if ($this->label != (string) $changedAttributes[ 'label' ]) {
$history = new OrderLabelHistory();
$history->label_id = (integer) $this->label;
$history->order_id = (integer) $this->id;
$history->user_id = (integer) \Yii::$app->user->identity->id;
if ($history->save()) {
\Yii::$app->session->setFlash('label_update', 'Статус заказа обновлен');
}
}
}
parent::afterSave($insert, $changedAttributes);
}
/**
* @inheritdoc
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
357
358
359
|
public function afterFind()
{
parent::afterFind();
|
ee0e1df5
Alexey Boroda
-Statistics half ...
|
360
|
$this->deadline = !empty($this->deadline) ? date('d.m.Y', $this->deadline) : '';
|
ccfc5763
Alexey Boroda
-Order in process 3
|
361
362
363
|
}
|
3bee3445
Alexey Boroda
-Order history ready
|
364
365
366
|
/**
* @inheritdoc
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
367
368
369
370
371
372
373
374
375
376
377
|
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
$this->convertDate();
return true;
}
return false;
}
|
3bee3445
Alexey Boroda
-Order history ready
|
378
379
380
|
/**
* Convert some date
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
381
382
|
protected function convertDate()
{
|
ee0e1df5
Alexey Boroda
-Statistics half ...
|
383
|
if (!empty($this->deadline)) {
|
db0c93ce
Alexey Boroda
-Timestamp problem
|
384
|
$date = new \DateTime();
|
48fb8190
Alexey Boroda
-Timestamp proble...
|
385
|
$date->setTimestamp(strtotime($this->deadline));
|
ccfc5763
Alexey Boroda
-Order in process 3
|
386
387
388
389
390
391
392
|
$date->format("d.m.Y");
$this->deadline = $date->getTimestamp();
}
}
|
3bee3445
Alexey Boroda
-Order history ready
|
393
394
395
|
/**
* @inheritdoc
*/
|
8a7e6ecf
Yarik
Namespaces
|
396
397
398
|
public function attributeLabels()
{
return [
|
43127bab
Alexey Boroda
-Order translatio...
|
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
|
'name' => Yii::t('app', 'order_name'),
'phone' => Yii::t('app', 'order_phone'),
'phone2' => Yii::t('app', 'Конактный телефон 2'),
'email' => Yii::t('app', 'E-mail'),
'comment' => Yii::t('app', 'Комментарий '),
'created_at' => Yii::t('app', 'Дата добавления'),
'updated_at' => Yii::t('app', 'Дата обновления'),
'deleted_at' => Yii::t('app', 'Дата удаления'),
'deadline' => Yii::t('app', 'Дедлайн'),
'reason' => Yii::t('app', 'Причина'),
'check' => Yii::t('app', 'Чек'),
'sms' => Yii::t('app', 'СМС'),
'consignment' => Yii::t('app', 'Номер накладной'),
'manager_id' => Yii::t('app', 'Менеджер'),
'delivery_cost' => Yii::t('app', 'Стоимость доставки'),
'published' => Yii::t('app', 'Опубликован'),
'label' => Yii::t('app', 'Метка'),
'declaration' => Yii::t('app', 'Номер декларации'),
'delivery' => Yii::t('app', 'Способ доставки'),
'total' => Yii::t('app', 'Сумма'),
'adress' => Yii::t('app', 'Адрес'),
'pay' => Yii::t('app', 'Оплата'),
'body' => Yii::t('app', 'Комментарий менеджера'),
'id' => Yii::t('app', 'Номер'),
'stock' => Yii::t('app', 'Номер склада'),
'payment' => Yii::t('app', 'Способ оплаты'),
'insurance' => Yii::t('app', 'Страховка'),
'amount_imposed' => Yii::t('app', 'Сумма наложенного'),
'shipping_by' => Yii::t('app', 'Отправка за счет'),
'city' => Yii::t('app', 'Город'),
'numbercard' => Yii::t('app', '№ карточки'),
|
93a0cd0b
Yarik
Credits
|
430
|
'credit_month' => Yii::t('app', 'Количество месяцев'),
|
03c7b7bc
Yarik
Credit v2
|
431
|
'credit_sum' => Yii::t('app', 'Первоначальный взнос'),
|
8a7e6ecf
Yarik
Namespaces
|
432
433
434
|
];
}
|
3bee3445
Alexey Boroda
-Order history ready
|
435
436
437
|
/**
* @return \yii\db\ActiveQuery
*/
|
8a7e6ecf
Yarik
Namespaces
|
438
439
440
441
|
public function getUser()
{
return $this->hasOne(Customer::className(), [ 'id' => 'user_id' ]);
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
442
|
|
25b21043
Administrator
add create_item t...
|
443
444
445
|
/**
* @return \yii\db\ActiveQuery
*/
|
8a7e6ecf
Yarik
Namespaces
|
446
447
448
449
|
public function getProducts()
{
return $this->hasMany(OrderProduct::className(), [ 'order_id' => 'id' ]);
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
450
|
|
25b21043
Administrator
add create_item t...
|
451
452
453
|
/**
* @return \yii\db\ActiveQuery
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
454
455
456
|
public function getOrderDelivery()
{
return $this->hasOne(Delivery::className(), [ 'id' => 'delivery' ]);
|
25b21043
Administrator
add create_item t...
|
457
|
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
458
|
|
25b21043
Administrator
add create_item t...
|
459
460
461
|
/**
* @return \yii\db\ActiveQuery
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
462
463
|
public function getOrderLabel()
{
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
464
|
return $this->hasOne(Label::className(), [ 'id' => 'label' ]);
|
25b21043
Administrator
add create_item t...
|
465
|
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
466
|
|
25b21043
Administrator
add create_item t...
|
467
468
469
|
/**
* @return \yii\db\ActiveQuery
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
470
471
472
|
public function getOrderPayment()
{
return $this->hasOne(OrderPayment::className(), [ 'id' => 'payment' ]);
|
25b21043
Administrator
add create_item t...
|
473
|
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
474
|
|
25b21043
Administrator
add create_item t...
|
475
|
/**
|
3bee3445
Alexey Boroda
-Order history ready
|
476
477
478
479
480
481
482
483
|
* @return \yii\db\ActiveQuery
*/
public function getLabelsHistory()
{
return $this->hasMany(OrderLabelHistory::className(), [ 'order_id' => 'id' ]);
}
/**
|
25b21043
Administrator
add create_item t...
|
484
485
|
* @return string
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
486
487
|
public function getDeliveryString()
{
|
ee0e1df5
Alexey Boroda
-Statistics half ...
|
488
489
|
if (!empty($this->orderDelivery)) {
if (!empty($this->orderDelivery->parent)) {
|
ccfc5763
Alexey Boroda
-Order in process 3
|
490
|
return $this->orderDelivery->parent->lang->title . ': ' . $this->orderDelivery->lang->title;
|
25b21043
Administrator
add create_item t...
|
491
|
} else {
|
fbfae870
Administrator
add create_item t...
|
492
|
return $this->orderDelivery->lang->title;
|
25b21043
Administrator
add create_item t...
|
493
494
495
496
497
|
}
} else {
return '';
}
}
|
01185786
Alexey Boroda
-Sms in process
|
498
|
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
499
|
/**
|
d3406983
Alexey Boroda
-Order history ha...
|
500
501
502
503
504
505
506
507
|
* @return \yii\db\ActiveQuery
*/
public function getLogs()
{
return $this->hasMany(OrderLog::className(), [ 'order_id' => 'id' ]);
}
/**
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
508
509
|
* If deadline is fucked up returns true,
* if deadline is not setted return false, like everything is ok
|
01185786
Alexey Boroda
-Sms in process
|
510
|
*
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
511
512
513
514
|
* @return bool
*/
public function getWasted()
{
|
ee0e1df5
Alexey Boroda
-Statistics half ...
|
515
|
if (empty($this->deadline)) {
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
516
517
|
return false;
} else {
|
eb15a89c
Alexey Boroda
-Dancing with com...
|
518
|
return time() > strtotime($this->deadline);
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
519
520
|
}
}
|
01185786
Alexey Boroda
-Sms in process
|
521
522
|
/**
|
3bee3445
Alexey Boroda
-Order history ready
|
523
|
* @return \yii\db\ActiveQuery
|
01185786
Alexey Boroda
-Sms in process
|
524
525
526
|
*/
public function getManager()
{
|
b0c7d586
Alexey Boroda
-Bykov fixes
|
527
|
return $this->hasOne(User::className(), [ 'id' => 'manager_id' ]);
|
01185786
Alexey Boroda
-Sms in process
|
528
|
}
|
d57c8c00
Alexey Boroda
-Blocking in process
|
529
|
|
3bee3445
Alexey Boroda
-Order history ready
|
530
531
532
533
534
|
/**
* Check if order is blocked for updating
*
* @return bool
*/
|
d57c8c00
Alexey Boroda
-Blocking in process
|
535
536
|
public function isBlocked()
{
|
3bb55546
Alexey Boroda
-Fixing bugs
|
537
538
|
if ($this->edit_id === 0) {
return false;
|
d57c8c00
Alexey Boroda
-Blocking in process
|
539
|
} else {
|
3bb55546
Alexey Boroda
-Fixing bugs
|
540
|
if ($this->edit_time + 7200 > time()) {
|
d57c8c00
Alexey Boroda
-Blocking in process
|
541
|
return true;
|
3bb55546
Alexey Boroda
-Fixing bugs
|
542
|
} else {
|
d57c8c00
Alexey Boroda
-Blocking in process
|
543
544
545
546
|
return false;
}
}
}
|
28b51b30
Alexey Boroda
-Order module bug...
|
547
|
|
3bee3445
Alexey Boroda
-Order history ready
|
548
549
550
|
/**
* If order products changed recount te total value
*/
|
28b51b30
Alexey Boroda
-Order module bug...
|
551
552
553
554
555
|
public function totalRecount()
{
$products = $this->products;
$newTotal = 0;
foreach ($products as $product) {
|
eb190b1f
Alexey Boroda
-Order form add p...
|
556
557
558
|
if ($product->removed) {
continue;
}
|
28b51b30
Alexey Boroda
-Order module bug...
|
559
560
561
562
563
|
$newTotal += $product->count * $product->price;
}
$this->total = $newTotal;
$this->save();
}
|
eb190b1f
Alexey Boroda
-Order form add p...
|
564
|
|
3bee3445
Alexey Boroda
-Order history ready
|
565
566
567
|
/**
* If exit unpublished order - delete it
*/
|
eb190b1f
Alexey Boroda
-Order form add p...
|
568
569
570
571
572
573
574
575
576
577
578
579
|
public function deleteUnpublished()
{
/**
* @var OrderProduct[] $products
*/
$products = $this->products;
foreach ($products as $product) {
$product->delete();
}
$this->delete();
}
|
8a7e6ecf
Yarik
Namespaces
|
580
|
}
|