]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Обработка письма - доставка/самовывоз
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 18 Dec 2025 08:49:39 +0000 (11:49 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 18 Dec 2025 08:49:39 +0000 (11:49 +0300)
erp24/services/MarketplaceService.php

index 049c876bc0d6dfe98fcb740e3cbabc9fa7f388c2..5b412387417f4a301834e262da1ddb16da3589ee 100644 (file)
@@ -2171,13 +2171,42 @@ class MarketplaceService
             $orderDetails['orderLink'] = $link;
         }
 
-        $deliveryLabel = $main->findOne('p:contains("Доставить")');
-        $pickupLabel = $main->findOne('p:contains("Самовывоз")');
+        // Ищем метку доставки/самовывоза с более гибкими селекторами
+        // Используем findOneOrFalse для корректной обработки отсутствия элемента
+        $deliveryLabel = $main->findOneOrFalse('p:contains("Доставить")');
+        $pickupLabel = $main->findOneOrFalse('p:contains("Самовывоз")');
+        
+        // Если не нашли через p, пробуем искать в других распространенных элементах (для невалидного HTML)
+        // Используем конкретные селекторы вместо *, чтобы избежать deprecation warning в PHP 8.1+
+        if ($deliveryLabel === false) {
+            $deliveryLabel = $main->findOneOrFalse('div:contains("Доставить")');
+            if ($deliveryLabel === false) {
+                $deliveryLabel = $main->findOneOrFalse('span:contains("Доставить")');
+            }
+            if ($deliveryLabel === false) {
+                $deliveryLabel = $main->findOneOrFalse('td:contains("Доставить")');
+            }
+        }
+        
+        if ($pickupLabel === false) {
+            $pickupLabel = $main->findOneOrFalse('div:contains("Самовывоз")');
+            if ($pickupLabel === false) {
+                $pickupLabel = $main->findOneOrFalse('span:contains("Самовывоз")');
+            }
+            if ($pickupLabel === false) {
+                $pickupLabel = $main->findOneOrFalse('td:contains("Самовывоз")');
+            }
+        }
 
-        $targetLabel = $deliveryLabel ?? $pickupLabel;
-        $labelPrefix = $deliveryLabel ? 'Доставка:' : ($pickupLabel ? 'Самовывоз:' : null);
+        $targetLabel = $deliveryLabel !== false ? $deliveryLabel : ($pickupLabel !== false ? $pickupLabel : null);
+        $labelPrefix = $deliveryLabel !== false ? 'Доставка:' : ($pickupLabel !== false ? 'Самовывоз:' : null);
+        
+        // Логируем для отладки, если не найдено ни одного варианта
+        if ($targetLabel === null) {
+            Yii::warning('Не найдена метка доставки или самовывоза в HTML письма', __METHOD__);
+        }
 
-        if ($targetLabel && $targetLabel->nextNonWhitespaceSibling()) {
+        if ($targetLabel !== null && $targetLabel->nextNonWhitespaceSibling()) {
             $infoBlock = $targetLabel->nextNonWhitespaceSibling();
             $textParts = [];