/**
 * TL-304 — aperçu du montant facturé au propriétaire.
 *
 * Même calcul que `ExpenseFraisService::montants()` côté serveur, en millimes
 * entiers : 87,35 × 1,25 doit donner 109,188 et non 109,187 (le flottant vaut
 * 109,18749999…). Le serveur reste seul juge ; ceci n'est qu'un aperçu.
 */
export interface MontantsFraisService {
    horsFrais: number;
    frais: number;
    total: number;
}

export function montantsFraisService(horsFrais: number, taux: number): MontantsFraisService | null {
    if (!Number.isFinite(horsFrais) || !Number.isFinite(taux) || horsFrais <= 0 || taux <= 0) {
        return null;
    }

    const horsFraisMillimes = Math.round(horsFrais * 1000);
    const tauxCentiemes = Math.round(taux * 100);
    // Math.round arrondit les ,5 négatifs vers le haut ; les montants sont ici toujours positifs.
    const fraisMillimes = Math.round((horsFraisMillimes * tauxCentiemes) / 10000);

    return {
        horsFrais: horsFraisMillimes / 1000,
        frais: fraisMillimes / 1000,
        total: (horsFraisMillimes + fraisMillimes) / 1000,
    };
}

/** Montant affiché comme dans le reste de l'écran : 2 décimales, séparateurs français. */
export function formatTnd(value: number): string {
    return value.toLocaleString('fr-TN', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
}
