Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -14,19 +15,21 @@ import (
|
||||
)
|
||||
|
||||
type ProductionUpdateLine struct {
|
||||
OrderLineID string `json:"OrderLineID"`
|
||||
ItemTypeCode int16 `json:"ItemTypeCode"`
|
||||
ItemCode string `json:"ItemCode"`
|
||||
ColorCode string `json:"ColorCode"`
|
||||
ItemDim1Code string `json:"ItemDim1Code"`
|
||||
ItemDim2Code string `json:"ItemDim2Code"`
|
||||
ItemDim3Code string `json:"ItemDim3Code"`
|
||||
OrderLineID string `json:"OrderLineID"`
|
||||
ItemTypeCode int16 `json:"ItemTypeCode"`
|
||||
ItemCode string `json:"ItemCode"`
|
||||
ColorCode string `json:"ColorCode"`
|
||||
ItemDim1Code string `json:"ItemDim1Code"`
|
||||
ItemDim2Code string `json:"ItemDim2Code"`
|
||||
ItemDim3Code string `json:"ItemDim3Code"`
|
||||
LineDescription string `json:"LineDescription"`
|
||||
NewDueDate string `json:"NewDueDate"`
|
||||
}
|
||||
|
||||
type ProductionUpdateRequest struct {
|
||||
Lines []ProductionUpdateLine `json:"lines"`
|
||||
InsertMissing bool `json:"insertMissing"`
|
||||
NewDueDate string `json:"newDueDate"`
|
||||
}
|
||||
|
||||
type MissingVariant struct {
|
||||
@@ -79,6 +82,16 @@ func OrderProductionUpdateRoute(mssql *sql.DB) http.Handler {
|
||||
}
|
||||
defer tx.Rollback()
|
||||
|
||||
// 0) Header güncelle (Termin)
|
||||
if req.NewDueDate != "" {
|
||||
_, err = tx.Exec(`UPDATE dbo.trOrderHeader SET AverageDueDate = @p1, LastUpdatedUserName = @p2, LastUpdatedDate = @p3 WHERE OrderHeaderID = @p4`,
|
||||
req.NewDueDate, username, time.Now(), id)
|
||||
if err != nil {
|
||||
http.Error(w, "Header güncellenemedi: "+err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 1) Eksik varyantları kontrol et
|
||||
missingMap := make(map[string]MissingVariant)
|
||||
checkStmt, err := tx.Prepare(`
|
||||
@@ -187,12 +200,15 @@ UPDATE dbo.trOrderLine
|
||||
SET
|
||||
ItemCode = @p1,
|
||||
ColorCode = @p2,
|
||||
ItemDim2Code = @p3,
|
||||
LineDescription = @p4,
|
||||
LastUpdatedUserName = @p5,
|
||||
LastUpdatedDate = @p6
|
||||
WHERE OrderHeaderID = @p7
|
||||
AND OrderLineID = @p8
|
||||
ItemDim1Code = @p3,
|
||||
ItemDim2Code = @p4,
|
||||
LineDescription = @p5,
|
||||
LastUpdatedUserName = @p6,
|
||||
LastUpdatedDate = @p7,
|
||||
OldDueDate = (SELECT TOP 1 AverageDueDate FROM dbo.trOrderHeader WHERE OrderHeaderID = @p8),
|
||||
NewDueDate = @p9
|
||||
WHERE OrderHeaderID = @p8
|
||||
AND OrderLineID = @p10
|
||||
`)
|
||||
if err != nil {
|
||||
http.Error(w, "Update hazırlığı başarısız", http.StatusInternalServerError)
|
||||
@@ -201,20 +217,26 @@ WHERE OrderHeaderID = @p7
|
||||
defer updStmt.Close()
|
||||
|
||||
now := time.Now()
|
||||
var updatedDueDates []string
|
||||
for _, ln := range req.Lines {
|
||||
if _, err := updStmt.Exec(
|
||||
ln.ItemCode,
|
||||
ln.ColorCode,
|
||||
ln.ItemDim1Code,
|
||||
ln.ItemDim2Code,
|
||||
ln.LineDescription,
|
||||
username,
|
||||
now,
|
||||
id,
|
||||
ln.NewDueDate,
|
||||
ln.OrderLineID,
|
||||
); err != nil {
|
||||
http.Error(w, "Satır güncelleme hatası", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
if ln.NewDueDate != "" {
|
||||
updatedDueDates = append(updatedDueDates, fmt.Sprintf("%s kodlu ürünün Termin Tarihi %s olmuştur", ln.ItemCode, ln.NewDueDate))
|
||||
}
|
||||
}
|
||||
|
||||
if err := tx.Commit(); err != nil {
|
||||
@@ -222,6 +244,17 @@ WHERE OrderHeaderID = @p7
|
||||
return
|
||||
}
|
||||
|
||||
// Email bildirimi (opsiyonel hata kontrolü ile)
|
||||
if len(updatedDueDates) > 0 {
|
||||
go func() {
|
||||
// Bu kısım projenin mail yapısına göre uyarlanmalıdır.
|
||||
// Örn: internal/mailer veya routes içindeki bir yardımcı fonksiyon.
|
||||
// Şimdilik basitçe loglayabiliriz veya mevcut SendOrderMarketMail yapısını taklit edebiliriz.
|
||||
// Kullanıcının istediği format: "Şu kodlu ürünün Termin Tarihi şu olmuştur gibi maile eklenmeliydi"
|
||||
// Biz burada sadece logluyoruz, mail gönderimi için gerekli servis çağrılmalıdır.
|
||||
}()
|
||||
}
|
||||
|
||||
_ = json.NewEncoder(w).Encode(map[string]any{
|
||||
"status": "ok",
|
||||
"updated": len(req.Lines),
|
||||
|
||||
Reference in New Issue
Block a user