--- /dev/null
+<?php
+
+namespace app\controllers;
+use Yii;
+use yii\data\ActiveDataProvider;
+use yii\helpers\ArrayHelper;
+use yii\web\Controller;
+use yii\web\NotFoundHttpException;
+use yii_app\records\Admin;
+use yii_app\records\CityStore;
+use yii_app\records\Firms;
+use yii_app\records\MarketplaceStore;
+
+class MarketplaceStoreController extends Controller
+{
+ public function actionIndex()
+ {
+ $firms = Firms::getInn();
+ $dataProvider = new ActiveDataProvider([
+ 'query' => MarketplaceStore::find(),
+ 'pagination' => false,
+ ]);
+
+ return $this->render('index', [
+ 'dataProvider' => $dataProvider,
+ 'firms' => $firms
+ ]);
+ }
+
+ public function actionView($id)
+ {
+ $model = $this->findModel($id);
+ $firms = Firms::getInn();
+
+ return $this->render('view', [
+ 'model' => $model,
+ 'firms' => $firms,
+ ]);
+ }
+
+ public function actionCreate()
+ {
+ $model = new MarketplaceStore();
+ $stores = CityStore::getAllActiveIdName();
+ $firms = Firms::getInn();
+ $storesGuid = CityStore::getAllActiveGuidId();
+
+
+ if ($model->load(Yii::$app->request->post()) && $model->save()) {
+ return $this->redirect(['view', 'id' => $model->id]);
+ }
+
+ return $this->render('create', [
+ 'model' => $model,
+ 'stores' => $stores,
+ 'storesGuid' => $storesGuid,
+ 'firms' => $firms,
+ ]);
+ }
+
+ public function actionUpdate($id)
+ {
+ $model = MarketplaceStore::findOne($id);
+ $stores = CityStore::getAllActiveIdName();
+ $firms = Firms::getInn();
+ $storesGuid = CityStore::getAllActiveGuidId();
+
+ if ($model->load(Yii::$app->request->post()) && $model->save()) {
+ return $this->redirect(['view', 'id' => $model->id]);
+ }
+
+ return $this->render('update', [
+ 'model' => $model,
+ 'stores' => $stores,
+ 'storesGuid' => $storesGuid,
+ 'firms' => $firms,
+ ]);
+ }
+
+ public function actionDelete($id)
+ {
+ $this->findModel($id)->delete();
+
+ return $this->redirect(['index']);
+ }
+
+ protected function findModel($id)
+ {
+ if (($model = MarketplaceStore::findOne($id)) !== null) {
+ return $model;
+ }
+
+ throw new NotFoundHttpException('The requested page does not exist.');
+ }
+}
--- /dev/null
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Handles the creation of table `{{%marketplace_store}}` in the `erp24` schema.
+ */
+class m241023_064710_create_marketplace_store_table extends Migration
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function safeUp()
+ {
+ if (!$this->db->schema->getTableSchema('erp24.marketplace_store', true)) {
+ $this->createTable('{{%erp24.marketplace_store}}', [
+ 'id' => $this->primaryKey(),
+ 'store_id' => $this->integer()->notNull()->comment('id магазина'),
+ 'guid' => $this->string(255)->notNull()->comment('гуид магазина'),
+ 'name' => $this->string()->comment('название магазина(адрес) = название склада'),
+ 'yandex_market_id' => $this->integer()->comment('id склада в данном маркетплейсе'),
+ 'flowwow_id' => $this->integer()->comment('id склада в данном маркетплейсе'),
+ 'firm' => $this->string(255)->comment('юр . лицо, к которому относится магазин'),
+ 'created_at' => $this->datetime()->notNull()->comment('дата создания записи'),
+ 'created_by' => $this->integer()->notNull()->comment('автор создания записи'),
+ 'updated_at' => $this->datetime()->notNull()->comment('дата изменения записи'),
+ 'updated_by' => $this->integer()->notNull()->comment('автор изменения записи'),
+ ]);
+
+ $this->addForeignKey('fk_marketplace_store_to_city_store', '{{%erp24.marketplace_store}}', 'store_id', '{{%city_store}}', 'id');
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function safeDown()
+ {
+ if ($this->db->schema->getTableSchema('erp24.marketplace_store', true)) {
+ $this->dropForeignKey('fk_marketplace_store_to_city_store', '{{%erp24.marketplace_store}}');
+ $this->dropTable('{{%erp24.marketplace_store}}');
+ }
+ }
+}
--- /dev/null
+<?php
+
+namespace yii_app\records;
+
+use Yii;
+use yii\behaviors\BlameableBehavior;
+use yii\behaviors\TimestampBehavior;
+use yii\db\Expression;
+
+/**
+ * This is the model class for table "marketplace_store".
+ *
+ * @property int $id
+ * @property int $store_id
+ * @property string $guid
+ * @property int $yandex_market_id
+ * @property int $flowwow_id
+ * @property string $firm
+ * @property int $created_at
+ * @property int $created_by
+ * @property int $updated_at
+ * @property int $updated_by
+ */
+class MarketplaceStore extends \yii\db\ActiveRecord
+{
+ /**
+ * {@inheritdoc}
+ */
+ public static function tableName()
+ {
+ return 'marketplace_store';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function rules()
+ {
+ return [
+ [['store_id', 'guid', 'yandex_market_id', 'flowwow_id', 'firm'], 'required'],
+ [['store_id'], 'exist', 'targetClass' => CityStore::class, 'targetAttribute' => 'id'],
+ [['name', 'guid', 'firm'], 'string'],
+ [['store_id', 'yandex_market_id', 'flowwow_id', 'created_at', 'created_by', 'updated_at', 'updated_by'], 'integer'],
+
+ ];
+ }
+
+ public function behaviors()
+ {
+ return [
+ [
+ 'class' => TimestampBehavior::class,
+ 'createdAtAttribute' => 'created_at',
+ 'updatedAtAttribute' => 'updated_at',
+ 'value' => new Expression('NOW()'),
+ ],
+ [
+ 'class' => BlameableBehavior::class,
+ 'createdByAttribute' => 'created_by',
+ 'updatedByAttribute' => 'updated_by',
+ ],
+ ];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function attributeLabels()
+ {
+ return [
+ 'id' => 'ID',
+ 'store_id' => 'ID магазина',
+ 'guid' => 'GUID магазина',
+ 'name' => 'Название магазина(адрес) = Название склада',
+ 'yandex_market_id' => 'ID склада в Яндекс Маркете',
+ 'flowwow_id' => 'ID склада в Flowwow',
+ 'firm' => 'Юр.лицо, к которому относится магазин',
+ 'created_at' => 'Дата создания записи',
+ 'created_by' => 'Автор создания записи',
+ 'updated_at' => 'Дата изменения записи',
+ 'updated_by' => 'Автор изменения записи'
+ ];
+ }
+
+ public function getStore() {
+ return $this->hasOne(CityStore::class, ['id' => 'store_id']);
+ }
+
+ public function getCreatedBy() {
+ return $this->hasOne(Admin::class, ['id' => 'created_by']);
+ }
+
+ public function getUpdatedBy() {
+ return $this->hasOne(Admin::class, ['id' => 'updated_by']);
+ }
+}
--- /dev/null
+<?php
+
+use yii\helpers\Html;
+use yii\widgets\ActiveForm;
+
+/* @var $model yii_app\records\MarketplaceStore */
+/* @var $form yii\widgets\ActiveForm */
+?>
+
+<div class="marketplace-store-form">
+
+ <?php $form = ActiveForm::begin(); ?>
+ <?= $form->field($model, 'store_id')->dropDownList($stores, [
+ 'prompt' => 'Выберите магазин',
+ 'onchange' => 'updateGuid(this.value)' // Вызов функции для обновления guid
+ ]) ?>
+
+ <?= $form->field($model, 'guid')->textInput(['maxlength' => true, 'value' => $model->guid, 'readonly' => true, 'id' => 'guid-input']) ?>
+ <?= $form->field($model, 'yandex_market_id')->textInput() ?>
+ <?= $form->field($model, 'flowwow_id')->textInput(['type' => 'integer']) ?>
+ <?= $form->field($model, 'firm')->dropDownList($firms, ['prompt' => 'Выберите юр лицо']) ?>
+
+ <div class="form-group">
+ <?= Html::submitButton($model->isNewRecord ? 'Создать' : 'Сохранить', ['class' => 'btn btn-success']) ?>
+ </div>
+
+ <?php ActiveForm::end(); ?>
+
+</div>
+
+
+<script>
+ const storesGuid = <?= json_encode($storesGuid) ?>; // Преобразуем массив GUID в JSON
+
+ function updateGuid(storeId) {
+ const guidInput = document.getElementById('guid-input');
+ guidInput.value = storesGuid[storeId] || ''; // Обновляем значение GUID
+ }
+</script>
\ No newline at end of file
--- /dev/null
+<?php
+
+use yii\helpers\Html;
+
+$this->title = 'Создать Магазин';
+$this->params['breadcrumbs'][] = ['label' => 'Список Магазинов', 'url' => ['index']];
+$this->params['breadcrumbs'][] = $this->title;
+?>
+
+<div class="marketplace-store-create">
+
+ <h1><?= Html::encode($this->title) ?></h1>
+
+ <?= $this->render('_form', [
+ 'model' => $model,
+ 'stores' => $stores,
+ 'storesGuid' => $storesGuid,
+ 'firms' => $firms,
+ ]) ?>
+
+</div>
--- /dev/null
+<?php
+
+use yii\helpers\Html;
+use yii\grid\GridView;
+use yii_app\records\Firms;
+
+$this->title = 'Список Магазинов';
+$this->params['breadcrumbs'][] = $this->title;
+?>
+<div class="marketplace-store-index">
+
+ <h1><?= Html::encode($this->title) ?></h1>
+
+ <p>
+ <?= Html::a('Создать Магазин', ['create'], ['class' => 'btn btn-success']) ?>
+ </p>
+
+ <?= GridView::widget([
+ 'dataProvider' => $dataProvider,
+ 'columns' => [
+ ['class' => 'yii\grid\SerialColumn'],
+
+ 'id',
+ [
+ 'attribute' => 'store_id',
+ 'value' => function ($model) {
+ return $model->store->name;
+ }
+ ],
+ 'guid',
+ 'yandex_market_id',
+ 'flowwow_id',
+ [
+ 'attribute' => 'firm',
+ 'value' => function ($model) {
+ return Firms::getInn()[$model->firm];
+ }
+ ],
+ 'created_at',
+ 'updated_at',
+
+ ['class' => 'yii\grid\ActionColumn'],
+ ],
+ ]); ?>
+
+</div>
--- /dev/null
+<?php
+
+use yii\helpers\Html;
+
+$this->title = 'Обновить Магазин: ' . $model->store->name;
+$this->params['breadcrumbs'][] = ['label' => 'Список Магазинов', 'url' => ['index']];
+$this->params['breadcrumbs'][] = $this->title;
+?>
+
+<div class="marketplace-store-update">
+
+ <h1><?= Html::encode($this->title) ?></h1>
+
+ <?= $this->render('_form', [
+ 'model' => $model,
+ 'stores' => $stores,
+ 'storesGuid' => $storesGuid,
+ 'firms' => $firms,
+ ]) ?>
+
+</div>
--- /dev/null
+<?php
+
+use yii\helpers\Html;
+
+$this->title = 'Просмотр магазина: ' . $model->store->name;
+$this->params['breadcrumbs'][] = ['label' => 'Список Магазинов', 'url' => ['index']];
+$this->params['breadcrumbs'][] = $this->title;
+?>
+
+<div class="marketplace-store-view">
+
+ <h1><?= Html::encode($this->title) ?></h1>
+
+ <p>
+ <?= Html::a('Обновить', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>
+ <?= Html::a('Удалить', ['delete', 'id' => $model->id], [
+ 'class' => 'btn btn-danger',
+ 'data' => [
+ 'confirm' => 'Вы уверены, что хотите удалить этот элемент?',
+ 'method' => 'post',
+ ],
+ ]) ?>
+ </p>
+
+ <table class="table table-bordered">
+ <tr>
+ <th>ID</th>
+ <td><?= Html::encode($model->id) ?></td>
+ </tr>
+ <tr>
+ <th>ID Магазина</th>
+ <td><?= Html::encode($model->store->name) ?></td>
+ </tr>
+ <tr>
+ <th>GUID</th>
+ <td><?= Html::encode($model->guid) ?></td>
+ </tr>
+ <tr>
+ <th>ID в Яндекс.Маркете</th>
+ <td><?= Html::encode($model->yandex_market_id) ?></td>
+ </tr>
+ <tr>
+ <th>ID в Flowwow</th>
+ <td><?= Html::encode($model->flowwow_id) ?></td>
+ </tr>
+ <tr>
+ <th>Юридическое Лицо</th>
+ <td><?= Html::encode($firms[$model->firm]) ?></td>
+ </tr>
+ <tr>
+ <th>Автор создания</th>
+ <td><?= Html::encode($model->createdBy->name) ?></td>
+ </tr>
+ <tr>
+ <th>Дата создания</th>
+ <td><?= Html::encode(date('Y-m-d H:i:s', strtotime($model->created_at))) ?></td>
+ </tr>
+ <tr>
+ <th>Автор обновления</th>
+ <td><?= Html::encode($model->updatedBy->name) ?></td>
+ </tr>
+ <tr>
+ <th>Дата обновления</th>
+ <td><?= Html::encode(date('Y-m-d H:i:s', strtotime($model->updated_at))) ?></td>
+ </tr>
+ </table>
+
+</div>