Blame view

controllers/OrderController.php 18.2 KB
e0906f08   Alexey Boroda   -Fixing existing ...
1
2
3
4
  <?php
      
      namespace artweb\artbox\ecommerce\controllers;
      
db3040d3   Alexey Boroda   -Order module alm...
5
      use artweb\artbox\components\SmsSender;
e0906f08   Alexey Boroda   -Fixing existing ...
6
      use artweb\artbox\ecommerce\models\OrderSearch;
1f2fdc61   Alexey Boroda   -Product carousel...
7
      use common\models\User;
2ad65823   Alexey Boroda   -Added date range...
8
      use phpDocumentor\Reflection\Types\Null_;
e0906f08   Alexey Boroda   -Fixing existing ...
9
      use Yii;
41f0c492   Yarik   Print and email
10
      use yii\data\ArrayDataProvider;
2ad65823   Alexey Boroda   -Added date range...
11
      use yii\helpers\ArrayHelper;
7520dc0e   Alexey Boroda   -Grid with input ...
12
      use yii\helpers\Json;
622a985a   Alexey Boroda   -Feed in process
13
      use yii\helpers\VarDumper;
e0906f08   Alexey Boroda   -Fixing existing ...
14
15
16
      use yii\web\Controller;
      use yii\filters\VerbFilter;
      use yii\data\ActiveDataProvider;
d57c8c00   Alexey Boroda   -Blocking in process
17
      use yii\web\ForbiddenHttpException;
e0906f08   Alexey Boroda   -Fixing existing ...
18
19
20
21
22
23
      use yii\web\HttpException;
      use artweb\artbox\ecommerce\models\Order;
      use artweb\artbox\ecommerce\models\OrderProduct;
      use artweb\artbox\ecommerce\models\ProductVariant;
      use yii\web\NotFoundHttpException;
      use developeruz\db_rbac\behaviors\AccessBehavior;
d57c8c00   Alexey Boroda   -Blocking in process
24
      use yii\web\Response;
