# Fichiers modifiés

Ce fichier liste tous les fichiers qui ont été modifiés dans le cadre de l'implémentation de la fonctionnalité de pré-remplissage et de détection d'impact sur le tarif pour la page Projet RC.

## Fichiers modifiés

### 1. `/public/js/projet-form-rc.js`

**Modifications principales :**

#### Pré-remplissage depuis le Tarif
- Ajout de la fonction `prefillFromTarif()` pour pré-remplir les données du projet depuis le tarif (activités, marchandises, zones, activités complémentaires, type de cotisation, CA, RCE, Protection Juridique, garanties RCC)
- Modification de `populateFormData()` pour appeler `prefillFromTarif()` si un tarif existe
- Ajout du pré-remplissage automatique de "Inclure les autres RC" si des extensions RCE sont présentes

#### Détection d'impact sur le tarif
- Ajout des variables globales pour les modulateurs (modRCActRCC, modRCMar, modRCZone, modRCActCompl, modRCGarAdd)
- Ajout de la fonction `loadModulateurs()` pour charger les modulateurs depuis l'API
- Ajout de la fonction `saveOriginalTarifData()` pour sauvegarder l'état initial du tarif
- Ajout de la fonction `checkTarifImpact()` pour détecter si une modification impacte le tarif
- Ajout des fonctions de détection d'impact spécifiques :
  - `checkActivityImpact()` : détecte les modifications d'activités principales
  - `checkMarchandiseImpact()` : détecte les modifications de marchandises
  - `checkZoneImpact()` : détecte les modifications de zones géographiques (compare les coefficients maximums)
  - `checkActiviteComplImpact()` : détecte les modifications d'activités complémentaires
  - `checkGarantieRCCImpact()` : détecte les modifications de garanties RCC impactantes
- Ajout des fonctions de récupération des données actuelles :
  - `getCurrentActivityData()` : récupère les activités principales actuelles
  - `getCurrentMarchandiseData()` : récupère les marchandises actuelles
  - `getCurrentZoneData()` : récupère les zones géographiques actuelles (prend en compte les zones désactivées)
  - `getCurrentGarantieRCCData()` : récupère les garanties RCC actuelles
  - `getCurrentActiviteComplData()` : récupère les activités complémentaires actuelles

#### Modal d'avertissement
- Ajout de la fonction `showTarifImpactModal()` pour afficher le modal d'avertissement avec restauration intelligente des valeurs
- Le modal permet de restaurer la valeur originale sans recharger la page
- Ajout d'un flag `isRestoringValue` pour éviter les boucles infinies lors de la restauration

#### Écouteurs d'événements
- Ajout de la fonction `setupTarifImpactListeners()` pour configurer les écouteurs d'événements sur tous les champs impactant le tarif :
  - Sélecteur d'activités
  - Sélecteur de marchandises
  - Cases à cocher des zones géographiques
  - Sélecteur de garanties RCC
  - Boutons radio de type de cotisation
  - Cases à cocher d'activités complémentaires
  - Champs de saisie des capitaux d'activités (avec MutationObserver pour les champs dynamiques)
  - Champ CA (Chiffre d'affaires)
  - Switch Protection Juridique

#### Sauvegarde des données
- Modification de `handleSubmitForm()` et `saveProjetRC()` pour :
  - Mettre à jour le projetRC existant au lieu de toujours en créer un nouveau
  - Envoyer les grilles Ad Valorem comme arrays directement (sans JSON.stringify) car PocketBase les parse automatiquement
  - Sauvegarder correctement les zones même si elles sont désactivées
- Amélioration de `extractGrilleAdvalo()` pour :
  - Gérer les tables cachées en les rendant temporairement visibles
  - Extraire toutes les valeurs correctement, y compris les valeurs vides
  - Restaurer correctement les styles après extraction

#### Chargement des données
- Amélioration de `populateGrAdvalo()` pour :
  - Ajouter des logs de débogage
  - Vérifier que les données existent et sont valides avant de remplir le tableau
  - Gérer les erreurs de parsing
- Amélioration de la logique de chargement des grilles Ad Valorem pour :
  - Vérifier que les données existent avant de les charger
  - Gérer les cas où les données sont vides ou invalides
  - Afficher des messages d'avertissement dans la console

#### Zones géographiques
- Correction de la logique de chargement des zones pour prendre en compte les zones désactivées
- Correction de la logique de sauvegarde pour inclure les zones désactivées (zone1 et zone2 quand zone2 ou zone3 sont sélectionnées)
- Amélioration de `getCurrentZoneData()` pour retourner `true` pour zone1 et zone2 si elles sont désactivées

#### Protection Juridique et RCE
- Ajout du pré-remplissage de Protection Juridique depuis `tarif.checkPJ`
- Ajout du pré-remplissage des garanties RCC (contenant-confie, TPPC, ferroutage, etc.) depuis `rc`
- Ajout de la vérification automatique de "Inclure les autres RC" si des extensions RCE sont présentes
- Ajout de plusieurs vérifications avec setTimeout pour s'assurer que la case est cochée après tous les chargements

## Date de modification
Date: 2025-01-27

## Notes importantes

- Les grilles Ad Valorem sont maintenant envoyées comme arrays directement (sans JSON.stringify) car PocketBase les parse automatiquement
- Le modal d'avertissement se déclenche uniquement si une modification impacte réellement le tarif (par exemple, pour les zones, seulement si le coefficient maximum change)
- Les zones désactivées (zone1/zone2 quand zone2/zone3 sont sélectionnées) sont maintenant correctement sauvegardées et chargées
- La mise à jour du projetRC existant est maintenant gérée correctement au lieu de toujours créer un nouvel enregistrement
