Commit 8de5e9b394a4c946a726f5b04188073f0d51f309
Merge remote-tracking branch 'origin/Credits' into statistics
# Conflicts: # models/Order.php
Showing
4 changed files
with
426 additions
and
328 deletions
Show diff stats
controllers/OrderController.php
... | ... | @@ -6,12 +6,14 @@ |
6 | 6 | use artweb\artbox\ecommerce\models\OrderLabelHistory; |
7 | 7 | use artweb\artbox\ecommerce\models\OrderLog; |
8 | 8 | use artweb\artbox\ecommerce\models\OrderSearch; |
9 | + use common\components\CreditHelper; | |
9 | 10 | use common\models\User; |
10 | 11 | use Yii; |
11 | 12 | use yii\data\ArrayDataProvider; |
12 | 13 | use yii\db\ActiveQuery; |
13 | 14 | use yii\helpers\Json; |
14 | 15 | use yii\helpers\VarDumper; |
16 | + use yii\validators\NumberValidator; | |
15 | 17 | use yii\web\Controller; |
16 | 18 | use yii\filters\VerbFilter; |
17 | 19 | use yii\data\ActiveDataProvider; |
... | ... | @@ -351,6 +353,18 @@ |
351 | 353 | |
352 | 354 | $model = $this->findModel($id); |
353 | 355 | |
356 | + if ($model->payment == 10) { | |
357 | + $model->validators->append( | |
358 | + new NumberValidator( | |
359 | + [ | |
360 | + 'attributes' => 'credit_sum', | |
361 | + 'max' => $model->total - CreditHelper::MIN_CREDIT_SUM, | |
362 | + 'min' => $model->total - CreditHelper::MAX_CREDIT_SUM, | |
363 | + ] | |
364 | + ) | |
365 | + ); | |
366 | + } | |
367 | + | |
354 | 368 | /** |
355 | 369 | * @var User $user |
356 | 370 | */ | ... | ... |
models/Basket.php
... | ... | @@ -10,6 +10,7 @@ |
10 | 10 | /** |
11 | 11 | * Class Basket to work with basket |
12 | 12 | * |
13 | + * @property bool isCredit | |
13 | 14 | * @package artweb\artbox\ecommerce\models |
14 | 15 | */ |
15 | 16 | class Basket extends Component |
... | ... | @@ -32,7 +33,7 @@ |
32 | 33 | $this->session = \Yii::$app->session; |
33 | 34 | if (!$this->session->has('basket')) { |
34 | 35 | $this->session->set('basket', []); |
35 | - } elseif(!empty($this->session->get('basket'))) { | |
36 | + } elseif (!empty( $this->session->get('basket') )) { | |
36 | 37 | $cookies = \Yii::$app->response->cookies; |
37 | 38 | $cookies->add( |
38 | 39 | new Cookie( |
... | ... | @@ -144,8 +145,9 @@ |
144 | 145 | { |
145 | 146 | $this->session->set('basket', $data); |
146 | 147 | $cookies = \Yii::$app->response->cookies; |
147 | - if(empty($data)) { | |
148 | + if (empty( $data )) { | |
148 | 149 | $cookies->remove('basket'); |
150 | + $cookies->remove('isCredit'); | |
149 | 151 | } else { |
150 | 152 | $cookies->add( |
151 | 153 | new Cookie( |
... | ... | @@ -247,6 +249,23 @@ |
247 | 249 | public function clear() |
248 | 250 | { |
249 | 251 | $this->setData([]); |
252 | + \Yii::$app->response->cookies->remove('isCredit'); | |
253 | + } | |
254 | + | |
255 | + /** | |
256 | + * Check if is credit cookie flag set | |
257 | + * | |
258 | + * @return bool | |
259 | + */ | |
260 | + public static function getIsCredit(): bool | |
261 | + { | |
262 | + // Get cookies from global in order to skip yii2 cookie validation | |
263 | + $cookies = $_COOKIE; | |
264 | + if (isset( $cookies[ 'isCredit' ] )) { | |
265 | + return true; | |
266 | + } else { | |
267 | + return false; | |
268 | + } | |
250 | 269 | } |
251 | 270 | |
252 | 271 | } | ... | ... |
models/Order.php
... | ... | @@ -61,6 +61,8 @@ |
61 | 61 | * @property Delivery $orderDelivery |
62 | 62 | * @property OrderPayment $orderPayment |
63 | 63 | * @property OrderLog[] $logs |
64 | + * @property float $credit_sum | |
65 | + * @property int $credit_month | |
64 | 66 | */ |
65 | 67 | class Order extends ActiveRecord |
66 | 68 | { |
... | ... | @@ -214,6 +216,21 @@ |
214 | 216 | ], |
215 | 217 | [ |
216 | 218 | [ |
219 | + 'credit_month', | |
220 | + ], | |
221 | + 'integer', | |
222 | + 'min' => 3, | |
223 | + 'max' => 36, | |
224 | + ], | |
225 | + [ | |
226 | + [ | |
227 | + 'credit_sum', | |
228 | + ], | |
229 | + 'number', | |
230 | + 'min' => 0, | |
231 | + ], | |
232 | + [ | |
233 | + [ | |
217 | 234 | 'deadline', |
218 | 235 | 'name', |
219 | 236 | 'numbercard', |
... | ... | @@ -348,6 +365,8 @@ |
348 | 365 | 'shipping_by' => Yii::t('app', 'Отправка за счет'), |
349 | 366 | 'city' => Yii::t('app', 'Город'), |
350 | 367 | 'numbercard' => Yii::t('app', '№ карточки'), |
368 | + 'credit_month' => Yii::t('app', 'Количество месяцев'), | |
369 | + 'credit_sum' => Yii::t('app', 'Первоначальный взнос'), | |
351 | 370 | ]; |
352 | 371 | } |
353 | 372 | ... | ... |
views/order/_form.php
... | ... | @@ -5,6 +5,7 @@ |
5 | 5 | use artweb\artbox\ecommerce\models\OrderPayment; |
6 | 6 | use artweb\artbox\ecommerce\models\OrderProduct; |
7 | 7 | use backend\models\SmsTemplate; |
8 | + use common\components\CreditHelper; | |
8 | 9 | use common\models\User; |
9 | 10 | use kartik\grid\GridView; |
10 | 11 | use kartik\grid\SerialColumn; |
... | ... | @@ -144,8 +145,8 @@ JS; |
144 | 145 | |
145 | 146 | <?php $form = ActiveForm::begin( |
146 | 147 | [ |
147 | - 'id' => 'main-form', | |
148 | -// 'options' => [ 'class' => 'form-inline' ], | |
148 | + 'id' => 'main-form', | |
149 | + // 'options' => [ 'class' => 'form-inline' ], | |
149 | 150 | ] |
150 | 151 | ); ?> |
151 | 152 | <div class="container"> |
... | ... | @@ -333,6 +334,51 @@ JS; |
333 | 334 | ), |
334 | 335 | [ 'prompt' => 'Способ оплаты ...' ] |
335 | 336 | ); ?> |
337 | + <?php | |
338 | + if ($model->payment == 10) { | |
339 | + ?> | |
340 | + <div> | |
341 | + <div class="col-xs-4"> | |
342 | + <?php | |
343 | + echo $form->field($model, 'credit_sum') | |
344 | + ->textInput( | |
345 | + [ | |
346 | + 'class' => 'form-control credit_input', | |
347 | + 'data-sum' => $model->total, | |
348 | + ] | |
349 | + ); | |
350 | + ?> | |
351 | + </div> | |
352 | + <div class="col-xs-4"> | |
353 | + <?php | |
354 | + echo Html::tag('span', $model->total - $model->credit_sum, [ | |
355 | + 'class' => 'credit_value_full', | |
356 | + ]); | |
357 | + ?> | |
358 | + </div> | |
359 | + <div class="col-xs-4"> | |
360 | + <?php | |
361 | + echo $form->field($model, 'credit_month') | |
362 | + ->textInput( | |
363 | + [ | |
364 | + 'class' => 'form-control credit_input', | |
365 | + ] | |
366 | + ); | |
367 | + ?> | |
368 | + </div> | |
369 | + <div class="clearfix"></div> | |
370 | + <p> | |
371 | + <span class="credit_value"> | |
372 | + <?php | |
373 | + echo CreditHelper::getCredit($model->total - $model->credit_sum, $model->credit_month); | |
374 | + ?> | |
375 | + </span> | |
376 | + <span>грн/мес</span> | |
377 | + </p> | |
378 | + </div> | |
379 | + <?php | |
380 | + } | |
381 | + ?> | |
336 | 382 | |
337 | 383 | <?= $form->field($model, 'insurance') ?> |
338 | 384 | |
... | ... | @@ -366,348 +412,348 @@ JS; |
366 | 412 | <br> |
367 | 413 | <br> |
368 | 414 | <div class="container"> |
369 | - <div class="row"> | |
370 | - <?php | |
371 | - echo GridView::widget( | |
372 | - [ | |
373 | - 'dataProvider' => $dataProvider, | |
374 | - 'rowOptions' => function($model) { | |
375 | - if ($model->removed) { | |
376 | - return [ 'class' => 'danger' ]; | |
377 | - } else { | |
378 | - return []; | |
379 | - } | |
380 | - }, | |
381 | - 'layout' => '{items}{pager}', | |
382 | - 'columns' => [ | |
383 | - [ | |
384 | - 'class' => SerialColumn::className(), | |
385 | - ], | |
386 | - 'sku', | |
387 | - [ | |
388 | - 'attribute' => 'product_name', | |
389 | - 'content' => function($model) { | |
390 | - if (!empty($model->product_name)) { | |
415 | + <div class="row"> | |
416 | + <?php | |
417 | + echo GridView::widget( | |
418 | + [ | |
419 | + 'dataProvider' => $dataProvider, | |
420 | + 'rowOptions' => function ($model) { | |
421 | + if ($model->removed) { | |
422 | + return [ 'class' => 'danger' ]; | |
423 | + } else { | |
424 | + return []; | |
425 | + } | |
426 | + }, | |
427 | + 'layout' => '{items}{pager}', | |
428 | + 'columns' => [ | |
429 | + [ | |
430 | + 'class' => SerialColumn::className(), | |
431 | + ], | |
432 | + 'sku', | |
433 | + [ | |
434 | + 'attribute' => 'product_name', | |
435 | + 'content' => function ($model) { | |
436 | + if (!empty( $model->product_name )) { | |
437 | + | |
438 | + if (empty( $model->productVariant )) { | |
439 | + return ''; | |
440 | + } | |
441 | + | |
442 | + return Html::a( | |
443 | + StringHelper::truncate($model->product_name, 10, '...'), | |
444 | + '#', | |
445 | + [ | |
446 | + 'onclick' => 'event.preventDefault();', | |
447 | + 'data-toggle' => 'popover', | |
448 | + 'data-placement' => 'right', | |
449 | + 'data-html' => 'true', | |
450 | + 'data-content' => Html::img( | |
451 | + $model->productVariant->imageUrl, | |
452 | + [ | |
453 | + 'class' => 'img-rounded', | |
454 | + ] | |
455 | + ) . Html::tag('p', $model->product_name), | |
456 | + ] | |
457 | + ); | |
458 | + } else { | |
459 | + return ''; | |
460 | + } | |
461 | + }, | |
462 | + ], | |
463 | + [ | |
464 | + 'attribute' => 'productVariant.product.brand.lang.title', | |
465 | + 'label' => 'Брэнд', | |
466 | + ], | |
467 | + [ | |
468 | + 'attribute' => 'productVariant.lang.title', | |
469 | + 'label' => \Yii::t('app', 'Цвет'), | |
470 | + 'content' => function ($model) { | |
391 | 471 | |
392 | - if (empty($model->productVariant)) { | |
472 | + if (empty( $model->productVariant )) { | |
393 | 473 | return ''; |
394 | - } | |
395 | - | |
396 | - return Html::a( | |
397 | - StringHelper::truncate($model->product_name, 10, '...'), | |
398 | - '#', | |
399 | - [ | |
400 | - 'onclick' => 'event.preventDefault();', | |
401 | - 'data-toggle' => 'popover', | |
402 | - 'data-placement' => 'right', | |
403 | - 'data-html' => 'true', | |
404 | - 'data-content' => Html::img( | |
405 | - $model->productVariant->imageUrl, | |
406 | - [ | |
407 | - 'class' => 'img-rounded', | |
408 | - ] | |
409 | - ) . Html::tag('p', $model->product_name), | |
410 | - ] | |
411 | - ); | |
412 | - } else { | |
413 | - return ''; | |
414 | - } | |
415 | - }, | |
416 | - ], | |
417 | - [ | |
418 | - 'attribute' => 'productVariant.product.brand.lang.title', | |
419 | - 'label' => 'Брэнд', | |
420 | - ], | |
421 | - [ | |
422 | - 'attribute' => 'productVariant.lang.title', | |
423 | - 'label' => \Yii::t('app', 'Цвет'), | |
424 | - 'content' => function($model) { | |
425 | - | |
426 | - if (empty($model->productVariant)) { | |
427 | - return ''; | |
428 | - } | |
429 | - | |
430 | - if (preg_match('@.*\.(png|jpg|gif)@i', $model->productVariant->lang->title)) { | |
431 | - return ''; | |
432 | - } else { | |
433 | - return $model->productVariant->lang->title; | |
434 | - } | |
435 | - }, | |
436 | - ], | |
437 | - [ | |
438 | - 'attribute' => 'productVariant.size', | |
439 | - 'label' => 'Размер', | |
440 | - ], | |
441 | - 'price', | |
442 | - [ | |
443 | - 'class' => 'kartik\grid\EditableColumn', | |
444 | - 'attribute' => 'count', | |
445 | - 'editableOptions' => [ | |
446 | - 'header' => \Yii::t('app', 'Количество'), | |
447 | - 'inputType' => kartik\editable\Editable::INPUT_SPIN, | |
448 | - 'options' => [ | |
449 | - 'pluginOptions' => [ | |
450 | - 'min' => 0, | |
451 | - 'max' => 5000, | |
452 | - ], | |
453 | - ], | |
454 | - 'pluginEvents' => [ | |
455 | - 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
456 | - ], | |
457 | - ], | |
458 | - 'format' => [ | |
459 | - 'decimal', | |
460 | - 0, | |
461 | - ], | |
462 | - 'pageSummary' => false, | |
463 | - ], | |
464 | - 'sum_cost', | |
465 | - [ | |
466 | - 'class' => 'kartik\grid\EditableColumn', | |
467 | - 'attribute' => 'booking', | |
468 | - 'editableOptions' => [ | |
469 | - 'header' => \Yii::t('app', 'Бронь'), | |
470 | - 'inputType' => kartik\editable\Editable::INPUT_TEXT, | |
471 | - 'options' => [ | |
472 | - 'class' => 'booking-typeahead', | |
473 | - 'pluginOptions' => [ | |
474 | - 'min' => 0, | |
475 | - 'max' => 20, | |
476 | - ], | |
477 | - ], | |
478 | - 'pluginEvents' => [ | |
479 | - 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
480 | - ], | |
481 | - ], | |
482 | - 'format' => [ | |
483 | - 'text', | |
484 | - ], | |
485 | - 'pageSummary' => false, | |
486 | - ], | |
487 | - [ | |
488 | - 'class' => 'kartik\grid\EditableColumn', | |
489 | - 'attribute' => 'status', | |
490 | - 'editableOptions' => [ | |
491 | - 'header' => \Yii::t('app', 'Статус'), | |
492 | - 'inputType' => kartik\editable\Editable::INPUT_TEXT, | |
493 | - 'options' => [ | |
494 | - 'class' => 'status-typeahead', | |
495 | - 'pluginOptions' => [ | |
496 | - 'min' => 0, | |
497 | - 'max' => 20, | |
498 | - ], | |
499 | - ], | |
500 | - 'pluginEvents' => [ | |
501 | - 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
502 | - ], | |
503 | - ], | |
504 | - 'format' => [ | |
505 | - 'text', | |
506 | - ], | |
507 | - 'pageSummary' => false, | |
508 | - ], | |
509 | - [ | |
510 | - 'class' => 'kartik\grid\EditableColumn', | |
511 | - 'attribute' => 'return', | |
512 | - 'editableOptions' => [ | |
513 | - 'header' => \Yii::t('app', 'Возврат'), | |
514 | - 'inputType' => kartik\editable\Editable::INPUT_CHECKBOX, | |
515 | - 'options' => [], | |
516 | - 'pluginEvents' => [ | |
517 | - 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
518 | - ], | |
519 | - ], | |
520 | - 'format' => [ | |
521 | - 'boolean', | |
522 | - ], | |
523 | - 'pageSummary' => false, | |
524 | - ], | |
525 | - [ | |
526 | - 'content' => function($model) { | |
527 | - | |
528 | - if (empty($model->productVariant)) { | |
529 | - return '<i class="glyphicon glyphicon-remove"></i>'; | |
530 | - } | |
531 | - | |
532 | - $content = '<table class="table"><tbody><tr><th>Склад</th><th>кол.</th></tr>'; | |
533 | - foreach ($model->productVariant->variantStocks as $stock) { | |
534 | - $content .= '<tr><td>' . $stock->stock->title . '</td><td>' . $stock->quantity . '</td></tr>'; | |
535 | - } | |
536 | - return Html::a( | |
537 | - '<i class="glyphicon glyphicon-home"></i>', | |
538 | - '#', | |
539 | - [ | |
540 | - 'onclick' => 'event.preventDefault();', | |
541 | - 'data-toggle' => 'popover', | |
542 | - 'data-placement' => 'left', | |
543 | - 'data-html' => 'true', | |
544 | - 'data-content' => $content . '</tbody></table>', | |
545 | - ] | |
546 | - ); | |
547 | - }, | |
548 | - ], | |
549 | - [ | |
550 | - 'class' => 'yii\grid\ActionColumn', | |
551 | - 'template' => '{delete}', | |
552 | - 'buttons' => [ | |
553 | - 'delete' => function($url, $product) { | |
554 | - if ($product->removed) { | |
555 | - return ''; | |
556 | - } else { | |
557 | - return Html::a( | |
558 | - Html::tag('span', '', [ 'class' => 'glyphicon glyphicon-trash' ]), | |
559 | - [ | |
560 | - 'delete-product', | |
561 | - 'id' => $product->id, | |
562 | - ], | |
563 | - [ | |
564 | - 'class' => 'delete-button', | |
565 | - // 'data' => [ | |
566 | - // 'confirm' => 'Вы уверены, что хотите удалить этот элемент?', | |
567 | - // 'method' => 'GET', | |
568 | - // ], | |
569 | - ] | |
570 | - ); | |
571 | - } | |
572 | - }, | |
573 | - ], | |
574 | - ], | |
575 | - ], | |
576 | - 'responsive' => true, | |
577 | - 'hover' => true, | |
578 | - 'pjax' => true, | |
579 | - 'pjaxSettings' => [ | |
580 | - 'options' => [ | |
581 | - 'scrollTo' => 'false', | |
582 | - 'id' => 'order-products-grid', | |
583 | - ], | |
584 | - ], | |
585 | - ] | |
586 | - ); | |
587 | - ?> | |
588 | - </div> | |
474 | + } | |
475 | + | |
476 | + if (preg_match('@.*\.(png|jpg|gif)@i', $model->productVariant->lang->title)) { | |
477 | + return ''; | |
478 | + } else { | |
479 | + return $model->productVariant->lang->title; | |
480 | + } | |
481 | + }, | |
482 | + ], | |
483 | + [ | |
484 | + 'attribute' => 'productVariant.size', | |
485 | + 'label' => 'Размер', | |
486 | + ], | |
487 | + 'price', | |
488 | + [ | |
489 | + 'class' => 'kartik\grid\EditableColumn', | |
490 | + 'attribute' => 'count', | |
491 | + 'editableOptions' => [ | |
492 | + 'header' => \Yii::t('app', 'Количество'), | |
493 | + 'inputType' => kartik\editable\Editable::INPUT_SPIN, | |
494 | + 'options' => [ | |
495 | + 'pluginOptions' => [ | |
496 | + 'min' => 0, | |
497 | + 'max' => 5000, | |
498 | + ], | |
499 | + ], | |
500 | + 'pluginEvents' => [ | |
501 | + 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
502 | + ], | |
503 | + ], | |
504 | + 'format' => [ | |
505 | + 'decimal', | |
506 | + 0, | |
507 | + ], | |
508 | + 'pageSummary' => false, | |
509 | + ], | |
510 | + 'sum_cost', | |
511 | + [ | |
512 | + 'class' => 'kartik\grid\EditableColumn', | |
513 | + 'attribute' => 'booking', | |
514 | + 'editableOptions' => [ | |
515 | + 'header' => \Yii::t('app', 'Бронь'), | |
516 | + 'inputType' => kartik\editable\Editable::INPUT_TEXT, | |
517 | + 'options' => [ | |
518 | + 'class' => 'booking-typeahead', | |
519 | + 'pluginOptions' => [ | |
520 | + 'min' => 0, | |
521 | + 'max' => 20, | |
522 | + ], | |
523 | + ], | |
524 | + 'pluginEvents' => [ | |
525 | + 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
526 | + ], | |
527 | + ], | |
528 | + 'format' => [ | |
529 | + 'text', | |
530 | + ], | |
531 | + 'pageSummary' => false, | |
532 | + ], | |
533 | + [ | |
534 | + 'class' => 'kartik\grid\EditableColumn', | |
535 | + 'attribute' => 'status', | |
536 | + 'editableOptions' => [ | |
537 | + 'header' => \Yii::t('app', 'Статус'), | |
538 | + 'inputType' => kartik\editable\Editable::INPUT_TEXT, | |
539 | + 'options' => [ | |
540 | + 'class' => 'status-typeahead', | |
541 | + 'pluginOptions' => [ | |
542 | + 'min' => 0, | |
543 | + 'max' => 20, | |
544 | + ], | |
545 | + ], | |
546 | + 'pluginEvents' => [ | |
547 | + 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
548 | + ], | |
549 | + ], | |
550 | + 'format' => [ | |
551 | + 'text', | |
552 | + ], | |
553 | + 'pageSummary' => false, | |
554 | + ], | |
555 | + [ | |
556 | + 'class' => 'kartik\grid\EditableColumn', | |
557 | + 'attribute' => 'return', | |
558 | + 'editableOptions' => [ | |
559 | + 'header' => \Yii::t('app', 'Возврат'), | |
560 | + 'inputType' => kartik\editable\Editable::INPUT_CHECKBOX, | |
561 | + 'options' => [], | |
562 | + 'pluginEvents' => [ | |
563 | + 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
564 | + ], | |
565 | + ], | |
566 | + 'format' => [ | |
567 | + 'boolean', | |
568 | + ], | |
569 | + 'pageSummary' => false, | |
570 | + ], | |
571 | + [ | |
572 | + 'content' => function ($model) { | |
573 | + | |
574 | + if (empty( $model->productVariant )) { | |
575 | + return '<i class="glyphicon glyphicon-remove"></i>'; | |
576 | + } | |
577 | + | |
578 | + $content = '<table class="table"><tbody><tr><th>Склад</th><th>кол.</th></tr>'; | |
579 | + foreach ($model->productVariant->variantStocks as $stock) { | |
580 | + $content .= '<tr><td>' . $stock->stock->title . '</td><td>' . $stock->quantity . '</td></tr>'; | |
581 | + } | |
582 | + return Html::a( | |
583 | + '<i class="glyphicon glyphicon-home"></i>', | |
584 | + '#', | |
585 | + [ | |
586 | + 'onclick' => 'event.preventDefault();', | |
587 | + 'data-toggle' => 'popover', | |
588 | + 'data-placement' => 'left', | |
589 | + 'data-html' => 'true', | |
590 | + 'data-content' => $content . '</tbody></table>', | |
591 | + ] | |
592 | + ); | |
593 | + }, | |
594 | + ], | |
595 | + [ | |
596 | + 'class' => 'yii\grid\ActionColumn', | |
597 | + 'template' => '{delete}', | |
598 | + 'buttons' => [ | |
599 | + 'delete' => function ($url, $product) { | |
600 | + if ($product->removed) { | |
601 | + return ''; | |
602 | + } else { | |
603 | + return Html::a( | |
604 | + Html::tag('span', '', [ 'class' => 'glyphicon glyphicon-trash' ]), | |
605 | + [ | |
606 | + 'delete-product', | |
607 | + 'id' => $product->id, | |
608 | + ], | |
609 | + [ | |
610 | + 'class' => 'delete-button', | |
611 | + // 'data' => [ | |
612 | + // 'confirm' => 'Вы уверены, что хотите удалить этот элемент?', | |
613 | + // 'method' => 'GET', | |
614 | + // ], | |
615 | + ] | |
616 | + ); | |
617 | + } | |
618 | + }, | |
619 | + ], | |
620 | + ], | |
621 | + ], | |
622 | + 'responsive' => true, | |
623 | + 'hover' => true, | |
624 | + 'pjax' => true, | |
625 | + 'pjaxSettings' => [ | |
626 | + 'options' => [ | |
627 | + 'scrollTo' => 'false', | |
628 | + 'id' => 'order-products-grid', | |
629 | + ], | |
630 | + ], | |
631 | + ] | |
632 | + ); | |
633 | + ?> | |
634 | + </div> | |
589 | 635 | </div> |
590 | 636 | <div class="container"> |
591 | 637 | <?php Pjax::begin([ 'id' => 'total-cost' ]); ?> |
592 | - <h2>Сумма заказа : <span class="label label-success"><?php echo $model->total; ?><?php echo \Yii::t( | |
593 | - 'app', | |
594 | - 'грн' | |
595 | - ) ?></span></h2> | |
638 | + <h2>Сумма заказа : <span class="label label-success"><?php echo $model->total; ?><?php echo \Yii::t( | |
639 | + 'app', | |
640 | + 'грн' | |
641 | + ) ?></span></h2> | |
596 | 642 | <?php Pjax::end(); ?> |
597 | 643 | </div> |
598 | 644 | <div class="container"> |
599 | - <div class="row"> | |
600 | - <?php $newProductForm = ActiveForm::begin( | |
601 | - [ | |
602 | - 'action' => yii\helpers\Url::to([ 'add' ]), | |
603 | - 'id' => 'add-product-form', | |
604 | - ] | |
605 | - ); | |
606 | - $newOrderProduct = new OrderProduct(); | |
607 | - ?> | |
608 | - <div class="col-md-8"> | |
609 | - <?php echo $newProductForm->field($newOrderProduct, 'id') | |
610 | - ->widget( | |
611 | - Select2::className(), | |
612 | - [ | |
613 | - 'options' => [ 'placeholder' => 'Search for a product ...' ], | |
614 | - 'pluginOptions' => [ | |
615 | - 'allowClear' => true, | |
616 | - 'disabled' => $model->isNewRecord ? true : false, | |
617 | - 'minimumInputLength' => 3, | |
618 | - 'language' => [ | |
619 | - 'errorLoading' => new JsExpression( | |
620 | - "function () { return 'Waiting for results...'; }" | |
645 | + <div class="row"> | |
646 | + <?php $newProductForm = ActiveForm::begin( | |
647 | + [ | |
648 | + 'action' => yii\helpers\Url::to([ 'add' ]), | |
649 | + 'id' => 'add-product-form', | |
650 | + ] | |
651 | + ); | |
652 | + $newOrderProduct = new OrderProduct(); | |
653 | + ?> | |
654 | + <div class="col-md-8"> | |
655 | + <?php echo $newProductForm->field($newOrderProduct, 'id') | |
656 | + ->widget( | |
657 | + Select2::className(), | |
658 | + [ | |
659 | + 'options' => [ 'placeholder' => 'Search for a product ...' ], | |
660 | + 'pluginOptions' => [ | |
661 | + 'allowClear' => true, | |
662 | + 'disabled' => $model->isNewRecord ? true : false, | |
663 | + 'minimumInputLength' => 3, | |
664 | + 'language' => [ | |
665 | + 'errorLoading' => new JsExpression( | |
666 | + "function () { return 'Waiting for results...'; }" | |
667 | + ), | |
668 | + ], | |
669 | + 'ajax' => [ | |
670 | + 'url' => \yii\helpers\Url::to([ 'find-product' ]), | |
671 | + 'dataType' => 'json', | |
672 | + 'data' => new JsExpression( | |
673 | + 'function(params) { return {q:params.term}; }' | |
674 | + ), | |
675 | + ], | |
676 | + 'escapeMarkup' => new JsExpression( | |
677 | + 'function (markup) { return markup; }' | |
621 | 678 | ), |
622 | - ], | |
623 | - 'ajax' => [ | |
624 | - 'url' => \yii\helpers\Url::to([ 'find-product' ]), | |
625 | - 'dataType' => 'json', | |
626 | - 'data' => new JsExpression( | |
627 | - 'function(params) { return {q:params.term}; }' | |
679 | + 'templateResult' => new JsExpression( | |
680 | + 'function(data) { return data.sku; }' | |
681 | + ), | |
682 | + 'templateSelection' => new JsExpression( | |
683 | + 'function (data) { return data.sku; }' | |
628 | 684 | ), |
629 | 685 | ], |
630 | - 'escapeMarkup' => new JsExpression( | |
631 | - 'function (markup) { return markup; }' | |
632 | - ), | |
633 | - 'templateResult' => new JsExpression( | |
634 | - 'function(data) { return data.sku; }' | |
635 | - ), | |
636 | - 'templateSelection' => new JsExpression( | |
637 | - 'function (data) { return data.sku; }' | |
638 | - ), | |
639 | - ], | |
640 | - ] | |
641 | - ) | |
642 | - ->label('Артикул'); | |
643 | - | |
644 | - ?> | |
645 | - </div> | |
646 | - <div class="col-md-2"> | |
647 | - <?php echo $newProductForm->field( | |
648 | - $newOrderProduct, | |
649 | - 'count' | |
650 | - ) | |
651 | - ->input( | |
652 | - 'number', | |
686 | + ] | |
687 | + ) | |
688 | + ->label('Артикул'); | |
689 | + | |
690 | + ?> | |
691 | + </div> | |
692 | + <div class="col-md-2"> | |
693 | + <?php echo $newProductForm->field( | |
694 | + $newOrderProduct, | |
695 | + 'count' | |
696 | + ) | |
697 | + ->input( | |
698 | + 'number', | |
699 | + [ | |
700 | + 'disabled' => $model->isNewRecord ? true : false, | |
701 | + ] | |
702 | + ); ?> | |
703 | + </div> | |
704 | + <div class="col-md-2" style="margin-top: 23px"> | |
705 | + <?php echo Html::submitButton( | |
706 | + \Yii::t('app', 'Добавить'), | |
707 | + [ | |
708 | + 'class' => $model->isNewRecord ? 'btn btn-primary disabled' : 'btn btn-primary', | |
709 | + ] | |
710 | + ) ?> | |
711 | + </div> | |
712 | + <?php echo $newProductForm->field($newOrderProduct, 'order_id') | |
713 | + ->hiddenInput( | |
653 | 714 | [ |
654 | - 'disabled' => $model->isNewRecord ? true : false, | |
715 | + 'value' => $model->id, | |
655 | 716 | ] |
656 | - ); ?> | |
717 | + ) | |
718 | + ->label(false) ?> | |
719 | + <?php ActiveForm::end(); ?> | |
657 | 720 | </div> |
658 | - <div class="col-md-2" style="margin-top: 23px"> | |
659 | - <?php echo Html::submitButton( | |
660 | - \Yii::t('app', 'Добавить'), | |
721 | + | |
722 | + <br> | |
723 | + <div class="row"> | |
724 | + <?= Html::button( | |
725 | + $model->isNewRecord ? \Yii::t('app', 'Создать') : \Yii::t('app', 'Сохранить'), | |
726 | + [ | |
727 | + 'class' => $model->isNewRecord ? 'btn btn-success btn-lg' : 'btn btn-primary btn-lg', | |
728 | + 'id' => 'page-submit', | |
729 | + ] | |
730 | + ) ?> | |
731 | + <?= Html::a( | |
732 | + \Yii::t('app', 'Печать'), | |
733 | + yii\helpers\Url::to( | |
734 | + [ | |
735 | + 'order/print', | |
736 | + 'order_id' => $model->id, | |
737 | + ] | |
738 | + ), | |
739 | + [ | |
740 | + 'class' => $model->isNewRecord ? 'btn btn-info disabled btn-lg' : 'btn btn-info btn-lg', | |
741 | + 'target' => '_blank', | |
742 | + ] | |
743 | + ) ?> | |
744 | + <?= Html::a( | |
745 | + \Yii::t('app', 'Выйти'), | |
746 | + yii\helpers\Url::to( | |
747 | + [ | |
748 | + 'close-order', | |
749 | + 'id' => $model->id, | |
750 | + ] | |
751 | + ), | |
661 | 752 | [ |
662 | - 'class' => $model->isNewRecord ? 'btn btn-primary disabled' : 'btn btn-primary', | |
753 | + 'class' => $model->isNewRecord ? 'btn btn-info disabled btn-lg' : 'btn btn-info btn-lg', | |
663 | 754 | ] |
664 | 755 | ) ?> |
665 | 756 | </div> |
666 | - <?php echo $newProductForm->field($newOrderProduct, 'order_id') | |
667 | - ->hiddenInput( | |
668 | - [ | |
669 | - 'value' => $model->id, | |
670 | - ] | |
671 | - ) | |
672 | - ->label(false) ?> | |
673 | - <?php ActiveForm::end(); ?> | |
674 | - </div> | |
675 | - | |
676 | - <br> | |
677 | - <div class="row"> | |
678 | - <?= Html::button( | |
679 | - $model->isNewRecord ? \Yii::t('app', 'Создать') : \Yii::t('app', 'Сохранить'), | |
680 | - [ | |
681 | - 'class' => $model->isNewRecord ? 'btn btn-success btn-lg' : 'btn btn-primary btn-lg', | |
682 | - 'id' => 'page-submit', | |
683 | - ] | |
684 | - ) ?> | |
685 | - <?= Html::a( | |
686 | - \Yii::t('app', 'Печать'), | |
687 | - yii\helpers\Url::to( | |
688 | - [ | |
689 | - 'order/print', | |
690 | - 'order_id' => $model->id, | |
691 | - ] | |
692 | - ), | |
693 | - [ | |
694 | - 'class' => $model->isNewRecord ? 'btn btn-info disabled btn-lg' : 'btn btn-info btn-lg', | |
695 | - 'target' => '_blank', | |
696 | - ] | |
697 | - ) ?> | |
698 | - <?= Html::a( | |
699 | - \Yii::t('app', 'Выйти'), | |
700 | - yii\helpers\Url::to( | |
701 | - [ | |
702 | - 'close-order', | |
703 | - 'id' => $model->id, | |
704 | - ] | |
705 | - ), | |
706 | - [ | |
707 | - 'class' => $model->isNewRecord ? 'btn btn-info disabled btn-lg' : 'btn btn-info btn-lg', | |
708 | - ] | |
709 | - ) ?> | |
710 | - </div> | |
711 | 757 | |
712 | 758 | </div> |
713 | 759 | <br> | ... | ... |