Compare commits
2 Commits
4be05573eb
...
a236686f7d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a236686f7d | ||
|
|
400fa38a49 |
@@ -3,11 +3,10 @@ package db
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"github.com/microsoft/go-mssqldb"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
_ "github.com/microsoft/go-mssqldb"
|
||||
)
|
||||
|
||||
var MssqlDB *sql.DB
|
||||
@@ -15,6 +14,7 @@ var MssqlDB *sql.DB
|
||||
func ConnectMSSQL() {
|
||||
connString := strings.TrimSpace(os.Getenv("MSSQL_CONN"))
|
||||
if connString == "" {
|
||||
//connString := "sqlserver://sa:Gil_0150@10.0.0.9:1433?databaseName=BAGGI_V3"
|
||||
// Fallback keeps existing behavior if env is missing.
|
||||
connString = "sqlserver://sa:Gil_0150@100.127.221.13:1433?databaseName=BAGGI_V3"
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
"net/http"
|
||||
"runtime/debug"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
@@ -289,25 +290,88 @@ func normalizeBedenLabelGo(v string) string {
|
||||
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 {
|
||||
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
|
||||
}
|
||||
|
||||
var hasYasNumeric bool
|
||||
var hasAykNumeric bool
|
||||
var hasPanNumeric bool
|
||||
|
||||
for _, b := range bedenList {
|
||||
b = safeTrimUpper(b)
|
||||
|
||||
switch b {
|
||||
case "XS", "S", "M", "L", "XL":
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if hasAykNumeric {
|
||||
return catAyk
|
||||
}
|
||||
|
||||
if strings.Contains(ana, "PANTOLON") {
|
||||
return catPan
|
||||
}
|
||||
if hasPanNumeric {
|
||||
return catPan
|
||||
}
|
||||
if strings.Contains(alt, "ÇOCUK") || strings.Contains(alt, "GARSON") {
|
||||
return catYas
|
||||
}
|
||||
if hasYasNumeric {
|
||||
return catYas
|
||||
}
|
||||
|
||||
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 {
|
||||
switch cat {
|
||||
case catAyk:
|
||||
@@ -1408,6 +1472,22 @@ func OrderPDFHandler(db *sql.DB) http.Handler {
|
||||
// Normalize
|
||||
rows := normalizeOrderLinesForPdf(lines)
|
||||
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, err := newOrderPdf()
|
||||
|
||||
Reference in New Issue
Block a user