From 68e9d5be7d5713c9aa6348cc44258917df5c71ba Mon Sep 17 00:00:00 2001 From: Denis Shatskiy Date: Fri, 8 Aug 2025 14:29:22 +0700 Subject: [PATCH] feat: Improve currency conversion logic in BillingManager to handle multiple currencies and enhance accuracy in RUB calculations --- frontend/src/BillingManager.jsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/src/BillingManager.jsx b/frontend/src/BillingManager.jsx index 8dade77..ed1f707 100644 --- a/frontend/src/BillingManager.jsx +++ b/frontend/src/BillingManager.jsx @@ -292,8 +292,18 @@ function BillingManager() { function convertToRUB(amount, currency) { if (!amount) return 0; - const rate = exchangeRates[currency] || 1; - return amount * rate * exchangeRates.RUB; + // Курсы получены с базой USD (1 USD = rates[CCY]) + const rubPerUsd = Number(exchangeRates.RUB) || 1; + if (!currency || currency === 'RUB') return amount; // уже в рублях + if (currency === 'USD') return amount * rubPerUsd; + const ccyPerUsd = Number(exchangeRates[currency]); + if (!ccyPerUsd || ccyPerUsd === 0) { + // нет курса — возвращаем как есть + return amount; + } + // amount в валюте CCY -> USD -> RUB + const amountUsd = amount / ccyPerUsd; + return amountUsd * rubPerUsd; } function formatCurrencyInRUB(amount, currency) {