From: Alexander Smirnov Date: Fri, 1 Nov 2024 10:41:58 +0000 (+0300) Subject: [ERP-231] добавление необходимых для маркетплейс полей в matrix-erp X-Git-Tag: 1.6~20^2~5 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=398fc43528f27ab43e88b0001fba4e4d46661242;p=erp24_rep%2Fyii-erp24%2F.git [ERP-231] добавление необходимых для маркетплейс полей в matrix-erp --- 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