From: Vladimir Fomichev Date: Thu, 19 Feb 2026 07:43:19 +0000 (+0300) Subject: Логика проставления номера заказа из тела письма X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=0262d844507b59bc7a1f2ef070df42e9951c53ad;p=erp24_rep%2Fyii-erp24%2F.git Логика проставления номера заказа из тела письма --- 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++; }