]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
fix(ERP-248): use marketplace_store.partner_warehouse_id as fallback for DBS orders
authorAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Sat, 28 Feb 2026 21:15:10 +0000 (00:15 +0300)
committerAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Sat, 28 Feb 2026 21:15:10 +0000 (00:15 +0300)
Add partner_warehouse_id column to marketplace_store table for storing
the physical YM warehouse ID (e.g. 206008) separate from warehouse_guid
(campaign ID 142743530). Use it as fallback when getPartnerWarehouseId()
returns null for DBS orders instead of the incorrect warehouse_guid.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
erp24/migrations/m260301_100000_add_partner_warehouse_id_to_marketplace_store.php [new file with mode: 0644]
erp24/records/MarketplaceStore.php
erp24/services/MarketplaceService.php

diff --git a/erp24/migrations/m260301_100000_add_partner_warehouse_id_to_marketplace_store.php b/erp24/migrations/m260301_100000_add_partner_warehouse_id_to_marketplace_store.php
new file mode 100644 (file)
index 0000000..97a9a09
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Добавляет поле partner_warehouse_id в таблицу marketplace_store.
+ * Используется как fallback для физического ID склада YandexMarket (например, "206008"),
+ * когда API не возвращает partnerWarehouseId для DBS-заказов.
+ */
+class m260301_100000_add_partner_warehouse_id_to_marketplace_store extends Migration
+{
+    public function up()
+    {
+        $this->addColumn(
+            '{{%marketplace_store}}',
+            'partner_warehouse_id',
+            $this->string(64)->null()->comment('Физический ID склада маркетплейса (YM: partnerWarehouseId, например 206008)')
+        );
+    }
+
+    public function down()
+    {
+        $this->dropColumn('{{%marketplace_store}}', 'partner_warehouse_id');
+    }
+}
index 4a9b13d24d538915353c6c1b03ea75737af8f235..cba2331d3968087134c48d496b7740e491175dba 100644 (file)
@@ -23,6 +23,7 @@ use yii\db\Expression;
  * @property int $updated_by
  * @property string $account_email Почта привязанная к магазину
  * @property int $is_feed_active
+ * @property string|null $partner_warehouse_id Физический ID склада маркетплейса (YM: partnerWarehouseId)
  */
 class MarketplaceStore extends \yii\db\ActiveRecord
 {
@@ -45,7 +46,7 @@ class MarketplaceStore extends \yii\db\ActiveRecord
         return [
             [['store_id', 'guid', 'warehouse_id', 'warehouse_guid', 'firm'], 'required'],
             [['store_id'], 'exist', 'targetClass' => CityStore::class, 'targetAttribute' => 'id'],
-            [['name', 'guid', 'firm', 'warehouse_guid', 'account_email'], 'string'],
+            [['name', 'guid', 'firm', 'warehouse_guid', 'account_email', 'partner_warehouse_id'], 'string'],
             [['created_at', 'updated_at'], 'datetime', 'format' => 'php:Y-m-d H:i:s'],
             [['store_id', 'created_by', 'is_feed_active', 'updated_by', 'warehouse_id',], 'integer'],
             ['account_email', 'unique', 'message' => 'Этот email уже используется.'],
@@ -89,7 +90,8 @@ class MarketplaceStore extends \yii\db\ActiveRecord
             'updated_at' => 'Дата изменения записи',
             'updated_by' => 'Автор изменения записи',
             'account_email' => 'Почта привязанная к магазину',
-            'is_feed_active' => 'Активность фида'
+            'is_feed_active' => 'Активность фида',
+            'partner_warehouse_id' => 'Физический ID склада маркетплейса'
         ];
     }
 
index 8119a5507df69d53e6ddebf3773f944cd8550367..e8f6d5582f9690a67d35c98e3c41cb90cc46a200 100644 (file)
@@ -1443,7 +1443,7 @@ class MarketplaceService
                                     Yii::warning('getSubsidy() null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku() . ', subsidy из subsidies[]: ' . $subsidy, 'marketplace');
                                 }
                                 $orderItem->subsidy = $subsidy;
