]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Логика проставления номера заказа из тела письма
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 19 Feb 2026 07:43:19 +0000 (10:43 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 19 Feb 2026 07:43:19 +0000 (10:43 +0300)
erp24/controllers/MarketplaceFlowwowEmailsController.php

index 5055a96eed28d315dc4de9add1cea30cb42f0dc5..2f940349736b39b812b1dc1c1441718bc1cdd859 100644 (file)
@@ -9,6 +9,7 @@ use yii_app\records\MarketplaceFlowwowEmailsSearch;
 use yii\web\Controller;
 use yii\web\NotFoundHttpException;
 use yii\filters\VerbFilter;
+use yii_app\services\MarketplaceService;
 
 /**
  * MarketplaceFlowwowEmailsController implements the CRUD actions for MarketplaceFlowwowEmails model.
@@ -80,8 +81,32 @@ class MarketplaceFlowwowEmailsController extends Controller
 
         $updated = 0;
         foreach ($emails as $email) {
+            $orderNumber = null;
+
+            // Сначала пробуем из темы (для: "Изменения в заказе №X", "Заказ №X принят!")
             if (preg_match('/№(\d+)/', $email->subject, $matches)) {
-                $email->marketplace_order_id = $matches[1];
+                $orderNumber = $matches[1];
+            }
+
+            // Fallback: парсим h1 из тела письма (для: "Новый оплаченный заказ", "Доставлен")
+            if (empty($orderNumber) && !empty($email->body)) {
+                $message = [
+                    'subject'       => $email->subject,
+                    'subject_index' => $email->subject_type,
+                    'from'          => $email->from,
+                    'to'            => $email->to,
+                    'date'          => $email->date,
+                    'body'          => $email->body,
+                ];
+                $orderData = MarketplaceService::getOrdersDataFromMessage($message);
+                $key = !empty($orderData) ? key($orderData) : null;
+                if (!empty($key)) {
+                    $orderNumber = (string)$key;
+                }
+            }
+
+            if (!empty($orderNumber)) {
+                $email->marketplace_order_id = $orderNumber;
                 if ($email->save(false, ['marketplace_order_id'])) {
                     $updated++;
                 }