Fix consultoria tempo por períodos

This commit is contained in:
Frederico Castro
2025-12-13 18:25:40 -03:00
parent abdb0782b7
commit 57a78ce3e3
3 changed files with 15 additions and 6 deletions

View File

@@ -183,11 +183,12 @@ class ConsultorRepositoryImpl(ConsultorRepository):
return None
mesclados = self._mesclar_periodos(periodos)
anos_consecutivos = max((p.anos_completos(datetime.now()) for p in mesclados), default=0)
periodo_ativo = next((p for p in mesclados if p.ativo), None)
anos_consecutivos = periodo_ativo.anos_completos(datetime.now()) if periodo_ativo else 0
retornos = max(0, len(mesclados) - 1)
ativo = any(p.ativo for p in periodos)
situacao_final = situacoes[0] if situacoes else "N/A"
situacao_final = situacoes[-1] if situacoes else "N/A"
is_ativo = ativo or "atividade" in situacao_final.lower() or "ativo" in situacao_final.lower()
is_falecido = "falecido" in situacao_final.lower()
@@ -199,12 +200,17 @@ class ConsultorRepositoryImpl(ConsultorRepository):
codigo = "CONS_HIST"
primeiro_evento = min(p.inicio for p in periodos)
fim_final = None
if not ativo:
fins = [p.fim for p in mesclados if p.fim]
fim_final = max(fins) if fins else datetime.now()
areas = list(set(areas)) if areas else ["N/A"]
return Consultoria(
codigo=codigo,
situacao=situacao_final,
periodo=Periodo(inicio=primeiro_evento, fim=None if ativo else datetime.now()),
periodo=Periodo(inicio=primeiro_evento, fim=fim_final),
periodos=mesclados,
areas=areas,
anos_consecutivos=anos_consecutivos,
retornos=retornos,