Commit 1e55b4b87ef6db37cb7d3a89bc3c35653d89a625
1 parent
1d90183c
-
Showing
6 changed files
with
30 additions
and
10 deletions
Show diff stats
common/modules/product/models/Product.php
| @@ -136,7 +136,7 @@ class Product extends \yii\db\ActiveRecord | @@ -136,7 +136,7 @@ class Product extends \yii\db\ActiveRecord | ||
| 136 | */ | 136 | */ |
| 137 | public function getImages() | 137 | public function getImages() |
| 138 | { | 138 | { |
| 139 | - return $this->hasMany(ProductImage::className(), ['product_id' => 'product_id']); | 139 | + return $this->hasMany(ProductImage::className(), ['product_id' => 'product_id'])->where(['product_variant_id' => null]); |
| 140 | } | 140 | } |
| 141 | 141 | ||
| 142 | /** | 142 | /** |
| @@ -144,12 +144,14 @@ class Product extends \yii\db\ActiveRecord | @@ -144,12 +144,14 @@ class Product extends \yii\db\ActiveRecord | ||
| 144 | */ | 144 | */ |
| 145 | public function getVariant() | 145 | public function getVariant() |
| 146 | { | 146 | { |
| 147 | +// return ProductVariant::find()->filterWhere([ProductVariant::tableName() .'.product_id' => Product::tableName() .'.product_id'])->where('>', ProductVariant::tableName() .'.stock', 0); | ||
| 147 | return $this->hasOne(ProductVariant::className(), ['product_id' => 'product_id']); | 148 | return $this->hasOne(ProductVariant::className(), ['product_id' => 'product_id']); |
| 148 | } | 149 | } |
| 149 | 150 | ||
| 150 | public function getVariantPrice() { | 151 | public function getVariantPrice() { |
| 151 | return $this->variant->price; | 152 | return $this->variant->price; |
| 152 | } | 153 | } |
| 154 | + | ||
| 153 | /** | 155 | /** |
| 154 | * @return \yii\db\ActiveQuery | 156 | * @return \yii\db\ActiveQuery |
| 155 | */ | 157 | */ |
| @@ -158,6 +160,18 @@ class Product extends \yii\db\ActiveRecord | @@ -158,6 +160,18 @@ class Product extends \yii\db\ActiveRecord | ||
| 158 | return $this->hasMany(ProductVariant::className(), ['product_id' => 'product_id']); | 160 | return $this->hasMany(ProductVariant::className(), ['product_id' => 'product_id']); |
| 159 | } | 161 | } |
| 160 | 162 | ||
| 163 | + public function getEnabledVariants() | ||
| 164 | + { | ||
| 165 | + /*$result = []; | ||
| 166 | + foreach ($this->variants as $variant) { | ||
| 167 | + if (is_null($variant->stock) || $variant->stock > 0) { | ||
| 168 | + $result[] = $variant; | ||
| 169 | + } | ||
| 170 | + } | ||
| 171 | + return $result;*/ | ||
| 172 | + return $this->hasMany(ProductVariant::className(), ['product_id' => 'product_id'])->where(['!=', ProductVariant::tableName() .'.stock', 0]); | ||
| 173 | + } | ||
| 174 | + | ||
| 161 | public function setVariants($variants) { | 175 | public function setVariants($variants) { |
| 162 | $this->_variants = $variants; | 176 | $this->_variants = $variants; |
| 163 | } | 177 | } |
| @@ -201,6 +215,12 @@ class Product extends \yii\db\ActiveRecord | @@ -201,6 +215,12 @@ class Product extends \yii\db\ActiveRecord | ||
| 201 | return new ProductQuery(get_called_class()); | 215 | return new ProductQuery(get_called_class()); |
| 202 | } | 216 | } |
| 203 | 217 | ||
| 218 | + public function getQuantity() { | ||
| 219 | + return ProductStock::find() | ||
| 220 | + ->where(['product_id' => $this->product_id]) | ||
| 221 | + ->sum('quantity'); | ||
| 222 | + } | ||
| 223 | + | ||
| 204 | public function afterSave($insert, $changedAttributes) | 224 | public function afterSave($insert, $changedAttributes) |
| 205 | { | 225 | { |
| 206 | parent::afterSave($insert, $changedAttributes); | 226 | parent::afterSave($insert, $changedAttributes); |
common/modules/product/models/ProductVariant.php
| @@ -108,12 +108,14 @@ class ProductVariant extends \yii\db\ActiveRecord | @@ -108,12 +108,14 @@ class ProductVariant extends \yii\db\ActiveRecord | ||
| 108 | return $this->hasOne(Product::className(), ['product_id' => 'product_id']); | 108 | return $this->hasOne(Product::className(), ['product_id' => 'product_id']); |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | + public function getProductStock() { | ||
| 112 | + return $this->hasMany(ProductStock::className(), ['product_variant_id' => 'product_variant_id']); | ||
| 113 | + } | ||
| 114 | + | ||
| 111 | public function getQuantity() { | 115 | public function getQuantity() { |
| 112 | return ProductStock::find() | 116 | return ProductStock::find() |
| 113 | ->where(['product_variant_id' => $this->product_variant_id]) | 117 | ->where(['product_variant_id' => $this->product_variant_id]) |
| 114 | ->sum('quantity'); | 118 | ->sum('quantity'); |
| 115 | -// return $this->hasMany(Stock::className(), ['stock_id' => 'stock_id'])->viaTable(ProductStock::tableName(), ['product_id' => 'product_id'])->sum(ProductStock::tableName() .'.quantity') > 0; | ||
| 116 | -// return $this->stock !== 0; | ||
| 117 | } | 119 | } |
| 118 | 120 | ||
| 119 | public function getStock_caption() { | 121 | public function getStock_caption() { |
frontend/views/catalog/catalog.php
| @@ -17,7 +17,7 @@ $this->params['breadcrumbs'][] = ['label' => 'Каталог']; | @@ -17,7 +17,7 @@ $this->params['breadcrumbs'][] = ['label' => 'Каталог']; | ||
| 17 | <div class="loyout"> | 17 | <div class="loyout"> |
| 18 | <div class="content"> | 18 | <div class="content"> |
| 19 | <h1>Каталог</h1> | 19 | <h1>Каталог</h1> |
| 20 | - <?= \frontend\widgets\Rubrics::widget(['wrapper' => 'rubrics', 'includes' => [124,125,126,127,128]])?> | 20 | + <?= \frontend\widgets\Rubrics::widget(['wrapper' => 'rubrics', 'includes' => [136,137,138,139,140]])?> |
| 21 | </div> | 21 | </div> |
| 22 | <div class="both"></div> | 22 | <div class="both"></div> |
| 23 | 23 |
frontend/views/catalog/product.php
| @@ -97,7 +97,7 @@ $this->registerJs (" | @@ -97,7 +97,7 @@ $this->registerJs (" | ||
| 97 | <div class="begin">Цветовые решения</div> | 97 | <div class="begin">Цветовые решения</div> |
| 98 | <ul class="product_mod"> | 98 | <ul class="product_mod"> |
| 99 | <?php foreach ($product->variants as $variant): ?> | 99 | <?php foreach ($product->variants as $variant): ?> |
| 100 | - <?php if ($variant->quantity > 0) continue;?> | 100 | + <?php if ($variant->quantity == 0) continue;?> |
| 101 | <li> | 101 | <li> |
| 102 | <a id='m<?= $variant->product_variant_id ?>' href="#<?=$variant->product_variant_id ?>" | 102 | <a id='m<?= $variant->product_variant_id ?>' href="#<?=$variant->product_variant_id ?>" |
| 103 | data-cost="<?= $variant->price ?>" | 103 | data-cost="<?= $variant->price ?>" |
| @@ -107,9 +107,6 @@ $this->registerJs (" | @@ -107,9 +107,6 @@ $this->registerJs (" | ||
| 107 | data-imageoriginal="<?= $variant->imageUrl ?>" | 107 | data-imageoriginal="<?= $variant->imageUrl ?>" |
| 108 | title="<?= $product->fullname ?>"> | 108 | title="<?= $product->fullname ?>"> |
| 109 | <?= \common\components\artboximage\ArtboxImageHelper::getImage($variant->imageUrl, 'product_variant')?> | 109 | <?= \common\components\artboximage\ArtboxImageHelper::getImage($variant->imageUrl, 'product_variant')?> |
| 110 | - <?php | ||
| 111 | - var_dump($variant->quantity); | ||
| 112 | - ?> | ||
| 113 | </a> | 110 | </a> |
| 114 | </li> | 111 | </li> |
| 115 | <?php endforeach; ?> | 112 | <?php endforeach; ?> |
frontend/views/catalog/product_item.php
| @@ -54,7 +54,8 @@ use yii\helpers\Url; | @@ -54,7 +54,8 @@ use yii\helpers\Url; | ||
| 54 | 54 | ||
| 55 | <div class="mycarousel"> | 55 | <div class="mycarousel"> |
| 56 | <ul class="jcarousel jcarousel-skin-tango"> | 56 | <ul class="jcarousel jcarousel-skin-tango"> |
| 57 | - <?php foreach ($product->variants as $variant) : ?> | 57 | + <?php foreach ($product->enabledVariants as $variant) : ?> |
| 58 | + <?php if ($variant->quantity == 0) continue;?> | ||
| 58 | <?php if (!empty($variant->image)) :?> | 59 | <?php if (!empty($variant->image)) :?> |
| 59 | <li> | 60 | <li> |
| 60 | <a href="<?= Url::to([ | 61 | <a href="<?= Url::to([ |
frontend/views/site/index.php
| @@ -30,7 +30,7 @@ echo '<div class="home_banner_up">'; | @@ -30,7 +30,7 @@ echo '<div class="home_banner_up">'; | ||
| 30 | echo '</div>' | 30 | echo '</div>' |
| 31 | ?> | 31 | ?> |
| 32 | 32 | ||
| 33 | -<?= \frontend\widgets\Rubrics::widget(['wrapper' => 'rubrics', 'includes' => [124,125,126,127,128]])?> | 33 | +<?= \frontend\widgets\Rubrics::widget(['wrapper' => 'rubrics', 'includes' => [136,137,138,139,140]])?> |
| 34 | 34 | ||
| 35 | <?= \common\modules\product\widgets\specialProducts::widget(['type' => 'promo'])?> | 35 | <?= \common\modules\product\widgets\specialProducts::widget(['type' => 'promo'])?> |
| 36 | <?= \common\modules\product\widgets\specialProducts::widget(['type' => 'new'])?> | 36 | <?= \common\modules\product\widgets\specialProducts::widget(['type' => 'new'])?> |