фикс создания фасовки

This commit is contained in:
2025-12-29 12:34:52 +03:00
parent 310a64e3ba
commit d6703e1a4b
8 changed files with 128 additions and 50 deletions

View File

@@ -106,6 +106,31 @@ func (s *Service) SyncAllData(userID uuid.UUID, force bool) error {
return nil
}
// SyncInvoicesOnly запускает синхронизацию только накладных для конкретного пользователя
func (s *Service) SyncInvoicesOnly(userID uuid.UUID) error {
logger.Log.Info("Запуск синхронизации накладных", zap.String("user_id", userID.String()))
// Получаем клиент и инфо о сервере
client, err := s.rmsFactory.GetClientForUser(userID)
if err != nil {
return err
}
server, err := s.accountRepo.GetActiveServer(userID)
if err != nil || server == nil {
return fmt.Errorf("active server not found for user %s", userID)
}
serverID := server.ID
// Синхронизация накладных
if err := s.syncInvoices(client, serverID, false); err != nil {
logger.Log.Error("Sync Invoices failed", zap.Error(err))
return err
}
logger.Log.Info("Синхронизация накладных завершена", zap.String("user_id", userID.String()))
return nil
}
func (s *Service) syncSuppliers(c rms.ClientI, serverID uuid.UUID) error {
list, err := c.FetchSuppliers()
if err != nil {

View File

@@ -9,16 +9,18 @@ import (
"rmser/internal/services/drafts"
invService "rmser/internal/services/invoices"
"rmser/internal/services/sync"
"rmser/pkg/logger"
)
type InvoiceHandler struct {
service *invService.Service
draftsService *drafts.Service
syncService *sync.Service
}
func NewInvoiceHandler(service *invService.Service) *InvoiceHandler {
return &InvoiceHandler{service: service}
func NewInvoiceHandler(service *invService.Service, syncService *sync.Service) *InvoiceHandler {
return &InvoiceHandler{service: service, syncService: syncService}
}
// SendInvoice godoc
@@ -85,3 +87,26 @@ func (h *InvoiceHandler) GetInvoice(c *gin.Context) {
c.JSON(http.StatusOK, dto)
}
// SyncInvoices godoc
// @Summary Запустить синхронизацию накладных
// @Description Запускает синхронизацию накладных для пользователя
// @Tags invoices
// @Produce json
// @Success 200 {object} map[string]string
// @Failure 500 {object} map[string]string
func (h *InvoiceHandler) SyncInvoices(c *gin.Context) {
userID := c.MustGet("userID").(uuid.UUID)
err := h.syncService.SyncInvoicesOnly(userID)
if err != nil {
logger.Log.Error("Ошибка синхронизации накладных", zap.Error(err))
c.JSON(http.StatusInternalServerError, gin.H{"error": "Ошибка синхронизации"})
return
}
c.JSON(http.StatusOK, gin.H{
"status": "ok",
"message": "Синхронизация запущена",
})
}