]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Альтернативный вариант - Переделка логики feature_fomichev_erp-371_FW_status_from_email_2
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 24 Mar 2025 14:46:17 +0000 (17:46 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 24 Mar 2025 14:46:17 +0000 (17:46 +0300)
erp24/commands/MarketplaceController.php
erp24/controllers/MarketplaceOrdersController.php
erp24/services/MarketplaceService.php

index 11d0ec3cfe3703a46b6d2fc8adbb9e40166e07db..8dba11d4dbcf6b579b8a1e8effe3a47d9111668c 100644 (file)
@@ -107,10 +107,17 @@ class MarketplaceController extends Controller
             $this->stdout($message . "\n", BaseConsole::FG_YELLOW);
         };
 
-        $messages = MarketplaceService::getFlowwowOrdersFromMail($date, $since, $oldMail, $progressCallback, $seen, $unseen);
+        $messages = MarketplaceService::getFlowwowOrdersFromMail(
+            $date,
+            $since,
+            $oldMail,
+            $progressCallback,
+            $seen,
+            $unseen
+        );
 
-        $countMessages = count($messages);
-        $count = MarketplaceService::processMessages($messages);
+        $countMessages = $messages['all'];
+        $count = $messages['processed'];
 
         $this->stdout(
             "Удалось сохранить {$count} новых заказов из {$countMessages} сообщений почты.\n",
index 68dcad2742326e349ff92b3f7328f05abd901f79..d35becc2d6b87e097bedeea5a9a5a357d1a04dd0 100644 (file)
@@ -128,8 +128,8 @@ class MarketplaceOrdersController extends Controller
                 (bool) $model->unseen
             );
 
-            $countMessages = count($messages);
-            $count = MarketplaceService::processMessages($messages);
+            $countMessages = $messages['all'];
+            $count = $messages['processed'];
             $result = "Удалось сохранить {$count} новых заказов из {$countMessages} сообщений почты.";
         }
 
index c6d3e58d233f14eb23864dd5862a247d1deb7a5b..d176564121cd2bf2a316360e0728e5f3aca50671 100644 (file)
@@ -1422,8 +1422,8 @@ class MarketplaceService
         $folders = imap_list($inbox, $hostname, '*');
         imap_close($inbox);
 
-        $messages = [];
-
+        $countAllMessages = 0;
+        $countProcessedMessages = 0;
         foreach ($folders as $folder) {
             if ($folder == '{imap.yandex.ru:993/imap/ssl}Drafts') {
                 continue;
@@ -1448,6 +1448,7 @@ class MarketplaceService
                     call_user_func($progressCallback, "Найдено " . count($emails) . " писем.");
                 }
                 foreach ($emails as $index => $email_number) {
+                    $countAllMessages += 1;
                     $overview = imap_fetch_overview($inbox, $email_number, 0);
                     $structure = imap_fetchstructure($inbox, $email_number);
                     $htmlMessage = '';
@@ -1487,7 +1488,7 @@ class MarketplaceService
                                 $savedEmail->email_status = 1;
                                 $savedEmail->save();
                             }
-                            $messages[] = [
+                            $message = [
                                 'subject' => $subject,
                                 'subject_index' => $subjectIndex,
                                 'from' => $from,
@@ -1495,6 +1496,8 @@ class MarketplaceService
                                 'date' => $date,
                                 'body' => $htmlMessage,
                             ];
+                            $countProcessedMessages += MarketplaceService::processMessage($message);
+
 
                             if ($unseen) {
                                 self::imap_debug_log("Установка флага SEEN для сообшения #" . $email_number, $debugMode, $progressCallback);
@@ -1535,9 +1538,8 @@ class MarketplaceService
 
         }
 
-        //usort($messages, fn($a, $b) => $a['subject_index'] <=> $b['subject_index']);
-        usort($messages, fn($a, $b) => strtotime($a['date']) <=> strtotime($b['date']));
-        return $messages;
+
+        return ['processed' => $countProcessedMessages, 'all' => $countAllMessages];
     }
 
     public static function saveEmailIfNotExists($subject, $subjectPattern, $from, $to, $date, $body)
@@ -1629,6 +1631,36 @@ class MarketplaceService
         return $count;
     }
 
+    public static function processMessage($message)
+    {
+        $count = 0;
+        if ($message) {
+                $store = MarketplaceStore::getWarehouseGuidByAccountEmail($message['to']) ?? 206008;
+
+                $order = self::getOrdersDataFromMessage($message);
+
+                if ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_NEW]) {
+                    $statusCode = 'PROCESSING';
+                    $substatusCode = 'STARTED';
+                } elseif ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_APPROVED]) {
+                    $statusCode = 'PROCESSING';
+                    $substatusCode = 'APPROVED';
+                } elseif ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_CANCELLED]) {
+                    $statusCode = 'CANCELLED';
+                    $substatusCode = 'USER_CHANGED_MIND';
+                } elseif ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_CHANGED]) {
+                    $statusCode = 'PROCESSING';
+                    $substatusCode = 'CHANGED';
+                } elseif ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_DELIVERED]) {
+                    $statusCode = 'DELIVERED';
+                    $substatusCode = 'DELIVERY_SERVICE_DELIVERED';
+                }
+                $count = self::processFlowwowOrders($order, $store, $statusCode, $substatusCode, $message['subject_index']);
+
+        }
+        return $count;
+    }
+
     public static function getOrdersDataFromMessage($message)
     {
         $html = $message['body'];