Бобер Боб
Платформа складского учёта
Платформа складского учёта · Release notes · v1.2.5

История версий — v1.2.5

На платформу загружены реальные данные клиента из первоисточника «2026-07-15 Продажи и остатки 1 фура.xlsx» (листы «До 01.06», «После 01.06» и «ББ_склад»): 55 товаров, 19 паллет, 35 строк остатков и 222 движения (62 прихода по двум поставкам, 160 расходов по покупателям — «кто заказал»). На странице товара (клик по товару, например /admin/products/48) теперь видно, откуда взяты данные (файл-первоисточник, лист, строка) и движение товара: поставки и заказы с датами, покупателями и суммами. Цены на страницах товаров и движений переведены из BYN в рублёвые ₽ (в файле клиента цены в рублях). Импорт идемпотентен: повторный запуск не дублирует данные.

patch Выпущена 23.09.2026
v1.2.5 patch от 23.09.2026

Задание 117. Реальные данные клиента загружены: страница товара показывает источник и движение

Импорт из первоисточника клиента

  • app/Services/ImportSkladService.php - новый сервис импорта xlsx (листы продаж и складского остатка) с нормализацией ключей товаров: «Жареные бобы соль (1 кг)» ↔ «бобы соль 1», сопоставлением с каталогом, созданием новых товаров только при реальном несовпадении
  • app/Console/Commands/ImportSkladCommand.php - artisan bober:import-sklad {--file=}: идемпотентный (движения с меткой file:2026-07-15 пересоздаются, товары обновляются, а не дублируются), с отчётом в консоли
  • Лист «27-07-2026 Move» - демо-данные бота не загружаются; мусорная AI-строка с количеством 12 345 678 и служебные строки-итоги пропускаются
  • Паллеты и остатки - 19 уникальных паллет («9 нов», «18 стар» и т.п., статус по тексту), остатки агрегируются по товару (например, «Бобы соль 1» = 251 упаковка из нескольких паллет)
  • Движения - 222: поставки периода 1 и 2 (60 и 150+ упаковок с ценами из файла) и расходы по покупателям (Меликишвили, Лебедев, Афина, Гуднат, ИП Меликишвили и др.) с датами 01.06.2026 и 15.07.2026

Страница товара

  • Источник данных - infolist-секция на странице товара (/admin/products/{id}): Файл-источник, Лист в файле, Строка в файле + примечание (данные из актуального файла клиента, цены в ₽)
  • Движение товара - RepeatableEntry-таблица: Дата, Событие (Поставка / Заказ), Покупатель/документ, Кол-во шт, Сумма ₽; до 200 последних движений
  • Валюта BYN→RUB - цены на страницах товаров (ProductResource, клиентский ProductResource), движений (MovementResource) и валюта по умолчанию в настройках переведены в рублёвые ₽

Версия

  • config/app.php - 1.2.4 → 1.2.5
  • config/instances.php - agent version 1.2.4 → 1.2.5
  • resources/json/versions.json - добавлена запись 1.2.5

Тесты

  • tests/Feature/ImportSkladTask117Test.php - 5 тестов: нормализация ключей, привязка строк продаж к каталогу, создание нового товара с ценой из файла, идемпотентность повторного импорта, страница товара (источник + движение)
← Ко всем версиям