]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
fix: widen delivery text cleanup regex, cap house to 16 chars origin/feature_filippov_20260303_fix_delivery_house_length
authorAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Tue, 3 Mar 2026 19:42:33 +0000 (22:42 +0300)
committerAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Tue, 3 Mar 2026 19:42:33 +0000 (22:42 +0300)
- Change regex from matching only "Уточните адрес доставки" to
  "Уточните \S+ доставки" to catch "время", "дату", etc.
- Add mb_substr guard: house field capped at 16 characters (DB limit)
- Fixes: "house should contain at most 16 characters" validation error

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
erp24/services/MarketplaceService.php

index a0c2b06803cd4f3d03314f8c31a608158696c914..f91b4a0325cd77a6fe43ed3ca37e2eb4a8fcc3cf 100644 (file)
@@ -3399,7 +3399,7 @@ class MarketplaceService
         $cleaned = preg_replace('/[вс]\s+\d{1,2}:\d{2}(?:—\d{1,2}:\d{2})?\s*/u', '', $cleaned);
 
         // Убираем служебные фразы, которые не являются адресом
-        $cleaned = preg_replace('/Уточните\s+адрес\s+доставки\s+у\s+получателя/ui', '', $cleaned);
+        $cleaned = preg_replace('/Уточните\s+\S+\s+доставки\s+у\s+получателя/ui', '', $cleaned);
         $cleaned = preg_replace('/Отправим\s+смс\s+получателю.*$/ui', '', $cleaned);
         $cleaned = preg_replace('/Пожалуйста.*сохранить\s+сюрприз/ui', '', $cleaned);
         $cleaned = preg_replace('/чтобы\s+узнать\s+данные\s+для\s+доставки/ui', '', $cleaned);
@@ -3429,6 +3429,11 @@ class MarketplaceService
             $city = $parts[0];
         }
 
+        // Защита: house не может быть длиннее 16 символов (ограничение БД)
+        if (mb_strlen($house) > 16) {
+            $house = mb_substr($house, 0, 16);
+        }
+
         switch (mb_strtolower($city)) {
             case 'нижний новгород':
                 $latitude = 56.3269;