Commit 741ecd87cd5ec8231a0f825ad5c6321b646c8594

Authored by Mihail
1 parent afcbaa24

add migration for view Details Currency and change check-price view

backend/controllers/CheckPriceController.php
@@ -8,6 +8,7 @@ use yii\filters\AccessControl; @@ -8,6 +8,7 @@ use yii\filters\AccessControl;
8 use backend\components\base\BaseController; 8 use backend\components\base\BaseController;
9 use yii\filters\VerbFilter; 9 use yii\filters\VerbFilter;
10 use backend\models\Details; 10 use backend\models\Details;
  11 +use common\models\DetailsCurrency;
11 use backend\models\ImportersFiles; 12 use backend\models\ImportersFiles;
12 use backend\models\Importers; 13 use backend\models\Importers;
13 use yii\base\ErrorException; 14 use yii\base\ErrorException;
@@ -61,7 +62,7 @@ class CheckPriceController extends BaseController @@ -61,7 +62,7 @@ class CheckPriceController extends BaseController
61 62
62 public function actionIndex() 63 public function actionIndex()
63 { 64 {
64 - //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]); 65 +
65 $query = Importers::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); 66 $query = Importers::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]);
66 $provider = new ActiveDataProvider([ 67 $provider = new ActiveDataProvider([
67 'query' => $query, 68 'query' => $query,
@@ -79,11 +80,12 @@ class CheckPriceController extends BaseController @@ -79,11 +80,12 @@ class CheckPriceController extends BaseController
79 public function actionView ($id, $date_update) 80 public function actionView ($id, $date_update)
80 { 81 {
81 82
82 - $query = Details::find()->where(['IMPORT_ID' => $id, 'timestamp' => $date_update])->limit(20); 83 + $query = DetailsCurrency::find()->where(['IMPORT_ID' => $id, 'timestamp' => $date_update])->limit(20);
83 84
84 - $importer = Importers::findOne($id)->name; 85 + $importer = Importers::findOne( $id );
85 $date = Yii::$app->formatter->asDate( $date_update, 'yyyy-MM-dd' ); 86 $date = Yii::$app->formatter->asDate( $date_update, 'yyyy-MM-dd' );
86 87
  88 +
87 $provider = new ActiveDataProvider([ 89 $provider = new ActiveDataProvider([
88 'query' => $query, 90 'query' => $query,
89 'pagination' => false, 91 'pagination' => false,
backend/models/Currency.php
@@ -15,13 +15,6 @@ use Yii; @@ -15,13 +15,6 @@ use Yii;
15 */ 15 */
16 class Currency extends \yii\db\ActiveRecord 16 class Currency extends \yii\db\ActiveRecord
17 { 17 {
18 - /**  
19 - * @inheritdoc  
20 - */  
21 - public static function tableName()  
22 - {  
23 - return 'w_currency';  
24 - }  
25 18
26 /** 19 /**
27 * @inheritdoc 20 * @inheritdoc
backend/models/Importers.php
@@ -5,6 +5,7 @@ namespace backend\models; @@ -5,6 +5,7 @@ namespace backend\models;
5 use common\components\CustomVarDamp; 5 use common\components\CustomVarDamp;
6 use Yii; 6 use Yii;
7 use backend\components\base\BaseActiveRecord; 7 use backend\components\base\BaseActiveRecord;
  8 +use backend\models\Currency;
8 9
9 /** 10 /**
10 * 11 *
@@ -89,6 +90,15 @@ class Importers extends BaseActiveRecord @@ -89,6 +90,15 @@ class Importers extends BaseActiveRecord
89 ]; 90 ];
90 } 91 }
91 92
  93 + public function getCurrency ()
  94 + {
  95 + return $this->hasOne(Currency::className(), ['id' => 'currency_id'])->one()->name;
  96 + }
  97 +
  98 + public function getCurrencyRate ()
  99 + {
  100 + return $this->hasOne(Currency::className(), ['id' => 'currency_id'])->one()->rate;
  101 + }
92 102
93 public function getKeys () 103 public function getKeys ()
94 { 104 {
backend/views/check-price/view.php
@@ -8,24 +8,29 @@ use yii\bootstrap\Modal; @@ -8,24 +8,29 @@ use yii\bootstrap\Modal;
8 /* @var $this yii\web\View */ 8 /* @var $this yii\web\View */
9 /* @var $searchModel backend\models\CatalogSearch */ 9 /* @var $searchModel backend\models\CatalogSearch */
10 /* @var $dataProvider yii\data\ActiveDataProvider */ 10 /* @var $dataProvider yii\data\ActiveDataProvider */
11 -$this->title = 'Прайс ' . Html::encode( "{$importer} от {$date}" ); 11 +$this->title = 'Прайс ' . Html::encode("{$importer->name} от {$date}");
12 $this->params['breadcrumbs'][] = $this->title; 12 $this->params['breadcrumbs'][] = $this->title;
13 13
14 ?> 14 ?>
15 -<div class="catalog-index">  
16 -  
17 - <h1><?= Html::encode($this->title) ?></h1>  
18 -  
19 - <?= GridView::widget( ['dataProvider' => $dataProvider,  
20 -  
21 - ] );  
22 -  
23 -  
24 - ?>  
25 -  
26 -  
27 -  
28 -</div> 15 + <div class="catalog-index">
  16 +
  17 + <h1><?= Html::encode($this->title) ?></h1>
  18 +
  19 + <?= GridView::widget( ['dataProvider' => $dataProvider,
  20 + 'columns' => [
  21 + ['attribute' => 'FULL_ARTICLE'],
  22 + ['attribute' => 'ARTICLE'],
  23 + ['attribute' => 'BRAND'],
  24 + ['attribute' => 'DESCR'],
  25 + ['attribute' => 'BOX'],
  26 + ['attribute' => 'ADD_BOX'],
  27 + ['attribute' => 'GROUP'],
  28 + ['attribute' => 'name'],
  29 + ['attribute' => 'PRICE'],
  30 + ]
  31 + ] ); ?>
  32 +
  33 + </div>
29 <?php 34 <?php
30 35
31 ?> 36 ?>
32 \ No newline at end of file 37 \ No newline at end of file
common/models/DetailsCurrency.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace common\models;
  4 +
  5 +use Yii;
  6 +
  7 +/**
  8 + * This is the model class for table "{{%details_currency}}".
  9 + *
  10 + * @property string $ID
  11 + * @property string $IMPORT_ID
  12 + * @property string $BRAND
  13 + * @property string $ARTICLE
  14 + * @property string $FULL_ARTICLE
  15 + * @property double $PRICE
  16 + * @property string $DESCR
  17 + * @property string $BOX
  18 + * @property string $ADD_BOX
  19 + * @property string $GROUP
  20 + * @property string $timestamp
  21 + * @property string $name
  22 + * @property double $rate
  23 + */
  24 +class DetailsCurrency extends \backend\components\base\BaseActiveRecord
  25 +{
  26 + /**
  27 + * @inheritdoc
  28 + */
  29 + public static function tableName()
  30 + {
  31 + return '{{%details_currency}}';
  32 + }
  33 +
  34 + /**
  35 + * @inheritdoc
  36 + */
  37 + public function rules()
  38 + {
  39 + return [
  40 + [['ID', 'IMPORT_ID', 'BOX', 'ADD_BOX'], 'integer'],
  41 + [['IMPORT_ID', 'BRAND', 'ARTICLE', 'FULL_ARTICLE', 'PRICE', 'DESCR', 'BOX', 'name', 'rate'], 'required'],
  42 + [['PRICE', 'rate'], 'number'],
  43 + [['timestamp'], 'safe'],
  44 + [['BRAND', 'ARTICLE'], 'string', 'max' => 100],
  45 + [['FULL_ARTICLE'], 'string', 'max' => 150],
  46 + [['DESCR', 'GROUP'], 'string', 'max' => 200],
  47 + [['name'], 'string', 'max' => 50]
  48 + ];
  49 + }
  50 +
  51 + /**
  52 + * @inheritdoc
  53 + */
  54 + public function attributeLabels()
  55 + {
  56 + return [
  57 + 'ID' => Yii::t('app', 'ID'),
  58 + 'IMPORT_ID' => Yii::t('app', 'Import ID'),
  59 + 'BRAND' => Yii::t('app', 'Бренд'),
  60 + 'ARTICLE' => Yii::t('app', 'Имя'),
  61 + 'FULL_ARTICLE' => Yii::t('app', 'Артикул'),
  62 + 'PRICE' => Yii::t('app', 'Цена'),
  63 + 'DESCR' => Yii::t('app', 'Описание'),
  64 + 'BOX' => Yii::t('app', 'Кол-во'),
  65 + 'ADD_BOX' => Yii::t('app', 'В пути'),
  66 + 'GROUP' => Yii::t('app', 'Группа RG'),
  67 + 'timestamp' => Yii::t('app', 'Дата обновления'),
  68 + 'name' => Yii::t('app', 'Валюта'),
  69 + 'rate' => Yii::t('app', 'Курс'),
  70 + ];
  71 + }
  72 +}
console/migrations/m151016_130143_add_fk_currency_to_Importers.php
@@ -7,17 +7,6 @@ class m151016_130143_add_fk_currency_to_Importers extends Migration @@ -7,17 +7,6 @@ class m151016_130143_add_fk_currency_to_Importers extends Migration
7 { 7 {
8 public function safeUp() 8 public function safeUp()
9 { 9 {
10 -// // сначала отберем записи которых нет уже в поставщиках  
11 -// $id_arr = (new \yii\db\Query())  
12 -// ->select(['{{%importers_files}}.id'])  
13 -// ->from('{{%importers_files}}')  
14 -// ->leftJoin('{{%importers}}', 'importer_id = {{%importers}}.id')  
15 -// ->where(['name' => null])  
16 -// ->all();  
17 -// $id_arr = array_column($id_arr,'id');  
18 -// // удалим их  
19 -// $this->delete('{{%importers_files}}',['id' => $id_arr]);  
20 -  
21 $this->addForeignKey('currency_fk', '{{%importers}}', 'currency_id', '{{%currency}}', 'id'); 10 $this->addForeignKey('currency_fk', '{{%importers}}', 'currency_id', '{{%currency}}', 'id');
22 } 11 }
23 12
console/migrations/m151016_144435_addViewDetailsCurrency.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\db\Schema;
  4 +use yii\db\Migration;
  5 +
  6 +class m151016_144435_addViewDetailsCurrency extends Migration
  7 +{
  8 + public function up()
  9 + {
  10 +
  11 + $view = <<< MySQL
  12 + create view w_details_currency as
  13 + select w_details.*, w_currency.name, w_currency.rate from w_details
  14 + inner join w_importers on w_importers.id = w_details.import_id
  15 + inner join w_currency on w_currency.id = w_importers.currency_id;
  16 +MySQL;
  17 +
  18 + $this->execute($view);
  19 +
  20 + }
  21 +
  22 + public function down()
  23 + {
  24 + // вернем все как было
  25 + $drop_view = 'drop view if exists w_details_currency';
  26 +
  27 + $this->execute($drop_view);
  28 +
  29 + }
  30 +}