From: Aleksey Filippov Date: Sat, 7 Mar 2026 17:18:17 +0000 (+0300) Subject: fix(marketplace): aggregate missing MarketplaceStore errors before Telegram send X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=dd267b0e828b4a94ad7c30ac2f6572ae1f611395;p=erp24_rep%2Fyii-erp24%2F.git fix(marketplace): aggregate missing MarketplaceStore errors before Telegram send Instead of sending one Telegram message per order with missing store inside processOrders() loop, collect unique warehouse GUIDs and send a single aggregated message after the loop to avoid Telegram 429. --- diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index 6ce5f509..e0df763f 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -1178,6 +1178,7 @@ class MarketplaceService $statusCodes = array_unique(array_keys($statuses)); $newOrdersCount = 0; $updatedOrdersCount = 0; + $missingStoreErrors = []; foreach ($allOrders as $campaignId => $orders) { foreach ($orders as $order) { @@ -1251,10 +1252,7 @@ class MarketplaceService $marketplaceOrder->fake = (int)$order->getFake(); if ($warehouseGuid) { if (!$store) { - $errorMessage = "Ошибка! Отсутствует запись MarketplaceStore для магазина {$warehouseGuid} ЯМ"; - $errorMessage = TelegramService::escapeMarkdown($errorMessage); - $isDev = TelegramService::isDevEnv(); - TelegramService::sendErrorToTelegramMessage($errorMessage, false, $isDev); + $missingStoreErrors[$warehouseGuid] = $warehouseGuid; } $marketplaceOrder->store_id = $store ? $store->store_id : null; $marketplaceOrder->warehouse_guid = $warehouseGuid; @@ -2071,6 +2069,15 @@ class MarketplaceService } } } + + if (!empty($missingStoreErrors)) { + $isDev = TelegramService::isDevEnv(); + $guids = implode(', ', array_keys($missingStoreErrors)); + $errorMessage = "Ошибка! Отсутствуют записи MarketplaceStore ЯМ для складов: {$guids}"; + $errorMessage = TelegramService::escapeMarkdown($errorMessage); + TelegramService::sendErrorToTelegramMessage($errorMessage, false, $isDev); + } + return ['newOrders' => $newOrdersCount, 'updateOrders' => $updatedOrdersCount]; }