_form.php 9.83 KB
<?php
    
    use artweb\artbox\ecommerce\models\Order;
    use artweb\artbox\ecommerce\models\OrderProduct;
    use frontend\models\OrderFrontend;
    use kartik\grid\GridView;
    use kartik\widgets\Select2;
    use yii\data\ActiveDataProvider;
    use yii\helpers\Html;
    use yii\bootstrap\ActiveForm;
    use yii\helpers\ArrayHelper;
    use artweb\artbox\ecommerce\models\Delivery;
    use yii\web\View;
    use yii\web\JsExpression;
    
    /**
     * @var View               $this
     * @var Order              $model
     * @var ActiveForm         $form
     * @var ActiveDataProvider $dataProvider
     */
    
    $js = <<< JS
$(document).on('submit', '#add-product-form', function(e) {
    e.preventDefault();
    var addFormData = $(this).serializeArray();
    var addFormAction = this.action;
    $.ajax({
        url: addFormAction,
        type: "POST",
        data: addFormData,
        success: function (data) {
             if (data.status === "success") {
                 $.pjax.reload({container:"#order-products-grid"});  //Reload GridView
             }
        },
        error: function () {
        }
    });
});
JS;
    
    $this->registerJs($js, View::POS_READY);
?>

<?php $form = ActiveForm::begin(); ?>
<div class="container">
    <div class="row">
        <div class="form-group">
            <?= Html::submitButton(
                $model->isNewRecord ? 'Create' : 'Update',
                [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ]
            ) ?>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-6">
            
            
            <?= $form->field($model, 'name') ?>
            
            <?= $form->field($model, 'phone') ?>
            
            <?= $form->field($model, 'phone2') ?>
            
            <?= $form->field($model, 'email') ?>
            
            <?= $form->field($model, 'numbercard') ?>
            
            <?= $form->field($model, 'body')
                     ->textarea([ 'rows' => '3' ]) ?>
            
            <?php $form->field($model, 'delivery')
                       ->dropDownList(
                           ArrayHelper::map(
                               Delivery::find()
                                       ->asArray()
                                       ->all(),
                               'id',
                               'title'
                           )
                       ) ?>
            
            <?= $form->field($model, 'declaration') ?>
            
            <?= $form->field($model, 'stock') ?>
            
            <?= $form->field($model, 'consignment') ?>
        </div>
        <div class="col-sm-6">
            
            <?= $form->field($model, 'payment')
                     ->dropDownList(
                         ArrayHelper::getColumn(OrderFrontend::PAYMENT_LIST, 'label'),
                         [ 'prompt' => '...' ]
                     ); ?>
            
            <?= $form->field($model, 'insurance') ?>
            
            <?= $form->field($model, 'amount_imposed') ?>
            
            <?= $form->field($model, 'shipping_by') ?>
            
            <?= $form->field($model, 'city') ?>
            
            <?= $form->field($model, 'adress') ?>
            
            
            <?= $form->field($model, 'total') ?>
            
            <?= $form->field($model, 'status')
                     ->dropDownList(
                         [
                             'Нет'              => 'Нет',
                             'Обработан'        => 'Обработан',
                             'На комплектации'  => 'На комплектации',
                             'Укомплектован'    => 'Укомплектован',
                             'Доставка'         => 'Доставка',
                             'Выполнен'         => 'Выполнен',
                             'Резерв оплачен'   => 'Резерв оплачен',
                             'Резерв неоплачен' => 'Резерв неоплачен',
                         ],
                         [ 'prompt' => '...' ]
                     ); ?>
            
            <?= $form->field($model, 'comment')
                     ->textarea([ 'rows' => '3' ]) ?>
        </div>
    </div>
</div>
<?php ActiveForm::end(); ?>


<div class="container">
    <div class="row">
        <?php
            echo GridView::widget(
                [
                    'dataProvider' => $dataProvider,
                    'layout' => '{items}{pager}',
                    'columns'      => [
                        'id',
                        'product_name',
                        'sku',
                        [
                            'class'           => 'kartik\grid\EditableColumn',
                            'attribute'       => 'count',
                            'editableOptions' => [
                                'header'    => \Yii::t('app', 'Количество'),
                                'inputType' => kartik\editable\Editable::INPUT_SPIN,
                                'options'   => [
                                    'pluginOptions' => [
                                        'min' => 0,
                                        'max' => 5000,
                                    ],
                                ],
                            ],
                            'format'          => [
                                'decimal',
                                0,
                            ],
                            'pageSummary'     => false,
                        ],
                        [
                            'class'    => 'yii\grid\ActionColumn',
                            'template' => '{delete}',
                        ],
                    ],
                    'responsive'   => true,
                    'hover'        => true,
                    'pjax'         => true,
                    'pjaxSettings' => [
                        'options' => [
                            'scrollTo' => 'false',
                            'id' => 'order-products-grid',
                        ],
                    ],
                ]
            );
        ?>
    </div>
</div>

<div class="container">
    <div class="row">
        <?php $newProductForm = ActiveForm::begin(
            [
                'action' => yii\helpers\Url::to([ 'add' ]),
                'id'     => 'add-product-form',
            ]
        );
            $newOrderProduct = new OrderProduct();
        ?>
        <div class="col-md-8">
            <?php echo $newProductForm->field($newOrderProduct, 'id')
                                      ->widget(
                                          Select2::className(),
                                          [
                                              'options'       => [ 'placeholder' => 'Search for a product ...' ],
                                              'pluginOptions' => [
                                                  'allowClear'         => true,
                                                  'disabled' => $model->isNewRecord ? true : false,
                                                  'minimumInputLength' => 3,
                                                  'language'           => [
                                                      'errorLoading' => new JsExpression(
                                                          "function () { return 'Waiting for results...'; }"
                                                      ),
                                                  ],
                                                  'ajax'               => [
                                                      'url'      => \yii\helpers\Url::to([ 'find-product' ]),
                                                      'dataType' => 'json',
                                                      'data'     => new JsExpression(
                                                          'function(params) { return {q:params.term}; }'
                                                      ),
                                                  ],
                                                  'escapeMarkup'       => new JsExpression(
                                                      'function (markup) { return markup; }'
                                                  ),
                                                  'templateResult'     => new JsExpression(
                                                      'function(data) { return data.sku; }'
                                                  ),
                                                  'templateSelection'  => new JsExpression(
                                                      'function (data) { return data.sku; }'
                                                  ),
                                              ],
                                          ]
                                      );
            
            ?>
        </div>
        <div class="col-md-2">
            <?php echo $newProductForm->field($newOrderProduct, 'count')->input('number'); ?>
        </div>
        <div class="col-md-2">
            <?php echo Html::submitButton(
                'Add',
                [
                    'class' => $model->isNewRecord ? 'btn btn-primary disabled' : 'btn btn-primary',
                ]
            ) ?>
        </div>
        <?php echo $newProductForm->field($newOrderProduct, 'order_id')
                                  ->hiddenInput(
                                      [
                                          'value' => $model->id,
                                      ]
                                  )
                                  ->label(false) ?>
        <?php ActiveForm::end(); ?>
    </div>
</div>