From: Aleksey Filippov Date: Sat, 28 Feb 2026 21:15:10 +0000 (+0300) Subject: fix(ERP-248): use marketplace_store.partner_warehouse_id as fallback for DBS orders X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=36fce1a0ca6960bf8ffaf2b62792f4e571f85109;p=erp24_rep%2Fyii-erp24%2F.git fix(ERP-248): use marketplace_store.partner_warehouse_id as fallback for DBS orders 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 --- 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 index 00000000..97a9a097 --- /dev/null +++ b/erp24/migrations/m260301_100000_add_partner_warehouse_id_to_marketplace_store.php @@ -0,0 +1,25 @@ +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'); + } +} diff --git a/erp24/records/MarketplaceStore.php b/erp24/records/MarketplaceStore.php index 4a9b13d2..cba2331d 100644 --- a/erp24/records/MarketplaceStore.php +++ b/erp24/records/MarketplaceStore.php @@ -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 склада маркетплейса' ]; } diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index 8119a550..e8f6d558 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -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;