SPARE_PARTS_ENHANCEMENTS.md 6.4 KB

Улучшения модуля запчастей

Реализованные изменения

1. Фильтры в таблицах запчастей

  • ✅ Все таблицы в разделе запчастей (каталог, заказы, инвентаризация) теперь используют partials/table.blade.php
  • ✅ Добавлены полноценные фильтры по колонкам
  • ✅ Добавлен поиск по тексту
  • ✅ Добавлены настройки отображения колонок
  • ✅ Добавлена сортировка

2. Справочник расценок

  • ✅ Создана миграция 2026_01_24_120000_update_pricing_codes_table_add_type_field.php для добавления поля type
  • ✅ Обновлена модель PricingCode с методами:
    • getTsnDescription() - получение расшифровки № по ТСН
    • getPricingCodeDescription() - получение расшифровки шифра расценки
    • createOrUpdate() - создание или обновление записи справочника
  • ✅ Добавлены аксессоры в модель SparePart:
    • tsn_number_description - расшифровка № по ТСН
    • pricing_code_description - расшифровка шифра расценки

3. Tooltips для расценок

  • ✅ При наведении на поля tsn_number и pricing_code в таблице показывается расшифровка
  • ✅ Используется Bootstrap tooltips
  • ✅ Подсветка полей с расшифровкой (dotted underline)

4. Автозаполнение в форме запчастей

  • ✅ При вводе № по ТСН автоматически подтягивается расшифровка из справочника
  • ✅ При вводе шифра расценки автоматически подтягивается расшифровка
  • ✅ Если расшифровка не найдена, появляется поле для ввода новой расшифровки
  • ✅ Новая расшифровка сохраняется в справочник при сохранении запчасти
  • ✅ Визуальная индикация (иконки и цвета):
    • Зелёная иконка - расшифровка найдена
    • Жёлтая иконка - расшифровка не найдена
  • ✅ API endpoint /pricing-codes/get-description для получения расшифровок

5. Экспорт и импорт справочника расценок

  • ✅ Обновлён ExportSparePartsService для экспорта справочника на отдельной вкладке "Справочник расценок"
  • ✅ Создан ImportSparePartsService для импорта каталога и справочника
  • ✅ Создан ImportSparePartsJob для асинхронного импорта
  • ✅ Добавлен метод import() в SparePartController
  • ✅ Добавлен роут /spare-parts/import
  • ✅ Добавлена кнопка "Импорт" и модальное окно в интерфейсе

Структура файла экспорта

Вкладка 1: Каталог запчастей

Колонки:

  • A: ID
  • B: Артикул
  • C: Где используется
  • D: Кол-во без док
  • E: Кол-во с док
  • F: Кол-во общее
  • G: Примечание
  • H: Цена закупки
  • I: Цена для заказчика
  • J: Цена экспертизы
  • K: № по ТСН
  • L: Шифр расценки
  • M: Минимальный остаток

Вкладка 2: Справочник расценок

Колонки:

  • A: ID
  • B: Тип (№ по ТСН / Шифр расценки)
  • C: Код
  • D: Расшифровка

Файлы с изменениями

Модели

  • app/Models/PricingCode.php - обновлён
  • app/Models/SparePart.php - добавлены аксессоры для расшифровок

Миграции

  • database/migrations/2026_01_24_120000_update_pricing_codes_table_add_type_field.php - новая

Контроллеры

  • app/Http/Controllers/SparePartController.php - добавлен метод import()
  • app/Http/Controllers/SparePartOrderController.php - добавлен routeName
  • app/Http/Controllers/PricingCodeController.php - добавлен метод getDescription()

Requests

  • app/Http/Requests/StoreSparePartRequest.php - добавлена обработка расшифровок

Services

  • app/Services/Export/ExportSparePartsService.php - добавлен экспорт справочника
  • app/Services/Import/ImportSparePartsService.php - новый

Jobs

  • app/Jobs/Import/ImportSparePartsJob.php - новый

Views

  • resources/views/spare_parts/index.blade.php - использование partials/table, добавлена кнопка импорта
  • resources/views/spare_parts/edit.blade.php - добавлено автозаполнение расшифровок
  • resources/views/partials/table.blade.php - добавлены tooltips для tsn_number и pricing_code

Routes

  • routes/web.php - добавлен роут для импорта и API для получения расшифровок

Применение изменений

  1. Запустить миграцию:

    php artisan migrate
    
  2. Перезапустить queue worker:

    php artisan queue:restart
    
  3. Очистить кэш (опционально):

    php artisan cache:clear
    php artisan config:clear
    php artisan view:clear
    

Примечания

  • Справочник расценок теперь поддерживает два типа записей: tsn_number и pricing_code
  • Уникальность записей гарантируется комбинацией type + code
  • Импорт обновляет существующие записи и создаёт новые
  • Экспорт включает все записи справочника на отдельной вкладке
  • Все операции импорта/экспорта выполняются асинхронно через очереди