diff --git a/common/modules/product/controllers/ManageController.php b/common/modules/product/controllers/ManageController.php index 211d38d..5b382c5 100755 --- a/common/modules/product/controllers/ManageController.php +++ b/common/modules/product/controllers/ManageController.php @@ -133,7 +133,7 @@ class ManageController extends Controller return $this->redirect(['view', 'id' => $model->product_id]); } } else { - $groups = $model->category-> getTaxGroupsByLevel(0); + $groups = $model->getTaxGroupsByLevel(0); return $this->render('update', [ 'model' => $model, diff --git a/common/modules/product/controllers/VariantController.php b/common/modules/product/controllers/VariantController.php index 0b9cfa7..4d0ca7b 100755 --- a/common/modules/product/controllers/VariantController.php +++ b/common/modules/product/controllers/VariantController.php @@ -96,7 +96,7 @@ class VariantController extends Controller return $this->redirect(['index', 'product_id' => $product_id]); } } else { - $groups = $model->category->getTaxGroupsByLevel(1); + $groups = $model->getTaxGroupsByLevel(1); return $this->render('create', [ 'model' => $model, @@ -193,7 +193,7 @@ class VariantController extends Controller } else { - $groups = $model->category-> getTaxGroupsByLevel(1); + $groups = $model->getTaxGroupsByLevel(1); return $this->render('update', [ 'model' => $model, diff --git a/common/modules/product/models/Product.php b/common/modules/product/models/Product.php index 74014c0..125ace4 100755 --- a/common/modules/product/models/Product.php +++ b/common/modules/product/models/Product.php @@ -12,6 +12,7 @@ use common\modules\rubrication\models\TaxOption; use Yii; use common\modules\relation\relationBehavior; use yii\db\ActiveRecord; +use yii\helpers\ArrayHelper; /** * This is the model class for table "{{%product}}". @@ -413,4 +414,10 @@ class Product extends \yii\db\ActiveRecord public function getAverageRating() { return $this->hasOne(ProductToRating::className(), ['product_id' => 'product_id']); } + + public function getTaxGroupsByLevel($level) + { + $categories = ArrayHelper::getColumn($this->categories, 'category_id'); + return TaxGroup::find()->distinct()->innerJoin('relation', 'entity1_id = tax_group_id')->where(['relation.entity2_id' => $categories])->where(['level' => $level]); + } } diff --git a/common/modules/product/models/ProductVariant.php b/common/modules/product/models/ProductVariant.php index ecfecdb..1054655 100755 --- a/common/modules/product/models/ProductVariant.php +++ b/common/modules/product/models/ProductVariant.php @@ -4,8 +4,10 @@ namespace common\modules\product\models; use common\modules\product\behaviors\FilterBehavior; use common\modules\relation\relationBehavior; +use common\modules\rubrication\models\TaxGroup; use common\modules\rubrication\models\TaxOption; use Yii; +use yii\db\ActiveQuery; use yii\helpers\ArrayHelper; /** @@ -258,6 +260,16 @@ class ProductVariant extends \yii\db\ActiveRecord public function getCategory() { return $this->hasOne(Category::className(), ['category_id' => 'category_id'])->viaTable('product_category', ['product_id' => 'product_id']); } + + public function getCategories() { + return $this->hasMany(Category::className(), ['category_id' => 'category_id'])->viaTable('product_category', ['product_id' => 'product_id']); + } + + public function getTaxGroupsByLevel($level) + { + $categories = ArrayHelper::getColumn($this->categories, 'category_id'); + return TaxGroup::find()->distinct()->innerJoin('relation', 'entity1_id = tax_group_id')->where(['relation.entity2_id' => $categories])->where(['level' => $level]); + } // public function afterSave($insert, $changedAttributes) // { diff --git a/common/modules/product/views/variant/_form.php b/common/modules/product/views/variant/_form.php index ff2d070..37a8ba1 100755 --- a/common/modules/product/views/variant/_form.php +++ b/common/modules/product/views/variant/_form.php @@ -127,7 +127,7 @@ $this->registerJs($js, View::POS_END); [ 'prompt' => Yii::t('product', 'Unit'), ])->label(Yii::t('product', 'Unit')) ?> - + all() as $group) :?> field($model, 'options')->checkboxList( -- libgit2 0.21.4