Commit 0dfd8fe287781babfec43868b3db6db8c2a1ddf9

Authored by Yarik
1 parent e8e6b858

Tax options fix

common/modules/product/controllers/ManageController.php
@@ -133,7 +133,7 @@ class ManageController extends Controller @@ -133,7 +133,7 @@ class ManageController extends Controller
133 return $this->redirect(['view', 'id' => $model->product_id]); 133 return $this->redirect(['view', 'id' => $model->product_id]);
134 } 134 }
135 } else { 135 } else {
136 - $groups = $model->category-> getTaxGroupsByLevel(0); 136 + $groups = $model->getTaxGroupsByLevel(0);
137 137
138 return $this->render('update', [ 138 return $this->render('update', [
139 'model' => $model, 139 'model' => $model,
common/modules/product/controllers/VariantController.php
@@ -96,7 +96,7 @@ class VariantController extends Controller @@ -96,7 +96,7 @@ class VariantController extends Controller
96 return $this->redirect(['index', 'product_id' => $product_id]); 96 return $this->redirect(['index', 'product_id' => $product_id]);
97 } 97 }
98 } else { 98 } else {
99 - $groups = $model->category->getTaxGroupsByLevel(1); 99 + $groups = $model->getTaxGroupsByLevel(1);
100 100
101 return $this->render('create', [ 101 return $this->render('create', [
102 'model' => $model, 102 'model' => $model,
@@ -193,7 +193,7 @@ class VariantController extends Controller @@ -193,7 +193,7 @@ class VariantController extends Controller
193 193
194 194
195 } else { 195 } else {
196 - $groups = $model->category-> getTaxGroupsByLevel(1); 196 + $groups = $model->getTaxGroupsByLevel(1);
197 197
198 return $this->render('update', [ 198 return $this->render('update', [
199 'model' => $model, 199 'model' => $model,
common/modules/product/models/Product.php
@@ -12,6 +12,7 @@ use common\modules\rubrication\models\TaxOption; @@ -12,6 +12,7 @@ use common\modules\rubrication\models\TaxOption;
12 use Yii; 12 use Yii;
13 use common\modules\relation\relationBehavior; 13 use common\modules\relation\relationBehavior;
14 use yii\db\ActiveRecord; 14 use yii\db\ActiveRecord;
  15 +use yii\helpers\ArrayHelper;
15 16
16 /** 17 /**
17 * This is the model class for table "{{%product}}". 18 * This is the model class for table "{{%product}}".
@@ -413,4 +414,10 @@ class Product extends \yii\db\ActiveRecord @@ -413,4 +414,10 @@ class Product extends \yii\db\ActiveRecord
413 public function getAverageRating() { 414 public function getAverageRating() {
414 return $this->hasOne(ProductToRating::className(), ['product_id' => 'product_id']); 415 return $this->hasOne(ProductToRating::className(), ['product_id' => 'product_id']);
415 } 416 }
  417 +
  418 + public function getTaxGroupsByLevel($level)
  419 + {
  420 + $categories = ArrayHelper::getColumn($this->categories, 'category_id');
  421 + return TaxGroup::find()->distinct()->innerJoin('relation', 'entity1_id = tax_group_id')->where(['relation.entity2_id' => $categories])->where(['level' => $level]);
  422 + }
416 } 423 }
common/modules/product/models/ProductVariant.php
@@ -4,8 +4,10 @@ namespace common\modules\product\models; @@ -4,8 +4,10 @@ namespace common\modules\product\models;
4 4
5 use common\modules\product\behaviors\FilterBehavior; 5 use common\modules\product\behaviors\FilterBehavior;
6 use common\modules\relation\relationBehavior; 6 use common\modules\relation\relationBehavior;
  7 +use common\modules\rubrication\models\TaxGroup;
7 use common\modules\rubrication\models\TaxOption; 8 use common\modules\rubrication\models\TaxOption;
8 use Yii; 9 use Yii;
  10 +use yii\db\ActiveQuery;
9 use yii\helpers\ArrayHelper; 11 use yii\helpers\ArrayHelper;
10 12
11 /** 13 /**
@@ -258,6 +260,16 @@ class ProductVariant extends \yii\db\ActiveRecord @@ -258,6 +260,16 @@ class ProductVariant extends \yii\db\ActiveRecord
258 public function getCategory() { 260 public function getCategory() {
259 return $this->hasOne(Category::className(), ['category_id' => 'category_id'])->viaTable('product_category', ['product_id' => 'product_id']); 261 return $this->hasOne(Category::className(), ['category_id' => 'category_id'])->viaTable('product_category', ['product_id' => 'product_id']);
260 } 262 }
  263 +
  264 + public function getCategories() {
  265 + return $this->hasMany(Category::className(), ['category_id' => 'category_id'])->viaTable('product_category', ['product_id' => 'product_id']);
  266 + }
  267 +
  268 + public function getTaxGroupsByLevel($level)
  269 + {
  270 + $categories = ArrayHelper::getColumn($this->categories, 'category_id');
  271 + return TaxGroup::find()->distinct()->innerJoin('relation', 'entity1_id = tax_group_id')->where(['relation.entity2_id' => $categories])->where(['level' => $level]);
  272 + }
261 273
262 // public function afterSave($insert, $changedAttributes) 274 // public function afterSave($insert, $changedAttributes)
263 // { 275 // {
common/modules/product/views/variant/_form.php
@@ -127,7 +127,7 @@ $this->registerJs($js, View::POS_END); @@ -127,7 +127,7 @@ $this->registerJs($js, View::POS_END);
127 [ 127 [
128 'prompt' => Yii::t('product', 'Unit'), 128 'prompt' => Yii::t('product', 'Unit'),
129 ])->label(Yii::t('product', 'Unit')) ?> 129 ])->label(Yii::t('product', 'Unit')) ?>
130 - 130 +
131 <?php if(isset($groups)) :?> 131 <?php if(isset($groups)) :?>
132 <?php foreach($groups->all() as $group) :?> 132 <?php foreach($groups->all() as $group) :?>
133 <?= $form->field($model, 'options')->checkboxList( 133 <?= $form->field($model, 'options')->checkboxList(