From 398fc43528f27ab43e88b0001fba4e4d46661242 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Fri, 1 Nov 2024 13:41:58 +0300 Subject: [PATCH] =?utf8?q?[ERP-231]=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?utf8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B5=D0=BE=D0=B1=D1=85=D0=BE?= =?utf8?q?=D0=B4=D0=B8=D0=BC=D1=8B=D1=85=20=D0=B4=D0=BB=D1=8F=20=D0=BC?= =?utf8?q?=D0=B0=D1=80=D0=BA=D0=B5=D1=82=D0=BF=D0=BB=D0=B5=D0=B9=D1=81=20?= =?utf8?q?=D0=BF=D0=BE=D0=BB=D0=B5=D0=B9=20=D0=B2=20matrix-erp?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ...d_columns_to_table_matrix_erp_property.php | 46 ++++++++++++++ erp24/records/MatrixErpProperty.php | 23 ++++++- erp24/views/matrix_erp/index.php | 2 +- erp24/views/matrix_erp/update.php | 4 +- erp24/views/matrix_erp/view.php | 2 +- erp24/views/matrix_erp_property/_form.php | 24 ++++++- erp24/views/matrix_erp_property/update.php | 2 +- erp24/web/js/matrix_erp_property/_form.js | 63 +++++++++++++++++++ 8 files changed, 157 insertions(+), 9 deletions(-) create mode 100755 erp24/migrations/m241031_123240_add_columns_to_table_matrix_erp_property.php create mode 100644 erp24/web/js/matrix_erp_property/_form.js 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 index 00000000..a499fdda --- /dev/null +++ b/erp24/migrations/m241031_123240_add_columns_to_table_matrix_erp_property.php @@ -0,0 +1,46 @@ +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'); + } +} diff --git a/erp24/records/MatrixErpProperty.php b/erp24/records/MatrixErpProperty.php index 1699e31f..9f290134 100644 --- a/erp24/records/MatrixErpProperty.php +++ b/erp24/records/MatrixErpProperty.php @@ -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' ]; } diff --git a/erp24/views/matrix_erp/index.php b/erp24/views/matrix_erp/index.php index 9af43859..2674dfea 100644 --- a/erp24/views/matrix_erp/index.php +++ b/erp24/views/matrix_erp/index.php @@ -58,7 +58,7 @@ $this->params['breadcrumbs'][] = $this->title; word-break:break-word!important; } -
+

title) ?>

diff --git a/erp24/views/matrix_erp/update.php b/erp24/views/matrix_erp/update.php index 3a4411b2..11c2954a 100644 --- a/erp24/views/matrix_erp/update.php +++ b/erp24/views/matrix_erp/update.php @@ -16,7 +16,7 @@ $this->params['breadcrumbs'][] = ['label' => $modelMatrixErp->name, 'url' => ['v $this->params['breadcrumbs'][] = 'Update'; ?> -
+

title) ?>

@@ -70,7 +70,7 @@ $this->params['breadcrumbs'][] = 'Update';
-
+

Свойства мтричного букета name?>

diff --git a/erp24/views/matrix_erp/view.php b/erp24/views/matrix_erp/view.php index 041a8bbd..c9d0ea55 100644 --- a/erp24/views/matrix_erp/view.php +++ b/erp24/views/matrix_erp/view.php @@ -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', diff --git a/erp24/views/matrix_erp_property/_form.php b/erp24/views/matrix_erp_property/_form.php index 5d293331..8c6c2c33 100644 --- a/erp24/views/matrix_erp_property/_form.php +++ b/erp24/views/matrix_erp_property/_form.php @@ -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' +); + + ?>
@@ -47,6 +58,17 @@ use yii_app\services\FileService; field($modelMatrixErpProperty, 'imageFile')->fileInput(['accept' => 'image/*', 'extension' => ['png','jpg']])->label(false) ?>
+ field($modelMatrixErpProperty, 'display_name')->textInput() ?> + + field($modelMatrixErpProperty, 'external_image_url')->textInput() ?> + + field($modelMatrixErpProperty, 'product_url')->textInput() ?> + + field($modelMatrixErpProperty, 'flowwow_category')->dropDownList(['Цветы' => 'Цветы', + 'Живые растения' => 'Живые растения'], ['onchange' => 'flowwowCategoryChanged(this.value);']) ?> + + field($modelMatrixErpProperty, 'flowwow_subcategory')->dropDownList([]) ?> +
field($modelMatrixErpProperty, 'mediaFiles')->widget(MultipleInput::className(), [ 'min' => 0, diff --git a/erp24/views/matrix_erp_property/update.php b/erp24/views/matrix_erp_property/update.php index 1c34f5e8..502ed124 100644 --- a/erp24/views/matrix_erp_property/update.php +++ b/erp24/views/matrix_erp_property/update.php @@ -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'; ?> -
+

title) ?>

diff --git a/erp24/web/js/matrix_erp_property/_form.js b/erp24/web/js/matrix_erp_property/_form.js new file mode 100644 index 00000000..7415ccbe --- /dev/null +++ b/erp24/web/js/matrix_erp_property/_form.js @@ -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 -- 2.39.5