From: Vladimir Fomichev Date: Thu, 18 Dec 2025 08:49:39 +0000 (+0300) Subject: Обработка письма - доставка/самовывоз X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=9508589c0ea6f6103d5bfac95ed816155ff86443;p=erp24_rep%2Fyii-erp24%2F.git Обработка письма - доставка/самовывоз --- 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 = [];