feat: enhance ata management by adding dataProrrogacao field and updating related logic for effective date handling, improving data integrity and user experience in pedidos

This commit is contained in:
2025-12-17 10:39:33 -03:00
parent fbf00c824e
commit 9072619e26
8 changed files with 390 additions and 115 deletions

View File

@@ -45,12 +45,22 @@ export const list = query({
// Filtro por intervalo (range): retorna atas cuja vigência intersecta o período informado.
// Considera datas como strings "YYYY-MM-DD" (lexicograficamente comparáveis).
const ataInicio = ata.dataInicio ?? '0000-01-01';
const ataFim = ata.dataFim ?? '9999-12-31';
const ataFimEfetivo = (() => {
const a = ata.dataFim;
const b = (ata as { dataProrrogacao?: string }).dataProrrogacao;
if (!a && !b) return '9999-12-31';
if (!a) return b!;
if (!b) return a;
return a >= b ? a : b;
})();
const periodoOk =
(!periodoInicio && !periodoFim) ||
(periodoInicio && periodoFim && ataInicio <= periodoFim && ataFim >= periodoInicio) ||
(periodoInicio && !periodoFim && ataFim >= periodoInicio) ||
(periodoInicio &&
periodoFim &&
ataInicio <= periodoFim &&
ataFimEfetivo >= periodoInicio) ||
(periodoInicio && !periodoFim && ataFimEfetivo >= periodoInicio) ||
(!periodoInicio && periodoFim && ataInicio <= periodoFim);
return numeroOk && seiOk && periodoOk;
@@ -149,6 +159,7 @@ export const create = mutation({
numero: v.string(),
dataInicio: v.optional(v.string()),
dataFim: v.optional(v.string()),
dataProrrogacao: v.optional(v.string()),
empresaId: v.id('empresas'),
numeroSei: v.string(),
objetos: v.array(
@@ -174,6 +185,7 @@ export const create = mutation({
empresaId: args.empresaId,
dataInicio: args.dataInicio,
dataFim: args.dataFim,
dataProrrogacao: args.dataProrrogacao,
criadoPor: user._id,
criadoEm: Date.now(),
atualizadoEm: Date.now()
@@ -205,6 +217,7 @@ export const update = mutation({
empresaId: v.id('empresas'),
dataInicio: v.optional(v.string()),
dataFim: v.optional(v.string()),
dataProrrogacao: v.optional(v.string()),
objetos: v.array(
v.object({
objetoId: v.id('objetos'),
@@ -228,6 +241,7 @@ export const update = mutation({
empresaId: args.empresaId,
dataInicio: args.dataInicio,
dataFim: args.dataFim,
dataProrrogacao: args.dataProrrogacao,
atualizadoEm: Date.now()
});