--- /dev/null
+<?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');
+ }
+}
* @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
{
{
return [
[['guid', 'date'], 'required'],
- [['description'], 'string'],
+ [['description', 'yandex_key_properties', 'yandex_additional_properties'], 'string'],
[['image_id', 'created_admin_id', 'updated_admin_id'], 'integer'],
[
[
],
'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],
];
}
'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'
];
}
word-break:break-word!important;
}
</style>
-<div class="matrix-erp-index">
+<div class="matrix-erp-index m-5">
<h1><?= Html::encode($this->title) ?></h1>
$this->params['breadcrumbs'][] = 'Update';
?>
-<div class="matrix-erp-view">
+<div class="matrix-erp-view m-5">
<h1><?= Html::encode($this->title) ?></h1>
</span>
</div>
-<div class="matrix-erp-update">
+<div class="matrix-erp-update m-5">
<h2>Свойства мтричного букета <?=$modelMatrixErp->name?></h2>
// 'updated_admin_id',
// 'updated_at',
// 'image_id',
-
+'display_name', 'external_image_url', 'product_url', 'flowwow_category', 'flowwow_subcategory',
[
'attribute' => 'url_link_video',
'format' => 'raw',
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;
/** @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">
<?= $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,
$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>
--- /dev/null
+/* 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