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.
$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++;
}