Merge remote-tracking branch 'origin/master'
This commit is contained in:
115
svc/routes/order_bulk_close.go
Normal file
115
svc/routes/order_bulk_close.go
Normal file
@@ -0,0 +1,115 @@
|
||||
package routes
|
||||
|
||||
import (
|
||||
"bssapp-backend/auth"
|
||||
"bssapp-backend/db"
|
||||
"bssapp-backend/models"
|
||||
"bssapp-backend/queries"
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type bulkCloseOrdersRequest struct {
|
||||
OrderNumbers []string `json:"order_numbers"`
|
||||
}
|
||||
|
||||
func OrderCloseReadyListRoute(mssqlDB *sql.DB) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||
|
||||
raw := r.URL.Query().Get("search")
|
||||
search := strings.TrimSpace(raw)
|
||||
|
||||
rows, err := queries.GetOrderListCloseReady(
|
||||
r.Context(),
|
||||
mssqlDB,
|
||||
db.PgDB,
|
||||
search,
|
||||
)
|
||||
if err != nil {
|
||||
log.Printf("❌ close-ready list query error: %v", err)
|
||||
http.Error(w, "Veritabanı hatası", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
list := make([]models.OrderList, 0, 100)
|
||||
for rows.Next() {
|
||||
var o models.OrderList
|
||||
if err := rows.Scan(
|
||||
&o.OrderHeaderID,
|
||||
&o.OrderNumber,
|
||||
&o.OrderDate,
|
||||
&o.CurrAccCode,
|
||||
&o.CurrAccDescription,
|
||||
&o.MusteriTemsilcisi,
|
||||
&o.Piyasa,
|
||||
&o.CreditableConfirmedDate,
|
||||
&o.DocCurrencyCode,
|
||||
&o.TotalAmount,
|
||||
&o.TotalAmountUSD,
|
||||
&o.PackedAmount,
|
||||
&o.PackedUSD,
|
||||
&o.PackedRatePct,
|
||||
&o.IsCreditableConfirmed,
|
||||
&o.Description,
|
||||
&o.ExchangeRateUSD,
|
||||
); err != nil {
|
||||
log.Printf("⚠️ close-ready scan error: %v", err)
|
||||
continue
|
||||
}
|
||||
list = append(list, o)
|
||||
}
|
||||
|
||||
if err := rows.Err(); err != nil {
|
||||
log.Printf("⚠️ close-ready rows err: %v", err)
|
||||
}
|
||||
|
||||
_ = json.NewEncoder(w).Encode(list)
|
||||
})
|
||||
}
|
||||
|
||||
func OrderBulkCloseRoute(mssqlDB *sql.DB) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||
|
||||
var req bulkCloseOrdersRequest
|
||||
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
||||
http.Error(w, "Geçersiz JSON", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
if len(req.OrderNumbers) == 0 {
|
||||
http.Error(w, "order_numbers zorunludur", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
updatedBy := "SYSTEM"
|
||||
if claims, ok := auth.GetClaimsFromContext(r.Context()); ok && claims != nil {
|
||||
if u := strings.TrimSpace(claims.Username); u != "" {
|
||||
updatedBy = u
|
||||
}
|
||||
}
|
||||
|
||||
affected, err := queries.BulkCloseOrders(
|
||||
r.Context(),
|
||||
mssqlDB,
|
||||
db.PgDB,
|
||||
req.OrderNumbers,
|
||||
updatedBy,
|
||||
)
|
||||
if err != nil {
|
||||
log.Printf("❌ bulk close failed: %v", err)
|
||||
http.Error(w, "Toplu kapatma sırasında hata oluştu", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
_ = json.NewEncoder(w).Encode(map[string]any{
|
||||
"success": true,
|
||||
"affected": affected,
|
||||
})
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user