]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-231] добавление необходимых для маркетплейс полей в matrix-erp
authorAlexander Smirnov <fredeom@mail.ru>
Fri, 1 Nov 2024 10:41:58 +0000 (13:41 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Fri, 1 Nov 2024 10:41:58 +0000 (13:41 +0300)
erp24/migrations/m241031_123240_add_columns_to_table_matrix_erp_property.php [new file with mode: 0755]
erp24/records/MatrixErpProperty.php
erp24/views/matrix_erp/index.php
erp24/views/matrix_erp/update.php
erp24/views/matrix_erp/view.php
erp24/views/matrix_erp_property/_form.php
erp24/views/matrix_erp_property/update.php
erp24/web/js/matrix_erp_property/_form.js [new file with mode: 0644]

diff --git a/erp24/migrations/m241031_123240_add_columns_to_table_matrix_erp_property.php b/erp24/migrations/m241031_123240_add_columns_to_table_matrix_erp_property.php
new file mode 100755 (executable)
index 0000000..a499fdd
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m241031_123240_add_columns_to_table_matrix_erp_property
+ */
+class m241031_123240_add_columns_to_table_matrix_erp_property extends Migration
+{
+    const TABLE_NAME = 'erp24.matrix_erp_property';
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $this->addColumn(self::TABLE_NAME, 'display_name', $this->string(100)->null()
+            ->after('url_link_video')->comment('Человекочетабильное название букета в маркетплейсе'));
+        $this->addColumn(self::TABLE_NAME, 'external_image_url', $this->string(100)->null()
+            ->after('display_name')->comment('Ссылка на изображение в, например, yandex drive-е'));
+        $this->addColumn(self::TABLE_NAME, 'product_url', $this->string(100)->null()
+            ->after('external_image_url')->comment('Ссылка на карточку товара, например, выложенную без пароля по api2'));
+        $this->addColumn(self::TABLE_NAME, 'flowwow_category', $this->string(100)->null()
+            ->after('product_url')->comment('Точное название категории в flowwow, будет ограничено селектом в интерфейсе'));
+        $this->addColumn(self::TABLE_NAME, 'flowwow_subcategory', $this->string(100)->null()
+            ->after('flowwow_category')->comment('Точное название подкатегории в flowwow, будет ограничено селектом в интерфейсе'));
+        $this->addColumn(self::TABLE_NAME, 'yandex_key_properties', $this->text()->null()
+            ->after('flowwow_subcategory')->comment('изначально это будет пустой json шаблон c характеристиками, который нужно будет заполнить'));
+        $this->addColumn(self::TABLE_NAME, 'yandex_additional_properties', $this->text()->null()
+            ->after('yandex_key_properties')->comment('изначально это будет пустой json шаблон c дополнительными характеристиками,
+            который нужно будет заполнить, сюда же входят подробности о товаре'));
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        $this->dropColumn(self::TABLE_NAME, 'yandex_additional_properties');
+        $this->dropColumn(self::TABLE_NAME, 'yandex_key_properties');
+        $this->dropColumn(self::TABLE_NAME, 'flowwow_subcategory');
+        $this->dropColumn(self::TABLE_NAME, 'flowwow_category');
+        $this->dropColumn(self::TABLE_NAME, 'product_url');
+        $this->dropColumn(self::TABLE_NAME, 'external_image_url');
+        $this->dropColumn(self::TABLE_NAME, 'display_name');
+    }
+}
index 1699e31f07601fbb16038574c4ca0d46d3b78aad..9f29013408fe7a46073ec3f5f4116e95c6a3fa92 100644 (file)
@@ -17,6 +17,15 @@ use Yii;
  * @property string|null $created_at
  * @property int|null $updated_admin_id
  * @property string|null $updated_at
+ * @property string|null $display_name Человекочетабильное название букета в маркетплейсе
+ * @property string|null $external_image_url Ссылка на изображение в, например, yandex drive-е
+ * @property string|null $product_url Ссылка на карточку товара, например, выложенную без пароля по api2
+ * @property string|null $flowwow_category Точное название категории в flowwow, будет ограничено селектом в интерфейсе
+ * @property string|null $flowwow_subcategory Точное название подкатегории в flowwow, будет ограничено селектом в интерфейсе
+ * @property string|null $yandex_key_properties изначально это будет пустой json шаблон c характеристиками, который нужно будет заполнить
+ * @property string|null $yandex_additional_properties изначально это будет пустой json шаблон c дополнительными характеристиками,
+ *                                                     который нужно будет заполнить, сюда же входят подробности о товаре
+ *
  */
 class MatrixErpProperty extends \yii\db\ActiveRecord
 {
@@ -37,7 +46,7 @@ class MatrixErpProperty extends \yii\db\ActiveRecord
     {
         return [
             [['guid', 'date'], 'required'],
-            [['description'], 'string'],
+            [['description', 'yandex_key_properties', 'yandex_additional_properties'], 'string'],
             [['image_id', 'created_admin_id', 'updated_admin_id'], 'integer'],
             [
                 [
@@ -45,8 +54,9 @@ class MatrixErpProperty extends \yii\db\ActiveRecord
                 ],
                 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg', 'checkExtensionByMimeType' => false
             ],
-            [['mediaFile', 'id'], 'safe'],
-            [['guid', 'date', 'created_at', 'updated_at'], 'string', 'max' => 100],
+            [['mediaFile', 'id', 'display_name', 'external_image_url', 'product_url', 'flowwow_category', 'flowwow_subcategory',
+                'yandex_key_properties', 'yandex_additional_properties'], 'safe'],
+            [['guid', 'date', 'created_at', 'updated_at', 'display_name', 'external_image_url', 'product_url', 'flowwow_category', 'flowwow_subcategory'], 'string', 'max' => 100],
             [['url_link_video'], 'string', 'max' => 255],
         ];
     }
@@ -67,6 +77,13 @@ class MatrixErpProperty extends \yii\db\ActiveRecord
             'created_at' => 'Created At',
             'updated_admin_id' => 'Updated Admin ID',
             'updated_at' => 'Updated At',
+            'display_name' => 'Название на маркетплейсе',
+            'external_image_url' => 'Ссылка на изображение лежащее на внешнем ресурсу',
+            'product_url' => 'Ссылка на продуктовую карточку, лежащую предположительно на api2',
+            'flowwow_category' => 'Категория в flowwow',
+            'flowwow_subcategory' => 'Подкатегория в flowwow',
+            'yandex_key_properties' => 'Ключевые свойства на yandex marketplace',
+            'yandex_additional_properties' => 'Дополнительные свойства на yandex marketplace'
         ];
     }
 
index 9af4385983474e76dbbc83aa9080946ba24bfd4c..2674dfeab69a5827704590bc884de752b249edd4 100644 (file)
@@ -58,7 +58,7 @@ $this->params['breadcrumbs'][] = $this->title;
         word-break:break-word!important;
     }
 </style>
