Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user