From 9508589c0ea6f6103d5bfac95ed816155ff86443 Mon Sep 17 00:00:00 2001 From: Vladimir Fomichev Date: Thu, 18 Dec 2025 11:49:39 +0300 Subject: [PATCH] =?utf8?q?=D0=9E=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?utf8?q?=D0=B0=20=D0=BF=D0=B8=D1=81=D1=8C=D0=BC=D0=B0=20-=20=D0=B4=D0=BE?= =?utf8?q?=D1=81=D1=82=D0=B0=D0=B2=D0=BA=D0=B0/=D1=81=D0=B0=D0=BC=D0=BE?= =?utf8?q?=D0=B2=D1=8B=D0=B2=D0=BE=D0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/services/MarketplaceService.php | 39 +++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index 049c876b..5b412387 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -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 = []; -- 2.39.5