From 0bac9e929022032e1e66da1f903c3cedde0bc0f9 Mon Sep 17 00:00:00 2001 From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com> Date: Wed, 28 Jan 2026 14:14:58 -0300 Subject: [PATCH] Avoid UTC shift for controle recebidos dates --- Controllers/LinesController.cs | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/Controllers/LinesController.cs b/Controllers/LinesController.cs index 51216bb..161ea18 100644 --- a/Controllers/LinesController.cs +++ b/Controllers/LinesController.cs @@ -1534,8 +1534,8 @@ namespace line_gestao_api.Controllers { valorDaNf = lastValorDaNf; } - var dataDaNf = TryDate(ws, rowIndex, map, "DATA DA NF"); - var dataReceb = TryDate(ws, rowIndex, map, "DATA DO RECEBIMENTO"); + var dataDaNf = TryDateNoUtc(ws, rowIndex, map, "DATA DA NF"); + var dataReceb = TryDateNoUtc(ws, rowIndex, map, "DATA DO RECEBIMENTO"); var qtd = TryNullableInt(GetCellByHeaderAny(ws, rowIndex, map, "QTD.", "QTD", "QUANTIDADE")); var now = DateTime.UtcNow; @@ -1821,6 +1821,13 @@ namespace line_gestao_api.Controllers return TryDateCell(ws, row, c); } + private static DateTime? TryDateNoUtc(IXLWorksheet ws, int row, Dictionary map, string header) + { + var k = NormalizeHeader(header); + if (!map.TryGetValue(k, out var c)) return null; + return TryDateCellNoUtc(ws, row, c); + } + private static DateTime? TryDateCell(IXLWorksheet ws, int row, int col) { if (col <= 0) return null; @@ -1842,6 +1849,27 @@ namespace line_gestao_api.Controllers return null; } + private static DateTime? TryDateCellNoUtc(IXLWorksheet ws, int row, int col) + { + if (col <= 0) return null; + + var cell = ws.Cell(row, col); + + if (cell.DataType == XLDataType.DateTime) + return DateTime.SpecifyKind(cell.GetDateTime(), DateTimeKind.Unspecified); + + if (cell.TryGetValue(out var dt)) + return DateTime.SpecifyKind(dt, DateTimeKind.Unspecified); + + var s = cell.GetValue()?.Trim(); + if (string.IsNullOrWhiteSpace(s)) return null; + + if (DateTime.TryParse(s, new CultureInfo("pt-BR"), DateTimeStyles.None, out var d)) + return DateTime.SpecifyKind(d, DateTimeKind.Unspecified); + + return null; + } + private static decimal? TryDecimal(string? s) { if (string.IsNullOrWhiteSpace(s)) return null;