From 0262d844507b59bc7a1f2ef070df42e9951c53ad Mon Sep 17 00:00:00 2001 From: Vladimir Fomichev Date: Thu, 19 Feb 2026 10:43:19 +0300 Subject: [PATCH] =?utf8?q?=D0=9B=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20=D0=BF?= =?utf8?q?=D1=80=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?utf8?q?=D1=8F=20=D0=BD=D0=BE=D0=BC=D0=B5=D1=80=D0=B0=20=D0=B7=D0=B0?= =?utf8?q?=D0=BA=D0=B0=D0=B7=D0=B0=20=D0=B8=D0=B7=20=D1=82=D0=B5=D0=BB?= =?utf8?q?=D0=B0=20=D0=BF=D0=B8=D1=81=D1=8C=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../MarketplaceFlowwowEmailsController.php | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/erp24/controllers/MarketplaceFlowwowEmailsController.php b/erp24/controllers/MarketplaceFlowwowEmailsController.php index 5055a96e..2f940349 100644 --- a/erp24/controllers/MarketplaceFlowwowEmailsController.php +++ b/erp24/controllers/MarketplaceFlowwowEmailsController.php @@ -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++; } -- 2.39.5