package handlers import ( "net/http" "github.com/gin-gonic/gin" "go.uber.org/zap" invService "rmser/internal/services/invoices" "rmser/pkg/logger" ) type InvoiceHandler struct { service *invService.Service } func NewInvoiceHandler(service *invService.Service) *InvoiceHandler { return &InvoiceHandler{service: service} } // SendInvoice godoc // @Summary Создать приходную накладную в iikoRMS // @Description Принимает JSON с данными накладной и отправляет их в iiko // @Tags invoices // @Accept json // @Produce json // @Param input body invService.CreateRequestDTO true "Invoice Data" // @Success 200 {object} map[string]string "created_number" // @Failure 400 {object} map[string]string // @Failure 500 {object} map[string]string func (h *InvoiceHandler) SendInvoice(c *gin.Context) { var req invService.CreateRequestDTO if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Неверный формат JSON: " + err.Error()}) return } docNum, err := h.service.SendInvoiceToRMS(req) if err != nil { logger.Log.Error("Ошибка отправки накладной", zap.Error(err)) // Возвращаем 502 Bad Gateway, т.к. ошибка скорее всего на стороне RMS c.JSON(http.StatusBadGateway, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{ "status": "ok", "created_number": docNum, }) }