fix: использовать DefaultCategories как fallback для сортировки в CSV-экспорте
categoryRepo всегда nil (передаётся null при инициализации), поэтому categoryOrder был пустым и сортировка по категориям не работала. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -127,11 +127,10 @@ func (s *ExportService) ToCSV(w io.Writer, data *ProjectExportData) error {
|
|||||||
return fmt.Errorf("failed to write header: %w", err)
|
return fmt.Errorf("failed to write header: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get category hierarchy for sorting
|
// Build category order: start from DefaultCategories, override with live DB values if available.
|
||||||
categoryOrder := make(map[string]int)
|
categoryOrder := defaultCategoryOrder()
|
||||||
if s.categoryRepo != nil {
|
if s.categoryRepo != nil {
|
||||||
categories, err := s.categoryRepo.GetAll()
|
if categories, err := s.categoryRepo.GetAll(); err == nil {
|
||||||
if err == nil {
|
|
||||||
for _, cat := range categories {
|
for _, cat := range categories {
|
||||||
categoryOrder[cat.Code] = cat.DisplayOrder
|
categoryOrder[cat.Code] = cat.DisplayOrder
|
||||||
}
|
}
|
||||||
@@ -516,6 +515,15 @@ func (s *ExportService) resolveCategories(pricelistID *uint, lotNames []string)
|
|||||||
return categories
|
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).
|
// sortItemsByCategory sorts items by category display order (items without category go to the end).
|
||||||
func sortItemsByCategory(items []ExportItem, categoryOrder map[string]int) {
|
func sortItemsByCategory(items []ExportItem, categoryOrder map[string]int) {
|
||||||
for i := 0; i < len(items)-1; i++ {
|
for i := 0; i < len(items)-1; i++ {
|
||||||
|
|||||||
Reference in New Issue
Block a user