e0906f08   Alexey Boroda   -Fixing existing ...
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
      
      class OrderController extends Controller
      {
          /**
           * @inheritdoc
           */
          public function behaviors()
          {
              return [
                  'access' => [
                      'class' => AccessBehavior::className(),
                      'rules' => [
                          'site' => [
                              [
                                  'actions' => [
                                      'login',
                                      'error',
                                  ],
                                  'allow'   => true,
                              ],
                          ],
                      ],
                  ],
                  'verbs'  => [
                      'class'   => VerbFilter::className(),
                      'actions' => [
                          'delete' => [ 'POST' ],
                      ],
                  ],
              ];
          }
          
          public function actionIndex()
          {
              $searchModel = new OrderSearch();
              $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
              
              return $this->render(
                  'index',
                  [
                      'dataProvider' => $dataProvider,
                      'searchModel'  => $searchModel,
                  ]
              );
          }
          
          public function actionShow($id)
          {
              
              $model = $this->findModel((int) $id);
              $dataProvider = new ActiveDataProvider(
                  [
                      'query'      => OrderProduct::find()
                                                  ->where([ 'order_id' => (int) $id ]),
                      'pagination' => [
                          'pageSize' => 20,
                      ],
                  ]
              );
              if ($model->load(Yii::$app->request->post()) && $model->save()) {
                  return $this->redirect([ 'index' ]);
              } else {
                  $model_orderproduct = new OrderProduct();
                  
                  return $this->renderAjax(
                      'show',
                      [
                          'model'              => $model,
                          'model_orderproduct' => $model_orderproduct,
                          'dataProvider'       => $dataProvider,
                      ]
                  );
              }
          }
          
          public function actionLabelUpdate()
          {
              $model = Order::findOne($_POST[ 'order_id' ]);
              $model->label = $_POST[ 'label_id' ];
              $model->save();
          }
          
db3040d3   Alexey Boroda   -Order module alm...
107
108
109
          public function actionView($id)
          {
              $model = $this->findModel($id);
d57c8c00   Alexey Boroda   -Blocking in process
110
111
112
113
114
              $dataProvider = new ActiveDataProvider(
                  [
                      'query' => $model->getProducts(),
                  ]
              );
db3040d3   Alexey Boroda   -Order module alm...
115
116
117
118
119
120
121
122
123
              return $this->render(
                  'view',
                  [
                      'model'    => $model,
                      'products' => $dataProvider,
                  ]
              );
          }
          
e0906f08   Alexey Boroda   -Fixing existing ...
124
125
126
127
128
129
130
          public function actionPayUpdate()
          {
              $model = Order::findOne($_POST[ 'order_id' ]);
              $model->pay = $_POST[ 'pay_id' ];
              $model->save();
          }
          
2ad65823   Alexey Boroda   -Added date range...
131
          public function actionDelete($id)
e0906f08   Alexey Boroda   -Fixing existing ...
132
          {
3e703aac   Alexey Boroda   -Order form fixes
133
134
135
136
137
138
139
140
              if (\Yii::$app->user->identity->isAdmin()) {
                  $this->findModel($id)
                       ->delete();
              }
              
              return $this->redirect([ 'index' ]);
          }
          
42883b83   Alexey Boroda   -Order form beta ...
141
142
143
144
145
146
147
148
149
150
          //        public function actionDeleteProduct($id)
          //        {
          //            $model = OrderProduct::findOne($id);
          //            $model->removed = true;
          //            $orderId = $model->order_id;
          //            if ($model->save()) {
          //                $model->order->totalRecount();
          //                return $this->actionUpdate($orderId);
          //            }
          //        }
e0906f08   Alexey Boroda   -Fixing existing ...
151
152
153
          
          public function actionAdd()
          {
41f0c492   Yarik   Print and email
154
              if (!empty( \Yii::$app->request->post() )) {
2ad65823   Alexey Boroda   -Added date range...
155
156
                  $id = \Yii::$app->request->post('OrderProduct')[ 'id' ];
                  $order_id = \Yii::$app->request->post('OrderProduct')[ 'order_id' ];
41f0c492   Yarik   Print and email
157
                  if (!empty( \Yii::$app->request->post('OrderProduct')[ 'count' ] )) {
2ad65823   Alexey Boroda   -Added date range...
158
                      $count = \Yii::$app->request->post('OrderProduct')[ 'count' ];
0893579c   Alexey Boroda   -Bug fixed
159
                  } else {
2ad65823   Alexey Boroda   -Added date range...
160
161
162
                      $count = 1;
                  }
                  $productVariant = ProductVariant::findOne($id);
eb190b1f   Alexey Boroda   -Order form add p...
163
                  
2ad65823   Alexey Boroda   -Added date range...
164
165
166
167
168
169
170
171
172
173
174
175
176
                  $model = OrderProduct::find()
                                       ->where(
                                           [
                                               'order_id' => $order_id,
                                           ]
                                       )
                                       ->andWhere(
                                           [
                                               'product_variant_id' => $id,
                                           ]
                                       )
                                       ->one();
                  
41f0c492   Yarik   Print and email
177
                  if (!empty( $model )) {
2ad65823   Alexey Boroda   -Added date range...
178
179
180
181
182
183
184
185
186
187
188
                      $model->count += $count;
                  } else {
                      $model = new OrderProduct();
                      
                      $model->order_id = $order_id;
                      $model->product_variant_id = $productVariant->id;
                      $model->product_name = $productVariant->product->lang->title;
                      $model->name = $productVariant->lang->title;
                      $model->sku = $productVariant->sku;
                      $model->price = $productVariant->price;
                      $model->count = $count;
e0906f08   Alexey Boroda   -Fixing existing ...
189
                  }
2ad65823   Alexey Boroda   -Added date range...
190
191
192
                  \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
                  
                  if ($model->save()) {
28b51b30   Alexey Boroda   -Order module bug...
193
                      $model->order->totalRecount();
2ad65823   Alexey Boroda   -Added date range...
194
195
196
197
198
199
200
                      return [ 'status' => 'success' ];
                  } else {
                      return [ 'status' => 'fail' ];
                  }
                  
              } else {
                  throw new NotFoundHttpException();
e0906f08   Alexey Boroda   -Fixing existing ...
201
              }
e0906f08   Alexey Boroda   -Fixing existing ...
202
203
204
205
          }
          
          public function actionCreate()
          {
2ad65823   Alexey Boroda   -Added date range...
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
              if (\Yii::$app->request->post('hasEditable')) {
                  $orderProductId = \Yii::$app->request->post('editableKey');
                  $orderProduct = OrderProduct::findOne($orderProductId);
                  $out = Json::encode(
                      [
                          'output'  => '',
                          'message' => '',
                      ]
                  );
                  
                  $posted = current(\Yii::$app->request->post('OrderProduct'));
                  $post = [ 'OrderProduct' => $posted ];
                  
                  if ($orderProduct->load($post)) {
                      $orderProduct->save();
                      $output = '';
41f0c492   Yarik   Print and email
222
                      if (isset( $posted[ 'count' ] )) {
2ad65823   Alexey Boroda   -Added date range...
223
224
225
226
227
228
229
230
231
232
233
234
235
                          $output = Yii::$app->formatter->asDecimal($orderProduct->count, 0);
                      }
                      $out = Json::encode(
                          [
                              'output'  => $output,
                              'message' => '',
                          ]
                      );
                  }
                  
                  return $out;
              }
              
e0906f08   Alexey Boroda   -Fixing existing ...
236
              $model = new Order();
b0c7d586   Alexey Boroda   -Bykov fixes
237
238
              $model->phone = '+38(000)000-00-00';
              $model->name = \Yii::t('app', 'Новый заказ');
eb190b1f   Alexey Boroda   -Order form add p...
239
              $model->published = false;
b0c7d586   Alexey Boroda   -Bykov fixes
240
              $model->save();
e0906f08   Alexey Boroda   -Fixing existing ...
241
              
7c536875   Yarik   Sms send
242
243
244
245
246
247
              return $this->redirect(
                  [
                      'update',
                      'id' => $model->id,
                  ]
              );
4ee1bc37   Alexey Boroda   -Before dev
248
              
7520dc0e   Alexey Boroda   -Grid with input ...
249
250
              $dataProvider = new ActiveDataProvider(
                  [
0893579c   Alexey Boroda   -Bug fixed
251
252
                      'query' => $model->getProducts()
                                       ->joinWith('productVariant'),
7520dc0e   Alexey Boroda   -Grid with input ...
253
254
255
                  ]
              );
              
e0906f08   Alexey Boroda   -Fixing existing ...
256
              if ($model->load(Yii::$app->request->post()) && $model->save()) {
eb190b1f   Alexey Boroda   -Order form add p...
257
258
                  $model->published = true;
                  $model->save();
e0906f08   Alexey Boroda   -Fixing existing ...
259
260
261
262
263
                  return $this->redirect([ 'index' ]);
              } else {
                  return $this->render(
                      'create',
                      [
7520dc0e   Alexey Boroda   -Grid with input ...
264
265
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
e0906f08   Alexey Boroda   -Fixing existing ...
266
267
268
269
                      ]
                  );
              }
          }
0893579c   Alexey Boroda   -Bug fixed
270
          
41f0c492   Yarik   Print and email
271
          public function actionPrint($order_id)
0893579c   Alexey Boroda   -Bug fixed
272
          {
41f0c492   Yarik   Print and email
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
              $order = $this->findModel($order_id);
              $dataProvider = new ArrayDataProvider(
                  [
                      'allModels'  => $order->products,
                      'pagination' => false,
                      'sort'       => false,
                  ]
              );
              return $this->renderPartial(
                  'print',
                  [
                      'order' => $order,
                      'dataProvider' => $dataProvider,
                  ]
              );
0893579c   Alexey Boroda   -Bug fixed
288
              
54e2e678   Administrator   slider
289
          }
0893579c   Alexey Boroda   -Bug fixed
290
          
6f14188b   Alexey Boroda   -Product card fixed
291
292
          public function actionUpdate($id)
          {
2ad65823   Alexey Boroda   -Added date range...
293
              if (\Yii::$app->request->post('hasEditable')) {
7520dc0e   Alexey Boroda   -Grid with input ...
294
295
                  $orderProductId = \Yii::$app->request->post('editableKey');
                  $orderProduct = OrderProduct::findOne($orderProductId);
2ad65823   Alexey Boroda   -Added date range...
296
297
298
299
300
301
302
                  $out = Json::encode(
                      [
                          'output'  => '',
                          'message' => '',
                      ]
                  );
                  
7520dc0e   Alexey Boroda   -Grid with input ...
303
                  $posted = current(\Yii::$app->request->post('OrderProduct'));
2ad65823   Alexey Boroda   -Added date range...
304
                  $post = [ 'OrderProduct' => $posted ];
7520dc0e   Alexey Boroda   -Grid with input ...
305
                  
2ad65823   Alexey Boroda   -Added date range...
306
                  if ($orderProduct->load($post)) {
7520dc0e   Alexey Boroda   -Grid with input ...
307
                      $orderProduct->save();
793ad526   Alexey Boroda   -Brain fuck! with...
308
                      $orderProduct->order->totalRecount();
7520dc0e   Alexey Boroda   -Grid with input ...
309
                      $output = '';
41f0c492   Yarik   Print and email
310
                      if (isset( $posted[ 'count' ] )) {
7520dc0e   Alexey Boroda   -Grid with input ...
311
312
                          $output = Yii::$app->formatter->asDecimal($orderProduct->count, 0);
                      }
2ad65823   Alexey Boroda   -Added date range...
313
314
315
316
317
318
                      $out = Json::encode(
                          [
                              'output'  => $output,
                              'message' => '',
                          ]
                      );
7520dc0e   Alexey Boroda   -Grid with input ...
319
                  }
2ad65823   Alexey Boroda   -Added date range...
320
                  
7520dc0e   Alexey Boroda   -Grid with input ...
321
322
323
324
                  return $out;
              }
              
              $model = $this->findModel($id);
e861ae92   Alexey Boroda   -Add column to pa...
325
              
1f2fdc61   Alexey Boroda   -Product carousel...
326
327
328
329
              /**
               * @var User $user
               */
              $user = \Yii::$app->user->identity;
d57c8c00   Alexey Boroda   -Blocking in process
330
              if ($model->isBlocked() && $model->edit_id !== \Yii::$app->user->id) {
1f2fdc61   Alexey Boroda   -Product carousel...
331
                  if (!$user->isAdmin()) {
99de237f   Alexey Boroda   -Order block core...
332
333
                      throw new ForbiddenHttpException();
                  }
d57c8c00   Alexey Boroda   -Blocking in process
334
335
              }
              
7520dc0e   Alexey Boroda   -Grid with input ...
336
337
              $dataProvider = new ActiveDataProvider(
                  [
0893579c   Alexey Boroda   -Bug fixed
338
                      'query' => $model->getProducts()
42883b83   Alexey Boroda   -Order form beta ...
339
340
                                       ->joinWith('productVariant.product.brand')
                                       ->with('productVariant.variantStocks'),
52c27888   Alexey Boroda   -Order module tas...
341
                      'sort'  => [ 'defaultOrder' => [ 'id' => SORT_ASC ] ],
7520dc0e   Alexey Boroda   -Grid with input ...
342
343
344
                  ]
              );
              
41f0c492   Yarik   Print and email
345
              if (empty( $model->manager_id )) {
d57c8c00   Alexey Boroda   -Blocking in process
346
347
348
                  $model->manager_id = \Yii::$app->user->id;
              }
              
793ad526   Alexey Boroda   -Brain fuck! with...
349
350
              $headers = \Yii::$app->response->headers;
              $headers->set('Access-Control-Allow-Origin', '*');
41f0c492   Yarik   Print and email
351
              
6f14188b   Alexey Boroda   -Product card fixed
352
              if ($model->load(Yii::$app->request->post()) && $model->save()) {
d57c8c00   Alexey Boroda   -Blocking in process
353
                  $this->unblockOrder($model->id);
b0c7d586   Alexey Boroda   -Bykov fixes
354
355
356
357
358
359
360
                  return $this->render(
                      'update',
                      [
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
                      ]
                  );
6f14188b   Alexey Boroda   -Product card fixed
361
362
363
364
              } else {
                  return $this->render(
                      'update',
                      [
7520dc0e   Alexey Boroda   -Grid with input ...
365
366
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
6f14188b   Alexey Boroda   -Product card fixed
367
368
369
370
371
                      ]
                  );
              }
          }
          
41f0c492   Yarik   Print and email
372
          public function actionFindProduct($q = null, $id = null)
e0906f08   Alexey Boroda   -Fixing existing ...
373
          {
6f14188b   Alexey Boroda   -Product card fixed
374
              \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
2ad65823   Alexey Boroda   -Added date range...
375
376
              $out = [
                  'results' => [
0893579c   Alexey Boroda   -Bug fixed
377
378
                      'id'  => '',
                      'sku' => '',
2ad65823   Alexey Boroda   -Added date range...
379
                  ],
6f14188b   Alexey Boroda   -Product card fixed
380
              ];
2ad65823   Alexey Boroda   -Added date range...
381
              if (!is_null($q)) {
db3040d3   Alexey Boroda   -Order module alm...
382
                  $result = ProductVariant::find()//                                        ->select(
d57c8c00   Alexey Boroda   -Blocking in process
383
384
385
386
387
388
                  //                                            [
                  //                                                'id',
                  //                                                'sku',
                  //                                                'product_lang.title AS name'
                  //                                            ]
                  //                                        )
0893579c   Alexey Boroda   -Bug fixed
389
                                          ->joinWith('product.lang')
2ad65823   Alexey Boroda   -Added date range...
390
391
392
393
394
395
396
397
398
399
400
401
402
                                          ->where(
                                              [
                                                  'like',
                                                  'sku',
                                                  $q,
                                              ]
                                          )
                                          ->limit(20)
                                          ->asArray()
                                          ->all();
                  
                  $out[ 'results' ] = $result;
              }
2ad65823   Alexey Boroda   -Added date range...
403
              return $out;
e0906f08   Alexey Boroda   -Fixing existing ...
404
405
          }
          
db3040d3   Alexey Boroda   -Order module alm...
406
407
408
409
410
411
412
413
414
          public function actionSendSms()
          {
              $phone = \Yii::$app->request->post('phone');
              $content = \Yii::$app->request->post('content');
              $sender = \Yii::$app->sender;
              $result = $sender->send($phone, $content);
              return $phone . $content . $result;
          }
          
42883b83   Alexey Boroda   -Order form beta ...
415
416
417
418
419
420
421
422
423
424
425
426
427
          public function actionDeleteProduct($id, $order_id)
          {
              $model = OrderProduct::findOne($id);
              $model->removed = true;
              $model->save();
              $order = Order::findOne($order_id);
              $order->totalRecount();
              \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
              return [
                  'status' => 'success',
                  'id'     => $id,
              ];
          }
2ad65823   Alexey Boroda   -Added date range...
428
          
e0906f08   Alexey Boroda   -Fixing existing ...
429
430
          protected function findModel($id)
          {
41f0c492   Yarik   Print and email
431
              if (( $model = Order::findOne($id) ) !== null) {
e0906f08   Alexey Boroda   -Fixing existing ...
432
433
434
435
436
                  return $model;
              } else {
                  throw new NotFoundHttpException('The requested page does not exist.');
              }
          }
e861ae92   Alexey Boroda   -Add column to pa...
437
          
793ad526   Alexey Boroda   -Brain fuck! with...
438
          public function actionExitOrder()
99de237f   Alexey Boroda   -Order block core...
439
          {
eb190b1f   Alexey Boroda   -Order form add p...
440
              try {
793ad526   Alexey Boroda   -Brain fuck! with...
441
                  $model = Order::findOne(\Yii::$app->request->post('id'));
eb190b1f   Alexey Boroda   -Order form add p...
442
443
444
              } catch (NotFoundHttpException $e) {
                  return $this->redirect('index');
              }
b0c7d586   Alexey Boroda   -Bykov fixes
445
              if ($model->edit_id == \Yii::$app->user->id) {
793ad526   Alexey Boroda   -Brain fuck! with...
446
                  $this->unblockOrder(\Yii::$app->request->post('id'));
b0c7d586   Alexey Boroda   -Bykov fixes
447
              }
eb190b1f   Alexey Boroda   -Order form add p...
448
449
450
451
              
              if (!$model->published) {
                  $model->deleteUnpublished();
              }
41f0c492   Yarik   Print and email
452
              //            return $this->redirect('index');
793ad526   Alexey Boroda   -Brain fuck! with...
453
          }
41f0c492   Yarik   Print and email
454
          
793ad526   Alexey Boroda   -Brain fuck! with...
455
456
457
458
459
460
461
462
463
464
          public function actionCloseOrder($id)
          {
              try {
                  $model = Order::findOne($id);
              } catch (NotFoundHttpException $e) {
                  return $this->redirect('index');
              }
              if ($model->edit_id == \Yii::$app->user->id) {
                  $this->unblockOrder($id);
              }
41f0c492   Yarik   Print and email
465
              
793ad526   Alexey Boroda   -Brain fuck! with...
466
467
468
              if (!$model->published) {
                  $model->deleteUnpublished();
              }
41f0c492   Yarik   Print and email
469
              return $this->redirect('index');
99de237f   Alexey Boroda   -Order block core...
470
          }
d57c8c00   Alexey Boroda   -Blocking in process
471
472
473
          
          public function actionBlockOrder()
          {
41f0c492   Yarik   Print and email
474
              if (!empty( \Yii::$app->request->post() )) {
d57c8c00   Alexey Boroda   -Blocking in process
475
476
477
478
                  \Yii::$app->response->format = Response::FORMAT_JSON;
                  
                  $model = $this->findModel(\Yii::$app->request->post('id'));
                  
b0c7d586   Alexey Boroda   -Bykov fixes
479
480
481
                  $user = User::find()
                              ->where([ 'id' => $model->edit_id ])
                              ->one();
d57c8c00   Alexey Boroda   -Blocking in process
482
483
484
                  $model->edit_time = time();
                  $model->edit_id = \Yii::$app->user->id;
                  
99de237f   Alexey Boroda   -Order block core...
485
486
487
                  //$date = new \DateTime("NOW"/*date('D, d M Y H:i:s', $model->edit_time)*/, new \DateTimeZone('Europe/Kiev'));
                  $date = \Yii::$app->formatter->asDatetime($model->edit_time + 7200, 'php:G : i');
                  
d57c8c00   Alexey Boroda   -Blocking in process
488
                  if ($model->save()) {
99de237f   Alexey Boroda   -Order block core...
489
490
                      return [
                          'time' => $date,
41f0c492   Yarik   Print and email
491
                          'user' => !empty( $user ) ? $user->username : '',
99de237f   Alexey Boroda   -Order block core...
492
                      ];
d57c8c00   Alexey Boroda   -Blocking in process
493
                  } else {
e861ae92   Alexey Boroda   -Add column to pa...
494
495
496
497
                      return [
                          'success' => false,
                          'errors'  => $model->errors,
                      ];
d57c8c00   Alexey Boroda   -Blocking in process
498
499
500
501
502
503
504
505
506
507
508
509
                  }
              }
          }
          
          protected function unblockOrder($id)
          {
              $model = $this->findModel($id);
              
              $model->edit_time = 0;
              $model->edit_id = 0;
              $model->save();
          }
f36d238b   Alexey Boroda   -Order publish fi...
510
          
7c536875   Yarik   Sms send
511
512
          public function actionPublishOrder($id)
          {
f36d238b   Alexey Boroda   -Order publish fi...
513
              $model = Order::findOne($id);
00a6457b   Alexey Boroda   -Sms bug fixed
514
515
516
              if ($model->published == true) {
                  exit;
              }
f36d238b   Alexey Boroda   -Order publish fi...
517
518
              $model->published = true;
              $model->save();
7c536875   Yarik   Sms send
519
520
521
522
523
524
              /**
               * @var SmsSender $sender
               */
              $sender = \Yii::$app->sender;
              $sender->send(
                  $model->phone,
c9cb9ad8   Administrator   add similar products
525
                  'test content'
7c536875   Yarik   Sms send
526
              );
f36d238b   Alexey Boroda   -Order publish fi...
527
          }
e0906f08   Alexey Boroda   -Fixing existing ...
528
      }