mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
пофиксил неправильный пересчет фасовок в накладной
This commit is contained in:
@@ -54,8 +54,8 @@ func NewService(
|
||||
}
|
||||
|
||||
// SyncAllData запускает полную синхронизацию для конкретного пользователя
|
||||
func (s *Service) SyncAllData(userID uuid.UUID) error {
|
||||
logger.Log.Info("Запуск полной синхронизации", zap.String("user_id", userID.String()))
|
||||
func (s *Service) SyncAllData(userID uuid.UUID, force bool) error {
|
||||
logger.Log.Info("Запуск синхронизации", zap.String("user_id", userID.String()), zap.Bool("force", force))
|
||||
|
||||
// 1. Получаем клиент и инфо о сервере
|
||||
client, err := s.rmsFactory.GetClientForUser(userID)
|
||||
@@ -92,7 +92,7 @@ func (s *Service) SyncAllData(userID uuid.UUID) error {
|
||||
}
|
||||
|
||||
// 6. Накладные (история)
|
||||
if err := s.syncInvoices(client, serverID); err != nil {
|
||||
if err := s.syncInvoices(client, serverID, force); err != nil {
|
||||
logger.Log.Error("Sync Invoices failed", zap.Error(err))
|
||||
}
|
||||
|
||||
@@ -172,19 +172,24 @@ func (s *Service) syncRecipes(c rms.ClientI, serverID uuid.UUID) error {
|
||||
return s.recipeRepo.SaveRecipes(recipesList)
|
||||
}
|
||||
|
||||
func (s *Service) syncInvoices(c rms.ClientI, serverID uuid.UUID) error {
|
||||
lastDate, err := s.invoiceRepo.GetLastInvoiceDate(serverID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *Service) syncInvoices(c rms.ClientI, serverID uuid.UUID, force bool) error {
|
||||
var from time.Time
|
||||
to := time.Now()
|
||||
|
||||
if lastDate != nil {
|
||||
from = *lastDate
|
||||
if force {
|
||||
// Принудительная перезагрузка за последние 40 дней
|
||||
from = time.Now().AddDate(0, 0, -40)
|
||||
logger.Log.Info("Force sync invoices", zap.String("from", from.Format("2006-01-02")))
|
||||
} else {
|
||||
from = time.Now().AddDate(0, 0, -45) // 45 дней по дефолту
|
||||
lastDate, err := s.invoiceRepo.GetLastInvoiceDate(serverID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if lastDate != nil {
|
||||
from = *lastDate
|
||||
} else {
|
||||
from = time.Now().AddDate(0, 0, -45)
|
||||
}
|
||||
}
|
||||
|
||||
invs, err := c.FetchInvoices(from, to)
|
||||
@@ -194,10 +199,10 @@ func (s *Service) syncInvoices(c rms.ClientI, serverID uuid.UUID) error {
|
||||
|
||||
for i := range invs {
|
||||
invs[i].RMSServerID = serverID
|
||||
// В Items пока не добавляли ServerID
|
||||
}
|
||||
|
||||
if len(invs) > 0 {
|
||||
// Репозиторий использует OnConflict(UpdateAll), поэтому существующие записи обновятся
|
||||
return s.invoiceRepo.SaveInvoices(invs)
|
||||
}
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user