Files
rmser/internal/transport/http/handlers/invoices.go
2025-11-29 08:40:24 +03:00

51 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
})
}