From 2a4a7b82e0829820ef43bd2134ebeb2fafb4ef9a Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Tue, 1 Oct 2024 11:19:23 +0300 Subject: [PATCH] =?utf8?q?[ERP-155]=20=D0=B8=D0=BD=D0=B5=D1=82=D1=80=D1=84?= =?utf8?q?=D0=B5=D0=B9=D1=81=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?utf8?q?=D0=BA=D0=B8=20=D0=BC=D0=B0=D1=80=D0=BA=D1=82=D0=B5=D0=BF=D0=BB?= =?utf8?q?=D0=B5=D0=B9=D1=81=20=D0=BF=D1=80=D0=B8=D0=BE=D1=80=D0=B8=D1=82?= =?utf8?q?=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/actions/marketplace/PriorityAction.php | 51 +++++++++++ erp24/controllers/MarketplaceController.php | 14 ++++ ...0018_create_table_marketplace_priority.php | 35 ++++++++ erp24/records/MarketplacePriority.php | 84 +++++++++++++++++++ erp24/views/marketplace/priority.php | 46 ++++++++++ erp24/web/js/marketplace/priority.js | 26 ++++++ 6 files changed, 256 insertions(+) create mode 100644 erp24/actions/marketplace/PriorityAction.php create mode 100644 erp24/controllers/MarketplaceController.php create mode 100755 erp24/migrations/m240930_100018_create_table_marketplace_priority.php create mode 100644 erp24/records/MarketplacePriority.php create mode 100644 erp24/views/marketplace/priority.php create mode 100644 erp24/web/js/marketplace/priority.js diff --git a/erp24/actions/marketplace/PriorityAction.php b/erp24/actions/marketplace/PriorityAction.php new file mode 100644 index 00000000..60cd8a66 --- /dev/null +++ b/erp24/actions/marketplace/PriorityAction.php @@ -0,0 +1,51 @@ +request->isPost) { + $guid = Yii::$app->request->post('guid'); + $paramName = Yii::$app->request->post('paramName'); + $value = Yii::$app->request->post('value'); + $marketplacePriority = MarketplacePriority::findOne(['guid' => $guid]); + if (!$marketplacePriority) { + $marketplacePriority = new MarketplacePriority; + $marketplacePriority->guid = $guid; + $marketplacePriority->reminder_koef = 2; + $marketplacePriority->minimal_quantity = 2; + } + if ($paramName == 'reminder_koef') { + $marketplacePriority->reminder_koef = $value; + } + if ($paramName == 'minimal_quantity') { + $marketplacePriority->minimal_quantity = $value; + } + $marketplacePriority->save(); + if ($marketplacePriority->getErrors()) { + return 'not ok Error: ' . Json::encode($marketplacePriority->getErrors()); + } + return 'ok ' . $guid . ' ' . $paramName . ' ' . $value; + } + + $productsClass = ArrayHelper::getColumn(ProductsClass::find()->where(['tip' => 'matrix'])->all(), 'category_id'); + $products = ArrayHelper::map(Products1c::find()->where(['parent_id' => $productsClass])->all(), 'id', 'name'); + + $marketplacePriorityMap = []; + foreach (MarketplacePriority::find()->all() as $mp) { + /** @var $mp MarketplacePriority */ + $marketplacePriorityMap[$mp->guid] = $mp; + } + return $this->controller->render('priority', + compact('products', 'marketplacePriorityMap')); + } +} \ No newline at end of file diff --git a/erp24/controllers/MarketplaceController.php b/erp24/controllers/MarketplaceController.php new file mode 100644 index 00000000..765fad6d --- /dev/null +++ b/erp24/controllers/MarketplaceController.php @@ -0,0 +1,14 @@ + \yii_app\actions\marketplace\PriorityAction::class, + ]; + } +} \ No newline at end of file diff --git a/erp24/migrations/m240930_100018_create_table_marketplace_priority.php b/erp24/migrations/m240930_100018_create_table_marketplace_priority.php new file mode 100755 index 00000000..d899480d --- /dev/null +++ b/erp24/migrations/m240930_100018_create_table_marketplace_priority.php @@ -0,0 +1,35 @@ +createTable(self::TABLE_NAME, [ + 'id' => $this->primaryKey(), + 'guid' => $this->string(36)->notNull()->comment('GUID матричного букета'), + 'reminder_koef' => $this->float()->notNull()->comment('коэффициент остатка'), + 'minimal_quantity' => $this->integer()->notNull()->comment('минимальное количество'), + 'created_at' => $this->dateTime()->notNull()->comment('Дата создания'), + 'created_by' => $this->integer()->notNull()->comment('id пользователя создавшего запись'), + 'updated_at' => $this->datetime()->null()->comment('Дата изменения записи'), + 'updated_by' => $this->integer()->null()->comment('id пользователя обновившего запись'), + ]); + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + $this->dropTable(self::TABLE_NAME); + } +} diff --git a/erp24/records/MarketplacePriority.php b/erp24/records/MarketplacePriority.php new file mode 100644 index 00000000..938afe70 --- /dev/null +++ b/erp24/records/MarketplacePriority.php @@ -0,0 +1,84 @@ + TimestampBehavior::class, + 'createdAtAttribute' => 'created_at', + 'updatedAtAttribute' => 'updated_at', + 'value' => new Expression('NOW()'), + ], + ]; + } + + /** + * {@inheritdoc} + */ + public function rules() + { + return [ + [['guid', 'reminder_koef', 'minimal_quantity'], 'required'], + [['reminder_koef'], 'number'], + [['minimal_quantity', 'created_by', 'updated_by'], 'default', 'value' => null], + [['minimal_quantity', 'created_by', 'updated_by'], 'integer'], + [['created_at', 'updated_at'], 'safe'], + [['guid'], 'string', 'max' => 36], + ]; + } + + /** + * {@inheritdoc} + */ + public function attributeLabels() + { + return [ + 'id' => 'ID', + 'guid' => 'Guid', + 'reminder_koef' => 'Reminder Koef', + 'minimal_quantity' => 'Minimal Quantity', + 'created_at' => 'Created At', + 'created_by' => 'Created By', + 'updated_at' => 'Updated At', + 'updated_by' => 'Updated By', + ]; + } + + public function beforeSave($insert) { + if ($this->isNewRecord) { + $this->created_by = Yii::$app->user->id; + $this->updated_by = Yii::$app->user->id; + } else { + $this->updated_by = Yii::$app->user->id; + } + return parent::beforeSave($insert); + } +} diff --git a/erp24/views/marketplace/priority.php b/erp24/views/marketplace/priority.php new file mode 100644 index 00000000..6fdccb73 --- /dev/null +++ b/erp24/views/marketplace/priority.php @@ -0,0 +1,46 @@ +registerJsFile('/js/marketplace/priority.js', ['position' => \yii\web\View::POS_END]); + +?> + +
+ +
+ + + + + + + + + + + $name): ?> + + + + reminder_koef ?? 2; + $minimalQuantity = $marketplacePriorityMap[$guid]->minimal_quantity ?? 2; + ?> + + + + + +
ID букетаНазваниеКоэффициент остаткаМинимальное количество
+
+
+ + \ No newline at end of file diff --git a/erp24/web/js/marketplace/priority.js b/erp24/web/js/marketplace/priority.js new file mode 100644 index 00000000..de4a7380 --- /dev/null +++ b/erp24/web/js/marketplace/priority.js @@ -0,0 +1,26 @@ +/* jshint esversion: 6 */ + +const param22 = $('meta[name=csrf-param]').attr('content'); +const token22 = $('meta[name=csrf-token]').attr('content'); + +$.ready(() => { + $('#priorityTable').DataTable({ + sorting: false, + info: false, + paging: true, + searching: true, + language: data_table_language + }); +}) + +function ajaxSavePrameter(guid, paramName, value) { + $.ajax({ + url: window.location.href, + method: 'post', + dataType: 'text', + data: {guid, paramName, value, [param22]: token22}, + success: function(data) { + console.log(data); + }, + }); +} \ No newline at end of file -- 2.39.5