Compare commits

...

2 Commits

Author SHA1 Message Date
MEHMETKECECI
a236686f7d Merge remote-tracking branch 'origin/master' 2026-02-15 05:31:32 +03:00
MEHMETKECECI
400fa38a49 Merge remote-tracking branch 'origin/master' 2026-02-14 21:07:17 +03:00
2 changed files with 83 additions and 3 deletions

View File

@@ -3,11 +3,10 @@ package db
import ( import (
"database/sql" "database/sql"
"fmt" "fmt"
"github.com/microsoft/go-mssqldb"
"log" "log"
"os" "os"
"strings" "strings"
_ "github.com/microsoft/go-mssqldb"
) )
var MssqlDB *sql.DB var MssqlDB *sql.DB
@@ -15,6 +14,7 @@ var MssqlDB *sql.DB
func ConnectMSSQL() { func ConnectMSSQL() {
connString := strings.TrimSpace(os.Getenv("MSSQL_CONN")) connString := strings.TrimSpace(os.Getenv("MSSQL_CONN"))
if connString == "" { if connString == "" {
//connString := "sqlserver://sa:Gil_0150@10.0.0.9:1433?databaseName=BAGGI_V3"
// Fallback keeps existing behavior if env is missing. // Fallback keeps existing behavior if env is missing.
connString = "sqlserver://sa:Gil_0150@100.127.221.13:1433?databaseName=BAGGI_V3" connString = "sqlserver://sa:Gil_0150@100.127.221.13:1433?databaseName=BAGGI_V3"
} }

View File

@@ -12,6 +12,7 @@ import (
"net/http" "net/http"
"runtime/debug" "runtime/debug"
"sort" "sort"
"strconv"
"strings" "strings"
"time" "time"
) )
@@ -289,25 +290,88 @@ func normalizeBedenLabelGo(v string) string {
return s return s
} }
func parseNumericSize(v string) (int, bool) {
s := strings.TrimSpace(strings.ToUpper(v))
if s == "" {
return 0, false
}
n, err := strconv.Atoi(s)
if err != nil {
return 0, false
}
return n, true
}
func detectBedenGroupGo(bedenList []string, ana, alt string) string { func detectBedenGroupGo(bedenList []string, ana, alt string) string {
ana = safeTrimUpper(ana) ana = safeTrimUpper(ana)
alt = safeTrimUpper(alt) alt = safeTrimUpper(alt)
// Ürün grubu adı doğrudan ayakkabı ise öncelikli.
if strings.Contains(ana, "AYAKKABI") || strings.Contains(alt, "AYAKKABI") {
return catAyk
}
var hasYasNumeric bool
var hasAykNumeric bool
var hasPanNumeric bool
for _, b := range bedenList { for _, b := range bedenList {
b = safeTrimUpper(b)
switch b { switch b {
case "XS", "S", "M", "L", "XL": case "XS", "S", "M", "L", "XL",
"2XL", "3XL", "4XL", "5XL", "6XL", "7XL":
return catGom 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
}
}
}
if hasAykNumeric {
return catAyk
} }
if strings.Contains(ana, "PANTOLON") { if strings.Contains(ana, "PANTOLON") {
return catPan return catPan
} }
if hasPanNumeric {
return catPan
}
if strings.Contains(alt, "ÇOCUK") || strings.Contains(alt, "GARSON") { if strings.Contains(alt, "ÇOCUK") || strings.Contains(alt, "GARSON") {
return catYas return catYas
} }
if hasYasNumeric {
return catYas
}
return catTak return catTak
} }
func formatSizeQtyForLog(m map[string]int) string {
if len(m) == 0 {
return "{}"
}
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys)
parts := make([]string, 0, len(keys))
for _, k := range keys {
parts = append(parts, fmt.Sprintf("%s:%d", k, m[k]))
}
return "{" + strings.Join(parts, ", ") + "}"
}
func defaultSizeListFor(cat string) []string { func defaultSizeListFor(cat string) []string {
switch cat { switch cat {
case catAyk: case catAyk:
@@ -1408,6 +1472,22 @@ func OrderPDFHandler(db *sql.DB) http.Handler {
// Normalize // Normalize
rows := normalizeOrderLinesForPdf(lines) rows := normalizeOrderLinesForPdf(lines)
log.Printf("📄 OrderPDF normalized rows orderID=%s rowCount=%d", orderID, len(rows)) log.Printf("📄 OrderPDF normalized rows orderID=%s rowCount=%d", orderID, len(rows))
for i, rr := range rows {
if i >= 30 {
break
}
log.Printf(
"📄 OrderPDF row[%d] model=%s color=%s groupMain=%q groupSub=%q category=%s totalQty=%d sizeQty=%s",
i,
rr.Model,
rr.Color,
rr.GroupMain,
rr.GroupSub,
rr.Category,
rr.TotalQty,
formatSizeQtyForLog(rr.SizeQty),
)
}
// PDF // PDF
pdf, err := newOrderPdf() pdf, err := newOrderPdf()