Fix controle recebidos import parsing

This commit is contained in:
Eduardo Lopes 2026-01-27 16:55:54 -03:00
parent 91bd6d8d0f
commit ae2145ac71
1 changed files with 43 additions and 18 deletions

View File

@ -1398,10 +1398,19 @@ namespace line_gestao_api.Controllers
{ {
await _db.ControleRecebidoLines.ExecuteDeleteAsync(); await _db.ControleRecebidoLines.ExecuteDeleteAsync();
var years = new[] { 2022, 2023, 2024, 2025 };
var importedYears = new HashSet<int>();
foreach (var info in GetControleRecebidosWorksheets(wb)) foreach (var info in GetControleRecebidosWorksheets(wb))
{
await ImportControleRecebidosSheet(info.Sheet, info.Year); await ImportControleRecebidosSheet(info.Sheet, info.Year);
importedYears.Add(info.Year);
}
foreach (var year in years) foreach (var year in years)
{ {
if (importedYears.Contains(year)) continue;
var ws = FindControleRecebidosWorksheet(wb, year); var ws = FindControleRecebidosWorksheet(wb, year);
if (ws == null) continue; if (ws == null) continue;
@ -1476,29 +1485,14 @@ namespace line_gestao_api.Controllers
ConteudoDaNf = string.IsNullOrWhiteSpace(conteudo) ? null : conteudo.Trim(), ConteudoDaNf = string.IsNullOrWhiteSpace(conteudo) ? null : conteudo.Trim(),
NumeroDaLinha = numeroLinha, NumeroDaLinha = numeroLinha,
ValorUnit = valorUnit, ValorUnit = valorUnit,
private sealed class ControleRecebidosWorksheetInfo ValorDaNf = valorDaNf,
{ DataDaNf = dataDaNf,
public ControleRecebidosWorksheetInfo(IXLWorksheet sheet, int year)
{
Sheet = sheet;
Year = year;
}
public IXLWorksheet Sheet { get; }
public int Year { get; }
}
private static IEnumerable<ControleRecebidosWorksheetInfo> GetControleRecebidosWorksheets(XLWorkbook wb)
yield return new ControleRecebidosWorksheetInfo(ws, year);
DataDoRecebimento = dataReceb, DataDoRecebimento = dataReceb,
Quantidade = qtd, Quantidade = qtd,
IsResumo = isResumo, IsResumo = isResumo,
CreatedAt = now, CreatedAt = now,
UpdatedAt = now UpdatedAt = now
var isControleRecebidos = name.Contains("CONTROLE") && name.Contains("RECEBIDOS"); };
var isRomaneio = name.Contains("ROMANEIO");
if (!isControleRecebidos && !isRomaneio)
buffer.Add(e); buffer.Add(e);
@ -1520,6 +1514,37 @@ namespace line_gestao_api.Controllers
} }
} }
private sealed class ControleRecebidosWorksheetInfo
{
public ControleRecebidosWorksheetInfo(IXLWorksheet sheet, int year)
{
Sheet = sheet;
Year = year;
}
public IXLWorksheet Sheet { get; }
public int Year { get; }
}
private static IEnumerable<ControleRecebidosWorksheetInfo> GetControleRecebidosWorksheets(XLWorkbook wb)
{
var years = new[] { 2022, 2023, 2024, 2025 };
foreach (var ws in wb.Worksheets)
{
var name = NormalizeHeader(ws.Name);
var isControleRecebidos = name.Contains("CONTROLE") && name.Contains("RECEBIDOS");
var isRomaneio = name.Contains("ROMANEIO");
if (!isControleRecebidos && !isRomaneio) continue;
var year = years.FirstOrDefault(y => name.Contains(y.ToString()));
if (year == 0) continue;
yield return new ControleRecebidosWorksheetInfo(ws, year);
}
}
private static IXLWorksheet? FindControleRecebidosWorksheet(XLWorkbook wb, int year) private static IXLWorksheet? FindControleRecebidosWorksheet(XLWorkbook wb, int year)
{ {
var normalizedName = NormalizeHeader($"CONTROLE DE RECEBIDOS {year}"); var normalizedName = NormalizeHeader($"CONTROLE DE RECEBIDOS {year}");