From: fomichev Date: Fri, 7 Mar 2025 09:33:06 +0000 (+0300) Subject: Добавление колонок в marketplace_orders X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=646460d0ed4da6c1bf5900debf2d176b17afb3d5;p=erp24_rep%2Fyii-erp24%2F.git Добавление колонок в marketplace_orders --- diff --git a/erp24/migrations/m250307_084838_add_columns_marketplace_name_to_marketplace_orders_table.php b/erp24/migrations/m250307_084838_add_columns_marketplace_name_to_marketplace_orders_table.php new file mode 100644 index 00000000..c166b9a0 --- /dev/null +++ b/erp24/migrations/m250307_084838_add_columns_marketplace_name_to_marketplace_orders_table.php @@ -0,0 +1,92 @@ +db->schema->getTableSchema(self::TABLE_NAME); + if ($table === null) { + return; + } + + if ($table->getColumn('marketplace_name') === null) { + $this->addColumn( + self::TABLE_NAME, + 'marketplace_name', + $this->string()->null()->comment('Наименование маркетплейса') + ); + } + if ($table->getColumn('marketplace_id') === null) { + $this->addColumn( + self::TABLE_NAME, + 'marketplace_id', + $this->integer()->null()->comment('ID маркетплейса') + ); + } + + $this->execute(" + UPDATE " . self::TABLE_NAME . " AS o + SET marketplace_id = ( + SELECT s.warehouse_id + FROM erp24.marketplace_store s + WHERE s.warehouse_guid::TEXT = o.warehouse_guid::TEXT + LIMIT 1 + ) + WHERE o.warehouse_guid IS NOT NULL; + "); + + $this->execute(" + UPDATE " . self::TABLE_NAME . " + SET marketplace_name = CASE + WHEN marketplace_id = 1 THEN 'ФлауВау' + WHEN marketplace_id = 2 THEN 'ЯндексМаркет' + ELSE marketplace_name + END; + "); + $this->alterColumn( + self::TABLE_NAME, + 'marketplace_id', + $this->integer()->notNull()->comment('ID маркетплейса') + ); + $this->alterColumn( + self::TABLE_NAME, + 'marketplace_name', + $this->string()->notNull()->comment('Наименование маркетплейса') + ); + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + if ($this->db->schema->getTableSchema(self::TABLE_NAME) === null) { + return; + } + + if ($this->db->schema->getTableSchema(self::TABLE_NAME)->getColumn('marketplace_name') !== null) { + $this->dropColumn(self::TABLE_NAME, 'marketplace_name'); + $this->dropColumn(self::TABLE_NAME, 'marketplace_id'); + } + } + /* + // Use up()/down() to run migration code without a transaction. + public function up() + { + + } + + public function down() + { + echo "m250307_084838_add_columns_marketplace_name_to_marketplace_orders_table cannot be reverted.\n"; + + return false; + } + */ +} diff --git a/erp24/records/MarketplaceOrders.php b/erp24/records/MarketplaceOrders.php index 0dc211cc..3ff02841 100644 --- a/erp24/records/MarketplaceOrders.php +++ b/erp24/records/MarketplaceOrders.php @@ -28,6 +28,8 @@ use Yii; * @property string|null $raw_data Полный сырой ответ API * @property string|null $guid GUID заказа в 1С * @property int|null $status_1c Статус заказа в 1С + * @property int|null $marketplace_name Наименование маркетплейса 'ФлауВау' 'ЯндексМаркет' + * @property int|null $marketplace_id ID маркетплейса: 1 - Flowwow, 2 - YandexMarket */ class MarketplaceOrders extends \yii\db\ActiveRecord { @@ -52,12 +54,12 @@ class MarketplaceOrders extends \yii\db\ActiveRecord [['store_id', 'warehouse_guid', 'returned_at', 'return_data', 'raw_data', 'guid'], 'default', 'value' => null], [['cancel_requested'], 'default', 'value' => 0], [['status_1c'], 'default', 'value' => 1], - [['marketplace_order_id', 'status_id', 'substatus_id', 'creation_date', 'updated_at', 'total', 'delivery_total', 'buyer_total_before_discount', 'tax_system', 'payment_type', 'payment_method'], 'required'], + [['marketplace_order_id', 'marketplace_id', 'marketplace_name', 'status_id', 'substatus_id', 'creation_date', 'updated_at', 'total', 'delivery_total', 'buyer_total_before_discount', 'tax_system', 'payment_type', 'payment_method'], 'required'], [['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c'], 'default', 'value' => null], [[ 'fake'], 'default', 'value' => 0], - [['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c'], 'integer'], + [['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c', 'marketplace_id'], 'integer'], [['creation_date', 'updated_at', 'returned_at'], 'safe'], - [['return_data', 'raw_data'], 'string'], + [['return_data', 'raw_data', 'marketplace_name'], 'string'], [['total', 'delivery_total', 'buyer_total_before_discount'], 'number'], [['marketplace_order_id'], 'string', 'max' => 64], [['warehouse_guid', 'guid'], 'string', 'max' => 36], @@ -93,6 +95,8 @@ class MarketplaceOrders extends \yii\db\ActiveRecord 'raw_data' => 'Полный сырой ответ API', 'guid' => 'GUID заказа в 1С', 'status_1c' => 'Статус заказа в 1С', + 'marketplace_name' => 'Наименование маркетплейса', + 'marketplace_id' => 'ID маркетплейса: 1 - Flowwow, 2 - YandexMarket', ]; } diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index adafe4b5..47b51311 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -986,6 +986,9 @@ class MarketplaceService $store = MarketplaceStore::findOne(['warehouse_guid' => $warehouseGuid]); $marketplaceOrder->store_id = $store ? $store->store_id : null; $marketplaceOrder->warehouse_guid = $warehouseGuid; + $marketplaceOrder->marketplace_id = $store->warehouse_id ?? 2; + $warehouseNames = MarketplaceStore::getWarehouseId(); + $marketplaceOrder->marketplace_name = $warehouseNames[$marketplaceOrder->marketplace_id]; } $marketplaceOrder->status_id = (int)$statusId;