2025-03-11 10:10:28 -04:00
|
|
|
module Account::Convertible
|
|
|
|
extend ActiveSupport::Concern
|
|
|
|
|
|
|
|
def sync_required_exchange_rates
|
|
|
|
unless requires_exchange_rates?
|
|
|
|
Rails.logger.info("No exchange rate sync needed for account #{id}")
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
2025-03-17 11:54:53 -04:00
|
|
|
affected_row_count = ExchangeRate.sync_provider_rates(
|
2025-03-11 10:10:28 -04:00
|
|
|
from: currency,
|
|
|
|
to: target_currency,
|
|
|
|
start_date: start_date,
|
|
|
|
)
|
|
|
|
|
2025-03-17 11:54:53 -04:00
|
|
|
Rails.logger.info("Synced #{affected_row_count} exchange rates for account #{id}")
|
2025-03-11 10:10:28 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
def target_currency
|
|
|
|
family.currency
|
|
|
|
end
|
|
|
|
|
|
|
|
def requires_exchange_rates?
|
|
|
|
currency != target_currency
|
|
|
|
end
|
|
|
|
end
|