fix: использовать DefaultCategories как fallback для сортировки в CSV-экспорте

categoryRepo всегда nil (передаётся null при инициализации), поэтому
categoryOrder был пустым и сортировка по категориям не работала.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-24 19:05:09 +03:00
parent 6049334323
commit ff262822e1

View File

@@ -127,11 +127,10 @@ func (s *ExportService) ToCSV(w io.Writer, data *ProjectExportData) error {
return fmt.Errorf("failed to write header: %w", err)
}
// Get category hierarchy for sorting
categoryOrder := make(map[string]int)
// Build category order: start from DefaultCategories, override with live DB values if available.
categoryOrder := defaultCategoryOrder()
if s.categoryRepo != nil {
categories, err := s.categoryRepo.GetAll()
if err == nil {
if categories, err := s.categoryRepo.GetAll(); err == nil {
for _, cat := range categories {
categoryOrder[cat.Code] = cat.DisplayOrder
}
@@ -516,6 +515,15 @@ func (s *ExportService) resolveCategories(pricelistID *uint, lotNames []string)
return categories
}
// defaultCategoryOrder returns a category code → display_order map built from models.DefaultCategories.
func defaultCategoryOrder() map[string]int {
m := make(map[string]int, len(models.DefaultCategories))
for _, cat := range models.DefaultCategories {
m[cat.Code] = cat.DisplayOrder
}
return m
}
// sortItemsByCategory sorts items by category display order (items without category go to the end).
func sortItemsByCategory(items []ExportItem, categoryOrder map[string]int) {
for i := 0; i < len(items)-1; i++ {