From 4ff9f1fb923db1b02037a693efcf095c335c3a8a Mon Sep 17 00:00:00 2001 From: Vladimir Fomichev Date: Thu, 2 Oct 2025 16:43:01 +0300 Subject: [PATCH] =?utf8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5?= =?utf8?q?=D0=BC=20=D0=B8=20=D1=83=D0=B1=D0=B8=D1=80=D0=B0=D0=B5=D0=BC=20?= =?utf8?q?=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8=D1=82=D0=B5=D0=BB?= =?utf8?q?=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/services/MarketplaceService.php | 45 +++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index 34c00bac..0781b17c 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -635,7 +635,7 @@ class MarketplaceService 'description' => $product->description, 'imageUrl' => self::getProductImageUrl($product->image_id), 'date' => $product->date, - 'displayName' => $product->display_name, + 'displayName' => self::processDisplayName($product->display_name), 'externalImageUrl' => $product->external_image_url ?? self::getProductImageUrl($product->image_id), 'productUrl' => $product->product_url ?? self::getProductLinkByGuid($product->guid), 'flowwowCategory' => $product->flowwow_category, @@ -644,6 +644,46 @@ class MarketplaceService ]; } + private static function processDisplayName($displayName) + { + // Проверяем, есть ли артикул в скобках + if (preg_match('/\(([^)]+)\)/', $displayName, $matches)) { + $article = $matches[1]; + + // Разделяем артикул на буквенную и цифровую части и добавляем дефис + $processedArticle = preg_replace('/^([A-Za-z]+)([0-9]+)$/', '$1-$2', $article); + + // Заменяем старый артикул на новый в названии + $processedDisplayName = str_replace('(' . $article . ')', '(' . $processedArticle . ')', $displayName); + + return $processedDisplayName; + } + + // Если артикула в скобках нет, возвращаем оригинал + return $displayName; + } + + private static function normalizeArticleInName($name) + { + // Проверяем, есть ли артикул в скобках + if (preg_match('/\(([^)]+)\)/', $name, $matches)) { + $article = $matches[1]; + + // Если артикул содержит дефис, убираем его + if (strpos($article, '-') !== false) { + $normalizedArticle = str_replace('-', '', $article); + + // Заменяем артикул с дефисом на артикул без дефиса + $normalizedName = str_replace('(' . $article . ')', '(' . $normalizedArticle . ')', $name); + + return $normalizedName; + } + } + + // Если артикула в скобках нет или он уже без дефиса, возвращаем оригинал + return $name; + } + public static function getProductImageUrl($imageId) { $image = Images::findOne($imageId); @@ -2007,7 +2047,8 @@ class MarketplaceService // Извлекаем название и количество из второго $tds = $itemsRow->find('td'); if (count($tds) >= 2) { - $itemData['name'] = trim(str_replace("\u{00A0}", ' ', strip_tags(preg_replace('/\s+/', ' ', $tds[1]->find('p', 0)->innerText())))); + $rawName = trim(str_replace("\u{00A0}", ' ', strip_tags(preg_replace('/\s+/', ' ', $tds[1]->find('p', 0)->innerText())))); + $itemData['name'] = self::normalizeArticleInName($rawName); $itemData['count'] = trim(str_replace(["\u{00A0}", 'шт.'], '', strip_tags(preg_replace('/\s+/', '', $tds[1]->find('p', 1)->innerText())))); } // Извлекаем цену из третьего -- 2.39.5