-                                $partnerWarehouseId = $item->getPartnerWarehouseId() ?? $marketplaceOrder->warehouse_guid;
+                                $partnerWarehouseId = $item->getPartnerWarehouseId() ?? ($store ? $store->partner_warehouse_id : null);
                                 if ($partnerWarehouseId === null) {
                                     Yii::error('getPartnerWarehouseId() вернул null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku(), 'marketplace');
                                     continue;
@@ -1689,7 +1689,7 @@ class MarketplaceService
                                     Yii::warning('getSubsidy() null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku() . ', subsidy из subsidies[]: ' . $subsidy, 'marketplace');
                                 }
                                 $orderItem->subsidy = $subsidy;
-                                $partnerWarehouseId = $item->getPartnerWarehouseId() ?? $marketplaceOrder->warehouse_guid;
+                                $partnerWarehouseId = $item->getPartnerWarehouseId() ?? ($store ? $store->partner_warehouse_id : null);
                                 if ($partnerWarehouseId === null) {
                                     Yii::error('getPartnerWarehouseId() вернул null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku(), 'marketplace');
                                     continue;
@@ -1732,7 +1732,7 @@ class MarketplaceService
                                     Yii::warning('getSubsidy() null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku() . ', subsidy из subsidies[]: ' . $subsidy, 'marketplace');
                                 }
                                 $orderItem->subsidy = $subsidy;
-                                $partnerWarehouseId = $item->getPartnerWarehouseId() ?? $marketplaceOrder->warehouse_guid;
+                                $partnerWarehouseId = $item->getPartnerWarehouseId() ?? ($store ? $store->partner_warehouse_id : null);
                                 if ($partnerWarehouseId === null) {
                                     Yii::error('getPartnerWarehouseId() вернул null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku(), 'marketplace');
                                     continue;
@@ -1767,7 +1767,7 @@ class MarketplaceService
                                         }
                                         Yii::warning('getSubsidy() null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku() . ', subsidy из subsidies[]: ' . $subsidy, 'marketplace');
                                     }
-                                    $partnerWarehouseId = $item->getPartnerWarehouseId() ?? $marketplaceOrder->warehouse_guid;
+                                    $partnerWarehouseId = $item->getPartnerWarehouseId() ?? ($store ? $store->partner_warehouse_id : null);
                                     if ($partnerWarehouseId === null) {
                                         Yii::error('getPartnerWarehouseId() вернул null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku(), 'marketplace');
                                         continue;
@@ -1825,7 +1825,7 @@ class MarketplaceService
                                         Yii::warning('getSubsidy() null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku() . ', subsidy из subsidies[]: ' . $subsidy, 'marketplace');
                                     }
                                     $orderItem->subsidy = $subsidy;
-                                    $partnerWarehouseId = $item->getPartnerWarehouseId() ?? $marketplaceOrder->warehouse_guid;
+                                    $partnerWarehouseId = $item->getPartnerWarehouseId() ?? ($store ? $store->partner_warehouse_id : null);
                                     if ($partnerWarehouseId === null) {
                                         Yii::error('getPartnerWarehouseId() вернул null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku(), 'marketplace');
                                         continue;
@@ -2014,7 +2014,7 @@ class MarketplaceService
                                         Yii::warning('getSubsidy() null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku() . ', subsidy из subsidies[]: ' . $subsidy, 'marketplace');
                                     }
                                     $orderItem->subsidy = $subsidy;
-                                    $partnerWarehouseId = $item->getPartnerWarehouseId() ?? $marketplaceOrder->warehouse_guid;
+                                    $partnerWarehouseId = $item->getPartnerWarehouseId() ?? ($store ? $store->partner_warehouse_id : null);
                                     if ($partnerWarehouseId === null) {
                                         Yii::error('getPartnerWarehouseId() вернул null для orderId=' . $marketplaceOrder->id . ', shopSku=' . $item->getShopSku(), 'marketplace');
                                         continue;