feat: calculateur de frais de déplacement - backend et modèles Flutter

- Cloud Function travel.js : autocomplete Google Places + calcul itinéraires
  via Google Routes API avec péages Ulys /legs (precision=6) + /rate
- Modèles : VehicleModel, DepotModel, RouteResultModel + FuelPrices
- Services : VehicleService, TravelService (Firestore CRUD + API calls)
- Gestion des données : 3 nouveaux onglets (Dépôts, Véhicules, Prix carburants)
- Autocomplétion adresse dans le formulaire événement
- Dialog calcul frais : config + carte flutter_map OSM + sélection itinéraire
- Injection option FRAIS_KM dans l'événement à la sélection
- flutter_map 7.0.2 + latlong2 0.9.1 ajoutés
- npm: csv-parser + @mapbox/polyline installés dans functions
This commit is contained in:
ElPoyo
2026-06-04 14:28:22 +02:00
parent bc93f3fa9a
commit e14b333a67
22 changed files with 3940 additions and 24 deletions
@@ -256,6 +256,20 @@ class EventFormController extends ChangeNotifier {
notifyListeners();
}
/// Ajoute ou met à jour l'option FRAIS_KM avec le prix calculé.
/// L'option est au format attendu par Firestore : { id: "FRAIS_KM", price: <valeur> }
void addTravelCostOption(double price) {
// Retirer l'éventuelle option FRAIS_KM existante
_selectedOptions.removeWhere((opt) => opt['id'] == 'FRAIS_KM');
// Ajouter la nouvelle
_selectedOptions.add({
'id': 'FRAIS_KM',
'price': double.parse(price.toStringAsFixed(2)),
});
_onAnyFieldChanged();
notifyListeners();
}
void setAssignedEquipment(List<EventEquipment> equipment, List<String> containers) {
_assignedEquipment = equipment;
_assignedContainers = containers;