From 64a2570381161726812e741adc69105d781b70f6 Mon Sep 17 00:00:00 2001 From: fomichev Date: Fri, 21 Mar 2025 09:38:44 +0300 Subject: [PATCH] =?utf8?q?=D0=A7=D0=B8=D1=81=D1=82=D0=BA=D0=B0=20=D0=BA?= =?utf8?q?=D0=BE=D0=B4=D0=B0=20=D0=B8=20=D1=80=D0=B5=D1=84=D0=B0=D0=BA?= =?utf8?q?=D1=82=D0=BE=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/services/MarketplaceService.php | 34 +++++++++++++-------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index 8535f5fb..31af7280 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -1141,7 +1141,10 @@ class MarketplaceService $marketplaceOrder->save(); $updatedOrdersCount += 1; // Обновление истории статусов, если изменился статус - $statusHistoryRecord = MarketplaceOrderStatusHistory::find()->where(['order_id' => $marketplaceOrder->id])->one(); + $statusHistoryRecord = MarketplaceOrderStatusHistory::find() + ->where(['order_id' => $marketplaceOrder->id]) + ->andWhere(['active' => 1]) + ->one(); if ( $statusHistoryRecord && ($statusHistoryRecord->status_id !== (int)$statusId || @@ -1341,8 +1344,13 @@ class MarketplaceService } } - public static function getFlowwowOrdersFromMail($date = null, $useSince = false, $useAlternateMailbox = false, $progressCallback = null, $seen = false) - { + public static function getFlowwowOrdersFromMail( + $date = null, + $useSince = false, + $useAlternateMailbox = false, + $progressCallback = null, + $seen = false + ) { set_time_limit(300); // Устанавливаем таймауты IMAP imap_timeout(IMAP_OPENTIMEOUT, 120); @@ -1353,7 +1361,6 @@ class MarketplaceService $searchCriteria = ''; $searchCriteria .= ($useSince ? 'SINCE ' : 'ON '); - if (!$date) { $date = date('d-M-Y'); $searchCriteria .= '"' . $date . '" '; @@ -1468,9 +1475,9 @@ class MarketplaceService if ($messages) { foreach ($messages as $message) { $store = MarketplaceStore::getWarehouseGuidByAccountEmail($message['to']) ?? 206008; - // Yii::warning('Message' . json_encode($message, JSON_UNESCAPED_UNICODE)); + $order = self::getOrdersDataFromMessage($message); - Yii::warning('Order' . json_encode($order, JSON_UNESCAPED_UNICODE)); + if ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_NEW]) { $statusCode = 'PROCESSING'; $substatusCode = 'STARTED'; @@ -1486,9 +1493,6 @@ class MarketplaceService } elseif ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_DELIVERED]) { $statusCode = 'DELIVERED'; $substatusCode = 'DELIVERY_SERVICE_DELIVERED'; - } else { - $statusCode = 'PROCESSING'; - $substatusCode = 'STARTED'; } $count += self::processFlowwowOrders($order, $store, $statusCode, $substatusCode, $message['subject_index']); } @@ -1496,9 +1500,9 @@ class MarketplaceService return $count; } - public static function getOrdersDataFromMessage($message) { + public static function getOrdersDataFromMessage($message) + { $html = $message['body']; - // Yii::warning('Message body' . $html); $orderDetails = null; $order = null; if (!empty($html)) { @@ -1507,10 +1511,6 @@ class MarketplaceService // Декодируем HTML-сущности $html = html_entity_decode($html, ENT_COMPAT, 'UTF-8'); - // Удаляем лишние пробелы и переносы строк - // $html = preg_replace('/\s+/', ' ', $html); - // Yii::warning('Message body' . $html); - $doc = new HtmlDomParser($html); $orderNumber = ''; $main = $doc->findOneOrFalse("body"); @@ -1525,11 +1525,9 @@ class MarketplaceService $orderDetails['number'] = $orderNumber; $orderDetails['date'] = $message['date']; $deliveryText = ''; - $commentText = ''; $clientText = ''; - $recipientText = ''; $orderItems = []; - $orderLink = ''; + $linkBlock = $main->findOneOrFalse('a:contains("Перейти в заказ ")'); if ($linkBlock) { -- 2.39.5