Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -107,16 +107,20 @@ def buscar_combinacoes(credito_desejado, entrada_desejada, parcela_desejada, adm
|
|
| 107 |
resultados.sort(key=lambda x: x[2])
|
| 108 |
return formatar_resultados(resultados)
|
| 109 |
|
|
|
|
|
|
|
|
|
|
| 110 |
def formatar_resultados(resultados):
|
| 111 |
-
"""Formata os resultados para exibição
|
| 112 |
resposta = ""
|
| 113 |
-
|
| 114 |
-
|
|
|
|
| 115 |
total_credito = sum(c['valor_credito'] for c in combinacao)
|
| 116 |
total_entrada = sum(c['valor_entrada'] for c in combinacao)
|
| 117 |
total_saldo = sum(c['saldo_devedor'] for c in combinacao)
|
| 118 |
total_parcelas = sum(c['valor_parcela'] for c in combinacao)
|
| 119 |
-
maior_prazo = max(int(c.get('qtd_parcelas', 0)) for c in combinacao)
|
| 120 |
|
| 121 |
valor_final = round(total_entrada + total_saldo, 2)
|
| 122 |
credito_real = round(total_credito - total_entrada, 2)
|
|
@@ -125,22 +129,23 @@ def formatar_resultados(resultados):
|
|
| 125 |
taxa_mensal = taxa_percentual / maior_prazo if maior_prazo > 0 else 0
|
| 126 |
|
| 127 |
resposta += f"""
|
| 128 |
-
---
|
| 129 |
🏢 Administradora: {adm}
|
| 130 |
🔢 Códigos: {', '.join(codigos)}
|
| 131 |
-
💰 Crédito Total:
|
| 132 |
-
💵 Entrada:
|
| 133 |
-
📉 Saldo Devedor:
|
| 134 |
-
💲 Parcela:
|
| 135 |
⏳ Prazo: {maior_prazo} meses
|
| 136 |
-
🔚 Valor Final:
|
| 137 |
-
💠 Crédito Líquido:
|
| 138 |
-
📊 Taxa Total: {taxa_percentual:.2f}% (
|
| 139 |
🗓️ Taxa Mensal: {taxa_mensal:.2f}%
|
| 140 |
🗓️ Taxa Anual: {taxa_mensal * 12:.2f}%
|
| 141 |
"""
|
| 142 |
return resposta
|
| 143 |
|
|
|
|
| 144 |
# --- INICIALIZAÇÃO PARA GRADIO ---
|
| 145 |
# Carrega a planilha UMA VEZ no início do aplicativo
|
| 146 |
# Se der erro, a função de busca tentará carregar novamente.
|
|
|
|
| 107 |
resultados.sort(key=lambda x: x[2])
|
| 108 |
return formatar_resultados(resultados)
|
| 109 |
|
| 110 |
+
def formatar_moeda(valor):
|
| 111 |
+
return f"R$ {valor:,.2f}".replace(",", "v").replace(".", ",").replace("v", ".")
|
| 112 |
+
|
| 113 |
def formatar_resultados(resultados):
|
| 114 |
+
"""Formata os resultados para exibição."""
|
| 115 |
resposta = ""
|
| 116 |
+
# Limita a 15 resultados para evitar saídas muito longas
|
| 117 |
+
for idx, (adm, combinacao, _) in enumerate(resultados[:15], 1):
|
| 118 |
+
codigos = [str(c.get('codigo', 'N/A')) for c in combinacao]
|
| 119 |
total_credito = sum(c['valor_credito'] for c in combinacao)
|
| 120 |
total_entrada = sum(c['valor_entrada'] for c in combinacao)
|
| 121 |
total_saldo = sum(c['saldo_devedor'] for c in combinacao)
|
| 122 |
total_parcelas = sum(c['valor_parcela'] for c in combinacao)
|
| 123 |
+
maior_prazo = max(int(c.get('qtd_parcelas', 0)) for c in combinacao)
|
| 124 |
|
| 125 |
valor_final = round(total_entrada + total_saldo, 2)
|
| 126 |
credito_real = round(total_credito - total_entrada, 2)
|
|
|
|
| 129 |
taxa_mensal = taxa_percentual / maior_prazo if maior_prazo > 0 else 0
|
| 130 |
|
| 131 |
resposta += f"""
|
| 132 |
+
--- COMBINAÇÃO {idx} ---
|
| 133 |
🏢 Administradora: {adm}
|
| 134 |
🔢 Códigos: {', '.join(codigos)}
|
| 135 |
+
💰 Crédito Total: {formatar_moeda(total_credito)}
|
| 136 |
+
💵 Entrada (+comissão): {formatar_moeda(total_entrada)}
|
| 137 |
+
📉 Saldo Devedor: {formatar_moeda(total_saldo)}
|
| 138 |
+
💲 Parcela: {formatar_moeda(total_parcelas)}
|
| 139 |
⏳ Prazo: {maior_prazo} meses
|
| 140 |
+
🔚 Valor Final: {formatar_moeda(valor_final)}
|
| 141 |
+
💠 Crédito Líquido: {formatar_moeda(credito_real)}
|
| 142 |
+
📊 Taxa Total: {taxa_percentual:.2f}% ({formatar_moeda(taxa_total)})
|
| 143 |
🗓️ Taxa Mensal: {taxa_mensal:.2f}%
|
| 144 |
🗓️ Taxa Anual: {taxa_mensal * 12:.2f}%
|
| 145 |
"""
|
| 146 |
return resposta
|
| 147 |
|
| 148 |
+
|
| 149 |
# --- INICIALIZAÇÃO PARA GRADIO ---
|
| 150 |
# Carrega a planilha UMA VEZ no início do aplicativo
|
| 151 |
# Se der erro, a função de busca tentará carregar novamente.
|