From 47848fc14de7b57369e136fb93c38100e133e6c1 Mon Sep 17 00:00:00 2001 From: M_Kececi Date: Sat, 21 Feb 2026 22:54:47 +0300 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- svc/routes/order_pdf.go | 102 +++++++++++++----- ...g.js.temporary.compiled.1771702670450.mjs} | 0 2 files changed, 73 insertions(+), 29 deletions(-) rename ui/{quasar.config.js.temporary.compiled.1771701092883.mjs => quasar.config.js.temporary.compiled.1771702670450.mjs} (100%) diff --git a/svc/routes/order_pdf.go b/svc/routes/order_pdf.go index 75f40ab..24f6269 100644 --- a/svc/routes/order_pdf.go +++ b/svc/routes/order_pdf.go @@ -32,6 +32,7 @@ var ( // Beden kategorileri (frontend birebir) const ( catAyk = "ayk" + catAykGar = "ayk_garson" catYas = "yas" catPan = "pan" catGom = "gom" @@ -39,14 +40,15 @@ const ( catAksbir = "aksbir" ) -var categoryOrder = []string{catAyk, catYas, catPan, catGom, catTak, catAksbir} +var categoryOrder = []string{catTak, catAyk, catAykGar, catYas, catPan, catGom, catAksbir} var categoryTitle = map[string]string{ + catTak: " TAKIM ELBİSE", catAyk: " AYAKKABI", + catAykGar: " AYAKKABI GARSON", catYas: " YAŞ", catPan: " PANTOLON", catGom: " GÖMLEK", - catTak: " TAKIM ELBİSE", catAksbir: " AKSESUAR", } @@ -307,53 +309,93 @@ func detectBedenGroupGo(bedenList []string, ana, alt string) string { ana = safeTrimUpper(ana) alt = safeTrimUpper(alt) - // Ürün grubu adı doğrudan ayakkabı ise öncelikli. - if strings.Contains(ana, "AYAKKABI") || strings.Contains(alt, "AYAKKABI") { - return catAyk + hasGarson := strings.Contains(ana, "GARSON") || strings.Contains(alt, "GARSON") || + strings.Contains(ana, "YETISKIN/GARSON") || strings.Contains(alt, "YETISKIN/GARSON") || + strings.Contains(ana, "YETİSKIN/GARSON") || strings.Contains(alt, "YETİSKIN/GARSON") || + strings.Contains(ana, "YETİŞKIN/GARSON") || strings.Contains(alt, "YETİŞKIN/GARSON") || + strings.Contains(ana, "YETİŞKİN/GARSON") || strings.Contains(alt, "YETİŞKİN/GARSON") + + hasAyakkabi := strings.Contains(ana, "AYAKKABI") || strings.Contains(alt, "AYAKKABI") + + // ✅ Garson + ayakkabı özel grubu + if hasGarson && hasAyakkabi { + return catAykGar + } + // ✅ Garson → yaş + if hasGarson { + return catYas } - var hasYasNumeric bool - var hasAykNumeric bool - var hasPanNumeric bool - + // ✅ Harfli beden → gömlek for _, b := range bedenList { b = safeTrimUpper(b) - switch b { case "XS", "S", "M", "L", "XL", "2XL", "3XL", "4XL", "5XL", "6XL", "7XL": return catGom } + } - if n, ok := parseNumericSize(b); ok { - if n >= 2 && n <= 14 { - hasYasNumeric = true - } - if n >= 39 && n <= 45 { - hasAykNumeric = true - } - if n >= 38 && n <= 68 { - hasPanNumeric = true + // ✅ Aksesuar tespiti (aksbir) + aksesuarGruplari := []string{ + "AKSESUAR", "KRAVAT", "PAPYON", "KEMER", "CORAP", "ÇORAP", + "FULAR", "MENDIL", "MENDİL", "KASKOL", "ASKI", + "YAKA", "KOL DUGMESI", "KOL DÜĞMESİ", + } + giyimGruplari := []string{"GÖMLEK", "CEKET", "PANTOLON", "MONT", "YELEK", "TAKIM", "TSHIRT", "TİŞÖRT"} + isAksesuar := false + for _, g := range aksesuarGruplari { + if strings.Contains(ana, g) || strings.Contains(alt, g) { + isAksesuar = true + break + } + } + if isAksesuar { + for _, g := range giyimGruplari { + if strings.Contains(ana, g) { + isAksesuar = false + break } } } - - if hasAykNumeric { - return catAyk + if isAksesuar { + return catAksbir } - if strings.Contains(ana, "PANTOLON") { + // ✅ Pantolon özel (yetişkin) + if strings.Contains(ana, "PANTOLON") && (strings.Contains(alt, "YETISKIN") || strings.Contains(alt, "YETİŞKİN") || strings.Contains(alt, "YETİSKIN")) { return catPan } - if hasPanNumeric { - return catPan + + // ✅ Tam numeric ve 35–46 arası → ayakkabı + allNumeric := true + nums := make([]int, 0, len(bedenList)) + for _, b := range bedenList { + n, ok := parseNumericSize(b) + if !ok { + allNumeric = false + break + } + nums = append(nums, n) } + if allNumeric && len(nums) > 0 { + sort.Ints(nums) + okSeq := true + for i := 1; i < len(nums); i++ { + if nums[i]-nums[i-1] != 1 { + okSeq = false + break + } + } + if okSeq && nums[0] >= 35 && nums[len(nums)-1] <= 46 { + return catAyk + } + } + + // ✅ Garson/çocuk alt grubu → yaş if strings.Contains(alt, "ÇOCUK") || strings.Contains(alt, "GARSON") { return catYas } - if hasYasNumeric { - return catYas - } return catTak } @@ -375,6 +417,8 @@ func formatSizeQtyForLog(m map[string]int) string { } func defaultSizeListFor(cat string) []string { switch cat { + case catAykGar: + return []string{"22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "STD"} case catAyk: return []string{"39", "40", "41", "42", "43", "44", "45"} case catYas: @@ -386,7 +430,7 @@ func defaultSizeListFor(cat string) []string { case catTak: return []string{"44", "46", "48", "50", "52", "54", "56", "58", "60", "62", "64", "66", "68", "70", "72", "74"} case catAksbir: - return []string{"", "44", "STD", "110", "115", "120", "125", "130", "135"} + return []string{" ", "44", "STD", "110", "115", "120", "125", "130", "135"} } return []string{} } diff --git a/ui/quasar.config.js.temporary.compiled.1771701092883.mjs b/ui/quasar.config.js.temporary.compiled.1771702670450.mjs similarity index 100% rename from ui/quasar.config.js.temporary.compiled.1771701092883.mjs rename to ui/quasar.config.js.temporary.compiled.1771702670450.mjs