65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from app.models.beneficio import Beneficio
|
|
from app.models.falecido import Falecido
|
|
|
|
BENEFICIOS_MAP = [
|
|
{
|
|
"condicao": "tinha_fgts",
|
|
"tipo": "fgts",
|
|
"nome": "Saque FGTS",
|
|
"descricao": "Saldo do FGTS disponível para saque pelos dependentes habilitados.",
|
|
"valor_mult": 3.5,
|
|
},
|
|
{
|
|
"condicao": "tinha_carteira_assinada",
|
|
"tipo": "pis",
|
|
"nome": "Saque PIS/PASEP",
|
|
"descricao": "Saldo de cotas do PIS/PASEP para saque pelos herdeiros.",
|
|
"valor_mult": 0.8,
|
|
},
|
|
{
|
|
"condicao": None,
|
|
"tipo": "pensao_morte",
|
|
"nome": "Pensão por Morte (INSS)",
|
|
"descricao": "Benefício mensal pago pelo INSS aos dependentes do segurado falecido.",
|
|
"valor_mult": 12,
|
|
},
|
|
{
|
|
"condicao": "tinha_seguro_vida",
|
|
"tipo": "seguro_vida",
|
|
"nome": "Seguro de Vida",
|
|
"descricao": "Indenização do seguro de vida contratado pelo falecido.",
|
|
"valor_mult": 24,
|
|
},
|
|
{
|
|
"condicao": "tinha_carteira_assinada",
|
|
"tipo": "rescisao",
|
|
"nome": "Verbas Rescisórias",
|
|
"descricao": "Saldo de salário, férias proporcionais, 13º proporcional.",
|
|
"valor_mult": 2,
|
|
},
|
|
]
|
|
|
|
async def escanear_beneficios(db: AsyncSession, familia_id: int, falecido: Falecido) -> list[Beneficio]:
|
|
salario = falecido.salario_estimado or 2500.0
|
|
beneficios = []
|
|
for b in BENEFICIOS_MAP:
|
|
cond = b.get("condicao")
|
|
if cond:
|
|
val = getattr(falecido, cond, 0)
|
|
if not val:
|
|
continue
|
|
ben = Beneficio(
|
|
familia_id=familia_id,
|
|
falecido_id=falecido.id,
|
|
tipo=b["tipo"],
|
|
nome=b["nome"],
|
|
descricao=b["descricao"],
|
|
status="identificado",
|
|
valor_estimado=round(salario * b["valor_mult"], 2),
|
|
)
|
|
db.add(ben)
|
|
beneficios.append(ben)
|
|
await db.commit()
|
|
return beneficios
|