diff --git a/controllers/OrderController.php b/controllers/OrderController.php index 07bd0ca..511cadb 100755 --- a/controllers/OrderController.php +++ b/controllers/OrderController.php @@ -136,16 +136,16 @@ return $this->redirect([ 'index' ]); } - 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); - } - } + // 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); + // } + // } public function actionAdd() { @@ -330,7 +330,8 @@ $dataProvider = new ActiveDataProvider( [ 'query' => $model->getProducts() - ->joinWith('productVariant.product.brand'), + ->joinWith('productVariant.product.brand') + ->with('productVariant.variantStocks'), 'sort' => [ 'defaultOrder' => [ 'id' => SORT_ASC ] ], ] ); @@ -402,16 +403,19 @@ return $phone . $content . $result; } - // public function actionDeleteProduct($id, $order_id) - // { - // $model = OrderProduct::findOne($id); - // $model->delete(); - // \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; - // return [ - // 'result' => 'success', - // 'id' => $id, - // ]; - // } + 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, + ]; + } protected function findModel($id) { diff --git a/models/ProductVariant.php b/models/ProductVariant.php index 6e3f409..25db6bc 100755 --- a/models/ProductVariant.php +++ b/models/ProductVariant.php @@ -35,6 +35,7 @@ * @property Stock[] $stocks * @property TaxGroup[] $properties * @property TaxGroup[] $taxGroupsByLevel + * @property string $size * * From language behavior * * @property ProductVariantLang $lang * @property ProductVariantLang[] $langs @@ -70,7 +71,6 @@ public $customOption = []; - /** * @var int[] $options */ @@ -104,8 +104,8 @@ 'directory' => 'products', 'column' => 'image', 'links' => [ - 'product_id' => 'product_id', - 'id' => 'product_variant_id', + 'product_id' => 'product_id', + 'id' => 'product_variant_id', ], 'model' => ProductImage::className(), ], @@ -240,7 +240,7 @@ } else { $quantity = $this->getProductStocks() ->sum('quantity'); - if (empty( $quantity )) { + if (empty($quantity)) { $this->stock = 0; } else { $this->stock = (int) $quantity; @@ -279,7 +279,7 @@ return $this->hasMany(TaxOption::className(), [ 'id' => 'option_id' ]) ->viaTable('product_variant_option', [ 'product_variant_id' => 'id' ]); } - + /** * Get one variant's option whith needed conditions, or random if condition is empty * @@ -290,11 +290,9 @@ public function getOption(array $conditions = []) { $query = $this->hasOne(TaxOption::className(), [ 'id' => 'option_id' ]) - ->viaTable('product_variant_option', [ 'product_variant_id' => 'id' ]); - foreach ($conditions as $condition) - { - if (!empty($condition) && is_array($condition)) - { + ->viaTable('product_variant_option', [ 'product_variant_id' => 'id' ]); + foreach ($conditions as $condition) { + if (!empty($condition) && is_array($condition)) { $query->andFilterWhere($condition); } } @@ -333,7 +331,7 @@ { $this->options = $values; } - + /** * Get all TaxGroups for current ProductVariant filled with $customOptions that satisfy current ProductVariant * @@ -362,12 +360,11 @@ $query->andFilterWhere($condition); } } - foreach ( - $query->all() as $group) { + foreach ($query->all() as $group) { /** * @var TaxGroup $group */ - if (!empty( $options[ $group->id ] )) { + if (!empty($options[ $group->id ])) { $group->customOptions = $options[ $group->id ]; $groups[] = $group; } @@ -421,7 +418,7 @@ public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); - if (!empty( $this->options )) { + if (!empty($this->options)) { $options = TaxOption::findAll($this->options); $this->unlinkAll('options', true); foreach ($options as $option) { @@ -429,7 +426,7 @@ } } - if (!empty( $this->stocks )) { + if (!empty($this->stocks)) { ProductStock::deleteAll([ 'product_variant_id' => $this->id ]); foreach ($this->stocks as $id => $quantity) { /** @@ -448,4 +445,25 @@ } } } + + /** + * @return string + */ + public function getSize() + { + $option = $this->getOptions() + ->with('lang') + ->joinWith('group') + ->where( + [ + 'tax_group.position' => 1, + ] + ) + ->one(); + if (empty($option)) { + return ''; + } else { + return $option->lang->value; + } + } } diff --git a/views/order/_form.php b/views/order/_form.php index 01cebe9..4092fb8 100755 --- a/views/order/_form.php +++ b/views/order/_form.php @@ -7,6 +7,7 @@ use backend\models\SmsTemplate; use common\models\User; use kartik\grid\GridView; + use kartik\grid\SerialColumn; use kartik\widgets\DatePicker; use kartik\widgets\Select2; use kartik\widgets\SwitchInput; @@ -15,8 +16,10 @@ use yii\bootstrap\ActiveForm; use yii\helpers\ArrayHelper; use artweb\artbox\ecommerce\models\Delivery; + use yii\helpers\StringHelper; use yii\web\View; use yii\web\JsExpression; + use yii\widgets\Pjax; /** * @var View $this @@ -39,7 +42,23 @@ $(document).on('submit', '#add-product-form', function(e) { data: addFormData, success: function (data) { if (data.status === "success") { - $.pjax.reload({container:"#order-products-grid"}); //Reload GridView + $.pjax.reload({container:"#order-products-grid"}); + } + }, + error: function () { + } + }); +}); +$(document).on('click', '.delete-button', function(e) { + e.preventDefault(); + var link = $(this).attr('href') + '&order_id=' + {$model->id}; + $.ajax({ + url: link, + type: "GET", + success: function (data) { + if (data.status === "success") { + $.pjax.reload({container:"#order-products-grid"}); + $('[data-toggle="popover"]').popover(); } }, error: function () { @@ -54,6 +73,11 @@ JS; $('#order-phone, #order-phone2').mask('+38(000)000-00-00', { placeholder: '+38(___)___-__-__' }); +$('[data-toggle="popover"]').popover(); +$(document).on('pjax:end', '#order-products-grid', function() { + $('[data-toggle="popover"]').popover(); + $.pjax.reload({container: '#total-cost'}); +}); JS; $this->registerJs($js, View::POS_READY); @@ -120,480 +144,538 @@ JS; 'main-form' ]); ?>
Склад | кол. |
---|---|
' . $stock->stock->title . ' | ' . $stock->quantity . ' |