В интернет-магазине при расчете стоимости доставки возникала серьезная проблема: для каждого товара в каталоге были указаны габариты (длина, ширина, высота), но при заказе нескольких товаров операторы и система не могли корректно определить итоговые габариты посылки .
Проблемы, с которыми сталкивались:
- При заказе 3-4 товаров разного размера непонятно, как их упаковать — в одну коробку или несколько
- Разные ТК предъявляют разные требования к расчету объемного веса (формулы /5000, /4000 и т.д.)
- Простое суммирование габаритов или вычисление "средней коробки" по формуле кубического корня давало некорректные результаты и расходилось с реальностью
- Операторы тратили время на ручной подбор коробок
- Клиентам приходила неправильная стоимость доставки, что приводило к спорам и убыткам
Требовалось создать систему, которая:
- Автоматически вычисляет минимально возможные габариты коробки для всего заказа
- Учитывает физические законы упаковки (товары можно поворачивать, ставить друг на друга)
- Поддерживает разные алгоритмы для разных ТК (СДЭК, Почта, Boxberry)
- Рассчитывает объемный вес по формулам каждой ТК
- Позволяет оператору видеть и корректировать результат на странице заказа
- Интегрируется с существующей системой расчета доставки
Создал комплексный компонент для расчета упаковки:
/local/php_interface/include/packaging/
├── PackageCalculator.php # Основной класс расчета упаковки
├── algorithms/
│ ├── SimpleStacking.php # Простая укладка стопкой
│ ├── AdvancedPacker.php # 3D-упаковка с оптимизацией
│ └── MultiBoxDetector.php # Определение необходимости нескольких коробок
├── TKRules/
│ ├── SdekRules.php # Правила для СДЭК (объемный вес /5000)
│ ├── RussianPostRules.php # Правила для Почты России
│ ├── BoxberryRules.php # Правила для Boxberry
│ └── DellinRules.php # Правила для Деловых линий
├── PackagingAdmin.php # Интерфейс в админке
└── events.php # Регистрация событий
Для расчета габаритов разработал алгоритм, который учитывает все возможные варианты укладки товаров.
Для бизнеса
✅ Точный расчет доставки — стоимость соответствует реальным габаритам посылки
✅ Экономия на упаковке — оптимальный подбор коробок снижает расход материалов
✅ Исключение споров — клиенты получают корректную стоимость при заказе
✅ Автоматизация — операторам не нужно вручную подбирать коробки
Для операторов
✅ Наглядная информация — на странице заказа видно, в какую коробку упаковывать
✅ Выбор по ТК — разные варианты для разных служб доставки
✅ Предупреждение о нескольких коробках — если заказ нужно разделить
✅ Экономия времени — 30 секунд вместо 5 минут ручного подбора
Технические результаты
✅ Поддержка разных алгоритмов упаковки (от простого до 3D-оптимизации)
✅ Интеграция с правилами всех основных ТК (СДЭК, Почта, Boxberry, Деловые линии)
✅ Автоматическое определение необходимости нескольких коробок
✅ Расчет объемного веса по формулам каждой ТК
✅ Интеграция на страницу заказа в админке
✅ Возможность ручной корректировки оператором