Browse Source
Bugfix/Use currency conversion for fees and values (#3672)
* Use currency conversion for fees and values
* Update changelog
pull/3682/head
Anatoly Popov
7 months ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with
102 additions and
84 deletions
-
CHANGELOG.md
-
apps/api/src/app/import/import.service.ts
-
apps/api/src/app/order/order.service.ts
|
|
@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. |
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
|
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
|
|
|
|
|
|
|
## Unreleased |
|
|
|
|
|
|
|
### Fixed |
|
|
|
|
|
|
|
- Fixed the currency conversion for fees and values in the dividend import by applying the correct rate based on the activity date |
|
|
|
- Fixed the currency conversion for fees and values in the activities service by applying the correct rate based on the activity date |
|
|
|
|
|
|
|
## 2.104.1 - 2024-08-17 |
|
|
|
|
|
|
|
### Fixed |
|
|
|
|
|
@ -82,7 +82,8 @@ export class ImportService { |
|
|
|
|
|
|
|
const Account = this.isUniqueAccount(accounts) ? accounts[0] : undefined; |
|
|
|
|
|
|
|
return Object.entries(dividends).map(([dateString, { marketPrice }]) => { |
|
|
|
return await Promise.all( |
|
|
|
Object.entries(dividends).map(async ([dateString, { marketPrice }]) => { |
|
|
|
const quantity = |
|
|
|
historicalData.find((historicalDataItem) => { |
|
|
|
return historicalDataItem.date === dateString; |
|
|
@ -129,13 +130,16 @@ export class ImportService { |
|
|
|
unitPrice: marketPrice, |
|
|
|
updatedAt: undefined, |
|
|
|
userId: Account?.userId, |
|
|
|
valueInBaseCurrency: this.exchangeRateDataService.toCurrency( |
|
|
|
valueInBaseCurrency: |
|
|
|
await this.exchangeRateDataService.toCurrencyAtDate( |
|
|
|
value, |
|
|
|
assetProfile.currency, |
|
|
|
userCurrency |
|
|
|
userCurrency, |
|
|
|
date |
|
|
|
) |
|
|
|
}; |
|
|
|
}); |
|
|
|
}) |
|
|
|
); |
|
|
|
} catch { |
|
|
|
return []; |
|
|
|
} |
|
|
@ -432,17 +436,20 @@ export class ImportService { |
|
|
|
...order, |
|
|
|
error, |
|
|
|
value, |
|
|
|
feeInBaseCurrency: this.exchangeRateDataService.toCurrency( |
|
|
|
feeInBaseCurrency: await this.exchangeRateDataService.toCurrencyAtDate( |
|
|
|
fee, |
|
|
|
assetProfile.currency, |
|
|
|
userCurrency |
|
|
|
userCurrency, |
|
|
|
date |
|
|
|
), |
|
|
|
// @ts-ignore
|
|
|
|
SymbolProfile: assetProfile, |
|
|
|
valueInBaseCurrency: this.exchangeRateDataService.toCurrency( |
|
|
|
valueInBaseCurrency: |
|
|
|
await this.exchangeRateDataService.toCurrencyAtDate( |
|
|
|
value, |
|
|
|
assetProfile.currency, |
|
|
|
userCurrency |
|
|
|
userCurrency, |
|
|
|
date |
|
|
|
) |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
@ -483,7 +483,8 @@ export class OrderService { |
|
|
|
assetProfileIdentifiers |
|
|
|
); |
|
|
|
|
|
|
|
const activities = orders.map((order) => { |
|
|
|
const activities = await Promise.all( |
|
|
|
orders.map(async (order) => { |
|
|
|
const assetProfile = assetProfiles.find(({ dataSource, symbol }) => { |
|
|
|
return ( |
|
|
|
dataSource === order.SymbolProfile.dataSource && |
|
|
@ -496,21 +497,24 @@ export class OrderService { |
|
|
|
return { |
|
|
|
...order, |
|
|
|
value, |
|
|
|
// TODO: Use exchange rate of date
|
|
|
|
feeInBaseCurrency: this.exchangeRateDataService.toCurrency( |
|
|
|
feeInBaseCurrency: |
|
|
|
await this.exchangeRateDataService.toCurrencyAtDate( |
|
|
|
order.fee, |
|
|
|
order.SymbolProfile.currency, |
|
|
|
userCurrency |
|
|
|
userCurrency, |
|
|
|
order.date |
|
|
|
), |
|
|
|
SymbolProfile: assetProfile, |
|
|
|
// TODO: Use exchange rate of date
|
|
|
|
valueInBaseCurrency: this.exchangeRateDataService.toCurrency( |
|
|
|
valueInBaseCurrency: |
|
|
|
await this.exchangeRateDataService.toCurrencyAtDate( |
|
|
|
value, |
|
|
|
order.SymbolProfile.currency, |
|
|
|
userCurrency |
|
|
|
userCurrency, |
|
|
|
order.date |
|
|
|
) |
|
|
|
}; |
|
|
|
}); |
|
|
|
}) |
|
|
|
); |
|
|
|
|
|
|
|
return { activities, count }; |
|
|
|
} |
|
|
|