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;
|
8a7e6ecf
Yarik
Namespaces
|
10
11
12
13
14
15
|
/**
* Class Order
*
* @todo Write docs and refactor
* @package artweb\artbox\ecommerce\models
|
eb190b1f
Alexey Boroda
-Order form add p...
|
16
17
18
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
|
* @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
|
8a7e6ecf
Yarik
Namespaces
|
57
58
59
|
*/
class Order extends ActiveRecord
{
|
bb962a6d
Alexey Boroda
-Order in process
|
60
61
62
63
64
65
66
67
68
|
const SHIPPING_BY = [
1 => [
'label' => 'Отправитель',
],
2 => [
'label' => 'Получатель',
],
];
|
8a7e6ecf
Yarik
Namespaces
|
69
|
|
db3040d3
Alexey Boroda
-Order module alm...
|
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
const REASONS = [
1 => 'Нет товара',
2 => 'Нет оплаты',
3 => 'Передумал',
4 => ' - Купил в другом месте',
5 => ' - Не подошли условия доставки',
6 => ' - Не подошел срок доставки',
7 => ' - Нет денег',
8 => ' - Купит позже',
9 => 'Купил в другом месте',
10 => 'Подьедет в маг.',
11 => 'Дубль заказа.',
12 => 'Другое',
13 => 'Брак',
14 => 'Отказался от Самовывоза',
15 => 'Не приехал за Самовывозом',
16 => 'Отменил заказ',
17 => 'Не берет трубку',
];
|
8a7e6ecf
Yarik
Namespaces
|
90
91
92
93
94
|
public static function tableName()
{
return 'order';
}
|
2b29877e
Alexey Boroda
-Added time colum...
|
95
96
97
98
99
100
|
public function behaviors()
{
return [
[
'class' => TimestampBehavior::className(),
],
|
3bb55546
Alexey Boroda
-Fixing bugs
|
101
102
103
|
[
'class' => DefaultLabelBehavior::className(),
],
|
2b29877e
Alexey Boroda
-Added time colum...
|
104
105
106
|
];
}
|
8a7e6ecf
Yarik
Namespaces
|
107
108
109
110
|
public function rules()
{
return [
[
|
eb190b1f
Alexey Boroda
-Order form add p...
|
111
112
113
114
|
[
'pay',
'published',
],
|
bb962a6d
Alexey Boroda
-Order in process
|
115
116
117
|
'boolean',
],
[
|
8a7e6ecf
Yarik
Namespaces
|
118
|
[
|
e861ae92
Alexey Boroda
-Add column to pa...
|
119
|
'shipping_by',
|
2b29877e
Alexey Boroda
-Added time colum...
|
120
121
122
|
'created_at',
'updated_at',
'deleted_at',
|
ccfc5763
Alexey Boroda
-Order in process 3
|
123
124
125
|
'payment',
'reason',
'label',
|
01185786
Alexey Boroda
-Sms in process
|
126
|
'manager_id',
|
d57c8c00
Alexey Boroda
-Blocking in process
|
127
128
|
'edit_time',
'edit_id',
|
622a985a
Alexey Boroda
-Feed in process
|
129
|
'delivery',
|
2b29877e
Alexey Boroda
-Added time colum...
|
130
131
132
133
|
],
'integer',
],
[
|
01185786
Alexey Boroda
-Sms in process
|
134
135
136
137
|
[ 'total' ],
'double',
],
[
|
2b29877e
Alexey Boroda
-Added time colum...
|
138
|
[
|
8a7e6ecf
Yarik
Namespaces
|
139
140
141
142
143
144
|
'phone',
],
'required',
],
[
[ 'comment' ],
|
bb962a6d
Alexey Boroda
-Order in process
|
145
|
'string',
|
8a7e6ecf
Yarik
Namespaces
|
146
147
148
149
150
151
|
],
[
[ 'email' ],
'email',
],
[
|
bb962a6d
Alexey Boroda
-Order in process
|
152
153
154
155
|
[
'phone',
'phone2',
],
|
8a7e6ecf
Yarik
Namespaces
|
156
157
|
'match',
'pattern' => '/^\+38\(\d{3}\)\d{3}-\d{2}-\d{2}$/',
|
8a7e6ecf
Yarik
Namespaces
|
158
159
160
|
],
[
[
|
ccfc5763
Alexey Boroda
-Order in process 3
|
161
|
'deadline',
|
8a7e6ecf
Yarik
Namespaces
|
162
|
'name',
|
8a7e6ecf
Yarik
Namespaces
|
163
164
165
166
167
|
'numbercard',
'body',
'declaration',
'stock',
'consignment',
|
8a7e6ecf
Yarik
Namespaces
|
168
169
|
'insurance',
'amount_imposed',
|
8a7e6ecf
Yarik
Namespaces
|
170
171
|
'city',
'adress',
|
8a7e6ecf
Yarik
Namespaces
|
172
|
'status',
|
ccfc5763
Alexey Boroda
-Order in process 3
|
173
174
|
'check',
'sms',
|
28b51b30
Alexey Boroda
-Order module bug...
|
175
|
'delivery_cost',
|
8a7e6ecf
Yarik
Namespaces
|
176
177
178
179
|
],
'string',
'max' => 255,
],
|
8a7e6ecf
Yarik
Namespaces
|
180
181
182
|
];
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
183
184
185
|
public function afterFind()
{
parent::afterFind();
|
c83499b4
Alexey Boroda
-Order index tran...
|
186
|
$this->deadline = !empty($this->deadline) ? date('d.m.Y', $this->deadline) : '';
|
ccfc5763
Alexey Boroda
-Order in process 3
|
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
}
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
$this->convertDate();
return true;
}
return false;
}
protected function convertDate()
{
|
c83499b4
Alexey Boroda
-Order index tran...
|
203
|
if (!empty($this->deadline)) {
|
db0c93ce
Alexey Boroda
-Timestamp problem
|
204
|
$date = new \DateTime();
|
48fb8190
Alexey Boroda
-Timestamp proble...
|
205
|
$date->setTimestamp(strtotime($this->deadline));
|
ccfc5763
Alexey Boroda
-Order in process 3
|
206
207
208
209
210
211
212
|
$date->format("d.m.Y");
$this->deadline = $date->getTimestamp();
}
}
|
8a7e6ecf
Yarik
Namespaces
|
213
214
215
|
public function attributeLabels()
{
return [
|
43127bab
Alexey Boroda
-Order translatio...
|
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
'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', '№ карточки'),
|
8a7e6ecf
Yarik
Namespaces
|
247
248
249
|
];
}
|
8a7e6ecf
Yarik
Namespaces
|
250
251
252
253
|
public function getUser()
{
return $this->hasOne(Customer::className(), [ 'id' => 'user_id' ]);
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
254
|
|
25b21043
Administrator
add create_item t...
|
255
256
257
|
/**
* @return \yii\db\ActiveQuery
*/
|
8a7e6ecf
Yarik
Namespaces
|
258
259
260
261
|
public function getProducts()
{
return $this->hasMany(OrderProduct::className(), [ 'order_id' => 'id' ]);
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
262
|
|
25b21043
Administrator
add create_item t...
|
263
264
265
|
/**
* @return \yii\db\ActiveQuery
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
266
267
268
|
public function getOrderDelivery()
{
return $this->hasOne(Delivery::className(), [ 'id' => 'delivery' ]);
|
25b21043
Administrator
add create_item t...
|
269
|
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
270
|
|
25b21043
Administrator
add create_item t...
|
271
272
273
|
/**
* @return \yii\db\ActiveQuery
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
274
275
|
public function getOrderLabel()
{
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
276
|
return $this->hasOne(Label::className(), [ 'id' => 'label' ]);
|
25b21043
Administrator
add create_item t...
|
277
|
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
278
|
|
25b21043
Administrator
add create_item t...
|
279
280
281
|
/**
* @return \yii\db\ActiveQuery
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
282
283
284
|
public function getOrderPayment()
{
return $this->hasOne(OrderPayment::className(), [ 'id' => 'payment' ]);
|
25b21043
Administrator
add create_item t...
|
285
|
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
286
|
|
25b21043
Administrator
add create_item t...
|
287
288
289
|
/**
* @return string
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
290
291
|
public function getDeliveryString()
{
|
c83499b4
Alexey Boroda
-Order index tran...
|
292
293
|
if (!empty($this->orderDelivery)) {
if (!empty($this->orderDelivery->parent)) {
|
ccfc5763
Alexey Boroda
-Order in process 3
|
294
|
return $this->orderDelivery->parent->lang->title . ': ' . $this->orderDelivery->lang->title;
|
25b21043
Administrator
add create_item t...
|
295
|
} else {
|
fbfae870
Administrator
add create_item t...
|
296
|
return $this->orderDelivery->lang->title;
|
25b21043
Administrator
add create_item t...
|
297
298
299
300
301
|
}
} else {
return '';
}
}
|
01185786
Alexey Boroda
-Sms in process
|
302
|
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
303
304
305
|
/**
* If deadline is fucked up returns true,
* if deadline is not setted return false, like everything is ok
|
01185786
Alexey Boroda
-Sms in process
|
306
|
*
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
307
308
309
310
|
* @return bool
*/
public function getWasted()
{
|
c83499b4
Alexey Boroda
-Order index tran...
|
311
|
if (empty($this->deadline)) {
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
312
313
|
return false;
} else {
|
eb15a89c
Alexey Boroda
-Dancing with com...
|
314
|
return time() > strtotime($this->deadline);
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
315
316
|
}
}
|
01185786
Alexey Boroda
-Sms in process
|
317
318
319
320
321
322
|
/**
*
*/
public function getManager()
{
|
b0c7d586
Alexey Boroda
-Bykov fixes
|
323
|
return $this->hasOne(User::className(), [ 'id' => 'manager_id' ]);
|
01185786
Alexey Boroda
-Sms in process
|
324
|
}
|
d57c8c00
Alexey Boroda
-Blocking in process
|
325
326
327
|
public function isBlocked()
{
|
3bb55546
Alexey Boroda
-Fixing bugs
|
328
329
|
if ($this->edit_id === 0) {
return false;
|
d57c8c00
Alexey Boroda
-Blocking in process
|
330
|
} else {
|
3bb55546
Alexey Boroda
-Fixing bugs
|
331
|
if ($this->edit_time + 7200 > time()) {
|
d57c8c00
Alexey Boroda
-Blocking in process
|
332
|
return true;
|
3bb55546
Alexey Boroda
-Fixing bugs
|
333
|
} else {
|
d57c8c00
Alexey Boroda
-Blocking in process
|
334
335
336
337
|
return false;
}
}
}
|
28b51b30
Alexey Boroda
-Order module bug...
|
338
339
340
341
342
343
|
public function totalRecount()
{
$products = $this->products;
$newTotal = 0;
foreach ($products as $product) {
|
eb190b1f
Alexey Boroda
-Order form add p...
|
344
345
346
|
if ($product->removed) {
continue;
}
|
28b51b30
Alexey Boroda
-Order module bug...
|
347
348
349
350
351
|
$newTotal += $product->count * $product->price;
}
$this->total = $newTotal;
$this->save();
}
|
eb190b1f
Alexey Boroda
-Order form add p...
|
352
353
354
355
356
357
358
359
360
361
362
363
364
|
public function deleteUnpublished()
{
/**
* @var OrderProduct[] $products
*/
$products = $this->products;
foreach ($products as $product) {
$product->delete();
}
$this->delete();
}
|
8a7e6ecf
Yarik
Namespaces
|
365
|
}
|