Merge remote-tracking branch 'origin/master'

This commit is contained in:
2026-02-14 20:21:33 +03:00
parent 9e18ac1398
commit 4be05573eb
28 changed files with 12 additions and 56 deletions

View File

@@ -1353,6 +1353,7 @@ func OrderPDFHandler(db *sql.DB) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
orderID := mux.Vars(r)["id"]
log.Printf("📄 OrderPDFHandler start orderID=%s", orderID)
defer func() {
if rec := recover(); rec != nil {
log.Printf("❌ PANIC OrderPDFHandler orderID=%s: %v", orderID, rec)
@@ -1362,10 +1363,12 @@ func OrderPDFHandler(db *sql.DB) http.Handler {
}()
if orderID == "" {
log.Printf("❌ OrderPDFHandler missing order id")
http.Error(w, "missing order id", http.StatusBadRequest)
return
}
if db == nil {
log.Printf("❌ OrderPDFHandler db is nil")
http.Error(w, "db not initialized", http.StatusInternalServerError)
return
}
@@ -1373,7 +1376,7 @@ func OrderPDFHandler(db *sql.DB) http.Handler {
// Header
header, err := getOrderHeaderFromDB(db, orderID)
if err != nil {
log.Println("header error:", err)
log.Printf("❌ OrderPDF header error orderID=%s: %v", orderID, err)
if errors.Is(err, sql.ErrNoRows) {
http.Error(w, "order not found", http.StatusNotFound)
return
@@ -1385,10 +1388,11 @@ func OrderPDFHandler(db *sql.DB) http.Handler {
// Lines
lines, err := getOrderLinesFromDB(db, orderID)
if err != nil {
log.Println("lines error:", err)
log.Printf("❌ OrderPDF lines error orderID=%s: %v", orderID, err)
http.Error(w, "lines not found: "+err.Error(), http.StatusInternalServerError)
return
}
log.Printf("📄 OrderPDF lines loaded orderID=%s lineCount=%d", orderID, len(lines))
// 🔹 Satırlardan KDV bilgisi yakala (ilk pozitif orana göre)
hasVat := false
var vatRate float64
@@ -1403,25 +1407,29 @@ func OrderPDFHandler(db *sql.DB) http.Handler {
// Normalize
rows := normalizeOrderLinesForPdf(lines)
log.Printf("📄 OrderPDF normalized rows orderID=%s rowCount=%d", orderID, len(rows))
// PDF
pdf, err := newOrderPdf()
if err != nil {
log.Println("pdf init error:", err)
log.Printf("❌ OrderPDF init error orderID=%s: %v", orderID, err)
http.Error(w, "pdf init error: "+err.Error(), http.StatusInternalServerError)
return
}
renderOrderGrid(pdf, header, rows, hasVat, vatRate)
if err := pdf.Error(); err != nil {
log.Printf("❌ OrderPDF render error orderID=%s: %v", orderID, err)
http.Error(w, "pdf render error: "+err.Error(), http.StatusInternalServerError)
return
}
var buf bytes.Buffer
if err := pdf.Output(&buf); err != nil {
log.Printf("❌ OrderPDF output error orderID=%s: %v", orderID, err)
http.Error(w, "pdf output error: "+err.Error(), http.StatusInternalServerError)
return
}
log.Printf("✅ OrderPDF success orderID=%s bytes=%d", orderID, buf.Len())
w.Header().Set("Content-Type", "application/pdf")
w.Header().Set(