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
|
'phone',
],
'required',
],
[
|
6035d2b4
Yarik
Order body length
|
144
145
146
147
|
[
'comment',
'body',
],
|
bb962a6d
Alexey Boroda
-Order in process
|
148
|
'string',
|
8a7e6ecf
Yarik
Namespaces
|
149
150
151
152
153
154
|
],
[
[ 'email' ],
'email',
],
[
|
bb962a6d
Alexey Boroda
-Order in process
|
155
156
157
158
|
[
'phone',
'phone2',
],
|
8a7e6ecf
Yarik
Namespaces
|
159
160
|
'match',
'pattern' => '/^\+38\(\d{3}\)\d{3}-\d{2}-\d{2}$/',
|
8a7e6ecf
Yarik
Namespaces
|
161
162
163
|
],
[
[
|
ccfc5763
Alexey Boroda
-Order in process 3
|
164
|
'deadline',
|
8a7e6ecf
Yarik
Namespaces
|
165
|
'name',
|
8a7e6ecf
Yarik
Namespaces
|
166
|
'numbercard',
|
8a7e6ecf
Yarik
Namespaces
|
167
168
169
|
'declaration',
'stock',
'consignment',
|
8a7e6ecf
Yarik
Namespaces
|
170
171
|
'insurance',
'amount_imposed',
|
8a7e6ecf
Yarik
Namespaces
|
172
173
|
'city',
'adress',
|
8a7e6ecf
Yarik
Namespaces
|
174
|
'status',
|
ccfc5763
Alexey Boroda
-Order in process 3
|
175
176
|
'check',
'sms',
|
28b51b30
Alexey Boroda
-Order module bug...
|
177
|
'delivery_cost',
|
8a7e6ecf
Yarik
Namespaces
|
178
179
180
181
|
],
'string',
'max' => 255,
],
|
8a7e6ecf
Yarik
Namespaces
|
182
183
184
|
];
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
185
186
187
|
public function afterFind()
{
parent::afterFind();
|
6035d2b4
Yarik
Order body length
|
188
|
$this->deadline = !empty( $this->deadline ) ? date('d.m.Y', $this->deadline) : '';
|
ccfc5763
Alexey Boroda
-Order in process 3
|
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
|
}
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
$this->convertDate();
return true;
}
return false;
}
protected function convertDate()
{
|
6035d2b4
Yarik
Order body length
|
205
|
if (!empty( $this->deadline )) {
|
db0c93ce
Alexey Boroda
-Timestamp problem
|
206
|
$date = new \DateTime();
|
48fb8190
Alexey Boroda
-Timestamp proble...
|
207
|
$date->setTimestamp(strtotime($this->deadline));
|
ccfc5763
Alexey Boroda
-Order in process 3
|
208
209
210
211
212
213
214
|
$date->format("d.m.Y");
$this->deadline = $date->getTimestamp();
}
}
|
8a7e6ecf
Yarik
Namespaces
|
215
216
217
|
public function attributeLabels()
{
return [
|
43127bab
Alexey Boroda
-Order translatio...
|
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
247
248
|
'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
|
249
250
251
|
];
}
|
8a7e6ecf
Yarik
Namespaces
|
252
253
254
255
|
public function getUser()
{
return $this->hasOne(Customer::className(), [ 'id' => 'user_id' ]);
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
256
|
|
25b21043
Administrator
add create_item t...
|
257
258
259
|
/**
* @return \yii\db\ActiveQuery
*/
|
8a7e6ecf
Yarik
Namespaces
|
260
261
262
263
|
public function getProducts()
{
return $this->hasMany(OrderProduct::className(), [ 'order_id' => 'id' ]);
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
264
|
|
25b21043
Administrator
add create_item t...
|
265
266
267
|
/**
* @return \yii\db\ActiveQuery
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
268
269
270
|
public function getOrderDelivery()
{
return $this->hasOne(Delivery::className(), [ 'id' => 'delivery' ]);
|
25b21043
Administrator
add create_item t...
|
271
|
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
272
|
|
25b21043
Administrator
add create_item t...
|
273
274
275
|
/**
* @return \yii\db\ActiveQuery
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
276
277
|
public function getOrderLabel()
{
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
278
|
return $this->hasOne(Label::className(), [ 'id' => 'label' ]);
|
25b21043
Administrator
add create_item t...
|
279
|
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
280
|
|
25b21043
Administrator
add create_item t...
|
281
282
283
|
/**
* @return \yii\db\ActiveQuery
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
284
285
286
|
public function getOrderPayment()
{
return $this->hasOne(OrderPayment::className(), [ 'id' => 'payment' ]);
|
25b21043
Administrator
add create_item t...
|
287
|
}
|
ccfc5763
Alexey Boroda
-Order in process 3
|
288
|
|
25b21043
Administrator
add create_item t...
|
289
290
291
|
/**
* @return string
*/
|
ccfc5763
Alexey Boroda
-Order in process 3
|
292
293
|
public function getDeliveryString()
{
|
6035d2b4
Yarik
Order body length
|
294
295
|
if (!empty( $this->orderDelivery )) {
if (!empty( $this->orderDelivery->parent )) {
|
ccfc5763
Alexey Boroda
-Order in process 3
|
296
|
return $this->orderDelivery->parent->lang->title . ': ' . $this->orderDelivery->lang->title;
|
25b21043
Administrator
add create_item t...
|
297
|
} else {
|
fbfae870
Administrator
add create_item t...
|
298
|
return $this->orderDelivery->lang->title;
|
25b21043
Administrator
add create_item t...
|
299
300
301
302
303
|
}
} else {
return '';
}
}
|
01185786
Alexey Boroda
-Sms in process
|
304
|
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
305
306
307
|
/**
* If deadline is fucked up returns true,
* if deadline is not setted return false, like everything is ok
|
01185786
Alexey Boroda
-Sms in process
|
308
|
*
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
309
310
311
312
|
* @return bool
*/
public function getWasted()
{
|
6035d2b4
Yarik
Order body length
|
313
|
if (empty( $this->deadline )) {
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
314
315
|
return false;
} else {
|
eb15a89c
Alexey Boroda
-Dancing with com...
|
316
|
return time() > strtotime($this->deadline);
|
ce75bc1d
Alexey Boroda
-Grid view half w...
|
317
318
|
}
}
|
01185786
Alexey Boroda
-Sms in process
|
319
320
321
322
323
324
|
/**
*
*/
public function getManager()
{
|
b0c7d586
Alexey Boroda
-Bykov fixes
|
325
|
return $this->hasOne(User::className(), [ 'id' => 'manager_id' ]);
|
01185786
Alexey Boroda
-Sms in process
|
326
|
}
|
d57c8c00
Alexey Boroda
-Blocking in process
|
327
328
329
|
public function isBlocked()
{
|
3bb55546
Alexey Boroda
-Fixing bugs
|
330
331
|
if ($this->edit_id === 0) {
return false;
|
d57c8c00
Alexey Boroda
-Blocking in process
|
332
|
} else {
|
3bb55546
Alexey Boroda
-Fixing bugs
|
333
|
if ($this->edit_time + 7200 > time()) {
|
d57c8c00
Alexey Boroda
-Blocking in process
|
334
|
return true;
|
3bb55546
Alexey Boroda
-Fixing bugs
|
335
|
} else {
|
d57c8c00
Alexey Boroda
-Blocking in process
|
336
337
338
339
|
return false;
}
}
}
|
28b51b30
Alexey Boroda
-Order module bug...
|
340
341
342
343
344
345
|
public function totalRecount()
{
$products = $this->products;
$newTotal = 0;
foreach ($products as $product) {
|
eb190b1f
Alexey Boroda
-Order form add p...
|
346
347
348
|
if ($product->removed) {
continue;
}
|
28b51b30
Alexey Boroda
-Order module bug...
|
349
350
351
352
353
|
$newTotal += $product->count * $product->price;
}
$this->total = $newTotal;
$this->save();
}
|
eb190b1f
Alexey Boroda
-Order form add p...
|
354
355
356
357
358
359
360
361
362
363
364
365
366
|
public function deleteUnpublished()
{
/**
* @var OrderProduct[] $products
*/
$products = $this->products;
foreach ($products as $product) {
$product->delete();
}
$this->delete();
}
|
8a7e6ecf
Yarik
Namespaces
|
367
|
}
|