Compare View

switch
from
...
to
 
Commits (3)
common/models/GoodsView.php
@@ -30,8 +30,7 @@ class GoodsView extends \backend\components\base\BaseActiveRecord @@ -30,8 +30,7 @@ class GoodsView extends \backend\components\base\BaseActiveRecord
30 /** 30 /**
31 * @inheritdoc 31 * @inheritdoc
32 */ 32 */
33 - public $price_currency_id;  
34 - public $price_margin_id; 33 +
35 34
36 public static function tableName() 35 public static function tableName()
37 { 36 {
@@ -77,7 +76,10 @@ class GoodsView extends \backend\components\base\BaseActiveRecord @@ -77,7 +76,10 @@ class GoodsView extends \backend\components\base\BaseActiveRecord
77 return round($this->price * ($this->rate/$rate) * $koef, 2); 76 return round($this->price * ($this->rate/$rate) * $koef, 2);
78 } 77 }
79 78
80 - 79 + public static function primaryKey()
  80 + {
  81 + return ['name','brand', 'importer_id'];
  82 + }
81 83
82 84
83 public function attributeLabels() 85 public function attributeLabels()
common/models/GoodsViewSearch.php
@@ -18,7 +18,7 @@ class GoodsViewSearch extends GoodsView @@ -18,7 +18,7 @@ class GoodsViewSearch extends GoodsView
18 public function rules() 18 public function rules()
19 { 19 {
20 return [ 20 return [
21 - [['name', 'brand', 'price_currency_id', 'price_margin_id'], 'safe'], 21 + [['name', 'brand'], 'safe'],
22 ]; 22 ];
23 } 23 }
24 24
@@ -62,7 +62,7 @@ class GoodsViewSearch extends GoodsView @@ -62,7 +62,7 @@ class GoodsViewSearch extends GoodsView
62 62
63 $dataProvider = new ActiveDataProvider([ 63 $dataProvider = new ActiveDataProvider([
64 'query' => $query, 64 'query' => $query,
65 - 'key' => 'article', 65 + 'key' => 'name',
66 'sort' => [ 66 'sort' => [
67 'attributes' => [ 67 'attributes' => [
68 'box', 68 'box',
@@ -79,6 +79,26 @@ class GoodsViewSearch extends GoodsView @@ -79,6 +79,26 @@ class GoodsViewSearch extends GoodsView
79 { 79 {
80 $query = GoodsView::find()->innerJoin('w_details_crosses', '`w_details_crosses`.`CROSS_ARTICLE` = `name` and `w_details_crosses`.`CROSS_BRAND` = w_goods_view.`brand`'); 80 $query = GoodsView::find()->innerJoin('w_details_crosses', '`w_details_crosses`.`CROSS_ARTICLE` = `name` and `w_details_crosses`.`CROSS_BRAND` = w_goods_view.`brand`');
81 81
  82 +
  83 +// ->select([
  84 +// 'name' => 'Name',
  85 +// 'brand' => 'w_details_crosses.CROSS_BRAND',
  86 +// 'box' => 'Box',
  87 +// 'add_box' => 'add_box',
  88 +// 'importer_id' => 'importer_id',
  89 +// 'importer_name' => 'importer_name',
  90 +// 'rate' => 'Rate',
  91 +// 'currency_id' => 'currency_id',
  92 +// 'delivery' => 'Delivery',
  93 +// 'description' => 'Description',
  94 +// 'article' => 'w_details_crosses.CROSS_ARTICLE',
  95 +// 'ID' => 'w_goods_view.ID',
  96 +// 'image' => 'Image',
  97 +// 'tecdoc_id' => 'tecdoc_id',
  98 +// 'price' => 'Price',
  99 +// 'brand_id' => 'brand_id',
  100 +// ]);
  101 +
82 // $pagination = [ 102 // $pagination = [
83 // 'pageSize' => 20, 103 // 'pageSize' => 20,
84 // ]; 104 // ];
@@ -99,7 +119,7 @@ class GoodsViewSearch extends GoodsView @@ -99,7 +119,7 @@ class GoodsViewSearch extends GoodsView
99 119
100 $dataProvider = new ActiveDataProvider([ 120 $dataProvider = new ActiveDataProvider([
101 'query' => $query, 121 'query' => $query,
102 - 'key' => 'article', 122 + 'key' => 'name',
103 'sort' => [ 123 'sort' => [
104 'attributes' => [ 124 'attributes' => [
105 'box', 125 'box',
frontend/controllers/GoodsController.php
@@ -17,16 +17,16 @@ use yii\web\Controller; @@ -17,16 +17,16 @@ use yii\web\Controller;
17 class GoodsController extends Controller { 17 class GoodsController extends Controller {
18 public $layout = '/internal'; 18 public $layout = '/internal';
19 19
20 - public function actionIndex($name, $id) 20 + public function actionIndex( $name , $id )
21 { 21 {
22 22
23 - print('name = '.$name."<br>");  
24 - print('id = '. $id);  
25 - die(); 23 + $arr_name = explode('_',$name);
  24 + $brand = $arr_name[0];
  25 + $article = $arr_name[1];
26 26
27 27
28 - $arr = ['GoodsViewSearch' => ['name' => '0092S40090',  
29 - 'brand' => 'BOSCH']]; 28 + $arr = ['GoodsViewSearch' => ['name' => $article,
  29 + 'brand' => $brand]];
30 30
31 Yii::$app->session->setFlash('price_currency_id', 1); 31 Yii::$app->session->setFlash('price_currency_id', 1);
32 Yii::$app->session->setFlash('price_margin_id', 1); 32 Yii::$app->session->setFlash('price_margin_id', 1);
@@ -34,121 +34,13 @@ class GoodsController extends Controller { @@ -34,121 +34,13 @@ class GoodsController extends Controller {
34 $searchModel = new GoodsViewSearch(); 34 $searchModel = new GoodsViewSearch();
35 $goods_provider = $searchModel->search($arr); 35 $goods_provider = $searchModel->search($arr);
36 36
37 -  
38 -//$cross_arr = DetailsCrosses::find()->select('ARTICLE, BRAND')->where(['CROSS_ARTICLE' => '0092S40090', 'CROSS_BRAND' => 'BOSCH'])->asArray()->all();  
39 -//  
40 -// $article_condition = "'" . implode("','", array_column($cross_arr,'ARTICLE')) . "'";  
41 -// $brand_condition = "'" . implode("','", array_column($cross_arr,'BRAND')) . "'";  
42 -//  
43 -// $crosses_provider = new SqlDataProvider([  
44 -// 'sql' => $query,  
45 -// 'key' => 'article',  
46 -// 'pagination' => false,  
47 -// 'params' => [':article' => $article_condition,  
48 -// ':brand' => $brand_condition],  
49 -// 'sort' => [  
50 -// 'attributes' => [  
51 -// 'box',  
52 -// 'delivery',  
53 -// 'price'  
54 -// ],  
55 -// ],  
56 -// ]);  
57 - 37 + $crosses_provider = $searchModel->searchCrosses($arr);
58 38
59 return $this->render('index',[ 39 return $this->render('index',[
60 'goods_data_provider' => $goods_provider, 40 'goods_data_provider' => $goods_provider,
61 - 'crosses_data_provider' => $goods_provider, 41 + 'crosses_data_provider' => $crosses_provider,
62 ]); 42 ]);
63 } 43 }
64 44
65 45
66 - private function getQuery(){  
67 - $query = <<< MySQL  
68 - select straight_join `w_details`.`ARTICLE` as `name`,  
69 - `w_details`.`BRAND` as `brand`,  
70 - `w_details`.`BOX` as `box`,  
71 - `w_details`.`ADD_BOX` as `add_box`,  
72 - `w_details`.`IMPORT_ID` as `importer_id`,  
73 - `w_importers`.`name` as `importer_name`,  
74 - `w_importers`.`delivery`,  
75 - if (`w_details_description`.`description` = '',  
76 - if (`w_details_description`.`tecdoc_description` = '',  
77 - `w_details_description`.`supplier_description`,  
78 - `w_details_description`.`tecdoc_description`  
79 - ),  
80 - `w_details_description`.`description`  
81 - ) as `description`,  
82 -  
83 - if (`w_details_description`.`tecdoc_article` = '',  
84 - if (`w_details_description`.`article` = '',  
85 - if (`w_details`.`FULL_ARTICLE` = '',  
86 - `w_details`.`ARTICLE`,  
87 - `w_details`.`FULL_ARTICLE`  
88 - ),  
89 - `w_details_description`.`article`  
90 - ),  
91 - `w_details_description`.`tecdoc_article`  
92 - ) as `article`,  
93 - `w_details`.`ID`,  
94 - if (`w_details_description`.`image` = '',  
95 - if (`w_details_description`.`tecdoc_image` = '',  
96 - '',  
97 - concat('ital_origin/images/tecdoc/big/',`w_details_description`.`tecdoc_image`)  
98 - ),  
99 - concat('ital_origin/images/goods/big/',`w_details_description`.`image`)  
100 - ) as `image`,  
101 - `w_details_description`.`tecdoc_id`,  
102 - round(if(`w_margins_groups`.`koef` is not null,  
103 - `w_details`.`PRICE`*`w_margins_groups`.`koef`,  
104 - if (`w_margins_importers`.`koef` is not null,  
105 - `w_details`.`PRICE`*`w_margins_importers`.`koef`,  
106 - `w_details`.`PRICE`*`w_margins`.`koef`  
107 - )  
108 - )*`t`.`rate`/`w_currency`.`rate`,2) as `price`,  
109 -  
110 - round(if(`input_groups`.`koef` is not null,  
111 - `w_details`.`PRICE`*`input_groups`.`koef`,  
112 - `w_details`.`PRICE`  
113 - )*`t`.`rate`/`w_currency`.`rate`,2) as `input_price`,  
114 -  
115 - round(if(`input_groups`.`koef` is not null,  
116 - `w_details`.`PRICE`*`input_groups`.`koef`,  
117 - `w_details`.`PRICE`  
118 - )*`t`.`rate`/`default`.`rate`,2) as `input_price_default`,  
119 -  
120 - round(if(`w_margins_groups`.`koef` is not null,  
121 - `w_details`.`PRICE`*`w_margins_groups`.`koef`,  
122 - if (`w_margins_importers`.`koef` is not null,  
123 - `w_details`.`PRICE`*`w_margins_importers`.`koef`,  
124 - `w_details`.`PRICE`*`w_margins`.`koef`  
125 - )  
126 - )*`t`.`rate`/`default`.`rate`,2) as `price_default`,  
127 -  
128 - `w_brands`.`ID` as `brand_id`  
129 -from `w_details`  
130 - inner join `w_brands` on `w_brands`.`BRAND` = `w_details`.`BRAND`  
131 - left join `w_details_description` on `w_details_description`.`name` = `w_details`.`ARTICLE` and  
132 - `w_details_description`.`brand` = `w_details`.`BRAND`  
133 - inner join `w_importers` on `w_importers`.`id` = `w_details`.`IMPORT_ID` and  
134 - `w_importers`.`active` = 1  
135 - inner join `w_margins` on `w_margins`.`id` = @margin  
136 - left join `w_margins_importers` on `w_margins_importers`.`importer_id` = `w_details`.`IMPORT_ID` and  
137 - `w_margins_importers`.`margin_id`= @margin  
138 - left join `w_margins_groups` on `w_margins_groups`.`importer_id` = `w_details`.`IMPORT_ID` and  
139 - `w_margins_groups`.`margin_id` = @margin and  
140 - `w_margins_groups`.`group` = `w_details`.`group`  
141 - inner join `w_currency` on `w_currency`.`id` = @currency  
142 - inner join `w_currency` as `t` on `t`.`id` = `w_importers`.`currency_id`  
143 - inner join `w_currency` as `default` on `default`.`is_default` = 1  
144 - left join `w_margins_groups` as `input_groups` on `input_groups`.`importer_id` = `w_details`.`IMPORT_ID` and  
145 - `input_groups`.`margin_id` = 8 and  
146 - `input_groups`.`group` = `w_details`.`group`  
147 -where `w_details`.`ARTICLE` In(:article) and `w_details`.`BRAND` In(:brand) and (`w_details`.`BOX` > 0 or `w_details`.`ADD_BOX` > 0)  
148 -MySQL;  
149 -  
150 - return $query;  
151 -}  
152 -  
153 -  
154 } 46 }
155 \ No newline at end of file 47 \ No newline at end of file