klydekushy commited on
Commit
c7fecbd
·
verified ·
1 Parent(s): 9e6ea19

Update src/modules/Check_Up_Loans.py

Browse files
Files changed (1) hide show
  1. src/modules/Check_Up_Loans.py +39 -20
src/modules/Check_Up_Loans.py CHANGED
@@ -1,3 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import pandas as pd
3
  from datetime import datetime, date, timedelta
@@ -31,11 +43,7 @@ def refresh_data():
31
 
32
 
33
  # ============================================================================
34
- # FONCTION UTILITAIRE : Nettoyage valeurs monétaires
35
- # ============================================================================
36
-
37
- # ============================================================================
38
- # FONCTION UTILITAIRE : Nettoyage valeurs monétaires
39
  # ============================================================================
40
 
41
  def clean_currency_value(val):
@@ -43,28 +51,39 @@ def clean_currency_value(val):
43
  try:
44
  if isinstance(val, (int, float)):
45
  return float(val)
46
- # Nettoyage des strings: "100,000 XOF" → 100000.0
47
  cleaned = str(val).upper().replace("XOF", "").replace("FCFA", "").replace(" ", "")
48
 
49
- # CORRECTION : Gérer la virgule comme séparateur décimal
50
- # Si la virgule est suivie de 1-2 chiffres, c'est un séparateur décimal
51
- if ',' in cleaned and '.' not in cleaned:
52
- parts = cleaned.split(',')
53
- # Si c'est "5,3" → décimal
54
- if len(parts) == 2 and len(parts[1]) <= 2:
55
- cleaned = cleaned.replace(',', '.')
56
- # Si c'est "100,000" → milliers
57
- else:
58
- cleaned = cleaned.replace(',', '')
59
- else:
60
- # Sinon on enlève juste les virgules (milliers)
61
- cleaned = cleaned.replace(',', '')
62
 
63
  return float(cleaned) if cleaned else 0.0
64
  except (ValueError, AttributeError):
65
  return 0.0
66
 
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  # ============================================================================
69
  # STYLES CSS SPÉCIFIQUES AU MODULE CHECK_UP_LOANS
70
  # ============================================================================
@@ -462,7 +481,7 @@ def show_check_up_loans(client, sheet_name):
462
 
463
  # Récupération des valeurs actuelles (avec nettoyage)
464
  montant_capital_actuel = clean_currency_value(selected_loan['Montant_Capital'])
465
- taux_hebdo_actuel = clean_currency_value(selected_loan['Taux_Hebdo'])
466
  duree_semaines_actuel = clean_currency_value(selected_loan['Duree_Semaines'])
467
  montant_total_actuel = clean_currency_value(selected_loan['Montant_Total'])
468
  cout_credit_actuel = clean_currency_value(selected_loan['Cout_Credit'])
 
1
+
2
+
3
+
4
+
5
+
6
+
7
+ #taux_hebdo_actuel = clean_taux_value(selected_loan['Taux_Hebdo']) # ✅ CHANGÉ
8
+
9
+
10
+
11
+
12
+
13
  import streamlit as st
14
  import pandas as pd
15
  from datetime import datetime, date, timedelta
 
43
 
44
 
45
  # ============================================================================
46
+ # FONCTIONS UTILITAIRES : Nettoyage des valeurs
 
 
 
 
47
  # ============================================================================
48
 
49
  def clean_currency_value(val):
 
51
  try:
52
  if isinstance(val, (int, float)):
53
  return float(val)
54
+ # Nettoyage des strings: "100 000 XOF" → 100000.0
55
  cleaned = str(val).upper().replace("XOF", "").replace("FCFA", "").replace(" ", "")
56
 
57
+ # Ne touche PAS aux virgules pour les montants (on garde juste les chiffres)
58
+ cleaned = cleaned.replace(",", "").replace(".", "")
 
 
 
 
 
 
 
 
 
 
 
59
 
60
  return float(cleaned) if cleaned else 0.0
61
  except (ValueError, AttributeError):
62
  return 0.0
63
 
64
 
65
+ def clean_taux_value(val):
66
+ """
67
+ Convertit un taux correctement.
68
+ Gère : "5,3" → 5.3 | "5.3" → 5.3 | 53 → 5.3
69
+ """
70
+ try:
71
+ if isinstance(val, str):
72
+ # Si c'est une string avec virgule : "5,3" → "5.3"
73
+ val = val.replace('%', '').replace(' ', '').replace(',', '.')
74
+
75
+ taux = float(val)
76
+
77
+ # ✅ Si le taux semble anormalement élevé (ex: 53 au lieu de 5.3)
78
+ # On divise par 10
79
+ if taux > 20:
80
+ taux = taux / 10
81
+
82
+ return round(taux, 2) # Arrondi à 2 décimales
83
+ except (ValueError, AttributeError, TypeError):
84
+ return 0.0
85
+
86
+
87
  # ============================================================================
88
  # STYLES CSS SPÉCIFIQUES AU MODULE CHECK_UP_LOANS
89
  # ============================================================================
 
481
 
482
  # Récupération des valeurs actuelles (avec nettoyage)
483
  montant_capital_actuel = clean_currency_value(selected_loan['Montant_Capital'])
484
+ taux_hebdo_actuel = clean_taux_value(selected_loan['Taux_Hebdo']) # ✅ CHANGÉ ICI
485
  duree_semaines_actuel = clean_currency_value(selected_loan['Duree_Semaines'])
486
  montant_total_actuel = clean_currency_value(selected_loan['Montant_Total'])
487
  cout_credit_actuel = clean_currency_value(selected_loan['Cout_Credit'])