# Guide de dépannage - Calcul du montant total

## 🎯 **Problème identifié**
Le montant total n'est pas calculé en fonction du nombre de jours entre la date de début et la date de fin, mais en fonction du nombre de participants.

## 🔍 **Diagnostic**

### **Étape 1 : Vérifier la base de données**
```bash
http://localhost/StayManager/update_event_bookings.php
```

### **Étape 2 : Tester le calcul côté serveur**
```bash
http://localhost/StayManager/test_calculation_simple.php
```

### **Étape 3 : Tester le JavaScript**
```bash
http://localhost/StayManager/test_javascript_calculation.html
```

### **Étape 4 : Vérifier les logs du navigateur**
1. Ouvrir les outils de développement (F12)
2. Aller dans l'onglet "Console"
3. Créer une nouvelle réservation d'événement
4. Vérifier les messages de log

## 🛠️ **Solutions**

### **Solution 1 : Vérifier que le script JavaScript est chargé**

Dans le formulaire de création, vérifiez que le script est bien inclus :

```html
<script src="assets/js/event_booking_calculator.js"></script>
```

### **Solution 2 : Vérifier les événements JavaScript**

Ouvrez la console du navigateur et vérifiez que vous voyez ces messages :
- "DOM chargé, initialisation du calculateur..."
- "Initialisation des événements..."
- "Calcul initial..."

### **Solution 3 : Tester manuellement le calcul**

Dans la console du navigateur, testez :

```javascript
// Créer une instance du calculateur
const calculator = new EventBookingCalculator();

// Tester le calcul
const days = calculator.calculateDaysClient('2024-01-15', '2024-01-17');
console.log('Nombre de jours:', days); // Devrait afficher 3

const total = calculator.calculateTotalClient(350000, '2024-01-15', '2024-01-17');
console.log('Montant total:', total); // Devrait afficher 1050000
```

### **Solution 4 : Vérifier la requête AJAX**

Dans la console du navigateur, vérifiez que la requête AJAX est bien envoyée :

```javascript
// Simuler une requête AJAX
fetch('event_bookings.php?action=calculate_total', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: new URLSearchParams({
        room_id: 1,
        start_date: '2024-01-15',
        end_date: '2024-01-17'
    })
})
.then(response => response.json())
.then(data => console.log(data));
```

## 🔧 **Corrections apportées**

### **1. Script JavaScript amélioré**
- Ajout de logs de débogage
- Calcul côté client pour validation
- Gestion d'erreurs améliorée

### **2. Formulaires mis à jour**
- Chargement synchrone du script
- Initialisation correcte du calculateur
- Validation des dates

### **3. Contrôleur vérifié**
- Méthode `calculateTotalAmount()` fonctionnelle
- Retour JSON correct
- Gestion des erreurs

## 📋 **Checklist de vérification**

- [ ] Le champ `event_end` existe dans la base de données
- [ ] Le script JavaScript est chargé (pas d'erreur 404)
- [ ] Les événements sont attachés aux champs
- [ ] La requête AJAX est envoyée
- [ ] Le serveur répond correctement
- [ ] Le montant total est mis à jour

## 🚨 **Problèmes courants**

### **Problème 1 : Script non chargé**
**Symptôme** : Erreur 404 dans la console
**Solution** : Vérifier le chemin vers `assets/js/event_booking_calculator.js`

### **Problème 2 : Événements non attachés**
**Symptôme** : Pas de logs dans la console
**Solution** : Vérifier que les IDs des champs correspondent

### **Problème 3 : Requête AJAX échoue**
**Symptôme** : Erreur réseau dans la console
**Solution** : Vérifier l'URL et les paramètres

### **Problème 4 : Réponse serveur incorrecte**
**Symptôme** : Données JSON malformées
**Solution** : Vérifier le contrôleur et les permissions

## 🎯 **Test final**

1. **Créer une nouvelle réservation** :
   - Sélectionner une salle
   - Choisir une date de début
   - Choisir une date de fin différente
   - Vérifier que le montant total se met à jour

2. **Vérifier le calcul** :
   - Prix de la salle × Nombre de jours = Montant total
   - Exemple : 350 000 FCFA × 3 jours = 1 050 000 FCFA

## 📞 **Support**

Si le problème persiste :

1. **Vérifier les logs** :
   - Console du navigateur
   - Logs PHP (error_log)
   - Logs de la base de données

2. **Tester étape par étape** :
   - Utiliser les scripts de test fournis
   - Vérifier chaque composant séparément

3. **Contacter le support** :
   - Fournir les logs d'erreur
   - Décrire les étapes reproduites
   - Indiquer la version du navigateur

---

**Dernière mise à jour** : 2024  
**Version** : 1.0








