using TrajetKmTracker.Api.Models.DTOs; namespace TrajetKmTracker.Api.Services; /// /// Logique métier des Montant_Regle (montants effectivement versés, saisis par l'utilisateur) /// et du Montant_Previsionnel (indication de versement à 80% du barème, purement informative). /// public interface IMontantRegleService { /// /// Enregistre ou met à jour (upsert) le Montant_Regle pour un couple (année, mois, véhicule). /// S'il existe déjà une ligne pour la même (Annee, Mois, VehiculeId), elle est mise à jour ; /// sinon une nouvelle ligne est insérée (Property 26, Exigences 14.1/14.2/14.3). /// Rejette un montant négatif via (Exigence 14.4). /// Task UpsertMontantRegleAsync( MontantRegleDto dto, CancellationToken cancellationToken = default); /// /// Retourne les Montant_Regle saisis pour une (année, véhicule), triés par mois croissant. /// Destiné au controller et au service de régularisation. /// Task> GetMontantsReglesAsync( int annee, int vehiculeId, CancellationToken cancellationToken = default); /// /// Calcule le Montant_Previsionnel indicatif pour un (année, mois, véhicule) : /// 80% du Bareme_Kilometrique plein appliqué au Total_Annuel_Partiel du véhicule /// (somme des distances de l'année pour ce véhicule jusqu'au mois indiqué inclus), /// arrondi à deux décimales (Property 23, Exigences 13.5/13.6). /// Cette valeur est purement informative et n'entre jamais dans la régularisation. /// Task GetMontantPrevisionnelAsync( int annee, int mois, int vehiculeId, CancellationToken cancellationToken = default); }