import type { RetenueLigne, TauxOption } from './types';

/**
 * Rapproche le taux figé sur une ligne d'une option du catalogue de saisie.
 *
 * Une ligne ne porte plus d'identifiant de taux — seulement sa valeur et son
 * libellé, figés au moment de la saisie (c'est eux qui font foi). Pour
 * pré-sélectionner la bonne entrée dans une liste déroulante, on rapproche donc
 * sur le couple (libellé, valeur) : un taux saisi à la main porte le libellé
 * « Taux personnalisé », qui ne correspond à aucune option — la fonction renvoie
 * alors `null` et l'appelant retombe sur le mode « Autre ».
 *
 * La tolérance sur la valeur absorbe l'aller-retour `decimal(5,2)` → JSON
 * (« 10.00 » et 10 doivent se rapprocher).
 */
export function tauxCorrespondant(options: TauxOption[], ligne: RetenueLigne): TauxOption | null {
    return options.find((option) => option.libelle === ligne.taux_libelle && Math.abs(option.taux - ligne.taux) < 0.0001) ?? null;
}