-<div class="matrix-erp-index">
+<div class="matrix-erp-index m-5">
 
     <h1><?= Html::encode($this->title) ?></h1>
 
index 3a4411b291daf5a47b0bb4a38b5a9996ed9ecccd..11c2954a6a28f9ff3d4581856a7f6ce1e377144a 100644 (file)
@@ -16,7 +16,7 @@ $this->params['breadcrumbs'][] = ['label' => $modelMatrixErp->name, 'url' => ['v
 $this->params['breadcrumbs'][] = 'Update';
 ?>
 
-<div class="matrix-erp-view">
+<div class="matrix-erp-view m-5">
 
     <h1><?= Html::encode($this->title) ?></h1>
 
@@ -70,7 +70,7 @@ $this->params['breadcrumbs'][] = 'Update';
     </span>
 
 </div>
-<div class="matrix-erp-update">
+<div class="matrix-erp-update m-5">
 
     <h2>Свойства мтричного букета <?=$modelMatrixErp->name?></h2>
 
index 041a8bbd25c089ef4648ff2af9583994cd0c0018..c9d0ea55c7f84bc6cbb3121a9e361c3c771ee087 100644 (file)
@@ -87,7 +87,7 @@ $this->params['breadcrumbs'][] = $this->title;
 //            'updated_admin_id',
 //            'updated_at',
 //            'image_id',
-
+'display_name', 'external_image_url', 'product_url', 'flowwow_category', 'flowwow_subcategory',
             [
                 'attribute' => 'url_link_video',
                 'format' => 'raw',
index 5d29333181245006296a0c13201ae879bcbe935d..8c6c2c33e3e0656b091a3deb2f6cabba68b1a7a3 100644 (file)
@@ -2,7 +2,6 @@
 
 use unclead\multipleinput\components\BaseColumn;
 use unclead\multipleinput\MultipleInput;
-use yii\helpers\ArrayHelper;
 use yii\helpers\Html;
 use yii\widgets\ActiveForm;
 use yii_app\helpers\ImageHelper;
@@ -13,6 +12,18 @@ use yii_app\services\FileService;
 /** @var yii_app\records\MatrixErpProperty $modelMatrixErpProperty */
 /** @var yii\widgets\ActiveForm $form */
 
+$this->registerJsFile('/js/matrix_erp_property/_form.js', ['position' => \yii\web\View::POS_END]);
+
+$options = [
+    'subCategory' => $modelMatrixErpProperty->flowwow_subcategory,
+];
+$this->registerJs(
+    "var yiiOptions = ".\yii\helpers\Json::htmlEncode($options).";",
+    \yii\web\View::POS_HEAD,
+    'yiiOptions'
+);
+
+
 ?>
 
 <div class="matrix-erp-property-form">
@@ -47,6 +58,17 @@ use yii_app\services\FileService;
     <?= $form->field($modelMatrixErpProperty, 'imageFile')->fileInput(['accept' => 'image/*', 'extension' => ['png','jpg']])->label(false) ?>
     </div>
 
+    <?= $form->field($modelMatrixErpProperty, 'display_name')->textInput() ?>
+
+    <?= $form->field($modelMatrixErpProperty, 'external_image_url')->textInput() ?>
+
+    <?= $form->field($modelMatrixErpProperty, 'product_url')->textInput() ?>
+
+    <?= $form->field($modelMatrixErpProperty, 'flowwow_category')->dropDownList(['Цветы' => 'Цветы',
+        'Живые растения' => 'Живые растения'], ['onchange' => 'flowwowCategoryChanged(this.value);']) ?>
+
+    <?= $form->field($modelMatrixErpProperty, 'flowwow_subcategory')->dropDownList([]) ?>
+
     <div class="form-group">
         <?= $form->field($modelMatrixErpProperty, 'mediaFiles')->widget(MultipleInput::className(), [
             'min' => 0,
index 1c34f5e82ab75a6337da08d4ccd9f7190f2f8b6a..502ed124401744c5392a55c8b7f0fb48983f1cb7 100644 (file)
@@ -10,7 +10,7 @@ $this->params['breadcrumbs'][] = ['label' => 'Matrix Erp Properties', 'url' => [
 $this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]];
 $this->params['breadcrumbs'][] = 'Update';
 ?>
-<div class="matrix-erp-property-update">
+<div class="matrix-erp-property-update m-5">
 
     <h1><?= Html::encode($this->title) ?></h1>
 
diff --git a/erp24/web/js/matrix_erp_property/_form.js b/erp24/web/js/matrix_erp_property/_form.js
new file mode 100644 (file)
index 0000000..7415ccb
--- /dev/null
@@ -0,0 +1,63 @@
+/* jshint esversion: 6 */
+
+const categoriesWithSubcategories = {
+    "Цветы" : [
+        "Монобукеты",
+        "Авторские букеты",
+        "Цветы в коробке",
+        "Цветы в корзине",
+        "Букеты невесты",
+        "Композиции из цветов",
+        "Мягкие игрушки",
+        "Подарочные наборы",
+        "Мишки из роз",
+        "Открытки",
+        "Стабилизированные цветы",
+        "Букеты из сухоцветов",
+        "Искусственные цветы",
+        "Цветы в ящиках",
+        "Другое",
+        "Цветы поштучно",
+        "Траурные цветы",
+        "Букеты из мыла",
+        "Цветы для интерьера",
+    ],
+    "Живые растения" : [
+        "Цветы в горшках",
+        "Флорариумы",
+        "Суккуленты, кактусы",
+        "Бонсаи",
+        "Пальмы и деревья",
+        "Левитирующие растения",
+        "Саженцы и рассада",
+        "Фитокартины",
+        "Семена",
+        "Другое",
+        "Кашпо и горшки для цветов",
+        "Наборы для выращивания",
+        "Грунты и удобрения",
+        "Аксессуары для комнатных растений",
+        "Спатифиллумы",
+        "Замиокулькасы",
+        "Антуриумы"
+    ]
+}
+
+function flowwowCategoryChanged(categoryIndex, subCategoryIndex) {
+    const categories = categoriesWithSubcategories[categoryIndex];
+    const fSubCat = $("#matrixerpproperty-flowwow_subcategory");
+    fSubCat.empty();
+    categories.forEach((subCat) => {
+        const option = document.createElement('option');
+        option.value = subCat;
+        option.text = subCat;
+        if (subCategoryIndex && subCat === subCategoryIndex) {
+            option.selected = true;
+        }
+        fSubCat.append($(option));
+    })
+}
+
+$(document).ready(() => {
+    flowwowCategoryChanged($("#matrixerpproperty-flowwow_category").val(), yiiOptions.subCategory);
+});
\ No newline at end of file