Bugfix/fix indirect calculation in exchange rate service for specific date (#2026)
* Fix indirect calculation * Update changelog
This commit is contained in:
parent
24cfb26c5b
commit
1d0ba5fe4b
@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
- Improved the language localization for German (`de`)
|
- Improved the language localization for German (`de`)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed the exchange rate service for a specific date (indirect calculation via base currency) used in activities with a manual currency
|
||||||
|
|
||||||
## 1.274.0 - 2023-05-29
|
## 1.274.0 - 2023-05-29
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
@ -186,28 +186,42 @@ export class ExchangeRateDataService {
|
|||||||
factor = marketData?.marketPrice;
|
factor = marketData?.marketPrice;
|
||||||
} else {
|
} else {
|
||||||
// Calculate indirectly via base currency
|
// Calculate indirectly via base currency
|
||||||
try {
|
|
||||||
const [
|
|
||||||
{ marketPrice: marketPriceBaseCurrencyFromCurrency },
|
|
||||||
{ marketPrice: marketPriceBaseCurrencyToCurrency }
|
|
||||||
] = await Promise.all([
|
|
||||||
this.marketDataService.get({
|
|
||||||
dataSource,
|
|
||||||
date: aDate,
|
|
||||||
symbol: `${this.baseCurrency}${aFromCurrency}`
|
|
||||||
}),
|
|
||||||
this.marketDataService.get({
|
|
||||||
dataSource,
|
|
||||||
date: aDate,
|
|
||||||
symbol: `${this.baseCurrency}${aToCurrency}`
|
|
||||||
})
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Calculate the opposite direction
|
let marketPriceBaseCurrencyFromCurrency: number;
|
||||||
factor =
|
let marketPriceBaseCurrencyToCurrency: number;
|
||||||
(1 / marketPriceBaseCurrencyFromCurrency) *
|
|
||||||
marketPriceBaseCurrencyToCurrency;
|
try {
|
||||||
|
if (this.baseCurrency === aFromCurrency) {
|
||||||
|
marketPriceBaseCurrencyFromCurrency = 1;
|
||||||
|
} else {
|
||||||
|
marketPriceBaseCurrencyFromCurrency = (
|
||||||
|
await this.marketDataService.get({
|
||||||
|
dataSource,
|
||||||
|
date: aDate,
|
||||||
|
symbol: `${this.baseCurrency}${aFromCurrency}`
|
||||||
|
})
|
||||||
|
)?.marketPrice;
|
||||||
|
}
|
||||||
} catch {}
|
} catch {}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (this.baseCurrency === aToCurrency) {
|
||||||
|
marketPriceBaseCurrencyToCurrency = 1;
|
||||||
|
} else {
|
||||||
|
marketPriceBaseCurrencyToCurrency = (
|
||||||
|
await this.marketDataService.get({
|
||||||
|
dataSource,
|
||||||
|
date: aDate,
|
||||||
|
symbol: `${this.baseCurrency}${aToCurrency}`
|
||||||
|
})
|
||||||
|
)?.marketPrice;
|
||||||
|
}
|
||||||
|
} catch {}
|
||||||
|
|
||||||
|
// Calculate the opposite direction
|
||||||
|
factor =
|
||||||
|
(1 / marketPriceBaseCurrencyFromCurrency) *
|
||||||
|
marketPriceBaseCurrencyToCurrency;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user