Multi-currency: 147 devises, daily rates, snapshot par transaction
Comment la plateforme gere la conversion, d’ou viennent les rates, et pourquoi les transactions historiques ne se re-traduisent pas silencieusement.
L’ITAD transfrontalier est normal. Un tenant néerlandais vend à un acheteur allemand, settlement en EUR. Le même tenant néerlandais achète auprès d’un vendeur UK, settlement en GBP. L’acheteur allemand peut être facturé en USD parce que sa maison mère est américaine. La plateforme supporte tout cela.
147 devises
Le currency catalog inclut les 147 devises fiat actives (ISO 4217). Chaque currency a un code, un symbole, un réglage de decimal places et un display format. Les tenants choisissent une base currency au setup ; les transactions peuvent utiliser n’importe quelle currency du catalog.
Exchange rates
Les rates journaliers se rafraîchissent via un cron (le job H/refresh-rates tourne chaque matin) depuis un rate provider. Les rates arrivent dans la table exchange_rates de la plateforme avec la date et la source. /admin/exchange-rates est la vue platform-admin : voir les rates actifs, override si un rate précis semble faux, voir l’historique.
Snapshot par transaction
Chaque transaction monétaire stocke à la fois amount-in-deal-currency et rate-at-the-time. Une vente de 10 000 € à un acheteur USD un jour où EUR/USD = 1.08 enregistre 10 000 € / 10 800 $ / rate 1.08. Six mois plus tard, quand le taux a bougé, la transaction montre encore les chiffres d’origine. La retraduction n’a lieu qu’au reporting, et seulement si l’utilisateur la demande.
Tenant currency setting
/settings/currency est la config tenant-level : base currency pour reporting, display preferences pour les montants en foreign-currency (toujours afficher l’équivalent base, afficher seulement au hover, etc.), tolérance des rate-variance alerts. Le D4 tenant currency-select rend cela par org plutôt que par plateforme.