mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
фикс создания фасовки
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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": "Синхронизация запущена",
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user