mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
0202-финиш перед десктопом
пересчет поправил редактирование с перепроведением галка автопроведения работает рекомендации починил
This commit is contained in:
@@ -203,50 +203,98 @@ type CommitRequestDTO struct {
|
||||
SupplierID string `json:"supplier_id"`
|
||||
Comment string `json:"comment"`
|
||||
IncomingDocNum string `json:"incoming_document_number"`
|
||||
IsProcessed bool `json:"is_processed"`
|
||||
}
|
||||
|
||||
func (h *DraftsHandler) CommitDraft(c *gin.Context) {
|
||||
userID := c.MustGet("userID").(uuid.UUID)
|
||||
// Защита от паники
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
logger.Log.Error("CRITICAL PANIC in CommitDraft Handler",
|
||||
zap.Any("panic", r),
|
||||
zap.Stack("stack"),
|
||||
)
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("Internal Server Error: %v", r)})
|
||||
}
|
||||
}()
|
||||
|
||||
logger.Log.Info("--- HANDLER: Start CommitDraft ---", zap.String("path", c.Request.URL.Path))
|
||||
|
||||
userID, ok := c.Get("userID")
|
||||
if !ok {
|
||||
logger.Log.Error("HANDLER: UserID missing in context")
|
||||
c.JSON(http.StatusUnauthorized, gin.H{"error": "unauthorized"})
|
||||
return
|
||||
}
|
||||
userUUID := userID.(uuid.UUID)
|
||||
logger.Log.Info("HANDLER: UserID extracted", zap.String("user_id", userUUID.String()))
|
||||
|
||||
draftID, err := uuid.Parse(c.Param("id"))
|
||||
if err != nil {
|
||||
logger.Log.Warn("HANDLER: Invalid DraftID", zap.String("param", c.Param("id")), zap.Error(err))
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid draft id"})
|
||||
return
|
||||
}
|
||||
logger.Log.Info("HANDLER: DraftID parsed", zap.String("draft_id", draftID.String()))
|
||||
|
||||
var req CommitRequestDTO
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
logger.Log.Error("HANDLER: JSON Binding failed", zap.Error(err))
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
logger.Log.Info("HANDLER: Payload bound",
|
||||
zap.String("date_incoming", req.DateIncoming),
|
||||
zap.String("store_id", req.StoreID),
|
||||
zap.String("supplier_id", req.SupplierID),
|
||||
zap.String("incoming_doc_num", req.IncomingDocNum),
|
||||
zap.Bool("is_processed", req.IsProcessed),
|
||||
)
|
||||
|
||||
date, err := time.Parse("2006-01-02", req.DateIncoming)
|
||||
if err != nil {
|
||||
logger.Log.Error("HANDLER: Date parsing failed", zap.String("date", req.DateIncoming), zap.Error(err))
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid date format"})
|
||||
return
|
||||
}
|
||||
|
||||
storeID, err := uuid.Parse(req.StoreID)
|
||||
if err != nil {
|
||||
logger.Log.Error("HANDLER: StoreID parsing failed", zap.String("store_id", req.StoreID), zap.Error(err))
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid store id"})
|
||||
return
|
||||
}
|
||||
|
||||
supplierID, err := uuid.Parse(req.SupplierID)
|
||||
if err != nil {
|
||||
logger.Log.Error("HANDLER: SupplierID parsing failed", zap.String("supplier_id", req.SupplierID), zap.Error(err))
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid supplier id"})
|
||||
return
|
||||
}
|
||||
|
||||
logger.Log.Info("HANDLER: Calling UpdateDraftHeader...",
|
||||
zap.String("draft_id", draftID.String()),
|
||||
zap.String("store_id", storeID.String()),
|
||||
zap.String("supplier_id", supplierID.String()),
|
||||
zap.Time("date", date),
|
||||
)
|
||||
|
||||
if err := h.service.UpdateDraftHeader(draftID, &storeID, &supplierID, date, req.Comment, req.IncomingDocNum); err != nil {
|
||||
logger.Log.Error("HANDLER: UpdateDraftHeader failed", zap.Error(err))
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to update header: " + err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
docNum, err := h.service.CommitDraft(draftID, userID)
|
||||
logger.Log.Info("HANDLER: Calling CommitDraft service...", zap.String("draft_id", draftID.String()), zap.String("user_id", userUUID.String()))
|
||||
|
||||
docNum, err := h.service.CommitDraft(draftID, userUUID, req.IsProcessed)
|
||||
if err != nil {
|
||||
logger.Log.Error("Commit failed", zap.Error(err))
|
||||
logger.Log.Warn("HANDLER: CommitDraft service failed", zap.Error(err))
|
||||
c.JSON(http.StatusBadGateway, gin.H{"error": "RMS error: " + err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
logger.Log.Info("HANDLER: Success!", zap.String("doc_num", docNum))
|
||||
c.JSON(http.StatusOK, gin.H{"status": "completed", "document_number": docNum})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user