credit-direct/assets/js/README.md
2025-12-18 09:44:42 +01:00

117 lines
5.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# README cd_main.js
## 1. Fonctions principales
### Fonctions de calcul de crédit
- **calculate_pat, calculate_am, calculate_ph, calculate_fin_neuve, calculate_pao_m_3, calculate_pao_p_3, calculate_mobilhome, calculate_regroupement_de_credit, calculate_frais_notaire, calculate_but_immo, calculate_mono_rate_bt_10_30**
- Calculent les paramètres d'un crédit (durée min/max, taux, etc.) selon le type de prêt et les valeurs saisies (capital, durée).
- Chaque fonction correspond à un type de crédit spécifique.
### Fonctions d'orchestration et d'UI
- **onchange_loan_type**
- Fonction centrale appelée lors du changement de type de crédit (sélecteur, radio, sous-type).
- Met à jour les sliders, les valeurs par défaut, l'affichage des champs, et déclenche le recalcul des mensualités.
- **calculate_mensualite**
- Calcule la mensualité et met à jour l'affichage (montant, durée, taux, etc.) selon les valeurs courantes.
- Appelée à chaque modification pertinente (type, capital, durée).
- **change_capital_slider, change_month_slider**
- Initialisent et mettent à jour les sliders de capital et de durée, avec gestion des bornes, des steps, et de l'affichage dynamique.
- **change_duree**
- Met à jour la liste des durées disponibles selon le type de crédit et le capital.
- **update_capital_input**
- Met à jour les bornes et la valeur du champ capital lors d'un changement de type de crédit.
### Fonctions utilitaires
- **number_format**
- Formate les nombres pour l'affichage (séparateurs, décimales).
- **validate_months_input, delayed_capital_chnage, delayed_months_change**
- Gèrent la validation et l'arrondi des valeurs saisies dans les champs capital et durée.
### Gestionnaires d'événements
- De nombreux gestionnaires jQuery déclenchent les fonctions ci-dessus lors des interactions utilisateur (changement de type, capital, durée, clics sur les boutons, etc.).
## 2. Scénarios d'interaction et enchaînement des fonctions
### Changement de type de crédit
- L'utilisateur change le type de crédit (sélecteur ou radio).
- **onchange_loan_type** est appelée :
- Met à jour le type sélectionné.
- Met à jour les sliders (capital, durée) via **change_capital_slider** et **change_month_slider**.
- Met à jour l'affichage des champs spécifiques.
- Appelle **calculate_mensualite** pour recalculer la mensualité.
### Changement du capital
- L'utilisateur modifie le capital (slider ou input).
- **on_slider_value_change** est appelée (directement ou via un timeout).
- Appelle **calculate_mensualite** pour recalculer la mensualité.
- Peut aussi mettre à jour la durée maximale possible via **change_duree** ou **change_month_slider**.
### Changement de la durée
- L'utilisateur modifie la durée (slider, input, ou boutons + / -).
- **calculate_mensualite** est appelée pour recalculer la mensualité.
- **change_duree** ou **change_month_slider** peuvent être appelées pour ajuster les bornes et l'affichage.
### Changement de sous-type ou d'option spécifique
- Peut déclencher **onchange_loan_type** ou des fonctions de calcul spécifiques selon le contexte.
### Soumission du formulaire
- Validation via jQuery Validate.
- Envoi AJAX, affichage d'un message de confirmation ou d'erreur.
### Autres interactions
- De nombreux champs conditionnels (ex : profession, co-emprunteur, allocations) affichent ou masquent dynamiquement des sections du formulaire selon les choix de l'utilisateur.
---
## 3. Schéma des interactions principales
```mermaid
flowchart TD
A["Utilisateur interagit avec l'UI"]
A --> B{"Type d'action"}
B -->|Change le type de crédit| C[onchange_loan_type]
B -->|Change le capital| D[on_slider_value_change]
B -->|Change la durée| E[validate_months_input]
C --> F[change_capital_slider]
C --> G[change_month_slider]
C --> H[calculate_mensualite]
D --> H
E --> H
H --> I{"Type de crédit"}
I -->|pat| J[calculate_pat]
I -->|am| K[calculate_am]
I -->|ph| L[calculate_ph]
I -->|fin_neuve| M[calculate_fin_neuve]
I -->|fin_occ_m3a| N[calculate_pao_m_3]
I -->|fin_occ_p3a| O[calculate_pao_p_3]
I -->|mobil_carav| P[calculate_mobilhome]
I -->|regroup_cred| Q[calculate_regroupement_de_credit]
I -->|frais_notaire| R[calculate_frais_notaire]
I -->|but_immo| S[calculate_but_immo]
I -->|amr/cdp/cied| T[calculate_mono_rate_bt_10_30]
J --> U[Résultats de calcul]
K --> U
L --> U
M --> U
N --> U
O --> U
P --> U
Q --> U
R --> U
S --> U
T --> U
U --> V[Affichage des résultats]
V --> W[UI mise à jour]
```
---
**Remarques :**
- Le cœur de la logique métier repose sur l'enchaînement `onchange_loan_type``calculate_mensualite` → fonctions de calcul selon le type.
- Les sliders et les champs sont synchronisés à chaque changement pour garantir la cohérence des valeurs.
- Le code est fortement couplé à l'UI jQuery et à la structure HTML du simulateur.
**Questions restantes :**
- Souhaitez-vous un schéma visuel des interactions?
- Faut-il détailler chaque fonction de calcul ou ce niveau de synthèse suffit-il?
- Voulez-vous une section sur l'extension AJAX et la structure des réponses serveur?